Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
1374 dpurdie 1
--------------------------------------------------------
4040 dpurdie 2
--  File created - Friday-September-20-2013   
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
 
42
   CREATE SEQUENCE  "SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 33229 CACHE 20 ORDER  NOCYCLE ;
43
/
44
--------------------------------------------------------
45
--  DDL for Sequence SEQ_BMCON_ID
46
--------------------------------------------------------
47
 
48
   CREATE SEQUENCE  "SEQ_BMCON_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 101 CACHE 20 NOORDER  NOCYCLE ;
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
 
60
   CREATE SEQUENCE  "SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 77441 CACHE 20 ORDER  NOCYCLE ;
61
/
62
--------------------------------------------------------
63
--  DDL for Sequence SEQ_DAEMON_INSTRUCTION_ID
64
--------------------------------------------------------
65
 
66
   CREATE SEQUENCE  "SEQ_DAEMON_INSTRUCTION_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 131182 CACHE 20 ORDER  NOCYCLE ;
67
/
68
--------------------------------------------------------
69
--  DDL for Sequence SEQ_GBE_ID
70
--------------------------------------------------------
71
 
72
   CREATE SEQUENCE  "SEQ_GBE_ID"  MINVALUE 40 MAXVALUE 9999999999999999999999990 INCREMENT BY 10 START WITH 1240 CACHE 20 ORDER  NOCYCLE ;
73
/
74
--------------------------------------------------------
75
--  DDL for Sequence SEQ_GROUP_EMAIL_ID
76
--------------------------------------------------------
77
 
78
   CREATE SEQUENCE  "SEQ_GROUP_EMAIL_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 1146 CACHE 20 NOORDER  NOCYCLE ;
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
 
90
   CREATE SEQUENCE  "SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 56045 CACHE 20 ORDER  NOCYCLE ;
91
/
92
--------------------------------------------------------
93
--  DDL for Sequence SEQ_PROJ_ID
94
--------------------------------------------------------
95
 
96
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 721 CACHE 20 ORDER  NOCYCLE ;
97
/
98
--------------------------------------------------------
99
--  DDL for Sequence SEQ_PV_ID
100
--------------------------------------------------------
101
 
102
   CREATE SEQUENCE  "SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 925246 CACHE 20 ORDER  NOCYCLE ;
103
/
104
--------------------------------------------------------
105
--  DDL for Sequence SEQ_RCON_ID
106
--------------------------------------------------------
107
 
108
   CREATE SEQUENCE  "SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 22043 CACHE 20 ORDER  NOCYCLE ;
109
/
110
--------------------------------------------------------
111
--  DDL for Sequence SEQ_RTAG_ID
112
--------------------------------------------------------
113
 
114
   CREATE SEQUENCE  "SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 27443 CACHE 20 ORDER  NOCYCLE ;
115
/
116
--------------------------------------------------------
117
--  DDL for Sequence SEQ_SCHEDULED_ID
118
--------------------------------------------------------
119
 
120
   CREATE SEQUENCE  "SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 24501 CACHE 20 ORDER  NOCYCLE ;
121
/
122
--------------------------------------------------------
123
--  DDL for Sequence SEQ_SESSION_NUM
124
--------------------------------------------------------
125
 
126
   CREATE SEQUENCE  "SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 959982 CACHE 20 ORDER  NOCYCLE ;
127
/
128
--------------------------------------------------------
129
--  DDL for Sequence SEQ_UNIT_TESTS
130
--------------------------------------------------------
131
 
132
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 328843 CACHE 20 ORDER  NOCYCLE ;
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
 
150
   CREATE SEQUENCE  "SEQ_VIEW_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5141 CACHE 20 ORDER  NOCYCLE ;
151
/
152
--------------------------------------------------------
153
--  DDL for Sequence SEQ_VTREE_ID
154
--------------------------------------------------------
155
 
156
   CREATE SEQUENCE  "SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 24262 CACHE 20 ORDER  NOCYCLE ;
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), 
945
	"PRODUCT_STATE_USED" CHAR(1)
946
   ) ;
947
/
948
--------------------------------------------------------
949
--  DDL for Table REPEAT_SCHEDULE
950
--------------------------------------------------------
951
 
952
  CREATE TABLE "REPEAT_SCHEDULE" 
953
   (	"RPT_ID" NUMBER, 
954
	"REPEAT" CHAR(1)
955
   ) ;
956
/
957
--------------------------------------------------------
958
--  DDL for Table RIPPLE_FIELD_STATES
959
--------------------------------------------------------
960
 
961
  CREATE TABLE "RIPPLE_FIELD_STATES" 
962
   (	"STATE_ID" NUMBER, 
963
	"STATE_ACRONYM" CHAR(1), 
964
	"STATE_NAME" VARCHAR2(50)
965
   ) ;
966
/
967
--------------------------------------------------------
968
--  DDL for Table RM_PACKAGE_ISSUES
969
--------------------------------------------------------
970
 
971
  CREATE TABLE "RM_PACKAGE_ISSUES" 
972
   (	"PKG_ID" NUMBER, 
973
	"PKG_NAME" VARCHAR2(50), 
974
	"PV_ID" NUMBER, 
975
	"PKG_VERSION" VARCHAR2(50), 
976
	"DPV_ID" NUMBER, 
977
	"DPKG_NAME" VARCHAR2(50), 
978
	"DPKG_VERSION" VARCHAR2(50), 
979
	"ISS_DB" NUMBER, 
980
	"ISS_ID" NUMBER
981
   ) ;
982
/
983
--------------------------------------------------------
984
--  DDL for Table RM_PKG_ISSUES
985
--------------------------------------------------------
986
 
987
  CREATE GLOBAL TEMPORARY TABLE "RM_PKG_ISSUES" 
988
   (	"PKG_ID" NUMBER, 
989
	"PKG_NAME" VARCHAR2(50), 
990
	"PV_ID" NUMBER, 
991
	"PKG_VERSION" VARCHAR2(50), 
992
	"DPV_ID" NUMBER, 
993
	"DPKG_NAME" VARCHAR2(50), 
994
	"DPKG_VERSION" VARCHAR2(50), 
995
	"ISS_DB" NUMBER, 
996
	"ISS_ID" NUMBER
997
   ) ON COMMIT PRESERVE ROWS ;
998
/
999
--------------------------------------------------------
1000
--  DDL for Table RUNTIME_DEPENDENCIES
1001
--------------------------------------------------------
1002
 
1003
  CREATE TABLE "RUNTIME_DEPENDENCIES" 
1004
   (	"PV_ID" NUMBER, 
1005
	"RTD_ID" NUMBER, 
1006
	"RTD_COMMENTS" VARCHAR2(2000), 
1007
	"RTD_URL" VARCHAR2(2000), 
1008
	"MOD_DATE" DATE, 
1009
	"MOD_USER" NUMBER
1010
   ) ;
1011
/
1012
--------------------------------------------------------
1013
--  DDL for Table RUN_LEVEL
1014
--------------------------------------------------------
1015
 
1016
  CREATE TABLE "RUN_LEVEL" 
1017
   (	"RCON_ID" NUMBER, 
1018
	"CURRENT_BUILD_FILES" CLOB, 
1019
	"CURRENT_RUN_LEVEL" NUMBER, 
1020
	"PAUSE" NUMBER, 
1021
	"CURRENT_PKG_ID_BEING_BUILT" NUMBER, 
1022
	"KEEP_ALIVE" DATE
1023
   ) ;
1024
/
1025
--------------------------------------------------------
1026
--  DDL for Table RUN_LEVEL_SCHEDULE
1027
--------------------------------------------------------
1028
 
1029
  CREATE TABLE "RUN_LEVEL_SCHEDULE" 
1030
   (	"SCHEDULED_ID" NUMBER, 
1031
	"SCHEDULED_PAUSE" DATE, 
1032
	"SCHEDULED_RESUME" DATE, 
1033
	"REPEAT" CHAR(1), 
1034
	"INDEFINITE_PAUSE" CHAR(1)
1035
   ) ;
1036
/
1037
--------------------------------------------------------
1038
--  DDL for Table TEMP_ENV_STATES
1039
--------------------------------------------------------
1040
 
1041
  CREATE TABLE "TEMP_ENV_STATES" 
1042
   (	"SESSION_NUM" NUMBER, 
1043
	"LEVEL_NUM" NUMBER, 
1044
	"PV_ID" NUMBER, 
1045
	"PKG_ID" NUMBER, 
1046
	"V_EXT" VARCHAR2(50), 
1047
	"TES_STATE" NUMBER
1048
   ) ;
1049
/
1050
--------------------------------------------------------
1051
--  DDL for Table TEMP_SASH
1052
--------------------------------------------------------
1053
 
1054
  CREATE TABLE "TEMP_SASH" 
1055
   (	"RTAG_ID" NUMBER, 
1056
	"PROJ_ID" NUMBER
1057
   ) ;
1058
/
1059
--------------------------------------------------------
1060
--  DDL for Table TEMP_TREE_BROWSE
1061
--------------------------------------------------------
1062
 
1063
  CREATE TABLE "TEMP_TREE_BROWSE" 
1064
   (	"SESSION_NUM" NUMBER, 
1065
	"LEVEL_NUM" NUMBER, 
1066
	"PV_ID" NUMBER, 
1067
	"PKG_ID" NUMBER, 
1068
	"V_EXT" VARCHAR2(50), 
1069
	"DIRECTION" NUMBER
1070
   ) ;
1071
/
1072
--------------------------------------------------------
1073
--  DDL for Table TEST_TYPES
1074
--------------------------------------------------------
1075
 
1076
  CREATE TABLE "TEST_TYPES" 
1077
   (	"TEST_TYPE_ID" NUMBER, 
1078
	"TEST_TYPE_NAME" VARCHAR2(50), 
1079
	"DISPLAY_ORDER" NUMBER
1080
   ) ;
1081
/
1082
--------------------------------------------------------
1083
--  DDL for Table UNIT_TESTS
1084
--------------------------------------------------------
1085
 
1086
  CREATE TABLE "UNIT_TESTS" 
1087
   (	"TEST_ID" NUMBER, 
1088
	"PV_ID" NUMBER, 
1089
	"TEST_TYPES_FK" NUMBER, 
1090
	"TEST_SUMMARY" VARCHAR2(4000), 
1091
	"COMPLETION_DATE" DATE, 
1092
	"COMPLETED_BY" NUMBER, 
1093
	"RESULTS_URL" VARCHAR2(2000), 
1094
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
1095
	"TEST_ACCEPTED" CHAR(1), 
1096
	"ACCEPTANCE_DATE" DATE, 
1097
	"ACCEPTED_BY" NUMBER, 
1098
	"REVIEW_COMMENTS" VARCHAR2(4000), 
1099
	"NUMOF_TEST" VARCHAR2(50)
1100
   ) ;
1101
/
1102
--------------------------------------------------------
1103
--  DDL for Table VALIDATION_RULES
1104
--------------------------------------------------------
1105
 
1106
  CREATE TABLE "VALIDATION_RULES" 
1107
   (	"FIELD_NAME" VARCHAR2(1000), 
1108
	"IS_REQUIRED" CHAR(1), 
1109
	"IS_NUMERIC" CHAR(1), 
1110
	"MIN_NUMERIC_VALUE" NUMBER, 
1111
	"MAX_NUMERIC_VALUE" NUMBER, 
1112
	"IS_DATE" CHAR(1), 
1113
	"START_DATE" DATE, 
1114
	"END_DATE" DATE, 
1115
	"MIN_STRING_LENGTH" NUMBER, 
1116
	"MAX_STRING_LENGTH" NUMBER, 
1117
	"REGEXP" VARCHAR2(4000), 
1118
	"REGEXP_DESCRIPTION" VARCHAR2(50)
1119
   ) ;
1120
/
1121
--------------------------------------------------------
1122
--  DDL for Table VCS_TYPE
1123
--------------------------------------------------------
1124
 
1125
  CREATE TABLE "VCS_TYPE" 
1126
   (	"VCS_TYPE_ID" NUMBER, 
1127
	"NAME" VARCHAR2(128), 
1128
	"TAG" VARCHAR2(32)
1129
   ) ;
1130
/
1131
--------------------------------------------------------
1132
--  DDL for Table VIEWS
1133
--------------------------------------------------------
1134
 
1135
  CREATE TABLE "VIEWS" 
1136
   (	"VIEW_ID" NUMBER, 
1137
	"VIEW_NAME" VARCHAR2(30), 
1138
	"OWNER_ID" NUMBER, 
1139
	"BASE_VIEW" CHAR(1), 
1140
	"PUBLIC_READ" CHAR(1)
1141
   ) ;
1142
/
1143
--------------------------------------------------------
1144
--  DDL for Table VIEW_DEF
1145
--------------------------------------------------------
1146
 
1147
  CREATE TABLE "VIEW_DEF" 
1148
   (	"VIEW_ID" NUMBER, 
1149
	"PKG_ID" NUMBER
1150
   ) ;
1151
/
1152
--------------------------------------------------------
1153
--  DDL for Table VIEW_SETTINGS
1154
--------------------------------------------------------
1155
 
1156
  CREATE TABLE "VIEW_SETTINGS" 
1157
   (	"USER_ID" NUMBER, 
1158
	"VIEW_ID" NUMBER
1159
   ) ;
1160
/
1161
--------------------------------------------------------
1162
--  DDL for Table VTREES
1163
--------------------------------------------------------
1164
 
1165
  CREATE TABLE "VTREES" 
1166
   (	"VTREE_ID" NUMBER, 
1167
	"PROJ_ID" NUMBER, 
1168
	"VTREE_NAME" VARCHAR2(50), 
1169
	"HIDE" CHAR(1)
1170
   ) ;
1171
/
1172
--------------------------------------------------------
1173
--  DDL for Table VTREES_WORLD
1174
--------------------------------------------------------
1175
 
1176
  CREATE TABLE "VTREES_WORLD" 
1177
   (	"WORLD_ID" NUMBER, 
1178
	"VTREE_ID" NUMBER
1179
   ) ;
1180
/
1181
--------------------------------------------------------
1182
--  DDL for Table WORK_IN_PROGRESS
1183
--------------------------------------------------------
1184
 
1185
  CREATE TABLE "WORK_IN_PROGRESS" 
1186
   (	"RTAG_ID" NUMBER, 
1187
	"PV_ID" NUMBER, 
1188
	"VIEW_ID" NUMBER
1189
   ) ;
1190
/
1191
--------------------------------------------------------
1192
--  DDL for Table WORLDS
1193
--------------------------------------------------------
1194
 
1195
  CREATE TABLE "WORLDS" 
1196
   (	"WORLD_ID" NUMBER, 
1197
	"WORLD_NAME" VARCHAR2(30), 
1198
	"WORLD_DESC" VARCHAR2(255)
1199
   ) ;
1200
/
1201
--------------------------------------------------------
1202
--  DDL for View ENVIRONMENT_VIEW
1203
--------------------------------------------------------
1204
 
1205
  CREATE OR REPLACE VIEW "ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP", "OPERATION") AS 
1206
  SELECT 2 AS ENV_AREA,
1207
    rc.PV_ID,
1208
    rc.RTAG_ID,
1209
    rc.BASE_VIEW_ID AS VIEW_ID,
1210
    rc.PKG_STATE,
1211
 rc.DEPRECATED_STATE,
1212
    rc.INSERTOR_ID,
1213
    rc.INSERT_STAMP,
1214
    ' ' AS OPERATION
1215
  FROM RELEASE_CONTENT rc
1216
UNION
1217
SELECT 0 AS ENV_AREA,
1218
    wip.PV_ID,
1219
    wip.RTAG_ID,
1220
    wip.VIEW_ID,
1221
    NULL AS PKG_STATE,
1222
 NULL AS DEPRECATED_STATE,
1223
    NULL AS INSERTOR_ID,
1224
    NULL AS INSERT_STAMP,
1225
    ' ' AS OPERATION
1226
  FROM WORK_IN_PROGRESS wip
1227
UNION
1228
SELECT 1 AS ENV_AREA,
1229
    pl.PV_ID,
1230
    pl.RTAG_ID,
1231
    pl.VIEW_ID,
1232
    NULL AS PKG_STATE,
1233
 NULL AS DEPRECATED_STATE,
1234
    NULL AS INSERTOR_ID,
1235
    NULL AS INSERT_STAMP,
1236
    pl.operation
1237
FROM PLANNED pl;
1238
/
1239
--------------------------------------------------------
1240
--  DDL for View RM_PKG_ISSUES_ID
1241
--------------------------------------------------------
1242
 
1243
  CREATE OR REPLACE VIEW "RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
1244
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
1245
 
1246
;
1247
/
1248
--------------------------------------------------------
1249
--  DDL for Index BUILD_MACHINES_PK
1250
--------------------------------------------------------
1251
 
1252
  CREATE UNIQUE INDEX "BUILD_MACHINES_PK" ON "BUILD_MACHINES" ("BM_ID") 
1253
  ;
1254
/
1255
--------------------------------------------------------
1256
--  DDL for Index BUILD_STANDARDS_ADDENDUM_PK
1257
--------------------------------------------------------
1258
 
1259
  CREATE UNIQUE INDEX "BUILD_STANDARDS_ADDENDUM_PK" ON "BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
1260
  ;
1261
/
1262
--------------------------------------------------------
1263
--  DDL for Index BUILD_STANDARDS_PK
1264
--------------------------------------------------------
1265
 
1266
  CREATE UNIQUE INDEX "BUILD_STANDARDS_PK" ON "BUILD_STANDARDS" ("BS_ID") 
1267
  ;
1268
/
1269
--------------------------------------------------------
1270
--  DDL for Index CODE_REVIEW_URL_PK
1271
--------------------------------------------------------
1272
 
1273
  CREATE UNIQUE INDEX "CODE_REVIEW_URL_PK" ON "CODE_REVIEW_URL" ("CR_ID") 
1274
  ;
1275
/
1276
--------------------------------------------------------
1277
--  DDL for Index DAEMON_INSTRUCTIONS_PK
1278
--------------------------------------------------------
1279
 
1280
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_PK" ON "DAEMON_INSTRUCTIONS" ("DAEMON_INSTRUCTIONS_ID") 
1281
  ;
1282
/
1283
--------------------------------------------------------
1284
--  DDL for Index DAEMON_INSTRUCTIONS_UK1
1285
--------------------------------------------------------
1286
 
1287
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_UK1" ON "DAEMON_INSTRUCTIONS" ("OP_CODE", "RTAG_ID", "PV_ID") 
1288
  ;
1289
/
1290
--------------------------------------------------------
1291
--  DDL for Index FK_PROJ_ID_RELEASE_TAGS
1292
--------------------------------------------------------
1293
 
1294
  CREATE INDEX "FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_TAGS" ("PROJ_ID") 
1295
  ;
1296
/
1297
--------------------------------------------------------
1298
--  DDL for Index INX_ACTION_DATE_TIME
1299
--------------------------------------------------------
1300
 
1301
  CREATE INDEX "INX_ACTION_DATE_TIME" ON "ACTION_LOG" ("ACTION_DATETIME") 
1302
  ;
1303
/
1304
--------------------------------------------------------
1305
--  DDL for Index INX_ACTION_LOG_PV_ID
1306
--------------------------------------------------------
1307
 
1308
  CREATE INDEX "INX_ACTION_LOG_PV_ID" ON "ACTION_LOG" ("PV_ID") 
1309
  ;
1310
/
1311
--------------------------------------------------------
1312
--  DDL for Index INX_CODE_REVIEW
1313
--------------------------------------------------------
1314
 
1315
  CREATE UNIQUE INDEX "INX_CODE_REVIEW" ON "CODE_REVIEWS" ("PV_ID") 
1316
  ;
1317
/
1318
--------------------------------------------------------
1319
--  DDL for Index INX_DAEMON_INST_PV_ID
1320
--------------------------------------------------------
1321
 
1322
  CREATE INDEX "INX_DAEMON_INST_PV_ID" ON "DAEMON_INSTRUCTIONS" ("PV_ID") 
1323
  ;
1324
/
1325
--------------------------------------------------------
1326
--  DDL for Index INX_DAEMON_INST_RTAG_ID
1327
--------------------------------------------------------
1328
 
1329
  CREATE INDEX "INX_DAEMON_INST_RTAG_ID" ON "DAEMON_INSTRUCTIONS" ("RTAG_ID") 
1330
  ;
1331
/
1332
--------------------------------------------------------
1333
--  DDL for Index INX_DAEMON_INST_SCHED_DATETIME
1334
--------------------------------------------------------
1335
 
1336
  CREATE INDEX "INX_DAEMON_INST_SCHED_DATETIME" ON "DAEMON_INSTRUCTIONS" ("SCHEDULED_DATETIME") 
1337
  ;
1338
/
1339
--------------------------------------------------------
1340
--  DDL for Index INX_FILE_NAME
1341
--------------------------------------------------------
1342
 
1343
  CREATE INDEX "INX_FILE_NAME" ON "RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
1344
  ;
1345
/
1346
--------------------------------------------------------
1347
--  DDL for Index INX_IS_PATCH_IGNORE
1348
--------------------------------------------------------
1349
 
1350
  CREATE INDEX "INX_IS_PATCH_IGNORE" ON "IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
1351
  ;
1352
/
1353
--------------------------------------------------------
1354
--  DDL for Index INX_MSGBOARD
1355
--------------------------------------------------------
1356
 
1357
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
1358
  ;
1359
/
1360
--------------------------------------------------------
1361
--  DDL for Index INX_PACKAGES_PKG_NAME
1362
--------------------------------------------------------
1363
 
1364
  CREATE INDEX "INX_PACKAGES_PKG_NAME" ON "PACKAGE_VERSIONS" ("PKG_ID") 
1365
  ;
1366
/
1367
--------------------------------------------------------
1368
--  DDL for Index INX_PACKAGES_PKG_VERSION
1369
--------------------------------------------------------
1370
 
1371
  CREATE INDEX "INX_PACKAGES_PKG_VERSION" ON "PACKAGE_VERSIONS" ("PKG_VERSION") 
1372
  ;
1373
/
1374
--------------------------------------------------------
1375
--  DDL for Index INX_PACKAGES_V_EXT
1376
--------------------------------------------------------
1377
 
1378
  CREATE INDEX "INX_PACKAGES_V_EXT" ON "PACKAGE_VERSIONS" ("V_EXT") 
1379
  ;
1380
/
1381
--------------------------------------------------------
1382
--  DDL for Index INX_PACKAGES_V_MM
1383
--------------------------------------------------------
1384
 
1385
  CREATE INDEX "INX_PACKAGES_V_MM" ON "PACKAGE_VERSIONS" ("V_MM") 
1386
  ;
1387
/
1388
--------------------------------------------------------
1389
--  DDL for Index INX_PACKAGES_V_NMM
1390
--------------------------------------------------------
1391
 
1392
  CREATE INDEX "INX_PACKAGES_V_NMM" ON "PACKAGE_VERSIONS" ("V_NMM") 
1393
  ;
1394
/
1395
--------------------------------------------------------
1396
--  DDL for Index INX_PACKAGE_DEPS_DPKG_ID
1397
--------------------------------------------------------
1398
 
1399
  CREATE INDEX "INX_PACKAGE_DEPS_DPKG_ID" ON "PACKAGE_DEPENDENCIES" ("DPKG_ID") 
1400
  ;
1401
/
1402
--------------------------------------------------------
1403
--  DDL for Index INX_PACKAGE_DEPS_DPV_ID
1404
--------------------------------------------------------
1405
 
1406
  CREATE INDEX "INX_PACKAGE_DEPS_DPV_ID" ON "PACKAGE_DEPENDENCIES" ("DPV_ID") 
1407
  ;
1408
/
1409
--------------------------------------------------------
1410
--  DDL for Index INX_PACKAGE_DEPS_PKG_ID
1411
--------------------------------------------------------
1412
 
1413
  CREATE INDEX "INX_PACKAGE_DEPS_PKG_ID" ON "PACKAGE_DEPENDENCIES" ("PKG_ID") 
1414
  ;
1415
/
1416
--------------------------------------------------------
1417
--  DDL for Index INX_PACKAGE_DEPS_PV_ID
1418
--------------------------------------------------------
1419
 
1420
  CREATE INDEX "INX_PACKAGE_DEPS_PV_ID" ON "PACKAGE_DEPENDENCIES" ("PV_ID") 
1421
  ;
1422
/
1423
--------------------------------------------------------
1424
--  DDL for Index INX_PCOMP_FK_PV_ID
1425
--------------------------------------------------------
1426
 
1427
  CREATE INDEX "INX_PCOMP_FK_PV_ID" ON "PRODUCT_COMPONENTS" ("PV_ID") 
1428
  ;
1429
/
1430
--------------------------------------------------------
1431
--  DDL for Index INX_PC_FILE_NAME
1432
--------------------------------------------------------
1433
 
1434
  CREATE INDEX "INX_PC_FILE_NAME" ON "PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
1435
  ;
1436
/
1437
--------------------------------------------------------
1438
--  DDL for Index INX_PP_PV_ID
1439
--------------------------------------------------------
1440
 
1441
  CREATE INDEX "INX_PP_PV_ID" ON "PACKAGE_PATCHES" ("PV_ID") 
1442
  ;
1443
/
1444
--------------------------------------------------------
1445
--  DDL for Index INX_PROJ_ACTION_DATE_TIME
1446
--------------------------------------------------------
1447
 
1448
  CREATE INDEX "INX_PROJ_ACTION_DATE_TIME" ON "PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
1449
  ;
1450
/
1451
--------------------------------------------------------
1452
--  DDL for Index INX_PROJ_ACTION_LOG_PROJ
1453
--------------------------------------------------------
1454
 
1455
  CREATE INDEX "INX_PROJ_ACTION_LOG_PROJ" ON "PROJECT_ACTION_LOG" ("PROJ_ID") 
1456
  ;
1457
/
1458
--------------------------------------------------------
1459
--  DDL for Index INX_PV_ID_PKGDOC
1460
--------------------------------------------------------
1461
 
1462
  CREATE INDEX "INX_PV_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID") 
1463
  ;
1464
/
1465
--------------------------------------------------------
1466
--  DDL for Index INX_PV_ID_TEST_ID_PKGDOC
1467
--------------------------------------------------------
1468
 
1469
  CREATE INDEX "INX_PV_ID_TEST_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
1470
  ;
1471
/
1472
--------------------------------------------------------
1473
--  DDL for Index INX_PV_OWNER_ID
1474
--------------------------------------------------------
1475
 
1476
  CREATE INDEX "INX_PV_OWNER_ID" ON "PACKAGE_VERSIONS" ("OWNER_ID") 
1477
  ;
1478
/
1479
--------------------------------------------------------
1480
--  DDL for Index INX_RCOMP_PV_ID
1481
--------------------------------------------------------
1482
 
1483
  CREATE INDEX "INX_RCOMP_PV_ID" ON "RELEASE_COMPONENTS" ("PV_ID") 
1484
  ;
1485
/
1486
--------------------------------------------------------
1487
--  DDL for Index INX_RC_BASE_VIEW_ID
1488
--------------------------------------------------------
1489
 
1490
  CREATE INDEX "INX_RC_BASE_VIEW_ID" ON "RELEASE_CONTENT" ("BASE_VIEW_ID") 
1491
  ;
1492
/
1493
--------------------------------------------------------
1494
--  DDL for Index INX_RC_PKG_STATE
1495
--------------------------------------------------------
1496
 
1497
  CREATE INDEX "INX_RC_PKG_STATE" ON "RELEASE_CONTENT" ("PKG_STATE") 
1498
  ;
1499
/
1500
--------------------------------------------------------
1501
--  DDL for Index INX_RL_REFRTAG_ID
1502
--------------------------------------------------------
1503
 
1504
  CREATE INDEX "INX_RL_REFRTAG_ID" ON "RELEASE_LINKS" ("REF_RTAG_ID") 
1505
  ;
1506
/
1507
--------------------------------------------------------
1508
--  DDL for Index INX_RL_RTAG_ID
1509
--------------------------------------------------------
1510
 
1511
  CREATE INDEX "INX_RL_RTAG_ID" ON "RELEASE_LINKS" ("RTAG_ID") 
1512
  ;
1513
/
1514
--------------------------------------------------------
1515
--  DDL for Index INX_TES_PKGEXT
1516
--------------------------------------------------------
1517
 
1518
  CREATE INDEX "INX_TES_PKGEXT" ON "TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
1519
  ;
1520
/
1521
--------------------------------------------------------
1522
--  DDL for Index INX_TES_PV
1523
--------------------------------------------------------
1524
 
1525
  CREATE INDEX "INX_TES_PV" ON "TEMP_ENV_STATES" ("PV_ID") 
1526
  ;
1527
/
1528
--------------------------------------------------------
1529
--  DDL for Index INX_TES_TES_STATE
1530
--------------------------------------------------------
1531
 
1532
  CREATE INDEX "INX_TES_TES_STATE" ON "TEMP_ENV_STATES" ("TES_STATE") 
1533
  ;
1534
/
1535
--------------------------------------------------------
1536
--  DDL for Index INX_TTB_LEVEL_NUM
1537
--------------------------------------------------------
1538
 
1539
  CREATE INDEX "INX_TTB_LEVEL_NUM" ON "TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1540
  ;
1541
/
1542
--------------------------------------------------------
1543
--  DDL for Index INX_TTB_PKG
1544
--------------------------------------------------------
1545
 
1546
  CREATE INDEX "INX_TTB_PKG" ON "TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
1547
  ;
1548
/
1549
--------------------------------------------------------
1550
--  DDL for Index INX_TTB_SESSION
1551
--------------------------------------------------------
1552
 
1553
  CREATE INDEX "INX_TTB_SESSION" ON "TEMP_TREE_BROWSE" ("SESSION_NUM") 
1554
  ;
1555
/
1556
--------------------------------------------------------
1557
--  DDL for Index INX_UT_COMPLETED
1558
--------------------------------------------------------
1559
 
1560
  CREATE INDEX "INX_UT_COMPLETED" ON "UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
1561
  ;
1562
/
1563
--------------------------------------------------------
1564
--  DDL for Index INX_UT_PV_TEST_TYPE
1565
--------------------------------------------------------
1566
 
1567
  CREATE INDEX "INX_UT_PV_TEST_TYPE" ON "UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
1568
  ;
1569
/
1570
--------------------------------------------------------
1571
--  DDL for Index MICROSOFT_PK_DTPROPERTIES
1572
--------------------------------------------------------
1573
 
1574
  CREATE UNIQUE INDEX "MICROSOFT_PK_DTPROPERTIES" ON "MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
1575
  ;
1576
/
1577
--------------------------------------------------------
1578
--  DDL for Index PKNOTE_MANAGER1
1579
--------------------------------------------------------
1580
 
1581
  CREATE UNIQUE INDEX "PKNOTE_MANAGER1" ON "NOTE_MANAGER" ("NID") 
1582
  ;
1583
/
1584
--------------------------------------------------------
1585
--  DDL for Index PK_BUILD_ENVIRONMENTS
1586
--------------------------------------------------------
1587
 
1588
  CREATE UNIQUE INDEX "PK_BUILD_ENVIRONMENTS" ON "BUILD_ENVIRONMENTS" ("BE_ID") 
1589
  ;
1590
/
1591
--------------------------------------------------------
1592
--  DDL for Index PK_BUILD_MACHINE_CONFIG
1593
--------------------------------------------------------
1594
 
1595
  CREATE UNIQUE INDEX "PK_BUILD_MACHINE_CONFIG" ON "BUILD_MACHINE_CONFIG" ("BMCON_ID") 
1596
  ;
1597
/
1598
--------------------------------------------------------
1599
--  DDL for Index PK_LICENCES
1600
--------------------------------------------------------
1601
 
1602
  CREATE UNIQUE INDEX "PK_LICENCES" ON "LICENCES" ("LICENCE") 
1603
  ;
1604
/
1605
--------------------------------------------------------
1606
--  DDL for Index PK_MESSAGE_BOARD
1607
--------------------------------------------------------
1608
 
1609
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
1610
  ;
1611
/
1612
--------------------------------------------------------
1613
--  DDL for Index PK_NOTIFICATION_HISTORY
1614
--------------------------------------------------------
1615
 
1616
  CREATE UNIQUE INDEX "PK_NOTIFICATION_HISTORY" ON "NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
1617
  ;
1618
/
1619
--------------------------------------------------------
1620
--  DDL for Index PK_PACKAGES
1621
--------------------------------------------------------
1622
 
1623
  CREATE UNIQUE INDEX "PK_PACKAGES" ON "PACKAGES" ("PKG_ID") 
1624
  ;
1625
/
1626
--------------------------------------------------------
1627
--  DDL for Index PK_PACKAGE_VERSIONS
1628
--------------------------------------------------------
1629
 
1630
  CREATE UNIQUE INDEX "PK_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PV_ID") 
1631
  ;
1632
/
1633
--------------------------------------------------------
1634
--  DDL for Index PK_PROJECTS
1635
--------------------------------------------------------
1636
 
1637
  CREATE UNIQUE INDEX "PK_PROJECTS" ON "PROJECTS" ("PROJ_ID") 
1638
  ;
1639
/
1640
--------------------------------------------------------
1641
--  DDL for Index PK_RELEASE_TAGS
1642
--------------------------------------------------------
1643
 
1644
  CREATE UNIQUE INDEX "PK_RELEASE_TAGS" ON "RELEASE_TAGS" ("RTAG_ID") 
1645
  ;
1646
/
1647
--------------------------------------------------------
1648
--  DDL for Index PK_TEST_TYPES
1649
--------------------------------------------------------
1650
 
1651
  CREATE UNIQUE INDEX "PK_TEST_TYPES" ON "TEST_TYPES" ("TEST_TYPE_ID") 
1652
  ;
1653
/
1654
--------------------------------------------------------
1655
--  DDL for Index PK_VIEWS
1656
--------------------------------------------------------
1657
 
1658
  CREATE UNIQUE INDEX "PK_VIEWS" ON "VIEWS" ("VIEW_ID") 
1659
  ;
1660
/
1661
--------------------------------------------------------
1662
--  DDL for Index PK_VTREES
1663
--------------------------------------------------------
1664
 
1665
  CREATE UNIQUE INDEX "PK_VTREES" ON "VTREES" ("VTREE_ID") 
1666
  ;
1667
/
1668
--------------------------------------------------------
1669
--  DDL for Index PK_WORLDS
1670
--------------------------------------------------------
1671
 
1672
  CREATE UNIQUE INDEX "PK_WORLDS" ON "WORLDS" ("WORLD_ID") 
1673
  ;
1674
/
1675
--------------------------------------------------------
1676
--  DDL for Index PROCESSES_PK
1677
--------------------------------------------------------
1678
 
1679
  CREATE UNIQUE INDEX "PROCESSES_PK" ON "PROCESSES" ("PROC_ID") 
1680
  ;
1681
/
1682
--------------------------------------------------------
1683
--  DDL for Index PRODUCT_STATES_PK
1684
--------------------------------------------------------
1685
 
1686
  CREATE UNIQUE INDEX "PRODUCT_STATES_PK" ON "PRODUCT_STATES" ("STATE_ID") 
1687
  ;
1688
/
1689
--------------------------------------------------------
1690
--  DDL for Index SYS_C0014728
1691
--------------------------------------------------------
1692
 
1693
  CREATE UNIQUE INDEX "SYS_C0014728" ON "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") 
1694
  ;
1695
/
1696
--------------------------------------------------------
1697
--  DDL for Index SYS_C0014793
1698
--------------------------------------------------------
1699
 
1700
  CREATE UNIQUE INDEX "SYS_C0014793" ON "GBE_MACHTYPE" ("GBE_ID") 
1701
  ;
1702
/
1703
--------------------------------------------------------
1704
--  DDL for Index SYS_C0014896
1705
--------------------------------------------------------
1706
 
1707
  CREATE UNIQUE INDEX "SYS_C0014896" ON "RELEASE_CONFIG" ("RCON_ID") 
1708
  ;
1709
/
1710
--------------------------------------------------------
1711
--  DDL for Index SYS_C0014918
1712
--------------------------------------------------------
1713
 
1714
  CREATE UNIQUE INDEX "SYS_C0014918" ON "REPEAT_SCHEDULE" ("RPT_ID") 
1715
  ;
1716
/
1717
--------------------------------------------------------
1718
--  DDL for Index SYS_C0014926
1719
--------------------------------------------------------
1720
 
1721
  CREATE UNIQUE INDEX "SYS_C0014926" ON "RUN_LEVEL_SCHEDULE" ("SCHEDULED_ID") 
1722
  ;
1723
/
1724
--------------------------------------------------------
1725
--  DDL for Index UNQ_ACTTYPE_ID
1726
--------------------------------------------------------
1727
 
1728
  CREATE UNIQUE INDEX "UNQ_ACTTYPE_ID" ON "ACTION_TYPE" ("ACTTYPE_ID") 
1729
  ;
1730
/
1731
--------------------------------------------------------
1732
--  DDL for Index UNQ_AN_PART1
1733
--------------------------------------------------------
1734
 
1735
  CREATE UNIQUE INDEX "UNQ_AN_PART1" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
1736
  ;
1737
/
1738
--------------------------------------------------------
1739
--  DDL for Index UNQ_AN_PART2
1740
--------------------------------------------------------
1741
 
1742
  CREATE UNIQUE INDEX "UNQ_AN_PART2" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
1743
  ;
1744
/
1745
--------------------------------------------------------
1746
--  DDL for Index UNQ_BUILD_ENV
1747
--------------------------------------------------------
1748
 
1749
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV" ON "BUILD_ENVIRONMENTS" ("BE_NAME") 
1750
  ;
1751
/
1752
--------------------------------------------------------
1753
--  DDL for Index UNQ_BUILD_ENV_DOCS
1754
--------------------------------------------------------
1755
 
1756
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV_DOCS" ON "BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
1757
  ;
1758
/
1759
--------------------------------------------------------
1760
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG01
1761
--------------------------------------------------------
1762
 
1763
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG01" ON "BUILD_MACHINE_CONFIG" (LOWER("DISPLAY_NAME")) 
1764
  ;
1765
/
1766
--------------------------------------------------------
1767
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG02
1768
--------------------------------------------------------
1769
 
1770
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG02" ON "BUILD_MACHINE_CONFIG" ("MACHINE_HOSTNAME") 
1771
  ;
1772
/
1773
--------------------------------------------------------
1774
--  DDL for Index UNQ_BUILD_ORDER
1775
--------------------------------------------------------
1776
 
1777
  CREATE UNIQUE INDEX "UNQ_BUILD_ORDER" ON "BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
1778
  ;
1779
/
1780
--------------------------------------------------------
1781
--  DDL for Index UNQ_CQ
1782
--------------------------------------------------------
1783
 
1784
  CREATE UNIQUE INDEX "UNQ_CQ" ON "CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1785
  ;
1786
/
1787
--------------------------------------------------------
1788
--  DDL for Index UNQ_IGW
1789
--------------------------------------------------------
1790
 
1791
  CREATE UNIQUE INDEX "UNQ_IGW" ON "IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
1792
  ;
1793
/
1794
--------------------------------------------------------
1795
--  DDL for Index UNQ_PACKAGES
1796
--------------------------------------------------------
1797
 
1798
  CREATE UNIQUE INDEX "UNQ_PACKAGES" ON "PACKAGES" ("PKG_NAME") 
1799
  ;
1800
/
1801
--------------------------------------------------------
1802
--  DDL for Index UNQ_PACKAGE_DEPENDENCIES
1803
--------------------------------------------------------
1804
 
1805
  CREATE UNIQUE INDEX "UNQ_PACKAGE_DEPENDENCIES" ON "PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
1806
  ;
1807
/
1808
--------------------------------------------------------
1809
--  DDL for Index UNQ_PACKAGE_METRICS
1810
--------------------------------------------------------
1811
 
1812
  CREATE UNIQUE INDEX "UNQ_PACKAGE_METRICS" ON "PACKAGE_METRICS" ("PV_ID") 
1813
  ;
1814
/
1815
--------------------------------------------------------
1816
--  DDL for Index UNQ_PACKAGE_PATCHES
1817
--------------------------------------------------------
1818
 
1819
  CREATE UNIQUE INDEX "UNQ_PACKAGE_PATCHES" ON "PACKAGE_PATCHES" ("PATCH_ID") 
1820
  ;
1821
/
1822
--------------------------------------------------------
1823
--  DDL for Index UNQ_PACKAGE_VERSIONS
1824
--------------------------------------------------------
1825
 
1826
  CREATE UNIQUE INDEX "UNQ_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
1827
  ;
1828
/
1829
--------------------------------------------------------
1830
--  DDL for Index UNQ_PKG_BUILD_ENV
1831
--------------------------------------------------------
1832
 
1833
  CREATE UNIQUE INDEX "UNQ_PKG_BUILD_ENV" ON "PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
1834
  ;
1835
/
1836
--------------------------------------------------------
1837
--  DDL for Index UNQ_PKG_DOC
1838
--------------------------------------------------------
1839
 
1840
  CREATE UNIQUE INDEX "UNQ_PKG_DOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
1841
  ;
1842
/
1843
--------------------------------------------------------
1844
--  DDL for Index UNQ_PLANNED
1845
--------------------------------------------------------
1846
 
1847
  CREATE INDEX "UNQ_PLANNED" ON "PLANNED" ("RTAG_ID", "PV_ID") 
1848
  ;
1849
/
1850
--------------------------------------------------------
1851
--  DDL for Index UNQ_PLATFORM
1852
--------------------------------------------------------
1853
 
1854
  CREATE UNIQUE INDEX "UNQ_PLATFORM" ON "PLATFORMS" ("NAME") 
1855
  ;
1856
/
1857
--------------------------------------------------------
1858
--  DDL for Index UNQ_PROJECTS
1859
--------------------------------------------------------
1860
 
1861
  CREATE UNIQUE INDEX "UNQ_PROJECTS" ON "PROJECTS" ("PROJ_NAME") 
1862
  ;
1863
/
1864
--------------------------------------------------------
1865
--  DDL for Index UNQ_PROJECT_EXT
1866
--------------------------------------------------------
1867
 
1868
  CREATE UNIQUE INDEX "UNQ_PROJECT_EXT" ON "PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
1869
  ;
1870
/
1871
--------------------------------------------------------
1872
--  DDL for Index UNQ_RELEASE_CONTENTS
1873
--------------------------------------------------------
1874
 
1875
  CREATE UNIQUE INDEX "UNQ_RELEASE_CONTENTS" ON "RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
1876
  ;
1877
/
1878
--------------------------------------------------------
1879
--  DDL for Index UNQ_RELEASE_LINKS
1880
--------------------------------------------------------
1881
 
1882
  CREATE UNIQUE INDEX "UNQ_RELEASE_LINKS" ON "RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
1883
  ;
1884
/
1885
--------------------------------------------------------
1886
--  DDL for Index UNQ_RELEASE_METRICS
1887
--------------------------------------------------------
1888
 
1889
  CREATE UNIQUE INDEX "UNQ_RELEASE_METRICS" ON "RELEASE_METRICS" ("RTAG_ID") 
1890
  ;
1891
/
1892
--------------------------------------------------------
1893
--  DDL for Index UNQ_REL_COMPONENTS
1894
--------------------------------------------------------
1895
 
1896
  CREATE UNIQUE INDEX "UNQ_REL_COMPONENTS" ON "RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
1897
  ;
1898
/
1899
--------------------------------------------------------
1900
--  DDL for Index UNQ_RTD
1901
--------------------------------------------------------
1902
 
1903
  CREATE INDEX "UNQ_RTD" ON "RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
1904
  ;
1905
/
1906
--------------------------------------------------------
1907
--  DDL for Index UNQ_TEST_TYPE_NAME
1908
--------------------------------------------------------
1909
 
1910
  CREATE UNIQUE INDEX "UNQ_TEST_TYPE_NAME" ON "TEST_TYPES" ("TEST_TYPE_NAME") 
1911
  ;
1912
/
1913
--------------------------------------------------------
1914
--  DDL for Index UNQ_UT_PART1
1915
--------------------------------------------------------
1916
 
1917
  CREATE UNIQUE INDEX "UNQ_UT_PART1" ON "UNIT_TESTS" ("PV_ID", "TEST_ID") 
1918
  ;
1919
/
1920
--------------------------------------------------------
1921
--  DDL for Index UNQ_VALIDATION_RULES
1922
--------------------------------------------------------
1923
 
1924
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
1925
  ;
1926
/
1927
--------------------------------------------------------
1928
--  DDL for Index UNQ_VIEWS
1929
--------------------------------------------------------
1930
 
1931
  CREATE UNIQUE INDEX "UNQ_VIEWS" ON "VIEWS" ("VIEW_NAME", "OWNER_ID") 
1932
  ;
1933
/
1934
--------------------------------------------------------
1935
--  DDL for Index UNQ_VIEW_DEF
1936
--------------------------------------------------------
1937
 
1938
  CREATE UNIQUE INDEX "UNQ_VIEW_DEF" ON "VIEW_DEF" ("VIEW_ID", "PKG_ID") 
1939
  ;
1940
/
1941
--------------------------------------------------------
1942
--  DDL for Index UNQ_VIEW_SETTINGS
1943
--------------------------------------------------------
1944
 
1945
  CREATE UNIQUE INDEX "UNQ_VIEW_SETTINGS" ON "VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
1946
  ;
1947
/
1948
--------------------------------------------------------
1949
--  DDL for Index UNQ_VTREES
1950
--------------------------------------------------------
1951
 
1952
  CREATE UNIQUE INDEX "UNQ_VTREES" ON "VTREES" ("PROJ_ID", "VTREE_NAME") 
1953
  ;
1954
/
1955
--------------------------------------------------------
1956
--  DDL for Index UNQ_VTREE_WORLD
1957
--------------------------------------------------------
1958
 
1959
  CREATE UNIQUE INDEX "UNQ_VTREE_WORLD" ON "VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
1960
  ;
1961
/
1962
--------------------------------------------------------
1963
--  DDL for Index UNQ_WORK_IN_PROGRESS
1964
--------------------------------------------------------
1965
 
1966
  CREATE UNIQUE INDEX "UNQ_WORK_IN_PROGRESS" ON "WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
1967
  ;
1968
/
1969
--------------------------------------------------------
1970
--  DDL for Index VCS_TYPE_PK
1971
--------------------------------------------------------
1972
 
1973
  CREATE UNIQUE INDEX "VCS_TYPE_PK" ON "VCS_TYPE" ("VCS_TYPE_ID") 
1974
  ;
1975
/
1976
--------------------------------------------------------
1977
--  Constraints for Table ABT_ACTION_LOG
1978
--------------------------------------------------------
1979
 
1980
  ALTER TABLE "ABT_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
1981
/
1982
--------------------------------------------------------
1983
--  Constraints for Table ACTION_LOG
1984
--------------------------------------------------------
1985
 
1986
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
1987
  ALTER TABLE "ACTION_LOG" MODIFY ("PV_ID" NOT NULL ENABLE);
1988
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
1989
  ALTER TABLE "ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
1990
/
1991
--------------------------------------------------------
1992
--  Constraints for Table ACTION_TYPE
1993
--------------------------------------------------------
1994
 
1995
  ALTER TABLE "ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") ENABLE;
1996
  ALTER TABLE "ACTION_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
1997
  ALTER TABLE "ACTION_TYPE" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
1998
/
1999
--------------------------------------------------------
2000
--  Constraints for Table ADDITIONAL_NOTES
2001
--------------------------------------------------------
2002
 
2003
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2004
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2005
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_TITLE" NOT NULL ENABLE);
2006
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("PV_ID" NOT NULL ENABLE);
2007
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_ID" NOT NULL ENABLE);
2008
/
2009
--------------------------------------------------------
2010
--  Constraints for Table ADVISORY_RIPPLE
2011
--------------------------------------------------------
2012
 
2013
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2014
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2015
/
2016
--------------------------------------------------------
2017
--  Constraints for Table ARCHIVE_ACTION_LOG
2018
--------------------------------------------------------
2019
 
2020
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
2021
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2022
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2023
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2024
/
2025
--------------------------------------------------------
2026
--  Constraints for Table ARCHIVE_DATA
2027
--------------------------------------------------------
2028
 
2029
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("PV_ID" NOT NULL ENABLE);
2030
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2031
/
2032
--------------------------------------------------------
2033
--  Constraints for Table AUTOBUILD_FAILURE
2034
--------------------------------------------------------
2035
 
2036
  ALTER TABLE "AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") ENABLE;
2037
  ALTER TABLE "AUTOBUILD_FAILURE" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
2038
/
2039
--------------------------------------------------------
2040
--  Constraints for Table BUILD_ENVIRONMENTS
2041
--------------------------------------------------------
2042
 
2043
  ALTER TABLE "BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") ENABLE;
2044
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_NAME" NOT NULL ENABLE);
2045
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
2046
/
2047
--------------------------------------------------------
2048
--  Constraints for Table BUILD_ENV_DOCUMENTS
2049
--------------------------------------------------------
2050
 
2051
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2052
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
2053
/
2054
--------------------------------------------------------
2055
--  Constraints for Table BUILD_MACHINES
2056
--------------------------------------------------------
2057
 
2058
  ALTER TABLE "BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") ENABLE;
2059
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_NAME" NOT NULL ENABLE);
2060
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_ID" NOT NULL ENABLE);
2061
/
2062
--------------------------------------------------------
2063
--  Constraints for Table BUILD_MACHINE_CONFIG
2064
--------------------------------------------------------
2065
 
2066
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "PK_BUILD_MACHINE_CONFIG" PRIMARY KEY ("BMCON_ID") ENABLE;
2067
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2068
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("MACHINE_HOSTNAME" NOT NULL ENABLE);
2069
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("DISPLAY_NAME" NOT NULL ENABLE);
2070
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("BMCON_ID" NOT NULL ENABLE);
2071
/
2072
--------------------------------------------------------
2073
--  Constraints for Table BUILD_ORDER
2074
--------------------------------------------------------
2075
 
2076
  ALTER TABLE "BUILD_ORDER" MODIFY ("PV_ID" NOT NULL ENABLE);
2077
  ALTER TABLE "BUILD_ORDER" MODIFY ("STEP_NUM" NOT NULL ENABLE);
2078
  ALTER TABLE "BUILD_ORDER" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2079
/
2080
--------------------------------------------------------
2081
--  Constraints for Table BUILD_SERVICE_CONFIG
2082
--------------------------------------------------------
2083
 
2084
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("CONFIG" NOT NULL ENABLE);
2085
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("SERVICE" NOT NULL ENABLE);
2086
/
2087
--------------------------------------------------------
2088
--  Constraints for Table BUILD_STANDARDS
2089
--------------------------------------------------------
2090
 
2091
  ALTER TABLE "BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") ENABLE;
2092
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_NAME" NOT NULL ENABLE);
2093
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_ID" NOT NULL ENABLE);
2094
/
2095
--------------------------------------------------------
2096
--  Constraints for Table BUILD_STANDARDS_ADDENDUM
2097
--------------------------------------------------------
2098
 
2099
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") ENABLE;
2100
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BS_ID" NOT NULL ENABLE);
2101
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_NAME" NOT NULL ENABLE);
2102
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_ID" NOT NULL ENABLE);
2103
/
2104
--------------------------------------------------------
2105
--  Constraints for Table CODE_REVIEWS
2106
--------------------------------------------------------
2107
 
2108
  ALTER TABLE "CODE_REVIEWS" MODIFY ("PV_ID" NOT NULL ENABLE);
2109
/
2110
--------------------------------------------------------
2111
--  Constraints for Table CODE_REVIEW_URL
2112
--------------------------------------------------------
2113
 
2114
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") ENABLE;
2115
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("DATE_OF_REVIEW" NOT NULL ENABLE);
2116
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("URL" NOT NULL ENABLE);
2117
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2118
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PV_ID" NOT NULL ENABLE);
2119
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("CR_ID" NOT NULL ENABLE);
2120
/
2121
--------------------------------------------------------
2122
--  Constraints for Table CQ_ISSUES
2123
--------------------------------------------------------
2124
 
2125
  ALTER TABLE "CQ_ISSUES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2126
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_STATE" NOT NULL ENABLE);
2127
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_ID" NOT NULL ENABLE);
2128
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_DB" NOT NULL ENABLE);
2129
  ALTER TABLE "CQ_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
2130
/
2131
--------------------------------------------------------
2132
--  Constraints for Table DAEMON_ACTION_LOG
2133
--------------------------------------------------------
2134
 
2135
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2136
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2137
/
2138
--------------------------------------------------------
2139
--  Constraints for Table DAEMON_INSTRUCTIONS
2140
--------------------------------------------------------
2141
 
2142
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_UK1" UNIQUE ("OP_CODE", "RTAG_ID", "PV_ID") ENABLE;
2143
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PK" PRIMARY KEY ("DAEMON_INSTRUCTIONS_ID") ENABLE;
2144
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("OP_CODE" NOT NULL ENABLE);
2145
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("DAEMON_INSTRUCTIONS_ID" NOT NULL ENABLE);
2146
/
2147
--------------------------------------------------------
2148
--  Constraints for Table DASH_BOARD
2149
--------------------------------------------------------
2150
 
2151
  ALTER TABLE "DASH_BOARD" MODIFY ("TOTAL_PACKAGES" NOT NULL ENABLE);
2152
  ALTER TABLE "DASH_BOARD" MODIFY ("AUTOMATED_PACKAGES" NOT NULL ENABLE);
2153
  ALTER TABLE "DASH_BOARD" MODIFY ("LAST_BUILD_TIME" NOT NULL ENABLE);
2154
  ALTER TABLE "DASH_BOARD" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2155
  ALTER TABLE "DASH_BOARD" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2156
/
2157
--------------------------------------------------------
2158
--  Constraints for Table DEPRECATED_PACKAGES
2159
--------------------------------------------------------
2160
 
2161
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("COMMENTS" NOT NULL ENABLE);
2162
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2163
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2164
/
2165
--------------------------------------------------------
2166
--  Constraints for Table DO_NOT_RIPPLE
2167
--------------------------------------------------------
2168
 
2169
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2170
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2171
/
2172
--------------------------------------------------------
2173
--  Constraints for Table GBE_MACHTYPE
2174
--------------------------------------------------------
2175
 
2176
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("BM_ID" NOT NULL ENABLE);
2177
  ALTER TABLE "GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") ENABLE;
2178
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_VALUE" NOT NULL ENABLE);
2179
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_ID" NOT NULL ENABLE);
2180
/
2181
--------------------------------------------------------
2182
--  Constraints for Table IGNORE_WARNINGS
2183
--------------------------------------------------------
2184
 
2185
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("DPV_ID" NOT NULL ENABLE);
2186
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("PV_ID" NOT NULL ENABLE);
2187
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2188
/
2189
--------------------------------------------------------
2190
--  Constraints for Table JIRA_ISSUES
2191
--------------------------------------------------------
2192
 
2193
  ALTER TABLE "JIRA_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
2194
/
2195
--------------------------------------------------------
2196
--  Constraints for Table LICENCES
2197
--------------------------------------------------------
2198
 
2199
  ALTER TABLE "LICENCES" ADD CONSTRAINT "PK_LICENCES" PRIMARY KEY ("LICENCE") ENABLE;
2200
  ALTER TABLE "LICENCES" MODIFY ("NAME" NOT NULL ENABLE);
2201
  ALTER TABLE "LICENCES" MODIFY ("LICENCE" NOT NULL ENABLE);
2202
/
2203
--------------------------------------------------------
2204
--  Constraints for Table LICENCING
2205
--------------------------------------------------------
2206
 
2207
  ALTER TABLE "LICENCING" MODIFY ("LICENCE" NOT NULL ENABLE);
2208
  ALTER TABLE "LICENCING" MODIFY ("PV_ID" NOT NULL ENABLE);
2209
/
2210
--------------------------------------------------------
2211
--  Constraints for Table MEMBERS_GROUP
2212
--------------------------------------------------------
2213
 
2214
  ALTER TABLE "MEMBERS_GROUP" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
2215
/
2216
--------------------------------------------------------
2217
--  Constraints for Table MESSAGE_BOARD
2218
--------------------------------------------------------
2219
 
2220
  ALTER TABLE "MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") ENABLE;
2221
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
2222
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
2223
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
2224
/
2225
--------------------------------------------------------
2226
--  Constraints for Table MICROSOFTDTPROPERTIES
2227
--------------------------------------------------------
2228
 
2229
  ALTER TABLE "MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") ENABLE;
2230
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("VERSION" CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE);
2231
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("PROPERTY" CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE);
2232
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("ID" CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE);
2233
/
2234
--------------------------------------------------------
2235
--  Constraints for Table NOTE_MANAGER
2236
--------------------------------------------------------
2237
 
2238
  ALTER TABLE "NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") ENABLE;
2239
  ALTER TABLE "NOTE_MANAGER" MODIFY ("NID" NOT NULL ENABLE);
2240
/
2241
--------------------------------------------------------
2242
--  Constraints for Table NOTIFICATION_HISTORY
2243
--------------------------------------------------------
2244
 
2245
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") ENABLE;
2246
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2247
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("USER_ID" NOT NULL ENABLE);
2248
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("PV_ID" NOT NULL ENABLE);
2249
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2250
/
2251
--------------------------------------------------------
2252
--  Constraints for Table PACKAGES
2253
--------------------------------------------------------
2254
 
2255
  ALTER TABLE "PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") ENABLE;
2256
  ALTER TABLE "PACKAGES" MODIFY ("PKG_NAME" NOT NULL ENABLE);
2257
  ALTER TABLE "PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2258
/
2259
--------------------------------------------------------
2260
--  Constraints for Table PACKAGE_BUILD_ENV
2261
--------------------------------------------------------
2262
 
2263
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("BE_ID" NOT NULL ENABLE);
2264
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("PV_ID" NOT NULL ENABLE);
2265
/
2266
--------------------------------------------------------
2267
--  Constraints for Table PACKAGE_BUILD_INFO
2268
--------------------------------------------------------
2269
 
2270
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("BM_ID" NOT NULL ENABLE);
2271
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("PV_ID" NOT NULL ENABLE);
2272
/
2273
--------------------------------------------------------
2274
--  Constraints for Table PACKAGE_DEPENDENCIES
2275
--------------------------------------------------------
2276
 
2277
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2278
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPKG_ID" NOT NULL ENABLE);
2279
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2280
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPV_ID" NOT NULL ENABLE);
2281
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
2282
/
2283
--------------------------------------------------------
2284
--  Constraints for Table PACKAGE_DOCUMENTS
2285
--------------------------------------------------------
2286
 
2287
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2288
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_ID" NOT NULL ENABLE);
2289
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2290
/
2291
--------------------------------------------------------
2292
--  Constraints for Table PACKAGE_INTEREST
2293
--------------------------------------------------------
2294
 
2295
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("USER_ID" NOT NULL ENABLE);
2296
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2297
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PKG_ID" NOT NULL ENABLE);
2298
/
2299
--------------------------------------------------------
2300
--  Constraints for Table PACKAGE_METRICS
2301
--------------------------------------------------------
2302
 
2303
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") ENABLE;
2304
  ALTER TABLE "PACKAGE_METRICS" MODIFY ("PV_ID" NOT NULL ENABLE);
2305
/
2306
--------------------------------------------------------
2307
--  Constraints for Table PACKAGE_PATCHES
2308
--------------------------------------------------------
2309
 
2310
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("INSTALL_ORDER" NOT NULL ENABLE);
2311
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PATCH_ID" NOT NULL ENABLE);
2312
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PV_ID" NOT NULL ENABLE);
2313
/
2314
--------------------------------------------------------
2315
--  Constraints for Table PACKAGE_PROCESSES
2316
--------------------------------------------------------
2317
 
2318
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
2319
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PV_ID" NOT NULL ENABLE);
2320
/
2321
--------------------------------------------------------
2322
--  Constraints for Table PACKAGE_VERSIONS
2323
--------------------------------------------------------
2324
 
2325
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") ENABLE;
2326
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2327
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("LAST_PV_ID" NOT NULL ENABLE);
2328
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2329
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
2330
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
2331
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("DLOCKED" NOT NULL ENABLE);
2332
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_VERSION" NOT NULL ENABLE);
2333
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_ID" NOT NULL ENABLE);
2334
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2335
/
2336
--------------------------------------------------------
2337
--  Constraints for Table PEGGED_VERSIONS
2338
--------------------------------------------------------
2339
 
2340
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2341
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2342
/
2343
--------------------------------------------------------
2344
--  Constraints for Table PLANNED
2345
--------------------------------------------------------
2346
 
2347
  ALTER TABLE "PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") ENABLE;
2348
  ALTER TABLE "PLANNED" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2349
  ALTER TABLE "PLANNED" MODIFY ("PV_ID" NOT NULL ENABLE);
2350
  ALTER TABLE "PLANNED" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2351
/
2352
--------------------------------------------------------
2353
--  Constraints for Table PLATFORMS
2354
--------------------------------------------------------
2355
 
2356
  ALTER TABLE "PLATFORMS" MODIFY ("NAME" NOT NULL ENABLE);
2357
  ALTER TABLE "PLATFORMS" MODIFY ("CODE" NOT NULL ENABLE);
2358
/
2359
--------------------------------------------------------
2360
--  Constraints for Table PROCESSES
2361
--------------------------------------------------------
2362
 
2363
  ALTER TABLE "PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") ENABLE;
2364
  ALTER TABLE "PROCESSES" MODIFY ("PROC_NAME" NOT NULL ENABLE);
2365
  ALTER TABLE "PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
2366
/
2367
--------------------------------------------------------
2368
--  Constraints for Table PRODUCT_COMPONENTS
2369
--------------------------------------------------------
2370
 
2371
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
2372
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2373
/
2374
--------------------------------------------------------
2375
--  Constraints for Table PRODUCT_STATES
2376
--------------------------------------------------------
2377
 
2378
  ALTER TABLE "PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") ENABLE;
2379
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE" NOT NULL ENABLE);
2380
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
2381
/
2382
--------------------------------------------------------
2383
--  Constraints for Table PROJECTS
2384
--------------------------------------------------------
2385
 
2386
  ALTER TABLE "PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
2387
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
2388
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2389
/
2390
--------------------------------------------------------
2391
--  Constraints for Table PROJECT_ACTION_LOG
2392
--------------------------------------------------------
2393
 
2394
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2395
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2396
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2397
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2398
/
2399
--------------------------------------------------------
2400
--  Constraints for Table PROJECT_EXTENTIONS
2401
--------------------------------------------------------
2402
 
2403
  ALTER TABLE "PROJECT_EXTENTIONS" MODIFY ("EXT_NAME" NOT NULL ENABLE);
2404
/
2405
--------------------------------------------------------
2406
--  Constraints for Table RELEASE_COMPONENTS
2407
--------------------------------------------------------
2408
 
2409
  ALTER TABLE "RELEASE_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2410
/
2411
--------------------------------------------------------
2412
--  Constraints for Table RELEASE_CONFIG
2413
--------------------------------------------------------
2414
 
2415
  ALTER TABLE "RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") ENABLE;
2416
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2417
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2418
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2419
/
2420
--------------------------------------------------------
2421
--  Constraints for Table RELEASE_CONTENT
2422
--------------------------------------------------------
2423
 
2424
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PKG_STATE" NOT NULL ENABLE);
2425
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERTOR_ID" NOT NULL ENABLE);
2426
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERT_STAMP" NOT NULL ENABLE);
2427
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("BASE_VIEW_ID" NOT NULL ENABLE);
2428
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PV_ID" NOT NULL ENABLE);
2429
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2430
/
2431
--------------------------------------------------------
2432
--  Constraints for Table RELEASE_LINKS
2433
--------------------------------------------------------
2434
 
2435
  ALTER TABLE "RELEASE_LINKS" MODIFY ("REF_RTAG_ID" NOT NULL ENABLE);
2436
  ALTER TABLE "RELEASE_LINKS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2437
/
2438
--------------------------------------------------------
2439
--  Constraints for Table RELEASE_METRICS
2440
--------------------------------------------------------
2441
 
2442
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") ENABLE;
2443
  ALTER TABLE "RELEASE_METRICS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2444
/
2445
--------------------------------------------------------
2446
--  Constraints for Table RELEASE_TAGS
2447
--------------------------------------------------------
2448
 
2449
  ALTER TABLE "RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") ENABLE;
2450
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2451
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PARENT_RTAG_ID" NOT NULL ENABLE);
2452
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_STAMP" NOT NULL ENABLE);
2453
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_ENV" NOT NULL ENABLE);
2454
  ALTER TABLE "RELEASE_TAGS" MODIFY ("OFFICIAL" NOT NULL ENABLE);
2455
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_NAME" NOT NULL ENABLE);
2456
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2457
/
2458
--------------------------------------------------------
2459
--  Constraints for Table REPEAT_SCHEDULE
2460
--------------------------------------------------------
2461
 
2462
  ALTER TABLE "REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") ENABLE;
2463
/
2464
--------------------------------------------------------
2465
--  Constraints for Table RIPPLE_FIELD_STATES
2466
--------------------------------------------------------
2467
 
2468
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ACRONYM" NOT NULL DISABLE);
2469
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
2470
/
2471
--------------------------------------------------------
2472
--  Constraints for Table RUNTIME_DEPENDENCIES
2473
--------------------------------------------------------
2474
 
2475
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2476
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2477
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
2478
/
2479
--------------------------------------------------------
2480
--  Constraints for Table RUN_LEVEL_SCHEDULE
2481
--------------------------------------------------------
2482
 
2483
  ALTER TABLE "RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") ENABLE;
2484
  ALTER TABLE "RUN_LEVEL_SCHEDULE" MODIFY ("SCHEDULED_ID" NOT NULL ENABLE);
2485
/
2486
--------------------------------------------------------
2487
--  Constraints for Table TEMP_ENV_STATES
2488
--------------------------------------------------------
2489
 
2490
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("TES_STATE" NOT NULL ENABLE);
2491
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2492
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PV_ID" NOT NULL ENABLE);
2493
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("LEVEL_NUM" NOT NULL ENABLE);
2494
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("SESSION_NUM" NOT NULL ENABLE);
2495
/
2496
--------------------------------------------------------
2497
--  Constraints for Table TEST_TYPES
2498
--------------------------------------------------------
2499
 
2500
  ALTER TABLE "TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
2501
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
2502
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
2503
/
2504
--------------------------------------------------------
2505
--  Constraints for Table UNIT_TESTS
2506
--------------------------------------------------------
2507
 
2508
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
2509
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2510
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
2511
/
2512
--------------------------------------------------------
2513
--  Constraints for Table VALIDATION_RULES
2514
--------------------------------------------------------
2515
 
2516
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
2517
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
2518
/
2519
--------------------------------------------------------
2520
--  Constraints for Table VCS_TYPE
2521
--------------------------------------------------------
2522
 
2523
  ALTER TABLE "VCS_TYPE" ADD CONSTRAINT "VCS_TYPE_PK" PRIMARY KEY ("VCS_TYPE_ID") ENABLE;
2524
  ALTER TABLE "VCS_TYPE" MODIFY ("TAG" NOT NULL ENABLE);
2525
  ALTER TABLE "VCS_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2526
  ALTER TABLE "VCS_TYPE" MODIFY ("VCS_TYPE_ID" NOT NULL ENABLE);
2527
/
2528
--------------------------------------------------------
2529
--  Constraints for Table VIEWS
2530
--------------------------------------------------------
2531
 
2532
  ALTER TABLE "VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") ENABLE;
2533
  ALTER TABLE "VIEWS" MODIFY ("PUBLIC_READ" NOT NULL ENABLE);
2534
  ALTER TABLE "VIEWS" MODIFY ("BASE_VIEW" NOT NULL ENABLE);
2535
  ALTER TABLE "VIEWS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2536
  ALTER TABLE "VIEWS" MODIFY ("VIEW_NAME" NOT NULL ENABLE);
2537
  ALTER TABLE "VIEWS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2538
/
2539
--------------------------------------------------------
2540
--  Constraints for Table VIEW_DEF
2541
--------------------------------------------------------
2542
 
2543
  ALTER TABLE "VIEW_DEF" MODIFY ("PKG_ID" NOT NULL ENABLE);
2544
  ALTER TABLE "VIEW_DEF" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2545
/
2546
--------------------------------------------------------
2547
--  Constraints for Table VIEW_SETTINGS
2548
--------------------------------------------------------
2549
 
2550
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2551
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("USER_ID" NOT NULL ENABLE);
2552
/
2553
--------------------------------------------------------
2554
--  Constraints for Table VTREES
2555
--------------------------------------------------------
2556
 
2557
  ALTER TABLE "VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") ENABLE;
2558
  ALTER TABLE "VTREES" MODIFY ("HIDE" NOT NULL ENABLE);
2559
  ALTER TABLE "VTREES" MODIFY ("VTREE_NAME" NOT NULL ENABLE);
2560
  ALTER TABLE "VTREES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2561
  ALTER TABLE "VTREES" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2562
/
2563
--------------------------------------------------------
2564
--  Constraints for Table VTREES_WORLD
2565
--------------------------------------------------------
2566
 
2567
  ALTER TABLE "VTREES_WORLD" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2568
  ALTER TABLE "VTREES_WORLD" MODIFY ("WORLD_ID" NOT NULL ENABLE);
2569
/
2570
--------------------------------------------------------
2571
--  Constraints for Table WORK_IN_PROGRESS
2572
--------------------------------------------------------
2573
 
2574
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2575
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("PV_ID" NOT NULL ENABLE);
2576
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2577
/
2578
--------------------------------------------------------
2579
--  Constraints for Table WORLDS
2580
--------------------------------------------------------
2581
 
2582
  ALTER TABLE "WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") ENABLE;
2583
  ALTER TABLE "WORLDS" MODIFY ("WORLD_NAME" NOT NULL ENABLE);
2584
  ALTER TABLE "WORLDS" MODIFY ("WORLD_ID" NOT NULL ENABLE);
2585
/
2586
--------------------------------------------------------
2587
--  Ref Constraints for Table ABT_ACTION_LOG
2588
--------------------------------------------------------
2589
 
2590
  ALTER TABLE "ABT_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2591
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2592
/
2593
--------------------------------------------------------
2594
--  Ref Constraints for Table ACTION_LOG
2595
--------------------------------------------------------
2596
 
2597
  ALTER TABLE "ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE48" FOREIGN KEY ("ACTTYPE_ID")
2598
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2599
/
2600
--------------------------------------------------------
2601
--  Ref Constraints for Table ADDITIONAL_NOTES
2602
--------------------------------------------------------
2603
 
2604
  ALTER TABLE "ADDITIONAL_NOTES" ADD CONSTRAINT "FK_ADDITION_REF_PV_ID" FOREIGN KEY ("PV_ID")
2605
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2606
/
2607
--------------------------------------------------------
2608
--  Ref Constraints for Table ADVISORY_RIPPLE
2609
--------------------------------------------------------
2610
 
2611
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2612
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2613
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2614
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2615
/
2616
--------------------------------------------------------
2617
--  Ref Constraints for Table AUTOBUILD_FAILURE
2618
--------------------------------------------------------
2619
 
2620
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("PROJ_ID")
2621
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2622
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("VIEW_ID")
2623
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2624
/
2625
--------------------------------------------------------
2626
--  Ref Constraints for Table BUILD_ENV_DOCUMENTS
2627
--------------------------------------------------------
2628
 
2629
  ALTER TABLE "BUILD_ENV_DOCUMENTS" ADD CONSTRAINT "FK_BUILD_E_DOCS_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2630
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2631
/
2632
--------------------------------------------------------
2633
--  Ref Constraints for Table BUILD_MACHINE_CONFIG
2634
--------------------------------------------------------
2635
 
2636
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "FK_BM_GBE_ID" FOREIGN KEY ("GBE_ID")
2637
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2638
/
2639
--------------------------------------------------------
2640
--  Ref Constraints for Table BUILD_ORDER
2641
--------------------------------------------------------
2642
 
2643
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_PV_ID" FOREIGN KEY ("PV_ID")
2644
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2645
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2646
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2647
/
2648
--------------------------------------------------------
2649
--  Ref Constraints for Table BUILD_STANDARDS_ADDENDUM
2650
--------------------------------------------------------
2651
 
2652
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_R01" FOREIGN KEY ("BS_ID")
2653
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2654
/
2655
--------------------------------------------------------
2656
--  Ref Constraints for Table CODE_REVIEWS
2657
--------------------------------------------------------
2658
 
2659
  ALTER TABLE "CODE_REVIEWS" ADD CONSTRAINT "FK_CODE_REV_REF_PV_ID" FOREIGN KEY ("PV_ID")
2660
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2661
/
2662
--------------------------------------------------------
2663
--  Ref Constraints for Table CODE_REVIEW_URL
2664
--------------------------------------------------------
2665
 
2666
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PACKAGE_V_FK1" FOREIGN KEY ("PV_ID")
2667
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2668
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PROJECT_V_FK1" FOREIGN KEY ("PROJ_ID")
2669
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2670
/
2671
--------------------------------------------------------
2672
--  Ref Constraints for Table CQ_ISSUES
2673
--------------------------------------------------------
2674
 
2675
  ALTER TABLE "CQ_ISSUES" ADD CONSTRAINT "FK_CQ_PV_ID" FOREIGN KEY ("PV_ID")
2676
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2677
/
2678
--------------------------------------------------------
2679
--  Ref Constraints for Table DAEMON_ACTION_LOG
2680
--------------------------------------------------------
2681
 
2682
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2683
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2684
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("ACTTYPE_ID")
2685
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2686
/
2687
--------------------------------------------------------
2688
--  Ref Constraints for Table DAEMON_INSTRUCTIONS
2689
--------------------------------------------------------
2690
 
2691
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PV_ID_FK" FOREIGN KEY ("PV_ID")
2692
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2693
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_RTAG_ID_FK" FOREIGN KEY ("RTAG_ID")
2694
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2695
/
2696
--------------------------------------------------------
2697
--  Ref Constraints for Table DASH_BOARD
2698
--------------------------------------------------------
2699
 
2700
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("PROJ_ID")
2701
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2702
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("RTAG_ID")
2703
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2704
/
2705
--------------------------------------------------------
2706
--  Ref Constraints for Table DO_NOT_RIPPLE
2707
--------------------------------------------------------
2708
 
2709
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2710
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2711
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2712
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2713
/
2714
--------------------------------------------------------
2715
--  Ref Constraints for Table GBE_MACHTYPE
2716
--------------------------------------------------------
2717
 
2718
  ALTER TABLE "GBE_MACHTYPE" ADD CONSTRAINT "GBE_MACHTYPE_BUILD_MACHIN_FK1" FOREIGN KEY ("BM_ID")
2719
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2720
/
2721
--------------------------------------------------------
2722
--  Ref Constraints for Table IGNORE_WARNINGS
2723
--------------------------------------------------------
2724
 
2725
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_DPV_ID" FOREIGN KEY ("DPV_ID")
2726
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2727
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_PV_ID" FOREIGN KEY ("PV_ID")
2728
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2729
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2730
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2731
/
2732
--------------------------------------------------------
2733
--  Ref Constraints for Table JIRA_ISSUES
2734
--------------------------------------------------------
2735
 
2736
  ALTER TABLE "JIRA_ISSUES" ADD CONSTRAINT "FK_JIRA_PV_ID" FOREIGN KEY ("PV_ID")
2737
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2738
/
2739
--------------------------------------------------------
2740
--  Ref Constraints for Table LICENCING
2741
--------------------------------------------------------
2742
 
2743
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("PV_ID")
2744
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2745
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("LICENCE")
2746
	  REFERENCES "LICENCES" ("LICENCE") ENABLE;
2747
/
2748
--------------------------------------------------------
2749
--  Ref Constraints for Table MEMBERS_GROUP
2750
--------------------------------------------------------
2751
 
2752
  ALTER TABLE "MEMBERS_GROUP" ADD FOREIGN KEY ("GROUP_EMAIL_ID")
2753
	  REFERENCES "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") ENABLE;
2754
/
2755
--------------------------------------------------------
2756
--  Ref Constraints for Table NOTIFICATION_HISTORY
2757
--------------------------------------------------------
2758
 
2759
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NH_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2760
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2761
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NK_PV_ID" FOREIGN KEY ("PV_ID")
2762
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2763
/
2764
--------------------------------------------------------
2765
--  Ref Constraints for Table PACKAGE_BUILD_ENV
2766
--------------------------------------------------------
2767
 
2768
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2769
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2770
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_PKG_VERSION" FOREIGN KEY ("PV_ID")
2771
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2772
/
2773
--------------------------------------------------------
2774
--  Ref Constraints for Table PACKAGE_BUILD_INFO
2775
--------------------------------------------------------
2776
 
2777
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("PV_ID")
2778
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2779
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("BM_ID")
2780
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2781
/
2782
--------------------------------------------------------
2783
--  Ref Constraints for Table PACKAGE_DOCUMENTS
2784
--------------------------------------------------------
2785
 
2786
  ALTER TABLE "PACKAGE_DOCUMENTS" ADD CONSTRAINT "FK_PKGDOCS_REF_PV" FOREIGN KEY ("PV_ID")
2787
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2788
/
2789
--------------------------------------------------------
2790
--  Ref Constraints for Table PACKAGE_INTEREST
2791
--------------------------------------------------------
2792
 
2793
  ALTER TABLE "PACKAGE_INTEREST" ADD FOREIGN KEY ("PROJ_ID")
2794
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2795
/
2796
--------------------------------------------------------
2797
--  Ref Constraints for Table PACKAGE_METRICS
2798
--------------------------------------------------------
2799
 
2800
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "FK_PACKAGE_METRICS_PV_ID" FOREIGN KEY ("PV_ID")
2801
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2802
/
2803
--------------------------------------------------------
2804
--  Ref Constraints for Table PACKAGE_PATCHES
2805
--------------------------------------------------------
2806
 
2807
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PATCH_ID" FOREIGN KEY ("PATCH_ID")
2808
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2809
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PV_ID" FOREIGN KEY ("PV_ID")
2810
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2811
/
2812
--------------------------------------------------------
2813
--  Ref Constraints for Table PACKAGE_PROCESSES
2814
--------------------------------------------------------
2815
 
2816
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R01" FOREIGN KEY ("PV_ID")
2817
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2818
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R02" FOREIGN KEY ("PROC_ID")
2819
	  REFERENCES "PROCESSES" ("PROC_ID") ENABLE;
2820
/
2821
--------------------------------------------------------
2822
--  Ref Constraints for Table PACKAGE_VERSIONS
2823
--------------------------------------------------------
2824
 
2825
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PACKAGE_VERSIONS_VCS_TYPE" FOREIGN KEY ("VCS_TYPE_ID")
2826
	  REFERENCES "VCS_TYPE" ("VCS_TYPE_ID") ENABLE;
2827
  ALTER TABLE "PACKAGE_VERSIONS" ADD FOREIGN KEY ("BS_ID")
2828
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2829
/
2830
--------------------------------------------------------
2831
--  Ref Constraints for Table PEGGED_VERSIONS
2832
--------------------------------------------------------
2833
 
2834
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_PACKAG_FK1" FOREIGN KEY ("PV_ID")
2835
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2836
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_RELEAS_FK1" FOREIGN KEY ("RTAG_ID")
2837
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2838
/
2839
--------------------------------------------------------
2840
--  Ref Constraints for Table PLANNED
2841
--------------------------------------------------------
2842
 
2843
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFPACKAGE_VERSIONS54" FOREIGN KEY ("PV_ID")
2844
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2845
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFRELEASE_TAGS53" FOREIGN KEY ("RTAG_ID")
2846
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2847
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFVIEWS55" FOREIGN KEY ("VIEW_ID")
2848
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2849
/
2850
--------------------------------------------------------
2851
--  Ref Constraints for Table PLANNED_VERSIONS
2852
--------------------------------------------------------
2853
 
2854
  ALTER TABLE "PLANNED_VERSIONS" ADD FOREIGN KEY ("PKG_ID")
2855
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2856
/
2857
--------------------------------------------------------
2858
--  Ref Constraints for Table PRODUCT_COMPONENTS
2859
--------------------------------------------------------
2860
 
2861
  ALTER TABLE "PRODUCT_COMPONENTS" ADD CONSTRAINT "REFPACKAGE_VERSIONS49" FOREIGN KEY ("PV_ID")
2862
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2863
/
2864
--------------------------------------------------------
2865
--  Ref Constraints for Table PROJECT_ACTION_LOG
2866
--------------------------------------------------------
2867
 
2868
  ALTER TABLE "PROJECT_ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE63" FOREIGN KEY ("ACTTYPE_ID")
2869
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2870
  ALTER TABLE "PROJECT_ACTION_LOG" ADD FOREIGN KEY ("RTAG_ID")
2871
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") DISABLE;
2872
/
2873
--------------------------------------------------------
2874
--  Ref Constraints for Table RELEASE_COMPONENTS
2875
--------------------------------------------------------
2876
 
2877
  ALTER TABLE "RELEASE_COMPONENTS" ADD CONSTRAINT "FK_RCONT_PV_ID" FOREIGN KEY ("PV_ID")
2878
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2879
/
2880
--------------------------------------------------------
2881
--  Ref Constraints for Table RELEASE_CONFIG
2882
--------------------------------------------------------
2883
 
2884
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("RTAG_ID")
2885
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2886
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("GBE_ID")
2887
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2888
/
2889
--------------------------------------------------------
2890
--  Ref Constraints for Table RELEASE_CONTENT
2891
--------------------------------------------------------
2892
 
2893
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PKG_ID")
2894
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2895
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PRODUCT_STATE")
2896
	  REFERENCES "PRODUCT_STATES" ("STATE_ID") ENABLE;
2897
/
2898
--------------------------------------------------------
2899
--  Ref Constraints for Table RELEASE_LINKS
2900
--------------------------------------------------------
2901
 
2902
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS56" FOREIGN KEY ("RTAG_ID")
2903
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2904
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS58" FOREIGN KEY ("REF_RTAG_ID")
2905
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2906
/
2907
--------------------------------------------------------
2908
--  Ref Constraints for Table RELEASE_METRICS
2909
--------------------------------------------------------
2910
 
2911
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "FK_RELEASE_METRICS_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2912
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2913
/
2914
--------------------------------------------------------
2915
--  Ref Constraints for Table RUNTIME_DEPENDENCIES
2916
--------------------------------------------------------
2917
 
2918
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_PV_ID" FOREIGN KEY ("PV_ID")
2919
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2920
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_RTD_ID" FOREIGN KEY ("RTD_ID")
2921
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2922
/
2923
--------------------------------------------------------
2924
--  Ref Constraints for Table RUN_LEVEL
2925
--------------------------------------------------------
2926
 
2927
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("RCON_ID")
2928
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2929
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("CURRENT_PKG_ID_BEING_BUILT")
2930
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2931
/
2932
--------------------------------------------------------
2933
--  Ref Constraints for Table UNIT_TESTS
2934
--------------------------------------------------------
2935
 
2936
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_PV_ID" FOREIGN KEY ("PV_ID")
2937
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2938
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_TEST_TYPES" FOREIGN KEY ("TEST_TYPES_FK")
2939
	  REFERENCES "TEST_TYPES" ("TEST_TYPE_ID") ENABLE;
2940
/
2941
--------------------------------------------------------
2942
--  Ref Constraints for Table VTREES_WORLD
2943
--------------------------------------------------------
2944
 
2945
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_VTREE_ID" FOREIGN KEY ("VTREE_ID")
2946
	  REFERENCES "VTREES" ("VTREE_ID") ENABLE;
2947
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_WORLD_ID" FOREIGN KEY ("WORLD_ID")
2948
	  REFERENCES "WORLDS" ("WORLD_ID") ENABLE;
2949
/
2950
--------------------------------------------------------
2951
--  Ref Constraints for Table WORK_IN_PROGRESS
2952
--------------------------------------------------------
2953
 
2954
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFPACKAGE_VERSIONS51" FOREIGN KEY ("PV_ID")
2955
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2956
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFRELEASE_TAGS50" FOREIGN KEY ("RTAG_ID")
2957
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2958
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFVIEWS52" FOREIGN KEY ("VIEW_ID")
2959
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2960
/
2961
--------------------------------------------------------
2962
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
2963
--------------------------------------------------------
2964
 
1373 dpurdie 2965
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
2966
 
2967
/* ---------------------------------------------------------------------------
2968
    Version: 3.0.0
2969
   --------------------------------------------------------------------------- */
2970
 
2971
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
2972
	ProjId NUMBER;
2973
	RowCount NUMBER;
2974
	cReleaseMode CHAR(1);
2975
 
2976
BEGIN
2977
 
2978
	--RETURN 1;
2979
 
2980
 
2981
	/*--------------- Business Rules Here -------------------*/
2982
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
2983
		RETURN 0;
2984
	END IF;
2985
	/*-------------------------------------------------------*/
2986
 
2987
 
2988
 
2989
 
2990
 
2991
 
2992
	/*-- First Check. See if package is used through release reference --*/
2993
	SELECT COUNT(rc.PV_ID) INTO RowCount
2994
	  FROM (
2995
	  		SELECT rl.REF_RTAG_ID
2996
			  FROM RELEASE_LINKS rl
2997
			 WHERE rl.RTAG_ID = nRtagId
2998
	  		) rl,
2999
			RELEASE_CONTENT rc
3000
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
3001
	    AND rc.PV_ID = nPvId;			
3002
 
3003
 
3004
	-- Decide if package can be edited  
3005
	IF RowCount > 0 THEN
3006
		-- Package is referenced from other release, hence cannot be edited
3007
		RETURN 0;	
3008
 
3009
	ELSE
3010
 
3011
		-- Check is only done for releases in restrictive mode
3012
		SELECT rt.OFFICIAL INTO cReleaseMode
3013
		  FROM RELEASE_TAGS rt
3014
		 WHERE rt.RTAG_ID = nRtagId;
3015
 
3016
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
3017
			-- Do not do any firther checking,
3018
			-- Package is editable here
3019
			RETURN 1;
3020
		END IF;	
3021
 
3022
	END IF;
3023
 
3024
 
3025
 
3026
 
3027
	/*-- Further checking --*/
3028
	-- Get proj_id
3029
	SELECT rt.PROJ_ID  INTO  ProjId
3030
	  FROM RELEASE_TAGS rt
3031
	 WHERE rt.RTAG_ID = nRtagId;
3032
 
3033
 
3034
 
3035
	BEGIN
3036
 
3037
		-- Get v_ext
3038
		SELECT pv.V_EXT  INTO  Vext
3039
		  FROM PACKAGE_VERSIONS pv
3040
		 WHERE pv.PV_ID = nPvId;  
3041
 
3042
		EXCEPTION
3043
	    	WHEN NO_DATA_FOUND THEN
3044
	       		Vext := NULL;
3045
 
3046
	END;	 
3047
 
3048
 
3049
	--Temp Hack for Step Project
3050
	IF ProjId != 281 THEN
3051
		-- Find if package can be edited in this project
3052
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
3053
	 		FROM PROJECT_EXTENTIONS pe
3054
			WHERE pe.PROJ_ID != ProjId  
3055
	  		AND pe.EXT_NAME = VExt;
3056
	END IF;		
3057
 
3058
 
3059
	-- Decide if package can be edited  
3060
	IF RowCount > 0 THEN
3061
		-- Package extension is found in other projects, hece NOT EDITABLE
3062
		RETURN 0;
3063
	ELSE
3064
		RETURN 1;	
3065
	END IF;
3066
 
3067
 
3068
END CAN_EDIT_PKG_IN_PROJECT;
4040 dpurdie 3069
 
1374 dpurdie 3070
/
1373 dpurdie 3071
 
4040 dpurdie 3072
/
3073
--------------------------------------------------------
3074
--  DDL for Function DT_ADDUSEROBJECT
3075
--------------------------------------------------------
3076
 
3959 dpurdie 3077
  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 3078
 
3959 dpurdie 3079
/
3080
 
4040 dpurdie 3081
/
3082
--------------------------------------------------------
3083
--  DDL for Function GET_AUTOMATED_LABEL
3084
--------------------------------------------------------
3085
 
3959 dpurdie 3086
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
3087
 
3088
/* ---------------------------------------------------------------------------
3089
    Version: 3.0.0
3090
   --------------------------------------------------------------------------- */
3091
 
3092
	sPkgName VARCHAR2(4000);
3093
	sVext VARCHAR2(4000);
3094
 
1373 dpurdie 3095
BEGIN
3096
 
3959 dpurdie 3097
	-- Get package details
3098
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
3099
	  FROM PACKAGE_VERSIONS pv,
3100
	  	   PACKAGES pkg
3101
	 WHERE pv.PKG_ID = pkg.PKG_ID
3102
	   AND pv.PV_ID = nPvId;
3103
 
3104
 
3105
	-- Generate Label for automated build
3106
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
3107
 
3108
END GET_AUTOMATED_LABEL;
4040 dpurdie 3109
 
1374 dpurdie 3110
/
1373 dpurdie 3111
 
4040 dpurdie 3112
/
3113
--------------------------------------------------------
3114
--  DDL for Function GET_BUILD_NUMBER
3115
--------------------------------------------------------
3116
 
1373 dpurdie 3117
  CREATE OR REPLACE FUNCTION "GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
3118
IS
3119
/* ---------------------------------------------------------------------------
3120
    Version: 1.0.0
3121
   --------------------------------------------------------------------------- */
3122
BEGIN
3123
    IF is_number(s_version) AND LENGTH(s_version) > 3
3124
    THEN
3125
        RETURN MOD(TO_NUMBER(s_version), 1000);
3126
    ELSE
3127
        RETURN 0;
3128
    END IF;
3129
END get_build_number;
4040 dpurdie 3130
 
1374 dpurdie 3131
/
1373 dpurdie 3132
 
4040 dpurdie 3133
/
3134
--------------------------------------------------------
3135
--  DDL for Function GET_PATCH_VERSION
3136
--------------------------------------------------------
3137
 
3959 dpurdie 3138
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
1373 dpurdie 3139
IS
3140
/* ---------------------------------------------------------------------------
3959 dpurdie 3141
    Version: 1.0.0
1373 dpurdie 3142
   --------------------------------------------------------------------------- */
3143
BEGIN
3959 dpurdie 3144
    IF is_number(s_version) AND LENGTH(s_version) > 3
1373 dpurdie 3145
    THEN
3959 dpurdie 3146
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
1373 dpurdie 3147
    ELSE
3959 dpurdie 3148
        RETURN s_version;
1373 dpurdie 3149
    END IF;
3959 dpurdie 3150
END get_patch_version;
4040 dpurdie 3151
 
1374 dpurdie 3152
/
1373 dpurdie 3153
 
4040 dpurdie 3154
/
3155
--------------------------------------------------------
3156
--  DDL for Function GET_PV_FIRST_MODIFIED
3157
--------------------------------------------------------
3158
 
3959 dpurdie 3159
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
3160
  ret DATE;
1373 dpurdie 3161
BEGIN
3959 dpurdie 3162
  SELECT q.modified_stamp
3163
    INTO ret
3164
    FROM (
3165
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
3166
              FROM package_versions pvc
3167
              START WITH pvc.pv_id = v_pv_id
3168
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
3169
          ) Q
3170
  WHERE q.change_type IS NOT NULL
3171
    AND rownum = 1
3172
  ORDER BY q.lvl;
3173
 
3174
  RETURN ret;
3175
END;
4040 dpurdie 3176
 
1374 dpurdie 3177
/
1373 dpurdie 3178
 
4040 dpurdie 3179
/
3180
--------------------------------------------------------
3181
--  DDL for Function GET_V_EXT
3182
--------------------------------------------------------
3183
 
3959 dpurdie 3184
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
3185
 
1373 dpurdie 3186
/* ---------------------------------------------------------------------------
3959 dpurdie 3187
    Version: 3.0.0
1373 dpurdie 3188
   --------------------------------------------------------------------------- */
3959 dpurdie 3189
 
3190
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
3191
    lastDot NUMBER;
3192
 
1373 dpurdie 3193
BEGIN
3959 dpurdie 3194
    lastDot := INSTR (SSpkg_version, '.', -1);
3195
 
3196
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
1373 dpurdie 3197
    THEN
3959 dpurdie 3198
        -- YES dot separator found --
3199
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
3200
 
3201
        IF IS_VERSION_EXTENSION ( SSV_EXT )
3202
        THEN
3203
            RETURN SSV_EXT;
3204
        ELSE
3205
            RETURN NULL;
3206
        END IF;
3207
 
1373 dpurdie 3208
    ELSE
3959 dpurdie 3209
        -- NO dot separator found --
3210
        RETURN NULL;
1373 dpurdie 3211
    END IF;
3959 dpurdie 3212
 
3213
END GET_V_EXT;
4040 dpurdie 3214
 
1374 dpurdie 3215
/
1373 dpurdie 3216
 
4040 dpurdie 3217
/
3218
--------------------------------------------------------
3219
--  DDL for Function IN_LIST_NUMBER
3220
--------------------------------------------------------
3221
 
3959 dpurdie 3222
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3223
 
3224
/* ---------------------------------------------------------------------------
3225
    Version: 3.0.0
3226
   --------------------------------------------------------------------------- */
3227
 
3228
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3229
	pos				   NUMBER;
3959 dpurdie 3230
	in_list			   VARCHAR2(4000) := sInList || ',';
1373 dpurdie 3231
 
3232
BEGIN
3233
 
3234
	IF NOT sInList IS NULL
3235
	THEN
3236
		LOOP
3237
	        EXIT WHEN in_list IS NULL;
3238
	        pos := INSTR ( in_list, ',' );
3239
	        sync_rtags.extend;
3240
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3241
	        in_list := SUBSTR ( in_list, pos+1 );
3242
		END LOOP;
3243
	END IF;
3244
 
3245
	RETURN sync_rtags;
3959 dpurdie 3246
END IN_LIST_NUMBER;
4040 dpurdie 3247
 
1374 dpurdie 3248
/
1373 dpurdie 3249
 
4040 dpurdie 3250
/
3251
--------------------------------------------------------
3252
--  DDL for Function IN_LIST_NUMBER2
3253
--------------------------------------------------------
3254
 
3959 dpurdie 3255
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3256
 
3257
/* ---------------------------------------------------------------------------
3258
    Version: 3.0.0
3259
   --------------------------------------------------------------------------- */
3260
 
3261
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3262
	pos				   NUMBER;
3959 dpurdie 3263
	in_list			   VARCHAR2(32767) := sInList || ',';
1373 dpurdie 3264
 
3265
BEGIN
3266
 
3267
	IF NOT sInList IS NULL
3268
	THEN
3269
		LOOP
3270
	        EXIT WHEN in_list IS NULL;
3271
	        pos := INSTR ( in_list, ',' );
3272
	        sync_rtags.extend;
3273
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3274
	        in_list := SUBSTR ( in_list, pos+1 );
3275
		END LOOP;
3276
	END IF;
3277
 
3278
	RETURN sync_rtags;
3959 dpurdie 3279
END IN_LIST_NUMBER2;
4040 dpurdie 3280
 
1374 dpurdie 3281
/
1373 dpurdie 3282
 
4040 dpurdie 3283
/
3284
--------------------------------------------------------
3285
--  DDL for Function IN_LIST_VARCHAR2
3286
--------------------------------------------------------
3287
 
1373 dpurdie 3288
  CREATE OR REPLACE FUNCTION "IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3289
 
3290
/* ---------------------------------------------------------------------------
3291
    Version: 3.1
3292
   --------------------------------------------------------------------------- */
3293
 
3294
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3295
	pos				   NUMBER;
3296
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3297
	val				   VARCHAR2(4000);
3298
 
3299
BEGIN
3300
 
3301
	IF NOT sInList IS NULL
3302
	THEN
3303
		LOOP
3304
	        EXIT WHEN in_list IS NULL;
3305
	        pos := INSTR ( in_list, cSeparator );
3306
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3307
 
3308
			IF (NOT val IS NULL) THEN
3309
		        cItemCollection.extend;
3310
		        cItemCollection(cItemCollection.count) := val;
3311
			END IF;
3312
 
3313
	        in_list := SUBSTR ( in_list, pos+1 );
3314
		END LOOP;
3315
	END IF;
3316
 
3317
	RETURN cItemCollection;
3318
END IN_LIST_VARCHAR2;
4040 dpurdie 3319
 
1374 dpurdie 3320
/
1373 dpurdie 3321
 
4040 dpurdie 3322
/
3323
--------------------------------------------------------
3324
--  DDL for Function IS_NUMBER
3325
--------------------------------------------------------
3326
 
3959 dpurdie 3327
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3328
IS
3329
   temp_num NUMBER;
3330
/* ---------------------------------------------------------------------------
3331
    Version: 1.0.0
3332
   --------------------------------------------------------------------------- */
3333
BEGIN
3334
   temp_num := TO_NUMBER(p_val);
3335
   RETURN true;
3336
EXCEPTION WHEN VALUE_ERROR THEN
3337
   RETURN false;
3338
END IS_NUMBER;
4040 dpurdie 3339
 
3959 dpurdie 3340
/
1373 dpurdie 3341
 
4040 dpurdie 3342
/
3343
--------------------------------------------------------
3344
--  DDL for Function IS_VERSION_EXTENSION
3345
--------------------------------------------------------
3346
 
3959 dpurdie 3347
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3348
IS
3349
/* ---------------------------------------------------------------------------
3350
    Version: 3.0.0
3351
   --------------------------------------------------------------------------- */
1373 dpurdie 3352
 
3959 dpurdie 3353
BEGIN
3354
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3355
    THEN
3356
        RETURN FALSE;
3357
    ELSE
3358
        RETURN TRUE;
3359
    END IF;
1373 dpurdie 3360
 
3959 dpurdie 3361
END IS_VERSION_EXTENSION;
4040 dpurdie 3362
 
1374 dpurdie 3363
/
1373 dpurdie 3364
 
4040 dpurdie 3365
/
3366
--------------------------------------------------------
3367
--  DDL for Function ORA_SYSDATE
3368
--------------------------------------------------------
3369
 
3959 dpurdie 3370
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
3371
RETURN DATE
1373 dpurdie 3372
IS
3959 dpurdie 3373
/* ---------------------------------------------------------------------------
3374
    Version: 3.0.0
3375
   --------------------------------------------------------------------------- */
3376
BEGIN
1373 dpurdie 3377
 
3959 dpurdie 3378
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3379
END ORA_SYSDATE;
4040 dpurdie 3380
 
3959 dpurdie 3381
/
1373 dpurdie 3382
 
4040 dpurdie 3383
/
3384
--------------------------------------------------------
3385
--  DDL for Function ORA_SYSDATETIME
3386
--------------------------------------------------------
3387
 
3959 dpurdie 3388
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
3389
RETURN DATE
3390
IS
3391
/* ---------------------------------------------------------------------------
3392
    Version: 3.0.0
3393
   --------------------------------------------------------------------------- */
3394
BEGIN
1373 dpurdie 3395
 
3959 dpurdie 3396
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3397
END ORA_SYSDATETIME;
4040 dpurdie 3398
 
3959 dpurdie 3399
/
1373 dpurdie 3400
 
4040 dpurdie 3401
/
3402
--------------------------------------------------------
3403
--  DDL for Function PERL_DBD_TESTFUNC
3404
--------------------------------------------------------
3405
 
3959 dpurdie 3406
  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 3407
 
1374 dpurdie 3408
/
1373 dpurdie 3409
 
4040 dpurdie 3410
/
3411
--------------------------------------------------------
3412
--  DDL for Function RELEASE_MODE
3413
--------------------------------------------------------
3414
 
3959 dpurdie 3415
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
1373 dpurdie 3416
 
3959 dpurdie 3417
/* ---------------------------------------------------------------------------
3418
    Version: 3.0.0
3419
   --------------------------------------------------------------------------- */
1373 dpurdie 3420
 
3959 dpurdie 3421
   returnValue CHAR(1);
1373 dpurdie 3422
 
3959 dpurdie 3423
BEGIN
1373 dpurdie 3424
 
3959 dpurdie 3425
    /*--------------- Business Rules Here -------------------*/
3426
	/*-------------------------------------------------------*/
3427
 
3428
	-- Get release mode
3429
	SELECT rt.OFFICIAL INTO returnValue
3430
	  FROM RELEASE_TAGS rt
3431
	 WHERE rt.RTAG_ID = nRtagId;
3432
 
3433
	RETURN returnValue;
3434
 
3435
END RELEASE_MODE;
4040 dpurdie 3436
 
1374 dpurdie 3437
/
1373 dpurdie 3438
 
4040 dpurdie 3439
/
3440
--------------------------------------------------------
3441
--  DDL for Package PK_APP_UTILS
3442
--------------------------------------------------------
3443
 
1373 dpurdie 3444
  CREATE OR REPLACE PACKAGE "PK_APP_UTILS" IS
3445
/*
3446
------------------------------
3447
||  Last Modified:  S.Vukovic
3448
||  Modified Date:  26/Apr/2005
3449
||  Spec Version:   1.0
3450
------------------------------
3451
*/
3452
 
3453
	TYPE typeCur IS REF CURSOR;
3454
 
3455
    /*================================================================================================*/
3456
 
3457
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
3458
 
3459
	/*================================================================================================*/
3460
 
3461
END PK_APP_UTILS;
4040 dpurdie 3462
 
1374 dpurdie 3463
/
1373 dpurdie 3464
 
4040 dpurdie 3465
/
3466
--------------------------------------------------------
3467
--  DDL for Package PK_ARCHIVE
3468
--------------------------------------------------------
3469
 
3959 dpurdie 3470
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1373 dpurdie 3471
IS
3959 dpurdie 3472
/*
3473
------------------------------
3474
||  Author:  Rupesh Solanki
3475
||  Date:    26 October 2006
3476
||  Version:   1.0
3477
------------------------------
3478
*/
1373 dpurdie 3479
 
3959 dpurdie 3480
   /*================================================================================================*/
3481
   PROCEDURE populate_packages_table;
3482
 
3483
   PROCEDURE populate_archive_data_table (
3484
      nrtagid   IN   release_tags.rtag_id%TYPE
3485
   );
1373 dpurdie 3486
 
3959 dpurdie 3487
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1373 dpurdie 3488
 
3959 dpurdie 3489
   PROCEDURE migrate_rtag_to_archive_schema (
3490
      nrtagid   IN   release_tags.rtag_id%TYPE
3491
   );
1373 dpurdie 3492
 
3959 dpurdie 3493
   PROCEDURE clean_up_archive_data_table (
3494
      nrtagid   IN   release_tags.rtag_id%TYPE
3495
   );
1373 dpurdie 3496
 
3959 dpurdie 3497
   PROCEDURE write_action_log (
3498
      nuserid   IN   NUMBER,
3499
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 3500
   );
3501
/*================================================================================================*/
3959 dpurdie 3502
END pk_archive;
4040 dpurdie 3503
 
1374 dpurdie 3504
/
1373 dpurdie 3505
 
4040 dpurdie 3506
/
3507
--------------------------------------------------------
3508
--  DDL for Package PK_BUILDAPI
3509
--------------------------------------------------------
3510
 
1373 dpurdie 3511
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI" 
3512
IS
3513
   /*================================================================================================*/
3514
   PROCEDURE add_product_component (
3515
      npvid           IN   NUMBER,
3516
      sosname         IN   VARCHAR2,
3517
      sorigfilepath   IN   VARCHAR2,
3518
      sfilename       IN   VARCHAR2,
3519
      sdestfilepath   IN   VARCHAR2,
3520
      nbytesize       IN   NUMBER,
3521
      scrccksum       IN   VARCHAR2
3522
   );
3523
 
3524
   PROCEDURE remove_all_product_components (
3525
      npvid     IN   NUMBER,
3526
      sosname   IN   VARCHAR2
3527
   );
3528
 
3529
   /*================================================================================================*/
3530
   FUNCTION get_osid (sosname IN VARCHAR2)
3531
      RETURN NUMBER;
3532
 
3533
   /*================================================================================================*/
3534
   PROCEDURE update_build_service (
3535
      sdatabaseserver   IN   VARCHAR2,
3536
      swebserver        IN   VARCHAR2,
3537
      smailserver       IN   VARCHAR2,
3538
      smailsender       IN   VARCHAR2,
3539
      sdiskspace        IN   VARCHAR2,
3540
      ssbommanagement   IN   VARCHAR2
3541
   );
3542
 
3543
   /*================================================================================================*/
3544
   PROCEDURE update_build_service_info (
3545
      sdatabaseserver   IN   VARCHAR2,
3546
      sarchiveserver    IN   VARCHAR2,
3547
      smailserver       IN   VARCHAR2,
3548
      smailsender       IN   VARCHAR2,
3549
      sdiskspace        IN   VARCHAR2,
3550
      ssbommanagement   IN   VARCHAR2
3551
   );
3552
 
3553
   /*================================================================================================*/
4040 dpurdie 3554
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3555
 
3556
   /*================================================================================================*/
3557
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
3558
 
3559
   /*================================================================================================*/
4040 dpurdie 3560
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3561
 
4040 dpurdie 3562
  /*================================================================================================*/
3563
   PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2);
3564
 
1373 dpurdie 3565
   /*================================================================================================*/
4040 dpurdie 3566
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER);
3567
 
3568
   /*================================================================================================*/
3569
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2);
3570
 
3571
   /*================================================================================================*/
1373 dpurdie 3572
   PROCEDURE add_daemon (
3573
      sdaemonhostname   IN   VARCHAR2,
3574
      nrtagid           IN   NUMBER,
3575
      ngbeid            IN   NUMBER,
3576
      sgbebuildfilter   IN   VARCHAR2
3577
   );
3578
 
3579
   /*================================================================================================*/
3580
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
3581
 
3582
   /*================================================================================================*/
3583
   PROCEDURE update_daemon (
3584
      sdaemonhostname   IN   VARCHAR2,
3585
      nrconid           IN   NUMBER,
3586
      ngbeid            IN   NUMBER,
3587
      sgbebuildfilter   IN   VARCHAR2
3588
   );
3589
 
3590
   /*================================================================================================*/
3591
   PROCEDURE insert_schedule_info (
3592
      dschedulepause     IN   DATE,
3593
      dscheduleresume    IN   DATE,
3594
      crepeat            IN   VARCHAR2,
3595
      cindefinitepause   IN   VARCHAR2
3596
   );
3597
 
3598
   /*================================================================================================*/
3599
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
3600
 
3601
   /*================================================================================================*/
3602
   PROCEDURE set_infinite_pause;
3603
 
3604
   /*================================================================================================*/
3605
   PROCEDURE set_resume;
3606
 
3607
   /*================================================================================================*/
3608
   PROCEDURE delete_out_of_date_schedule;
3609
 
3610
   /*================================================================================================*/
3611
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
3612
 
3613
   /*================================================================================================*/
3614
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
3615
 
3616
   /*================================================================================================*/
3617
   PROCEDURE set_daemon_disable (nrconid NUMBER);
3618
 
3619
   /*================================================================================================*/
3620
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER);
3621
 
3622
   /*================================================================================================*/
3623
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER );
3624
   /*================================================================================================*/
3625
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER );
3626
   /*================================================================================================*/
3627
   FUNCTION get_daemon_inst(
3628
      nRtag_id IN NUMBER,
3629
      nInst_id IN OUT NUMBER,
3630
      nOp_code IN OUT NUMBER,
3631
      nPv_id OUT NUMBER,
3632
      nUser_id OUT NUMBER,
3633
      nInProgress OUT NUMBER
3634
   ) RETURN NUMBER;
3635
   /*================================================================================================*/
3636
   PROCEDURE cleanup_stranded_daemon_insts;
3637
   /*================================================================================================*/
3638
   PROCEDURE insert_daemon_inst(
3639
      nOp_code IN NUMBER,
3640
      nRtag_id IN NUMBER,
3641
      nPv_id IN NUMBER,
3642
      nSchedDate IN DATE,
3643
      nRepeatSecs IN NUMBER,
3644
      nAddedDate IN DATE,
3645
      nUser_id IN NUMBER
3646
   );
3647
   /*================================================================================================*/
3648
   PROCEDURE del_daemon_inst( nInstId IN NUMBER );
3649
   /*================================================================================================*/
3650
   PROCEDURE del_daemon_inst_by_rtag_pvid(
3651
      nOp_code IN NUMBER,
3652
      nRtag_id IN NUMBER,
3653
      nPv_id IN NUMBER
3654
   );
3655
   /*================================================================================================*/
3656
   PROCEDURE update_daemon_inst(
3657
      nInstId IN NUMBER,
3658
      nOp_code IN NUMBER,
3659
      nRtag_id IN NUMBER,
3660
      nPv_id IN NUMBER,
3661
      nSchedDate IN DATE,
3662
      nRepeatSecs IN NUMBER,
3663
      nAddedDate IN DATE,
3664
      nUser_id IN NUMBER
3665
   );
3666
   /*================================================================================================*/
3667
   FUNCTION daemon_ops_for_rtag_pvid(
3668
      nRtag_id IN NUMBER,
3669
      nPv_id IN NUMBER
3670
   ) RETURN VARCHAR2;
3671
   /*================================================================================================*/
3672
   FUNCTION daemon_ops_for_rtag(
3673
      nRtag_id IN NUMBER
3674
   ) RETURN VARCHAR2;
3675
   /*================================================================================================*/
3676
   PROCEDURE add_daemon_config (
3677
      nrtagid           IN   NUMBER,
3678
      nbmcon_id         IN   NUMBER,
3679
      sdaemon_mode      IN   VARCHAR2,
3680
      sgbebuildfilter   IN   VARCHAR2
3681
   );
3682
   /*================================================================================================*/
3683
   PROCEDURE update_daemon_config (
3684
      nrconid           IN   NUMBER,
3685
      nbmcon_id         IN   NUMBER,
3686
      sdaemon_mode      IN   VARCHAR2,
3687
      sgbebuildfilter   IN   VARCHAR2
3688
   );
3689
 
3690
   /*================================================================================================*/
3691
   PROCEDURE add_build_machine (
3692
      sdisplay_name          IN   VARCHAR2,
3693
      smachine_hostname      IN   VARCHAR2,
3694
      ngbeid                 IN   NUMBER,
3695
      sdescription           IN   VARCHAR2
3696
   );
3697
   /*================================================================================================*/
3698
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2);
3699
   /*================================================================================================*/
3700
   PROCEDURE update_build_machine (
3701
      nbmcon_id              IN   NUMBER,
3702
      sdisplay_name          IN   VARCHAR2,
3703
      smachine_hostname      IN   VARCHAR2,
3704
      ngbeid                 IN   NUMBER,
3705
      sdescription           IN   VARCHAR2
3706
   );
3707
END pk_buildapi;
4040 dpurdie 3708
 
1374 dpurdie 3709
/
1373 dpurdie 3710
 
4040 dpurdie 3711
/
3712
--------------------------------------------------------
3713
--  DDL for Package PK_ENVIRONMENT
3714
--------------------------------------------------------
3715
 
3959 dpurdie 3716
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1373 dpurdie 3717
/*
3718
------------------------------
3959 dpurdie 3719
||  Last Modified:  G.Huddy
3720
||  Modified Date:  28/May/2008
3721
||  Spec Version:   1.2
1373 dpurdie 3722
------------------------------
3723
*/
3724
 
3959 dpurdie 3725
	TYPE typeCur IS REF CURSOR;
3726
 
1373 dpurdie 3727
	/*================================================================================================*/
3728
 
3959 dpurdie 3729
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
3730
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3731
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3732
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3733
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3734
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3735
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
3736
 
3737
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3738
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3739
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3740
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3741
 
3742
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3743
 
3744
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3745
 
3746
 
3747
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3748
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3749
 
3750
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3751
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3752
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3753
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3754
 
3755
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3756
 
3757
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
3758
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
3759
 
3760
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
3761
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
3762
							 CloneFromPvId IN NUMBER );
3763
 
3764
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3765
 
3766
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3767
 
3768
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3769
 
3770
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3771
 
3772
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1373 dpurdie 3773
	/*================================================================================================*/
3959 dpurdie 3774
 
3775
END PK_ENVIRONMENT;
4040 dpurdie 3776
 
1374 dpurdie 3777
/
1373 dpurdie 3778
 
4040 dpurdie 3779
/
3780
--------------------------------------------------------
3781
--  DDL for Package PK_LICENCING
3782
--------------------------------------------------------
3783
 
3959 dpurdie 3784
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
3785
/*
3786
------------------------------
3787
||  Last Modified:  G.Huddy
3788
||  Modified Date:  19/Aug/2008
3789
||  Spec Version:   1.0
3790
------------------------------
3791
*/
3792
 
3793
   TYPE typeCur IS REF CURSOR;
3794
 
3795
    /*================================================================================================*/
3796
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3797
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3798
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
3799
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
3800
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
3801
   /*================================================================================================*/
3802
 
3803
END PK_LICENCING;
4040 dpurdie 3804
 
3959 dpurdie 3805
/
3806
 
4040 dpurdie 3807
/
3808
--------------------------------------------------------
3809
--  DDL for Package PK_PACKAGE
3810
--------------------------------------------------------
3811
 
3959 dpurdie 3812
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1373 dpurdie 3813
IS
3814
/*
3815
------------------------------
3959 dpurdie 3816
||  Last Modified:  Jeremy Tweddle
3817
||  Modified Date:  24/08/2007
1373 dpurdie 3818
||
3819
------------------------------
3820
*/
3821
   TYPE typecur IS REF CURSOR;
3822
 
3823
/*================================================================================================*/
3824
   PROCEDURE new_version (
3825
      nlastpvid                   IN       NUMBER,
3826
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
3827
      cbuildtype                  IN       CHAR,
3828
      nsettopvid                  IN       NUMBER DEFAULT NULL,
3829
      nrtagid                     IN       NUMBER,
3830
      nuserid                     IN       NUMBER,
3831
      enumissues_state_imported   IN       NUMBER,
3832
      returnpvid                  OUT      NUMBER
3833
   );
3834
 
3835
   PROCEDURE change_state (
3836
      pvid       IN   NUMBER,
3837
      newstate   IN   package_versions.dlocked%TYPE,
3838
      userid     IN   NUMBER
3839
   );
3840
 
3841
   PROCEDURE new_patch (
3842
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
3843
      nparentpvid        IN       NUMBER,
3844
      spatchidlist       IN       VARCHAR2,
3845
      nuserid            IN       NUMBER,
3846
      returnpatchid      OUT      NUMBER
3847
   );
3848
 
3849
   PROCEDURE obsolete_patch (
3850
      patchid            IN   NUMBER,
3851
      isobsolete         IN   CHAR,
3852
      obsoletecomments   IN   VARCHAR2,
3853
      userid             IN   NUMBER
3854
   );
3855
 
3856
   PROCEDURE obsolete_patches (
3857
      spatchidlist       IN   VARCHAR2,
3858
      isobsolete         IN   CHAR,
3859
      obsoletecomments   IN   VARCHAR2,
3860
      userid             IN   NUMBER
3861
   );
3862
 
3863
   PROCEDURE destroy_package (
3864
      pvid               IN       NUMBER,
3865
      overridewarnings   IN       CHAR DEFAULT 'N',
3866
      problemstring      OUT      VARCHAR2
3867
   );
3868
 
3869
   PROCEDURE add_process (
3870
      nprocid         IN   processes.proc_id%TYPE,
3871
      shealthtag      IN   processes.proc_name%TYPE,
3872
      sprocdesc       IN   processes.proc_description%TYPE,
3873
      scmdinterface   IN   processes.run_as%TYPE,
3874
      spkgowner       IN   processes.pkg_owner%TYPE,
3875
      sisinterface    IN   processes.is_interface%TYPE,
3876
      npvid           IN   package_processes.pv_id%TYPE,
3877
      nuserid         IN   NUMBER
3878
   );
3879
 
3880
   PROCEDURE add_package_process (
3881
      nprocidlist   IN   VARCHAR2,
3882
      npvid         IN   package_processes.pv_id%TYPE,
3883
      nuserid       IN   NUMBER
3884
   );
3885
 
3886
 
3887
 
3888
   PROCEDURE remove_process (
3889
      nprocid   IN   package_processes.proc_id%TYPE,
3890
      npvid     IN   package_processes.pv_id%TYPE,
3891
      nuserid   IN   NUMBER
3892
   );
3893
 
3894
   PROCEDURE move_package (
3895
   	  npvid  			  IN package_versions.pv_id%TYPE,
3896
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
3897
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
3898
	  nuserid			  IN NUMBER		 
3899
   ); 
3900
 
3959 dpurdie 3901
   PROCEDURE modify_product_state (
1373 dpurdie 3902
   	  npvid IN package_versions.pv_id%TYPE,
3959 dpurdie 3903
	  nrtagid IN release_tags.rtag_id%TYPE,
1373 dpurdie 3904
	  nstateid IN product_states.state_id%TYPE,
3905
	  nuserid IN NUMBER
3906
   );
3959 dpurdie 3907
 
3908
   PROCEDURE add_code_review_url (
3909
        npvid           IN    NUMBER,
3910
        nprojid         IN    NUMBER,
3911
        surl            IN    VARCHAR2,
3912
        sreason         IN    VARCHAR2,
3913
        ddateofreview   IN    DATE
3914
   );
3915
 
3916
   PROCEDURE update_code_review_url (
3917
        ncrid           IN    NUMBER,
3918
        nprojid         IN    NUMBER,
3919
        surl            IN    VARCHAR2,
3920
        sreason         IN    VARCHAR2
3921
   );
3922
 
3923
   PROCEDURE remove_code_review_url (
3924
        ncrid           IN    NUMBER
3925
   );
1373 dpurdie 3926
/*================================================================================================*/
3959 dpurdie 3927
END pk_package;
4040 dpurdie 3928
 
1374 dpurdie 3929
/
1373 dpurdie 3930
 
4040 dpurdie 3931
/
3932
--------------------------------------------------------
3933
--  DDL for Package PK_PLANNED
3934
--------------------------------------------------------
3935
 
1373 dpurdie 3936
  CREATE OR REPLACE PACKAGE "PK_PLANNED" IS
3937
/*
3938
------------------------------
3939
||  Last Modified:  G.Huddy
3940
||  Modified Date:  28/May/2008
3941
||  Spec Version:   1.1
3942
------------------------------
3943
*/
3944
 
3945
	TYPE typeCur IS REF CURSOR;
3946
 
3947
    /*================================================================================================*/
3948
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3949
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3950
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3951
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3952
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3953
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
3954
	/*================================================================================================*/
3955
 
3956
END PK_PLANNED;
4040 dpurdie 3957
 
1374 dpurdie 3958
/
1373 dpurdie 3959
 
4040 dpurdie 3960
/
3961
--------------------------------------------------------
3962
--  DDL for Package PK_PROJECT
3963
--------------------------------------------------------
3964
 
3959 dpurdie 3965
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1373 dpurdie 3966
 
3959 dpurdie 3967
    TYPE typecur IS REF CURSOR;
1373 dpurdie 3968
 
3959 dpurdie 3969
    /*------------------------------------------------------------------------*/
3970
    PROCEDURE update_base_url (
3971
        nprojid   IN  projects.proj_id%TYPE,
3972
        sbaseurl  IN  VARCHAR2
3973
    );
3974
    /*------------------------------------------------------------------------*/
3975
    PROCEDURE update_project_config (
3976
    nprojid   IN  projects.proj_id%TYPE,
3977
    sbaseurl  IN  VARCHAR2,
3978
    sjirakey  IN  VARCHAR2
3979
    );
3980
    /*------------------------------------------------------------------------*/
1373 dpurdie 3981
 
3959 dpurdie 3982
    END pk_project;
4040 dpurdie 3983
 
1374 dpurdie 3984
/
1373 dpurdie 3985
 
4040 dpurdie 3986
/
3987
--------------------------------------------------------
3988
--  DDL for Package PK_RELEASE
3989
--------------------------------------------------------
3990
 
1373 dpurdie 3991
  CREATE OR REPLACE PACKAGE "PK_RELEASE" IS
3992
/*
3993
------------------------------
3994
||  Last Modified:  S.Vukovic
3995
||  Modified Date:  12/Sep/2005
3996
||  Body Version:   3.0
3997
------------------------------
3998
*/
3999
 
4000
	TYPE typeCur IS REF CURSOR;
4001
 
4002
    /*================================================================================================*/
4003
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
4004
	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 );
4005
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
4006
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
4007
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
4008
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
4009
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
4010
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
4011
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
4012
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4013
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
4014
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4015
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4016
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4017
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
4018
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
4019
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
4020
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4021
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
4022
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
4023
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
4024
 
4025
	/*================================================================================================*/
4026
 
4027
END PK_RELEASE;
4040 dpurdie 4028
 
1374 dpurdie 4029
/
1373 dpurdie 4030
 
4040 dpurdie 4031
/
4032
--------------------------------------------------------
4033
--  DDL for Package PK_RMAPI
4034
--------------------------------------------------------
4035
 
3959 dpurdie 4036
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
4037
IS
4038
   TYPE typecur IS REF CURSOR;
1373 dpurdie 4039
 
3959 dpurdie 4040
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4041
      RETURN typecur;
1373 dpurdie 4042
 
3959 dpurdie 4043
   FUNCTION wip_iteration_package (
4044
      projname        VARCHAR2,
4045
      iterationname   VARCHAR2,
4046
      pkgname         VARCHAR2
4047
   )
4048
      RETURN typecur;
1373 dpurdie 4049
 
3959 dpurdie 4050
   FUNCTION auto_make_vcsrelease (
4051
      rtagid                   IN   NUMBER,
4052
      pkgname                  IN   VARCHAR2,
4053
      vext                     IN   VARCHAR2,
4054
      newpkgversion            IN   VARCHAR2,
4055
      vcstag                   IN   VARCHAR2,
4056
      dependenciesimportlist   IN   VARCHAR2,
4057
      isrippled                IN   NUMBER,
4058
      username                 IN   VARCHAR2
4059
   )
4060
      RETURN NUMBER;
1373 dpurdie 4061
 
4062
 
3959 dpurdie 4063
   PROCEDURE import_dependencies (
4064
      pvid                     IN   NUMBER,
4065
      dependenciesimportlist   IN   VARCHAR2,
4066
      userid                   IN   NUMBER
4067
   );
1373 dpurdie 4068
 
3959 dpurdie 4069
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4070
      RETURN VARCHAR2;
1373 dpurdie 4071
 
3959 dpurdie 4072
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4073
      RETURN VARCHAR2;
1373 dpurdie 4074
 
3959 dpurdie 4075
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1373 dpurdie 4076
 
3959 dpurdie 4077
   FUNCTION exclude_from_build (
4078
      pvid          IN   NUMBER,
4079
      spkgversion   IN   VARCHAR2,
4080
      rtagid        IN   NUMBER,
4081
      username      IN   VARCHAR2
4082
   )
4083
      RETURN NUMBER;
1373 dpurdie 4084
 
3959 dpurdie 4085
   FUNCTION exclude_indirect_from_build (
4086
      pvid          IN   NUMBER,
4087
      spkgversion   IN   VARCHAR2,
4088
      rtagid        IN   NUMBER,
4089
      username      IN   VARCHAR2,
4090
      rootpvid      IN   NUMBER,
4091
      rootcause     IN   VARCHAR2,
4092
      rootfile      IN   VARCHAR2
4093
   )
4094
      RETURN NUMBER;
1373 dpurdie 4095
 
3959 dpurdie 4096
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1373 dpurdie 4097
 
3959 dpurdie 4098
   FUNCTION insert_package_metrics (
4099
      rtagid IN NUMBER,
4100
      pkgname IN VARCHAR2,
4101
      vext IN VARCHAR2,
4102
      metricstring IN VARCHAR2
4103
   )
4104
      RETURN NUMBER;
1373 dpurdie 4105
 
3959 dpurdie 4106
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1373 dpurdie 4107
 
3959 dpurdie 4108
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4109
 
4110
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
4111
 
4112
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
4113
 
4114
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
4115
 
4116
END pk_rmapi;
4040 dpurdie 4117
 
1374 dpurdie 4118
/
1373 dpurdie 4119
 
4040 dpurdie 4120
/
4121
--------------------------------------------------------
4122
--  DDL for Package PK_RMAPI_TEST
4123
--------------------------------------------------------
4124
 
4125
  CREATE OR REPLACE PACKAGE "PK_RMAPI_TEST" 
4126
IS
4127
   TYPE typecur IS REF CURSOR;
4128
 
4129
/*================================================================================================*/
4130
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4131
      RETURN typecur;
4132
 
4133
   FUNCTION wip_iteration_package (
4134
      projname        VARCHAR2,
4135
      iterationname   VARCHAR2,
4136
      pkgname         VARCHAR2
4137
   )
4138
      RETURN typecur;
4139
 
4140
/* This version is to be deprecated when auto_make_vcsrelease is used */
4141
   FUNCTION auto_make_release (
4142
      rtagid                   IN   NUMBER,
4143
      pkgname                  IN   VARCHAR2,
4144
      vext                     IN   VARCHAR2,
4145
      newpkgversion            IN   VARCHAR2,
4146
      label                    IN   VARCHAR2,
4147
      dependenciesimportlist   IN   VARCHAR2,
4148
      isrippled                IN   NUMBER,
4149
      username                 IN   VARCHAR2
4150
   )
4151
      RETURN NUMBER;
4152
 
4153
   FUNCTION auto_make_vcsrelease (
4154
      rtagid                   IN   NUMBER,
4155
      pkgname                  IN   VARCHAR2,
4156
      vext                     IN   VARCHAR2,
4157
      newpkgversion            IN   VARCHAR2,
4158
      vcstag                   IN   VARCHAR2,
4159
      dependenciesimportlist   IN   VARCHAR2,
4160
      isrippled                IN   NUMBER,
4161
      username                 IN   VARCHAR2
4162
   )
4163
      RETURN NUMBER;
4164
 
4165
 
4166
   PROCEDURE import_dependencies (
4167
      pvid                     IN   NUMBER,
4168
      dependenciesimportlist   IN   VARCHAR2,
4169
      userid                   IN   NUMBER
4170
   );
4171
 
4172
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4173
      RETURN VARCHAR2;
4174
 
4175
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4176
      RETURN VARCHAR2;
4177
 
4178
   PROCEDURE update_dash_board (rtagid IN NUMBER);
4179
 
4180
   FUNCTION exclude_from_build (
4181
      pvid          IN   NUMBER,
4182
      spkgversion   IN   VARCHAR2,
4183
      rtagid        IN   NUMBER,
4184
      username      IN   VARCHAR2
4185
   )
4186
      RETURN NUMBER;
4187
 
4188
   FUNCTION exclude_indirect_from_build (
4189
      pvid          IN   NUMBER,
4190
      spkgversion   IN   VARCHAR2,
4191
      rtagid        IN   NUMBER,
4192
      username      IN   VARCHAR2,
4193
      rootpvid      IN   NUMBER,
4194
      rootcause     IN   VARCHAR2,
4195
      rootfile      IN   VARCHAR2
4196
   )
4197
      RETURN NUMBER;
4198
/*================================================================================================*/
4199
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
4200
 
4201
   FUNCTION insert_package_metrics (
4202
      rtagid IN NUMBER,
4203
      pkgname IN VARCHAR2,
4204
      vext IN VARCHAR2,
4205
      metricstring IN VARCHAR2
4206
   )
4207
      RETURN NUMBER;
4208
 
4209
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
4210
 
4211
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4212
 
4213
END pk_rmapi_test;
4214
 
4215
/
4216
 
4217
/
4218
--------------------------------------------------------
4219
--  DDL for Package PK_WORK_IN_PROGRESS
4220
--------------------------------------------------------
4221
 
3959 dpurdie 4222
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 4223
/*
4224
------------------------------
4225
||  Last Modified:  S.Vukovic
3959 dpurdie 4226
||  Modified Date:  2/May/2005
4227
||  Spec Version:   1.0
1373 dpurdie 4228
------------------------------
4229
*/
4230
 
4231
	TYPE typeCur IS REF CURSOR;
4232
 
4233
    /*================================================================================================*/
4234
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4235
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3959 dpurdie 4236
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
4237
 
1373 dpurdie 4238
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3959 dpurdie 4239
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1373 dpurdie 4240
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4241
	/*================================================================================================*/
3959 dpurdie 4242
 
4243
END PK_WORK_IN_PROGRESS;
4040 dpurdie 4244
 
1374 dpurdie 4245
/
1373 dpurdie 4246
 
4040 dpurdie 4247
/
4248
--------------------------------------------------------
4249
--  DDL for Package RM_ISSUES
4250
--------------------------------------------------------
4251
 
3959 dpurdie 4252
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1373 dpurdie 4253
 
3959 dpurdie 4254
	TYPE T_Cur IS REF CURSOR;
1373 dpurdie 4255
 
3959 dpurdie 4256
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4257
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
4258
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4259
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1373 dpurdie 4260
 
3959 dpurdie 4261
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4262
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4263
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1373 dpurdie 4264
 
3959 dpurdie 4265
END Rm_Issues;
4040 dpurdie 4266
 
3959 dpurdie 4267
/
1373 dpurdie 4268
 
4040 dpurdie 4269
/
4270
--------------------------------------------------------
4271
--  DDL for Package Body PK_APP_UTILS
4272
--------------------------------------------------------
4273
 
3959 dpurdie 4274
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1373 dpurdie 4275
 
3959 dpurdie 4276
/*
4277
------------------------------
4278
||  Last Modified:  S.Vukovic
4279
||  Modified Date:  26/Apr/2005
4280
||  Body Version:   1.0
4281
------------------------------
4282
*/
1373 dpurdie 4283
 
4284
 
4285
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4286
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1373 dpurdie 4287
 
4288
 
4289
BEGIN
4290
 
4291
 
3959 dpurdie 4292
	IF (NOT RtagId IS NULL) THEN
4293
		-- Case with RTAG_ID present
4294
		OPEN records FOR
4295
		SELECT rt.PROJ_ID,
4296
			   rt.RTAG_ID AS RTAG_ID
4297
		  FROM RELEASE_TAGS rt
4298
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1373 dpurdie 4299
 
3959 dpurdie 4300
	ELSIF (NOT ProjId IS NULL) THEN
4301
		-- Case with PROJ_ID present
4302
		OPEN records FOR
4303
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
4304
			   -1 AS RTAG_ID
4305
		  FROM DUAL;
1373 dpurdie 4306
 
3959 dpurdie 4307
	ELSE
4308
		-- Case with none present
4309
		OPEN records FOR
4310
		SELECT -1 AS PROJ_ID,
4311
			   -1 AS RTAG_ID
4312
		  FROM DUAL;
1373 dpurdie 4313
 
3959 dpurdie 4314
	END IF;
1373 dpurdie 4315
 
4316
 
4317
 
4318
 
3959 dpurdie 4319
   	--RETURN records;
1373 dpurdie 4320
 
4321
END;
4322
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4323
END PK_APP_UTILS;
4040 dpurdie 4324
 
1374 dpurdie 4325
/
1373 dpurdie 4326
 
4040 dpurdie 4327
/
4328
--------------------------------------------------------
4329
--  DDL for Package Body PK_ARCHIVE
4330
--------------------------------------------------------
4331
 
3959 dpurdie 4332
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1373 dpurdie 4333
IS
3959 dpurdie 4334
/*
4335
------------------------------
4336
||  Author:  Rupesh Solanki
4337
||  Date:    26 October 2006
4338
||  Version:   1.0
4339
------------------------------
4340
*/
4341
/*---------------------------*/
4342
PROCEDURE populate_packages_table IS
1373 dpurdie 4343
 
3959 dpurdie 4344
BEGIN
4345
		  INSERT INTO archive_manager.PACKAGES
4346
		  (
4347
		  select * from packages where pkg_id not in 
4348
		  		  (select pkg_id from archive_manager.packages)
4349
		  );
1373 dpurdie 4350
 
3959 dpurdie 4351
          INSERT INTO archive_manager.PROCESSES
4352
          (
4353
          select * from processes where proc_id not in 
4354
            (select proc_id from archive_manager.processes)
4355
          );
4356
 
1373 dpurdie 4357
 
4358
 
3959 dpurdie 4359
END;
1373 dpurdie 4360
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4361
   PROCEDURE populate_archive_data_table (
4362
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4363
   )
4364
   IS
3959 dpurdie 4365
/*
4366
Reason: To populate the archive_data table with information regarding the
4367
         number of package versions that exist in other releases.
4368
*/
4369
      numcount      NUMBER;
4370
      numusedby     NUMBER;
4371
      numruntime    NUMBER;
4372
 
4373
      /* Get all the package versions in the release */
4374
      CURSOR archive_cur
4375
      IS
4376
         SELECT pv_id
4377
           FROM release_content
4378
          WHERE rtag_id = nrtagid;
4379
 
4380
      archive_rec   archive_cur%ROWTYPE;
1373 dpurdie 4381
   BEGIN
3959 dpurdie 4382
/*--------------- Business Rules Here -------------------*/
4383
/*-------------------------------------------------------*/
4384
      OPEN archive_cur;
1373 dpurdie 4385
 
3959 dpurdie 4386
      FETCH archive_cur
4387
       INTO archive_rec;
4388
 
4389
      WHILE archive_cur%FOUND
4390
      LOOP
4391
        /* How many packages depend on this package version? */
4392
         SELECT COUNT (*)
4393
           INTO numusedby
4394
           FROM package_dependencies
4395
          WHERE dpv_id = archive_rec.pv_id;
4396
 
4397
        /* How many project releases use this package version?  */
4398
         SELECT COUNT (*)
4399
           INTO numcount
4400
           FROM release_content
4401
          WHERE pv_id = archive_rec.pv_id;
4402
 
4403
        /* How many packages have this package version as runtime
4404
        dependency? */
4405
         SELECT COUNT (*)
4406
           INTO numruntime
4407
           FROM runtime_dependencies
4408
          WHERE rtd_id = archive_rec.pv_id;
4409
 
4410
        /* Insert into the archive_data table if they are not runtime dependant
4411
        and package dependant and they exist in that particular release only*/
4412
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
1373 dpurdie 4413
         THEN
3959 dpurdie 4414
            INSERT INTO archive_data
4415
                        (rtag_id, pv_id
4416
                        )
4417
                 VALUES (nrtagid, archive_rec.pv_id
4418
                        );
1373 dpurdie 4419
         END IF;
4420
 
3959 dpurdie 4421
         FETCH archive_cur
4422
          INTO archive_rec;
4423
      END LOOP;
1373 dpurdie 4424
   END;
4425
 
4426
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4427
   PROCEDURE migrate_pv_to_archive_schema (
4428
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4429
   )
4430
   IS
4431
   BEGIN
4432
 
3959 dpurdie 4433
      /* MIGRATION - PACKAGE_VERSIONS */
4434
      INSERT INTO archive_manager.package_versions
4435
         SELECT *
4436
           FROM package_versions
4437
          WHERE pv_id IN (SELECT pv_id
4438
                            FROM archive_data);
1373 dpurdie 4439
 
3959 dpurdie 4440
      /* MIGRATION - PACKAGE_BUILD_ENV */
4441
      INSERT INTO archive_manager.package_build_env
4442
         SELECT *
4443
           FROM package_build_env
4444
          WHERE pv_id IN (SELECT pv_id
4445
                            FROM archive_data);
1373 dpurdie 4446
 
3959 dpurdie 4447
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
4448
      DELETE FROM package_build_env
4449
            WHERE pv_id IN (SELECT pv_id
4450
                              FROM archive_data);
1373 dpurdie 4451
 
3959 dpurdie 4452
      /* MIGRATION - PACKAGE_BUILD_INFO */
4453
      INSERT INTO archive_manager.package_build_info
4454
         SELECT *
4455
           FROM package_build_info
4456
          WHERE pv_id IN (SELECT pv_id
4457
                            FROM archive_data);
1373 dpurdie 4458
 
3959 dpurdie 4459
      /* PURGE DATA FROM PACKAGE_BUILD_info */
4460
      DELETE FROM package_build_info
4461
            WHERE pv_id IN (SELECT pv_id
4462
                              FROM archive_data);							  
1373 dpurdie 4463
 
3959 dpurdie 4464
      /* MIGRATION - UNIT_TESTS  */
4465
      INSERT INTO archive_manager.unit_tests
4466
         SELECT *
4467
           FROM unit_tests
4468
          WHERE pv_id IN (SELECT pv_id
4469
                            FROM archive_data);
1373 dpurdie 4470
 
3959 dpurdie 4471
      /* PURGE DATA FROM UNIT_TESTS*/
4472
      DELETE FROM unit_tests
4473
            WHERE pv_id IN (SELECT pv_id
4474
                              FROM archive_data);
1373 dpurdie 4475
 
3959 dpurdie 4476
      /* MIGRATION - PACKAGE_PROCESSES */
4477
      INSERT INTO archive_manager.package_processes
4478
         SELECT *
4479
           FROM package_processes
4480
          WHERE pv_id IN (SELECT pv_id
4481
                            FROM archive_data);
1373 dpurdie 4482
 
3959 dpurdie 4483
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
4484
      DELETE FROM package_processes
4485
            WHERE pv_id IN (SELECT pv_id
4486
                              FROM archive_data);
1373 dpurdie 4487
 
3959 dpurdie 4488
      /* MIGRATION - PACKAGE_DEPENDENCIES */
4489
      INSERT INTO archive_manager.package_dependencies
4490
         SELECT *
4491
           FROM package_dependencies
4492
          WHERE pv_id IN (SELECT pv_id
4493
                            FROM archive_data);
2735 dpurdie 4494
 
3959 dpurdie 4495
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
4496
      DELETE FROM package_dependencies
4497
            WHERE pv_id IN (SELECT pv_id
4498
                              FROM archive_data);
1373 dpurdie 4499
 
3959 dpurdie 4500
      /* MIGRATION - CODE_REVIEWS */
4501
      INSERT INTO archive_manager.code_reviews
4502
         SELECT *
4503
           FROM code_reviews
4504
          WHERE pv_id IN (SELECT pv_id
4505
                            FROM archive_data);
1373 dpurdie 4506
 
3959 dpurdie 4507
      /* PURGE DATA FROM CODE_REVIEWS*/
4508
      DELETE FROM code_reviews
4509
            WHERE pv_id IN (SELECT pv_id
4510
                              FROM archive_data);
1373 dpurdie 4511
 
3959 dpurdie 4512
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
4513
      INSERT INTO archive_manager.runtime_dependencies
4514
         SELECT *
4515
           FROM runtime_dependencies
4516
          WHERE pv_id IN (SELECT pv_id
4517
                            FROM archive_data);
1373 dpurdie 4518
 
3959 dpurdie 4519
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
4520
      DELETE FROM runtime_dependencies
4521
            WHERE pv_id IN (SELECT pv_id
4522
                              FROM archive_data);
1373 dpurdie 4523
 
3959 dpurdie 4524
      /* MIGRATION - PACKAGE_DOCUMENTS */
4525
      INSERT INTO archive_manager.package_documents
4526
         SELECT *
4527
           FROM package_documents
4528
          WHERE pv_id IN (SELECT pv_id
4529
                            FROM archive_data);
1373 dpurdie 4530
 
3959 dpurdie 4531
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
4532
      DELETE FROM package_documents
4533
            WHERE pv_id IN (SELECT pv_id
4534
                              FROM archive_data);
1373 dpurdie 4535
 
3959 dpurdie 4536
      /* MIGRATION - PACKAGE_PATCHES */
4537
      INSERT INTO archive_manager.package_patches
4538
         SELECT *
4539
           FROM package_patches
4540
          WHERE pv_id IN (SELECT pv_id
4541
                            FROM archive_data);
1373 dpurdie 4542
 
3959 dpurdie 4543
      /* PURGE DATA FROM PACKAGE_PATCHES*/
4544
      DELETE FROM package_patches
4545
            WHERE pv_id IN (SELECT pv_id
4546
                              FROM archive_data);
1373 dpurdie 4547
 
3959 dpurdie 4548
      /* MIGRATION - CQ_ISSUES */
4549
      INSERT INTO archive_manager.cq_issues
4550
         SELECT *
4551
           FROM cq_issues
4552
          WHERE pv_id IN (SELECT pv_id
4553
                            FROM archive_data);
1373 dpurdie 4554
 
3959 dpurdie 4555
      /* PURGE DATA FROM CQ_ISSUES*/
4556
      DELETE FROM cq_issues
4557
            WHERE pv_id IN (SELECT pv_id
4558
                              FROM archive_data);
1373 dpurdie 4559
 
3959 dpurdie 4560
      /* MIGRATION - ADDITIONAL_NOTES */
4561
      INSERT INTO archive_manager.additional_notes
4562
         SELECT *
4563
           FROM additional_notes
4564
          WHERE pv_id IN (SELECT pv_id
4565
                            FROM archive_data);
1373 dpurdie 4566
 
3959 dpurdie 4567
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
4568
      DELETE FROM additional_notes
4569
            WHERE pv_id IN (SELECT pv_id
4570
                              FROM archive_data);
1373 dpurdie 4571
 
3959 dpurdie 4572
      /* MIGRATION - RELEASE_COMPONENTS */
4573
      INSERT INTO archive_manager.release_components
4574
         SELECT *
4575
           FROM release_components
4576
          WHERE pv_id IN (SELECT pv_id
4577
                            FROM archive_data);
1373 dpurdie 4578
 
3959 dpurdie 4579
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
4580
      DELETE FROM release_components
4581
            WHERE pv_id IN (SELECT pv_id
4582
                              FROM archive_data);
1373 dpurdie 4583
 
3959 dpurdie 4584
      /* MIGRATION - IGNORE_WARNINGS */
4585
      INSERT INTO archive_manager.ignore_warnings
4586
         SELECT *
4587
           FROM ignore_warnings
4588
          WHERE pv_id IN (SELECT pv_id
4589
                            FROM archive_data);
1374 dpurdie 4590
 
3959 dpurdie 4591
      /* PURGE DATA FROM IGNORE_WARNINGS*/
4592
      DELETE FROM ignore_warnings
4593
            WHERE pv_id IN (SELECT pv_id
4594
                              FROM archive_data);
1373 dpurdie 4595
 
3959 dpurdie 4596
      /* PURGE DATA FROM WORK_IN_PROGRESS */
4597
      DELETE FROM work_in_progress
4598
            WHERE rtag_id = nrtagid;
1374 dpurdie 4599
 
3959 dpurdie 4600
      /* PURGE DATA FROM PLANNED */
4601
      DELETE FROM planned
4602
            WHERE rtag_id = nrtagid;
1373 dpurdie 4603
 
3959 dpurdie 4604
      /* MIGRATION - JIRA_ISSUES */
4605
      INSERT INTO archive_manager.jira_issues
4606
         SELECT *
4607
           FROM jira_issues
4608
          WHERE pv_id IN (SELECT pv_id
4609
                            FROM archive_data);
1373 dpurdie 4610
 
3959 dpurdie 4611
      /* PURGE DATA FROM JIRA_ISSUES*/
4612
      DELETE FROM jira_issues
4613
            WHERE pv_id IN (SELECT pv_id
4614
                              FROM archive_data);
1373 dpurdie 4615
 
3959 dpurdie 4616
      /* MIGRATION - PRODUCT_COMPONENTS */
4617
      INSERT INTO archive_manager.product_components
4618
         SELECT *
4619
           FROM product_components
4620
          WHERE pv_id IN (SELECT pv_id
4621
                            FROM archive_data);
1373 dpurdie 4622
 
3959 dpurdie 4623
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
4624
      DELETE FROM product_components
4625
            WHERE pv_id IN (SELECT pv_id
4626
                              FROM archive_data);
1373 dpurdie 4627
 
3959 dpurdie 4628
      /* MIGRATION - ACTION_LOG */
4629
      INSERT INTO archive_manager.action_log
4630
         SELECT *
4631
           FROM action_log
4632
          WHERE pv_id IN (SELECT pv_id
4633
                            FROM archive_data);
1373 dpurdie 4634
 
3959 dpurdie 4635
      /* PURGE DATA FROM ACTION_LOG*/
4636
      DELETE FROM action_log
4637
            WHERE pv_id IN (SELECT pv_id
4638
                              FROM archive_data);
1373 dpurdie 4639
 
4640
 
4641
   END;
4642
 
4643
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4644
   PROCEDURE migrate_rtag_to_archive_schema (
4645
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4646
   )
4647
   IS
4648
   BEGIN
3959 dpurdie 4649
      /* MIGRATION - DO_NOT_RIPPLE */
4650
      INSERT INTO archive_manager.do_not_ripple
4651
         SELECT *
4652
           FROM do_not_ripple dnp
4653
          WHERE rtag_id = nrtagid;
1373 dpurdie 4654
 
3959 dpurdie 4655
      /* PURGE DATA FROM DO_NOT_RIPPLE */
4656
      DELETE FROM do_not_ripple
4657
            WHERE rtag_id = nrtagid;
4658
 
4659
      /* MIGRATION - ADVISORY_RIPPLES*/
4660
      INSERT INTO archive_manager.advisory_ripples
4661
         SELECT *
4662
           FROM advisory_ripple dnp
4663
          WHERE rtag_id = nrtagid;
1373 dpurdie 4664
 
3959 dpurdie 4665
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
4666
      DELETE FROM advisory_ripple
4667
            WHERE rtag_id = nrtagid;			
1373 dpurdie 4668
 
3959 dpurdie 4669
      /* MIGRATION - RELEASE_CONTENT */
4670
      INSERT INTO archive_manager.release_content
4671
         SELECT *
4672
           FROM release_content
4673
          WHERE rtag_id = nrtagid;
1373 dpurdie 4674
 
3959 dpurdie 4675
      /* PURGE DATA FROM RELEASE_CONTENT*/
4676
      DELETE FROM release_content
4677
            WHERE rtag_id = nrtagid;
1373 dpurdie 4678
 
3959 dpurdie 4679
      /* MIGRATION - NOTIFICATION_HISTORY */
4680
      INSERT INTO archive_manager.notification_history
4681
         SELECT *
4682
           FROM notification_history
4683
          WHERE rtag_id = nrtagid;
1373 dpurdie 4684
 
3959 dpurdie 4685
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
4686
      DELETE FROM notification_history
4687
            WHERE rtag_id = nrtagid;
1373 dpurdie 4688
 
3959 dpurdie 4689
      /* MIGRATION - BUILD_ORDER   */
4690
      INSERT INTO archive_manager.build_order
4691
         SELECT *
4692
           FROM build_order
4693
          WHERE rtag_id = nrtagid;
1373 dpurdie 4694
 
3959 dpurdie 4695
      /* PURGE DATA FROM BUILD_ORDER*/
4696
      DELETE FROM build_order
4697
            WHERE rtag_id = nrtagid;
1373 dpurdie 4698
 
3959 dpurdie 4699
      /* MIGRATION - PROJECT_ACTION_LOG */
4700
      INSERT INTO archive_manager.project_action_log
4701
         SELECT *
4702
           FROM project_action_log
4703
          WHERE rtag_id = nrtagid;
1373 dpurdie 4704
 
3959 dpurdie 4705
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4706
      DELETE FROM project_action_log
4707
            WHERE rtag_id = nrtagid;
1373 dpurdie 4708
 
3959 dpurdie 4709
      /* MIGRATION - DEPRECATED_PACKAGES */
4710
      INSERT INTO archive_manager.deprecated_packages
4711
         SELECT *
4712
           FROM deprecated_packages
4713
          WHERE rtag_id = nrtagid;
1373 dpurdie 4714
 
3959 dpurdie 4715
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
4716
      DELETE FROM deprecated_packages
4717
            WHERE rtag_id = nrtagid;
4718
 
4719
      /* MIGRATION - RELEASE_TAGS */
4720
      INSERT INTO archive_manager.release_tags
4721
         SELECT *
1373 dpurdie 4722
           FROM release_tags
3959 dpurdie 4723
          WHERE rtag_id = nrtagid;
4724
 
4725
 
4726
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
4727
      DELETE FROM package_versions
4728
            WHERE pv_id IN (SELECT pv_id
4729
                              FROM archive_data);
4730
 
4731
 
1373 dpurdie 4732
   END;
4733
 
4734
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4735
   PROCEDURE clean_up_archive_data_table (
4736
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4737
   )
4738
   IS
4739
   BEGIN
3959 dpurdie 4740
      /* Cleaning Up The Archive_Data Table */
4741
      DELETE FROM archive_data
4742
            WHERE rtag_id = nrtagid;
1373 dpurdie 4743
   END;
4744
 
4745
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4746
   PROCEDURE write_action_log (
4747
      nuserid   IN   NUMBER,
4748
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4749
   )
4750
   IS
4751
   BEGIN
3959 dpurdie 4752
      /* Write Into Archive_Action_Log Table */
4753
      INSERT INTO archive_action_log
4754
                  (user_id, date_time_stamp, rtag_id,
4755
                   description
1373 dpurdie 4756
                  )
3959 dpurdie 4757
           VALUES (nuserid, ora_sysdatetime, nrtagid,
4758
                   'Release has been archived to the ARCHIVE_MANAGER schema'
1373 dpurdie 4759
                  );
4760
   END;
4761
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4762
END pk_archive; 
4040 dpurdie 4763
 
1374 dpurdie 4764
/
1373 dpurdie 4765
 
4040 dpurdie 4766
/
4767
--------------------------------------------------------
4768
--  DDL for Package Body PK_BUILDAPI
4769
--------------------------------------------------------
4770
 
1373 dpurdie 4771
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI" 
4772
IS
4773
   /*-------------------------------------------------------------------------------------------------------*/
4774
   PROCEDURE add_product_component (
4775
      npvid           IN   NUMBER,
4776
      sosname         IN   VARCHAR2,
4777
      sorigfilepath   IN   VARCHAR2,
4778
      sfilename       IN   VARCHAR2,
4779
      sdestfilepath   IN   VARCHAR2,
4780
      nbytesize       IN   NUMBER,
4781
      scrccksum       IN   VARCHAR2
4782
   )
4783
   IS
4784
      nosid   NUMBER;
4785
   BEGIN
4786
      /*--------------- Business Rules Here -------------------*/
4787
      -- OS Name Requirements --
4788
      IF (sosname IS NULL)
4789
      THEN
4790
         raise_application_error (-20000, 'OsName cannot be NULL.');
4791
      END IF;
4792
 
4793
      -- File Requirements --
4794
      IF (NOT sfilename IS NULL)
4795
      THEN
4796
         IF (nbytesize IS NULL)
4797
         THEN
4798
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
4799
         ELSIF (scrccksum IS NULL)
4800
         THEN
4801
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
4802
         END IF;
4803
      END IF;
4804
 
4805
      -- Folder Requirements --
4806
      -- No requirements for now.
4807
 
4808
      /*-------------------------------------------------------*/
4809
 
4810
      -- Get OsId
4811
      nosid := get_osid (sosname);
4812
 
4813
      -- Insert component entry
4814
      INSERT INTO product_components
4815
                  (pv_id, os_id, file_path, file_name, destination_path,
4816
                  byte_size, crc_cksum
4817
                  )
4818
         VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
4819
                  nbytesize, scrccksum
4820
                  );
4821
   EXCEPTION
4822
      WHEN DUP_VAL_ON_INDEX
4823
      THEN
4824
         raise_application_error (-20000,
4825
                                 'Cannot have duplicate product components.'
4826
                                 );
4827
   END;
4828
 
4829
/*-------------------------------------------------------------------------------------------------------*/
4830
   PROCEDURE remove_all_product_components (
4831
      npvid     IN   NUMBER,
4832
      sosname   IN   VARCHAR2
4833
   )
4834
   IS
4835
      nosid   NUMBER;
4836
   BEGIN
4837
/*--------------- Business Rules Here -------------------*/
4838
/*-------------------------------------------------------*/
4839
 
4840
      -- Get OsId
4841
      nosid := get_osid (sosname);
4842
 
4843
      -- Delete component entry
4844
      DELETE FROM product_components pc
4845
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
4846
   END;
4847
 
4848
/*-------------------------------------------------------------------------------------------------------*/
4849
   FUNCTION get_osid (sosname IN VARCHAR2)
4850
      RETURN NUMBER
4851
   IS
4852
      code   NUMBER;
4853
   BEGIN
4854
      -- Get Platform Code --
4855
      SELECT pf.code
4856
      INTO code
4857
      FROM platforms pf
4858
      WHERE UPPER (pf.NAME) = UPPER (sosname);
4859
 
4860
      RETURN code;
4861
   EXCEPTION
4862
      WHEN NO_DATA_FOUND
4863
      THEN
4864
         raise_application_error
4865
            (-20000,
4866
               'Platform '
4867
            || sosname
4868
            || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
4869
            );
4870
         RAISE;
4871
   END;
4872
 
4873
/*-------------------------------------------------------------------------------------------------------
4874
Obsolete - Superseded by update_build_service_info
4875
*/
4876
 
4877
   PROCEDURE update_build_service (
4878
      sdatabaseserver   IN   VARCHAR2,
4879
      swebserver        IN   VARCHAR2,
4880
      smailserver       IN   VARCHAR2,
4881
      smailsender       IN   VARCHAR2,
4882
      sdiskspace        IN   VARCHAR2,
4883
      ssbommanagement   IN   VARCHAR2
4884
   )
4885
   IS
4886
   BEGIN
4887
      UPDATE build_service_config
4888
         SET config = sdatabaseserver
4889
      WHERE service = 'DATABASE SERVER';
4890
 
4891
      UPDATE build_service_config
4892
         SET config = swebserver
4893
      WHERE service = 'WEB SERVER';
4894
 
4895
      UPDATE build_service_config
4896
         SET config = smailserver
4897
      WHERE service = 'MAIL SERVER';
4898
 
4899
      UPDATE build_service_config
4900
         SET config = smailsender
4901
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4902
 
4903
      UPDATE build_service_config
4904
         SET config = sdiskspace
4905
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4906
 
4907
      UPDATE build_service_config
4908
         SET config = ssbommanagement
4909
      WHERE service = 'SBOM MANAGEMENT';
4910
   END;
4911
 
4912
/*-------------------------------------------------------------------------------------------------------*/
4913
   PROCEDURE update_build_service_info (
4914
      sdatabaseserver   IN   VARCHAR2,
4915
      sarchiveserver    IN   VARCHAR2,
4916
      smailserver       IN   VARCHAR2,
4917
      smailsender       IN   VARCHAR2,
4918
      sdiskspace        IN   VARCHAR2,
4919
      ssbommanagement   IN   VARCHAR2
4920
   )
4921
   IS
4922
   BEGIN
4923
      UPDATE build_service_config
4924
         SET config = sdatabaseserver
4925
      WHERE service = 'DATABASE SERVER';
4926
 
4927
      UPDATE build_service_config
4928
         SET config = sarchiveserver
4929
      WHERE service = 'ARCHIVE SERVER';
4930
 
4931
      UPDATE build_service_config
4932
         SET config = smailserver
4933
      WHERE service = 'MAIL SERVER';
4934
 
4935
      UPDATE build_service_config
4936
         SET config = smailsender
4937
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4938
 
4939
      UPDATE build_service_config
4940
         SET config = sdiskspace
4941
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4942
 
4943
      UPDATE build_service_config
4944
         SET config = ssbommanagement
4945
      WHERE service = 'SBOM MANAGEMENT';
4946
   END;
4947
 
4948
 
4949
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4950
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4951
   IS
4952
      gbe_id   NUMBER;
4953
   BEGIN
4954
      -- Get GBE_ID
4955
      SELECT seq_gbe_id.NEXTVAL
4956
      INTO gbe_id
4957
      FROM DUAL;
4958
 
4959
      INSERT INTO gbe_machtype
4040 dpurdie 4960
                  (gbe_id, gbe_value, bm_id )
4961
         VALUES (gbe_id, sgbevalue, sgbeclass );
1373 dpurdie 4962
   END;
4963
 
4964
/*-------------------------------------------------------------------------------------------------------*/
4965
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
4966
   IS
4967
   BEGIN
4968
      DELETE FROM gbe_machtype
4969
            WHERE gbe_id = ngbe_id;
4970
   END;
4971
 
4972
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4973
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4974
   IS
4975
   BEGIN
4976
      UPDATE gbe_machtype
4040 dpurdie 4977
         SET gbe_value = sgbevalue,
4978
             bm_id = sgbeclass
1373 dpurdie 4979
      WHERE gbe_id = ngbe_id;
4980
   END;
4981
 
4982
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4983
PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2)
4984
   IS
4985
      bm_id   NUMBER;
4986
   BEGIN
4987
      -- Get BM_ID
4988
      SELECT seq_bm_id.NEXTVAL
4989
      INTO bm_id
4990
      FROM DUAL;
4991
 
4992
      INSERT INTO build_machines
4993
                  (bm_id, bm_name)
4994
         VALUES (bm_id, sbmvalue );
4995
   END;
4996
 
4997
/*-------------------------------------------------------------------------------------------------------*/
4998
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER)
4999
   IS
5000
   BEGIN
5001
      DELETE FROM build_machines
5002
            WHERE bm_id = nbm_id;
5003
   END;
5004
 
5005
/*-------------------------------------------------------------------------------------------------------*/
5006
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2) 
5007
   IS
5008
   BEGIN
5009
      UPDATE build_machines
5010
         SET bm_name = sbmvalue
5011
         WHERE bm_id = nbm_id;
5012
   END;
5013
 
5014
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 5015
  --This function is obsolete.  It was replaced by add_daemon_config. Done for DEVI-046806
5016
   PROCEDURE add_daemon (
5017
      sdaemonhostname   IN   VARCHAR2,
5018
      nrtagid           IN   NUMBER,
5019
      ngbeid            IN   NUMBER,
5020
      sgbebuildfilter   IN   VARCHAR2
5021
   )
5022
   IS
5023
      nrecordnumber   NUMBER;
5024
      nrconid         NUMBER;
5025
   BEGIN
5026
      -- Get RCON_ID
5027
      SELECT seq_rcon_id.NEXTVAL
5028
      INTO nrconid
5029
      FROM DUAL;
5030
 
5031
      SELECT COUNT (*)
5032
      INTO nrecordnumber
5033
      FROM release_config
5034
      WHERE rtag_id = nrtagid;
5035
 
5036
      IF nrecordnumber = 0
5037
      THEN
5038
         INSERT INTO release_config
5039
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5040
                     gbe_id, gbe_buildfilter
5041
                     )
5042
            VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
5043
                     ngbeid, sgbebuildfilter
5044
                     );
5045
      ELSE
5046
         INSERT INTO release_config
5047
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5048
                     gbe_id, gbe_buildfilter
5049
                     )
5050
            VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
5051
                     ngbeid, sgbebuildfilter
5052
                     );
5053
      END IF;
5054
 
5055
      -- A newly configured daemon should initially be paused (DEVI-047277)
5056
      INSERT INTO run_level
5057
                  (rcon_id, pause)
5058
           VALUES (nrconid, 1);
5059
   END;
5060
 
5061
/*-------------------------------------------------------------------------------------------------------*/
5062
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
5063
   IS
5064
   BEGIN
5065
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
5066
      DELETE FROM daemon_action_log
5067
            WHERE rcon_id IN (
5068
                     SELECT *
5069
                     FROM THE
5070
                              (SELECT CAST
5071
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5072
                                          )
5073
                                 FROM DUAL
5074
                              ));
5075
 
5076
      DELETE FROM run_level
5077
            WHERE rcon_id IN (
5078
                     SELECT *
5079
                     FROM THE
5080
                              (SELECT CAST
5081
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5082
                                          )
5083
                                 FROM DUAL
5084
                              ));
5085
 
5086
      DELETE FROM abt_action_log
5087
            WHERE rcon_id IN (
5088
                     SELECT *
5089
                     FROM THE
5090
                              (SELECT CAST
5091
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5092
                                          )
5093
                                 FROM DUAL
5094
                              ));
5095
 
5096
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
5097
      DELETE FROM release_config
5098
            WHERE rcon_id IN (
5099
                     SELECT *
5100
                     FROM THE
5101
                              (SELECT CAST
5102
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5103
                                          )
5104
                                 FROM DUAL
5105
                              ));
5106
   END;
5107
 
5108
/*-------------------------------------------------------------------------------------------------------*/
5109
  --This function is obsolete.  It was replaced by update_daemon_config for DEVI-046806
5110
   PROCEDURE update_daemon (
5111
      sdaemonhostname   IN   VARCHAR2,
5112
      nrconid           IN   NUMBER,
5113
      ngbeid            IN   NUMBER,
5114
      sgbebuildfilter   IN   VARCHAR2
5115
   )
5116
   IS
5117
   BEGIN
5118
      UPDATE release_config
5119
         SET daemon_hostname = sdaemonhostname,
5120
            gbe_id = ngbeid,
5121
            gbe_buildfilter = sgbebuildfilter
5122
      WHERE rcon_id = nrconid;
5123
   END;
5124
 
5125
/*-------------------------------------------------------------------------------------------------------*/
5126
   PROCEDURE insert_schedule_info (
5127
      dschedulepause     IN   DATE,
5128
      dscheduleresume    IN   DATE,
5129
      crepeat            IN   VARCHAR2,
5130
      cindefinitepause   IN   VARCHAR2
5131
   )
5132
   IS
5133
      nscheduledid   NUMBER;
5134
   BEGIN
5135
      -- Get Next Available Scheduled Id
5136
      SELECT seq_scheduled_id.NEXTVAL
5137
      INTO nscheduledid
5138
      FROM DUAL;
5139
 
5140
      INSERT INTO run_level_schedule
5141
         VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
5142
                  cindefinitepause);
5143
   END;
5144
 
5145
/*-------------------------------------------------------------------------------------------------------*/
5146
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
5147
   IS
5148
   BEGIN
5149
      DELETE FROM run_level_schedule
5150
            WHERE scheduled_id = nscheduleid;
5151
   END;
5152
 
5153
/*-------------------------------------------------------------------------------------------------------*/
5154
   PROCEDURE set_infinite_pause
5155
   IS
5156
      nscheduledid   NUMBER;
5157
   BEGIN
5158
      -- Get Next Available Scheduled Id
5159
      SELECT seq_scheduled_id.NEXTVAL
5160
      INTO nscheduledid
5161
      FROM DUAL;
5162
 
5163
      INSERT INTO run_level_schedule
5164
         VALUES (nscheduledid, NULL, NULL, NULL, 'P');
5165
   END;
5166
 
5167
/*-------------------------------------------------------------------------------------------------------*/
5168
   PROCEDURE set_resume
5169
   IS
5170
   BEGIN
5171
      DELETE FROM run_level_schedule
5172
            WHERE indefinite_pause = 'P';
5173
   END;
5174
 
5175
/*-------------------------------------------------------------------------------------------------------*/
5176
   PROCEDURE delete_out_of_date_schedule
5177
   IS
5178
   BEGIN
5179
      DELETE FROM run_level_schedule
5180
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
5181
   END;
5182
 
5183
/*-------------------------------------------------------------------------------------------------------*/
5184
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
5185
   IS
5186
   BEGIN
5187
      UPDATE run_level
5188
         SET PAUSE = NULL
5189
      WHERE rcon_id = nrconid;
5190
   END;
5191
 
5192
/*-------------------------------------------------------------------------------------------------------*/
5193
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
5194
   IS
5195
   BEGIN
5196
      UPDATE run_level
5197
         SET PAUSE = 1
5198
      WHERE rcon_id = nrconid;
5199
   END;
5200
/*-------------------------------------------------------------------------------------------------------*/
5201
   PROCEDURE set_daemon_disable (nrconid NUMBER)
5202
   IS
5203
   BEGIN
5204
      UPDATE run_level
5205
         SET PAUSE = 2
5206
      WHERE rcon_id = nrconid;
5207
   END;
5208
 
5209
/*-------------------------------------------------------------------------------------------------------*/
5210
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER)
5211
   IS
5212
   BEGIN
5213
     UPDATE run_level
5214
     SET pause = nstate
5215
     WHERE rcon_id IN
5216
     (SELECT rc.rcon_id FROM release_config rc WHERE rc.rtag_id = nrtagid);
5217
   END;
5218
 
5219
/*-------------------------------------------------------------------------------------------------------*/
5220
   -- inserts a new daemon instruction
5221
   -- This is for use by the Release Manager Website code.
5222
   --
5223
   PROCEDURE insert_daemon_inst
5224
   ( nOp_code IN NUMBER
5225
   , nRtag_id IN NUMBER
5226
   , nPv_id IN NUMBER
5227
   , nSchedDate IN DATE
5228
   , nRepeatSecs IN NUMBER
5229
   , nAddedDate IN DATE
5230
   , nUser_id IN NUMBER
5231
   ) IS
5232
      nInstId   NUMBER;
5233
   BEGIN
5234
      -- Get Next Available Scheduled Id
5235
      SELECT seq_daemon_instruction_id.NEXTVAL
5236
      INTO nInstId
5237
      FROM DUAL;
5238
 
5239
      INSERT INTO Daemon_Instructions
5240
         VALUES (nInstId, nOp_code, nRtag_id,
5241
                  nPv_id, nSchedDate, nRepeatSecs,
5242
                  nAddedDate, nUser_id, '0');
5243
   EXCEPTION
5244
      WHEN DUP_VAL_ON_INDEX
5245
      THEN
5246
         raise_application_error (-20000,
5247
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5248
                                 );
5249
      WHEN OTHERS
5250
      THEN
5251
         raise;
5252
   END insert_daemon_inst;
5253
 
5254
/*-------------------------------------------------------------------------------------------------------*/
5255
   -- Deletes a daemon instruction matching the specified instruction ID
5256
   --
5257
   PROCEDURE del_daemon_inst
5258
   ( nInstId IN NUMBER
5259
   ) IS
5260
 
5261
   BEGIN
5262
      DELETE FROM Daemon_Instructions
5263
      WHERE DAEMON_INSTRUCTIONS_ID = nInstId;
5264
 
5265
   END del_daemon_inst;
5266
 
5267
/*-------------------------------------------------------------------------------------------------------*/
5268
   -- Deletes a daemon instruction matching the specified op-code, ratag, and pv_id
5269
   --
5270
   PROCEDURE del_daemon_inst_by_rtag_pvid(
5271
      nOp_code IN NUMBER,
5272
      nRtag_id IN NUMBER,
5273
      nPv_id IN NUMBER
5274
   ) IS
5275
   BEGIN
5276
      DELETE FROM Daemon_Instructions
5277
      WHERE OP_CODE = nOp_code
5278
      AND RTAG_ID = nRtag_id
5279
      AND PV_ID   = nPv_id;
5280
 
5281
   END del_daemon_inst_by_rtag_pvid;
5282
 
5283
/*-------------------------------------------------------------------------------------------------------*/
5284
   -- Updates a daemon instruction
5285
   -- This is for use by the Release Manager Website code.
5286
   --
5287
   PROCEDURE update_daemon_inst
5288
   ( nInstId IN NUMBER
5289
   , nOp_code IN NUMBER
5290
   , nRtag_id IN NUMBER
5291
   , nPv_id IN NUMBER
5292
   , nSchedDate IN DATE
5293
   , nRepeatSecs IN NUMBER
5294
   , nAddedDate IN DATE
5295
   , nUser_id IN NUMBER
5296
   ) IS
5297
      CURSOR daemon_inst_cur IS
5298
         SELECT *
5299
         FROM daemon_instructions di
5300
         WHERE di.DAEMON_INSTRUCTIONS_ID = nInstId;
5301
 
5302
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5303
 
5304
      exc_inst_removed EXCEPTION;
5305
   BEGIN
5306
      OPEN daemon_inst_cur;
5307
 
5308
      FETCH daemon_inst_cur
5309
      INTO daemon_inst_rec;
5310
 
5311
      IF daemon_inst_cur%FOUND THEN
5312
 
5313
         UPDATE Daemon_Instructions
5314
         SET op_code = nOp_code,
5315
            rtag_id = nRtag_id,
5316
            pv_id   = nPv_id,
5317
            scheduled_datetime = nSchedDate,
5318
            repeat_secs = nRepeatSecs,
5319
            added_datetime = nAddedDate,
5320
            user_id = nUser_id,
5321
            in_progress = '0'
5322
         WHERE daemon_instructions_id = nInstId;
5323
      ELSE
5324
         raise exc_inst_removed;
5325
      END IF;
5326
 
5327
      CLOSE daemon_inst_cur;
5328
   EXCEPTION
5329
      WHEN DUP_VAL_ON_INDEX
5330
      THEN
5331
         raise_application_error (-20000,
5332
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5333
                                 );
5334
      WHEN exc_inst_removed
5335
      THEN
5336
         raise_application_error (-20000,
5337
                                 'Record was probably deleted by the Buildtool during your edit-form session. Please create a new Daemon Instruction.'
5338
                                 );
5339
      WHEN OTHERS
5340
      THEN
5341
         raise;
5342
   END update_daemon_inst;
5343
 
5344
/*-------------------------------------------------------------------------------------------------------*/
5345
   -- Returns a comma-separated list of operation codes found for a given rtag and pv_id combination
5346
   -- This is for use by the Release Manager Website code.
5347
   --
5348
   FUNCTION daemon_ops_for_rtag_pvid(
5349
      nRtag_id IN NUMBER,
5350
      nPv_id IN NUMBER
5351
   ) RETURN VARCHAR2
5352
   IS
5353
      CURSOR daemon_inst_cur IS
5354
         SELECT di.OP_CODE
5355
         FROM daemon_instructions di
5356
         WHERE di.RTAG_ID = nRtag_id
5357
            AND di.PV_ID = nPv_id;
5358
 
5359
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5360
 
5361
      sRetList VARCHAR2(4000) := '';
5362
 
5363
   BEGIN
5364
      OPEN daemon_inst_cur;
5365
 
5366
      FETCH daemon_inst_cur
5367
      INTO daemon_inst_rec;
5368
 
5369
      WHILE daemon_inst_cur%FOUND
5370
      LOOP
5371
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5372
 
5373
         FETCH daemon_inst_cur
5374
         INTO daemon_inst_rec;
5375
      END LOOP;
5376
 
5377
      CLOSE daemon_inst_cur;
5378
 
5379
      RETURN sRetList;
5380
   END daemon_ops_for_rtag_pvid;
5381
/*-------------------------------------------------------------------------------------------------------*/
5382
   -- Returns a comma-separated list of operation codes found for a given rtag
5383
   -- This is for use by the Release Manager Website code.
5384
   --
5385
   FUNCTION daemon_ops_for_rtag(
5386
      nRtag_id IN NUMBER
5387
   ) RETURN VARCHAR2
5388
   IS
5389
      CURSOR daemon_inst_cur IS
5390
         SELECT di.OP_CODE
5391
         FROM daemon_instructions di
5392
         WHERE di.RTAG_ID = nRtag_id;
5393
 
5394
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5395
 
5396
      sRetList VARCHAR2(4000) := '';
5397
 
5398
   BEGIN
5399
      OPEN daemon_inst_cur;
5400
 
5401
      FETCH daemon_inst_cur
5402
      INTO daemon_inst_rec;
5403
 
5404
      WHILE daemon_inst_cur%FOUND
5405
      LOOP
5406
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5407
 
5408
         FETCH daemon_inst_cur
5409
         INTO daemon_inst_rec;
5410
      END LOOP;
5411
 
5412
      CLOSE daemon_inst_cur;
5413
 
5414
      RETURN sRetList;
5415
   END daemon_ops_for_rtag;
5416
/*-------------------------------------------------------------------------------------------------------*/
5417
   -- Gets a record from the daemon instruction table that can be carried out now and returns the fields
5418
   -- in the record a daemon will need
5419
   -- The Buildtool should use this to find a job to do for a particular release. It should then call
5420
   -- mark_daemon_inst_in_progress(inst_id) before carrying out the work, and then call
5421
   -- mark_daemon_inst_completed(inst_id) to signal its completion.
5422
   -- Can be called repeatedly to get a full list of all instructions for a release, by passing back in
5423
   -- the instruction ID obtained from the previous call (the 1st call should use 0)
5424
   -- Can be called repeatedly to get a full list of all instructions of a specific op-code value for a release,
5425
   -- by passing back in an op-code value of 0 or higher (use -1 if no op-code filtering is needed)
5426
   -- Returns 1 if a record was found, else 0.
5427
   --
5428
   FUNCTION get_daemon_inst(
5429
      nRtag_id IN NUMBER,
5430
      nInst_id IN OUT NUMBER,
5431
      nOp_code IN OUT NUMBER,
5432
      nPv_id OUT NUMBER,
5433
      nUser_id OUT NUMBER,
5434
      nInProgress OUT NUMBER
5435
   ) RETURN NUMBER
5436
   IS
5437
      CURSOR daemon_inst_cur IS
5438
         SELECT di.daemon_instructions_id, di.op_code, di.pv_id ,di.user_id, di.in_progress
5439
           FROM daemon_instructions di
5440
          WHERE di.rtag_id = nRtag_id
5441
            AND di.daemon_instructions_id > nInst_id
5442
            AND di.scheduled_datetime <= ora_sysdatetime
5443
            AND ((nOp_code = -1) OR (nOp_code = di.op_code))
5444
            AND rownum <= 1
5445
       ORDER BY di.daemon_instructions_id;
5446
 
5447
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5448
   BEGIN
5449
      OPEN daemon_inst_cur;
5450
 
5451
      FETCH daemon_inst_cur
5452
      INTO daemon_inst_rec;
5453
 
5454
      -- If we found a record, return it.
5455
      IF daemon_inst_cur%FOUND THEN
5456
         nInst_id := daemon_inst_rec.daemon_instructions_id;
5457
         nOp_code := daemon_inst_rec.op_code;
5458
         nPv_id   := daemon_inst_rec.pv_id;
5459
         nUser_id := daemon_inst_rec.user_id;
5460
         IF daemon_inst_rec.in_progress = '1' THEN
5461
            nInProgress := 1;
5462
         ELSE
5463
            nInProgress := 0;
5464
         END IF;
5465
         CLOSE daemon_inst_cur;
5466
         RETURN 1;
5467
      END IF;
5468
 
5469
      CLOSE daemon_inst_cur;
5470
      RETURN 0;
5471
 
5472
   END get_daemon_inst;
5473
/*-------------------------------------------------------------------------------------------------------*/
5474
   -- Marks a daemon instruction as being processed by a daemon
5475
   -- The Buildtool should use this before it embarks on the work the instruction commands
5476
   --
5477
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER )
5478
   IS
5479
   BEGIN
5480
      UPDATE Daemon_Instructions
5481
      SET in_progress = '1'
5482
      WHERE daemon_instructions_id = nInstId;
5483
 
5484
   END mark_daemon_inst_in_progress;
5485
 
5486
/*-------------------------------------------------------------------------------------------------------*/
5487
   -- Once the Buildtool has finished carrying out the daemon instruction, it should call this stored
5488
   -- procedure in order to either delete the instruction or update it in the case where it is a repeating
5489
   -- instruction.
5490
   --
5491
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER )
5492
   IS
5493
      repSecs NUMBER;
5494
      schedDate  DATE;
5495
 
5496
      CURSOR daemon_inst_cur IS
5497
         SELECT di.REPEAT_SECS AS repSecs, di.SCHEDULED_DATETIME AS schedDate
5498
         FROM daemon_instructions di
5499
         WHERE di.daemon_instructions_id = nInstId;
5500
 
5501
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5502
   BEGIN
5503
      OPEN daemon_inst_cur;
5504
 
5505
      FETCH daemon_inst_cur
5506
      INTO daemon_inst_rec;
5507
 
5508
      IF daemon_inst_cur%FOUND THEN
5509
 
5510
         -- if instruction repeats daily, add 1 day to the scheduled time and update the record
5511
         IF daemon_inst_rec.repSecs = 86400 THEN
5512
            UPDATE Daemon_Instructions
5513
               SET scheduled_datetime = daemon_inst_rec.schedDate + 1,
5514
                  in_progress = '0'
5515
            WHERE daemon_instructions_id = nInstId;
5516
         ELSE
5517
            -- Delete the daemon instruction, we are done with it
5518
            del_daemon_inst(nInstId);
5519
         END IF;
5520
      END IF;
5521
 
5522
      CLOSE daemon_inst_cur;
5523
 
5524
   EXCEPTION
5525
      WHEN OTHERS
5526
      THEN
5527
         raise;
5528
 
5529
   END mark_daemon_inst_completed;
5530
/*-------------------------------------------------------------------------------------------------------*/
5531
   -- This function deletes any old daemon instruction that appears stranded due to a problem that might
5532
   -- have occured during buildtool operation such as might occur if the buildtool or the machine it was
5533
   -- hosted on came down whilst it was processing a daemon instruction.
5534
   PROCEDURE cleanup_stranded_daemon_insts
5535
   IS
5536
   BEGIN
5537
      -- delete records at least two days old
5538
      DELETE FROM daemon_instructions di
5539
      WHERE  (di.scheduled_datetime + 5) <= ora_sysdatetime;
5540
 
5541
   END cleanup_stranded_daemon_insts;
5542
/*-------------------------------------------------------------------------------------------------------*/
5543
  --This function supersedes function, add_daemon. Done for DEVI-046806
5544
   PROCEDURE add_daemon_config (
5545
      nrtagid           IN   NUMBER,
5546
      nbmcon_id         IN   NUMBER,
5547
      sdaemon_mode      IN   VARCHAR2,
5548
      sgbebuildfilter   IN   VARCHAR2
5549
   )
5550
   IS
5551
      nrecordnumber   NUMBER;
5552
      nrconid         NUMBER;
5553
      sdaemonhostname VARCHAR2(50);
5554
      ngbeid         NUMBER;
5555
   BEGIN
5556
      -- Get RCON_ID
5557
      SELECT seq_rcon_id.NEXTVAL
5558
      INTO nrconid
5559
      FROM DUAL;
5560
 
5561
      SELECT COUNT (*)
5562
      INTO nrecordnumber
5563
      FROM release_config
5564
      WHERE rtag_id = nrtagid;
5565
 
5566
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5567
      FROM build_machine_config
5568
      WHERE bmcon_id = nbmcon_id;
5569
 
5570
      INSERT INTO release_config
5571
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5572
                gbe_id, gbe_buildfilter)
5573
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
5574
                ngbeid, sgbebuildfilter);
5575
 
5576
      -- A newly configured daemon should initially be paused (DEVI-047277)
5577
      INSERT INTO run_level
5578
                  (rcon_id, pause)
5579
           VALUES (nrconid, 2);
5580
 
5581
   END;
5582
 
5583
/*-------------------------------------------------------------------------------------------------------*/
5584
  --This function supersedes function, update_daemon. Done for DEVI-046806
5585
   PROCEDURE update_daemon_config (
5586
      nrconid           IN   NUMBER,
5587
      nbmcon_id         IN   NUMBER,
5588
      sdaemon_mode      IN   VARCHAR2,
5589
      sgbebuildfilter   IN   VARCHAR2
5590
   )
5591
   IS
5592
      sdaemonhostname VARCHAR2(50);
5593
      ngbeid         NUMBER;
5594
   BEGIN
5595
 
5596
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5597
      FROM build_machine_config
5598
      WHERE bmcon_id = nbmcon_id;
5599
 
5600
      UPDATE release_config
5601
         SET daemon_hostname = sdaemonhostname,
5602
            gbe_id = ngbeid,
5603
            daemon_mode = sdaemon_mode,
5604
            gbe_buildfilter = sgbebuildfilter
5605
      WHERE rcon_id = nrconid;
5606
   END;
5607
 
5608
 
5609
/*-------------------------------------------------------------------------------------------------------*/
5610
   PROCEDURE add_build_machine (
5611
      sdisplay_name          IN   VARCHAR2,
5612
      smachine_hostname      IN   VARCHAR2,
5613
      ngbeid                 IN   NUMBER,
5614
      sdescription           IN   VARCHAR2
5615
   )
5616
   IS
5617
      nrecordnumber   NUMBER;
5618
      nbmcon_id       NUMBER;
5619
   BEGIN
5620
      -- Get BMCON_ID
5621
      SELECT seq_bmcon_id.NEXTVAL INTO nbmcon_id FROM DUAL;
5622
 
5623
      INSERT INTO build_machine_config(bmcon_id, display_name, machine_hostname,gbe_id,description)
5624
            VALUES (nbmcon_id,sdisplay_name,smachine_hostname,ngbeid,sdescription);
5625
 
5626
   EXCEPTION
5627
      WHEN DUP_VAL_ON_INDEX
5628
      THEN
5629
         raise_application_error (-20000,
5630
                                 'Cannot have duplicate machines.'
5631
                                 );
5632
 
5633
   END;
5634
 
5635
/*-------------------------------------------------------------------------------------------------------*/
5636
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2)
5637
   IS
5638
   BEGIN
5639
      DELETE FROM build_machine_config
5640
            WHERE bmcon_id IN (
5641
                     SELECT * FROM THE
5642
                              (SELECT CAST
5643
                                          (in_list_number (sbmcon_id_list) AS relmgr_number_tab_t
5644
                                          )
5645
                                 FROM DUAL
5646
                              ));
5647
   END;
5648
 
5649
 
5650
/*-------------------------------------------------------------------------------------------------------*/
5651
   PROCEDURE update_build_machine (
5652
      nbmcon_id              IN   NUMBER,
5653
      sdisplay_name          IN   VARCHAR2,
5654
      smachine_hostname      IN   VARCHAR2,
5655
      ngbeid                 IN   NUMBER,
5656
      sdescription           IN   VARCHAR2
5657
   )
5658
   IS
5659
   BEGIN
5660
      UPDATE build_machine_config
5661
         SET display_name = sdisplay_name,
5662
             machine_hostname = smachine_hostname,
5663
             gbe_id = ngbeid,
5664
             description = sdescription
5665
      WHERE bmcon_id = nbmcon_id;
5666
   EXCEPTION
5667
      WHEN DUP_VAL_ON_INDEX
5668
      THEN
5669
         raise_application_error (-20000,
5670
                                 'Cannot have duplicate machines.'
5671
                                 );
5672
   END;
5673
END pk_buildapi;
4040 dpurdie 5674
 
1374 dpurdie 5675
/
1373 dpurdie 5676
 
4040 dpurdie 5677
/
5678
--------------------------------------------------------
5679
--  DDL for Package Body PK_ENVIRONMENT
5680
--------------------------------------------------------
5681
 
1373 dpurdie 5682
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
5683
IS
5684
 
5685
   /*-------------------------------------------------------------------------------------------------------*/
5686
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
5687
     RETURN NUMBER
5688
   IS
5689
   BEGIN
5690
      /*
5691
     || N - unlocked
5692
     || Y - release and locked
5693
     || P - penging approval
5694
     || A - approved package ready for auto-build
5695
     */
5696
     IF cdlock = 'N' OR cdlock = 'R'
5697
     THEN
5698
       -- WORK IN PROGRESS --
5699
       RETURN 0;
5700
     ELSIF cdlock = 'P' OR cdlock = 'A'
5701
     THEN
5702
       -- PENDING --
5703
       RETURN 1;
5704
     ELSIF cdlock = 'Y'
5705
     THEN
5706
       -- RELEASED --
5707
       RETURN 2;
5708
     ELSE
5709
       -- NOT FOUND --
5710
       raise_application_error
5711
                   (-20000,
5712
                      'Cannot decide where to place package. [cDlock='
5713
                    || cdlock
5714
                    || ']'
5715
                   );
5716
     END IF;
5717
   END;
5718
 
5719
/*-------------------------------------------------------------------------------------------------------*/
5720
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
5721
     RETURN NUMBER
5722
   IS
5723
     envtab   NUMBER         := -1;
5724
 
5725
     CURSOR curarea
5726
     IS
5727
       SELECT 2 AS envtab
5728
         FROM release_content rc
5729
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5730
       UNION
5731
       SELECT 0 AS envtab
5732
         FROM work_in_progress wip
5733
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5734
       UNION
5735
       SELECT 1 AS envtab
5736
         FROM planned pl
5737
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5738
 
5739
     recarea   curarea%ROWTYPE;
5740
   BEGIN
5741
     OPEN curarea;
5742
 
5743
     FETCH curarea
5744
      INTO recarea;
5745
 
5746
     IF curarea%FOUND
5747
     THEN
5748
       envtab := recarea.envtab;
5749
     END IF;
5750
 
5751
     CLOSE curarea;
5752
 
5753
     RETURN envtab;
5754
   END;
5755
 
5756
/*-------------------------------------------------------------------------------------------------------*/
5757
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
5758
     RETURN NUMBER
5759
   IS
5760
     ispatch   package_versions.dlocked%TYPE;
5761
     viewid   NUMBER                    := -1;
5762
 
5763
     CURSOR curview
5764
     IS
5765
       SELECT rc.base_view_id AS view_id
5766
         FROM release_content rc
5767
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5768
       UNION
5769
       SELECT wip.view_id AS view_id
5770
         FROM work_in_progress wip
5771
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5772
       UNION
5773
       SELECT pl.view_id AS view_id
5774
         FROM planned pl
5775
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5776
 
5777
     recview   curview%ROWTYPE;
5778
   BEGIN
5779
     -- Get dlock state
5780
     SELECT pv.is_patch
5781
      INTO ispatch
5782
      FROM package_versions pv
5783
      WHERE pv.pv_id = pvid;
5784
 
5785
     -- Decide which view id should package go under.
5786
     IF (ispatch != 'Y') OR (ispatch IS NULL)
5787
     THEN
5788
       -- Get VIEW ID of Package
5789
       OPEN curview;
5790
 
5791
       FETCH curview
5792
        INTO recview;
5793
 
5794
       IF curview%FOUND
5795
       THEN
5796
         viewid := recview.view_id;
5797
       ELSE
5798
         raise_application_error
5799
            (-20000,
5800
               'Cannot find view_id to proceed. [PvId='
5801
            || pvid
5802
            || ']. The current version may not exist in the release anymore.'
5803
            );
5804
       END IF;
5805
 
5806
       CLOSE curview;
5807
     ELSE
5808
       -- Get VIEW ID of Patch (view id of parent package)
5809
       SELECT rc.base_view_id
5810
         INTO viewid
5811
         FROM release_content rc, package_patches ppv
5812
        WHERE rc.rtag_id = rtagid
5813
         AND rc.pv_id = ppv.pv_id
5814
         AND ppv.patch_id = pvid;
5815
     END IF;
5816
 
5817
     RETURN viewid;
5818
   END;
5819
 
5820
/*-------------------------------------------------------------------------------------------------------*/
5821
   PROCEDURE add_package (
5822
     pvid    IN   NUMBER,
5823
     viewid   IN   NUMBER,
5824
     rtagid   IN   NUMBER,
5825
     userid   IN   NUMBER
5826
   )
5827
   IS
5828
     dlocked   package_versions.dlocked%TYPE;
5829
     envtab   NUMBER;
5830
   BEGIN
5831
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
5832
     THEN
5833
       -- Get dlock state
5834
       SELECT pv.dlocked
5835
         INTO dlocked
5836
         FROM package_versions pv
5837
        WHERE pv.pv_id = pvid;
5838
 
5839
       -- Get which area should go under
5840
       envtab := select_environment_area (dlocked);
5841
       -- Log
5842
       log_action (pvid, 'action', userid, 'Start of Package Add...');
5843
 
5844
       -- Remove Package
5845
       IF envtab = 0
5846
       THEN
5847
         -- WORK IN PROGRESS --
5848
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
5849
       ELSIF envtab = 1
5850
       THEN
5851
         -- PENDING --
5852
         pk_planned.add_package (pvid, viewid, rtagid, userid);
5853
       ELSIF envtab = 2
5854
       THEN
5855
         -- RELEASED --
5856
         -- NOTE: this package will be replaced with matching package
5857
         pk_release.add_package (pvid, viewid, rtagid, userid);
5858
         -- Now do post Release Actions
5859
         pk_release.run_post_actions (pvid, rtagid);
5860
       END IF;
5861
 
5862
       -- Log
5863
       log_action (pvid, 'action', userid, 'End of Package Add...');
5864
     END IF;
5865
   END;
5866
 
5867
/*-------------------------------------------------------------------------------------------------------*/
5868
   PROCEDURE add_package_bulk (
5869
     pvidlist   IN   VARCHAR2,
5870
     viewid    IN   NUMBER,
5871
     rtagid    IN   NUMBER,
5872
     userid    IN   NUMBER
5873
   )
5874
   IS
5875
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
5876
                                                        ();
5877
     dlocked      package_versions.dlocked%TYPE;
5878
     pvid         NUMBER;
5879
     envtab       NUMBER;
5880
   BEGIN
5881
     /*--------------- Business Rules Here -------------------*/
5882
     IF (pvidlist IS NULL)
5883
     THEN
5884
       raise_application_error (-20000,
5885
                          'Please select at least one package.'
5886
                         );
5887
     END IF;
5888
 
5889
/*-------------------------------------------------------*/
5890
     nidcollector := in_list_number (pvidlist);
5891
 
5892
     FOR i IN 1 .. nidcollector.COUNT
5893
     LOOP
5894
       pvid := nidcollector (i);
5895
       add_package (pvid, viewid, rtagid, userid);
5896
     END LOOP;
5897
   END;
5898
 
5899
/*-------------------------------------------------------------------------------------------------------*/
5900
   PROCEDURE replace_package (
5901
     newpvid  IN   NUMBER,
5902
     oldpvid  IN   NUMBER,
5903
     rtagid   IN   NUMBER,
5904
     userid   IN   NUMBER
5905
   )
5906
   IS
5907
     dlocked      package_versions.dlocked%TYPE;
5908
     viewid       NUMBER;
5909
     envtab       NUMBER;
5910
     ROWCOUNT     NUMBER;
5911
     creleasemode CHAR (1);
5912
     npkgid       NUMBER;
5913
   BEGIN
5914
     /*--------------- Business Rules Here -------------------*/
5915
     -- Check if oldPvId exists. It could have been removed
5916
     SELECT COUNT (pv.pv_id)
5917
       INTO ROWCOUNT
5918
       FROM package_versions pv
5919
      WHERE pv.pv_id = oldpvid;
5920
 
5921
/*-------------------------------------------------------*/
5922
 
5923
     /* This procedure is usually used by "History" option in Release Manager */
5924
 
5925
     -- Get dlock state
5926
     SELECT pv.dlocked
5927
       INTO dlocked
5928
       FROM package_versions pv
5929
      WHERE pv.pv_id = newpvid;
5930
 
5931
     -- Get VIEW_ID ---
5932
     IF ROWCOUNT = 1
5933
     THEN
5934
       viewid := get_view_location (oldpvid, rtagid);
5935
     ELSE
5936
       -- Set ViewID to default
5937
       viewid := 7;
5938
     END IF;
5939
 
5940
     -- Get which area should go under
5941
     envtab := select_environment_area (dlocked);
5942
     -- Log
5943
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
5944
 
5945
     -- Replace package
5946
     IF envtab = 0
5947
     THEN
5948
       -- WORK IN PROGRESS --
5949
 
5950
       -- Delete old package
5951
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
5952
 
5953
       -- Add new package
5954
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
5955
     ELSIF envtab = 1
5956
     THEN
5957
       -- PENDING --
5958
 
5959
       -- Delete old package
5960
       pk_planned.remove_package (oldpvid, rtagid, userid);
5961
 
5962
       -- Add new package
5963
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
5964
     ELSIF envtab = 2
5965
     THEN
5966
       -- RELEASED --
5967
 
5968
       -- Delete old package
5969
       pk_release.remove_package (oldpvid, rtagid, userid);
5970
       -- Add new package
5971
       pk_release.add_package (newpvid, viewid, rtagid, userid);
5972
 
5973
       -- update the pegging table
5974
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5975
 
5976
       -- update the advisory ripple table
5977
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5978
 
5979
       -- Now do post Release Actions
5980
       pk_release.run_post_actions (newpvid, rtagid);
5981
     END IF;
5982
 
5983
     -- Log
5984
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
5985
   END;
5986
 
5987
/*-------------------------------------------------------------------------------------------------------*/
5988
   FUNCTION remove_package (
5989
     pvid        IN   NUMBER,
5990
     rtagid      IN   NUMBER,
5991
     userid      IN   NUMBER,
5992
     forceremove IN   CHAR
5993
   )
5994
     RETURN NUMBER
5995
   IS
5996
     envtab      NUMBER;
5997
     isused      BOOLEAN;
5998
     recordcount   NUMBER;
5999
   BEGIN
6000
/*--------------- Business Rules Here -------------------*/
6001
/*-------------------------------------------------------*/
6002
 
6003
     -- Find location of package
6004
     envtab := get_package_area (pvid, rtagid);
6005
 
6006
     -- Remove Package
6007
     IF envtab = 0
6008
     THEN
6009
       -- WORK IN PROGRESS --
6010
       -- Delete package
6011
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6012
 
6013
       RETURN 0;
6014
     ELSIF envtab = 1
6015
     THEN
6016
       -- PENDING --
6017
       -- Delete package
6018
       pk_planned.remove_package (pvid, rtagid, userid);
6019
 
6020
       RETURN 0;
6021
     ELSIF envtab = 2
6022
     THEN
6023
       -- RELEASED --
6024
 
6025
       -- Check if is used by other packages
6026
       isused := TRUE;
6027
 
6028
       IF forceremove = 'N'
6029
       THEN
6030
         SELECT COUNT (pv.pv_id)
6031
           INTO recordcount
6032
           FROM (SELECT dpv.pkg_id, dpv.v_ext
6033
                 FROM release_content rc,
6034
                     package_dependencies dep,
6035
                     package_versions dpv
6036
                WHERE rc.rtag_id = rtagid
6037
                  AND rc.pv_id = dep.pv_id
6038
                  AND dep.dpv_id = dpv.pv_id) rdep,
6039
               package_versions pv
6040
          WHERE pv.pkg_id = rdep.pkg_id
6041
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
6042
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
6043
            AND pv.pv_id = pvid;
6044
 
6045
         IF recordcount > 0
6046
         THEN
6047
            RETURN 1;               -- Return 1 as package being used
6048
         ELSE
6049
            isused := FALSE;
6050
         END IF;
6051
       END IF;
6052
 
6053
       IF forceremove = 'Y' OR NOT isused
6054
       THEN
6055
         -- Delete old package
6056
         pk_release.remove_package (pvid, rtagid, userid);
6057
 
6058
         -- Delete old package's pegging info
6059
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
6060
 
6061
         -- Delete old package's advisory ripple info
6062
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
6063
 
6064
         -- Now do post Release Actions
6065
         pk_release.run_post_actions (pvid, rtagid);
6066
         RETURN 0;
6067
       END IF;
6068
     END IF;
6069
   END;
6070
 
6071
/*-------------------------------------------------------------------------------------------------------*/
6072
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6073
 
6074
   PROCEDURE get_environment_items (
6075
     viewtype         IN      NUMBER,
6076
     userid           IN      NUMBER,
6077
     rtagid           IN      NUMBER,
6078
     sviewidshowlist  IN      VARCHAR2,
6079
     ntruerecordcount OUT     NUMBER,
6080
     recordset        OUT     typecur
6081
   )
6082
   IS
6083
   BEGIN
6084
     -- Get true record count because views can give false count
6085
     SELECT COUNT (pl.pv_id)
6086
      INTO ntruerecordcount
6087
      FROM environment_view pl
6088
      WHERE pl.rtag_id = rtagid;
6089
 
6090
     IF viewtype = 1
6091
     THEN
6092
       /*--- GUEST VIEW ---*/
6093
       OPEN recordset FOR
6094
         SELECT   *
6095
            FROM (
6096
                 /* Base Views collapsed */
6097
                 SELECT DISTINCT vi.view_id, vi.view_name,
6098
                             TO_NUMBER (NULL) AS pkg_state,
6099
                             TO_NUMBER (NULL) AS deprecated_state,
6100
                             TO_NUMBER (NULL) AS pv_id,
6101
                             NULL AS pkg_name, NULL AS pkg_version,
6102
                             NULL AS dlocked, NULL AS pv_description,
6103
                             rel.operation
6104
                         FROM environment_view rel, views vi
6105
                        WHERE rel.view_id = vi.view_id
6106
                          AND rtag_id = rtagid
6107
                          AND rel.view_id NOT IN (
6108
                               SELECT *
6109
                                 FROM THE
6110
                                       (SELECT CAST
6111
                                               (in_list_number
6112
                                                  (sviewidshowlist
6113
                                                  ) AS relmgr_number_tab_t
6114
                                               )
6115
                                         FROM DUAL
6116
                                       ))
6117
                 UNION
6118
                 /* Base Views expanded */
6119
                 SELECT vi.view_id, vi.view_name,
6120
                      DECODE (rel.pkg_state,
6121
                            NULL, 0,
6122
                            rel.pkg_state
6123
                           ) AS pkg_state,
6124
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6125
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6126
                      rel.operation
6127
                  FROM environment_view rel,
6128
                      PACKAGES pkg,
6129
                      package_versions pv,
6130
                      views vi
6131
                  WHERE pv.pkg_id = pkg.pkg_id
6132
                   AND rel.pv_id = pv.pv_id
6133
                   AND rel.view_id = vi.view_id
6134
                   AND rel.view_id IN (
6135
                        SELECT *
6136
                          FROM THE
6137
                                (SELECT CAST
6138
                                        (in_list_number
6139
                                               (sviewidshowlist) AS relmgr_number_tab_t
6140
                                        )
6141
                                  FROM DUAL
6142
                                ))
6143
                   AND rtag_id = rtagid) ord
6144
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6145
     ELSIF viewtype = 2
6146
     THEN
6147
       /*--- PERSONAL VIEW ---*/
6148
       OPEN recordset FOR
6149
         SELECT   *
6150
            FROM (
6151
                 /* Base Views collapsed */
6152
                 SELECT DISTINCT vi.view_id, vi.view_name,
6153
                             TO_NUMBER (NULL) AS pkg_state,
6154
                             TO_NUMBER (NULL) AS deprecated_state,
6155
                             TO_NUMBER (NULL) AS pv_id,
6156
                             NULL AS pkg_name, NULL AS pkg_version,
6157
                             NULL AS dlocked, NULL AS pv_description,
6158
                             rel.operation
6159
                         FROM environment_view rel,
6160
                             view_settings vs,
6161
                             views vi
6162
                        WHERE rel.view_id = vi.view_id
6163
                          AND vs.view_id = rel.view_id
6164
                          AND vs.user_id = userid
6165
                          AND rtag_id = rtagid
6166
                          AND rel.view_id NOT IN (
6167
                               SELECT *
6168
                                 FROM THE
6169
                                       (SELECT CAST
6170
                                               (in_list_number
6171
                                                  (sviewidshowlist
6172
                                                  ) AS relmgr_number_tab_t
6173
                                               )
6174
                                         FROM DUAL
6175
                                       ))
6176
                 UNION
6177
                 /* Base Views expanded */
6178
                 SELECT vi.view_id, vi.view_name,
6179
                      DECODE (rel.pkg_state,
6180
                            NULL, 0,
6181
                            rel.pkg_state
6182
                           ) AS pkg_state,
6183
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6184
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6185
                      rel.operation
6186
                  FROM environment_view rel,
6187
                      PACKAGES pkg,
6188
                      package_versions pv,
6189
                      views vi,
6190
                      view_settings vs
6191
                  WHERE pv.pkg_id = pkg.pkg_id
6192
                   AND rel.pv_id = pv.pv_id
6193
                   AND rel.view_id = vi.view_id
6194
                   AND vs.view_id = vi.view_id
6195
                   AND vs.user_id = userid
6196
                   AND rel.view_id IN (
6197
                        SELECT *
6198
                          FROM THE
6199
                                (SELECT CAST
6200
                                        (in_list_number
6201
                                               (sviewidshowlist) AS relmgr_number_tab_t
6202
                                        )
6203
                                  FROM DUAL
6204
                                ))
6205
                   AND rtag_id = rtagid
6206
                 UNION
6207
                 /* Private Views collapsed */
6208
                 SELECT vi.view_id, vi.view_name,
6209
                      TO_NUMBER (NULL) AS pkg_state,
6210
                      TO_NUMBER (NULL) AS deprecated_state,
6211
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6212
                      NULL AS pkg_version, NULL AS dlocked,
6213
                      NULL AS pv_description,
6214
                      rel.operation
6215
                  FROM view_settings vs,
6216
                      view_def vd,
6217
                      views vi,
6218
                      environment_view rel,
6219
                      package_versions pv
6220
                  WHERE vs.view_id = vi.view_id
6221
                   AND rel.pv_id = pv.pv_id
6222
                   AND vd.pkg_id = pv.pkg_id
6223
                   AND vd.view_id = vi.view_id
6224
                   AND vi.base_view = 'N'
6225
                   AND rel.rtag_id = rtagid
6226
                   AND vs.user_id = userid
6227
                   AND vi.view_id NOT IN (
6228
                        SELECT *
6229
                          FROM THE
6230
                                (SELECT CAST
6231
                                        (in_list_number
6232
                                               (sviewidshowlist) AS relmgr_number_tab_t
6233
                                        )
6234
                                  FROM DUAL
6235
                                ))
6236
                 UNION
6237
                 /* Private Views expanded */
6238
                 SELECT vi.view_id, vi.view_name,
6239
                      DECODE (rel.pkg_state,
6240
                            NULL, 0,
6241
                            rel.pkg_state
6242
                           ) AS pkg_state,
6243
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6244
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6245
                      rel.operation
6246
                  FROM users usr,
6247
                      view_settings vs,
6248
                      view_def vd,
6249
                      views vi,
6250
                      environment_view rel,
6251
                      PACKAGES pkg,
6252
                      package_versions pv
6253
                  WHERE vs.user_id = usr.user_id
6254
                   AND vs.view_id = vi.view_id
6255
                   AND vd.view_id = vi.view_id
6256
                   AND pv.pkg_id = pkg.pkg_id
6257
                   AND rel.pv_id = pv.pv_id
6258
                   AND rel.rtag_id = rtagid
6259
                   AND vd.pkg_id = pkg.pkg_id
6260
                   AND vi.base_view = 'N'
6261
                   AND vi.view_id IN (
6262
                        SELECT *
6263
                          FROM THE
6264
                                (SELECT CAST
6265
                                        (in_list_number
6266
                                               (sviewidshowlist) AS relmgr_number_tab_t
6267
                                        )
6268
                                  FROM DUAL
6269
                                ))
6270
                   AND usr.user_id = userid) ord
6271
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6272
     END IF;
6273
   END;
6274
 
6275
/*-------------------------------------------------------------------------------------------------------*/
6276
   PROCEDURE get_released_items (
6277
     viewtype         IN      NUMBER,
6278
     userid           IN      NUMBER,
6279
     rtagid           IN      NUMBER,
6280
     sviewidshowlist  IN      VARCHAR2,
6281
     ntruerecordcount OUT     NUMBER,
6282
     recordset        OUT     typecur
6283
   )
6284
   IS
6285
   BEGIN
6286
     -- Get true record count because views can give false count
6287
     SELECT COUNT (rc.pv_id)
6288
      INTO ntruerecordcount
6289
      FROM release_content rc
6290
      WHERE rc.rtag_id = rtagid;
6291
 
6292
     IF viewtype = 1
6293
     THEN
6294
       /*--- GUEST VIEW ---*/
6295
       OPEN recordset FOR
6296
         SELECT   *
6297
            FROM (
6298
                 /* Base Views collapsed */
6299
                 SELECT DISTINCT vi.view_id, vi.view_name,
6300
                             TO_NUMBER (NULL) AS pkg_state,
6301
                             TO_NUMBER (NULL) AS deprecated_state,
6302
                             TO_NUMBER (NULL) AS pv_id,
6303
                             NULL AS pkg_name, NULL AS pkg_version,
6304
                             NULL AS dlocked, NULL AS pv_description
6305
                         FROM release_content rel, views vi
6306
                        WHERE rel.base_view_id = vi.view_id
6307
                          AND rtag_id = rtagid
6308
                          AND rel.base_view_id NOT IN (
6309
                               SELECT *
6310
                                 FROM THE
6311
                                       (SELECT CAST
6312
                                               (in_list_number
6313
                                                  (sviewidshowlist
6314
                                                  ) AS relmgr_number_tab_t
6315
                                               )
6316
                                         FROM DUAL
6317
                                       ))
6318
                 UNION
6319
                 /* Base Views expanded */
6320
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6321
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6322
                      pv.pkg_version, pv.dlocked, pv.pv_description
6323
                  FROM release_content rel,
6324
                      PACKAGES pkg,
6325
                      package_versions pv,
6326
                      views vi
6327
                  WHERE pv.pkg_id = pkg.pkg_id
6328
                   AND rel.pv_id = pv.pv_id
6329
                   AND rel.base_view_id = vi.view_id
6330
                   AND rel.base_view_id IN (
6331
                        SELECT *
6332
                          FROM THE
6333
                                (SELECT CAST
6334
                                        (in_list_number
6335
                                               (sviewidshowlist) AS relmgr_number_tab_t
6336
                                        )
6337
                                  FROM DUAL
6338
                                ))
6339
                   AND rtag_id = rtagid) ord
6340
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6341
     ELSIF viewtype = 2
6342
     THEN
6343
       /*--- PERSONAL VIEW ---*/
6344
       OPEN recordset FOR
6345
         SELECT   *
6346
            FROM (
6347
                 /* Base Views collapsed */
6348
                 SELECT DISTINCT vi.view_id, vi.view_name,
6349
                             TO_NUMBER (NULL) AS pkg_state,
6350
                             TO_NUMBER (NULL) AS deprecated_state,
6351
                             TO_NUMBER (NULL) AS pv_id,
6352
                             NULL AS pkg_name, NULL AS pkg_version,
6353
                             NULL AS dlocked, NULL AS pv_description
6354
                         FROM release_content rel,
6355
                             view_settings vs,
6356
                             views vi
6357
                        WHERE rel.base_view_id = vi.view_id
6358
                          AND vs.view_id = rel.base_view_id
6359
                          AND vs.user_id = userid
6360
                          AND rtag_id = rtagid
6361
                          AND rel.base_view_id NOT IN (
6362
                               SELECT *
6363
                                 FROM THE
6364
                                       (SELECT CAST
6365
                                               (in_list_number
6366
                                                  (sviewidshowlist
6367
                                                  ) AS relmgr_number_tab_t
6368
                                               )
6369
                                         FROM DUAL
6370
                                       ))
6371
                 UNION
6372
                 /* Base Views expanded */
6373
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6374
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6375
                      pv.pkg_version, pv.dlocked, pv.pv_description
6376
                  FROM release_content rel,
6377
                      PACKAGES pkg,
6378
                      package_versions pv,
6379
                      views vi,
6380
                      view_settings vs
6381
                  WHERE pv.pkg_id = pkg.pkg_id
6382
                   AND rel.pv_id = pv.pv_id
6383
                   AND rel.base_view_id = vi.view_id
6384
                   AND vs.view_id = vi.view_id
6385
                   AND vs.user_id = userid
6386
                   AND rel.base_view_id IN (
6387
                        SELECT *
6388
                          FROM THE
6389
                                (SELECT CAST
6390
                                        (in_list_number
6391
                                               (sviewidshowlist) AS relmgr_number_tab_t
6392
                                        )
6393
                                  FROM DUAL
6394
                                ))
6395
                   AND rtag_id = rtagid
6396
                 UNION
6397
                 /* Private Views collapsed */
6398
                 SELECT vi.view_id, vi.view_name,
6399
                      TO_NUMBER (NULL) AS pkg_state,
6400
                      TO_NUMBER (NULL) AS deprecated_state,
6401
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6402
                      NULL AS pkg_version, NULL AS dlocked,
6403
                      NULL AS pv_description
6404
                  FROM view_settings vs,
6405
                      view_def vd,
6406
                      views vi,
6407
                      release_content rel,
6408
                      package_versions pv
6409
                  WHERE vs.view_id = vi.view_id
6410
                   AND rel.pv_id = pv.pv_id
6411
                   AND vd.pkg_id = pv.pkg_id
6412
                   AND vd.view_id = vi.view_id
6413
                   AND vi.base_view = 'N'
6414
                   AND rel.rtag_id = rtagid
6415
                   AND vs.user_id = userid
6416
                   AND vi.view_id NOT 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
                 UNION
6426
                 /* Private Views expanded */
6427
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6428
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6429
                      pv.pkg_version, pv.dlocked, pv.pv_description
6430
                  FROM users usr,
6431
                      view_settings vs,
6432
                      view_def vd,
6433
                      views vi,
6434
                      release_content rel,
6435
                      PACKAGES pkg,
6436
                      package_versions pv
6437
                  WHERE vs.user_id = usr.user_id
6438
                   AND vs.view_id = vi.view_id
6439
                   AND vd.view_id = vi.view_id
6440
                   AND pv.pkg_id = pkg.pkg_id
6441
                   AND rel.pv_id = pv.pv_id
6442
                   AND rel.rtag_id = rtagid
6443
                   AND vd.pkg_id = pkg.pkg_id
6444
                   AND vi.base_view = 'N'
6445
                   AND vi.view_id IN (
6446
                        SELECT *
6447
                          FROM THE
6448
                                (SELECT CAST
6449
                                        (in_list_number
6450
                                               (sviewidshowlist) AS relmgr_number_tab_t
6451
                                        )
6452
                                  FROM DUAL
6453
                                ))
6454
                   AND usr.user_id = userid) ord
6455
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6456
     END IF;
6457
   END;
6458
 
6459
/*-------------------------------------------------------------------------------------------------------*/
6460
   PROCEDURE get_work_in_progress_items (
6461
     viewtype         IN      NUMBER,
6462
     userid           IN      NUMBER,
6463
     rtagid           IN      NUMBER,
6464
     sviewidshowlist  IN      VARCHAR2,
6465
     ntruerecordcount OUT     NUMBER,
6466
     recordset        OUT     typecur
6467
   )
6468
   IS
6469
   BEGIN
6470
     -- Get true record count because views can give false count
6471
     SELECT COUNT (wip.pv_id)
6472
      INTO ntruerecordcount
6473
      FROM work_in_progress wip
6474
      WHERE wip.rtag_id = rtagid;
6475
 
6476
     IF viewtype = 1
6477
     THEN
6478
       /*--- GUEST VIEW ---*/
6479
       OPEN recordset FOR
6480
         SELECT   *
6481
            FROM (
6482
                 /* Base Views collapsed */
6483
                 SELECT DISTINCT vi.view_id, vi.view_name,
6484
                             TO_NUMBER (NULL) AS pkg_state,
6485
                             TO_NUMBER (NULL) AS deprecated_state,
6486
                             TO_NUMBER (NULL) AS pv_id,
6487
                             NULL AS pkg_name, NULL AS pkg_version,
6488
                             NULL AS dlocked, NULL AS pv_description
6489
                         FROM work_in_progress rel, views vi
6490
                        WHERE rel.view_id = vi.view_id
6491
                          AND rtag_id = rtagid
6492
                          AND rel.view_id NOT IN (
6493
                               SELECT *
6494
                                 FROM THE
6495
                                       (SELECT CAST
6496
                                               (in_list_number
6497
                                                  (sviewidshowlist
6498
                                                  ) AS relmgr_number_tab_t
6499
                                               )
6500
                                         FROM DUAL
6501
                                       ))
6502
                 UNION
6503
                 /* Base Views expanded */
6504
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6505
 
6506
                      --rel.pkg_state,
6507
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6508
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6509
                      pv.pv_description
6510
                  FROM work_in_progress rel,
6511
                      PACKAGES pkg,
6512
                      package_versions pv,
6513
                      views vi
6514
                  WHERE pv.pkg_id = pkg.pkg_id
6515
                   AND rel.pv_id = pv.pv_id
6516
                   AND rel.view_id = vi.view_id
6517
                   AND rel.view_id IN (
6518
                        SELECT *
6519
                          FROM THE
6520
                                (SELECT CAST
6521
                                        (in_list_number
6522
                                               (sviewidshowlist) AS relmgr_number_tab_t
6523
                                        )
6524
                                  FROM DUAL
6525
                                ))
6526
                   AND rtag_id = rtagid) ord
6527
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6528
     ELSIF viewtype = 2
6529
     THEN
6530
       /*--- PERSONAL VIEW ---*/
6531
       OPEN recordset FOR
6532
         SELECT   *
6533
            FROM (
6534
                 /* Base Views collapsed */
6535
                 SELECT DISTINCT vi.view_id, vi.view_name,
6536
                             TO_NUMBER (NULL) AS pkg_state,
6537
                             TO_NUMBER (NULL) AS deprecated_state,
6538
                             TO_NUMBER (NULL) AS pv_id,
6539
                             NULL AS pkg_name, NULL AS pkg_version,
6540
                             NULL AS dlocked, NULL AS pv_description
6541
                         FROM work_in_progress rel,
6542
                             view_settings vs,
6543
                             views vi
6544
                        WHERE rel.view_id = vi.view_id
6545
                          AND vs.view_id = rel.view_id
6546
                          AND vs.user_id = userid
6547
                          AND rtag_id = rtagid
6548
                          AND rel.view_id NOT IN (
6549
                               SELECT *
6550
                                 FROM THE
6551
                                       (SELECT CAST
6552
                                               (in_list_number
6553
                                                  (sviewidshowlist
6554
                                                  ) AS relmgr_number_tab_t
6555
                                               )
6556
                                         FROM DUAL
6557
                                       ))
6558
                 UNION
6559
                 /* Base Views expanded */
6560
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6561
 
6562
                      --rel.pkg_state,
6563
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6564
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6565
                      pv.pv_description
6566
                  FROM work_in_progress rel,
6567
                      PACKAGES pkg,
6568
                      package_versions pv,
6569
                      views vi,
6570
                      view_settings vs
6571
                  WHERE pv.pkg_id = pkg.pkg_id
6572
                   AND rel.pv_id = pv.pv_id
6573
                   AND rel.view_id = vi.view_id
6574
                   AND vs.view_id = vi.view_id
6575
                   AND vs.user_id = userid
6576
                   AND rel.view_id IN (
6577
                        SELECT *
6578
                          FROM THE
6579
                                (SELECT CAST
6580
                                        (in_list_number
6581
                                               (sviewidshowlist) AS relmgr_number_tab_t
6582
                                        )
6583
                                  FROM DUAL
6584
                                ))
6585
                   AND rtag_id = rtagid
6586
                 UNION
6587
                 /* Private Views collapsed */
6588
                 SELECT vi.view_id, vi.view_name,
6589
                      TO_NUMBER (NULL) AS pkg_state,
6590
                      TO_NUMBER (NULL) AS deprecated_state,
6591
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6592
                      NULL AS pkg_version, NULL AS dlocked,
6593
                      NULL AS pv_description
6594
                  FROM view_settings vs,
6595
                      view_def vd,
6596
                      views vi,
6597
                      work_in_progress rel,
6598
                      package_versions pv
6599
                  WHERE vs.view_id = vi.view_id
6600
                   AND rel.pv_id = pv.pv_id
6601
                   AND vd.pkg_id = pv.pkg_id
6602
                   AND vd.view_id = vi.view_id
6603
                   AND vi.base_view = 'N'
6604
                   AND rel.rtag_id = rtagid
6605
                   AND vs.user_id = userid
6606
                   AND vi.view_id NOT IN (
6607
                        SELECT *
6608
                          FROM THE
6609
                                (SELECT CAST
6610
                                        (in_list_number
6611
                                               (sviewidshowlist) AS relmgr_number_tab_t
6612
                                        )
6613
                                  FROM DUAL
6614
                                ))
6615
                 UNION
6616
                 /* Private Views expanded */
6617
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6618
 
6619
                      --rel.pkg_state,
6620
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6621
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6622
                      pv.pv_description
6623
                  FROM users usr,
6624
                      view_settings vs,
6625
                      view_def vd,
6626
                      views vi,
6627
                      work_in_progress rel,
6628
                      PACKAGES pkg,
6629
                      package_versions pv
6630
                  WHERE vs.user_id = usr.user_id
6631
                   AND vs.view_id = vi.view_id
6632
                   AND vd.view_id = vi.view_id
6633
                   AND pv.pkg_id = pkg.pkg_id
6634
                   AND rel.pv_id = pv.pv_id
6635
                   AND rel.rtag_id = rtagid
6636
                   AND vd.pkg_id = pkg.pkg_id
6637
                   AND vi.base_view = 'N'
6638
                   AND vi.view_id IN (
6639
                        SELECT *
6640
                          FROM THE
6641
                                (SELECT CAST
6642
                                        (in_list_number
6643
                                               (sviewidshowlist) AS relmgr_number_tab_t
6644
                                        )
6645
                                  FROM DUAL
6646
                                ))
6647
                   AND usr.user_id = userid) ord
6648
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6649
     END IF;
6650
   END;
6651
 
6652
/*-------------------------------------------------------------------------------------------------------*/
6653
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6654
 
6655
   PROCEDURE get_pending_items (
6656
     viewtype         IN      NUMBER,
6657
     userid           IN      NUMBER,
6658
     rtagid           IN      NUMBER,
6659
     sviewidshowlist  IN      VARCHAR2,
6660
     ntruerecordcount OUT     NUMBER,
6661
     recordset        OUT     typecur
6662
   )
6663
   IS
6664
   BEGIN
6665
     -- Get true record count because views can give false count
6666
     SELECT COUNT (pl.pv_id)
6667
      INTO ntruerecordcount
6668
      FROM planned pl
6669
      WHERE pl.rtag_id = rtagid;
6670
 
6671
     IF viewtype = 1
6672
     THEN
6673
       /*--- GUEST VIEW ---*/
6674
       OPEN recordset FOR
6675
         SELECT   *
6676
            FROM (
6677
                 /* Base Views collapsed */
6678
                 SELECT DISTINCT vi.view_id, vi.view_name,
6679
                             TO_NUMBER (NULL) AS pkg_state,
6680
                             TO_NUMBER (NULL) AS deprecated_state,
6681
                             TO_NUMBER (NULL) AS pv_id,
6682
                             NULL AS pkg_name, NULL AS pkg_version,
6683
                             NULL AS dlocked, NULL AS pv_description,
6684
                             rel.operation
6685
                         FROM planned rel, views vi
6686
                        WHERE rel.view_id = vi.view_id
6687
                          AND rtag_id = rtagid
6688
                          AND rel.view_id NOT IN (
6689
                               SELECT *
6690
                                 FROM THE
6691
                                       (SELECT CAST
6692
                                               (in_list_number
6693
                                                  (sviewidshowlist
6694
                                                  ) AS relmgr_number_tab_t
6695
                                               )
6696
                                         FROM DUAL
6697
                                       ))
6698
                 UNION
6699
                 /* Base Views expanded */
6700
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6701
 
6702
                      --rel.pkg_state,
6703
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6704
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6705
                      pv.pv_description,
6706
                      rel.operation
6707
                  FROM planned rel,
6708
                      PACKAGES pkg,
6709
                      package_versions pv,
6710
                      views vi
6711
                  WHERE pv.pkg_id = pkg.pkg_id
6712
                   AND rel.pv_id = pv.pv_id
6713
                   AND rel.view_id = vi.view_id
6714
                   AND rel.view_id IN (
6715
                        SELECT *
6716
                          FROM THE
6717
                                (SELECT CAST
6718
                                        (in_list_number
6719
                                               (sviewidshowlist) AS relmgr_number_tab_t
6720
                                        )
6721
                                  FROM DUAL
6722
                                ))
6723
                   AND rtag_id = rtagid) ord
6724
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6725
     ELSIF viewtype = 2
6726
     THEN
6727
       /*--- PERSONAL VIEW ---*/
6728
       OPEN recordset FOR
6729
         SELECT   *
6730
            FROM (
6731
                 /* Base Views collapsed */
6732
                 SELECT DISTINCT vi.view_id, vi.view_name,
6733
                             TO_NUMBER (NULL) AS pkg_state,
6734
                             TO_NUMBER (NULL) AS deprecated_state,
6735
                             TO_NUMBER (NULL) AS pv_id,
6736
                             NULL AS pkg_name, NULL AS pkg_version,
6737
                             NULL AS dlocked, NULL AS pv_description,
6738
                             rel.operation
6739
                         FROM planned rel, view_settings vs, views vi
6740
                        WHERE rel.view_id = vi.view_id
6741
                          AND vs.view_id = rel.view_id
6742
                          AND vs.user_id = userid
6743
                          AND rtag_id = rtagid
6744
                          AND rel.view_id NOT IN (
6745
                               SELECT *
6746
                                 FROM THE
6747
                                       (SELECT CAST
6748
                                               (in_list_number
6749
                                                  (sviewidshowlist
6750
                                                  ) AS relmgr_number_tab_t
6751
                                               )
6752
                                         FROM DUAL
6753
                                       ))
6754
                 UNION
6755
                 /* Base Views expanded */
6756
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6757
 
6758
                      --rel.pkg_state,
6759
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6760
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6761
                      pv.pv_description,
6762
                      rel.operation
6763
                  FROM planned rel,
6764
                      PACKAGES pkg,
6765
                      package_versions pv,
6766
                      views vi,
6767
                      view_settings vs
6768
                  WHERE pv.pkg_id = pkg.pkg_id
6769
                   AND rel.pv_id = pv.pv_id
6770
                   AND rel.view_id = vi.view_id
6771
                   AND vs.view_id = vi.view_id
6772
                   AND vs.user_id = userid
6773
                   AND rel.view_id IN (
6774
                        SELECT *
6775
                          FROM THE
6776
                                (SELECT CAST
6777
                                        (in_list_number
6778
                                               (sviewidshowlist) AS relmgr_number_tab_t
6779
                                        )
6780
                                  FROM DUAL
6781
                                ))
6782
                   AND rtag_id = rtagid
6783
                 UNION
6784
                 /* Private Views collapsed */
6785
                 SELECT vi.view_id, vi.view_name,
6786
                      TO_NUMBER (NULL) AS pkg_state,
6787
                      TO_NUMBER (NULL) AS deprecated_state,
6788
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6789
                      NULL AS pkg_version, NULL AS dlocked,
6790
                      NULL AS pv_description,
6791
                      rel.operation
6792
                  FROM view_settings vs,
6793
                      view_def vd,
6794
                      views vi,
6795
                      planned rel,
6796
                      package_versions pv
6797
                  WHERE vs.view_id = vi.view_id
6798
                   AND rel.pv_id = pv.pv_id
6799
                   AND vd.pkg_id = pv.pkg_id
6800
                   AND vd.view_id = vi.view_id
6801
                   AND vi.base_view = 'N'
6802
                   AND rel.rtag_id = rtagid
6803
                   AND vs.user_id = userid
6804
                   AND vi.view_id NOT IN (
6805
                        SELECT *
6806
                          FROM THE
6807
                                (SELECT CAST
6808
                                        (in_list_number
6809
                                               (sviewidshowlist) AS relmgr_number_tab_t
6810
                                        )
6811
                                  FROM DUAL
6812
                                ))
6813
                 UNION
6814
                 /* Private Views expanded */
6815
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6816
 
6817
                      --rel.pkg_state,
6818
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6819
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6820
                      pv.pv_description,
6821
                      rel.operation
6822
                  FROM users usr,
6823
                      view_settings vs,
6824
                      view_def vd,
6825
                      views vi,
6826
                      planned rel,
6827
                      PACKAGES pkg,
6828
                      package_versions pv
6829
                  WHERE vs.user_id = usr.user_id
6830
                   AND vs.view_id = vi.view_id
6831
                   AND vd.view_id = vi.view_id
6832
                   AND pv.pkg_id = pkg.pkg_id
6833
                   AND rel.pv_id = pv.pv_id
6834
                   AND rel.rtag_id = rtagid
6835
                   AND vd.pkg_id = pkg.pkg_id
6836
                   AND vi.base_view = 'N'
6837
                   AND vi.view_id IN (
6838
                        SELECT *
6839
                          FROM THE
6840
                                (SELECT CAST
6841
                                        (in_list_number
6842
                                               (sviewidshowlist) AS relmgr_number_tab_t
6843
                                        )
6844
                                  FROM DUAL
6845
                                ))
6846
                   AND usr.user_id = userid) ord
6847
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6848
     END IF;
6849
   END;
6850
 
6851
/*-------------------------------------------------------------------------------------------------------*/
6852
   PROCEDURE get_view_content (
6853
     rtagid     IN      NUMBER,
6854
     viewid     IN      NUMBER,
6855
     recordset OUT     typecur
6856
   )
6857
   IS
6858
     isbaseview   CHAR (1);
6859
   BEGIN
6860
     -- Check if the view is BASE VIEW
6861
     SELECT vi.base_view
6862
      INTO isbaseview
6863
      FROM views vi
6864
      WHERE vi.view_id = viewid;
6865
 
6866
     IF (isbaseview = 'Y')
6867
     THEN
6868
       -- Get Base view content
6869
       OPEN recordset FOR
6870
         SELECT   DECODE (rel.pkg_state,
6871
                      NULL, 0,
6872
                      rel.pkg_state
6873
                     ) AS pkg_state,
6874
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6875
                pv.pkg_version, pv.dlocked, pv.pv_description,
6876
                pv.build_type,
6877
                rel.operation
6878
            FROM environment_view rel, PACKAGES pkg, package_versions pv
6879
            WHERE pv.pkg_id = pkg.pkg_id
6880
             AND rel.pv_id = pv.pv_id
6881
             AND rel.view_id = viewid
6882
             AND rel.rtag_id = rtagid
6883
         ORDER BY UPPER (pkg.pkg_name);
6884
     ELSE
6885
       -- Get non base view content
6886
       OPEN recordset FOR
6887
         SELECT   DECODE (rel.pkg_state,
6888
                      NULL, 0,
6889
                      rel.pkg_state
6890
                     ) AS pkg_state,
6891
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6892
                pv.pkg_version, pv.dlocked, pv.pv_description,
6893
                pv.build_type,
6894
                rel.operation
6895
            FROM environment_view rel,
6896
                PACKAGES pkg,
6897
                package_versions pv,
6898
                view_def vd
6899
            WHERE pv.pkg_id = pkg.pkg_id
6900
             AND rel.pv_id = pv.pv_id
6901
             AND rel.rtag_id = rtagid
6902
             AND vd.view_id = viewid
6903
             AND vd.pkg_id = pv.pkg_id
6904
         ORDER BY UPPER (pkg.pkg_name);
6905
     END IF;
6906
   END;
6907
 
6908
/*-------------------------------------------------------------------------------------------------------*/
6909
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
6910
     RETURN NUMBER
6911
   IS
6912
     envtab           NUMBER;
6913
     returnvalue      NUMBER;
6914
     return_not_found NUMBER := -1;
6915
   BEGIN
6916
     envtab := get_package_area (pvid, rtagid);
6917
 
6918
     IF envtab = 0
6919
     THEN
6920
       -- WORK IN PROGRESS --
6921
       returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
6922
     ELSIF envtab = 1
6923
     THEN
6924
       -- PENDING --
6925
       returnvalue := pk_planned.get_package_view (pvid, rtagid);
6926
     ELSIF envtab = 2
6927
     THEN
6928
       -- RELEASED --
6929
       returnvalue := pk_release.get_package_view (pvid, rtagid);
6930
     ELSE
6931
       -- This may be a Patch not located anywhere but unlocked
6932
       returnvalue := return_not_found;
6933
     END IF;
6934
 
6935
     RETURN returnvalue;
6936
   END;
6937
 
6938
/*-------------------------------------------------------------------------------------------------------*/
6939
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6940
   IS
6941
     viewid        NUMBER;
6942
     envtab        NUMBER;
6943
     ispatch       CHAR (1) := NULL;
6944
     buildtype     CHAR (1) := NULL;
6945
   BEGIN
6946
     -- Check if package is patch
6947
     SELECT pv.is_patch, pv.build_type
6948
      INTO ispatch, buildtype
6949
      FROM package_versions pv
6950
      WHERE pv.pv_id = pvid;
6951
 
6952
     -- Get ViewId
6953
     viewid := get_package_view (pvid, rtagid);
6954
     -- Remove from current area
6955
     envtab := pk_environment.get_package_area (pvid, rtagid);
6956
 
6957
     -- Make sure that package was in work-in-progress or pending before makeing it release
6958
     -- Exclude patches, ripple builds
6959
     IF (envtab < 0)
6960
     THEN
6961
       -- Not found in work-in-progress or pending
6962
       IF (ispatch IS NULL) AND (buildtype = 'M')
6963
       THEN
6964
         raise_application_error (-20000,
6965
                            'This package cannot be released here.'
6966
                           );
6967
       END IF;
6968
     END IF;
6969
 
6970
     -- Log
6971
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6972
 
6973
     IF envtab = 0
6974
     THEN
6975
       -- WORK IN PROGRESS --
6976
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6977
     ELSIF envtab = 1
6978
     THEN
6979
       -- PENDING --
6980
       pk_planned.remove_package (pvid, rtagid, userid);
6981
     END IF;
6982
 
6983
     -- Change package state
6984
     pk_package.change_state (pvid, 'Y', userid);
6985
 
6986
     -- Make sure it is valid BASE VIEW
6987
     IF viewid < 1
6988
     THEN
6989
       viewid := 7;                     -- This is default base view
6990
     END IF;
6991
 
6992
     IF (ispatch IS NULL)
6993
     THEN
6994
       -- Add package to new area
6995
       pk_release.add_package (pvid, viewid, rtagid, userid);
6996
     END IF;
6997
 
6998
     -- Now do post Release Actions
6999
     pk_release.run_post_actions (pvid, rtagid);
7000
 
7001
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
7002
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
7003
     clean_do_not_ripple(rtagid);
7004
     clean_advisory_ripple(rtagid);
7005
 
7006
     -- Log
7007
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
7008
   END;
7009
 
7010
/*-------------------------------------------------------------------------------------------------------*/
7011
   PROCEDURE auto_make_release (
7012
     pvid          IN   NUMBER,
7013
     rtagid        IN   NUMBER,
7014
     userid        IN   NUMBER,
7015
     vext          IN   package_versions.v_ext%TYPE,
7016
     ssv_ext       IN   package_versions.v_ext%TYPE,
7017
     clonefrompvid IN   NUMBER
7018
   )
7019
   IS
7020
     viewid        NUMBER;
7021
     envtab        NUMBER;
7022
     ispatch       CHAR (1) := NULL;
7023
     buildtype      CHAR (1) := NULL;
7024
   BEGIN
7025
     -- Check if package is patch
7026
     SELECT pv.is_patch, pv.build_type
7027
      INTO ispatch, buildtype
7028
      FROM package_versions pv
7029
      WHERE pv.pv_id = pvid;
7030
 
7031
     IF vext <> ssv_ext
7032
     THEN
7033
       -- Get ViewId
7034
       viewid := get_package_view (clonefrompvid, rtagid);
7035
       -- Remove from current area
7036
       envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
7037
     ELSE
7038
       -- Get ViewId
7039
       viewid := get_package_view (pvid, rtagid);
7040
       -- Remove from current area
7041
       envtab := pk_environment.get_package_area (pvid, rtagid);
7042
     END IF;
7043
 
7044
     -- Make sure that package was in work-in-progress or pending before makeing it release
7045
     -- Exclude patches, ripple builds
7046
     IF (envtab < 0)
7047
     THEN
7048
       -- Not found in work-in-progress or pending
7049
       IF (ispatch IS NULL) AND (buildtype = 'M')
7050
       THEN
7051
         raise_application_error (-20000,
7052
                            'This package cannot be released here.'
7053
                           );
7054
       END IF;
7055
     END IF;
7056
 
7057
     -- Log
7058
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
7059
 
7060
     IF vext <> ssv_ext
7061
     THEN
7062
       IF envtab = 0
7063
       THEN
7064
         -- WORK IN PROGRESS --
7065
         pk_work_in_progress.remove_package (clonefrompvid, rtagid,
7066
                                    userid);
7067
       ELSIF envtab = 1
7068
       THEN
7069
         -- PENDING --
7070
         pk_planned.remove_package (clonefrompvid, rtagid, userid);
7071
       ELSIF envtab = 2
7072
       THEN
7073
         -- RELEASED --
7074
         pk_release.remove_package (clonefrompvid, rtagid, userid);
7075
       END IF;
7076
     ELSE
7077
       IF envtab = 0
7078
       THEN
7079
         -- WORK IN PROGRESS --
7080
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
7081
       ELSIF envtab = 1
7082
       THEN
7083
         -- PENDING --
7084
         pk_planned.remove_package (pvid, rtagid, userid);
7085
       END IF;
7086
     END IF;
7087
 
7088
     -- Change package state
7089
     pk_package.change_state (pvid, 'Y', userid);
7090
 
7091
     -- Make sure it is valid BASE VIEW
7092
     IF viewid < 1
7093
     THEN
7094
       viewid := 7;                     -- This is default base view
7095
     END IF;
7096
 
7097
     IF (ispatch IS NULL)
7098
     THEN
7099
       -- Add package to new area
7100
       pk_release.add_package (pvid, viewid, rtagid, userid);
7101
     END IF;
7102
 
7103
     -- Now do post Release Actions
7104
     pk_release.run_post_actions (pvid, rtagid);
7105
     -- Now update the Dash_Board Table (DEPRECATED)
7106
     pk_rmapi.update_dash_board (rtagid);
7107
 
7108
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
7109
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
7110
     clean_do_not_ripple(rtagid);
7111
     clean_advisory_ripple(rtagid);
7112
 
7113
     -- Log
7114
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
7115
   END;
7116
 
7117
/*-------------------------------------------------------------------------------------------------------*/
7118
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7119
   IS
7120
     viewid   NUMBER;
7121
     envtab   NUMBER;
7122
   BEGIN
7123
     -- Get ViewId
7124
     --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
7125
     viewid := get_package_view (pvid, rtagid);
7126
     -- Remove from current area
7127
     envtab := pk_environment.get_package_area (pvid, rtagid);
7128
     -- Log
7129
     log_action (pvid,
7130
              'action',
7131
              userid,
7132
              'Start of Make Package UnRelease...'
7133
             );
7134
 
7135
     IF envtab = 2
7136
     THEN
7137
       -- RELEASE AREA --
7138
       pk_release.remove_package (pvid, rtagid, userid);
7139
     ELSIF envtab = 1
7140
     THEN
7141
       -- PENDING --
7142
       pk_planned.remove_package (pvid, rtagid, userid);
7143
     END IF;
7144
 
7145
     -- Change package state
7146
     pk_package.change_state (pvid, 'N', userid);
7147
 
7148
     -- Make sure it is valid BASE VIEW
7149
     IF viewid < 1
7150
     THEN
7151
       viewid := 7;                     -- This is default base view
7152
     END IF;
7153
 
7154
     -- Add package to new area
7155
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7156
     -- Now do post Release Actions
7157
     pk_release.run_post_actions (pvid, rtagid);
7158
     -- Log
7159
     log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
7160
   END;
7161
 
7162
/*-------------------------------------------------------------------------------------------------------*/
7163
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7164
   IS
7165
     viewid     NUMBER;
7166
     ispatch    CHAR (1) := NULL;
7167
     buildtype  CHAR (1) := NULL;
7168
   BEGIN
7169
     -- Check if package is patch
7170
     SELECT pv.is_patch, pv.build_type
7171
      INTO ispatch, buildtype
7172
      FROM package_versions pv
7173
      WHERE pv.pv_id = pvid;
7174
 
7175
     -- Get ViewId
7176
     viewid := get_package_view (pvid, rtagid);
7177
     --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
7178
 
7179
     -- Log
7180
     log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
7181
 
7182
     IF (ispatch IS NULL)
7183
     THEN
7184
       -- Remove from current area
7185
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7186
       -- Change package state
7187
       pk_package.change_state (pvid, 'P', userid);
7188
       -- Add package to new area
7189
       pk_planned.add_package (pvid, viewid, rtagid, userid);
7190
     END IF;
7191
 
7192
     -- Log
7193
     log_action (pvid, 'action', userid, 'End of Make Package Pending...');
7194
   END;
7195
 
7196
/*-------------------------------------------------------------------------------------------------------*/
7197
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7198
   IS
7199
   BEGIN
7200
     -- Log
7201
     log_action (pvid,
7202
                 'action',
7203
                 userid,
7204
                 'Start of Package Pending Approval...'
7205
                 );
7206
     -- Change package state
7207
     pk_package.change_state (pvid, 'A', userid);
7208
     -- Log
7209
     log_action (pvid, 'action', userid,
7210
                 'End of Package Pending Approval...');
7211
   END;
7212
 
7213
/*-------------------------------------------------------------------------------------------------------*/
7214
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7215
   IS
7216
     viewid   NUMBER;
7217
     operation CHAR;
7218
   BEGIN
7219
     -- Get ViewId
7220
     viewid := get_package_view (pvid, rtagid);
7221
     -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
7222
 
7223
     -- DEVI-45275
7224
     -- If the package version is an official version that is to be rejected from a merge operation
7225
     -- then find out in order to prevent it being added back to work-in-progress table . This will
7226
     -- be denoted by the operation field in the planned table being A or S
7227
     operation := ' ';
7228
     SELECT
7229
     (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
7230
     FROM planned pl
7231
     WHERE pl.PV_ID = pvid
7232
     AND pl.RTAG_ID = rtagid;
7233
 
7234
     -- Log
7235
     log_action (pvid, 'action', userid, 'Start of Reject Package...');
7236
     -- Remove from current area
7237
     pk_planned.remove_package (pvid, rtagid, userid);
7238
 
7239
     -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
7240
     IF operation <> 'A' AND operation <> 'S'
7241
     THEN
7242
     -- Change package state
7243
     pk_package.change_state (pvid, 'R', userid);
7244
     -- Add package to new area
7245
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7246
     ELSE
7247
      log_action (pvid, 'action', userid, 'Rejected Package Merge');
7248
     END IF;
7249
     -- Log
7250
     log_action (pvid, 'action', userid, 'End of Reject Package...');
7251
   END;
7252
 
7253
/*-------------------------------------------------------------------------------------------------------*/
7254
   PROCEDURE change_package_view (
7255
     pvid       IN   NUMBER,
7256
     rtagid     IN   NUMBER,
7257
     newviewid  IN   NUMBER
7258
   )
7259
   IS
7260
     envtab   NUMBER;
7261
   BEGIN
7262
     envtab := pk_environment.get_package_area (pvid, rtagid);
7263
 
7264
     IF envtab = 0
7265
     THEN
7266
       -- WORK IN PROGRESS --
7267
       pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
7268
     ELSIF envtab = 1
7269
     THEN
7270
       -- PENDING --
7271
       pk_planned.change_package_view (pvid, rtagid, newviewid);
7272
     ELSIF envtab = 2
7273
     THEN
7274
       -- RELEASED --
7275
       pk_release.change_package_view (pvid, rtagid, newviewid);
7276
     END IF;
7277
   END;
7278
 
7279
/*-------------------------------------------------------------------------------------------------------*/
7280
   PROCEDURE find_package (
7281
     skeyword     IN      VARCHAR2,
7282
     nrtagid      IN      NUMBER,
7283
     nsearcharea  IN      NUMBER,
7284
     recordset    OUT     typecur
7285
   )
7286
   IS
7287
   BEGIN
7288
     IF nsearcharea = 0
7289
     THEN
7290
       /* Search Work In Progress */
7291
       OPEN recordset FOR
7292
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7293
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7294
                pv.modified_stamp, usr.full_name, usr.user_email
7295
           FROM views vi,
7296
                work_in_progress rc,
7297
                PACKAGES pkg,
7298
                package_versions pv,
7299
                users usr
7300
          WHERE rc.view_id = vi.view_id
7301
            AND rc.pv_id = pv.pv_id
7302
            AND pkg.pkg_id = pv.pkg_id
7303
            AND pv.modifier_id = usr.user_id
7304
            AND rc.rtag_id = nrtagid
7305
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7306
       ORDER BY UPPER (pkg.pkg_name);
7307
     ELSIF nsearcharea = 1
7308
     THEN
7309
       /* Search Pending */
7310
       OPEN recordset FOR
7311
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7312
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7313
                pv.modified_stamp, usr.full_name, usr.user_email
7314
           FROM views vi,
7315
                planned rc,
7316
                PACKAGES pkg,
7317
                package_versions pv,
7318
                users usr
7319
          WHERE rc.view_id = vi.view_id
7320
            AND rc.pv_id = pv.pv_id
7321
            AND pkg.pkg_id = pv.pkg_id
7322
            AND pv.modifier_id = usr.user_id
7323
            AND rc.rtag_id = nrtagid
7324
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7325
       ORDER BY UPPER (pkg.pkg_name);
7326
     ELSIF nsearcharea = 2
7327
     THEN
7328
       /* Search Released */
7329
       OPEN recordset FOR
7330
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7331
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7332
                pv.modified_stamp, usr.full_name, usr.user_email
7333
           FROM views vi,
7334
                release_content rc,
7335
                PACKAGES pkg,
7336
                package_versions pv,
7337
                users usr
7338
          WHERE rc.base_view_id = vi.view_id
7339
            AND rc.pv_id = pv.pv_id
7340
            AND pkg.pkg_id = pv.pkg_id
7341
            AND pv.modifier_id = usr.user_id
7342
            AND rc.rtag_id = nrtagid
7343
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7344
         ORDER BY UPPER (pkg.pkg_name);
7345
     ELSIF nsearcharea = 3
7346
     THEN
7347
       /* Search ALL */
7348
       OPEN recordset FOR
7349
         SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
7350
                pv.pv_id, pv.pkg_version, pv.comments,
7351
                pv.modified_stamp, usr.full_name, usr.user_email
7352
           FROM views vi,
7353
                environment_view rc,
7354
                PACKAGES pkg,
7355
                package_versions pv,
7356
                users usr
7357
          WHERE rc.view_id = vi.view_id
7358
            AND rc.pv_id = pv.pv_id
7359
            AND pkg.pkg_id = pv.pkg_id
7360
            AND pv.modifier_id = usr.user_id
7361
            AND rc.rtag_id = nrtagid
7362
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7363
         ORDER BY UPPER (pkg.pkg_name);
7364
     END IF;
7365
   END;
7366
 
7367
/*-------------------------------------------------------------------------------------------------------*/
7368
   PROCEDURE find_file (
7369
     skeyword     IN      VARCHAR2,
7370
     nrtagid      IN      NUMBER,
7371
     nsearcharea  IN      NUMBER,
7372
     npagesize    IN      NUMBER,
7373
     recordset    OUT     typecur
7374
   )
7375
   IS
7376
   BEGIN
7377
     IF nsearcharea = 0
7378
     THEN
7379
       /* Search Work In Progress */
7380
       OPEN recordset FOR
7381
         SELECT   qry.*
7382
            FROM (
7383
                 /* File search on Packages */
7384
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7385
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7386
                   FROM work_in_progress rc,
7387
                        PACKAGES pkg,
7388
                        package_versions pv,
7389
                        release_components art
7390
                  WHERE rc.pv_id = art.pv_id
7391
                    AND pv.pkg_id = pkg.pkg_id
7392
                    AND rc.pv_id = pv.pv_id
7393
                    AND rc.rtag_id = nrtagid
7394
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7395
                 UNION ALL
7396
                 /* File search on Products */
7397
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7398
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7399
                   FROM work_in_progress rc,
7400
                        PACKAGES pkg,
7401
                        package_versions pv,
7402
                        product_components art
7403
                  WHERE rc.pv_id = art.pv_id
7404
                    AND pv.pkg_id = pkg.pkg_id
7405
                    AND rc.pv_id = pv.pv_id
7406
                    AND rc.rtag_id = nrtagid
7407
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7408
            WHERE ROWNUM <= npagesize
7409
         ORDER BY UPPER (qry.pkg_name);
7410
     ELSIF nsearcharea = 1
7411
     THEN
7412
       /* Search Pending */
7413
       OPEN recordset FOR
7414
         SELECT   qry.*
7415
            FROM (
7416
                 /* File search on Packages */
7417
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7418
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7419
                   FROM planned rc,
7420
                        PACKAGES pkg,
7421
                        package_versions pv,
7422
                        release_components art
7423
                  WHERE rc.pv_id = art.pv_id
7424
                    AND pv.pkg_id = pkg.pkg_id
7425
                    AND rc.pv_id = pv.pv_id
7426
                    AND rc.rtag_id = nrtagid
7427
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7428
                 UNION ALL
7429
                 /* File search on Products */
7430
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7431
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7432
                   FROM planned rc,
7433
                        PACKAGES pkg,
7434
                        package_versions pv,
7435
                        product_components art
7436
                  WHERE rc.pv_id = art.pv_id
7437
                    AND pv.pkg_id = pkg.pkg_id
7438
                    AND rc.pv_id = pv.pv_id
7439
                    AND rc.rtag_id = nrtagid
7440
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7441
            WHERE ROWNUM <= npagesize
7442
         ORDER BY UPPER (qry.pkg_name);
7443
     ELSIF nsearcharea = 2
7444
     THEN
7445
       /* Search Released */
7446
       OPEN recordset FOR
7447
         SELECT   qry.*
7448
            FROM (
7449
                 /* File search on Packages */
7450
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7451
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7452
                        NULL AS patch_id
7453
                   FROM release_content rc,
7454
                        PACKAGES pkg,
7455
                        package_versions pv,
7456
                        release_components art
7457
                  WHERE rc.pv_id = art.pv_id
7458
                    AND pv.pkg_id = pkg.pkg_id
7459
                    AND rc.pv_id = pv.pv_id
7460
                    AND rc.rtag_id = nrtagid
7461
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7462
                 UNION ALL
7463
                 /* File search on Products */
7464
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7465
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7466
                        NULL AS patch_id
7467
                   FROM release_content rc,
7468
                        PACKAGES pkg,
7469
                        package_versions pv,
7470
                        product_components art
7471
                  WHERE rc.pv_id = art.pv_id
7472
                    AND pv.pkg_id = pkg.pkg_id
7473
                    AND rc.pv_id = pv.pv_id
7474
                    AND rc.rtag_id = nrtagid
7475
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7476
                 UNION ALL
7477
                 /* File search on Patches */
7478
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7479
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7480
                        DECODE (art.file_path,
7481
                                NULL, pp.patch_id,
7482
                                NULL
7483
                                ) AS patch_id
7484
                   FROM release_content rc,
7485
                        PACKAGES pkg,
7486
                        package_versions pv,
7487
                        release_components art,
7488
                        package_patches pp
7489
                  WHERE pv.pv_id = pp.pv_id
7490
                    AND pv.pkg_id = pkg.pkg_id
7491
                    AND rc.rtag_id = nrtagid
7492
                    AND art.pv_id = pp.patch_id
7493
                    AND rc.pv_id = pp.pv_id
7494
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7495
            WHERE ROWNUM <= npagesize
7496
         ORDER BY UPPER (qry.pkg_name);
7497
     ELSIF nsearcharea = 3
7498
     THEN
7499
       /* Search ALL */
7500
       OPEN recordset FOR
7501
         SELECT   qry.*
7502
            FROM (
7503
                 /* File search on Packages */
7504
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7505
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7506
                        NULL AS patch_id
7507
                   FROM environment_view rc,
7508
                        PACKAGES pkg,
7509
                        package_versions pv,
7510
                        release_components art
7511
                  WHERE rc.pv_id = art.pv_id
7512
                    AND pv.pkg_id = pkg.pkg_id
7513
                    AND rc.pv_id = pv.pv_id
7514
                    AND rc.rtag_id = nrtagid
7515
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7516
                 UNION ALL
7517
                 /* File search on Products */
7518
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7519
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7520
                        NULL AS patch_id
7521
                   FROM environment_view rc,
7522
                        PACKAGES pkg,
7523
                        package_versions pv,
7524
                        product_components art
7525
                  WHERE rc.pv_id = art.pv_id
7526
                    AND pv.pkg_id = pkg.pkg_id
7527
                    AND rc.pv_id = pv.pv_id
7528
                    AND rc.rtag_id = nrtagid
7529
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7530
                 UNION ALL
7531
                 /* File search on Patches */
7532
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7533
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7534
                        DECODE (art.file_path,
7535
                                NULL, pp.patch_id,
7536
                                NULL
7537
                               ) AS patch_id
7538
                   FROM release_content rc,
7539
                        PACKAGES pkg,
7540
                        package_versions pv,
7541
                        release_components art,
7542
                        package_patches pp
7543
                  WHERE pv.pv_id = pp.pv_id
7544
                    AND pv.pkg_id = pkg.pkg_id
7545
                    AND rc.rtag_id = nrtagid
7546
                    AND art.pv_id = pp.patch_id
7547
                    AND rc.pv_id = pp.pv_id
7548
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7549
            WHERE ROWNUM <= npagesize
7550
         ORDER BY UPPER (qry.pkg_name);
7551
     END IF;
7552
   END;
7553
 
7554
/*-------------------------------------------------------------------------------------------------------*/
7555
   PROCEDURE get_prodrelease_items (
7556
     rtagid           IN      NUMBER,
7557
     ntruerecordcount OUT     NUMBER,
7558
     recordset        OUT     typecur
7559
   )
7560
   IS
7561
   BEGIN
7562
     -- Get true record count n the number of integration products
7563
     SELECT COUNT (rc.pv_id)
7564
      INTO ntruerecordcount
7565
      FROM release_content rc
7566
      WHERE rc.rtag_id = rtagid;
7567
 
7568
     OPEN recordset FOR
7569
       SELECT vi.view_id, vi.view_name, rel.pkg_state,   --rel.pkg_state,
7570
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7571
              pv.pkg_version, pv.dlocked, pv.pv_description
7572
         FROM release_content rel,
7573
              PACKAGES pkg,
7574
              package_versions pv,
7575
              views vi
7576
        WHERE pv.pkg_id = pkg.pkg_id
7577
          AND rel.pv_id = pv.pv_id
7578
          AND rel.base_view_id = vi.view_id
7579
          AND pv.is_deployable = 'Y'
7580
          AND rtag_id = rtagid
7581
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7582
                                 FROM deployment_manager.os_contents)
7583
          AND rel.product_state IS NULL
7584
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7585
   END;
7586
 
7587
/*-------------------------------------------------------------------------------------------------------*/
7588
   PROCEDURE get_integration_items (
7589
     rtagid           IN      NUMBER,
7590
     ntruerecordcount OUT     NUMBER,
7591
     recordset        OUT     typecur
7592
   )
7593
   IS
7594
   BEGIN
7595
     -- Get true record count n the number of integration products
7596
     SELECT COUNT (rc.pv_id)
7597
      INTO ntruerecordcount
7598
      FROM release_content rc
7599
      WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
7600
 
7601
     OPEN recordset FOR
7602
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7603
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7604
              pv.pkg_version, pv.dlocked, pv.pv_description
7605
         FROM release_content rel,
7606
              PACKAGES pkg,
7607
              package_versions pv,
7608
              views vi
7609
        WHERE pv.pkg_id = pkg.pkg_id
7610
          AND rel.pv_id = pv.pv_id
7611
          AND rel.base_view_id = vi.view_id
7612
          AND pv.is_deployable = 'Y'
7613
          AND rtag_id = rtagid
7614
          AND rel.product_state IN (1, 5)
7615
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7616
   END;
7617
 
7618
/*-------------------------------------------------------------------------------------------------------*/
7619
   PROCEDURE get_test_items (
7620
     rtagid           IN      NUMBER,
7621
     ntruerecordcount OUT     NUMBER,
7622
     recordset        OUT     typecur
7623
   )
7624
   IS
7625
   BEGIN
7626
     -- Get true record count n the number of test products
7627
     SELECT COUNT (rc.pv_id)
7628
      INTO ntruerecordcount
7629
      FROM release_content rc
7630
      WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
7631
 
7632
     OPEN recordset FOR
7633
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7634
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7635
              pv.pkg_version, pv.dlocked, pv.pv_description
7636
         FROM release_content rel,
7637
              PACKAGES pkg,
7638
              package_versions pv,
7639
              views vi
7640
        WHERE pv.pkg_id = pkg.pkg_id
7641
          AND rel.pv_id = pv.pv_id
7642
          AND rel.base_view_id = vi.view_id
7643
          AND pv.is_deployable = 'Y'
7644
          AND rtag_id = rtagid
7645
          AND rel.product_state = 2
7646
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7647
   END;
7648
 
7649
/*-------------------------------------------------------------------------------------------------------*/
7650
   PROCEDURE get_deploy_items (
7651
     rtagid           IN      NUMBER,
7652
     ntruerecordcount OUT     NUMBER,
7653
     recordset        OUT     typecur
7654
   )
7655
   IS
7656
   BEGIN
7657
     -- Get true record count n the number of deploy products
7658
     SELECT COUNT (rc.pv_id)
7659
      INTO ntruerecordcount
7660
      FROM release_content rc
7661
      WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
7662
 
7663
     OPEN recordset FOR
7664
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7665
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7666
              pv.pkg_version, pv.dlocked, pv.pv_description
7667
         FROM release_content rel,
7668
              PACKAGES pkg,
7669
              package_versions pv,
7670
              views vi
7671
        WHERE pv.pkg_id = pkg.pkg_id
7672
          AND rel.pv_id = pv.pv_id
7673
          AND rel.base_view_id = vi.view_id
7674
          AND pv.is_deployable = 'Y'
7675
          AND rtag_id = rtagid
7676
          AND rel.product_state IN (3, 5)
7677
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7678
                                 FROM deployment_manager.os_contents)
7679
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7680
   END;
7681
 
7682
/*-------------------------------------------------------------------------------------------------------*/
7683
   PROCEDURE get_reject_items (
7684
     rtagid           IN      NUMBER,
7685
     ntruerecordcount OUT     NUMBER,
7686
     recordset        OUT     typecur
7687
   )
7688
   IS
7689
   BEGIN
7690
     -- Get true record count n the number of reject products
7691
     SELECT COUNT (rc.pv_id)
7692
       INTO ntruerecordcount
7693
       FROM release_content rc
7694
      WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
7695
 
7696
     OPEN recordset FOR
7697
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7698
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7699
              pv.pkg_version, pv.dlocked, pv.pv_description
7700
         FROM release_content rel,
7701
              PACKAGES pkg,
7702
              package_versions pv,
7703
              views vi
7704
        WHERE pv.pkg_id = pkg.pkg_id
7705
          AND rel.pv_id = pv.pv_id
7706
          AND rel.base_view_id = vi.view_id
7707
          AND pv.is_deployable = 'Y'
7708
          AND rtag_id = rtagid
7709
          AND rel.product_state = 4
7710
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7711
   END;
7712
/*-------------------------------------------------------------------------------------------------------*/
7713
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
7714
   -- to the release_content table.
7715
 
7716
  PROCEDURE approve_merge (
7717
   PvId    IN NUMBER,
7718
   RtagId  IN NUMBER,
7719
   UserId  IN NUMBER
7720
  )
7721
  IS
7722
   viewid        NUMBER;
7723
   envtab        NUMBER;
7724
   oper         CHAR;
7725
  BEGIN
7726
      -- Get ViewId
7727
     viewid := get_package_view (pvid, rtagid);
7728
 
7729
     -- Get the view tab
7730
     envtab := pk_environment.get_package_area (pvid, rtagid);
7731
 
7732
     -- Make sure that package was in pending before merging it to released
7733
     IF (envtab <> 1)
7734
     THEN
7735
       -- Not found in pending
7736
       raise_application_error (-20000,
7737
                          'This package cannot be released here.'
7738
                         );
7739
     END IF;
7740
 
7741
     -- Log
7742
     log_action (pvid, 'action', userid, 'Start of Package Merge...');
7743
 
7744
     -- Get the planned operation type A=Add, S=Subtract
7745
     SELECT ev.operation INTO oper
7746
       FROM environment_view ev
7747
      WHERE ev.rtag_id = RtagId
7748
        AND ev.pv_id = PvId
7749
        AND (ev.operation = 'A' OR ev.operation = 'S');
7750
 
7751
     -- Remove from Pending
7752
     pk_planned.remove_package (PvId, RtagId, UserId);
7753
 
7754
     -- Either add to the release, or remove from the release as the operation commands
7755
     IF oper = 'A'
7756
     THEN
7757
       pk_release.add_package(PvId, viewId, RtagId, UserId);
7758
 
7759
     ELSIF oper = 'S'
7760
     THEN
7761
       pk_release.remove_package(PvId, RtagId, UserId);
7762
 
7763
       -- Delete old package's pegging info
7764
       DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = RtagId AND pegv.PV_ID = PvId;
7765
 
7766
       -- Delete old package's advisory ripple info
7767
       DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = RtagId AND avr.PV_ID = PvId;
7768
     END IF;
7769
 
7770
     touch_release(RtagId);
7771
 
7772
     -- Log
7773
     log_action (pvid, 'action', userid, 'End of Package Merge...');
7774
  END;
7775
/*-------------------------------------------------------------------------------------------------------*/
7776
END pk_environment;
4040 dpurdie 7777
 
1374 dpurdie 7778
/
1373 dpurdie 7779
 
4040 dpurdie 7780
/
7781
--------------------------------------------------------
7782
--  DDL for Package Body PK_LICENCING
7783
--------------------------------------------------------
7784
 
3959 dpurdie 7785
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
1373 dpurdie 7786
 
7787
/*
7788
------------------------------
3959 dpurdie 7789
||  Last Modified:  G.Huddy
7790
||  Modified Date:  19/Aug/2008
1373 dpurdie 7791
||  Body Version:   1.0
7792
------------------------------
7793
*/
7794
 
3959 dpurdie 7795
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7796
   BEGIN
7797
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
7798
         -- Add entry to licencing table
7799
         INSERT INTO licencing (pv_id, licence)
7800
         VALUES (PvId, licenceId);
1373 dpurdie 7801
 
3959 dpurdie 7802
         -- log action
7803
         -- TODO
7804
      END IF;
1373 dpurdie 7805
 
3959 dpurdie 7806
   END;
1373 dpurdie 7807
 
7808
/*-------------------------------------------------------------------------------------------------------*/
7809
 
3959 dpurdie 7810
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7811
   BEGIN
7812
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
7813
         -- Delete entry from licencing table
7814
         DELETE FROM licencing
7815
         WHERE pv_id = PvId
7816
         AND licence = licenceId;
1373 dpurdie 7817
 
3959 dpurdie 7818
         -- log action
7819
         -- TODO
7820
      END IF;
7821
   END;
1373 dpurdie 7822
 
7823
/*-------------------------------------------------------------------------------------------------------*/
7824
 
3959 dpurdie 7825
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7826
 
3959 dpurdie 7827
      CURSOR licencing_cur
7828
      IS
7829
         SELECT *
7830
         FROM licencing
7831
         WHERE pv_id = fromPvId;
1373 dpurdie 7832
 
3959 dpurdie 7833
      licencing_rec licencing_cur%ROWTYPE;
1373 dpurdie 7834
 
7835
   BEGIN
3959 dpurdie 7836
      -- For each licence association that the Last PV_ID had, create a similar
7837
      -- arrangement for the new PV_ID
7838
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
7839
      -- does not have, are retained. The assumption is that the user has made those and so we do not
7840
      -- have any right to destroy them without asking them.
7841
      OPEN licencing_cur;
1373 dpurdie 7842
 
3959 dpurdie 7843
      FETCH licencing_cur
7844
      INTO licencing_rec;
1373 dpurdie 7845
 
3959 dpurdie 7846
      WHILE licencing_cur%FOUND
1373 dpurdie 7847
      LOOP
3959 dpurdie 7848
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
1373 dpurdie 7849
 
3959 dpurdie 7850
         FETCH licencing_cur
7851
         INTO licencing_rec;
1373 dpurdie 7852
      END LOOP;
7853
   END;
7854
 
7855
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7856
 
7857
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
7858
      found NUMBER;
1373 dpurdie 7859
   BEGIN
7860
 
3959 dpurdie 7861
      SELECT COUNT(*) INTO found
7862
      FROM licencing
7863
      WHERE pv_id = PvId
7864
      AND licence = LicenceId;
1373 dpurdie 7865
 
3959 dpurdie 7866
      RETURN found;
1373 dpurdie 7867
   END;
7868
 
7869
/*-------------------------------------------------------------------------------------------------------*/
7870
 
3959 dpurdie 7871
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7872
 
3959 dpurdie 7873
      CURSOR licencing_cur
7874
      IS
1373 dpurdie 7875
         SELECT *
3959 dpurdie 7876
         FROM licencing
7877
         WHERE pv_id = PvId;
1373 dpurdie 7878
 
3959 dpurdie 7879
      licencing_rec licencing_cur%ROWTYPE;
7880
   BEGIN
7881
      -- For each licence association that the PV_ID had, remove it
7882
      OPEN licencing_cur;
1373 dpurdie 7883
 
3959 dpurdie 7884
      FETCH licencing_cur
7885
      INTO licencing_rec;
1373 dpurdie 7886
 
3959 dpurdie 7887
      WHILE licencing_cur%FOUND
7888
      LOOP
7889
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
1373 dpurdie 7890
 
3959 dpurdie 7891
         FETCH licencing_cur
7892
         INTO licencing_rec;
7893
      END LOOP;
1373 dpurdie 7894
   END;
7895
 
7896
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7897
END PK_LICENCING;
4040 dpurdie 7898
 
1374 dpurdie 7899
/
1373 dpurdie 7900
 
4040 dpurdie 7901
/
7902
--------------------------------------------------------
7903
--  DDL for Package Body PK_PACKAGE
7904
--------------------------------------------------------
7905
 
3959 dpurdie 7906
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
1373 dpurdie 7907
IS
7908
   /*-------------------------------------------------------------------------------------------------------*/
7909
   PROCEDURE new_version (
7910
      nlastpvid                   IN       NUMBER,
7911
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7912
      cbuildtype                  IN       CHAR,
7913
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7914
      nrtagid                     IN       NUMBER,
7915
      nuserid                     IN       NUMBER,
7916
      enumissues_state_imported   IN       NUMBER,
7917
      returnpvid                  OUT      NUMBER
7918
   )
7919
   IS
3959 dpurdie 7920
      origpkg_id                  package_versions.pkg_id%TYPE;
7921
      origdlocked                 package_versions.dlocked%TYPE;
7922
      ssv_mm                      package_versions.v_mm%TYPE;
7923
      ssv_nmm                     package_versions.v_nmm%TYPE;
7924
      ssv_ext                     package_versions.v_ext%TYPE;
7925
      spackageversion             VARCHAR2 (4000);
7926
      nissuestypes                NUMBER;
7927
      nviewid                     NUMBER;
7928
      reccount                    NUMBER;
7929
      isreleased                  package_versions.dlocked%TYPE := 'N';
7930
      slabel                      VARCHAR2 (4000)               := NULL;
1373 dpurdie 7931
 
7932
      CURSOR package_versions_cur
7933
      IS
7934
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
7935
           FROM package_versions pv
7936
          WHERE pv.pkg_version = snewpkgversion
7937
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
7938
                                         FROM package_versions origpv
7939
                                        WHERE origpv.pv_id = nlastpvid);
7940
 
3959 dpurdie 7941
      package_versions_rec package_versions_cur%ROWTYPE;
1373 dpurdie 7942
 
7943
      CURSOR clone_package_versions_cur
7944
      IS
7945
         SELECT DISTINCT pkg_id, dlocked
7946
                    FROM package_versions
7947
                   WHERE pv_id = nlastpvid;
7948
 
3959 dpurdie 7949
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
1373 dpurdie 7950
   BEGIN
7951
      spackageversion := snewpkgversion;
7952
 
7953
      IF nsettopvid IS NULL
7954
      THEN
7955
         -- SetToPv_id is not supplied, hence proceed.
7956
 
7957
         /* ---------------------------------------------------- */
3959 dpurdie 7958
         /* Find id package_version exists                       */
7959
         /* ---------------------------------------------------- */
1373 dpurdie 7960
         OPEN package_versions_cur;
7961
 
7962
         FETCH package_versions_cur
7963
          INTO package_versions_rec;
7964
 
7965
         IF package_versions_cur%NOTFOUND
7966
         THEN
7967
            ---  Create brand new package ---
7968
            SELECT seq_pv_id.NEXTVAL
7969
              INTO returnpvid
7970
              FROM DUAL;
7971
 
7972
            -- Split Version to get extention + other
7973
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
7974
 
7975
            -- Get previous package to clone from
7976
            OPEN clone_package_versions_cur;
7977
 
7978
            FETCH clone_package_versions_cur
7979
             INTO clone_package_versions_rec;
7980
 
7981
            origpkg_id := clone_package_versions_rec.pkg_id;
7982
            origdlocked := clone_package_versions_rec.dlocked;
7983
 
7984
            CLOSE clone_package_versions_cur;
7985
 
7986
            -- Automated built config
7987
            IF (cbuildtype = 'A')
7988
            THEN
7989
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
3959 dpurdie 7990
               -- Make sure that version is still unique
1373 dpurdie 7991
            END IF;
7992
 
7993
            -- Clone Package Version Details --
3959 dpurdie 7994
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
7995
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
7996
                                         v_ext, src_path, pv_description, pv_overview,
7997
                                         last_pv_id, owner_id, is_deployable,
7998
                                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
7999
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
8000
                        spackageversion AS pkg_version, 'N' AS dlocked,
8001
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
8002
                        ora_sysdatetime AS modified_stamp,
8003
                        nuserid AS modifier_id, ssv_mm AS v_mm,
8004
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
8005
                        pv.pv_description, pv.pv_overview,
8006
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
8007
                        pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
8008
                   FROM package_versions pv
8009
                  WHERE pv.pv_id = nlastpvid;
1373 dpurdie 8010
 
8011
            -- Set Issues Type for cloning ---
8012
            IF origdlocked = 'Y'
8013
            THEN
8014
               nissuestypes := enumissues_state_imported;
8015
            ELSE
8016
               nissuestypes := NULL;
8017
            END IF;
8018
 
8019
            -- Update Label for automated built
8020
            IF (cbuildtype = 'A')
8021
            THEN
8022
               slabel := get_automated_label (returnpvid);
8023
 
8024
               UPDATE package_versions pv
8025
                  SET pv.pkg_label = slabel
8026
                WHERE pv.pv_id = returnpvid;
8027
            END IF;
8028
 
8029
            basic_clone (nlastpvid,
8030
                         returnpvid,
8031
                         nrtagid,
8032
                         nuserid,
8033
                         origpkg_id,
8034
                         nissuestypes
8035
                        );
8036
         ELSE
8037
            --- Package already exists, hence reuse ---
8038
            returnpvid := package_versions_rec.pv_id;
8039
            isreleased := package_versions_rec.dlocked;
8040
         END IF;
8041
 
8042
         CLOSE package_versions_cur;
8043
      ELSE
8044
         returnpvid := nsettopvid;
8045
      END IF;
8046
   END new_version;
8047
 
8048
/*-------------------------------------------------------------------------------------------------------*/
8049
   PROCEDURE change_state (
8050
      pvid       IN   NUMBER,
8051
      newstate   IN   package_versions.dlocked%TYPE,
8052
      userid     IN   NUMBER
8053
   )
8054
   IS
8055
   BEGIN
8056
      -- Set package in Released mode
8057
      UPDATE package_versions pv
8058
         SET pv.dlocked = newstate,
8059
             pv.modified_stamp = ora_sysdatetime,
8060
             pv.modifier_id = userid
8061
       WHERE pv.pv_id = pvid;
8062
 
8063
      -- Log action --
8064
      IF newstate = 'Y'
8065
      THEN
8066
         -- RELEASED --
8067
         log_action (pvid,
8068
                     'makeofficial',
8069
                     userid,
8070
                     'Package state change to: Released'
8071
                    );
8072
      ELSIF newstate = 'N'
8073
      THEN
8074
         -- UNLOCKED --
8075
         log_action (pvid,
8076
                     'makeunofficial',
8077
                     userid,
8078
                     'Package state change to: Ulocked'
8079
                    );
8080
      ELSIF newstate = 'P'
8081
      THEN
8082
         -- PENDING APPROVAL --
8083
         log_action (pvid,
8084
                     'add_to_planned',
8085
                     userid,
8086
                     'Package state change to: Pending Approval'
8087
                    );
8088
      ELSIF newstate = 'R'
8089
      THEN
8090
         -- REJECTED --
8091
         log_action (pvid,
8092
                     'reject_package',
8093
                     userid,
8094
                     'Package state change to: Rejected'
8095
                    );
8096
      ELSIF newstate = 'A'
8097
      THEN
8098
         -- APPROVED --
8099
         log_action (pvid,
8100
                     'approve_package',
8101
                     userid,
8102
                     'Package state change to: Approved'
8103
                    );
8104
      END IF;
8105
   END;
8106
 
8107
/*-------------------------------------------------------------------------------------------------------*/
8108
   PROCEDURE destroy_package (
8109
      pvid               IN       NUMBER,
8110
      overridewarnings   IN       CHAR DEFAULT 'N',
8111
      problemstring      OUT      VARCHAR2
8112
   )
8113
   IS
8114
      LOCKED     CHAR;
8115
      pkgid      NUMBER;
8116
      ROWCOUNT   NUMBER;
8117
   BEGIN
8118
      /*
8119
      || This will destroy all package details from database.
8120
      || It will only be used to remove unwanted work in progress packages,
8121
      || or mestaken versions
8122
      */
8123
 
8124
      /*--------------- Business Rules Here -------------------*/
8125
      problemstring := NULL;
8126
 
8127
      IF overridewarnings = 'N'
8128
      THEN
8129
         -- Package must not be official
8130
         SELECT pv.dlocked
8131
           INTO LOCKED
8132
           FROM package_versions pv
8133
          WHERE pv.pv_id = pvid;
8134
 
8135
         IF LOCKED = 'Y'
8136
         THEN
8137
            problemstring :=
8138
                  problemstring
8139
               || '- Package is locked and released.'
8140
               || UTL_TCP.crlf;
8141
         END IF;
8142
 
8143
         -- Cannot remove if used in BOMs
8144
         SELECT COUNT (osc.prod_id)
8145
           INTO ROWCOUNT
8146
           FROM deployment_manager.os_contents osc
8147
          WHERE osc.prod_id = pvid;
8148
 
8149
         IF ROWCOUNT > 0
8150
         THEN
8151
            problemstring :=
8152
                  problemstring
8153
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
8154
               || UTL_TCP.crlf;
8155
         END IF;
8156
 
8157
         -- Cannot remove if Referenced as build dependency
8158
         SELECT COUNT (dep.pv_id)
8159
           INTO ROWCOUNT
8160
           FROM package_dependencies dep
8161
          WHERE dep.dpv_id = pvid;
8162
 
8163
         IF ROWCOUNT > 0
8164
         THEN
8165
            problemstring :=
8166
                  problemstring
8167
               || '- Package is referenced by other package as build dependency.'
8168
               || UTL_TCP.crlf;
8169
         END IF;
8170
 
8171
         -- Cannot remove if Referenced as runtime dependency
8172
         SELECT COUNT (rd.pv_id)
8173
           INTO ROWCOUNT
8174
           FROM runtime_dependencies rd
8175
          WHERE rd.rtd_id = pvid;
8176
 
8177
         IF ROWCOUNT > 0
8178
         THEN
8179
            problemstring :=
8180
                  problemstring
8181
               || '- Package is referenced by other package as runtime dependency.'
8182
               || UTL_TCP.crlf;
8183
         END IF;
8184
 
8185
         -- Cannot remove if Referenced as patch
8186
         SELECT COUNT (pp.pv_id)
8187
           INTO ROWCOUNT
8188
           FROM package_patches pp
8189
          WHERE pp.patch_id = pvid;
8190
 
8191
         IF ROWCOUNT > 0
8192
         THEN
8193
            problemstring :=
8194
                  problemstring
8195
               || '- Package is used as patch by other package.'
8196
               || UTL_TCP.crlf;
8197
         END IF;
8198
      END IF;
8199
 
8200
/*-------------------------------------------------------*/
8201
      IF (problemstring IS NULL)
8202
      THEN
8203
         --- Remove From Work in Progress
8204
         DELETE FROM work_in_progress wip
8205
               WHERE wip.pv_id = pvid;
8206
 
8207
         --- Remove From Pending
8208
         DELETE FROM planned pl
8209
               WHERE pl.pv_id = pvid;
8210
 
8211
         --- Remove From Released area
8212
         DELETE FROM release_content rc
8213
               WHERE rc.pv_id = pvid;
8214
 
8215
         ---Remove From Package Processes
8216
         DELETE FROM package_processes pp
8217
               WHERE pp.pv_id = pvid;
8218
 
8219
         --- Remove Dependencies
8220
         DELETE FROM package_dependencies dep
8221
               WHERE dep.pv_id = pvid;
8222
 
8223
         DELETE FROM package_dependencies dep
8224
               WHERE dep.dpv_id = pvid;
8225
 
8226
         --- Remove Runtime dependencies
8227
         DELETE FROM runtime_dependencies rtd
8228
               WHERE rtd.pv_id = pvid;
8229
 
8230
         DELETE FROM runtime_dependencies rtd
8231
               WHERE rtd.rtd_id = pvid;
8232
 
8233
         --- Remove components
8234
         DELETE FROM product_components pc
8235
               WHERE pc.pv_id = pvid;
8236
 
8237
         DELETE FROM release_components rc
8238
               WHERE rc.pv_id = pvid;
8239
 
8240
         --- Remove From Notification History
8241
         DELETE FROM notification_history nh
8242
               WHERE nh.pv_id = pvid;
8243
 
8244
         --- Remove From Ignore Warnings
8245
         DELETE FROM ignore_warnings iw
8246
               WHERE iw.pv_id = pvid;
8247
 
8248
         --- Remove From Additional Notes
8249
         DELETE FROM additional_notes an
8250
               WHERE an.pv_id = pvid;
8251
 
8252
         --- Remove From CQ Issues
8253
         DELETE FROM cq_issues cq
8254
               WHERE cq.pv_id = pvid;
8255
 
8256
         --- Remove from Package Patches
8257
         DELETE FROM package_patches pp
8258
               WHERE pp.pv_id = pvid;
8259
 
8260
         DELETE FROM package_patches pp
8261
               WHERE pp.patch_id = pvid;
8262
 
8263
         --- Remove From Package Documents
8264
         DELETE FROM package_documents pd
8265
               WHERE pd.pv_id = pvid;
8266
 
8267
         --- Remove from Code Review
8268
         DELETE FROM code_reviews cr
8269
               WHERE cr.pv_id = pvid;
8270
 
3959 dpurdie 8271
         --- Remove from Code Review URL
8272
         DELETE FROM code_review_url cru
8273
               WHERE cru.pv_id = pvid;
8274
 
1373 dpurdie 8275
         --- Remove from Unit Tests
8276
         DELETE FROM unit_tests ut
8277
               WHERE ut.pv_id = pvid;
8278
 
8279
         --- Remove from Package BuildEnv
8280
         DELETE FROM package_build_env pbe
8281
               WHERE pbe.pv_id = pvid;
8282
 
3959 dpurdie 8283
         --- Remove from Package Build Info
8284
         DELETE FROM package_build_info pbi
8285
               WHERE pbi.pv_id = pvid;
8286
 
1373 dpurdie 8287
         --- Remove from Build Order
8288
         DELETE FROM build_order bo
8289
               WHERE bo.pv_id = pvid;
8290
 
3959 dpurdie 8291
         --- Remove from Licencing
8292
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
8293
 
1373 dpurdie 8294
         --- Remove from Note Manager
8295
         DELETE FROM note_manager nm
8296
               WHERE nm.nid = pvid;
8297
 
8298
         --- Remove from Action log
8299
         DELETE FROM action_log al
8300
               WHERE al.pv_id = pvid;
3959 dpurdie 8301
 
8302
         --- Remove from Do Not Ripple
8303
         DELETE FROM DO_NOT_RIPPLE dnr
8304
               WHERE dnr.PV_ID = pvid;
8305
 
8306
         --- Remove from Advisory Ripple
8307
         DELETE FROM ADVISORY_RIPPLE ar
8308
               WHERE ar.PV_ID = pvid;
8309
 
8310
         --- Remove from Jira Issues
8311
         DELETE FROM JIRA_ISSUES jira
8312
               WHERE jira.PV_ID = pvid;
8313
 
8314
         --- Remove from Package Metrics
8315
         DELETE FROM package_metrics pm
8316
              WHERE pm.pv_id = pvid;
8317
 
8318
         -- Delete from Pegged Versions
8319
         DELETE FROM pegged_versions pegv
8320
              WHERE pegv.pv_id = pvid;
8321
 
1373 dpurdie 8322
         --- Finally Remove From Package Versions
8323
         --- Get Package name
8324
         SELECT pv.pkg_id
8325
           INTO pkgid
8326
           FROM package_versions pv
8327
          WHERE pv.pv_id = pvid;
8328
 
8329
         DELETE FROM package_versions pv
8330
               WHERE pv.pv_id = pvid;
8331
 
8332
         --- Remove package name if not used any more
8333
         SELECT COUNT (pv.pv_id)
8334
           INTO ROWCOUNT
8335
           FROM package_versions pv
8336
          WHERE pv.pkg_id = pkgid;
8337
 
8338
         IF ROWCOUNT < 1
8339
         THEN
8340
            DELETE FROM PACKAGES pkg
8341
                  WHERE pkg.pkg_id = pkgid;
8342
         END IF;
8343
      END IF;
8344
   END;
8345
 
8346
/*-------------------------------------------------------------------------------------------------------*/
8347
   PROCEDURE new_patch (
8348
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
8349
      nparentpvid        IN       NUMBER,
8350
      spatchidlist       IN       VARCHAR2,
8351
      nuserid            IN       NUMBER,
8352
      returnpatchid      OUT      NUMBER
8353
   )
8354
   IS
8355
      patchpv_id           NUMBER;
8356
      parpkg_id            NUMBER;
8357
      lastinstallorder     NUMBER;
8358
      ispatchdlocked       package_versions.dlocked%TYPE;
8359
      ssv_mm               package_versions.v_mm%TYPE;
8360
      ssv_nmm              package_versions.v_nmm%TYPE;
8361
      ssv_ext              package_versions.v_ext%TYPE;
3959 dpurdie 8362
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
1373 dpurdie 8363
 
8364
      CURSOR parent_cur
8365
      IS
8366
         SELECT pv.*, pkg.pkg_name
8367
           FROM package_versions pv, PACKAGES pkg
8368
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
8369
 
3959 dpurdie 8370
      parent_rec parent_cur%ROWTYPE;
1373 dpurdie 8371
 
8372
      CURSOR patch_cur
8373
      IS
8374
         SELECT pv.*, pg.pkg_name
8375
           FROM package_versions pv, PACKAGES pg
8376
          WHERE pv.pkg_id = parpkg_id
8377
            AND pv.pkg_version = snewpatchversion
8378
            AND pv.pkg_id = pg.pkg_id;
8379
 
3959 dpurdie 8380
      patch_rec  patch_cur%ROWTYPE;
1373 dpurdie 8381
 
8382
      CURSOR releases_cur
8383
      IS
8384
         SELECT rc.pv_id
8385
           FROM release_content rc
8386
          WHERE rc.pv_id = patch_rec.pv_id;
8387
 
3959 dpurdie 8388
      releases_rec releases_cur%ROWTYPE;
1373 dpurdie 8389
   BEGIN
8390
      -- Get Last Install Order
8391
      SELECT COUNT (*)
8392
        INTO lastinstallorder
8393
        FROM package_patches pp
8394
       WHERE pp.pv_id = nparentpvid;
8395
 
8396
      -- Get parent details
8397
      OPEN parent_cur;
8398
 
8399
      FETCH parent_cur
8400
       INTO parent_rec;
8401
 
8402
      parpkg_id := parent_rec.pkg_id;
8403
 
8404
      -- Find if patch exists in database
8405
      OPEN patch_cur;
8406
 
8407
      FETCH patch_cur
8408
       INTO patch_rec;
8409
 
8410
      -- Parent must be official
8411
      IF parent_rec.dlocked = 'Y'
8412
      THEN
8413
         IF patch_cur%NOTFOUND
8414
         THEN
8415
            ispatchdlocked := 'N';
8416
 
8417
            -- Create new patch version --
8418
            SELECT seq_pv_id.NEXTVAL
8419
              INTO patchpv_id
8420
              FROM DUAL;
8421
 
8422
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
8423
 
8424
            INSERT INTO package_versions
8425
                        (pv_id, pkg_id, pkg_version,
8426
                         dlocked, created_stamp, creator_id,
8427
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
8428
                         src_path,
8429
                         pv_description,
8430
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
3959 dpurdie 8431
                         is_autobuildable, ripple_field
1373 dpurdie 8432
                        )
8433
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
8434
                         ispatchdlocked, ora_sysdate, nuserid,
8435
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
8436
                         parent_rec.src_path,
8437
                            'This is a patch to '
8438
                         || parent_rec.pkg_name
8439
                         || ' '
8440
                         || parent_rec.pkg_version,
3959 dpurdie 8441
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
1373 dpurdie 8442
                        );
8443
 
8444
            INSERT INTO package_patches
8445
                        (pv_id, patch_id, install_order)
3959 dpurdie 8446
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8447
                        lastinstallorder + 1 AS install_order
8448
                   FROM package_versions pv
8449
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8450
 
8451
            /* LOG ACTION */
8452
            log_action (patchpv_id,
8453
                        'new_version',
8454
                        nuserid,
8455
                        'Patch version created: ' || snewpatchversion
8456
                       );
8457
            log_action (nparentpvid,
8458
                        'patch_add',
8459
                        nuserid,
8460
                        'New patch created and attached: ' || snewpatchversion
8461
                       );
8462
         ELSE
8463
            patchpv_id := patch_rec.pv_id;
8464
            ispatchdlocked := patch_rec.dlocked;
8465
 
8466
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
8467
            OPEN releases_cur;
8468
 
8469
            FETCH releases_cur
8470
             INTO releases_rec;
8471
 
8472
            IF releases_cur%NOTFOUND
8473
            THEN
8474
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
8475
               UPDATE package_versions
8476
                  SET is_patch = 'Y'
8477
                WHERE pv_id = patchpv_id;
8478
 
8479
               INSERT INTO package_patches
8480
                           (pv_id, patch_id, install_order)
3959 dpurdie 8481
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8482
                           lastinstallorder + 1 AS install_order
8483
                      FROM package_versions pv
8484
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8485
            END IF;
8486
 
8487
            CLOSE releases_cur;
8488
 
8489
            /* LOG ACTION */
8490
            log_action (nparentpvid,
8491
                        'patch_add',
8492
                        nuserid,
8493
                           'Patch version was found and attached: '
8494
                        || snewpatchversion
8495
                       );
8496
         END IF;
8497
      END IF;
8498
 
8499
      /* Create Patch Dependencies */
8500
      opatchdepcollector := in_list_number (spatchidlist);
8501
 
8502
      -- Make sure patch is unofficial before altering its dependencies
8503
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
8504
      THEN
8505
         -- Delete Existing Dependencies
8506
         DELETE FROM package_dependencies dep
8507
               WHERE dep.pv_id = patchpv_id;
8508
 
8509
         -- Insert new dependencies
8510
         INSERT INTO package_dependencies
8511
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
3959 dpurdie 8512
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
8513
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
8514
                     'L' AS build_type
8515
                FROM package_versions pv
8516
               WHERE pv.pv_id IN (
1373 dpurdie 8517
                      SELECT *
8518
                        FROM TABLE
8519
                                (CAST
8520
                                    (opatchdepcollector AS relmgr_number_tab_t)
8521
                                ));
8522
      END IF;
8523
 
8524
      -- Return patch_id
8525
      returnpatchid := patchpv_id;
8526
 
8527
      CLOSE parent_cur;
8528
 
8529
      CLOSE patch_cur;
8530
   EXCEPTION
8531
      WHEN DUP_VAL_ON_INDEX
8532
      THEN
8533
         raise_application_error (-20000,
8534
                                     'Patch version '
8535
                                  || snewpatchversion
8536
                                  || ' already exist.'
8537
                                 );
8538
   END;
8539
 
8540
/*-------------------------------------------------------------------------------------------------------*/
8541
   PROCEDURE obsolete_patch (
8542
      patchid            IN   NUMBER,
8543
      isobsolete         IN   CHAR,
8544
      obsoletecomments   IN   VARCHAR2,
8545
      userid             IN   NUMBER
8546
   )
8547
   IS
8548
   BEGIN
8549
      -- Update patch
8550
      UPDATE package_versions pv
8551
         SET pv.is_obsolete = isobsolete,
8552
             pv.obsolete_comments = obsoletecomments
8553
       WHERE pv.pv_id = patchid;
8554
 
8555
      /*
8556
      -- Update patch children
8557
      UPDATE PACKAGE_VERSIONS pv SET
8558
      pv.IS_OBSOLETE = IsObsolete,
8559
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8560
      WHERE pv.PV_ID IN (
8561
                     SELECT DISTINCT dep.DPV_ID
8562
                       FROM PACKAGE_DEPENDENCIES dep
8563
                      WHERE dep.PV_ID = PatchId
8564
                     );
8565
 
8566
 
8567
      -- Update patch parent
8568
      UPDATE PACKAGE_VERSIONS pv SET
8569
      pv.IS_OBSOLETE = IsObsolete,
8570
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8571
      WHERE pv.PV_ID IN (
8572
                     SELECT DISTINCT dep.PV_ID
8573
                       FROM PACKAGE_DEPENDENCIES dep
8574
                      WHERE dep.DPV_ID = PatchId
8575
                     );
8576
 
3959 dpurdie 8577
      */
1373 dpurdie 8578
 
8579
      /* LOG ACTION */
8580
      IF isobsolete IS NOT NULL
8581
      THEN
8582
         log_action (patchid,
8583
                     'patch_obsolete',
8584
                     userid,
8585
                     'Obsolete patch. ' || obsoletecomments
8586
                    );
8587
      ELSE
8588
         log_action (patchid,
8589
                     'patch_obsolete',
8590
                     userid,
8591
                     'Undo patch obsolete.'
8592
                    );
8593
      END IF;
8594
   END;
8595
 
8596
/*-------------------------------------------------------------------------------------------------------*/
8597
   PROCEDURE obsolete_patches (
8598
      spatchidlist       IN   VARCHAR2,
8599
      isobsolete         IN   CHAR,
8600
      obsoletecomments   IN   VARCHAR2,
8601
      userid             IN   NUMBER
8602
   )
8603
   IS
8604
   BEGIN
8605
      /*--------------- Business Rules Here -------------------*/
8606
      IF spatchidlist IS NULL
8607
      THEN
8608
         raise_application_error (-20000,
8609
                                  'Please select one or more Patches.'
8610
                                 );
8611
      END IF;
8612
 
8613
/*-------------------------------------------------------*/
8614
 
8615
      -- Update patch
8616
      UPDATE package_versions pv
8617
         SET pv.is_obsolete = isobsolete,
8618
             pv.obsolete_comments = obsoletecomments
8619
       WHERE pv.pv_id IN (
8620
                SELECT *
8621
                  FROM THE
8622
                          (SELECT CAST
8623
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
8624
                                     )
8625
                             FROM DUAL
8626
                          ));
3959 dpurdie 8627
      /*
8628
      -- Update patch children
8629
      UPDATE PACKAGE_VERSIONS pv SET
8630
      pv.IS_OBSOLETE = IsObsolete,
8631
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8632
      WHERE pv.PV_ID IN (
8633
                     SELECT DISTINCT dep.DPV_ID
8634
                       FROM PACKAGE_DEPENDENCIES dep
8635
                      WHERE dep.PV_ID = PatchId
8636
                     );
1373 dpurdie 8637
 
8638
 
3959 dpurdie 8639
      -- Update patch parent
8640
      UPDATE PACKAGE_VERSIONS pv SET
8641
      pv.IS_OBSOLETE = IsObsolete,
8642
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8643
      WHERE pv.PV_ID IN (
8644
                     SELECT DISTINCT dep.PV_ID
8645
                       FROM PACKAGE_DEPENDENCIES dep
8646
                      WHERE dep.DPV_ID = PatchId
8647
                     );
1373 dpurdie 8648
 
8649
      */
8650
 
3959 dpurdie 8651
      /* LOG ACTION
8652
      IF IsObsolete IS NOT NULL THEN
1373 dpurdie 8653
         Log_Action ( PatchId, 'patch_obsolete', UserId,
3959 dpurdie 8654
                     'Obsolete patch. '|| ObsoleteComments );
8655
      ELSE
8656
         Log_Action ( PatchId, 'patch_obsolete', UserId,
8657
                     'Undo patch obsolete.' );
8658
      END IF;  */
1373 dpurdie 8659
   END;
8660
 
8661
/*-------------------------------------------------------------------------------------------------------*/
8662
   PROCEDURE add_process (
8663
      nprocid         IN   processes.proc_id%TYPE,
8664
      shealthtag      IN   processes.proc_name%TYPE,
8665
      sprocdesc       IN   processes.proc_description%TYPE,
8666
      scmdinterface   IN   processes.run_as%TYPE,
8667
      spkgowner       IN   processes.pkg_owner%TYPE,
8668
      sisinterface    IN   processes.is_interface%TYPE,
8669
      npvid           IN   package_processes.pv_id%TYPE,
8670
      nuserid         IN   NUMBER
8671
   )
8672
   IS
8673
      pkgname   VARCHAR2 (100);
3959 dpurdie 8674
 
1373 dpurdie 8675
   BEGIN
8676
      INSERT INTO processes
8677
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
8678
                   is_interface
8679
                  )
8680
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
8681
                   sisinterface
8682
                  );
8683
 
8684
      pk_package.add_package_process (nprocid, npvid, nuserid);
8685
   END;
8686
 
8687
/*-------------------------------------------------------------------------------------------------------*/
8688
   PROCEDURE add_package_process (
8689
      nprocidlist   IN   VARCHAR2,
8690
      npvid         IN   package_processes.pv_id%TYPE,
8691
      nuserid       IN   NUMBER
8692
   )
8693
   IS
8694
      processname   VARCHAR2 (4000);
8695
 
8696
      CURSOR proc_cur
8697
      IS
8698
         SELECT prc.proc_id
8699
           FROM processes prc
8700
          WHERE prc.proc_id IN (
8701
                   SELECT *
8702
                     FROM THE
8703
                             (SELECT CAST
8704
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
8705
                                        )
8706
                                FROM DUAL
8707
                             ));
8708
 
3959 dpurdie 8709
      proc_rec  proc_cur%ROWTYPE;
1373 dpurdie 8710
   BEGIN
8711
      OPEN proc_cur;
8712
 
8713
      FETCH proc_cur
8714
       INTO proc_rec;
8715
 
8716
      WHILE proc_cur%FOUND
8717
      LOOP
3959 dpurdie 8718
         INSERT INTO package_processes (proc_id, pv_id)
8719
              VALUES (proc_rec.proc_id, npvid);
1373 dpurdie 8720
 
8721
         SELECT prc.proc_name
8722
           INTO processname
8723
           FROM processes prc
8724
          WHERE prc.proc_id = proc_rec.proc_id;
8725
 
8726
         -- Log Action --
8727
         log_action (npvid,
8728
                     'process_add',
8729
                     nuserid,
8730
                     'Added process with health tag ' || processname
8731
                    );
8732
 
8733
         FETCH proc_cur
8734
          INTO proc_rec;
8735
      END LOOP;
3959 dpurdie 8736
 
8737
      CLOSE proc_cur;
1373 dpurdie 8738
   END;
8739
 
8740
/*-------------------------------------------------------------------------------------------------------*/
8741
   PROCEDURE remove_process (
8742
      nprocid   IN   package_processes.proc_id%TYPE,
8743
      npvid     IN   package_processes.pv_id%TYPE,
8744
      nuserid   IN   NUMBER
8745
   )
8746
   IS
8747
      processname   VARCHAR2 (4000);
8748
   BEGIN
8749
      SELECT prc.proc_name
8750
        INTO processname
8751
        FROM processes prc
8752
       WHERE prc.proc_id = nprocid;
8753
 
8754
      DELETE FROM package_processes
8755
            WHERE proc_id = nprocid AND pv_id = npvid;
8756
 
8757
      -- Log Action --
8758
      log_action (npvid,
8759
                  'process_remove',
8760
                  nuserid,
8761
                  'Removed process with health tag ' || processname
8762
                 );
8763
   END;
8764
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8765
   /*
8766
   ** Author: Rupesh Solanki
8767
   ** Purpose: To move package versions from one release to another
8768
   ** Release: 4th September 2006
8769
   */
8770
   PROCEDURE move_package (
8771
      npvid        IN package_versions.pv_id%TYPE,
8772
      nrtagid      IN release_tags.rtag_id%TYPE,
8773
      nnewrtagid   IN release_tags.rtag_id%TYPE,
8774
      nuserid      IN NUMBER
8775
   )
8776
   IS
1373 dpurdie 8777
 
3959 dpurdie 8778
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
8779
 
8780
   BEGIN
8781
      SELECT rtag_name into oldrtag_name
8782
      FROM RELEASE_TAGS
8783
      WHERE rtag_id = nrtagid;
8784
 
8785
      SELECT rtag_name into newrtag_name
8786
      FROM RELEASE_TAGS
8787
      WHERE rtag_id = nnewrtagid;
8788
 
8789
      /* Table Work In Progress*/
8790
      UPDATE WORK_IN_PROGRESS
8791
      SET RTAG_ID = nnewrtagid
8792
      WHERE RTAG_ID = nrtagid
8793
      AND PV_ID = npvid;
8794
 
8795
      /* Table PLANNED*/
8796
      UPDATE PLANNED
8797
      SET RTAG_ID = nnewrtagid
8798
      WHERE RTAG_ID = nrtagid
8799
      AND PV_ID = npvid;
8800
 
8801
      /* Table PEGGED_VERSIONS */
8802
      DELETE FROM PEGGED_VERSIONS pegv
8803
      WHERE pegv.RTAG_ID = nrtagid
8804
      AND pegv.PV_ID = npvid;
8805
 
8806
      /* Table ADVISORY_RIPPLE*/
8807
      DELETE FROM ADVISORY_RIPPLE
8808
      WHERE RTAG_ID = nrtagid
8809
      AND PV_ID = npvid;
8810
 
8811
 
1373 dpurdie 8812
      -- Log Action --
8813
      log_action (npvid,
8814
                  'move_package_version',
8815
                  nuserid,
8816
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
3959 dpurdie 8817
                 );
8818
   END;
8819
 
1373 dpurdie 8820
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8821
   /*
8822
   ** Author: Rupesh Solanki
8823
   ** Purpose: To modify the product state from integration to test to deployment
8824
   ** Release: 25th January 2006
8825
   */
8826
   PROCEDURE modify_product_state (
8827
      npvid    IN package_versions.pv_id%TYPE,
8828
      nrtagid  IN release_tags.rtag_id%TYPE,
8829
      nstateid IN product_states.state_id%TYPE,
8830
      nuserid  IN NUMBER
1373 dpurdie 8831
   ) IS
3959 dpurdie 8832
 
8833
      sStateName VARCHAR2(4000);
8834
      sRtagName VARCHAR2(4000);
8835
 
8836
   BEGIN
8837
 
8838
      UPDATE RELEASE_CONTENT
8839
      SET PRODUCT_STATE = nstateid
8840
      WHERE PV_ID = npvid
8841
      AND RTAG_ID = nrtagid;
8842
 
8843
 
8844
      SELECT STATE INTO sStateName
8845
      FROM PRODUCT_STATES
8846
      WHERE STATE_ID = nstateid;
8847
 
8848
      SELECT RTAG_NAME into sRtagName
8849
      FROM RELEASE_TAGS
8850
      WHERE RTAG_ID = nrtagid;
8851
 
8852
 
8853
      -- Log Action --
8854
      log_action (npvid,
8855
                  'modify_product_state',
8856
                     nuserid,
8857
                     sStateName || ' in '|| sRtagName
8858
                  );
8859
   END;
8860
/*-------------------------------------------------------------------------------------------------------*/
8861
   /*
8862
   ** Author: Jeremy Tweddle
8863
   ** Date: 24/Aug/2007
8864
   */
8865
   PROCEDURE add_code_review_url (
8866
      npvid           IN    NUMBER,
8867
      nprojid         IN    NUMBER,
8868
      surl            IN    VARCHAR2,
8869
      sreason         IN    VARCHAR2,
8870
      ddateofreview   IN    DATE
8871
   ) IS
8872
 
8873
      ncrid NUMBER;
8874
 
8875
   BEGIN
8876
 
8877
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
8878
 
8879
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
8880
                                    last_modified )
8881
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
8882
 
8883
   END;
8884
/*-------------------------------------------------------------------------------------------------------*/
8885
   /*
8886
   ** Author: Jeremy Tweddle
8887
   ** Date: 22/Aug/2007
8888
   */
8889
   PROCEDURE update_code_review_url (
8890
      ncrid           IN    NUMBER,
8891
      nprojid         IN    NUMBER,
8892
      surl            IN    VARCHAR2,
8893
      sreason         IN    VARCHAR2
8894
   ) IS
8895
 
8896
   BEGIN
8897
 
8898
      UPDATE code_review_url
8899
      SET url = surl,
8900
          proj_id = nprojid,
8901
          reason = sreason,
8902
          last_modified = ora_sysdate
8903
      WHERE cr_id = ncrid;
8904
 
8905
   END;
8906
/*-------------------------------------------------------------------------------------------------------*/
8907
   /*
8908
   ** Author: Jeremy Tweddle
8909
   ** Date: 22/Aug/2007
8910
   */
8911
   PROCEDURE remove_code_review_url (
8912
      ncrid  IN    NUMBER
8913
   ) IS
8914
 
8915
   BEGIN
8916
      DELETE FROM code_review_url
8917
      WHERE cr_id = ncrid;
8918
   END;
8919
/*-------------------------------------------------------------------------------------------------------*/
8920
END pk_package;
4040 dpurdie 8921
 
1374 dpurdie 8922
/
1373 dpurdie 8923
 
4040 dpurdie 8924
/
8925
--------------------------------------------------------
8926
--  DDL for Package Body PK_PLANNED
8927
--------------------------------------------------------
8928
 
3959 dpurdie 8929
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
8930
 
1373 dpurdie 8931
/*
8932
------------------------------
3959 dpurdie 8933
||  Last Modified:  G.Huddy
8934
||  Modified Date:  05/Aug/2008
8935
||  Body Version:   1.2
1373 dpurdie 8936
------------------------------
8937
*/
8938
 
8939
 
8940
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8941
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8942
 
3959 dpurdie 8943
    oldPvId NUMBER;
8944
    ReleaseLocation VARCHAR2(4000);
8945
    IsPatch CHAR(1) := NULL;
8946
    sLocation VARCHAR2(4000) := NULL;
8947
    nRtagIdLocation NUMBER;
1373 dpurdie 8948
 
8949
 
8950
 
3959 dpurdie 8951
BEGIN
8952
    /*--------------- Business Rules Here -------------------*/
8953
    /*-------------------------------------------------------*/
1373 dpurdie 8954
 
3959 dpurdie 8955
    BEGIN
8956
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
8957
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
8958
          FROM PLANNED pl,
8959
               RELEASE_TAGS rt,
8960
               PROJECTS proj
8961
         WHERE pl.PV_ID = newPvId
8962
           AND pl.RTAG_ID = rt.RTAG_ID
8963
           AND rt.OFFICIAL != 'Y'
8964
           AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 8965
 
3959 dpurdie 8966
        EXCEPTION
8967
            WHEN NO_DATA_FOUND THEN
8968
                sLocation := NULL;
8969
    END;
1373 dpurdie 8970
 
3959 dpurdie 8971
 
8972
 
8973
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
8974
 
8975
        -- Add to "Pending" area
8976
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
8977
        VALUES( RtagId, newPvId, ViewId, 'R' );
8978
 
8979
 
8980
        /* LOG ACTION */
8981
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8982
          FROM PROJECTS proj,
8983
               RELEASE_TAGS rt
8984
         WHERE rt.PROJ_ID = proj.PROJ_ID
8985
           AND rt.RTAG_ID = RtagId;
8986
 
8987
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
8988
 
8989
    ELSE
8990
 
8991
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
8992
 
8993
    END IF;
8994
 
8995
END;
1373 dpurdie 8996
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8997
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8998
 
3959 dpurdie 8999
    ReleaseLocation VARCHAR2(4000);
1373 dpurdie 9000
 
3959 dpurdie 9001
BEGIN
1373 dpurdie 9002
 
3959 dpurdie 9003
    /*--------------- Business Rules Here -------------------*/
9004
    /*-------------------------------------------------------*/
1373 dpurdie 9005
 
9006
 
3959 dpurdie 9007
    -- Get release location for logging pusposes
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;
1373 dpurdie 9013
 
9014
 
3959 dpurdie 9015
    -- Delete from Work In Progress
9016
    DELETE
9017
      FROM PLANNED pl
9018
     WHERE pl.RTAG_ID = RtagId
9019
       AND pl.PV_ID = PvId;
1373 dpurdie 9020
 
3959 dpurdie 9021
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
9022
 
9023
 
9024
 
9025
 
9026
END;
1373 dpurdie 9027
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9028
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
1373 dpurdie 9029
 
3959 dpurdie 9030
    ReturnValue NUMBER;
1373 dpurdie 9031
 
3959 dpurdie 9032
BEGIN
9033
    SELECT pl.VIEW_ID INTO ReturnValue
9034
      FROM PLANNED pl
9035
     WHERE pl.RTAG_ID = RtagId
9036
       AND pl.PV_ID = PvId;
9037
 
9038
    RETURN ReturnValue;
9039
END;
9040
/*-------------------------------------------------------------------------------------------------------*/
9041
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9042
 
9043
    IsBaseView CHAR(1);
9044
 
9045
BEGIN
9046
 
9047
    -- Check if the view is BASE VIEW
9048
    SELECT vi.BASE_VIEW INTO IsBaseView
9049
      FROM VIEWS vi
9050
     WHERE vi.VIEW_ID = ViewId;
9051
 
9052
 
9053
    IF (IsBaseView = 'Y') THEN
9054
        -- Get Base view content
9055
        OPEN RecordSet FOR
9056
        SELECT 0 AS PKG_STATE,
9057
               NULL AS DEPRECATED_STATE,
9058
               pv.pv_id,
9059
               pkg.pkg_name,
9060
               pv.pkg_version,
9061
               pv.dlocked,
9062
               pv.pv_description,
9063
               pv.BUILD_TYPE,
9064
               rel.operation
9065
          FROM PLANNED rel,
9066
               packages pkg,
9067
               package_versions pv
9068
         WHERE pv.pkg_id = pkg.pkg_id
9069
           AND rel.pv_id = pv.pv_id
9070
           AND rel.VIEW_ID = ViewId
9071
           AND rel.RTAG_ID = RtagId
9072
         ORDER BY UPPER(pkg.PKG_NAME);
9073
 
9074
    ELSE
9075
 
9076
        -- Get non base view content
9077
        OPEN RecordSet FOR
9078
        SELECT 0 AS PKG_STATE,
9079
               NULL AS DEPRECATED_STATE,
9080
               pv.pv_id,
9081
               pkg.pkg_name,
9082
               pv.pkg_version,
9083
               pv.dlocked,
9084
               pv.pv_description,
9085
               pv.BUILD_TYPE,
9086
               rel.operation
9087
          FROM PLANNED rel,
9088
               packages pkg,
9089
               package_versions pv,
9090
               VIEW_DEF vd
9091
         WHERE pv.pkg_id = pkg.pkg_id
9092
           AND rel.pv_id = pv.pv_id
9093
           AND rel.RTAG_ID = RtagId
9094
           AND vd.VIEW_ID = ViewId
9095
           AND vd.PKG_ID = pv.PKG_ID
9096
         ORDER BY UPPER(pkg.PKG_NAME);
9097
 
9098
    END IF;
9099
 
9100
 
9101
END;
9102
/*-------------------------------------------------------------------------------------------------------*/
9103
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
9104
 
9105
BEGIN
9106
 
9107
    UPDATE PLANNED pl SET
9108
    pl.VIEW_ID = NewViewId
9109
    WHERE pl.PV_ID = PvId
9110
      AND pl.RTAG_ID = RtagId;
9111
 
9112
END;
9113
/*-------------------------------------------------------------------------------------------------------*/
9114
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
9115
-- version of a package as part of a release-to-release merge operation carried out within release manager.
9116
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
9117
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
9118
-- via the Release Manager merge manager display
9119
 
9120
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
9121
 
9122
    ReleaseLocation VARCHAR2(4000);
9123
 
9124
        entryExists NUMBER;
9125
        existingOperation CHAR;
9126
BEGIN
9127
    /*--------------- Business Rules Here -------------------*/
9128
    /*-------------------------------------------------------*/
9129
 
9130
      -- Determine if the specified PV_ID already exists in the planned table....
9131
      SELECT COUNT (pl.pv_id) INTO entryExists
9132
      FROM PLANNED pl
9133
      WHERE pl.pv_id = newPvId
9134
      AND pl.rtag_id = RtagId
9135
      AND pl.view_id = ViewId;
9136
 
9137
      -- If the specified PV_ID already exists in the planned table....
9138
      IF entryExists = 1 THEN
9139
 
9140
         -- Get the operation for the existing entry
9141
         SELECT pl.operation INTO existingOperation
9142
         FROM PLANNED pl
9143
         WHERE pl.pv_id = newPvId
9144
         AND pl.rtag_id = RtagId
9145
         AND pl.view_id = ViewId;
9146
 
9147
         -- Is the specified merge operation the opposite of the existing entry?
9148
         -- If it is not, then there is nothing to do, otherwise...
9149
         -- NOTE: A = Add, S = Subtract
9150
         IF (mergeOperation = 'S' AND existingOperation = 'A')
9151
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
9152
 
9153
           -- It is the opposite, so effectively it cancels the existing entry
9154
           -- Remove the entry from the planned table
9155
           DELETE
9156
            FROM PLANNED pl
9157
           WHERE pl.pv_id = newPvId
9158
             AND pl.rtag_id = RtagId
9159
             AND pl.view_id = ViewId;
9160
 
9161
           -- Log action
9162
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9163
             FROM PROJECTS proj,
9164
                  RELEASE_TAGS rt
9165
            WHERE rt.PROJ_ID = proj.PROJ_ID
9166
              AND rt.RTAG_ID = RtagId;
9167
 
9168
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9169
         END IF;
3959 dpurdie 9170
      ELSE
9171
         -- Add to Planned tabled
9172
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9173
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
1373 dpurdie 9174
 
3959 dpurdie 9175
         -- Log Action
9176
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9177
          FROM PROJECTS proj,
9178
               RELEASE_TAGS rt
9179
         WHERE rt.PROJ_ID = proj.PROJ_ID
9180
         AND   rt.RTAG_ID = RtagId;
9181
 
9182
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9183
      END IF;
9184
 
3959 dpurdie 9185
END;
1373 dpurdie 9186
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9187
END PK_PLANNED;
4040 dpurdie 9188
 
3959 dpurdie 9189
/
1373 dpurdie 9190
 
4040 dpurdie 9191
/
9192
--------------------------------------------------------
9193
--  DDL for Package Body PK_PROJECT
9194
--------------------------------------------------------
9195
 
3959 dpurdie 9196
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
1373 dpurdie 9197
 
3959 dpurdie 9198
    /*------------------------------------------------------------------------*/
9199
    PROCEDURE update_base_url (
9200
    nprojid   IN  projects.proj_id%TYPE,
9201
    sbaseurl  IN  VARCHAR2
9202
    ) IS
9203
    BEGIN
1373 dpurdie 9204
 
3959 dpurdie 9205
    UPDATE projects
9206
    SET base_url = sbaseurl
9207
    WHERE proj_id = nprojid;
9208
 
9209
    END update_base_url;
9210
 
9211
/*------------------------------------------------------------------------*/
9212
    PROCEDURE update_project_config (
9213
    nprojid   IN  projects.proj_id%TYPE,
9214
    sbaseurl  IN  VARCHAR2,
9215
    sjirakey  IN  VARCHAR2
9216
    ) IS
9217
    BEGIN
9218
 
9219
    UPDATE projects
9220
    SET base_url = sbaseurl,
9221
        jira_key = sjirakey
9222
    WHERE proj_id = nprojid;
9223
 
9224
    END update_project_config;
9225
    /*------------------------------------------------------------------------*/
9226
 
9227
    END pk_project;
4040 dpurdie 9228
 
3959 dpurdie 9229
/
9230
 
4040 dpurdie 9231
/
9232
--------------------------------------------------------
9233
--  DDL for Package Body PK_RELEASE
9234
--------------------------------------------------------
9235
 
3959 dpurdie 9236
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
9237
 
1373 dpurdie 9238
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9239
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
1373 dpurdie 9240
 
3959 dpurdie 9241
RtagId NUMBER;
9242
ParentRtagId NUMBER;
9243
RecCount NUMBER := 0;
9244
VtreeId NUMBER;
1373 dpurdie 9245
 
3959 dpurdie 9246
BEGIN
9247
   /*--------------- Business Rules Here -------------------*/
9248
   -- Check for missing parameters
9249
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
9250
   THEN
9251
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
1373 dpurdie 9252
 
3959 dpurdie 9253
   END IF;
1373 dpurdie 9254
 
3959 dpurdie 9255
 
9256
   -- Check for duplicate Release Names
9257
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9258
     FROM RELEASE_TAGS rt
9259
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9260
      AND rt.PROJ_ID = nProjId;
9261
 
9262
   IF (RecCount > 0) THEN
9263
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9264
   END IF;
9265
   /*-------------------------------------------------------*/
9266
 
9267
 
9268
   -- Get rtag_id
9269
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
9270
 
9271
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
9272
 
9273
 
9274
 
9275
   -- Get Parent RtagId
9276
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
9277
 
9278
   -- If the parent RTAG is NOT in this project then we cannot use it.
9279
   -- We must re-assign the parent to be the new release's RTAG_ID instead
9280
   -- else it will not show up in the projects release tree (DEVI-55480)
9281
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9282
     FROM RELEASE_TAGS rt
9283
    WHERE rt.RTAG_ID = ParentRtagId
9284
      AND rt.PROJ_ID = nProjId;
9285
 
9286
   IF (RecCount = 0) THEN
9287
     ParentRtagId := RtagId;
9288
   END IF;
9289
 
9290
   -- Create new release
9291
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
9292
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
9293
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
9294
   VALUES ( RtagId,
9295
          sReleaseName,
9296
          sReleaseComments,
9297
          ORA_SYSDATE,
9298
          nUserId,
9299
          'N',
9300
          'N',
9301
          0,
9302
          ParentRtagId,
9303
          nProjId,
9304
          VtreeId );
9305
 
9306
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
9307
   IF (NOT nSourceRtagId IS NULL)
9308
   THEN
9309
      UPDATE RELEASE_TAGS rtd
9310
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
9311
      WHERE rtd.RTAG_ID = RtagId;
9312
   END IF;
9313
 
9314
   -- Update display Order
9315
   UPDATE_DISPLAY_ORDER ( nProjId );
9316
 
9317
   /* Log Project Action */
9318
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
9319
 
9320
 
9321
   -- Import Release Contents
9322
   IF (NOT nSourceRtagId IS NULL) THEN
9323
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
9324
   END IF;
9325
 
9326
END;
9327
/*-------------------------------------------------------------------------------------------------------*/
9328
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
9329
 
9330
 
9331
BEGIN
9332
 
9333
 
9334
   /*--------------- Business Rules Here -------------------*/
9335
   /*-------------------------------------------------------*/
9336
 
9337
   UPDATE RELEASE_TAGS urt SET
9338
   urt.DISPLAY_ORDER = (
9339
                  SELECT qry.REC_NUM
9340
                    FROM (
9341
                        SELECT rel.*, ROWNUM AS REC_NUM
9342
                          FROM (
9343
 
9344
                                SELECT rt.RTAG_ID,
9345
                                    rt.DISPLAY_ORDER,
9346
                                     DECODE( rt.PARENT_RTAG_ID,
9347
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
9348
                                FROM RELEASE_TAGS rt
9349
                               WHERE rt.PROJ_ID = nProjId
9350
 
9351
                                ) rel
9352
                        START WITH rel.PARENT_RTAG_ID = 0
9353
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
9354
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
9355
                        ) qry
9356
                     WHERE qry.RTAG_ID = urt.RTAG_ID
9357
                  )
9358
   WHERE urt.PROJ_ID = nProjId;
9359
 
9360
END;
9361
/*-------------------------------------------------------------------------------------------------------*/
9362
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
9363
 
9364
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9365
   SeqNum NUMBER;
9366
 
9367
BEGIN
9368
 
9369
 
9370
   /*--------------- Business Rules Here -------------------*/
9371
   /*-------------------------------------------------------*/
9372
 
9373
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
9374
 
9375
   -- Set start sequence number
9376
   SeqNum := 1;
9377
 
9378
   FOR i IN 1..nIdCollector.COUNT
9379
   LOOP
9380
 
9381
      -- Update new display order
9382
      UPDATE RELEASE_TAGS rt SET
9383
         rt.DISPLAY_ORDER = SeqNum
9384
       WHERE rt.PROJ_ID = nProjId
9385
         AND rt.RTAG_ID = nIdCollector(i);
9386
 
9387
      SeqNum := SeqNum + 1;
9388
 
9389
   END LOOP;
9390
 
9391
END;
9392
/*-------------------------------------------------------------------------------------------------------*/
9393
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
9394
 
9395
RecCount NUMBER := 0;
9396
ProjId NUMBER;
9397
 
9398
BEGIN
9399
 
9400
 
9401
   /*--------------- Business Rules Here -------------------*/
9402
   -- Check for missing parameters
9403
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
9404
   THEN
9405
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9406
 
9407
   END IF;
9408
 
9409
 
9410
   -- Check for duplicate Release Names
9411
   SELECT rt.PROJ_ID INTO ProjId
9412
     FROM RELEASE_TAGS rt
9413
    WHERE rt.RTAG_ID = nRtagId;
9414
 
9415
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9416
     FROM RELEASE_TAGS rt
9417
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9418
      AND rt.RTAG_ID != nRtagId
9419
      AND rt.PROJ_ID = ProjId;
9420
 
9421
 
9422
   IF (RecCount > 0) THEN
9423
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9424
   END IF;
9425
   /*-------------------------------------------------------*/
9426
 
9427
 
9428
 
9429
   -- Update release details
9430
   UPDATE RELEASE_TAGS rt SET
9431
   rt.RTAG_NAME = sReleaseName,
9432
   rt.DESCRIPTION = sReleaseComments,
9433
   rt.PARENT_RTAG_ID = nParentRtagId,
9434
   rt.ASSOC_MASS_REF = nMASSRtagId,
9435
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9436
   rt.OWNER_EMAIL = sOwnerEmail,
9437
   rt.PRODUCT_STATE_USED = cState
9438
   WHERE rt.RTAG_ID = nRtagId;
9439
 
9440
   -- Update display Order
9441
   UPDATE_DISPLAY_ORDER ( ProjId );
9442
 
9443
   /* Log Project Action */
9444
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9445
 
9446
 
9447
 
9448
 
9449
END;
9450
/*-------------------------------------------------------------------------------------------------------*/
9451
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9452
 
9453
   RecCount NUMBER := 0;
9454
   sReleaseId VARCHAR2(4000);
9455
   ProjId NUMBER;
9456
 
9457
BEGIN
9458
   /*--------------- Business Rules Here -------------------*/
9459
   IF (nRtagId IS NULL)
9460
   THEN
9461
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9462
   END IF;
9463
 
9464
 
9465
 
9466
   -- Check for any kids
9467
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9468
     FROM RELEASE_TAGS rt
9469
    WHERE rt.PARENT_RTAG_ID = nRtagId
9470
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9471
 
9472
   IF (RecCount > 0) THEN
9473
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9474
   END IF;
9475
   /*-------------------------------------------------------*/
9476
 
9477
   -- Clear the release contents
9478
   Clean_Release_Contents ( nRtagId, nUserId );
9479
 
9480
   /* Log Project Action */
9481
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9482
     FROM RELEASE_TAGS rt
9483
    WHERE rt.RTAG_ID = nRtagId;
9484
 
9485
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9486
 
9487
 
9488
   -- Remove Release
9489
   DELETE
9490
     FROM RELEASE_TAGS rt
9491
    WHERE rt.RTAG_ID = nRtagId;
9492
 
9493
 
9494
 
9495
END;
9496
/*-------------------------------------------------------------------------------------------------------*/
9497
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9498
 
9499
   sSourceLocation VARCHAR2(4000);
9500
   sTargetLocation VARCHAR2(4000);
9501
   ProjId NUMBER;
9502
   cReleaseMode CHAR(1);
9503
   RconId NUMBER;
9504
 
9505
   -- this cursor gets the source release daemon configurations, ensuring that the
9506
   -- first record will be the master daemon, and subsequent records will be the slaves.
9507
   CURSOR curSrcReleaseConfigs IS
9508
    SELECT daemon_hostname, gbe_id, gbe_buildfilter
9509
     FROM RELEASE_CONFIG rc
9510
    WHERE rc.RTAG_ID = nSourceRtagId
9511
    ORDER BY rc.daemon_mode;
9512
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
9513
 
9514
    -- this cursor looks for target release daemons
9515
   CURSOR curTgtReleaseConfigs IS
9516
    SELECT rcon_id
9517
     FROM RELEASE_CONFIG rc
9518
    WHERE rc.RTAG_ID = nTargetRtagId;
9519
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
9520
 
9521
    -- this cursor looks for target release daemon run level entries
9522
   CURSOR curTgtReleaseConfigRunLevel IS
9523
    SELECT current_run_level
9524
     FROM RUN_LEVEL rl
9525
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
9526
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
9527
 
9528
BEGIN
9529
   /*--------------- Business Rules Here -------------------*/
9530
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9531
   THEN
9532
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9533
   END IF;
9534
 
9535
   IF (nSourceRtagId = nTargetRtagId) THEN
9536
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9537
   END IF;
9538
 
9539
 
9540
   -- Check if Target release is in OPEN mode
9541
   SELECT rt.OFFICIAL  INTO  cReleaseMode
9542
     FROM RELEASE_TAGS rt
9543
    WHERE rt.RTAG_ID = nTargetRtagId;
9544
 
9545
   IF (cReleaseMode != 'N') THEN
9546
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9547
   END IF;
9548
 
9549
   -- check that the target release's daemons are all paused before we allow an import operation
9550
   OPEN curTgtReleaseConfigs;
9551
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
9552
 
9553
   WHILE curTgtReleaseConfigs%FOUND
9554
   LOOP
9555
      OPEN curTgtReleaseConfigRunLevel;
9556
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
9557
      IF curTgtReleaseConfigRunLevel%FOUND THEN
9558
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
9559
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
9560
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
9561
         END IF;
1373 dpurdie 9562
      ELSE
3959 dpurdie 9563
         -- we don't know what the daemon run level is so err on the side of caution
9564
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
1373 dpurdie 9565
      END IF;
3959 dpurdie 9566
      CLOSE curTgtReleaseConfigRunLevel;
1373 dpurdie 9567
 
3959 dpurdie 9568
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
9569
   END LOOP;
1373 dpurdie 9570
 
3959 dpurdie 9571
   CLOSE curTgtReleaseConfigs;
1373 dpurdie 9572
 
9573
 
3959 dpurdie 9574
   /*-------------------------------------------------------*/
1373 dpurdie 9575
 
3959 dpurdie 9576
   -- Clean target contents
9577
   Clean_Release_Contents ( nTargetRtagId, nUserId );
1373 dpurdie 9578
 
9579
 
3959 dpurdie 9580
   -- Import Released Area Contents
9581
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
9582
   SELECT nTargetRtagId AS RTAG_ID,
9583
         rc.PV_ID,
9584
         rc.BASE_VIEW_ID,
9585
         rc.INSERT_STAMP,
9586
         rc.INSERTOR_ID,
9587
         rc.PKG_STATE,
9588
         rc.PKG_ID,
9589
         rc.DEPRECATED_STATE
9590
     FROM RELEASE_CONTENT rc
9591
    WHERE rc.RTAG_ID = nSourceRtagId;
9592
 
9593
 
9594
   -- Import any Pegged Version settings from the source release
9595
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
9596
   SELECT nTargetRtagId AS RTAG_ID,
9597
          pegv.PV_ID
9598
     FROM PEGGED_VERSIONS pegv
9599
    WHERE pegv.RTAG_ID = nSourceRtagId;
9600
 
9601
   -- Import any Advisory Ripple settings from the source release
9602
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
9603
   SELECT nTargetRtagId AS RTAG_ID,
9604
          avr.PV_ID
9605
     FROM ADVISORY_RIPPLE avr
9606
    WHERE avr.RTAG_ID = nSourceRtagId;
9607
 
9608
 
9609
   --Import Release Configuration Information
9610
   OPEN curSrcReleaseConfigs;
9611
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9612
 
9613
   WHILE curSrcReleaseConfigs%FOUND
9614
   LOOP
9615
      -- add a daemon to the target release
9616
      PK_BUILDAPI.add_daemon( recSrcReleaseConfigs.daemon_hostname, nTargetRtagId, recSrcReleaseConfigs.gbe_id, recSrcReleaseConfigs.gbe_buildfilter );
9617
 
9618
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9619
   END LOOP;
9620
 
9621
   CLOSE curSrcReleaseConfigs;
9622
 
9623
 
9624
 
9625
   -- Import Ignore Warning states
9626
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9627
   SELECT nTargetRtagId AS RTAG_ID,
9628
          igw.PV_ID,
9629
          igw.DPV_ID
9630
     FROM IGNORE_WARNINGS igw
9631
    WHERE igw.rtag_id = nSourceRtagId;
9632
 
9633
 
9634
   /* Log Project Action */
9635
   -- Get Source Location
9636
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9637
     FROM RELEASE_TAGS rt,
9638
           PROJECTS pr
9639
    WHERE rt.PROJ_ID = pr.PROJ_ID
9640
      AND rt.RTAG_ID = nSourceRtagId;
9641
 
9642
   -- Get Target Location
9643
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9644
     FROM RELEASE_TAGS rt,
9645
           PROJECTS pr
9646
    WHERE rt.PROJ_ID = pr.PROJ_ID
9647
      AND rt.RTAG_ID = nTargetRtagId;
9648
 
9649
   -- Get project id
9650
   SELECT rt.PROJ_ID  INTO  ProjId
9651
     FROM RELEASE_TAGS rt
9652
    WHERE rt.RTAG_ID = nTargetRtagId;
9653
 
9654
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
9655
END;
9656
 
9657
 
9658
 
1373 dpurdie 9659
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9660
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
1373 dpurdie 9661
 
3959 dpurdie 9662
   RecCount NUMBER;
9663
        rconIdList VARCHAR2(4000);
1373 dpurdie 9664
 
3959 dpurdie 9665
BEGIN
9666
   /*--------------- Business Rules Here -------------------*/
9667
   IF (nRtagId IS NULL)
9668
   THEN
9669
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9670
   END IF;
1373 dpurdie 9671
 
9672
 
3959 dpurdie 9673
   -- Check if other release references this release
9674
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9675
     FROM RELEASE_LINKS rl
9676
    WHERE rl.REF_RTAG_ID = nRtagId;
1373 dpurdie 9677
 
3959 dpurdie 9678
   IF (RecCount > 0) THEN
9679
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9680
   END IF;
9681
   /*-------------------------------------------------------*/
1373 dpurdie 9682
 
3959 dpurdie 9683
   -- Delete Release links
9684
   DELETE
9685
     FROM RELEASE_LINKS rl
9686
    WHERE rl.RTAG_ID = nRtagId;
9687
 
9688
   -- Delete ignore warning
9689
   DELETE
9690
     FROM IGNORE_WARNINGS iw
9691
    WHERE iw.RTAG_ID = nRtagId;
9692
 
9693
 
9694
   -- Delete Build Order cached calculations
9695
   DELETE
9696
     FROM BUILD_ORDER bo
9697
    WHERE bo.RTAG_ID = nRtagId;
9698
 
9699
 
9700
   -- Delete Notification History
9701
   DELETE
9702
     FROM NOTIFICATION_HISTORY nh
9703
    WHERE nh.RTAG_ID = nRtagId;
9704
 
9705
 
9706
   -- Delete Released Area Contents
9707
   DELETE
9708
     FROM RELEASE_CONTENT rc
9709
    WHERE rc.RTAG_ID = nRtagId;
9710
 
9711
 
9712
   -- Delete Work In Progress Area Contents
9713
   DELETE
9714
     FROM WORK_IN_PROGRESS wip
9715
    WHERE wip.RTAG_ID = nRtagId;
9716
 
9717
 
9718
   -- Delete Pending Area Contents
9719
   DELETE
9720
     FROM PLANNED pl
9721
    WHERE pl.RTAG_ID = nRtagId;
9722
 
9723
   -- Delete Deprecated Packages
9724
   DELETE
9725
     FROM DEPRECATED_PACKAGES dp
9726
    WHERE dp.RTAG_ID = nRtagId;
9727
 
9728
   -- Delete Project Action Log
9729
   DELETE
9730
     FROM PROJECT_ACTION_LOG pal
9731
    WHERE pal.RTAG_ID = nRtagId;
9732
 
9733
   -- Delete Do Not Ripple Contents
9734
   DELETE
9735
     FROM DO_NOT_RIPPLE dnr
9736
    WHERE dnr.RTAG_ID = nRtagId;
9737
 
9738
   -- Delete Dash Board Contents
9739
   DELETE
9740
     FROM DASH_BOARD db
9741
    WHERE db.RTAG_ID = nRtagId;
9742
 
9743
   -- Delete Advisory Ripple Contents
9744
   DELETE
9745
     FROM ADVISORY_RIPPLE adr
9746
    WHERE adr.RTAG_ID = nRtagId;
9747
 
9748
   -- Delete Archive Action Log
9749
   DELETE
9750
     FROM ARCHIVE_ACTION_LOG aal
9751
    WHERE aal.RTAG_ID = nRtagId;
9752
 
9753
   -- Delete Daemons For This Release
9754
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9755
   LOOP
9756
      rconIdList := rconIdList || rcon.RCON_ID || ',';
9757
   END LOOP;
9758
 
9759
   pk_buildapi.DELETE_DAEMON(rconIdList);
9760
 
9761
   -- Delete Release Metrics Contents
9762
   DELETE
9763
     FROM RELEASE_METRICS rm
9764
    WHERE rm.RTAG_ID = nRtagId;
9765
 
9766
   -- Delete Release Configuration Contents
9767
   DELETE
9768
     FROM RELEASE_CONFIG rc
9769
    WHERE rc.RTAG_ID = nRtagId;
9770
 
9771
   -- Delete Pegged Version Contents
9772
   DELETE
9773
     FROM PEGGED_VERSIONS pegv
9774
    WHERE pegv.RTAG_ID = nRtagId;
9775
 
9776
END;
9777
/*-------------------------------------------------------------------------------------------------------*/
9778
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
9779
 
9780
   nSourceParentRtagId NUMBER;
9781
 
9782
BEGIN
9783
   /*--------------- Business Rules Here -------------------*/
9784
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
9785
   THEN
9786
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
9787
   END IF;
9788
   /*-------------------------------------------------------*/
9789
 
9790
 
9791
   IF ( nSourceRtagId IS NULL ) THEN
9792
      -- Create new on main branch
9793
      RETURN nRtagId;
9794
 
9795
   ELSE
9796
      -- Create from source rtag_id
9797
 
9798
      -- Find parent of Source RtagId
9799
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
9800
        FROM RELEASE_TAGS rt
9801
       WHERE rt.RTAG_ID = nSourceRtagId;
9802
 
9803
      IF (UPPER(cIsBranch) = 'Y') THEN
9804
         RETURN nSourceRtagId;
9805
      ELSE
9806
         IF (nSourceRtagId = nSourceParentRtagId) THEN
9807
            RETURN nRtagId;
9808
         ELSE
9809
            RETURN nSourceParentRtagId;
1373 dpurdie 9810
         END IF;
9811
      END IF;
9812
 
3959 dpurdie 9813
 
9814
   END IF;
9815
 
9816
 
9817
END;
1373 dpurdie 9818
/*-------------------------------------------------------------------------------------------------------*/
9819
 
3959 dpurdie 9820
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
9821
--                       sNextVersion OUT VARCHAR2,
9822
--                       nNextLifeCycle OUT NUMBER,
9823
--                       nParentRtagId OUT NUMBER,
9824
--                       nProjId IN NUMBER ) IS
9825
--
9826
-- SourceBranchCount NUMBER;
9827
-- ProjRootVersion VARCHAR2(4000);
9828
-- LastLifeCycle NUMBER;
9829
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
9830
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
9831
--
9832
-- SourceProjId NUMBER;
9833
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
9834
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
9835
--
9836
-- BEGIN
9837
--    /*--------------- Business Rules Here -------------------*/
9838
--    /*-------------------------------------------------------*/
9839
--
9840
--
9841
--    BEGIN
9842
--       -- Get Project root version
9843
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
9844
--         FROM RELEASE_TAGS rt
9845
--        WHERE rt.PROJ_ID = nProjId
9846
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
9847
--
9848
--       EXCEPTION
9849
--       WHEN NO_DATA_FOUND THEN
9850
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
9851
--    END;
9852
--
9853
--
9854
--
9855
--
9856
--    BEGIN
9857
--       -- Get info for source rtagid
9858
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
9859
--         FROM RELEASE_TAGS rt
9860
--        WHERE rt.RTAG_ID = nSourceRtagId;
9861
--
9862
--       EXCEPTION
9863
--       WHEN NO_DATA_FOUND THEN
9864
--       SourceProjId := NULL;
9865
--       SourceVersion := NULL;
9866
--       SourceLifeCycle := NULL;
9867
--    END;
9868
--
9869
--
9870
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
9871
--
9872
--       /* Blank Release Required  OR  Release imported from other project */
9873
--
9874
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
9875
--          /* No Releases found in the project, hence calculate next version available.  */
9876
--
9877
--          -- Set parent rtag
9878
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
9879
--
9880
--
9881
--          BEGIN
9882
--             -- Get Next Available Global Root Version
9883
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
9884
--               FROM RELEASE_TAGS rt
9885
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
9886
--
9887
--             -- Set Next Rtag Version
9888
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
9889
--
9890
--             -- Restart Lifecycle
9891
--             nNextLifeCycle := 0;
9892
--
9893
--
9894
--             EXCEPTION
9895
--             WHEN NO_DATA_FOUND THEN
9896
--             -- Release Manager has no releases, hence start from 1
9897
--             sNextVersion := '1';
9898
--             nNextLifeCycle := 0;
9899
--
9900
--          END;
9901
--
9902
--
9903
--
9904
--       ELSE
9905
--          /* Releases found in this project. */
9906
--
9907
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
9908
--            FROM (
9909
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
9910
--                  FROM RELEASE_TAGS rt
9911
--                 WHERE rt.PROJ_ID = nProjId
9912
--                   AND rt.RTAG_VERSION = ProjRootVersion
9913
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
9914
--                  ) qry
9915
--           WHERE ROWNUM = 1;
9916
--
9917
--
9918
--          -- Set same Rtag Version
9919
--          sNextVersion := ProjRootVersion;
9920
--
9921
--          -- Increase Lifecycle
9922
--          nNextLifeCycle := LastLifeCycle + 1;
9923
--
9924
--       END IF;
9925
--
9926
--
9927
--
9928
--    ELSE
9929
--       /* Create Release From other release within this project */
9930
--
9931
--       -- Set parent id
9932
--       nParentRtagId := nSourceRtagId;
9933
--
9934
--
9935
--       -- Get number of source branches
9936
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
9937
--         FROM RELEASE_TAGS rt
9938
--        WHERE rt.PROJ_ID = nProjId
9939
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
9940
--
9941
--
9942
--       IF SourceBranchCount = 0 THEN
9943
--          /* Release is Head (i.e. Tip on its branch ) */
9944
--
9945
--          -- Set Next Rtag Version
9946
--          sNextVersion := SourceVersion;
9947
--
9948
--          -- Increase Lifecycle
9949
--          nNextLifeCycle := SourceLifeCycle + 1;
9950
--
9951
--
9952
--       ELSIF SourceBranchCount = 1 THEN
9953
--          /* Release IS NOT Head, but can be branched */
9954
--
9955
--          -- Set Next Rtag Version
9956
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
9957
--
9958
--          -- Reset Lifecycle to 1
9959
--          nNextLifeCycle := 1;
9960
--
9961
--
9962
--       ELSE
9963
--          -- Limit of two branches is reached
9964
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
9965
--
9966
--       END IF;
9967
--
9968
--
9969
--
9970
--
9971
--
9972
--
9973
--    END IF;
9974
--
9975
--
9976
-- END;
9977
 
9978
/*-------------------------------------------------------------------------------------------------------*/
9979
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9980
 
9981
   IsBaseView CHAR(1);
9982
 
9983
BEGIN
9984
 
9985
   -- Check if the view is BASE VIEW
9986
   SELECT vi.BASE_VIEW INTO IsBaseView
9987
     FROM VIEWS vi
9988
    WHERE vi.VIEW_ID = ViewId;
9989
 
9990
   IF (IsBaseView = 'Y') THEN
9991
      -- Get Base view content
9992
      OPEN RecordSet FOR
9993
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9994
            rel.deprecated_state,
9995
            pv.pv_id,
9996
            pkg.pkg_name,
9997
            pv.pkg_version,
9998
            pv.dlocked,
9999
            pv.pv_description,
10000
            pv.BUILD_TYPE
10001
        FROM release_content rel,
10002
             packages pkg,
10003
             package_versions pv
10004
       WHERE pv.pkg_id = pkg.pkg_id
10005
         AND rel.pv_id = pv.pv_id
10006
         AND rel.BASE_VIEW_ID = ViewId
10007
         AND rel.RTAG_ID = RtagId
10008
       ORDER BY UPPER(pkg.PKG_NAME);
10009
 
10010
   ELSE
10011
 
10012
       -- Get non base view content
10013
      OPEN RecordSet FOR
10014
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
10015
            rel.deprecated_state,
10016
            pv.pv_id,
10017
            pkg.pkg_name,
10018
            pv.pkg_version,
10019
            pv.dlocked,
10020
            pv.pv_description,
10021
            pv.BUILD_TYPE
10022
        FROM release_content rel,
10023
             packages pkg,
10024
             package_versions pv,
10025
            VIEW_DEF vd
10026
       WHERE pv.pkg_id = pkg.pkg_id
10027
         AND rel.pv_id = pv.pv_id
10028
         AND vd.VIEW_ID = ViewId
10029
         AND vd.PKG_ID = pv.PKG_ID
10030
         AND rel.RTAG_ID = RtagId
10031
       ORDER BY UPPER(pkg.PKG_NAME);
10032
 
10033
   END IF;
10034
 
10035
 
10036
 
10037
 
10038
END;
10039
/*-------------------------------------------------------------------------------------------------------*/
10040
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10041
 
10042
   ReleaseLocation VARCHAR2(4000);
10043
   sPkgVersion VARCHAR2(4000);
10044
   nPkgId NUMBER;
10045
   sVExt VARCHAR2(4000);
10046
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
10047
 
10048
   -- Find package for replacement
10049
   CURSOR curReplacePkg IS
10050
    SELECT pv.PV_ID
10051
     FROM RELEASE_CONTENT rc,
10052
           PACKAGE_VERSIONS pv
10053
    WHERE rc.PV_ID = pv.PV_ID
10054
      AND rc.RTAG_ID = RtagId
10055
      AND pv.PKG_ID = nPkgId
10056
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
10057
    recReplacePkg curReplacePkg%ROWTYPE;
10058
 
10059
BEGIN
10060
 
10061
   -- Get is_patch, pkg_id and v_ext
10062
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
10063
     FROM PACKAGE_VERSIONS pv
10064
    WHERE pv.PV_ID = newPvId;
10065
 
10066
 
10067
   -- Never put patch in relesed area
10068
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
10069
 
10070
      -- Try to get a package to be replaced with this new one.
10071
      -- Use unique constraint of PKG_ID and V_EXT
10072
      OPEN curReplacePkg;
10073
       FETCH curReplacePkg INTO recReplacePkg;
10074
 
10075
       IF curReplacePkg%FOUND THEN
10076
         -- Replace package
10077
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
10078
 
10079
      ELSE
10080
         -- Add new package
10081
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
10082
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
10083
 
10084
 
10085
          /* LOG ACTION */
10086
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10087
           FROM PROJECTS proj,
10088
                 RELEASE_TAGS rt
10089
          WHERE rt.PROJ_ID = proj.PROJ_ID
10090
            AND rt.RTAG_ID = RtagId;
10091
 
10092
         SELECT pv.PKG_VERSION INTO sPkgVersion
10093
           FROM PACKAGE_VERSIONS pv
10094
          WHERE pv.PV_ID = newPvId;
10095
 
10096
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10097
 
10098
 
1373 dpurdie 10099
      END IF;
10100
 
3959 dpurdie 10101
      CLOSE curReplacePkg;
10102
 
10103
   END IF;
10104
 
10105
END;
1373 dpurdie 10106
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10107
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 10108
 
3959 dpurdie 10109
   ReleaseLocation VARCHAR2(4000);
10110
   sPkgVersion VARCHAR2(4000);
10111
 
10112
BEGIN
10113
 
10114
   -- Replace Package
10115
    UPDATE RELEASE_CONTENT
10116
       SET pv_id = newPvId,
10117
           insert_stamp = Ora_Sysdate,
10118
           insertor_id = UserId,
10119
         product_state = NULL
10120
     WHERE rtag_id = RtagId
10121
       AND pv_id = oldPvId;
10122
 
10123
   -- update the pegging table
10124
   UPDATE PEGGED_VERSIONS
10125
      SET pv_id = newPvId
10126
     WHERE rtag_id = RtagId
10127
       AND pv_id = oldPvId;
10128
 
10129
   -- update the advisory_ripple table
10130
   UPDATE ADVISORY_RIPPLE
10131
      SET pv_id = newPvId
10132
     WHERE rtag_id = RtagId
10133
       AND pv_id = oldPvId;
10134
 
10135
    /* LOG ACTION */
10136
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10137
     FROM PROJECTS proj,
10138
           RELEASE_TAGS rt
10139
    WHERE rt.PROJ_ID = proj.PROJ_ID
10140
      AND rt.RTAG_ID = RtagId;
10141
 
10142
   SELECT pv.PKG_VERSION INTO sPkgVersion
10143
     FROM PACKAGE_VERSIONS pv
10144
    WHERE pv.PV_ID = newPvId;
10145
 
10146
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
10147
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10148
 
10149
END;
10150
/*-------------------------------------------------------------------------------------------------------*/
10151
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10152
   ReleaseLocation VARCHAR2(4000);
10153
 
10154
BEGIN
10155
 
10156
 
10157
   -- Delete old package
10158
   DELETE
10159
     FROM RELEASE_CONTENT rc
10160
    WHERE rc.PV_ID = PvId
10161
      AND rc.RTAG_ID = RtagId;
10162
 
10163
 
10164
   /* LOG ACTION */
10165
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10166
     FROM PROJECTS proj,
10167
          RELEASE_TAGS rt
10168
    WHERE rt.PROJ_ID = proj.PROJ_ID
10169
      AND rt.RTAG_ID = RtagId;
10170
 
10171
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10172
 
10173
 
10174
END;
10175
/*-------------------------------------------------------------------------------------------------------*/
10176
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10177
   ReleaseLocation VARCHAR2(4000);
10178
 
10179
   CURSOR curMatchingPackage IS
10180
    SELECT mpv.PV_ID
10181
     FROM RELEASE_CONTENT rc,
10182
           PACKAGE_VERSIONS mpv,
10183
         PACKAGE_VERSIONS pv
10184
    WHERE rc.PV_ID = mpv.PV_ID
10185
      AND rc.RTAG_ID = RtagId
10186
      AND pv.PV_ID = PvId
10187
      AND pv.PKG_ID = mpv.PKG_ID
10188
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
10189
    recMatchingPackage curMatchingPackage%ROWTYPE;
10190
 
10191
BEGIN
10192
 
10193
   OPEN curMatchingPackage;
10194
    FETCH curMatchingPackage INTO recMatchingPackage;
10195
 
10196
    IF curMatchingPackage%FOUND THEN
10197
      -- Delete old package
10198
      DELETE
10199
        FROM RELEASE_CONTENT rc
10200
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
10201
         AND rc.RTAG_ID = RtagId;
10202
 
10203
 
10204
      /* LOG ACTION */
10205
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10206
        FROM PROJECTS proj,
10207
              RELEASE_TAGS rt
10208
       WHERE rt.PROJ_ID = proj.PROJ_ID
10209
         AND rt.RTAG_ID = RtagId;
10210
 
10211
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10212
 
10213
   END IF;
10214
 
10215
 
10216
   CLOSE curMatchingPackage;
10217
 
10218
 
10219
 
10220
 
10221
END;
10222
/*-------------------------------------------------------------------------------------------------------*/
10223
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10224
 
10225
   ReturnValue NUMBER;
10226
 
10227
BEGIN
10228
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
10229
     FROM RELEASE_CONTENT rc
10230
    WHERE rc.RTAG_ID = RtagId
10231
      AND rc.PV_ID = PvId;
10232
 
10233
   RETURN ReturnValue;
10234
END;
10235
/*-------------------------------------------------------------------------------------------------------*/
10236
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
10237
 
10238
BEGIN
10239
   -- Reset Ignore warnings up-the-tree
10240
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
10241
 
10242
   -- Refresh Package states
10243
   TOUCH_RELEASE ( RtagId );
10244
 
10245
END;
10246
/*-------------------------------------------------------------------------------------------------------*/
10247
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
10248
   CURSOR curReleases IS
10249
    SELECT rc.RTAG_ID
10250
     FROM RELEASE_CONTENT rc
10251
    WHERE rc.PV_ID = PvId;
10252
    recReleases curReleases%ROWTYPE;
10253
 
10254
BEGIN
10255
 
10256
   OPEN curReleases;
10257
    FETCH curReleases INTO recReleases;
10258
 
10259
   WHILE curReleases%FOUND
10260
   LOOP
10261
 
10262
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
10263
 
10264
      FETCH curReleases INTO recReleases;
10265
   END LOOP;
10266
 
10267
   CLOSE curReleases;
10268
 
10269
END;
10270
/*-------------------------------------------------------------------------------------------------------*/
10271
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10272
 
10273
BEGIN
10274
 
10275
   UPDATE RELEASE_CONTENT rc SET
10276
   rc.BASE_VIEW_ID = NewViewId
10277
   WHERE rc.PV_ID = PvId
10278
     AND rc.RTAG_ID = RtagId;
10279
 
10280
END;
10281
/*-------------------------------------------------------------------------------------------------------*/
10282
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
10283
 
10284
   RowCount NUMBER;
10285
 
10286
 
10287
   CURSOR curPackageClash IS
10288
   SELECT pkg.PKG_NAME,
10289
         er.*
10290
     FROM (
10291
 
10292
           /* Get existing referenced packages */
10293
         SELECT pv.PKG_ID,
10294
                pv.V_EXT
10295
           FROM RELEASE_LINKS rl,
10296
                 RELEASE_CONTENT rc,
10297
                 PACKAGE_VERSIONS pv
10298
          WHERE rl.RTAG_ID = nRtagId
10299
            AND rl.REF_RTAG_ID = rc.RTAG_ID
10300
            AND rc.PV_ID = pv.PV_ID
10301
 
10302
            ) er,
10303
         (
10304
 
10305
         /* Get current reference packages */
10306
         SELECT pv.PKG_ID,
10307
                pv.V_EXT
10308
           FROM RELEASE_CONTENT rc,
10309
                 PACKAGE_VERSIONS pv
10310
          WHERE rc.RTAG_ID = nRefRtagId
10311
            AND rc.PV_ID = pv.PV_ID
10312
 
10313
         ) cr,
10314
         PACKAGES PKG
10315
    WHERE er.PKG_ID = cr.PKG_ID
10316
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10317
      AND er.PKG_ID = pkg.PKG_ID;
10318
 
10319
   recPackageClash curPackageClash%ROWTYPE;
10320
 
10321
BEGIN
10322
   /*--------------- Business Rules Here -------------------*/
10323
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10324
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10325
   END IF;
10326
 
10327
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10328
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10329
   END IF;
10330
   /*-------------------------------------------------------*/
10331
   ProblemString := NULL;
10332
 
10333
 
10334
   -- Check if release already has references
10335
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
10336
     FROM RELEASE_LINKS rl
10337
    WHERE rl.RTAG_ID = nRtagId;
10338
 
10339
 
10340
   IF RowCount > 0 THEN
10341
      -- Found existing references
10342
 
10343
      -- Make sure there is no package clashes
10344
      OPEN curPackageClash;
10345
       FETCH curPackageClash INTO recPackageClash;
10346
 
10347
      IF curPackageClash%FOUND THEN
10348
 
10349
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
10350
 
10351
         WHILE curPackageClash%FOUND
10352
         LOOP
10353
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
10354
 
10355
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
10356
 
10357
            FETCH curPackageClash INTO recPackageClash;
10358
         END LOOP;
10359
 
1373 dpurdie 10360
      END IF;
10361
 
3959 dpurdie 10362
      CLOSE curPackageClash;
10363
 
10364
 
10365
   ELSE
10366
      -- No references found, hence reference a release
10367
 
10368
 
10369
      -- Remove exising package from this release to be referenced
10370
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
10371
 
10372
 
10373
      -- Add new linked packages to release
10374
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
10375
      SELECT nRtagId,
10376
            rc.PV_ID,
10377
            rc.BASE_VIEW_ID,
10378
            rc.INSERT_STAMP,
10379
            rc.INSERTOR_ID,
10380
            rc.PKG_STATE
10381
        FROM RELEASE_CONTENT rc
10382
       WHERE rc.RTAG_ID = nRefRtagId;
10383
 
10384
 
10385
 
10386
      -- Copy ignore warnings for referenced packages
10387
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
10388
      SELECT nRtagId,
10389
            iw.PV_ID,
10390
            iw.DPV_ID,
10391
            iw.IS_PATCH_IGNORE
10392
        FROM IGNORE_WARNINGS iw,
10393
              RELEASE_CONTENT rc
10394
       WHERE iw.RTAG_ID = rc.RTAG_ID
10395
         AND iw.PV_ID = rc.PV_ID
10396
         AND rc.RTAG_ID = nRefRtagId;
10397
 
10398
 
10399
 
10400
      -- Reference release
10401
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
10402
      VALUES ( nRtagId, nRefRtagId );
10403
 
10404
 
10405
      -- Refresh Package states
10406
      TOUCH_RELEASE ( nRtagId );
10407
 
10408
   END IF;
10409
 
10410
 
10411
END;
1373 dpurdie 10412
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10413
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
1373 dpurdie 10414
 
3959 dpurdie 10415
 
10416
BEGIN
10417
   /*--------------- Business Rules Here -------------------*/
10418
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10419
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10420
   END IF;
10421
 
10422
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10423
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10424
   END IF;
10425
 
10426
   /*-------------------------------------------------------*/
10427
 
10428
 
10429
   -- Remove ignore warnings for those packages who use referenced packages
10430
   DELETE FROM IGNORE_WARNINGS iw
10431
    WHERE iw.RTAG_ID = nRtagId
10432
      AND iw.DPV_ID IN (
10433
                        SELECT dep.DPV_ID
10434
                       FROM (
10435
 
10436
                           /* Get referenced packages */
10437
                           SELECT pv.PKG_ID,
10438
                                  pv.V_EXT
10439
                             FROM RELEASE_CONTENT rc,
10440
                                   PACKAGE_VERSIONS pv
10441
                            WHERE rc.RTAG_ID = nRefRtagId
10442
                              AND rc.PV_ID = pv.PV_ID
10443
 
10444
                           ) cr,
10445
                           (
10446
 
10447
                           /* Get all dependencies for current release */
10448
                           SELECT DISTINCT
10449
                                 pv.PKG_ID,
10450
                                 pv.V_EXT,
10451
                                 dep.DPV_ID
10452
                             FROM RELEASE_CONTENT rc,
10453
                                 PACKAGE_DEPENDENCIES dep,
10454
                                 PACKAGE_VERSIONS pv
10455
                            WHERE rc.RTAG_ID = nRtagId
10456
                              AND rc.PV_ID = dep.PV_ID
10457
                              AND dep.PV_ID = pv.PV_ID
10458
 
10459
                           ) dep
10460
                      WHERE dep.PKG_ID = cr.PKG_ID
10461
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10462
                     );
10463
 
10464
 
10465
 
10466
 
10467
   -- Remove ignore warnings for those package which are going to be replaced with the reference
10468
   DELETE FROM IGNORE_WARNINGS iw
10469
    WHERE iw.RTAG_ID = nRtagId
10470
      AND iw.PV_ID IN (
10471
                  SELECT pv.PV_ID
10472
                    FROM (
10473
 
10474
                        /* Get referenced packages */
10475
                        SELECT pv.PKG_ID,
10476
                               pv.V_EXT
10477
                          FROM RELEASE_CONTENT rc,
10478
                                PACKAGE_VERSIONS pv
10479
                         WHERE rc.RTAG_ID = nRefRtagId
10480
                           AND rc.PV_ID = pv.PV_ID
10481
 
10482
                        ) cr,
10483
                        RELEASE_CONTENT rc,
10484
                        PACKAGE_VERSIONS pv
10485
                   WHERE pv.PKG_ID = cr.PKG_ID
10486
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10487
                     AND rc.RTAG_ID = nRtagId
10488
                     AND rc.PV_ID = pv.PV_ID
10489
                  );
10490
 
10491
 
10492
 
10493
 
10494
 
10495
   -- Remove matching packages from release
10496
   DELETE FROM RELEASE_CONTENT rc
10497
    WHERE rc.RTAG_ID = nRtagId
10498
      AND rc.PV_ID IN (
10499
                  SELECT pv.PV_ID
10500
                    FROM (
10501
 
10502
                        /* Get referenced packages */
10503
                        SELECT pv.PKG_ID,
10504
                               pv.V_EXT
10505
                          FROM RELEASE_CONTENT rc,
10506
                                PACKAGE_VERSIONS pv
10507
                         WHERE rc.RTAG_ID = nRefRtagId
10508
                           AND rc.PV_ID = pv.PV_ID
10509
 
10510
                        ) cr,
10511
                        RELEASE_CONTENT rc,
10512
                        PACKAGE_VERSIONS pv
10513
                   WHERE pv.PKG_ID = cr.PKG_ID
10514
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10515
                     AND rc.RTAG_ID = nRtagId
10516
                     AND rc.PV_ID = pv.PV_ID
10517
                  );
10518
 
10519
 
10520
 
10521
 
10522
 
10523
   -- Remove Reference release
10524
   DELETE
10525
     FROM RELEASE_LINKS rl
10526
    WHERE rl.RTAG_ID = nRtagId
10527
      AND rl.REF_RTAG_ID = nRefRtagId;
10528
 
10529
 
10530
   -- Refresh Package states
10531
   TOUCH_RELEASE ( nRtagId );
10532
 
10533
 
10534
END;
10535
/*-------------------------------------------------------------------------------------------------------*/
10536
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10537
 
10538
   cReleaseMode CHAR(1);
10539
   cPvMode CHAR(1);
10540
 
10541
BEGIN
10542
 
10543
   -- Get Release Mode
10544
   SELECT rt.OFFICIAL INTO cReleaseMode
10545
     FROM RELEASE_TAGS rt
10546
    WHERE rt.RTAG_ID = RtagId;
10547
 
10548
 
10549
   -- Get Package Mode
10550
   SELECT pv.DLOCKED INTO cPvMode
10551
     FROM PACKAGE_VERSIONS pv
10552
    WHERE pv.PV_ID = PvId;
10553
 
10554
   -- Only check if package is locked
10555
   IF (cPvMode = 'Y') THEN
10556
 
10557
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
1373 dpurdie 10558
      THEN
3959 dpurdie 10559
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10560
 
1373 dpurdie 10561
      END IF;
10562
 
3959 dpurdie 10563
   END IF;
10564
 
10565
 
10566
END;
10567
 
1373 dpurdie 10568
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10569
END PK_RELEASE;
4040 dpurdie 10570
 
3959 dpurdie 10571
/
10572
 
4040 dpurdie 10573
/
10574
--------------------------------------------------------
10575
--  DDL for Package Body PK_RMAPI
10576
--------------------------------------------------------
10577
 
3959 dpurdie 10578
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
10579
IS
10580
 
10581
   /*-------------------------------------------------------------------------------------------------------*/
10582
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
10583
      RETURN typecur
1373 dpurdie 10584
   IS
3959 dpurdie 10585
      npvid     NUMBER  := 0;
10586
      RECORDS   typecur;
1373 dpurdie 10587
   BEGIN
3959 dpurdie 10588
      BEGIN
10589
         -- Get PV_ID --
10590
         SELECT pv.pv_id
10591
           INTO npvid
10592
           FROM PACKAGES pkg, package_versions pv
10593
          WHERE pv.pkg_id = pkg.pkg_id
10594
            AND pkg.pkg_name = pkgname
10595
            AND pv.pkg_version = pkgversion;
10596
      EXCEPTION
10597
         WHEN NO_DATA_FOUND
10598
         THEN
10599
            raise_application_error (-20000, 'Package Not Found!');
10600
            --WHEN OTHERS THEN
10601
                  -- Consider logging the error and then re-raise
10602
            RAISE;
10603
      END;
1373 dpurdie 10604
 
3959 dpurdie 10605
      -- Finally get package dependencies --
10606
      OPEN RECORDS FOR
10607
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
10608
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
10609
          WHERE dep.pv_id = npvid
10610
            AND dpv.pkg_id = dpkg.pkg_id
10611
            AND dpv.pv_id = dep.dpv_id;
10612
 
10613
      RETURN RECORDS;
1373 dpurdie 10614
   END;
10615
 
10616
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10617
   FUNCTION wip_iteration_package (
10618
      projname        VARCHAR2,
10619
      iterationname   VARCHAR2,
10620
      pkgname         VARCHAR2
1373 dpurdie 10621
   )
3959 dpurdie 10622
      RETURN typecur
1373 dpurdie 10623
   IS
3959 dpurdie 10624
      nrtagid   NUMBER  := 0;
10625
      RECORDS   typecur;
1373 dpurdie 10626
   BEGIN
3959 dpurdie 10627
      BEGIN
10628
         -- Get latest rtag_id --
10629
         SELECT rt.rtag_id
10630
           INTO nrtagid
10631
           FROM projects proj, release_tags rt
10632
          WHERE rt.proj_id = proj.proj_id
10633
            AND UPPER (proj.proj_name) = UPPER (projname)
10634
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
1373 dpurdie 10635
 
3959 dpurdie 10636
         IF (nrtagid IS NULL)
10637
         THEN
10638
            raise_application_error (-20000,
10639
                                     'Work In Progress is Not Found!');
10640
         END IF;
10641
      EXCEPTION
10642
         WHEN NO_DATA_FOUND
10643
         THEN
10644
            raise_application_error (-20000,
10645
                                     'Work In Progress is Not Found!');
10646
            RAISE;
10647
      END;
10648
 
10649
      -- Finally get package dependencies --
10650
      OPEN RECORDS FOR
10651
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
10652
                pv.src_path
10653
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
10654
          WHERE pv.pkg_id = pkg.pkg_id
10655
            AND wip.pv_id = pv.pv_id
10656
            AND wip.rtag_id = nrtagid
10657
            AND pkg.pkg_name = pkgname;
10658
 
10659
      RETURN RECORDS;
1373 dpurdie 10660
   END;
10661
 
10662
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10663
   FUNCTION auto_make_vcsrelease (
10664
      rtagid                   IN   NUMBER,
10665
      pkgname                  IN   VARCHAR2,
10666
      vext                     IN   VARCHAR2,
10667
      newpkgversion            IN   VARCHAR2,
10668
      vcstag                   IN   VARCHAR2,
10669
      dependenciesimportlist   IN   VARCHAR2,
10670
      isrippled                IN   NUMBER,
10671
      username                 IN   VARCHAR2
10672
   )
1373 dpurdie 10673
      RETURN NUMBER
10674
   IS
3959 dpurdie 10675
      pkgid                           NUMBER;
10676
      pvid                            NUMBER                        := 0;
10677
      userid                          NUMBER;
10678
      dlocked                         VARCHAR2 (20)                 := NULL;
10679
      clonefrompvid                   NUMBER;
10680
      ssv_mm                          package_versions.v_mm%TYPE;
10681
      ssv_nmm                         package_versions.v_nmm%TYPE;
10682
      ssv_ext                         package_versions.v_ext%TYPE;
10683
      return_package_not_found        NUMBER                        := -1;
10684
      return_package_already_exists   NUMBER                        := -2;
10685
      return_not_approved             NUMBER                        := -3;
10686
      return_migrated_pkg             NUMBER                        := -4;
1373 dpurdie 10687
 
10688
 
3959 dpurdie 10689
      x_vcstypeid                     NUMBER;
10690
      x_tag                           VARCHAR2(32);
10691
      x_label                         VARCHAR2(60);
10692
      x_srcpath                       VARCHAR2(2000);
10693
      p_srcpath                       VARCHAR2(2000);
1373 dpurdie 10694
 
3959 dpurdie 10695
      -- Regular expression constituents
10696
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
10697
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
10698
      BOL           VARCHAR2(4)  := '^';
10699
      Anything      VARCHAR2(4)  := '.*';
10700
      ReplaceToken1 VARCHAR2(4)  := '\1';
10701
      ReplaceToken2 VARCHAR2(4)  := '\2';
10702
      ReplaceToken3 VARCHAR2(4)  := '\3';
10703
      iprev_modifier_id               NUMBER;
10704
 
1373 dpurdie 10705
   BEGIN
3959 dpurdie 10706
      /*--------------- Business Rules Here -------------------*/
10707
      IF (rtagid IS NULL)
10708
      THEN
10709
         raise_application_error (-20000, 'RtagId must be supplied.');
10710
      END IF;
1373 dpurdie 10711
 
3959 dpurdie 10712
      IF (pkgname IS NULL)
10713
      THEN
10714
         raise_application_error (-20000, 'PkgName must be supplied.');
10715
      END IF;
1373 dpurdie 10716
 
3959 dpurdie 10717
      IF (newpkgversion IS NULL)
1373 dpurdie 10718
      THEN
3959 dpurdie 10719
         raise_application_error (-20000, 'PkgVersion must be supplied.');
1373 dpurdie 10720
      END IF;
10721
 
3959 dpurdie 10722
      IF (vcstag IS NULL)
1373 dpurdie 10723
      THEN
3959 dpurdie 10724
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
1373 dpurdie 10725
      END IF;
10726
 
3959 dpurdie 10727
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
1373 dpurdie 10728
      THEN
3959 dpurdie 10729
         raise_application_error
10730
            (-20000,
10731
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
10732
            );
1373 dpurdie 10733
      END IF;
10734
 
3959 dpurdie 10735
      IF (username IS NULL)
1373 dpurdie 10736
      THEN
3959 dpurdie 10737
         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 10738
      END IF;
10739
 
3959 dpurdie 10740
      -- Parse the PkgVcsTag
10741
      -- Sets up
10742
      --   x_tag, x_label, x_srcpath
1373 dpurdie 10743
 
3959 dpurdie 10744
       BEGIN
10745
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
10746
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
1373 dpurdie 10747
 
3959 dpurdie 10748
          -- Decode the short tag
10749
          CASE x_tag
10750
             WHEN 'CC' THEN
10751
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
10752
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10753
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10754
 
3959 dpurdie 10755
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10756
                -- check for that error as well as the obvious zero-length string conditions.
10757
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10758
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10759
                END IF;
10760
 
10761
                IF isSVNbyName(pkgname) > 0 THEN
10762
                    -- Don't allow migrated packages to be released from a CC label
10763
                    return return_migrated_pkg;
10764
                END IF;
1373 dpurdie 10765
 
10766
 
3959 dpurdie 10767
             WHEN 'SVN' THEN
10768
                -- extract the 2nd token, that being the subversion tag
10769
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10770
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10771
 
3959 dpurdie 10772
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10773
                -- check for that error as well as the obvious zero-length string conditions.
10774
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10775
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10776
                END IF;
10777
 
10778
             WHEN 'UC' THEN
10779
                -- nothing to extract, just assign defaults
10780
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10781
                x_label   := 'N/A';
10782
             ELSE
10783
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
10784
          END CASE;
10785
       END;
10786
 
10787
      -- Get the VCS_TYPE_ID for the version control system.
10788
      BEGIN
10789
         SELECT vt.vcs_type_id
10790
         INTO x_vcstypeid
10791
         FROM VCS_TYPE vt
10792
         WHERE vt.tag = x_tag;
10793
         EXCEPTION
10794
            WHEN NO_DATA_FOUND THEN
10795
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
10796
      END;
10797
 
10798
 
10799
      -- Get user_id
10800
      BEGIN
10801
         SELECT usr.user_id
10802
           INTO userid
10803
           FROM users usr
10804
          WHERE UPPER (usr.user_name) = UPPER (username)
10805
            AND usr.is_disabled IS NULL;
10806
      EXCEPTION
10807
         WHEN NO_DATA_FOUND
1373 dpurdie 10808
         THEN
10809
            raise_application_error (-20000,
3959 dpurdie 10810
                                        'UserName '
10811
                                     || username
10812
                                     || ' is not valid or disabled.'
1373 dpurdie 10813
                                    );
3959 dpurdie 10814
      END;
1373 dpurdie 10815
 
3959 dpurdie 10816
/*-------------------------------------------------------*/
1373 dpurdie 10817
 
3959 dpurdie 10818
      -- Create package if necessary
10819
      IF isrippled = 1
1373 dpurdie 10820
      THEN
3959 dpurdie 10821
         /* Ripple Build */
10822
         BEGIN
10823
            -- Make sure that package does not exist
10824
            SELECT pv.pv_id
10825
              INTO pvid
10826
              FROM package_versions pv, PACKAGES pkg
10827
             WHERE pv.pkg_id = pkg.pkg_id
10828
               AND pkg.pkg_name = pkgname
10829
               AND pv.pkg_version = newpkgversion;
10830
         EXCEPTION
10831
            WHEN NO_DATA_FOUND
10832
            THEN
10833
               pvid := 0;
10834
         END;
10835
 
10836
         IF (pvid = 0)
1373 dpurdie 10837
         THEN
3959 dpurdie 10838
            -- Split current version in parts
10839
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
10840
 
10841
            BEGIN
10842
               -- Find package to be replaced with the ripple package
10843
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10844
               THEN
10845
                  SELECT pv.pv_id, pv.src_path
10846
                    INTO clonefrompvid, p_srcpath
10847
                    FROM PACKAGES pkg, package_versions pv,
10848
                         release_content rc
10849
                   WHERE rc.pv_id = pv.pv_id
10850
                     AND pv.pkg_id = pkg.pkg_id
10851
                     AND rc.rtag_id = rtagid
10852
                     AND pkg.pkg_name = pkgname
10853
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
10854
               ELSE
10855
                  SELECT pv.pv_id, pv.src_path
10856
                    INTO clonefrompvid, p_srcpath
10857
                    FROM PACKAGES pkg, package_versions pv,
10858
                         release_content rc
10859
                   WHERE rc.pv_id = pv.pv_id
10860
                     AND pv.pkg_id = pkg.pkg_id
10861
                     AND rc.rtag_id = rtagid
10862
                     AND pkg.pkg_name = pkgname
10863
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
10864
               END IF;
10865
            EXCEPTION
10866
               WHEN NO_DATA_FOUND
10867
               THEN
10868
                  raise_application_error
10869
                                        (-20000,
10870
                                            'Cannot get CloneFromPvId. VExt='
10871
                                         || vext
10872
                                         || ', RtagId='
10873
                                         || rtagid
10874
                                         || ', PkgName='
10875
                                         || pkgname
10876
                                         || ', SSV_EXT='
10877
                                         || ssv_ext
10878
                                        );
10879
            END;
10880
 
10881
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10882
            THEN
10883
               -- Create package
10884
               seed_package_names_versions (pkgname,
10885
                                            newpkgversion,
10886
                                            userid,
10887
                                            pvid,
10888
                                            clonefrompvid
10889
                                           );
10890
            ELSE
10891
               -- Create package
10892
               seed_package_names_versions2 (pkgname,
10893
                                             newpkgversion,
10894
                                             userid,
10895
                                             pvid,
10896
                                             clonefrompvid
10897
                                            );
10898
            END IF;
10899
 
10900
            -- Update Package reason for release
10901
            UPDATE package_versions pv
10902
               SET pv.comments = 'Rippled Build.',
10903
                   pv.build_type = 'Y'
10904
             WHERE pv.pv_id = pvid;
10905
         ELSE
10906
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
10907
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
10908
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
10909
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
10910
            UPDATE package_versions pv
10911
               SET pv.release_notes_info = null,
10912
                   pv.modified_stamp = ora_sysdatetime
10913
             WHERE pv.pv_id = pvid;
10914
 
10915
            --DEVI-066151
10916
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
10917
 
10918
            RETURN return_package_already_exists;
1373 dpurdie 10919
         END IF;
10920
      ELSE
3959 dpurdie 10921
         /* Auto build from Pending area */
10922
 
10923
         -- Find package in pending area
10924
         BEGIN
10925
            SELECT pv.pv_id, pv.dlocked, pv.src_path
10926
              INTO pvid, dlocked, p_srcpath
10927
              FROM planned pl, package_versions pv, PACKAGES pkg
10928
             WHERE pl.pv_id = pv.pv_id
10929
               AND pv.pkg_id = pkg.pkg_id
10930
               AND pl.rtag_id = rtagid
10931
               AND pkg.pkg_name = pkgname
10932
               AND pv.dlocked = 'A'
10933
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
10934
               AND rownum = 1
10935
             ORDER BY pv.modified_stamp;
10936
         EXCEPTION
10937
            WHEN NO_DATA_FOUND
10938
            THEN
10939
               pvid := 0;
10940
         END;
10941
 
10942
         IF (pvid = 0)
1373 dpurdie 10943
         THEN
3959 dpurdie 10944
            -- Package does not exist in pending area, hence report it
10945
            RETURN return_package_not_found;
10946
         ELSIF (dlocked != 'A')
1373 dpurdie 10947
         THEN
3959 dpurdie 10948
            -- Package is not approved for autobuild
10949
            RETURN return_not_approved;
1373 dpurdie 10950
         END IF;
10951
 
10952
      END IF;
10953
 
3959 dpurdie 10954
      -- Ensure Source Path does not change
10955
      -- Do not expect the SVN development branch to change
10956
      -- From the previous package
10957
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
1373 dpurdie 10958
      THEN
3959 dpurdie 10959
        raise_application_error (-20000, 'Source Path does not match (' || p_srcpath || ','|| x_srcpath || ')' );
1373 dpurdie 10960
      END IF;
10961
 
3959 dpurdie 10962
      BEGIN
10963
         -- Import Dependencies
10964
         import_dependencies (pvid, dependenciesimportlist, userid);
10965
      END;
1373 dpurdie 10966
 
10967
 
3959 dpurdie 10968
      BEGIN
10969
         -- Split current version in parts
10970
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
1373 dpurdie 10971
 
3959 dpurdie 10972
         -- Update Package Details
10973
         UPDATE package_versions pv
10974
            SET pv.pkg_version = newpkgversion,
10975
                pv.v_ext = ssv_ext,
10976
                pv.v_mm = ssv_mm,
10977
                pv.v_nmm = ssv_nmm,
10978
                pv.src_path = x_srcpath,
10979
                pv.pkg_label = x_label,
10980
                pv.vcs_type_id = x_vcstypeid
10981
          WHERE pv.pv_id = pvid;
10982
      EXCEPTION
10983
         WHEN DUP_VAL_ON_INDEX
10984
         THEN
10985
            -- Package already exists, hence cannot be used for ripple build
10986
            RETURN return_package_already_exists;
10987
      END;
10988
 
10989
      -- Update the is_autobuildable
10990
      UPDATE package_versions
10991
         SET is_autobuildable = 'Y'
10992
       WHERE pv_id = pvid;
10993
 
10994
      -- DEVI-063601
10995
      -- For planned builds the modifier_id shouldn't be set to buildadm.
10996
      -- To ensure this the modifier_id is obtained so it can be restored after
10997
      -- the function pk_environment.auto_make_release is called.
10998
      -- This function calls, change_state, which sets the modifier_id to the
10999
      -- specified userid, which for auto builds is buildadm.
11000
      SELECT pv.modifier_id INTO iprev_modifier_id
11001
      FROM package_versions pv WHERE pv.pv_id = pvid;
11002
 
11003
      -- Now release package
11004
      pk_environment.auto_make_release (pvid,
11005
                                        rtagid,
11006
                                        userid,
11007
                                        vext,
11008
                                        ssv_ext,
11009
                                        clonefrompvid
11010
                                       );
11011
 
11012
      -- DEVI-063601
11013
      -- if it is a planned build then restore the modifier_id to the previous modifier
11014
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
11015
      WHERE pv.pv_id = pvid;
11016
 
11017
      --Now clean the PLANNED_VERSIONS table
11018
      SELECT pkg_id
11019
        INTO pkgid
11020
        FROM PACKAGES
11021
       WHERE pkg_name = pkgname;
11022
 
11023
      DELETE FROM planned_versions
11024
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
11025
 
11026
      RETURN pvid;
1373 dpurdie 11027
   END;
11028
 
11029
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11030
   PROCEDURE import_dependencies (
11031
      pvid                     IN   NUMBER,
11032
      dependenciesimportlist   IN   VARCHAR2,
11033
      userid                   IN   NUMBER
11034
   )
1373 dpurdie 11035
   IS
3959 dpurdie 11036
/*
11037
|| DependenciesImportList Format:
11038
|| "pkgA","1.0.0";"pkgB","2.0.0";
11039
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11040
*/
11041
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11042
         INDEX BY VARCHAR2 (4000);
11043
 
11044
      seperator         VARCHAR2 (2)           := '||';
11045
      pkgname           VARCHAR2 (4000);
11046
      pkgversion        VARCHAR2 (4000);
11047
      buildtype         VARCHAR2 (50);
11048
      pkgid             NUMBER;
11049
      vext              VARCHAR2 (4000);
11050
      dpvid             NUMBER;
11051
      slist             VARCHAR2 (4000);
11052
      cbuildtypes       tdictionary;
11053
      dependencyrow     NUMBER;
11054
      sdependency       VARCHAR2 (4000);
11055
      first_pos         VARCHAR2 (4000);
11056
      second_pos        VARCHAR2 (4000);
11057
      third_pos         VARCHAR2 (4000);
11058
      forth_pos         VARCHAR2 (4000);
11059
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11060
 
11061
      CURSOR curbuildtype
11062
      IS
11063
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11064
                dep.build_type
11065
           FROM package_dependencies dep, package_versions dpv
11066
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11067
 
11068
      recbuildtype      curbuildtype%ROWTYPE;
1373 dpurdie 11069
   BEGIN
3959 dpurdie 11070
      slist := dependenciesimportlist;
1373 dpurdie 11071
 
3959 dpurdie 11072
      -- Preformat String
11073
      IF NOT slist IS NULL
1373 dpurdie 11074
      THEN
3959 dpurdie 11075
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11076
         slist := REPLACE (slist, UTL_TCP.crlf);
11077
         -- Remove new line and carriage-return characters
11078
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
1373 dpurdie 11079
      END IF;
11080
 
3959 dpurdie 11081
      -- Get Current Dependencies
11082
      OPEN curbuildtype;
1373 dpurdie 11083
 
3959 dpurdie 11084
      FETCH curbuildtype
11085
       INTO recbuildtype;
1373 dpurdie 11086
 
3959 dpurdie 11087
      WHILE curbuildtype%FOUND
11088
      LOOP
11089
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
1373 dpurdie 11090
 
3959 dpurdie 11091
         FETCH curbuildtype
11092
          INTO recbuildtype;
11093
      END LOOP;
1373 dpurdie 11094
 
3959 dpurdie 11095
      CLOSE curbuildtype;
1373 dpurdie 11096
 
3959 dpurdie 11097
      -- Separate dependencies with ; separator
11098
      citemcollection := in_list_varchar2 (slist, ';');
1373 dpurdie 11099
 
3959 dpurdie 11100
      BEGIN
11101
         -- Remove old dependencies
11102
         DELETE FROM package_dependencies dep
11103
               WHERE dep.pv_id = pvid;
1373 dpurdie 11104
 
3959 dpurdie 11105
         -- Loop through dependencies
11106
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11107
         LOOP
11108
            -- Extract pkg_name and pkg_version
11109
            sdependency := citemcollection (dependencyrow);
11110
            first_pos := INSTR (sdependency, '"', 1, 1);
11111
            second_pos := INSTR (sdependency, '"', 1, 2);
11112
            third_pos := INSTR (sdependency, '"', 1, 3);
11113
            forth_pos := INSTR (sdependency, '"', 1, 4);
11114
            pkgname :=
11115
               SUBSTR (sdependency,
11116
                       (first_pos + 1),
11117
                       (second_pos - first_pos - 1)
11118
                      );
11119
            pkgversion :=
11120
               SUBSTR (sdependency,
11121
                       (third_pos + 1),
11122
                       (forth_pos - third_pos - 1)
11123
                      );
11124
 
11125
            -- Dependency must exits to be linked against
11126
            BEGIN
11127
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11128
                 INTO dpvid, pkgid, vext
11129
                 FROM package_versions pv, PACKAGES pkg
11130
                WHERE pv.pkg_id = pkg.pkg_id
11131
                  AND pkg.pkg_name = pkgname
11132
                  AND pv.pkg_version = pkgversion;
11133
            EXCEPTION
11134
               WHEN NO_DATA_FOUND
11135
               THEN
11136
                  raise_application_error
11137
                                  (-20000,
11138
                                      'Dependency ['
11139
                                   || pkgname
11140
                                   || ' '
11141
                                   || pkgversion
11142
                                   || '] does not exist yet and cannot be used!'
11143
                                  );
11144
            END;
11145
 
11146
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11147
            BEGIN
11148
               buildtype := cbuildtypes (pkgid || seperator || vext);
11149
 
11150
               IF buildtype IS NULL
11151
               THEN
11152
                  -- Set build type to LinkPackageArchive by default
11153
                  buildtype := 'L';
11154
               END IF;
11155
            EXCEPTION
11156
               WHEN NO_DATA_FOUND
11157
               THEN
11158
                  buildtype := 'L';
11159
            END;
11160
 
11161
            -- Insert Dependencies
11162
            update_package_dependency (pvid,
11163
                                       pkgname,
11164
                                       pkgversion,
11165
                                       buildtype,
11166
                                       userid,
11167
 
11168
                                      );
11169
         END LOOP;
11170
      END;
1373 dpurdie 11171
   END;
11172
 
11173
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11174
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11175
      RETURN VARCHAR2
1373 dpurdie 11176
   IS
3959 dpurdie 11177
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11178
   BEGIN
3959 dpurdie 11179
      BEGIN
11180
         SELECT pv.pkg_version
11181
           INTO pkgversion
11182
           FROM PACKAGES pkg, release_content rc, package_versions pv
11183
          WHERE pv.pv_id = rc.pv_id
11184
            AND pkg.pkg_id = pv.pkg_id
11185
            AND pkg.pkg_name = pkgname
11186
            AND rc.rtag_id = rtagid;
11187
 
11188
         RETURN pkgversion;
11189
      END;
1373 dpurdie 11190
   END;
11191
 
11192
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11193
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
11194
      RETURN VARCHAR2
1373 dpurdie 11195
   IS
3959 dpurdie 11196
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11197
   BEGIN
3959 dpurdie 11198
      BEGIN
11199
         SELECT pv.pkg_version
11200
           INTO pkgversion
11201
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
11202
          WHERE pv.pv_id = wip.pv_id
11203
            AND pkg.pkg_id = pv.pkg_id
11204
            AND pkg.pkg_name = pkgname
11205
            AND wip.rtag_id = rtagid;
1373 dpurdie 11206
 
3959 dpurdie 11207
         IF pkgversion IS NULL
11208
         THEN
11209
            SELECT pv.pkg_version
11210
              INTO pkgversion
11211
              FROM PACKAGES pkg, planned pl, package_versions pv
11212
             WHERE pv.pv_id = pl.pv_id
11213
               AND pkg.pkg_id = pv.pkg_id
11214
               AND pkg.pkg_name = pkgname
11215
               AND pl.rtag_id = rtagid;
11216
         END IF;
11217
 
11218
         RETURN pkgversion;
11219
      END;
1373 dpurdie 11220
   END;
11221
 
11222
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11223
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1373 dpurdie 11224
   IS
3959 dpurdie 11225
      projid       NUMBER;
11226
      projiddb     NUMBER;
11227
      total        NUMBER;
11228
      auto_total   NUMBER;
11229
      rtagiddb     NUMBER;
1373 dpurdie 11230
   BEGIN
3959 dpurdie 11231
      SELECT COUNT (*)
11232
        INTO total
11233
        FROM release_content rc, package_versions pv
11234
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1373 dpurdie 11235
 
3959 dpurdie 11236
      SELECT COUNT (*)
11237
        INTO auto_total
11238
        FROM release_content rc, package_versions pv
11239
       WHERE pv.pv_id = rc.pv_id
11240
         AND pv.is_autobuildable = 'Y'
11241
         AND rc.rtag_id = rtagid;
11242
 
11243
      BEGIN
11244
         SELECT rtag_id
11245
           INTO rtagiddb
11246
           FROM dash_board
11247
          WHERE rtag_id = rtagid;
11248
 
11249
         SELECT proj_id
11250
           INTO projiddb
11251
           FROM dash_board
11252
          WHERE rtag_id = rtagid;
11253
      EXCEPTION
11254
         WHEN NO_DATA_FOUND
11255
         THEN
11256
            rtagiddb := '';
11257
      END;
11258
 
11259
      IF rtagiddb IS NULL
1373 dpurdie 11260
      THEN
3959 dpurdie 11261
         SELECT proj_id
11262
           INTO projid
11263
           FROM release_tags
11264
          WHERE rtag_id = rtagid;
11265
 
11266
         INSERT INTO dash_board
11267
                     (proj_id, rtag_id, last_build_time, automated_packages,
11268
                      total_packages
11269
                     )
11270
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
11271
                      total
11272
                     );
11273
      ELSE
11274
         UPDATE dash_board
11275
            SET last_build_time = ora_sysdatetime,
11276
                automated_packages = auto_total,
11277
                total_packages = total
11278
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1373 dpurdie 11279
      END IF;
11280
   END;
11281
 
11282
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11283
   FUNCTION exclude_from_build (
11284
      pvid          IN   NUMBER,
11285
      spkgversion   IN   VARCHAR2,
11286
      rtagid        IN   NUMBER,
11287
      username      IN   VARCHAR2
1373 dpurdie 11288
   )
3959 dpurdie 11289
      RETURN NUMBER
1373 dpurdie 11290
   IS
3959 dpurdie 11291
      userid              NUMBER;
11292
      outerrcode          NUMBER;
11293
      pkgid               NUMBER;
11294
 
11295
      CURSOR dnr_duplicate_cur
11296
      IS
11297
         SELECT *
11298
           FROM do_not_ripple
11299
          WHERE pv_id = pvid AND rtag_id = rtagid;
11300
 
11301
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11302
   BEGIN
3959 dpurdie 11303
      outerrcode := -1;       -- Set default return error code to ERROR state
11304
 
11305
      /*--------------- Business Rules Here -------------------*/
11306
      IF (rtagid IS NULL)
1373 dpurdie 11307
      THEN
3959 dpurdie 11308
         RETURN outerrcode;
11309
--         raise_application_error (-20000, 'RtagId must be supplied.');
11310
      END IF;
11311
 
11312
      IF (pvid IS NULL)
1373 dpurdie 11313
      THEN
3959 dpurdie 11314
         RETURN outerrcode;
11315
--         raise_application_error (-20000, 'PvId must be supplied.');
11316
      END IF;
11317
 
11318
      IF (username IS NULL)
1373 dpurdie 11319
      THEN
3959 dpurdie 11320
         RETURN outerrcode;
11321
--         raise_application_error (-20000, 'UserName must be supplied.');
11322
      END IF;
11323
 
11324
      -- Get user_id
11325
      BEGIN
11326
         SELECT usr.user_id
11327
           INTO userid
11328
           FROM users usr
11329
          WHERE UPPER (usr.user_name) = UPPER (username)
11330
            AND usr.is_disabled IS NULL;
11331
      EXCEPTION
11332
         WHEN NO_DATA_FOUND
11333
         THEN
11334
            RETURN outerrcode;
11335
--            raise_application_error (-20000,
11336
--                                        'UserName '
11337
--                                     || username
11338
--                                     || ' is not valid or disabled.'
11339
--                                    );
11340
      END;
11341
 
11342
      OPEN dnr_duplicate_cur;
11343
 
11344
      FETCH dnr_duplicate_cur
11345
       INTO dnr_duplicate_rec;
11346
 
11347
      IF dnr_duplicate_cur%FOUND
1373 dpurdie 11348
      THEN
3959 dpurdie 11349
         outerrcode := 0;
1373 dpurdie 11350
      END IF;
3959 dpurdie 11351
 
11352
      IF dnr_duplicate_cur%NOTFOUND
11353
      THEN
11354
         /* No duplicate recordset */
11355
         unripple_package (pvid, rtagid, userid);
11356
         outerrcode := 0;                            -- Set return to SUCCESS
11357
      END IF;
11358
 
11359
      CLOSE dnr_duplicate_cur;
11360
 
11361
      SELECT pkg_id
11362
        INTO pkgid
11363
        FROM package_versions
11364
       WHERE pv_id = pvid;
11365
 
11366
      DELETE FROM planned_versions
11367
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11368
 
11369
      RETURN outerrcode;
1373 dpurdie 11370
   END;
11371
 
11372
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11373
   FUNCTION exclude_indirect_from_build (
11374
      pvid          IN   NUMBER,
11375
      spkgversion   IN   VARCHAR2,
11376
      rtagid        IN   NUMBER,
11377
      username      IN   VARCHAR2,
11378
      rootpvid      IN   NUMBER,
11379
      rootcause     IN   VARCHAR2,
11380
      rootfile      IN   VARCHAR2
1373 dpurdie 11381
   )
3959 dpurdie 11382
      RETURN NUMBER
1373 dpurdie 11383
   IS
3959 dpurdie 11384
      userid              NUMBER;
11385
      outerrcode          NUMBER;
11386
      pkgid               NUMBER;
11387
 
11388
      CURSOR dnr_duplicate_cur
11389
      IS
11390
         SELECT *
11391
           FROM do_not_ripple
11392
          WHERE pv_id = pvid AND rtag_id = rtagid;
11393
 
11394
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11395
   BEGIN
3959 dpurdie 11396
      outerrcode := -1;       -- Set default return error code to ERROR state
11397
 
11398
      /*--------------- Business Rules Here -------------------*/
11399
      IF (rtagid IS NULL)
1373 dpurdie 11400
      THEN
3959 dpurdie 11401
         RETURN outerrcode;
11402
--         raise_application_error (-20000, 'RtagId must be supplied.');
11403
      END IF;
11404
 
11405
      IF (pvid IS NULL)
1373 dpurdie 11406
      THEN
3959 dpurdie 11407
         RETURN outerrcode;
11408
--         raise_application_error (-20000, 'PvId must be supplied.');
11409
      END IF;
11410
 
11411
      IF (username IS NULL)
1373 dpurdie 11412
      THEN
3959 dpurdie 11413
         RETURN outerrcode;
11414
--         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 11415
      END IF;
3959 dpurdie 11416
 
11417
      -- Get user_id
11418
      BEGIN
11419
         SELECT usr.user_id
11420
           INTO userid
11421
           FROM users usr
11422
          WHERE UPPER (usr.user_name) = UPPER (username)
11423
            AND usr.is_disabled IS NULL;
11424
      EXCEPTION
11425
         WHEN NO_DATA_FOUND
11426
         THEN
11427
            RETURN outerrcode;
11428
--            raise_application_error (-20000,
11429
--                                        'UserName '
11430
--                                     || username
11431
--                                     || ' is not valid or disabled.'
11432
--                                    );
11433
      END;
11434
 
11435
     /* No duplicate recordset */
11436
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
11437
     outerrcode := 0;                            -- Set return to SUCCESS
11438
 
11439
      SELECT pkg_id
11440
        INTO pkgid
11441
        FROM package_versions
11442
       WHERE pv_id = pvid;
11443
 
11444
      DELETE FROM planned_versions
11445
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11446
 
11447
      RETURN outerrcode;
1373 dpurdie 11448
   END;
11449
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11450
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
1373 dpurdie 11451
   IS
11452
   BEGIN
3959 dpurdie 11453
      INSERT INTO abt_action_log
11454
                  (rcon_id, action_datetime, action
11455
                  )
11456
           VALUES (rconid, ora_sysdatetime, action
11457
                  );
1373 dpurdie 11458
   END;
11459
 
11460
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11461
   FUNCTION insert_package_metrics (
11462
      rtagid                   IN   NUMBER,
11463
      pkgname                  IN   VARCHAR2,
11464
      vext                     IN   VARCHAR2,
11465
      metricstring             IN   VARCHAR2
1373 dpurdie 11466
   )
3959 dpurdie 11467
      RETURN NUMBER
1373 dpurdie 11468
   IS
3959 dpurdie 11469
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11470
      lv_pvid                  NUMBER                 := 0;
11471
      rownumber                NUMBER;
11472
      rowcontent               VARCHAR2(4000);
11473
      metricname               VARCHAR2(1000);
11474
      metricvalue              VARCHAR2(4000);
11475
      return_insert_error      NUMBER                 := -1;
11476
      return_insert_success    NUMBER                 := 0;
11477
 
11478
      /* Metrics */
11479
      lv_branches                 NUMBER;
11480
      lv_branchlist               VARCHAR2(4000);
11481
      lv_codefiles                NUMBER;
11482
      lv_ignoredfiles             NUMBER;
11483
      lv_directories              NUMBER;
11484
      lv_directorydepth           NUMBER;
11485
      lv_totalfiles               NUMBER;
11486
      lv_makefiles                NUMBER;
11487
      lv_blanklines               NUMBER;
11488
      lv_codelines                NUMBER;
11489
      lv_commentlines             NUMBER;
11490
 
1373 dpurdie 11491
   BEGIN
3959 dpurdie 11492
      /*--------------- Business Rules Here -------------------*/
11493
      IF (rtagid IS NULL)
11494
      THEN
11495
         RETURN return_insert_error;
11496
      END IF;
1373 dpurdie 11497
 
3959 dpurdie 11498
      IF (pkgname IS NULL)
11499
      THEN
11500
         RETURN return_insert_error;
11501
      END IF;
11502
 
11503
      IF (metricstring IS NULL)
11504
      THEN
11505
         RETURN return_insert_error;
11506
      END IF;
11507
 
11508
      BEGIN
11509
         SELECT pv.pv_id
11510
           INTO lv_pvid
11511
           FROM package_versions pv, packages pkg, release_content rc
11512
          WHERE pv.pkg_id = pkg.pkg_id
11513
            AND rc.rtag_id = rtagid
11514
            AND pv.pv_id = rc.pv_id
11515
            AND pkg.pkg_name = pkgname
11516
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11517
      EXCEPTION
11518
           WHEN NO_DATA_FOUND
11519
           THEN
11520
                lv_pvid := 0;
11521
      END;
11522
 
11523
      citemcollection := in_list_varchar2 (metricstring, ';');
11524
 
11525
      FOR rownumber IN 1 .. citemcollection.COUNT
11526
      LOOP
11527
         rowcontent := citemcollection(rownumber);
11528
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
11529
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
11530
 
11531
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
11532
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
11533
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
11534
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
11535
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
11536
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
11537
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
11538
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
11539
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
11540
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
11541
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
11542
         END IF;
11543
      END LOOP;
11544
 
11545
      IF (lv_pvid > 0)
11546
      THEN
11547
         -- Delete any existing entries for this package version to makes sure our data is untainted
11548
         DELETE FROM package_metrics pm
11549
         WHERE pm.pv_id = lv_pvid;
11550
 
11551
         -- Insert the new data into the metrics table
11552
         INSERT INTO package_metrics
11553
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
11554
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
11555
                     )
11556
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
11557
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
11558
                     );
11559
 
11560
         -- Now update the Release_Metrics Table
11561
         update_release_metrics(rtagid);
11562
 
11563
         RETURN return_insert_success;
11564
      ELSE
11565
         RETURN return_insert_error;
11566
      END IF;
1373 dpurdie 11567
   END;
11568
 
11569
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11570
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1373 dpurdie 11571
   IS
3959 dpurdie 11572
      lv_totalpackages       NUMBER;
11573
      lv_autobuilt           NUMBER;
11574
      lv_linesofcode         NUMBER;
11575
      lv_unittested          NUMBER;
11576
      lv_autotested          NUMBER;
11577
      lv_numOfbranches       NUMBER;
11578
      lv_lastbuildtime       DATE;
1373 dpurdie 11579
   BEGIN
3959 dpurdie 11580
      IF (rtagid > 0)
11581
      THEN
11582
         -- Get the total number of packages in this release and the number of
11583
         -- those that are autobuilt
11584
         SELECT COUNT (DISTINCT rc.pv_id),
11585
                COUNT (DISTINCT autobuilt_qry.pv_id)
11586
           INTO lv_totalpackages, lv_autobuilt
11587
           FROM release_content rc,
11588
                package_versions pv,
11589
                (
11590
                 SELECT rc.pv_id
11591
                   FROM release_content rc,
11592
                        package_versions pv
11593
                  WHERE pv.is_autobuildable = 'Y'
11594
                    AND pv.pv_id = rc.pv_id
11595
                    AND rc.rtag_id = rtagid
11596
                ) autobuilt_qry
11597
          WHERE pv.pv_id = rc.pv_id
11598
            AND rc.rtag_id = rtagid
11599
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
1373 dpurdie 11600
 
3959 dpurdie 11601
         -- Get the build time of the last package built in this release and the
11602
         -- total number of lines of code
11603
         SELECT MAX(pm.created_stamp),
11604
                SUM(pm.code_lines)
11605
           INTO lv_lastbuildtime, lv_linesofcode
11606
           FROM package_metrics pm, release_content rc
11607
          WHERE pm.pv_id = rc.pv_id
11608
            AND rc.rtag_id = rtagid;
11609
 
11610
         -- Get the number of packages with unit tests in this release and the
11611
         -- number of those that are autotested
11612
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
11613
           FROM unit_tests ut,
11614
                release_content rc
11615
          WHERE ut.pv_id = rc.pv_id
11616
            AND rc.rtag_id = rtagid
11617
        AND ut.test_types_fk != 1;
11618
 
11619
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
11620
          FROM unit_tests ut,
11621
               release_content rc
11622
         WHERE ut.pv_id = rc.pv_id
11623
           AND rc.rtag_id = rtagid
11624
           AND ut.test_types_fk = 7;
11625
 
11626
 
11627
         -- Count the number of unique branches in the packages in this release.
11628
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
11629
--           FROM (
11630
--                SELECT pv_id,
11631
--                       regexp_substr(str, '[^,]+', 1, level) branch,
11632
--                       level lv,
11633
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
11634
--                  FROM (
11635
--                       SELECT pm.pv_id,
11636
--                              ','||pm.branch_list str
11637
--                         FROM package_metrics pm,
11638
--                              release_content rc
11639
--                        WHERE pm.pv_id = rc.pv_id
11640
--                          AND rc.rtag_id = rtagid
11641
--                       )
11642
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
11643
--                )
11644
--          WHERE lv != lg;
11645
 
11646
         UPDATE release_metrics rm
11647
            SET rm.total_packages = lv_totalpackages,
11648
                rm.autobuilt = lv_autobuilt,
11649
                rm.lines_of_code = lv_linesofcode,
11650
                rm.unit_tested = lv_unittested,
11651
                rm.autotested = lv_autotested,
11652
--                rm.branches = lv_numOfbranches,
11653
                rm.last_build_time = lv_lastbuildtime
11654
          WHERE rtag_id = rtagid;
11655
 
11656
         IF (SQL%ROWCOUNT = 0)
11657
         THEN
11658
            INSERT INTO release_metrics
11659
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11660
                         autotested, last_build_time
11661
                        )
11662
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11663
                         lv_autotested, lv_lastbuildtime
11664
                        );
11665
         END IF;
11666
--         IF (SQL%ROWCOUNT = 0)
11667
--         THEN
11668
--            INSERT INTO release_metrics
11669
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11670
--                         autotested, branches, last_build_time
11671
--                        )
11672
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11673
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
11674
--                        );
11675
--         END IF;
11676
--      ELSE
11677
--         raise_application_error (-20000, 'RtagId must be supplied.');
11678
      END IF;
1373 dpurdie 11679
   END;
11680
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11681
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
1373 dpurdie 11682
   IS
3959 dpurdie 11683
      vcstypeid    NUMBER;
11684
      vcstag       VARCHAR2(32);
11685
      label        VARCHAR2(60);
11686
      srcpath      VARCHAR2(2000);
11687
      vcstypeid_cc NUMBER;
11688
      vcstypeid_uc NUMBER;
1373 dpurdie 11689
   BEGIN
3959 dpurdie 11690
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
11691
      -- what the primary key value is for the ClearCase VCS entry.
11692
      BEGIN
11693
         SELECT vt.vcs_type_id
11694
         INTO vcstypeid_cc
11695
         FROM VCS_TYPE vt
11696
         WHERE vt.tag = 'CC';
11697
         EXCEPTION
11698
            WHEN NO_DATA_FOUND THEN
11699
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
11700
      END;
1373 dpurdie 11701
 
3959 dpurdie 11702
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
11703
      -- what the primary key value is for the Uncontrolled VCS entry.
11704
      BEGIN
11705
         SELECT vt.vcs_type_id
11706
         INTO vcstypeid_uc
11707
         FROM VCS_TYPE vt
11708
         WHERE vt.tag = 'UC';
11709
         EXCEPTION
11710
            WHEN NO_DATA_FOUND THEN
11711
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
11712
      END;
11713
 
11714
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
11715
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
11716
      BEGIN
11717
         SELECT pv.pkg_label, pv.src_path,
11718
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
11719
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
11720
                 ELSE pv.vcs_type_id END) AS vcs_type_id
11721
         INTO label, srcpath, vcstypeid
11722
         FROM PACKAGE_VERSIONS pv
11723
         WHERE pv.pv_id = pvid;
11724
         EXCEPTION
11725
            WHEN NO_DATA_FOUND THEN
11726
               raise_application_error (-20000, 'Package Version Not Found!');
11727
      END;
11728
 
11729
      -- Get the VCS TAG for the VCS_TYPE_ID.
11730
      BEGIN
11731
         SELECT vt.tag
11732
         INTO vcstag
11733
         FROM VCS_TYPE vt
11734
         WHERE vt.vcs_type_id = vcstypeid;
11735
         EXCEPTION
11736
            WHEN NO_DATA_FOUND THEN
11737
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
11738
      END;
11739
 
11740
      -- Return value depending upon which VCS Tag is being used.
11741
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
11742
      CASE vcstag
11743
         WHEN 'CC' THEN
11744
            RETURN vcstag || '::' || srcpath || '::' || label;
11745
         WHEN 'SVN' THEN
11746
            RETURN vcstag || '::' || srcpath || '::' || label;
11747
         ELSE
11748
            RETURN vcstag || '::';
11749
      END CASE;
11750
 
1373 dpurdie 11751
   END;
3959 dpurdie 11752
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 11753
 
3959 dpurdie 11754
/*-------------------------------------------------------------------------------------------------------
11755
Name:        update_vcs_details
11756
Description: Updates the Version Control System (vcs) details specified in the vcstag
11757
             parameter for the specified package version.
11758
             The specified package vcstag is parsed and split into 3 fields:
11759
                vcs type, src path, label
11760
             These fields are then stored for the specified pv_id in the package_versions, table.
11761
             An action is recorded in the action log and provides information for tracking and
11762
             for restoring the previous vcs settings if a recovery is required.
11763
Paramters:
11764
             ipv_id:     Package version identifier
11765
             vcstag:     Full version control tag.
11766
                         Examples:
11767
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
11768
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11769
             user_id:    Identifier of the user that is performing this function.
11770
*/
11771
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
1373 dpurdie 11772
   IS
3959 dpurdie 11773
      ivcs_type_id   NUMBER;
11774
      svcs_type      VARCHAR2(128);
11775
      ssrc_path      VARCHAR2(512);
11776
      spkg_label     VARCHAR2(512);
11777
      spattern       VARCHAR2(64);
11778
      saction_desc   VARCHAR2(2048);
11779
      old_vcs_type   VARCHAR2(128);
11780
      old_src_path   VARCHAR2(512);
11781
      old_pkg_label  VARCHAR2(512);
11782
      old_pkg_vcstag VARCHAR2(1024);
11783
      i              NUMBER;
11784
      vcount         NUMBER;
1373 dpurdie 11785
   BEGIN
3959 dpurdie 11786
     -- Split vcs tag into fields: vcs type, src path, label
11787
     -- Fields are separated by '::'
11788
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11789
     -- The below regular expression pattern has groups to achieve this.
1373 dpurdie 11790
 
3959 dpurdie 11791
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
11792
 
11793
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
11794
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
11795
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
11796
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
11797
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
11798
 
11799
     -- Validate vcs type
11800
     BEGIN
11801
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
11802
     EXCEPTION
11803
       WHEN NO_DATA_FOUND THEN
11804
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11805
       --RAISE;
11806
     END;
11807
 
11808
     -- If Clearcase
11809
     IF (ivcs_type_id = 2) THEN
11810
       -- Validate source path
11811
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
11812
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11813
       END IF;
11814
 
11815
       -- Validate label
11816
       -- For clearcase the label must be specified. For subversion it is not required.
11817
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
11818
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11819
       END IF;
11820
 
11821
     -- if Subversion
11822
     ELSIF (ivcs_type_id = 23) THEN
11823
       -- general validity
11824
       -- Not as picky as the RM Data entry
11825
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
11826
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11827
       END IF;
11828
 
11829
       -- Validate Tag
11830
       -- May be a Peg or a Label
11831
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
11832
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
11833
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11834
           END IF;
11835
       END IF;
11836
 
11837
        -- Check for suitable ending
11838
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
11839
            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 || '"');
11840
        END IF;
11841
 
11842
       -- Check for combined use of tags, branches, trunk or repeats of each
11843
       -- Count occurrences of /tags or /branches/ or /trunk
11844
       vcount:=0;
11845
       i:=1;
11846
       WHILE i > 0 LOOP
11847
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
11848
         IF i > 0 THEN
11849
           -- if found then increment count
11850
           vcount:=vcount+1;
11851
           i:=i-1;  -- move index back to "/"
11852
         END IF;
11853
       END LOOP;
11854
 
11855
       IF vcount = 0  THEN
11856
         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 || '"');
11857
       END IF;
11858
 
11859
       IF vcount > 1  THEN
11860
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11861
       END IF;
11862
 
11863
 
11864
     END IF;
11865
 
11866
     BEGIN
11867
       -- Get current vcs tag for specified package version
11868
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
11869
       INTO old_src_path, old_pkg_label, old_vcs_type
11870
       FROM package_versions pv, vcs_type vc
11871
       WHERE pv.pv_id = ipv_id
11872
       AND pv.vcs_type_id = vc.vcs_type_id (+);
11873
 
11874
     EXCEPTION
11875
       WHEN NO_DATA_FOUND THEN
11876
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
11877
     END;
11878
 
11879
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
11880
     IF (old_pkg_label IS NOT NULL) THEN
11881
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
11882
     END IF;
11883
 
11884
     -- Create action description
11885
     -- This description will contain the old and new tags.
11886
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
11887
     -- An example of the action description is below:
11888
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
11889
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
11890
 
11891
     -- Store new vcs details
11892
     UPDATE package_versions SET
11893
       src_path = ssrc_path,
11894
       pkg_label = spkg_label,
11895
       vcs_type_id = ivcs_type_id
11896
     WHERE
11897
       pv_id = ipv_id;
11898
 
11899
     -- Store action in action log so that we can back track and also restore vcs settings if required.
11900
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
11901
 
11902
   END update_vcs_details;
11903
 
11904
/*-------------------------------------------------------------------------------------------------------
11905
Name:        isSVN
11906
Description: Determine if any of the packages versions are controlled under SVN
11907
			 Intended to be used to prevent users from releasing a package
11908
			 that has been migrated to SVN
11909
 
11910
Paramters:	pkgid:     Package ID
11911
 
11912
Returns:	Number of versions under SVN version control
11913
*/
11914
 
11915
FUNCTION isSVN( pkgid IN NUMBER )
11916
    RETURN NUMBER
11917
    IS
11918
    svncount   NUMBER  := 0;
11919
   BEGIN
11920
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
11921
        RETURN (svncount);
1373 dpurdie 11922
   END;
3959 dpurdie 11923
 
11924
/*-------------------------------------------------------------------------------------------------------
11925
Name:        isSVNbyName
11926
Description: Determine if any of the packages versions are controlled under SVN
11927
			 Intended to be used to prevent users from releasing a package
11928
			 that has been migrated to SVN
11929
 
11930
Paramters:	pkgname:	Package Name
11931
 
11932
Returns:	Number of versions under SVN version control
11933
*/
11934
 
11935
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
11936
    RETURN NUMBER
11937
IS
11938
   svncount   NUMBER  := 0;
11939
   BEGIN
11940
        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;
11941
        RETURN (svncount);
11942
   END;
11943
 
11944
   END;
4040 dpurdie 11945
 
1374 dpurdie 11946
/
1373 dpurdie 11947
 
4040 dpurdie 11948
/
11949
--------------------------------------------------------
11950
--  DDL for Package Body PK_RMAPI_TEST
11951
--------------------------------------------------------
11952
 
11953
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI_TEST" 
11954
IS
11955
 
11956
   /*-------------------------------------------------------------------------------------------------------*/
11957
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11958
      RETURN typecur
11959
   IS
11960
      npvid     NUMBER  := 0;
11961
      RECORDS   typecur;
11962
   BEGIN
11963
      BEGIN
11964
         -- Get PV_ID --
11965
         SELECT pv.pv_id
11966
           INTO npvid
11967
           FROM PACKAGES pkg, package_versions pv
11968
          WHERE pv.pkg_id = pkg.pkg_id
11969
            AND pkg.pkg_name = pkgname
11970
            AND pv.pkg_version = pkgversion;
11971
      EXCEPTION
11972
         WHEN NO_DATA_FOUND
11973
         THEN
11974
            raise_application_error (-20000, 'Package Not Found!');
11975
            --WHEN OTHERS THEN
11976
                  -- Consider logging the error and then re-raise
11977
            RAISE;
11978
      END;
11979
 
11980
      -- Finally get package dependencies --
11981
      OPEN RECORDS FOR
11982
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11983
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11984
          WHERE dep.pv_id = npvid
11985
            AND dpv.pkg_id = dpkg.pkg_id
11986
            AND dpv.pv_id = dep.dpv_id;
11987
 
11988
      RETURN RECORDS;
11989
   END;
11990
 
11991
/*-------------------------------------------------------------------------------------------------------*/
11992
   FUNCTION wip_iteration_package (
11993
      projname        VARCHAR2,
11994
      iterationname   VARCHAR2,
11995
      pkgname         VARCHAR2
11996
   )
11997
      RETURN typecur
11998
   IS
11999
      nrtagid   NUMBER  := 0;
12000
      RECORDS   typecur;
12001
   BEGIN
12002
      BEGIN
12003
         -- Get latest rtag_id --
12004
         SELECT rt.rtag_id
12005
           INTO nrtagid
12006
           FROM projects proj, release_tags rt
12007
          WHERE rt.proj_id = proj.proj_id
12008
            AND UPPER (proj.proj_name) = UPPER (projname)
12009
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
12010
 
12011
         IF (nrtagid IS NULL)
12012
         THEN
12013
            raise_application_error (-20000,
12014
                                     'Work In Progress is Not Found!');
12015
         END IF;
12016
      EXCEPTION
12017
         WHEN NO_DATA_FOUND
12018
         THEN
12019
            raise_application_error (-20000,
12020
                                     'Work In Progress is Not Found!');
12021
            RAISE;
12022
      END;
12023
 
12024
      -- Finally get package dependencies --
12025
      OPEN RECORDS FOR
12026
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
12027
                pv.src_path
12028
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
12029
          WHERE pv.pkg_id = pkg.pkg_id
12030
            AND wip.pv_id = pv.pv_id
12031
            AND wip.rtag_id = nrtagid
12032
            AND pkg.pkg_name = pkgname;
12033
 
12034
      RETURN RECORDS;
12035
   END;
12036
 
12037
/*-------------------------------------------------------------------------------------------------------*/
12038
   FUNCTION auto_make_release (
12039
      rtagid                   IN   NUMBER,
12040
      pkgname                  IN   VARCHAR2,
12041
      vext                     IN   VARCHAR2,
12042
      newpkgversion            IN   VARCHAR2,
12043
      label                    IN   VARCHAR2,
12044
      dependenciesimportlist   IN   VARCHAR2,
12045
      isrippled                IN   NUMBER,
12046
      username                 IN   VARCHAR2
12047
   )
12048
      RETURN NUMBER
12049
   IS
12050
      pkgid                           NUMBER;
12051
      pvid                            NUMBER                        := 0;
12052
      userid                          NUMBER;
12053
      dlocked                         VARCHAR2 (20)                 := NULL;
12054
      clonefrompvid                   NUMBER;
12055
      ssv_mm                          package_versions.v_mm%TYPE;
12056
      ssv_nmm                         package_versions.v_nmm%TYPE;
12057
      ssv_ext                         package_versions.v_ext%TYPE;
12058
      return_package_not_found        NUMBER                        := -1;
12059
      return_package_already_exists   NUMBER                        := -2;
12060
      return_not_approved             NUMBER                        := -3;
12061
   BEGIN
12062
      /*--------------- Business Rules Here -------------------*/
12063
      IF (rtagid IS NULL)
12064
      THEN
12065
         raise_application_error (-20000, 'RtagId must be supplied.');
12066
      END IF;
12067
 
12068
      IF (pkgname IS NULL)
12069
      THEN
12070
         raise_application_error (-20000, 'PkgName must be supplied.');
12071
      END IF;
12072
 
12073
      IF (newpkgversion IS NULL)
12074
      THEN
12075
         raise_application_error (-20000, 'PkgVersion must be supplied.');
12076
      END IF;
12077
 
12078
      IF (label IS NULL)
12079
      THEN
12080
         raise_application_error (-20000, 'Label must be supplied.');
12081
      END IF;
12082
 
12083
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
12084
      THEN
12085
         raise_application_error
12086
            (-20000,
12087
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
12088
            );
12089
      END IF;
12090
 
12091
      IF (username IS NULL)
12092
      THEN
12093
         raise_application_error (-20000, 'UserName must be supplied.');
12094
      END IF;
12095
 
12096
      -- Get user_id
12097
      BEGIN
12098
         SELECT usr.user_id
12099
           INTO userid
12100
           FROM users usr
12101
          WHERE UPPER (usr.user_name) = UPPER (username)
12102
            AND usr.is_disabled IS NULL;
12103
      EXCEPTION
12104
         WHEN NO_DATA_FOUND
12105
         THEN
12106
            raise_application_error (-20000,
12107
                                        'UserName '
12108
                                     || username
12109
                                     || ' is not valid or disabled.'
12110
                                    );
12111
      END;
12112
 
12113
/*-------------------------------------------------------*/
12114
 
12115
      -- Create package if necessary
12116
      IF isrippled = 1
12117
      THEN
12118
         /* Ripple Build */
12119
         BEGIN
12120
            -- Make sure that package does not exist
12121
            SELECT pv.pv_id
12122
              INTO pvid
12123
              FROM package_versions pv, PACKAGES pkg
12124
             WHERE pv.pkg_id = pkg.pkg_id
12125
               AND pkg.pkg_name = pkgname
12126
               AND pv.pkg_version = newpkgversion;
12127
         EXCEPTION
12128
            WHEN NO_DATA_FOUND
12129
            THEN
12130
               pvid := 0;
12131
         END;
12132
 
12133
         IF (pvid = 0)
12134
         THEN
12135
            -- Split current version in parts
12136
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
12137
 
12138
            BEGIN
12139
               -- Find package to be replaced with thie ripple package
12140
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
12141
               THEN
12142
                  SELECT pv.pv_id
12143
                    INTO clonefrompvid
12144
                    FROM PACKAGES pkg, package_versions pv,
12145
                         release_content rc
12146
                   WHERE rc.pv_id = pv.pv_id
12147
                     AND pv.pkg_id = pkg.pkg_id
12148
                     AND rc.rtag_id = rtagid
12149
                     AND pkg.pkg_name = pkgname
12150
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
12151
               ELSE
12152
                  SELECT pv.pv_id
12153
                    INTO clonefrompvid
12154
                    FROM PACKAGES pkg, package_versions pv,
12155
                         release_content rc
12156
                   WHERE rc.pv_id = pv.pv_id
12157
                     AND pv.pkg_id = pkg.pkg_id
12158
                     AND rc.rtag_id = rtagid
12159
                     AND pkg.pkg_name = pkgname
12160
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
12161
               END IF;
12162
            EXCEPTION
12163
               WHEN NO_DATA_FOUND
12164
               THEN
12165
                  raise_application_error
12166
                                        (-20000,
12167
                                            'Cannot get CloneFromPvId. VExt='
12168
                                         || vext
12169
                                         || ', RtagId='
12170
                                         || rtagid
12171
                                         || ', PkgName='
12172
                                         || pkgname
12173
                                         || ', SSV_EXT='
12174
                                         || ssv_ext
12175
                                        );
12176
            END;
12177
 
12178
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
12179
            THEN
12180
               -- Create package
12181
               seed_package_names_versions (pkgname,
12182
                                            newpkgversion,
12183
                                            userid,
12184
                                            pvid,
12185
                                            clonefrompvid
12186
                                           );
12187
            ELSE
12188
               -- Create package
12189
               seed_package_names_versions2 (pkgname,
12190
                                             newpkgversion,
12191
                                             userid,
12192
                                             pvid,
12193
                                             clonefrompvid
12194
                                            );
12195
            END IF;
12196
 
12197
            -- Update Package reason for release
12198
            UPDATE package_versions pv
12199
               SET pv.comments = 'Rippled Build.',
12200
                   pv.build_type = 'Y'
12201
             WHERE pv.pv_id = pvid;
12202
         ELSE
12203
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
12204
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
12205
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
12206
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
12207
            UPDATE package_versions pv
12208
               SET pv.release_notes_info = null,
12209
                   pv.modified_stamp = ora_sysdatetime
12210
             WHERE pv.pv_id = pvid;
12211
 
12212
            RETURN return_package_already_exists;
12213
         END IF;
12214
      ELSE
12215
         /* Auto build from Pending area */
12216
 
12217
         -- Find package in pending area
12218
         BEGIN
12219
            SELECT pv.pv_id, pv.dlocked
12220
              INTO pvid, dlocked
12221
              FROM planned pl, package_versions pv, PACKAGES pkg
12222
             WHERE pl.pv_id = pv.pv_id
12223
               AND pv.pkg_id = pkg.pkg_id
12224
               AND pl.rtag_id = rtagid
12225
               AND pkg.pkg_name = pkgname
12226
               AND pv.dlocked = 'A'
12227
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
12228
               AND rownum = 1
12229
             ORDER BY pv.modified_stamp;
12230
         EXCEPTION
12231
            WHEN NO_DATA_FOUND
12232
            THEN
12233
               pvid := 0;
12234
         END;
12235
 
12236
         IF (pvid = 0)
12237
         THEN
12238
            -- Package does not exist in pending area, hence report it
12239
            RETURN return_package_not_found;
12240
         ELSIF (dlocked != 'A')
12241
         THEN
12242
            -- Package is not approved for autobuild
12243
            RETURN return_not_approved;
12244
         END IF;
12245
      END IF;
12246
 
12247
      BEGIN
12248
         -- Import Dependencies
12249
         import_dependencies (pvid, dependenciesimportlist, userid);
12250
      END;
12251
 
12252
      BEGIN
12253
         -- Split current version in parts
12254
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
12255
 
12256
         -- Update Package Details
12257
         UPDATE package_versions pv
12258
            SET pv.pkg_version = newpkgversion,
12259
                pv.v_ext = ssv_ext,
12260
                pv.v_mm = ssv_mm,
12261
                pv.v_nmm = ssv_nmm,
12262
                pv.pkg_label = label
12263
          WHERE pv.pv_id = pvid;
12264
      EXCEPTION
12265
         WHEN DUP_VAL_ON_INDEX
12266
         THEN
12267
            -- Package already exists, hence cannot be used for ripple build
12268
            RETURN return_package_already_exists;
12269
      END;
12270
 
12271
      -- Update the is_autobuildable
12272
      UPDATE package_versions
12273
         SET is_autobuildable = 'Y'
12274
       WHERE pv_id = pvid;
12275
 
12276
      -- Now release package
12277
      pk_environment.auto_make_release (pvid,
12278
                                        rtagid,
12279
                                        userid,
12280
                                        vext,
12281
                                        ssv_ext,
12282
                                        clonefrompvid
12283
                                       );
12284
 
12285
      --Now clean the PLANNED_VERSIONS table
12286
      SELECT pkg_id
12287
        INTO pkgid
12288
        FROM PACKAGES
12289
       WHERE pkg_name = pkgname;
12290
 
12291
      DELETE FROM planned_versions
12292
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
12293
 
12294
      RETURN pvid;
12295
   END;
12296
 
12297
/*-------------------------------------------------------------------------------------------------------*/
12298
   FUNCTION auto_make_vcsrelease (
12299
      rtagid                   IN   NUMBER,
12300
      pkgname                  IN   VARCHAR2,
12301
      vext                     IN   VARCHAR2,
12302
      newpkgversion            IN   VARCHAR2,
12303
      vcstag             IN   VARCHAR2,
12304
      dependenciesimportlist   IN   VARCHAR2,
12305
      isrippled                IN   NUMBER,
12306
      username                 IN   VARCHAR2
12307
   )
12308
      RETURN NUMBER
12309
   IS
12310
      pkgid                           NUMBER;
12311
      pvid                            NUMBER                        := 0;
12312
      userid                          NUMBER;
12313
      dlocked                         VARCHAR2 (20)                 := NULL;
12314
      clonefrompvid                   NUMBER;
12315
      ssv_mm                          package_versions.v_mm%TYPE;
12316
      ssv_nmm                         package_versions.v_nmm%TYPE;
12317
      ssv_ext                         package_versions.v_ext%TYPE;
12318
      return_package_not_found        NUMBER                        := -1;
12319
      return_package_already_exists   NUMBER                        := -2;
12320
      return_not_approved             NUMBER                        := -3;
12321
 
12322
      x_vcstypeid                     NUMBER;
12323
      x_tag                           VARCHAR2(32);
12324
      x_label                         VARCHAR2(60);
12325
      x_srcpath                       VARCHAR2(2000);
12326
 
12327
      -- Regular expression constituents
12328
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
12329
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
12330
      BOL           VARCHAR2(4)  := '^';
12331
      Anything      VARCHAR2(4)  := '.*';
12332
      ReplaceToken1 VARCHAR2(4)  := '\1';
12333
      ReplaceToken2 VARCHAR2(4)  := '\2';
12334
      ReplaceToken3 VARCHAR2(4)  := '\3';
12335
 
12336
 
12337
   BEGIN
12338
      /*--------------- Business Rules Here -------------------*/
12339
      IF (rtagid IS NULL)
12340
      THEN
12341
         raise_application_error (-20000, 'RtagId must be supplied.');
12342
      END IF;
12343
 
12344
      IF (pkgname IS NULL)
12345
      THEN
12346
         raise_application_error (-20000, 'PkgName must be supplied.');
12347
      END IF;
12348
 
12349
      IF (newpkgversion IS NULL)
12350
      THEN
12351
         raise_application_error (-20000, 'PkgVersion must be supplied.');
12352
      END IF;
12353
 
12354
      IF (vcstag IS NULL)
12355
      THEN
12356
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
12357
      END IF;
12358
 
12359
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
12360
      THEN
12361
         raise_application_error
12362
            (-20000,
12363
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
12364
            );
12365
      END IF;
12366
 
12367
      IF (username IS NULL)
12368
      THEN
12369
         raise_application_error (-20000, 'UserName must be supplied.');
12370
      END IF;
12371
 
12372
      -- Parse the PkgVcsTag
12373
      -- Sets up
12374
      --   x_tag, x_label, x_srcpath
12375
 
12376
       BEGIN
12377
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
12378
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
12379
 
12380
          -- Decode the short tag
12381
          CASE x_tag
12382
             WHEN 'CC' THEN
12383
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
12384
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
12385
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
12386
 
12387
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
12388
                -- check for that error as well as the obvious zero-length string conditions.
12389
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
12390
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
12391
                END IF;
12392
 
12393
             WHEN 'SVN' THEN
12394
                -- extract the 2nd token, that being the subversion tag
12395
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token, ReplaceToken2);
12396
                x_label   := 'N/A';
12397
 
12398
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
12399
                -- check for that error as well as the obvious zero-length string conditions.
12400
                IF LENGTH(x_srcpath) = 0 OR x_srcpath = vcstag THEN
12401
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
12402
                END IF;
12403
 
12404
             WHEN 'UC' THEN
12405
                -- nothing to extract, just assign defaults
12406
                x_srcpath := '';
12407
                x_label   := 'N/A';
12408
             ELSE
12409
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
12410
          END CASE;
12411
       END;
12412
 
12413
      -- Get the VCS_TYPE_ID for the version control system.
12414
      BEGIN
12415
         SELECT vt.vcs_type_id
12416
         INTO x_vcstypeid
12417
         FROM VCS_TYPE vt
12418
         WHERE vt.tag = x_tag;
12419
         EXCEPTION
12420
            WHEN NO_DATA_FOUND THEN
12421
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
12422
      END;
12423
 
12424
 
12425
      -- Get user_id
12426
      BEGIN
12427
         SELECT usr.user_id
12428
           INTO userid
12429
           FROM users usr
12430
          WHERE UPPER (usr.user_name) = UPPER (username)
12431
            AND usr.is_disabled IS NULL;
12432
      EXCEPTION
12433
         WHEN NO_DATA_FOUND
12434
         THEN
12435
            raise_application_error (-20000,
12436
                                        'UserName '
12437
                                     || username
12438
                                     || ' is not valid or disabled.'
12439
                                    );
12440
      END;
12441
 
12442
/*-------------------------------------------------------*/
12443
 
12444
      -- Create package if necessary
12445
      IF isrippled = 1
12446
      THEN
12447
         /* Ripple Build */
12448
         BEGIN
12449
            -- Make sure that package does not exist
12450
            SELECT pv.pv_id
12451
              INTO pvid
12452
              FROM package_versions pv, PACKAGES pkg
12453
             WHERE pv.pkg_id = pkg.pkg_id
12454
               AND pkg.pkg_name = pkgname
12455
               AND pv.pkg_version = newpkgversion;
12456
         EXCEPTION
12457
            WHEN NO_DATA_FOUND
12458
            THEN
12459
               pvid := 0;
12460
         END;
12461
 
12462
         IF (pvid = 0)
12463
         THEN
12464
            -- Split current version in parts
12465
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
12466
 
12467
            BEGIN
12468
               -- Find package to be replaced with thie ripple package
12469
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
12470
               THEN
12471
                  SELECT pv.pv_id
12472
                    INTO clonefrompvid
12473
                    FROM PACKAGES pkg, package_versions pv,
12474
                         release_content rc
12475
                   WHERE rc.pv_id = pv.pv_id
12476
                     AND pv.pkg_id = pkg.pkg_id
12477
                     AND rc.rtag_id = rtagid
12478
                     AND pkg.pkg_name = pkgname
12479
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
12480
               ELSE
12481
                  SELECT pv.pv_id
12482
                    INTO clonefrompvid
12483
                    FROM PACKAGES pkg, package_versions pv,
12484
                         release_content rc
12485
                   WHERE rc.pv_id = pv.pv_id
12486
                     AND pv.pkg_id = pkg.pkg_id
12487
                     AND rc.rtag_id = rtagid
12488
                     AND pkg.pkg_name = pkgname
12489
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
12490
               END IF;
12491
            EXCEPTION
12492
               WHEN NO_DATA_FOUND
12493
               THEN
12494
                  raise_application_error
12495
                                        (-20000,
12496
                                            'Cannot get CloneFromPvId. VExt='
12497
                                         || vext
12498
                                         || ', RtagId='
12499
                                         || rtagid
12500
                                         || ', PkgName='
12501
                                         || pkgname
12502
                                         || ', SSV_EXT='
12503
                                         || ssv_ext
12504
                                        );
12505
            END;
12506
 
12507
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
12508
            THEN
12509
               -- Create package
12510
               seed_package_names_versions (pkgname,
12511
                                            newpkgversion,
12512
                                            userid,
12513
                                            pvid,
12514
                                            clonefrompvid
12515
                                           );
12516
            ELSE
12517
               -- Create package
12518
               seed_package_names_versions2 (pkgname,
12519
                                             newpkgversion,
12520
                                             userid,
12521
                                             pvid,
12522
                                             clonefrompvid
12523
                                            );
12524
            END IF;
12525
 
12526
            -- Update Package reason for release
12527
            UPDATE package_versions pv
12528
               SET pv.comments = 'Rippled Build.',
12529
                   pv.build_type = 'Y'
12530
             WHERE pv.pv_id = pvid;
12531
         ELSE
12532
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
12533
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
12534
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
12535
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
12536
            UPDATE package_versions pv
12537
               SET pv.release_notes_info = null,
12538
                   pv.modified_stamp = ora_sysdatetime
12539
             WHERE pv.pv_id = pvid;
12540
 
12541
            RETURN return_package_already_exists;
12542
         END IF;
12543
      ELSE
12544
         /* Auto build from Pending area */
12545
 
12546
         -- Find package in pending area
12547
         BEGIN
12548
            SELECT pv.pv_id, pv.dlocked
12549
              INTO pvid, dlocked
12550
              FROM planned pl, package_versions pv, PACKAGES pkg
12551
             WHERE pl.pv_id = pv.pv_id
12552
               AND pv.pkg_id = pkg.pkg_id
12553
               AND pl.rtag_id = rtagid
12554
               AND pkg.pkg_name = pkgname
12555
               AND pv.dlocked = 'A'
12556
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
12557
               AND rownum = 1
12558
             ORDER BY pv.modified_stamp;
12559
         EXCEPTION
12560
            WHEN NO_DATA_FOUND
12561
            THEN
12562
               pvid := 0;
12563
         END;
12564
 
12565
         IF (pvid = 0)
12566
         THEN
12567
            -- Package does not exist in pending area, hence report it
12568
            RETURN return_package_not_found;
12569
         ELSIF (dlocked != 'A')
12570
         THEN
12571
            -- Package is not approved for autobuild
12572
            RETURN return_not_approved;
12573
         END IF;
12574
      END IF;
12575
 
12576
      BEGIN
12577
         -- Import Dependencies
12578
         import_dependencies (pvid, dependenciesimportlist, userid);
12579
      END;
12580
 
12581
      BEGIN
12582
         -- Split current version in parts
12583
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
12584
 
12585
         -- Update Package Details
12586
         UPDATE package_versions pv
12587
            SET pv.pkg_version = newpkgversion,
12588
                pv.v_ext = ssv_ext,
12589
                pv.v_mm = ssv_mm,
12590
                pv.v_nmm = ssv_nmm,
12591
                pv.src_path = x_srcpath,
12592
                pv.pkg_label = x_label,
12593
                pv.vcs_type_id = x_vcstypeid
12594
          WHERE pv.pv_id = pvid;
12595
      EXCEPTION
12596
         WHEN DUP_VAL_ON_INDEX
12597
         THEN
12598
            -- Package already exists, hence cannot be used for ripple build
12599
            RETURN return_package_already_exists;
12600
      END;
12601
 
12602
      -- Update the is_autobuildable
12603
      UPDATE package_versions
12604
         SET is_autobuildable = 'Y'
12605
       WHERE pv_id = pvid;
12606
 
12607
      -- Now release package
12608
      pk_environment.auto_make_release (pvid,
12609
                                        rtagid,
12610
                                        userid,
12611
                                        vext,
12612
                                        ssv_ext,
12613
                                        clonefrompvid
12614
                                       );
12615
 
12616
      --Now clean the PLANNED_VERSIONS table
12617
      SELECT pkg_id
12618
        INTO pkgid
12619
        FROM PACKAGES
12620
       WHERE pkg_name = pkgname;
12621
 
12622
      DELETE FROM planned_versions
12623
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
12624
 
12625
      RETURN pvid;
12626
   END;
12627
 
12628
/*-------------------------------------------------------------------------------------------------------*/
12629
   PROCEDURE import_dependencies (
12630
      pvid                     IN   NUMBER,
12631
      dependenciesimportlist   IN   VARCHAR2,
12632
      userid                   IN   NUMBER
12633
   )
12634
   IS
12635
/*
12636
|| DependenciesImportList Format:
12637
|| "pkgA","1.0.0";"pkgB","2.0.0";
12638
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
12639
*/
12640
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
12641
         INDEX BY VARCHAR2 (4000);
12642
 
12643
      seperator         VARCHAR2 (2)           := '||';
12644
      pkgname           VARCHAR2 (4000);
12645
      pkgversion        VARCHAR2 (4000);
12646
      buildtype         VARCHAR2 (50);
12647
      pkgid             NUMBER;
12648
      vext              VARCHAR2 (4000);
12649
      dpvid             NUMBER;
12650
      slist             VARCHAR2 (4000);
12651
      cbuildtypes       tdictionary;
12652
      dependencyrow     NUMBER;
12653
      sdependency       VARCHAR2 (4000);
12654
      first_pos         VARCHAR2 (4000);
12655
      second_pos        VARCHAR2 (4000);
12656
      third_pos         VARCHAR2 (4000);
12657
      forth_pos         VARCHAR2 (4000);
12658
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
12659
 
12660
      CURSOR curbuildtype
12661
      IS
12662
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
12663
                dep.build_type
12664
           FROM package_dependencies dep, package_versions dpv
12665
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
12666
 
12667
      recbuildtype      curbuildtype%ROWTYPE;
12668
   BEGIN
12669
      slist := dependenciesimportlist;
12670
 
12671
      -- Preformat String
12672
      IF NOT slist IS NULL
12673
      THEN
12674
         slist := REPLACE (slist, ' ');                      -- Remove spaces
12675
         slist := REPLACE (slist, UTL_TCP.crlf);
12676
         -- Remove new line and carriage-return characters
12677
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
12678
      END IF;
12679
 
12680
      -- Get Current Dependencies
12681
      OPEN curbuildtype;
12682
 
12683
      FETCH curbuildtype
12684
       INTO recbuildtype;
12685
 
12686
      WHILE curbuildtype%FOUND
12687
      LOOP
12688
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
12689
 
12690
         FETCH curbuildtype
12691
          INTO recbuildtype;
12692
      END LOOP;
12693
 
12694
      CLOSE curbuildtype;
12695
 
12696
      -- Separate dependencies with ; separator
12697
      citemcollection := in_list_varchar2 (slist, ';');
12698
 
12699
      BEGIN
12700
         -- Remove old dependencies
12701
         DELETE FROM package_dependencies dep
12702
               WHERE dep.pv_id = pvid;
12703
 
12704
         -- Loop through dependencies
12705
         FOR dependencyrow IN 1 .. citemcollection.COUNT
12706
         LOOP
12707
            -- Extract pkg_name and pkg_version
12708
            sdependency := citemcollection (dependencyrow);
12709
            first_pos := INSTR (sdependency, '"', 1, 1);
12710
            second_pos := INSTR (sdependency, '"', 1, 2);
12711
            third_pos := INSTR (sdependency, '"', 1, 3);
12712
            forth_pos := INSTR (sdependency, '"', 1, 4);
12713
            pkgname :=
12714
               SUBSTR (sdependency,
12715
                       (first_pos + 1),
12716
                       (second_pos - first_pos - 1)
12717
                      );
12718
            pkgversion :=
12719
               SUBSTR (sdependency,
12720
                       (third_pos + 1),
12721
                       (forth_pos - third_pos - 1)
12722
                      );
12723
 
12724
            -- Dependency must exits to be linked against
12725
            BEGIN
12726
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
12727
                 INTO dpvid, pkgid, vext
12728
                 FROM package_versions pv, PACKAGES pkg
12729
                WHERE pv.pkg_id = pkg.pkg_id
12730
                  AND pkg.pkg_name = pkgname
12731
                  AND pv.pkg_version = pkgversion;
12732
            EXCEPTION
12733
               WHEN NO_DATA_FOUND
12734
               THEN
12735
                  raise_application_error
12736
                                  (-20000,
12737
                                      'Dependency ['
12738
                                   || pkgname
12739
                                   || ' '
12740
                                   || pkgversion
12741
                                   || '] does not exist yet and cannot be used!'
12742
                                  );
12743
            END;
12744
 
12745
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
12746
            BEGIN
12747
               buildtype := cbuildtypes (pkgid || seperator || vext);
12748
 
12749
               IF buildtype IS NULL
12750
               THEN
12751
                  -- Set build type to LinkPackageArchive by default
12752
                  buildtype := 'L';
12753
               END IF;
12754
            EXCEPTION
12755
               WHEN NO_DATA_FOUND
12756
               THEN
12757
                  buildtype := 'L';
12758
            END;
12759
 
12760
            -- Insert Dependencies
12761
            update_package_dependency (pvid,
12762
                                       pkgname,
12763
                                       pkgversion,
12764
                                       buildtype,
12765
                                       userid,
12766
 
12767
                                      );
12768
         END LOOP;
12769
      END;
12770
   END;
12771
 
12772
/*-------------------------------------------------------------------------------------------------------*/
12773
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
12774
      RETURN VARCHAR2
12775
   IS
12776
      pkgversion   VARCHAR2 (4000);
12777
   BEGIN
12778
      BEGIN
12779
         SELECT pv.pkg_version
12780
           INTO pkgversion
12781
           FROM PACKAGES pkg, release_content rc, package_versions pv
12782
          WHERE pv.pv_id = rc.pv_id
12783
            AND pkg.pkg_id = pv.pkg_id
12784
            AND pkg.pkg_name = pkgname
12785
            AND rc.rtag_id = rtagid;
12786
 
12787
         RETURN pkgversion;
12788
      END;
12789
   END;
12790
 
12791
/*-------------------------------------------------------------------------------------------------------*/
12792
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
12793
      RETURN VARCHAR2
12794
   IS
12795
      pkgversion   VARCHAR2 (4000);
12796
   BEGIN
12797
      BEGIN
12798
         SELECT pv.pkg_version
12799
           INTO pkgversion
12800
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
12801
          WHERE pv.pv_id = wip.pv_id
12802
            AND pkg.pkg_id = pv.pkg_id
12803
            AND pkg.pkg_name = pkgname
12804
            AND wip.rtag_id = rtagid;
12805
 
12806
         IF pkgversion IS NULL
12807
         THEN
12808
            SELECT pv.pkg_version
12809
              INTO pkgversion
12810
              FROM PACKAGES pkg, planned pl, package_versions pv
12811
             WHERE pv.pv_id = pl.pv_id
12812
               AND pkg.pkg_id = pv.pkg_id
12813
               AND pkg.pkg_name = pkgname
12814
               AND pl.rtag_id = rtagid;
12815
         END IF;
12816
 
12817
         RETURN pkgversion;
12818
      END;
12819
   END;
12820
 
12821
/*-------------------------------------------------------------------------------------------------------*/
12822
   PROCEDURE update_dash_board (rtagid IN NUMBER)
12823
   IS
12824
      projid       NUMBER;
12825
      projiddb     NUMBER;
12826
      total        NUMBER;
12827
      auto_total   NUMBER;
12828
      rtagiddb     NUMBER;
12829
   BEGIN
12830
      SELECT COUNT (*)
12831
        INTO total
12832
        FROM release_content rc, package_versions pv
12833
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
12834
 
12835
      SELECT COUNT (*)
12836
        INTO auto_total
12837
        FROM release_content rc, package_versions pv
12838
       WHERE pv.pv_id = rc.pv_id
12839
         AND pv.is_autobuildable = 'Y'
12840
         AND rc.rtag_id = rtagid;
12841
 
12842
      BEGIN
12843
         SELECT rtag_id
12844
           INTO rtagiddb
12845
           FROM dash_board
12846
          WHERE rtag_id = rtagid;
12847
 
12848
         SELECT proj_id
12849
           INTO projiddb
12850
           FROM dash_board
12851
          WHERE rtag_id = rtagid;
12852
      EXCEPTION
12853
         WHEN NO_DATA_FOUND
12854
         THEN
12855
            rtagiddb := '';
12856
      END;
12857
 
12858
      IF rtagiddb IS NULL
12859
      THEN
12860
         SELECT proj_id
12861
           INTO projid
12862
           FROM release_tags
12863
          WHERE rtag_id = rtagid;
12864
 
12865
         INSERT INTO dash_board
12866
                     (proj_id, rtag_id, last_build_time, automated_packages,
12867
                      total_packages
12868
                     )
12869
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
12870
                      total
12871
                     );
12872
      ELSE
12873
         UPDATE dash_board
12874
            SET last_build_time = ora_sysdatetime,
12875
                automated_packages = auto_total,
12876
                total_packages = total
12877
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
12878
      END IF;
12879
   END;
12880
 
12881
/*-------------------------------------------------------------------------------------------------------*/
12882
   FUNCTION exclude_from_build (
12883
      pvid          IN   NUMBER,
12884
      spkgversion   IN   VARCHAR2,
12885
      rtagid        IN   NUMBER,
12886
      username      IN   VARCHAR2
12887
   )
12888
      RETURN NUMBER
12889
   IS
12890
      userid              NUMBER;
12891
      outerrcode          NUMBER;
12892
      pkgid               NUMBER;
12893
 
12894
      CURSOR dnr_duplicate_cur
12895
      IS
12896
         SELECT *
12897
           FROM do_not_ripple
12898
          WHERE pv_id = pvid AND rtag_id = rtagid;
12899
 
12900
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
12901
   BEGIN
12902
      outerrcode := -1;       -- Set default return error code to ERROR state
12903
 
12904
      /*--------------- Business Rules Here -------------------*/
12905
      IF (rtagid IS NULL)
12906
      THEN
12907
         RETURN outerrcode;
12908
--         raise_application_error (-20000, 'RtagId must be supplied.');
12909
      END IF;
12910
 
12911
      IF (pvid IS NULL)
12912
      THEN
12913
         RETURN outerrcode;
12914
--         raise_application_error (-20000, 'PvId must be supplied.');
12915
      END IF;
12916
 
12917
      IF (username IS NULL)
12918
      THEN
12919
         RETURN outerrcode;
12920
--         raise_application_error (-20000, 'UserName must be supplied.');
12921
      END IF;
12922
 
12923
      -- Get user_id
12924
      BEGIN
12925
         SELECT usr.user_id
12926
           INTO userid
12927
           FROM users usr
12928
          WHERE UPPER (usr.user_name) = UPPER (username)
12929
            AND usr.is_disabled IS NULL;
12930
      EXCEPTION
12931
         WHEN NO_DATA_FOUND
12932
         THEN
12933
            RETURN outerrcode;
12934
--            raise_application_error (-20000,
12935
--                                        'UserName '
12936
--                                     || username
12937
--                                     || ' is not valid or disabled.'
12938
--                                    );
12939
      END;
12940
 
12941
      OPEN dnr_duplicate_cur;
12942
 
12943
      FETCH dnr_duplicate_cur
12944
       INTO dnr_duplicate_rec;
12945
 
12946
      IF dnr_duplicate_cur%FOUND
12947
      THEN
12948
         outerrcode := 0;
12949
      END IF;
12950
 
12951
      IF dnr_duplicate_cur%NOTFOUND
12952
      THEN
12953
         /* No duplicate recordset */
12954
         unripple_package (pvid, rtagid, userid);
12955
         outerrcode := 0;                            -- Set return to SUCCESS
12956
      END IF;
12957
 
12958
      CLOSE dnr_duplicate_cur;
12959
 
12960
      SELECT pkg_id
12961
        INTO pkgid
12962
        FROM package_versions
12963
       WHERE pv_id = pvid;
12964
 
12965
      DELETE FROM planned_versions
12966
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
12967
 
12968
      RETURN outerrcode;
12969
   END;
12970
 
12971
/*-------------------------------------------------------------------------------------------------------*/
12972
   FUNCTION exclude_indirect_from_build (
12973
      pvid          IN   NUMBER,
12974
      spkgversion   IN   VARCHAR2,
12975
      rtagid        IN   NUMBER,
12976
      username      IN   VARCHAR2,
12977
      rootpvid      IN   NUMBER,
12978
      rootcause     IN   VARCHAR2,
12979
      rootfile      IN   VARCHAR2
12980
   )
12981
      RETURN NUMBER
12982
   IS
12983
      userid              NUMBER;
12984
      outerrcode          NUMBER;
12985
      pkgid               NUMBER;
12986
 
12987
      CURSOR dnr_duplicate_cur
12988
      IS
12989
         SELECT *
12990
           FROM do_not_ripple
12991
          WHERE pv_id = pvid AND rtag_id = rtagid;
12992
 
12993
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
12994
   BEGIN
12995
      outerrcode := -1;       -- Set default return error code to ERROR state
12996
 
12997
      /*--------------- Business Rules Here -------------------*/
12998
      IF (rtagid IS NULL)
12999
      THEN
13000
         RETURN outerrcode;
13001
--         raise_application_error (-20000, 'RtagId must be supplied.');
13002
      END IF;
13003
 
13004
      IF (pvid IS NULL)
13005
      THEN
13006
         RETURN outerrcode;
13007
--         raise_application_error (-20000, 'PvId must be supplied.');
13008
      END IF;
13009
 
13010
      IF (username IS NULL)
13011
      THEN
13012
         RETURN outerrcode;
13013
--         raise_application_error (-20000, 'UserName must be supplied.');
13014
      END IF;
13015
 
13016
      -- Get user_id
13017
      BEGIN
13018
         SELECT usr.user_id
13019
           INTO userid
13020
           FROM users usr
13021
          WHERE UPPER (usr.user_name) = UPPER (username)
13022
            AND usr.is_disabled IS NULL;
13023
      EXCEPTION
13024
         WHEN NO_DATA_FOUND
13025
         THEN
13026
            RETURN outerrcode;
13027
--            raise_application_error (-20000,
13028
--                                        'UserName '
13029
--                                     || username
13030
--                                     || ' is not valid or disabled.'
13031
--                                    );
13032
      END;
13033
 
13034
     /* No duplicate recordset */
13035
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
13036
     outerrcode := 0;                            -- Set return to SUCCESS
13037
 
13038
      SELECT pkg_id
13039
        INTO pkgid
13040
        FROM package_versions
13041
       WHERE pv_id = pvid;
13042
 
13043
      DELETE FROM planned_versions
13044
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
13045
 
13046
      RETURN outerrcode;
13047
   END;
13048
/*-------------------------------------------------------------------------------------------------------*/
13049
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
13050
   IS
13051
   BEGIN
13052
      INSERT INTO abt_action_log
13053
                  (rcon_id, action_datetime, action
13054
                  )
13055
           VALUES (rconid, ora_sysdatetime, action
13056
                  );
13057
   END;
13058
 
13059
/*-------------------------------------------------------------------------------------------------------*/
13060
   FUNCTION insert_package_metrics (
13061
      rtagid                   IN   NUMBER,
13062
      pkgname                  IN   VARCHAR2,
13063
      vext                     IN   VARCHAR2,
13064
      metricstring             IN   VARCHAR2
13065
   )
13066
      RETURN NUMBER
13067
   IS
13068
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
13069
      lv_pvid                  NUMBER                 := 0;
13070
      rownumber                NUMBER;
13071
      rowcontent               VARCHAR2(4000);
13072
      metricname               VARCHAR2(1000);
13073
      metricvalue              VARCHAR2(4000);
13074
      return_insert_error      NUMBER                 := -1;
13075
      return_insert_success    NUMBER                 := 0;
13076
 
13077
      /* Metrics */
13078
      lv_branches                 NUMBER;
13079
      lv_branchlist               VARCHAR2(4000);
13080
      lv_codefiles                NUMBER;
13081
      lv_ignoredfiles             NUMBER;
13082
      lv_directories              NUMBER;
13083
      lv_directorydepth           NUMBER;
13084
      lv_totalfiles               NUMBER;
13085
      lv_makefiles                NUMBER;
13086
      lv_blanklines               NUMBER;
13087
      lv_codelines                NUMBER;
13088
      lv_commentlines             NUMBER;
13089
 
13090
   BEGIN
13091
      /*--------------- Business Rules Here -------------------*/
13092
      IF (rtagid IS NULL)
13093
      THEN
13094
         RETURN return_insert_error;
13095
      END IF;
13096
 
13097
      IF (pkgname IS NULL)
13098
      THEN
13099
         RETURN return_insert_error;
13100
      END IF;
13101
 
13102
      IF (metricstring IS NULL)
13103
      THEN
13104
         RETURN return_insert_error;
13105
      END IF;
13106
 
13107
      BEGIN
13108
         SELECT pv.pv_id
13109
           INTO lv_pvid
13110
           FROM package_versions pv, packages pkg, release_content rc
13111
          WHERE pv.pkg_id = pkg.pkg_id
13112
            AND rc.rtag_id = rtagid
13113
            AND pv.pv_id = rc.pv_id
13114
            AND pkg.pkg_name = pkgname
13115
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
13116
      EXCEPTION
13117
           WHEN NO_DATA_FOUND
13118
           THEN
13119
                lv_pvid := 0;
13120
      END;
13121
 
13122
      citemcollection := in_list_varchar2 (metricstring, ';');
13123
 
13124
      FOR rownumber IN 1 .. citemcollection.COUNT
13125
      LOOP
13126
         rowcontent := citemcollection(rownumber);
13127
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
13128
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
13129
 
13130
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
13131
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
13132
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
13133
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
13134
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
13135
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
13136
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
13137
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
13138
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
13139
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
13140
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
13141
         END IF;
13142
      END LOOP;
13143
 
13144
      IF (lv_pvid > 0)
13145
      THEN
13146
         -- Delete any existing entries for this package version to makes sure our data is untainted
13147
         DELETE FROM package_metrics pm
13148
         WHERE pm.pv_id = lv_pvid;
13149
 
13150
         -- Insert the new data into the metrics table
13151
         INSERT INTO package_metrics
13152
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
13153
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
13154
                     )
13155
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
13156
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
13157
                     );
13158
 
13159
         -- Now update the Release_Metrics Table
13160
         update_release_metrics(rtagid);
13161
 
13162
         RETURN return_insert_success;
13163
      ELSE
13164
         RETURN return_insert_error;
13165
      END IF;
13166
   END;
13167
 
13168
/*-------------------------------------------------------------------------------------------------------*/
13169
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
13170
   IS
13171
      lv_totalpackages       NUMBER;
13172
      lv_autobuilt           NUMBER;
13173
      lv_linesofcode         NUMBER;
13174
      lv_unittested          NUMBER;
13175
      lv_autotested          NUMBER;
13176
      lv_numOfbranches       NUMBER;
13177
      lv_lastbuildtime       DATE;
13178
   BEGIN
13179
      IF (rtagid > 0)
13180
      THEN
13181
         -- Get the total number of packages in this release and the number of
13182
         -- those that are autobuilt
13183
         SELECT COUNT (DISTINCT rc.pv_id),
13184
                COUNT (DISTINCT autobuilt_qry.pv_id)
13185
           INTO lv_totalpackages, lv_autobuilt
13186
           FROM release_content rc,
13187
                package_versions pv,
13188
                (
13189
                 SELECT rc.pv_id
13190
                   FROM release_content rc,
13191
                        package_versions pv
13192
                  WHERE pv.is_autobuildable = 'Y'
13193
                    AND pv.pv_id = rc.pv_id
13194
                    AND rc.rtag_id = rtagid
13195
                ) autobuilt_qry
13196
          WHERE pv.pv_id = rc.pv_id
13197
            AND rc.rtag_id = rtagid
13198
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
13199
 
13200
         -- Get the build time of the last package built in this release and the
13201
         -- total number of lines of code
13202
         SELECT MAX(pm.created_stamp),
13203
                SUM(pm.code_lines)
13204
           INTO lv_lastbuildtime, lv_linesofcode
13205
           FROM package_metrics pm, release_content rc
13206
          WHERE pm.pv_id = rc.pv_id
13207
            AND rc.rtag_id = rtagid;
13208
 
13209
         -- Get the number of packages with unit tests in this release and the
13210
         -- number of those that are autotested
13211
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
13212
           FROM unit_tests ut,
13213
                release_content rc
13214
          WHERE ut.pv_id = rc.pv_id
13215
            AND rc.rtag_id = rtagid
13216
        AND ut.test_types_fk != 1;
13217
 
13218
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
13219
          FROM unit_tests ut,
13220
               release_content rc
13221
         WHERE ut.pv_id = rc.pv_id
13222
           AND rc.rtag_id = rtagid
13223
           AND ut.test_types_fk = 7;
13224
 
13225
 
13226
         -- Count the number of unique branches in the packages in this release.
13227
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
13228
--           FROM (
13229
--                SELECT pv_id,
13230
--                       regexp_substr(str, '[^,]+', 1, level) branch,
13231
--                       level lv,
13232
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
13233
--                  FROM (
13234
--                       SELECT pm.pv_id,
13235
--                              ','||pm.branch_list str
13236
--                         FROM package_metrics pm,
13237
--                              release_content rc
13238
--                        WHERE pm.pv_id = rc.pv_id
13239
--                          AND rc.rtag_id = rtagid
13240
--                       )
13241
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
13242
--                )
13243
--          WHERE lv != lg;
13244
 
13245
         UPDATE release_metrics rm
13246
            SET rm.total_packages = lv_totalpackages,
13247
                rm.autobuilt = lv_autobuilt,
13248
                rm.lines_of_code = lv_linesofcode,
13249
                rm.unit_tested = lv_unittested,
13250
                rm.autotested = lv_autotested,
13251
--                rm.branches = lv_numOfbranches,
13252
                rm.last_build_time = lv_lastbuildtime
13253
          WHERE rtag_id = rtagid;
13254
 
13255
         IF (SQL%ROWCOUNT = 0)
13256
         THEN
13257
            INSERT INTO release_metrics
13258
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
13259
                         autotested, last_build_time
13260
                        )
13261
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
13262
                         lv_autotested, lv_lastbuildtime
13263
                        );
13264
         END IF;
13265
--         IF (SQL%ROWCOUNT = 0)
13266
--         THEN
13267
--            INSERT INTO release_metrics
13268
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
13269
--                         autotested, branches, last_build_time
13270
--                        )
13271
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
13272
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
13273
--                        );
13274
--         END IF;
13275
--      ELSE
13276
--         raise_application_error (-20000, 'RtagId must be supplied.');
13277
      END IF;
13278
   END;
13279
/*-------------------------------------------------------------------------------------------------------*/
13280
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
13281
   IS
13282
      vcstypeid    NUMBER;
13283
      vcstag       VARCHAR2(32);
13284
      label        VARCHAR2(60);
13285
      srcpath      VARCHAR2(2000);
13286
      vcstypeid_cc NUMBER;
13287
      vcstypeid_uc NUMBER;
13288
   BEGIN
13289
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
13290
      -- what the primary key value is for the ClearCase VCS entry.
13291
      BEGIN
13292
         SELECT vt.vcs_type_id
13293
         INTO vcstypeid_cc
13294
         FROM VCS_TYPE vt
13295
         WHERE vt.tag = 'CC';
13296
         EXCEPTION
13297
            WHEN NO_DATA_FOUND THEN
13298
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
13299
      END;
13300
 
13301
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
13302
      -- what the primary key value is for the Uncontrolled VCS entry.
13303
      BEGIN
13304
         SELECT vt.vcs_type_id
13305
         INTO vcstypeid_uc
13306
         FROM VCS_TYPE vt
13307
         WHERE vt.tag = 'UC';
13308
         EXCEPTION
13309
            WHEN NO_DATA_FOUND THEN
13310
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
13311
      END;
13312
 
13313
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
13314
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
13315
      BEGIN
13316
         SELECT pv.pkg_label, pv.src_path,
13317
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
13318
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
13319
                 ELSE pv.vcs_type_id END) AS vcs_type_id
13320
         INTO label, srcpath, vcstypeid
13321
         FROM PACKAGE_VERSIONS pv
13322
         WHERE pv.pv_id = pvid;
13323
         EXCEPTION
13324
            WHEN NO_DATA_FOUND THEN
13325
               raise_application_error (-20000, 'Package Version Not Found!');
13326
      END;
13327
 
13328
      -- Get the VCS TAG for the VCS_TYPE_ID.
13329
      BEGIN
13330
         SELECT vt.tag
13331
         INTO vcstag
13332
         FROM VCS_TYPE vt
13333
         WHERE vt.vcs_type_id = vcstypeid;
13334
         EXCEPTION
13335
            WHEN NO_DATA_FOUND THEN
13336
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
13337
      END;
13338
 
13339
      -- Return value depending upon which VCS Tag is being used.
13340
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
13341
      CASE vcstag
13342
         WHEN 'CC' THEN
13343
            RETURN vcstag || '::' || srcpath || '::' || label;
13344
         WHEN 'SVN' THEN
13345
            RETURN vcstag || '::' || srcpath;
13346
         ELSE
13347
            RETURN vcstag || '::';
13348
      END CASE;
13349
 
13350
   END;
13351
/*-------------------------------------------------------------------------------------------------------*/
13352
 
13353
END pk_rmapi_test;
13354
 
13355
/
13356
 
13357
/
13358
--------------------------------------------------------
13359
--  DDL for Package Body PK_WORK_IN_PROGRESS
13360
--------------------------------------------------------
13361
 
3959 dpurdie 13362
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 13363
 
13364
/*
13365
------------------------------
13366
||  Last Modified:  S.Vukovic
3959 dpurdie 13367
||  Modified Date:  2/May/2005
1373 dpurdie 13368
||  Body Version:   1.0
13369
------------------------------
13370
*/
13371
 
13372
 
13373
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13374
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 13375
 
3959 dpurdie 13376
	oldPvId NUMBER;
13377
	ReleaseLocation VARCHAR2(4000);
13378
	sLocation VARCHAR2(4000) := NULL;
1373 dpurdie 13379
 
3959 dpurdie 13380
 
1373 dpurdie 13381
BEGIN
13382
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 13383
	/*-------------------------------------------------------*/
1373 dpurdie 13384
 
3959 dpurdie 13385
	BEGIN
13386
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
13387
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
13388
		  FROM WORK_IN_PROGRESS wip,
13389
		  	   RELEASE_TAGS rt,
13390
			   PROJECTS proj
13391
		 WHERE wip.PV_ID = newPvId
13392
		   AND wip.RTAG_ID = rt.RTAG_ID
13393
		   AND rt.OFFICIAL != 'Y'
13394
		   AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 13395
 
3959 dpurdie 13396
		EXCEPTION
13397
	    	WHEN NO_DATA_FOUND THEN
13398
	       		sLocation := NULL;
13399
 
13400
	END;	   	   
1373 dpurdie 13401
 
13402
 
13403
 
3959 dpurdie 13404
	IF (sLocation IS NULL)  THEN
1373 dpurdie 13405
 
3959 dpurdie 13406
		-- Add to "Work in progress"
13407
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
13408
		VALUES( RtagId, newPvId, ViewId );
13409
 
13410
 
13411
	    /* LOG ACTION */
13412
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13413
		  FROM PROJECTS proj,
13414
		  	   RELEASE_TAGS rt
13415
		 WHERE rt.PROJ_ID = proj.PROJ_ID
13416
		   AND rt.RTAG_ID = RtagId;
13417
 
13418
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
13419
 
13420
	ELSE
13421
 
13422
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
13423
 
1373 dpurdie 13424
	END IF;
13425
 
3959 dpurdie 13426
END;
13427
/*-------------------------------------------------------------------------------------------------------*/
13428
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 13429
 
3959 dpurdie 13430
	ReleaseLocation VARCHAR2(4000);
1373 dpurdie 13431
 
3959 dpurdie 13432
BEGIN
13433
 
13434
	/*--------------- Business Rules Here -------------------*/
1373 dpurdie 13435
	/*-------------------------------------------------------*/
13436
 
13437
 
3959 dpurdie 13438
	-- Get release location for logging pusposes
13439
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13440
	  FROM PROJECTS proj,
13441
	  	   RELEASE_TAGS rt
13442
	 WHERE rt.PROJ_ID = proj.PROJ_ID
13443
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 13444
 
13445
 
3959 dpurdie 13446
	-- Delete from Work In Progress
13447
	DELETE
13448
	  FROM WORK_IN_PROGRESS wip
13449
	 WHERE wip.RTAG_ID = RtagId
13450
	   AND wip.PV_ID = PvId;
1373 dpurdie 13451
 
3959 dpurdie 13452
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 13453
 
3959 dpurdie 13454
 
13455
 
13456
 
1373 dpurdie 13457
END;
13458
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13459
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 13460
 
3959 dpurdie 13461
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
13462
	ReleaseLocation VARCHAR2(4000);
13463
	PvId NUMBER;
1373 dpurdie 13464
 
13465
BEGIN
3959 dpurdie 13466
 
1373 dpurdie 13467
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 13468
	IF (PvIdList IS NULL)
13469
	THEN
13470
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
13471
	END IF;
1373 dpurdie 13472
	/*-------------------------------------------------------*/
13473
 
13474
 
3959 dpurdie 13475
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
1373 dpurdie 13476
 
13477
 
3959 dpurdie 13478
	-- Get release location for logging pusposes
13479
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13480
	  FROM PROJECTS proj,
13481
	  	   RELEASE_TAGS rt
13482
	 WHERE rt.PROJ_ID = proj.PROJ_ID
13483
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 13484
 
3959 dpurdie 13485
 
13486
	FOR i IN 1..nIdCollector.COUNT
13487
	LOOP
13488
		PvId := nIdCollector(i);
13489
 
13490
		-- Delete from Work In Progress
13491
		DELETE
13492
		  FROM WORK_IN_PROGRESS wip
13493
		 WHERE wip.RTAG_ID = RtagId
13494
		   AND wip.PV_ID = PvId;
13495
 
13496
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
13497
 
13498
	END LOOP;
13499
 
13500
 
1373 dpurdie 13501
END;
13502
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13503
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
13504
 
13505
	ReturnValue NUMBER;
13506
 
1373 dpurdie 13507
BEGIN
3959 dpurdie 13508
	SELECT wip.VIEW_ID INTO ReturnValue
13509
	  FROM WORK_IN_PROGRESS wip
13510
	 WHERE wip.RTAG_ID = RtagId
13511
	   AND wip.PV_ID = PvId;
1373 dpurdie 13512
 
3959 dpurdie 13513
	RETURN ReturnValue;
1373 dpurdie 13514
END;
13515
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13516
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
13517
 
13518
	IsBaseView CHAR(1);
13519
 
1373 dpurdie 13520
BEGIN
13521
 
3959 dpurdie 13522
	-- Check if the view is BASE VIEW
13523
	SELECT vi.BASE_VIEW INTO IsBaseView
13524
	  FROM VIEWS vi
13525
	 WHERE vi.VIEW_ID = ViewId;
13526
 
13527
	IF (IsBaseView = 'Y') THEN 
13528
		-- Get Base view content
13529
		OPEN RecordSet FOR
13530
		SELECT 0 AS PKG_STATE,
13531
			   NULL AS DEPRECATED_STATE,
13532
			   pv.pv_id, 
13533
			   pkg.pkg_name, 
13534
			   pv.pkg_version, 
13535
			   pv.dlocked, 
13536
			   pv.pv_description,
13537
			   pv.BUILD_TYPE
13538
		  FROM WORK_IN_PROGRESS rel,
13539
		       packages pkg,
13540
		       package_versions pv
13541
		 WHERE pv.pkg_id = pkg.pkg_id
13542
		   AND rel.pv_id = pv.pv_id
13543
		   AND rel.VIEW_ID = ViewId
13544
		   AND rel.RTAG_ID = RtagId
13545
		 ORDER BY UPPER(pkg.PKG_NAME);
13546
 
1373 dpurdie 13547
 
3959 dpurdie 13548
	ELSE	 
1373 dpurdie 13549
 
3959 dpurdie 13550
	 	-- Get non base view content
13551
		OPEN RecordSet FOR
13552
		SELECT 0 AS PKG_STATE,
13553
			   NULL AS DEPRECATED_STATE,
13554
			   pv.pv_id, 
13555
			   pkg.pkg_name, 
13556
			   pv.pkg_version, 
13557
			   pv.dlocked, 
13558
			   pv.pv_description,
13559
			   pv.BUILD_TYPE
13560
		  FROM WORK_IN_PROGRESS rel,
13561
		       packages pkg,
13562
		       package_versions pv,
13563
			   VIEW_DEF vd
13564
		 WHERE pv.pkg_id = pkg.pkg_id
13565
		   AND rel.pv_id = pv.pv_id
13566
		   AND vd.VIEW_ID = ViewId
13567
		   AND vd.PKG_ID = pv.PKG_ID
13568
		   AND rel.RTAG_ID = RtagId
13569
		 ORDER BY UPPER(pkg.PKG_NAME);
1373 dpurdie 13570
 
3959 dpurdie 13571
 
13572
	END IF;	 	
13573
 
13574
 
1373 dpurdie 13575
END;
13576
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13577
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
13578
 
1373 dpurdie 13579
BEGIN
13580
 
3959 dpurdie 13581
	UPDATE WORK_IN_PROGRESS wip SET
13582
	wip.VIEW_ID = NewViewId
13583
	WHERE wip.PV_ID = PvId
13584
	  AND wip.RTAG_ID = RtagId;
13585
 
1373 dpurdie 13586
END;
13587
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 13588
END PK_WORK_IN_PROGRESS;
4040 dpurdie 13589
 
3959 dpurdie 13590
/
1373 dpurdie 13591
 
4040 dpurdie 13592
/
13593
--------------------------------------------------------
13594
--  DDL for Package Body RM_ISSUES
13595
--------------------------------------------------------
13596
 
3959 dpurdie 13597
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
1373 dpurdie 13598
 
3959 dpurdie 13599
-- Private Implementation -----------------------------------------------------
1373 dpurdie 13600
 
13601
 
3959 dpurdie 13602
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
13603
	AS
1373 dpurdie 13604
 
3959 dpurdie 13605
	BEGIN
13606
		-- start boundary case
13607
		IF ( XXstart < XX ) THEN
13608
			RETURN 1;
1373 dpurdie 13609
 
3959 dpurdie 13610
		ELSIF ( XXstart = XX ) THEN
1373 dpurdie 13611
 
3959 dpurdie 13612
			-- need to consider YY
13613
			IF ( YYstart < YY ) THEN
13614
				RETURN 1;
1373 dpurdie 13615
 
3959 dpurdie 13616
			ELSIF ( YYstart = YY ) THEN
1373 dpurdie 13617
 
3959 dpurdie 13618
					-- need to consider ZZ
13619
					IF ( ZZstart <= ZZ ) THEN
13620
						RETURN 1;
13621
 
13622
					ELSE
13623
						RETURN 0;
13624
					END IF;
13625
 
13626
			ELSE
13627
				RETURN 0;
13628
			END IF;
13629
		ELSE
13630
			RETURN 0;
13631
		END IF;
13632
	EXCEPTION
13633
		WHEN OTHERS THEN
13634
			RETURN -1;
13635
	END;
13636
 
13637
 
13638
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
13639
	AS
13640
 
13641
	BEGIN
13642
		-- end boundary case
13643
		IF ( XX < XXend ) THEN
13644
			RETURN 1;
13645
 
13646
		ELSIF ( XX = XXend ) THEN
13647
 
13648
			-- need to consider YY
13649
			IF ( YY < YYend ) THEN
13650
				RETURN 1;
13651
 
13652
			ELSIF ( YY = YYend ) THEN
13653
 
13654
					-- need to consider ZZ
13655
					IF ( ZZ <= ZZend ) THEN
13656
						RETURN 1;
13657
 
13658
					ELSE
13659
						RETURN 0;
13660
					END IF;
13661
			ELSE
13662
 
13663
				RETURN 0;
13664
			END IF;
13665
		ELSE
13666
			RETURN 0;
13667
		END IF;
13668
	EXCEPTION
13669
		WHEN OTHERS THEN
13670
			RETURN -1;
13671
	END;
13672
 
13673
	/*
13674
	-	version format:		XX.YY.ZZ.abc
13675
	*/
13676
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
13677
	AS
13678
		XXstart		NUMBER	:=	0;
13679
		XXend		NUMBER	:=	0;
13680
		XX			NUMBER	:=	0;
13681
		YYstart		NUMBER	:=	0;
13682
		YYend		NUMBER	:=	0;
13683
		YY			NUMBER	:=	0;
13684
		ZZstart		NUMBER	:=	0;
13685
		ZZend		NUMBER	:=	0;
13686
		ZZ			NUMBER	:=	0;
13687
		first_dot	NUMBER	:=	0;
13688
		second_dot	NUMBER	:=	0;
13689
		third_dot	NUMBER	:=	0;
13690
 
13691
		ProjExtstart	VARCHAR2(10);
13692
		ProjExtend		VARCHAR2(10);
13693
		ProjExt			VARCHAR2(10);
13694
 
13695
	BEGIN
13696
		-- strip the version number
13697
		first_dot :=  INSTR(version_start, '.', 1, 1);
13698
		second_dot :=  INSTR(version_start, '.', 1, 2);
13699
		third_dot :=  INSTR(version_start, '.', 1, 3);
13700
 
13701
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
13702
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
13703
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
13704
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
13705
 
13706
		first_dot :=  INSTR(version_end, '.', 1, 1);
13707
		second_dot :=  INSTR(version_end, '.', 1, 2);
13708
		third_dot :=  INSTR(version_end, '.', 1, 3);
13709
 
13710
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
13711
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
13712
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
13713
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
13714
 
13715
		first_dot :=  INSTR(version, '.', 1, 1);
13716
		second_dot :=  INSTR(version, '.', 1, 2);
13717
		third_dot :=  INSTR(version, '.', 1, 3);
13718
 
13719
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
13720
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
13721
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
13722
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
13723
 
13724
		-- only include versions if all project extensions are the same
13725
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
13726
 
13727
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
13728
				RETURN 1;
13729
			ELSE
13730
				RETURN 0;
13731
			END IF;
13732
		ELSE
13733
			RETURN 0;
13734
		END IF;
13735
 
13736
	EXCEPTION
13737
		WHEN OTHERS THEN
13738
			RETURN -1;
13739
	END;
13740
 
13741
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
13742
	AS
13743
	    pkg_id NUMBER;
13744
	BEGIN
13745
		SELECT
13746
			p.PKG_ID
13747
		INTO
13748
			pkg_id
13749
		FROM
13750
			PACKAGES p
13751
		WHERE
13752
			p.PKG_NAME = pkgName;
13753
 
13754
		RETURN pkg_id;
13755
	EXCEPTION
13756
	    WHEN OTHERS THEN
13757
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
13758
			RETURN -1;
13759
	END;
13760
 
13761
 
13762
-- Public Implementation ------------------------------------------------------
13763
 
13764
	/*
13765
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
13766
	--
13767
	-- INPUT PARAMETERS:
13768
	--
13769
	--		pkg_name  	-  	The name of the top level package to get issues for
13770
	--		version_start	-	The start version for the comparison
13771
	--		version_end	-	The end version for the comparison
13772
	*/
13773
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
13774
	AS
13775
		pkgId	NUMBER;
13776
	BEGIN
13777
		-- get pkg_id of the input package:
13778
		pkgId := GetPkgId( pkg_name );
13779
 
13780
		OPEN vCursor FOR
13781
		SELECT
13782
			  pv.PKG_ID,
13783
			  pv.PKG_VERSION,
13784
			  pv.PV_ID,
13785
			  i_pkg.ISS_ID,
13786
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
13787
			  pd.DPKG_ID,
13788
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
13789
			  pd.DPV_ID,
13790
			  i_dpkg.ISS_ID AS ISSUE_ID
13791
		FROM
13792
			 PACKAGE_VERSIONS pv
13793
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
13794
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
13795
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
13796
		WHERE
13797
   			 pv.PKG_ID = pkgId
13798
		AND
13799
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
13800
		AND
13801
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
13802
		ORDER BY
13803
			 pv.PKG_ID,
13804
			 pv.PV_ID,
13805
			 pd.DPKG_ID,
13806
			 pd.DPV_ID;
13807
	EXCEPTION
13808
		WHEN OTHERS THEN
13809
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
13810
	END;
13811
 
13812
 
13813
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
13814
 
13815
	/*
13816
	-- Proc: LoadIssuesTable
13817
	--
13818
	-- Populates Package_Issues table with details of issues from all dependent packages.
13819
	-- This will be for all package versions of the input pkg_name between the
13820
	-- version_start and version_end.
13821
	--
13822
	-- INPUT PARAMETERS:
13823
	--
13824
	--		pkg_name  	-  	The name of the top level package to get issues for
13825
	--		version_start	-	The start version for the comparison
13826
	--		version_end	-	The end version for the comparison
13827
	*/
13828
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
13829
	AS
13830
		pkgId	NUMBER;
13831
 
13832
		CURSOR pack_vers_cur IS
13833
			SELECT
13834
				pv.PV_ID,
13835
				pv.PKG_VERSION,
13836
				pv.PKG_ID,
13837
				p.PKG_NAME
13838
			FROM
13839
				PACKAGE_VERSIONS pv
13840
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13841
			WHERE
13842
   				 pv.PKG_ID = pkgId
13843
			AND
13844
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
13845
 
13846
	BEGIN
13847
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13848
 
13849
		-- get the pkg_id we are finding issues for
13850
		pkgId := GetPkgId( pkg_name );
13851
 
13852
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
13853
		FOR pack_ver_rec IN  pack_vers_cur
13854
		LOOP
13855
			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 );
13856
			COMMIT;
13857
		END LOOP;
13858
 
13859
		-- The output cursor - shows the individual versions of the top level package then were reported on
13860
		OPEN vCursor FOR
13861
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13862
/*removed
13863
		SELECT
13864
			PKG_VERSION
13865
		FROM
13866
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
13867
*/
13868
 
13869
 
13870
	EXCEPTION
13871
		WHEN OTHERS THEN
13872
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
13873
	END;
13874
 
13875
 
13876
	/*
13877
	-- Proc: InsertIssuesForDepends
13878
	--
13879
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
13880
	--
13881
	-- INPUT PARAMETERS:
13882
	--
13883
	--		pvID  		-  	The package version id of the package to get issues for
13884
	--		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)
13885
	--		top_pkgName -  	The package name of the top level package
13886
	--		top_pvID  	-  	The package version id of the top level package
13887
	--		top_pkgVer  -  	The package version description of the top level package
13888
	*/
13889
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
13890
	AS
13891
		pkgId		NUMBER;
13892
		issCnt		NUMBER := 0;
13893
		pkgCheck	NUMBER := 0;
13894
		depCheck	NUMBER := 0;
13895
 
13896
		dpkgName	VARCHAR(50);
13897
		dpkgVersion	VARCHAR(50);
13898
 
13899
		CURSOR dep_packs_cur IS
13900
			SELECT
13901
				DPV_ID
13902
			FROM
13903
				PACKAGE_DEPENDENCIES
13904
			WHERE
13905
				PV_ID = pvID;
13906
 
13907
	BEGIN
13908
 
13909
		-- check to see if the package has been processed previously
13910
		SELECT
13911
			COUNT(*)
13912
		INTO
13913
			pkgCheck
13914
		FROM
13915
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13916
		WHERE
13917
			DPV_ID = pvID;
13918
 
13919
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
13920
 
13921
		-- Package not already processed (no cyclic dependency) - process it
13922
		IF ( pkgCheck = 0 ) THEN
13923
 
13924
			-- check to see if this package version has any issues assigned to it
13925
			SELECT
13926
				COUNT(*)
13927
			INTO
13928
				issCnt
13929
			FROM
13930
				CQ_ISSUES i
13931
			WHERE
13932
				i.PV_ID = pvID;
13933
 
13934
			dbms_output.put_line('issCnt: ' || issCnt );
13935
 
13936
			-- Always enter a marker row into the table even if there are no issues for the package.
13937
			-- This allows us to pick up any cyclic dependencies.
13938
			IF ( issCnt > 0 ) THEN
13939
				-- get issues and insert into RM_PACKAGE_ISSUES
13940
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13941
 
13942
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
13943
					SELECT DISTINCT
13944
						top_pkgID		AS PKG_ID,
13945
						top_pkgName		AS PKG_NAME,
13946
						top_pvID		AS PV_ID,
13947
						top_pkgVer		AS PKG_VERSION,
13948
						pv.PV_ID		AS DPV_ID,
13949
						p.PKG_NAME		AS DPKG_NAME,
13950
						pv.PKG_VERSION	AS DPKG_VERSION,
13951
						ci.ISS_DB,
13952
						ci.ISS_ID
13953
					FROM
13954
						PACKAGE_VERSIONS pv
13955
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13956
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
13957
					WHERE
13958
						pv.PV_ID = pvID;
13959
 
13960
			ELSE
13961
				-- get the dpkg details - there will always be a row returned here
13962
				SELECT
13963
					p.PKG_NAME
13964
				INTO
13965
					dpkgName
13966
				FROM
13967
					PACKAGE_VERSIONS pv
13968
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13969
				WHERE
13970
	   				 pv.PV_ID = pvID;
13971
 
13972
				SELECT
13973
					pv.PKG_VERSION
13974
				INTO
13975
					dpkgVersion
13976
				FROM
13977
					PACKAGE_VERSIONS pv
13978
				WHERE
13979
	   				 pv.PV_ID = pvID;
13980
 
13981
				-- enter a marker row
13982
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13983
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
13984
				VALUES (
13985
					top_pkgID,
13986
					top_pkgName,
13987
					top_pvID,
13988
					top_pkgVer,
13989
					pvID,
13990
					dpkgName,
13991
					dpkgVersion,
13992
					NULL,
13993
					NULL );
13994
 
13995
			END IF;
13996
 
13997
			-- If this package version has dependencies then recurse
13998
			SELECT
13999
				COUNT(*)
14000
			INTO
14001
				depCheck
14002
			FROM
14003
				PACKAGE_DEPENDENCIES
14004
			WHERE
14005
				PV_ID = pvID;
14006
 
14007
			IF ( depCheck > 0 ) THEN
14008
				-- get dependencies and call this function recursively for each one
14009
				FOR dep_rec IN  dep_packs_cur
14010
				LOOP
14011
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
14012
				END LOOP;
14013
 
14014
			END IF;
14015
 
14016
		END IF;
14017
 
14018
	/*EXCEPTION
14019
		WHEN OTHERS THEN
14020
			no exception handling required
14021
	*/
14022
	END;
14023
 
14024
END Rm_Issues;
4040 dpurdie 14025
 
1374 dpurdie 14026
/
1373 dpurdie 14027
 
4040 dpurdie 14028
/
14029
--------------------------------------------------------
14030
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
14031
--------------------------------------------------------
14032
set define off;
14033
 
1373 dpurdie 14034
  CREATE OR REPLACE PROCEDURE "ADD_AUTOBUILD_FAILURE_INFO" (
14035
   nprojid     IN   NUMBER,
14036
   nviewid     IN   NUMBER,
14037
   suserlist   IN   VARCHAR2
14038
)
14039
IS
14040
   groupid   NUMBER;
14041
/******************************************************************************
14042
   NAME:       ADD_AUTOBUILD_FAILURE
14043
   PURPOSE:
14044
 
14045
   REVISIONS:
14046
   Ver        Date        Author           Description
14047
   ---------  ----------  ---------------  ------------------------------------
14048
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
14049
 
14050
   NOTES:
14051
 
14052
   Automatically available Auto Replace Keywords:
14053
      Object Name:     ADD_AUTOBUILD_FAILURE
14054
      Sysdate:         11/04/2006
14055
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
14056
      Username:         (set in TOAD Options, Procedure Editor)
14057
      Table Name:       (set in the "New PL/SQL Object" dialog)
14058
 
14059
******************************************************************************/
14060
BEGIN
14061
   BEGIN
14062
      SELECT group_email_id
14063
        INTO groupid
14064
        FROM autobuild_failure
14065
       WHERE proj_id = nprojid AND view_id = nviewid;
14066
   EXCEPTION
14067
      WHEN NO_DATA_FOUND
14068
      THEN
14069
         --  Create Next Sequence Id ---
14070
         SELECT seq_group_email_id.NEXTVAL
14071
           INTO groupid
14072
           FROM DUAL;
14073
 
14074
         INSERT INTO autobuild_failure
14075
                     (group_email_id, proj_id, view_id
14076
                     )
14077
              VALUES (groupid, nprojid, nviewid
14078
                     );
14079
   END;
14080
 
14081
   add_view_members (groupid, suserlist);
14082
END add_autobuild_failure_info;
4040 dpurdie 14083
 
1374 dpurdie 14084
/
1373 dpurdie 14085
 
4040 dpurdie 14086
/
14087
--------------------------------------------------------
14088
--  DDL for Procedure ADD_COMPONENT
14089
--------------------------------------------------------
14090
set define off;
14091
 
3959 dpurdie 14092
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
14093
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
14094
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
14095
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
14096
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
14097
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
14098
                                           ) IS
14099
/* ---------------------------------------------------------------------------
14100
    Version: 3.0.0
14101
   --------------------------------------------------------------------------- */
1373 dpurdie 14102
 
14103
 
14104
BEGIN
14105
 
3959 dpurdie 14106
	 --- Insert into RELEASE_COMPONENTS
14107
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
14108
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
1373 dpurdie 14109
 
14110
 
3959 dpurdie 14111
 
14112
 
14113
END Add_Component;
4040 dpurdie 14114
 
1374 dpurdie 14115
/
1373 dpurdie 14116
 
4040 dpurdie 14117
/
14118
--------------------------------------------------------
14119
--  DDL for Procedure ADD_PACKAGE_INTEREST
14120
--------------------------------------------------------
14121
set define off;
14122
 
3959 dpurdie 14123
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
14124
	   	  		  								  nPkgIdList IN VARCHAR2,
14125
												  nUserId IN NUMBER
14126
	   	  		  								  ) IS
1373 dpurdie 14127
 
3959 dpurdie 14128
/******************************************************************************
14129
   NAME:       ADD_PACKAGE_INTEREST
14130
   PURPOSE:    
1373 dpurdie 14131
 
3959 dpurdie 14132
   REVISIONS:
14133
   Ver        Date        Author           Description
14134
   ---------  ----------  ---------------  ------------------------------------
14135
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
14136
 
14137
   NOTES:
14138
 
14139
   Automatically available Auto Replace Keywords:
14140
      Object Name:     ADD_PACKAGE_INTEREST
14141
      Sysdate:         12/05/2006
14142
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
14143
      Username:         (set in TOAD Options, Procedure Editor)
14144
      Table Name:       (set in the "New PL/SQL Object" dialog)
14145
 
14146
******************************************************************************/
14147
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
14148
   nPkgId NUMBER;
1373 dpurdie 14149
BEGIN
14150
 
3959 dpurdie 14151
	 npkgidcollector := in_list_number2 (nPkgIdList);
14152
 
14153
	FOR i IN 1..npkgidcollector.COUNT
14154
	LOOP
14155
		nPkgId := npkgidcollector(i);
1373 dpurdie 14156
 
3959 dpurdie 14157
	 --- Insert into PACKAGE_INTEREST TABLE
14158
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
14159
	 VALUES(nProjId, nPkgId, nUserId);
14160
	END LOOP;	 
14161
 
1373 dpurdie 14162
 
3959 dpurdie 14163
END ADD_PACKAGE_INTEREST;
4040 dpurdie 14164
 
3959 dpurdie 14165
/
1373 dpurdie 14166
 
4040 dpurdie 14167
/
14168
--------------------------------------------------------
14169
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
14170
--------------------------------------------------------
14171
set define off;
14172
 
3959 dpurdie 14173
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
14174
	   	  		  								  nPkgIdList IN VARCHAR2,
14175
												  nUserId IN NUMBER
14176
	   	  		  								  ) IS
1373 dpurdie 14177
 
3959 dpurdie 14178
/******************************************************************************
14179
   NAME:       ADD_PACKAGE_INTEREST
14180
   PURPOSE:    
14181
 
14182
   REVISIONS:
14183
   Ver        Date        Author           Description
14184
   ---------  ----------  ---------------  ------------------------------------
14185
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
14186
 
14187
   NOTES:
14188
 
14189
   Automatically available Auto Replace Keywords:
14190
      Object Name:     ADD_PACKAGE_INTEREST
14191
      Sysdate:         12/05/2006
14192
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
14193
      Username:         (set in TOAD Options, Procedure Editor)
14194
      Table Name:       (set in the "New PL/SQL Object" dialog)
14195
 
14196
******************************************************************************/
14197
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
14198
   nPkgId NUMBER;
14199
BEGIN
14200
 
14201
	 npkgidcollector := in_list_number2 (nPkgIdList);
14202
 
14203
	FOR i IN 1..npkgidcollector.COUNT
14204
	LOOP
14205
		nPkgId := npkgidcollector(i);
14206
 
14207
	 --- Insert into PACKAGE_INTEREST TABLE
14208
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
14209
	 VALUES(nProjId, nPkgId, nUserId);
14210
	END LOOP;	 
14211
 
14212
 
14213
END ADD_PACKAGE_INTEREST_TEST;
4040 dpurdie 14214
 
1374 dpurdie 14215
/
1373 dpurdie 14216
 
4040 dpurdie 14217
/
14218
--------------------------------------------------------
14219
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
14220
--------------------------------------------------------
14221
set define off;
14222
 
3959 dpurdie 14223
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
14224
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
14225
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
14226
                                                     NNuser_id IN NUMBER
14227
                                                    ) IS
1373 dpurdie 14228
/* ---------------------------------------------------------------------------
3959 dpurdie 14229
    Version: 3.1
1373 dpurdie 14230
   --------------------------------------------------------------------------- */
14231
 
3959 dpurdie 14232
    retRTD_ID NUMBER;
14233
 
14234
	CURSOR rtd_cur IS
14235
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
14236
    rtd_rec rtd_cur%ROWTYPE;
14237
 
1373 dpurdie 14238
BEGIN
3959 dpurdie 14239
    --- Seed database with package_name and version if required ---
14240
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 14241
 
3959 dpurdie 14242
	OPEN rtd_cur;
14243
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 14244
 
3959 dpurdie 14245
    IF rtd_cur%NOTFOUND
14246
    THEN
14247
		/* Make sure it does not exists already as runtime dependency */
1373 dpurdie 14248
 
3959 dpurdie 14249
		--- Add new Runtime Dependency ---
14250
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
14251
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
1373 dpurdie 14252
 
3959 dpurdie 14253
    	/* LOG ACTION */
14254
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
14255
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
14256
 
14257
	END IF;
14258
 
14259
 
14260
END Add_Runtime_Dependency;
4040 dpurdie 14261
 
1374 dpurdie 14262
/
1373 dpurdie 14263
 
4040 dpurdie 14264
/
14265
--------------------------------------------------------
14266
--  DDL for Procedure ADD_VIEW_MEMBERS
14267
--------------------------------------------------------
14268
set define off;
14269
 
3959 dpurdie 14270
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
14271
 
14272
/******************************************************************************
14273
   NAME:       ADD_VIEW_MEMBERS
14274
   PURPOSE:    
14275
 
14276
   REVISIONS:
14277
   Ver        Date        Author           Description
14278
   ---------  ----------  ---------------  ------------------------------------
14279
   1.0        11/04/2006          1. Created this procedure.
14280
 
14281
   NOTES:
14282
 
14283
   Automatically available Auto Replace Keywords:
14284
      Object Name:     ADD_VIEW_MEMBERS
14285
      Sysdate:         11/04/2006
14286
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
14287
      Username:         (set in TOAD Options, Procedure Editor)
14288
      Table Name:       (set in the "New PL/SQL Object" dialog)
14289
 
14290
******************************************************************************/
14291
CURSOR user_cur IS
14292
	SELECT u.USER_ID
14293
	  FROM USERS u
14294
	 WHERE u.USER_ID IN (
14295
	 	   			   	SELECT * 
14296
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
14297
						);
14298
user_rec user_cur%ROWTYPE;
14299
 
14300
 
14301
BEGIN
14302
 
14303
	 OPEN user_cur;
14304
	 FETCH user_cur INTO user_rec;
14305
 
14306
	 WHILE user_cur%FOUND
14307
	 LOOP
14308
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
14309
	 	 VALUES ( nGroupId, user_rec.USER_ID);
14310
 
14311
	 	 FETCH user_cur INTO user_rec;	 
14312
	 END LOOP;	 
14313
 
14314
 
14315
 
14316
END ADD_VIEW_MEMBERS;
4040 dpurdie 14317
 
1374 dpurdie 14318
/
1373 dpurdie 14319
 
4040 dpurdie 14320
/
14321
--------------------------------------------------------
14322
--  DDL for Procedure BASIC_CLONE
14323
--------------------------------------------------------
14324
set define off;
14325
 
1373 dpurdie 14326
  CREATE OR REPLACE PROCEDURE "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
14327
                        nTOpv_id IN NUMBER,
14328
                        nRtag_id IN NUMBER,
14329
                        nUser_id IN NUMBER,
14330
                        nTOpkg_id IN NUMBER DEFAULT NULL,
14331
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
14332
 
14333
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
14334
   major NUMBER;
14335
   minor NUMBER;
14336
   patch NUMBER;
14337
   buildn NUMBER;
14338
   from_vcs_type_id NUMBER;
14339
BEGIN
14340
------------------------------ Version Control System ------------------------------------------
14341
   SELECT vcs_type_id
14342
      INTO from_vcs_type_id
14343
      FROM package_versions WHERE pv_id = nFROMpv_id;
14344
 
14345
   UPDATE package_versions
14346
      SET vcs_type_id = from_vcs_type_id
14347
      WHERE pv_id = nTOpv_id;
14348
------------------------------------- Limits ---------------------------------------------------
14349
   select major_limit, minor_limit, patch_limit, build_number_limit
14350
   into major, minor, patch, buildn
14351
   from package_versions where pv_id=nFROMpv_id;
14352
    UPDATE package_versions SET
14353
           major_limit = major,
14354
           minor_limit = minor,
14355
           patch_limit = patch,
14356
           build_number_limit = buildn
14357
     WHERE PV_ID = nTOpv_id;
14358
------------------------------------- Clone Dependencies ---------------------------------------------------
14359
   IF NOT nRtag_id IS NULL
14360
   THEN
14361
      -- Auto Update Dependencies --
14362
      INSERT INTO PACKAGE_DEPENDENCIES
14363
           SELECT nTOpv_id AS pv_id,
14364
                  DECODE(nUser_id,
14365
                         frc.modifier_id,
14366
                         frc.pv_id,
14367
                         DECODE(frc.dlocked,
14368
                                'Y',
14369
                                frc.pv_id,
14370
                                dep.dpv_id)
14371
                         ) AS dpv_id,
14372
                  nTOpkg_id AS pkg_id,
14373
                  dep.dpkg_id,
14374
                  dep.build_type,
14375
                  dep.display_order
14376
             FROM PACKAGE_DEPENDENCIES dep,
14377
                  PACKAGE_VERSIONS pv,
14378
                  (
14379
                  /* Full Release Contents used for reference*/
14380
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
14381
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
14382
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
14383
                  ) frc
14384
            WHERE dep.pv_id = nFROMpv_id
14385
              AND dep.dpv_id = pv.pv_id
14386
              AND pv.pkg_id = frc.pkg_id(+)
14387
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
14388
   ELSE
14389
      -- Clone Dependencies --
14390
      INSERT INTO PACKAGE_DEPENDENCIES
14391
           SELECT nTOpv_id         AS pv_id,
14392
                  dep.dpv_id,
14393
                  nTOpkg_id        AS pkg_id,
14394
                  dep.dpkg_id,
14395
                  dep.build_type,
14396
                  dep.display_order
14397
             FROM PACKAGE_DEPENDENCIES dep
14398
            WHERE dep.pv_id = nFROMpv_id;
14399
 
14400
   END IF;
14401
 
14402
----------------------------------------- Clone Issues -------------------------------------------------------
14403
   IF enumISSUES_STATE_IMPORTED IS NULL
14404
   THEN
14405
        /* All Issues */
14406
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
14407
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
14408
              FROM CQ_ISSUES
14409
             WHERE pv_id = nFROMpv_id;
14410
   ELSE
14411
       /* Outstanding Issues Only */
14412
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
14413
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
14414
              FROM CQ_ISSUES
14415
             WHERE pv_id = nFROMpv_id
14416
               AND iss_state = enumISSUES_STATE_IMPORTED;
14417
   END IF;
14418
 
14419
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
14420
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
14421
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
14422
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
14423
 
14424
--------------------------------------- Clone Additional Notes ------------------------------------------------
14425
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
14426
        SELECT an.NOTE_ID,
14427
               nTOpv_id AS PV_ID,
14428
               an.NOTE_TITLE,
14429
               an.NOTE_BODY,
14430
               an.MOD_DATE,
14431
               an.MOD_USER
14432
          FROM ADDITIONAL_NOTES an
14433
         WHERE an.PV_ID = nFROMpv_id;
14434
 
14435
-------------------------------------------- Clone Unit Tests -------------------------------------------------
14436
   -- Clone only Automatic unit tests --
14437
   INSERT INTO UNIT_TESTS (
14438
                           TEST_ID,
14439
                           PV_ID,
14440
                           TEST_TYPES_FK,
14441
                           TEST_SUMMARY,
14442
                           COMPLETION_DATE,
14443
                           COMPLETED_BY,
14444
                           RESULTS_URL,
14445
                           RESULTS_ATTACHMENT_NAME,
14446
                           NUMOF_TEST
14447
                          )
14448
        SELECT ut.TEST_ID,
14449
               nTOpv_id AS PV_ID,
14450
               ut.TEST_TYPES_FK,
14451
               ut.TEST_SUMMARY,
14452
               Ora_Sysdate AS COMPLETION_DATE,
14453
               nUser_id AS COMPLETED_BY,
14454
               ut.RESULTS_URL,
14455
               ut.RESULTS_ATTACHMENT_NAME,
14456
               ut.NUMOF_TEST
14457
          FROM UNIT_TESTS ut
14458
         WHERE ut.PV_ID = nFROMpv_id
14459
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
14460
 
14461
    -- Clone only Interactive Unit Tests --
14462
    INSERT INTO UNIT_TESTS (
14463
                            TEST_ID,
14464
                            PV_ID,
14465
                            TEST_TYPES_FK,
14466
                            TEST_SUMMARY
14467
                           )
14468
       SELECT ut.TEST_ID,
14469
              nTOpv_id AS PV_ID,
14470
              ut.TEST_TYPES_FK,
14471
              ut.TEST_SUMMARY
14472
         FROM UNIT_TESTS ut
14473
        WHERE ut.PV_ID = nFROMpv_id
14474
          AND ut.TEST_TYPES_FK IN (6);
14475
 
14476
-------------------------------------------- Clone Package Documents ------------------------------------------
14477
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
14478
        SELECT nTOpv_id AS PV_ID,
14479
               pd.test_id,
14480
               pd.doc_num,
14481
               pd.doc_id,
14482
               pd.IS_LATEST
14483
          FROM PACKAGE_DOCUMENTS pd
14484
         WHERE pd.PV_ID = nFROMpv_id;
14485
 
14486
-------------------------------------------- Clone Build Environments -----------------------------------------
14487
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
14488
    SELECT nTOpv_id AS PV_ID,
14489
           pkgbe.BE_ID,
14490
           pkgbe.BUILD_TYPE
14491
      FROM PACKAGE_BUILD_ENV pkgbe
14492
     WHERE pkgbe.PV_ID = nFROMpv_id;
14493
---------------------------------------------Clone Package Build Info------------------------------------------
14494
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
14495
    SELECT nTOpv_id AS PV_ID,
14496
           pkgbinfo.BM_ID,
14497
           pkgbinfo.BSA_ID
14498
      FROM PACKAGE_BUILD_INFO pkgbinfo
14499
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
14500
---------------------------------------------Clone Package Version Processes-----------------------------------
14501
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
14502
    SELECT nTOpv_id AS PV_ID,
14503
           pp.PROC_ID
14504
      FROM PACKAGE_PROCESSES pp
14505
     WHERE pp.PV_ID = nFROMpv_id;
14506
---------------------------------------------Clone Licencing Associations-----------------------------------
14507
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
14508
---------------------------------------------------------------------------------------------------------------
14509
 
14510
    /* LOG ACTION */
14511
    SELECT pv.PKG_VERSION INTO FromVersion
14512
      FROM PACKAGE_VERSIONS pv
14513
     WHERE pv.PV_ID = nFROMpv_id;
14514
 
14515
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
14516
                 'Details cloned from: '|| FromVersion );
14517
 
14518
---------------------------------------------------------------------------------------------------------------
14519
 
14520
END Basic_Clone;
4040 dpurdie 14521
 
1374 dpurdie 14522
/
1373 dpurdie 14523
 
4040 dpurdie 14524
/
14525
--------------------------------------------------------
14526
--  DDL for Procedure BUILD_TREE
14527
--------------------------------------------------------
14528
set define off;
14529
 
3959 dpurdie 14530
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
14531
	   	  		  					     retSessionNum OUT NUMBER ) IS
14532
 
1373 dpurdie 14533
/* ---------------------------------------------------------------------------
3959 dpurdie 14534
    Version: 3.0.0
1373 dpurdie 14535
   --------------------------------------------------------------------------- */
3959 dpurdie 14536
    rowCnt 			NUMBER := 0;						-- Iterations counter
14537
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
14538
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
14539
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
14540
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
14541
    sessionNum 		NUMBER;
14542
	levelNum		NUMBER;
14543
 
14544
BEGIN
14545
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
14546
 
14547
	/*
14548
	||	   Start UP THE TREE
14549
	*/
14550
 
14551
 
14552
	/* Packages with no dependencies */    
14553
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
14554
		SELECT sessionNum AS SESSION_NUM,
14555
			   iteration AS LEVEL_NUM,
14556
			   UP_THE_TREE AS DIRECTION,
14557
			   rc.pv_id, pv.pkg_id, pv.v_ext
14558
		  FROM release_content rc,
14559
		  	   package_versions pv
14560
		 WHERE rc.rtag_id = nRtag_id
14561
		   AND rc.pv_id = pv.pv_id
14562
		 MINUS
14563
		SELECT sessionNum AS SESSION_NUM, 
14564
			   iteration AS LEVEL_NUM,
14565
			   UP_THE_TREE AS DIRECTION,
14566
			   dep.pv_id, pv.pkg_id, pv.v_ext
14567
		  FROM package_dependencies dep,
14568
		  	   package_versions pv
14569
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
14570
		   AND dep.pv_id = pv.pv_id;
14571
 
14572
 
14573
	/* Browse UP the build tree */	   
14574
	iteration := iteration + 1;
14575
    LOOP
14576
 
14577
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
14578
			SELECT DISTINCT 
14579
			       sessionNum AS SESSION_NUM,
14580
			       iteration AS LEVEL_NUM,
14581
				   UP_THE_TREE AS DIRECTION, 
14582
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
14583
			  FROM (  
14584
			        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
14585
			          FROM package_dependencies dep,
14586
			               release_content rc,
14587
						   package_versions pv,
14588
						   package_versions dpv
14589
			         WHERE dep.pv_id = rc.pv_id
14590
			           AND rc.rtag_id = nRtag_id
14591
					   AND dep.pv_id = pv.pv_id
14592
					   AND dep.dpv_id = dpv.pv_id
14593
					) rdep,
14594
					temp_tree_browse ttb
14595
			 WHERE rdep.dpkg_id  = ttb.pkg_id
14596
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
14597
			   AND ttb.SESSION_NUM = sessionNum
14598
			   AND ttb.LEVEL_NUM = iteration - 1	
14599
			MINUS
14600
			/* Packages with all depencencies NOT matched */  
14601
			SELECT DISTINCT 
14602
			       sessionNum AS SESSION_NUM,
14603
			       iteration AS LEVEL_NUM, 
14604
				   UP_THE_TREE AS DIRECTION,
14605
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
14606
			  FROM (  
14607
			        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
14608
			          FROM package_dependencies dep,
14609
			               release_content rc,
14610
						   package_versions pv,
14611
						   package_versions dpv
14612
			         WHERE dep.pv_id = rc.pv_id
14613
			           AND rc.rtag_id = nRtag_id
14614
					   AND dep.pv_id = pv.pv_id
14615
					   AND dep.dpv_id = dpv.pv_id
14616
					) rdep,
14617
					(
14618
					 SELECT tb.*
14619
					   FROM temp_tree_browse tb
14620
					  WHERE tb.SESSION_NUM = sessionNum
14621
					) ttb
14622
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
14623
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
14624
			   AND ttb.SESSION_NUM IS NULL;
14625
 
14626
		rowCnt := SQL%ROWCOUNT;
14627
		IF rowCnt > 0 THEN
14628
           iteration := iteration + 1;
14629
		END IF;
14630
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
14631
    END LOOP;
14632
 
14633
	/*---------------------------------------------------------------------------------------------------------------------*/
14634
 
14635
	/*     Check for unresolved dependencies
14636
	||  
14637
	*/
14638
	/* UNRESOLVED */
14639
	 SELECT COUNT(*) INTO rowCnt
14640
	   FROM (
14641
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
14642
			  FROM release_content rc,
14643
			  	   package_versions pv
14644
			 WHERE rc.rtag_id = nRtag_id
14645
			   AND rc.pv_id = pv.pv_id	   
14646
			MINUS
14647
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
14648
			  FROM temp_tree_browse ttb
14649
			 WHERE ttb.session_num = sessionNum
14650
			);
14651
 
14652
 
14653
 
14654
	 IF rowCnt > 0 
14655
	 THEN
14656
	 	 /*     Circular dependencies detected.
14657
		 ||     Try to resolve build order from the top now.
14658
		 ||		Start DOWN THE TREE
14659
		 */
14660
 
14661
		iteration := 0; 
14662
		 /* Top Level packages */	
14663
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
14664
			SELECT sessionNum AS SESSION_NUM,
14665
			       iteration AS LEVEL_NUM,
14666
				   DOWN_THE_TREE AS DIRECTION,
14667
				   pv.pv_id, pv.pkg_id, pv.v_ext
14668
			  FROM (		   
14669
					/* Packages no one depends on ( Top level packages )*/
14670
					( 
14671
					/* All parents*/ 
14672
					SELECT pv.pkg_id, pv.v_ext
14673
			          FROM package_dependencies dep,
14674
			               release_content rc,
14675
						   package_versions pv
14676
			         WHERE dep.pv_id = rc.pv_id
14677
			           AND rc.rtag_id = nRtag_id
14678
					   AND dep.pv_id = pv.pv_id
14679
					 MINUS
14680
					 /* All children */
14681
					SELECT dpv.pkg_id, dpv.v_ext
14682
			          FROM package_dependencies dep,
14683
			               release_content rc,
14684
						   package_versions dpv
14685
			         WHERE dep.pv_id = rc.pv_id
14686
			           AND rc.rtag_id = nRtag_id
14687
					   AND dep.dpv_id = dpv.pv_id
14688
					 ) 
14689
					 MINUS
14690
					/* Packages with resolved dependencies from UP THE TREE */ 
14691
					SELECT ttb.pkg_id, ttb.v_ext
14692
					  FROM temp_tree_browse ttb
14693
					 WHERE ttb.session_num = sessionNum
14694
				  ) tpkg,
14695
				  package_versions pv,
14696
				  release_content rc
14697
			WHERE rc.rtag_id = nRtag_id
14698
			  AND rc.pv_id = pv.pv_id
14699
			  AND tpkg.pkg_id = pv.pkg_id
14700
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
14701
 
14702
 
14703
		 /* Keep taking packages which no one depende on */			  
14704
		 iteration := iteration - 1;  
14705
		 LOOP	  
14706
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
14707
					SELECT sessionNum AS SESSION_NUM,
14708
					       iteration AS LEVEL_NUM,
14709
					       DOWN_THE_TREE AS DIRECTION,
14710
					       pv.pv_id, pv.pkg_id, pv.v_ext
14711
					  FROM (		   
14712
					 	/* All Unresolved */
14713
					 	(
14714
					 	SELECT pv.pkg_id, pv.v_ext
14715
					 	  FROM release_content rc,
14716
					 	  	   package_versions pv
14717
					 	 WHERE rc.rtag_id = nRtag_id
14718
					 	   AND rc.pv_id = pv.pv_id	   
14719
					 	MINUS
14720
					 	SELECT ttb.pkg_id, ttb.v_ext
14721
					 	  FROM temp_tree_browse ttb
14722
					 	 WHERE ttb.session_num = sessionNum
14723
					 	)
14724
					 	 MINUS
14725
					 	(  
14726
					 	 /* Children of Unresolved */  
14727
					 	SELECT dpv.pkg_id, dpv.V_EXT
14728
					 	  FROM (
14729
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
14730
					 			  FROM release_content rc,
14731
					 			  	   package_versions pv
14732
					 			 WHERE rc.rtag_id = nRtag_id
14733
					 			   AND rc.pv_id = pv.pv_id	   
14734
					 			MINUS
14735
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
14736
					 			  FROM temp_tree_browse ttb
14737
					 			 WHERE ttb.session_num = sessionNum
14738
					 		   ) unr,
14739
					 		   package_dependencies dep,
14740
					 		   package_versions dpv
14741
					 	 WHERE unr.pv_id = dep.pv_id
14742
					 	   AND dep.dpv_id = dpv.pv_id
14743
					 	 )  
14744
					   ) tpkg,
14745
					   package_versions pv,
14746
					   release_content rc
14747
					WHERE rc.rtag_id = nRtag_id
14748
					  AND rc.pv_id = pv.pv_id
14749
					  AND tpkg.pkg_id = pv.pkg_id
14750
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
14751
 
14752
            rowCnt := SQL%ROWCOUNT;
14753
        	IF rowCnt > 0 THEN
14754
	           iteration := iteration - 1;
14755
			END IF;
14756
            EXIT WHEN (rowCnt < 1);
14757
     	END LOOP;
14758
 
14759
	 END IF;
14760
 
14761
 
14762
	/*---------------------------------------------------------------------------------------------------------------------*/
14763
 
14764
	/* 
14765
	|| 	 Save results from temp table
14766
	*/	
14767
	/* Clean up build_order table */
14768
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
14769
 
14770
	/* Save UP THE TREE */
14771
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
14772
		SELECT nRtag_id AS rtag_id,
14773
			   ttb.level_num AS step_num, 
14774
			   ttb.PV_ID
14775
		  FROM temp_tree_browse ttb
14776
		 WHERE ttb.session_num = sessionNum
14777
		   AND ttb.direction = UP_THE_TREE;	
14778
 
14779
	/*Get last step_num */
14780
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
14781
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
14782
 
14783
	/* UNRESOLVED */
14784
	 SELECT COUNT(*) INTO rowCnt
14785
	   FROM (
14786
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
14787
			  FROM release_content rc,
14788
			  	   package_versions pv
14789
			 WHERE rc.rtag_id = nRtag_id
14790
			   AND rc.pv_id = pv.pv_id	   
14791
			MINUS
14792
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
14793
			  FROM temp_tree_browse ttb
14794
			 WHERE ttb.session_num = sessionNum
14795
			);
14796
 
14797
 
14798
	IF rowCnt > 0
14799
	THEN
14800
		/* Save unresolved packages */
14801
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
14802
		    SELECT  nRtag_id AS rtag_id,
14803
				    levelNum AS step_num, 
14804
				    upv.PV_ID,
14805
					'Y' AS UNRESOLVED
14806
			   FROM (
14807
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
14808
					  FROM release_content rc,
14809
					  	   package_versions pv
14810
					 WHERE rc.rtag_id = nRtag_id
14811
					   AND rc.pv_id = pv.pv_id	   
14812
					MINUS
14813
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
14814
					  FROM temp_tree_browse ttb
14815
					 WHERE ttb.session_num = sessionNum
14816
					) upv;
14817
	END IF;	
14818
 
14819
	/* Save DOWN THE TREE */
14820
	levelNum := 1000;
14821
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
14822
		SELECT nRtag_id AS rtag_id,
14823
			   levelNum + ttb.level_num  AS step_num, 
14824
			   ttb.PV_ID
14825
		  FROM temp_tree_browse ttb
14826
		 WHERE ttb.session_num = sessionNum
14827
		   AND ttb.direction = DOWN_THE_TREE;
14828
 
14829
 
14830
	/*---------------------------------------------------------------------------------------------------------------------*/
14831
 
14832
	/* Clean up temp table */
14833
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
14834
 
14835
	retSessionNum := sessionNum;
14836
END Build_Tree;
4040 dpurdie 14837
 
3959 dpurdie 14838
/
1373 dpurdie 14839
 
4040 dpurdie 14840
/
14841
--------------------------------------------------------
14842
--  DDL for Procedure CHANGE_PACKAGE_STATE
14843
--------------------------------------------------------
14844
set define off;
14845
 
3959 dpurdie 14846
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14847
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
14848
/* ---------------------------------------------------------------------------
14849
    Version: 4.0
14850
   --------------------------------------------------------------------------- */
1373 dpurdie 14851
 
14852
BEGIN
14853
 
3959 dpurdie 14854
    -- Unlock Package
14855
    UPDATE RELEASE_CONTENT rc SET
14856
    	rc.PKG_STATE = 0
14857
    WHERE rc.PV_ID = nPvId
14858
	AND rc.RTAG_ID = nRtagId;
1373 dpurdie 14859
 
3959 dpurdie 14860
    /* LOG ACTION */
14861
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
1373 dpurdie 14862
 
3959 dpurdie 14863
END Change_Package_State;
4040 dpurdie 14864
 
1374 dpurdie 14865
/
1373 dpurdie 14866
 
4040 dpurdie 14867
/
14868
--------------------------------------------------------
14869
--  DDL for Procedure CHANGE_RELEASE_MODE
14870
--------------------------------------------------------
14871
set define off;
14872
 
3959 dpurdie 14873
  CREATE OR REPLACE PROCEDURE "CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
14874
/* ---------------------------------------------------------------------------
14875
    Version: 3.0.0
14876
   --------------------------------------------------------------------------- */
1373 dpurdie 14877
 
3959 dpurdie 14878
	cMode CHAR(1) := NULL;  
14879
	nProjId NUMBER; 
1373 dpurdie 14880
 
14881
BEGIN
3959 dpurdie 14882
 
1373 dpurdie 14883
 
3959 dpurdie 14884
	/*
14885
	Author: Rupesh Solanki
14886
	Modified: 24th October 2006
14887
	Reason: Added the archive mode state into Release Manager 
14888
	||	1 - Open Mode
14889
	||	2 - Restrictive Mode
14890
	||	3 - Closed Mode
14891
	||	4 - CCB Mode
14892
	||	5 - Archive Mode
14893
	*/	
14894
	-- Get project Id
14895
	SELECT rt.PROJ_ID INTO nProjId
14896
	  FROM RELEASE_TAGS rt
14897
	 WHERE rt.RTAG_ID = nRtagId; 
14898
 
14899
	IF nModeCode = 1 THEN
14900
		-- Open Mode
14901
		cMode := 'N';
14902
 
14903
		/* LOG ACTION */
14904
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
14905
 
14906
	ELSIF nModeCode = 2 THEN
14907
		-- Restrictive Mode
14908
		cMode := 'R';
14909
 
14910
		/* LOG ACTION */
14911
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
14912
 
14913
	ELSIF nModeCode = 3 THEN
14914
		-- Closed Mode
14915
		cMode := 'Y';
14916
 
14917
		/* LOG ACTION */
14918
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
1373 dpurdie 14919
 
3959 dpurdie 14920
	ELSIF nModeCode = 4 THEN
14921
		-- CCB Mode
14922
		cMode := 'C';
14923
 
14924
		/* LOG ACTION */
14925
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
14926
 
14927
	ELSIF nModeCode = 5 THEN
14928
		-- Archive Mode
14929
		cMode := 'A';
14930
 
14931
		/* LOG ACTION */
14932
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
14933
 
14934
 
14935
	END IF;
14936
 
14937
 
14938
 
14939
	-- Now update table
14940
	IF NOT cMode IS NULL THEN
14941
		UPDATE RELEASE_TAGS rt SET
14942
		rt.OFFICIAL = cMode
14943
		WHERE rt.RTAG_ID = nRtagId;
14944
 
14945
	END IF;
1373 dpurdie 14946
 
14947
 
3959 dpurdie 14948
END CHANGE_RELEASE_MODE;
4040 dpurdie 14949
 
1374 dpurdie 14950
/
1373 dpurdie 14951
 
4040 dpurdie 14952
/
14953
--------------------------------------------------------
14954
--  DDL for Procedure CHECK_NEW_PATCHES
14955
--------------------------------------------------------
14956
set define off;
14957
 
3959 dpurdie 14958
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
14959
   nrtagid   IN   release_content.rtag_id%TYPE
1373 dpurdie 14960
)
14961
IS
14962
/* ---------------------------------------------------------------------------
3959 dpurdie 14963
    Version: 3.0
1373 dpurdie 14964
   --------------------------------------------------------------------------- */
14965
BEGIN
3959 dpurdie 14966
   /*--------------- Business Rules Here -------------------*/
14967
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
14968
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
14969
   END IF
14970
 
14971
   /*-------------------------------------------------------*/
14972
   UPDATE release_content rc
14973
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
14974
    WHERE rc.pv_id IN (
14975
             SELECT prod.pv_id
14976
               FROM (SELECT   pp.pv_id AS orig_parent_id,
14977
                              COUNT (*) AS num_of_patches
14978
                         FROM release_content rc, package_patches pp
14979
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
14980
                     GROUP BY pp.pv_id) orig,
14981
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
14982
                              COUNT (*) AS num_of_patches
14983
                         FROM release_content rc,
14984
                              package_patches pp,
14985
                              package_dependencies dep,
14986
                              package_versions pv,
14987
                              package_patches prodpp
14988
                        WHERE rc.pv_id = pp.pv_id
14989
                          AND rc.rtag_id = nrtagid
14990
                          AND pp.patch_id = dep.dpv_id
14991
                          AND dep.pv_id = pv.pv_id
14992
                          AND pv.is_patch = 'Y'
14993
                          AND pv.dlocked = 'Y'
14994
                          AND prodpp.patch_id = dep.pv_id
14995
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
14996
                    release_content rc
14997
              WHERE orig.orig_parent_id = prod.pv_id
14998
                AND orig.num_of_patches != prod.num_of_patches
14999
                AND rc.rtag_id = nrtagid
15000
                AND rc.pv_id = prod.pv_id
15001
                AND rc.pkg_state = 0
15002
             UNION
15003
             SELECT   prodpp.pv_id
15004
                 FROM release_content rc,
15005
                      package_patches pp,
15006
                      package_dependencies dep,
1373 dpurdie 15007
                      package_versions pv,
3959 dpurdie 15008
                      package_patches prodpp
15009
                WHERE rc.pv_id = pp.pv_id
15010
                  AND rc.rtag_id = nrtagid
15011
                  AND pp.patch_id = dep.dpv_id
1373 dpurdie 15012
                  AND dep.pv_id = pv.pv_id
3959 dpurdie 15013
                  AND pv.is_patch = 'Y'
15014
                  AND pv.dlocked = 'Y'
15015
                  AND prodpp.patch_id = dep.pv_id
15016
             GROUP BY prodpp.pv_id, pp.pv_id
15017
             MINUS
15018
             SELECT   pp.pv_id
15019
                 FROM release_content rc, package_patches pp
15020
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
15021
             GROUP BY pp.pv_id);
15022
END check_new_patches;
4040 dpurdie 15023
 
1374 dpurdie 15024
/
1373 dpurdie 15025
 
4040 dpurdie 15026
/
15027
--------------------------------------------------------
15028
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
15029
--------------------------------------------------------
15030
set define off;
15031
 
3959 dpurdie 15032
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
15033
IS
15034
/******************************************************************************
15035
   NAME:       clean_advisory_ripple
1373 dpurdie 15036
 
3959 dpurdie 15037
   PURPOSE:    To delete entries from the advisory_ripple table based upon
15038
               an RTAG_ID only
1373 dpurdie 15039
 
3959 dpurdie 15040
               This is a tidy-up operation performed against the advisory_ripple
15041
               table, ensuring that the table does not have rtag_id/pv_id
15042
               combinations that cannot be found in the release's wip/pending/release
15043
               tabs.
15044
 
15045
******************************************************************************/
1373 dpurdie 15046
BEGIN
3959 dpurdie 15047
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
15048
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
15049
   -- work_in_progress, planned, or release_content table.
15050
   -- NOTE: Planned operations that represent pending additive/subtractive merge
15051
   -- operations are ignored because they have not been approved yet and so
15052
   -- cannot be said to be "in the release".
15053
   DELETE FROM advisory_ripple
15054
         WHERE rtag_id = nrtagid
15055
           AND pv_id not in
15056
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
15057
                 UNION
15058
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
15059
                 UNION
15060
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
15061
               );
15062
END clean_advisory_ripple;
4040 dpurdie 15063
 
3959 dpurdie 15064
/
1373 dpurdie 15065
 
4040 dpurdie 15066
/
15067
--------------------------------------------------------
15068
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
15069
--------------------------------------------------------
15070
set define off;
15071
 
3959 dpurdie 15072
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
15073
IS
15074
/******************************************************************************
15075
   NAME:       clean_do_not_ripple
1373 dpurdie 15076
 
3959 dpurdie 15077
   PURPOSE:    To delete entries from the do_not_ripple table based upon
15078
               an RTAG_ID only
15079
 
15080
               This is a tidy-up operation performed against the do_not_ripple
15081
               table, ensuring that the table does not have rtag_id/pv_id
15082
               combinations that cannot be found in the release's wip/pending/release
15083
               tabs.
15084
 
15085
******************************************************************************/
15086
BEGIN
15087
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
15088
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
15089
   -- work_in_progress, planned, or release_content table.
15090
   -- NOTE: Planned operations that represent pending additive/subtractive merge
15091
   -- operations are ignored because they have not been approved yet and so
15092
   -- cannot be said to be "in the release".
15093
   DELETE FROM do_not_ripple
15094
         WHERE rtag_id = nrtagid
15095
           AND pv_id not in
15096
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
15097
                 UNION
15098
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
15099
                 UNION
15100
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
15101
               );
15102
END clean_do_not_ripple;
4040 dpurdie 15103
 
1374 dpurdie 15104
/
1373 dpurdie 15105
 
4040 dpurdie 15106
/
15107
--------------------------------------------------------
15108
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
15109
--------------------------------------------------------
15110
set define off;
15111
 
3959 dpurdie 15112
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15113
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15114
											 nUserId IN NUMBER ) IS
1373 dpurdie 15115
/* ---------------------------------------------------------------------------
3959 dpurdie 15116
    Version: 4.0
1373 dpurdie 15117
   --------------------------------------------------------------------------- */
15118
 
15119
BEGIN
15120
 
3959 dpurdie 15121
    -- Clear Advisory Ripple Package
15122
    DELETE FROM ADVISORY_RIPPLE
15123
	WHERE PV_ID = nPvId
15124
	AND RTAG_ID = nRtagId;
1373 dpurdie 15125
 
3959 dpurdie 15126
    /* LOG ACTION */
15127
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
15128
 
15129
	/*Rebuild_Environment(nRtagId);*/
1373 dpurdie 15130
 
3959 dpurdie 15131
END Clear_Advisory_Ripple;
4040 dpurdie 15132
 
1374 dpurdie 15133
/
1373 dpurdie 15134
 
4040 dpurdie 15135
/
15136
--------------------------------------------------------
15137
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
15138
--------------------------------------------------------
15139
set define off;
15140
 
3959 dpurdie 15141
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
15142
IS
1373 dpurdie 15143
 
3959 dpurdie 15144
proc_id NUMBER;
1373 dpurdie 15145
/******************************************************************************
3959 dpurdie 15146
   NAME:       DELETE_DO_NOT_RIPPLE
15147
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
15148
               IS RELEASED
1373 dpurdie 15149
 
15150
   REVISIONS:
15151
   Ver        Date        Author           Description
15152
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15153
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 15154
 
15155
   NOTES:
15156
 
15157
   Automatically available Auto Replace Keywords:
3959 dpurdie 15158
      Object Name:     DELETE_DO_NOT_RIPPLE
15159
      Sysdate:         21/04/2006
15160
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
1373 dpurdie 15161
      Username:         (set in TOAD Options, Procedure Editor)
15162
      Table Name:       (set in the "New PL/SQL Object" dialog)
15163
 
15164
******************************************************************************/
3959 dpurdie 15165
   CURSOR ripple_cur
15166
   IS
15167
      select distinct proc_id, prod_id from deployment_manager.processes_config;
15168
 
15169
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 15170
BEGIN
3959 dpurdie 15171
   OPEN ripple_cur;
1373 dpurdie 15172
 
3959 dpurdie 15173
   FETCH ripple_cur
15174
    INTO ripple_rec;
1373 dpurdie 15175
 
3959 dpurdie 15176
   WHILE ripple_cur%FOUND
15177
   LOOP
15178
 
1373 dpurdie 15179
 
3959 dpurdie 15180
 
15181
insert into package_processes (PROC_ID, PV_ID) 
15182
values( ripple_rec.proc_id, ripple_rec.prod_id);
15183
 
15184
      FETCH ripple_cur
15185
       INTO ripple_rec;
15186
   END LOOP;
15187
END CLONED_PACKAGE_PROCESSES;
4040 dpurdie 15188
 
1374 dpurdie 15189
/
1373 dpurdie 15190
 
4040 dpurdie 15191
/
15192
--------------------------------------------------------
15193
--  DDL for Procedure CLONED_PROCESSES
15194
--------------------------------------------------------
15195
set define off;
15196
 
3959 dpurdie 15197
  CREATE OR REPLACE PROCEDURE "CLONED_PROCESSES" 
15198
IS
15199
 
15200
proc_id NUMBER;
15201
/******************************************************************************
15202
   NAME:       DELETE_DO_NOT_RIPPLE
15203
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
15204
               IS RELEASED
15205
 
15206
   REVISIONS:
15207
   Ver        Date        Author           Description
15208
   ---------  ----------  ---------------  ------------------------------------
15209
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
15210
 
15211
   NOTES:
15212
 
15213
   Automatically available Auto Replace Keywords:
15214
      Object Name:     DELETE_DO_NOT_RIPPLE
15215
      Sysdate:         21/04/2006
15216
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
15217
      Username:         (set in TOAD Options, Procedure Editor)
15218
      Table Name:       (set in the "New PL/SQL Object" dialog)
15219
 
15220
******************************************************************************/
15221
   CURSOR ripple_cur
15222
   IS
15223
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
15224
 
15225
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 15226
BEGIN
3959 dpurdie 15227
   OPEN ripple_cur;
1373 dpurdie 15228
 
3959 dpurdie 15229
   FETCH ripple_cur
15230
    INTO ripple_rec;
1373 dpurdie 15231
 
3959 dpurdie 15232
   WHILE ripple_cur%FOUND
15233
   LOOP
15234
 
15235
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
15236
 
15237
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
15238
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 15239
 
3959 dpurdie 15240
      FETCH ripple_cur
15241
       INTO ripple_rec;
15242
   END LOOP;
15243
END CLONED_PROCESSES;
4040 dpurdie 15244
 
1374 dpurdie 15245
/
1373 dpurdie 15246
 
4040 dpurdie 15247
/
15248
--------------------------------------------------------
15249
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
15250
--------------------------------------------------------
15251
set define off;
15252
 
3959 dpurdie 15253
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
15254
IS
1373 dpurdie 15255
/******************************************************************************
3959 dpurdie 15256
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
15257
   PURPOSE:
1373 dpurdie 15258
 
15259
   REVISIONS:
3959 dpurdie 15260
   Ver        Date        Author           Description
1373 dpurdie 15261
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15262
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
1373 dpurdie 15263
 
15264
   NOTES:
15265
 
15266
   Automatically available Auto Replace Keywords:
3959 dpurdie 15267
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
15268
      Sysdate:         2/06/2006
15269
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
1373 dpurdie 15270
      Username:         (set in TOAD Options, Procedure Editor)
15271
      Table Name:       (set in the "New PL/SQL Object" dialog)
15272
 
15273
******************************************************************************/
15274
BEGIN
3959 dpurdie 15275
   DELETE FROM autobuild_failure
15276
         WHERE group_email_id NOT IN (SELECT group_email_id
15277
                                        FROM members_group);
15278
END delete_autobuild_failure_info;
4040 dpurdie 15279
 
1374 dpurdie 15280
/
1373 dpurdie 15281
 
4040 dpurdie 15282
/
15283
--------------------------------------------------------
15284
--  DDL for Procedure DEPLOY_TO_RELEASE
15285
--------------------------------------------------------
15286
set define off;
15287
 
1373 dpurdie 15288
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
15289
 
15290
/******************************************************************************
15291
 
15292
 
15293
******************************************************************************/
15294
 
15295
	CURSOR curInfo IS
15296
    SELECT DISTINCT
15297
        qry.DPV_ID
15298
     FROM (
15299
             SELECT dep.*,
15300
                    LEVEL AS LEVEL_NUM
15301
               FROM PACKAGE_DEPENDENCIES dep
15302
             START WITH dep.PV_ID IN ( 
15303
 
15304
                        69124,63479,60048,49566,49562,54351,63560,54360,46053,59753,97060,97061,100883,78236,75241,92371,92372,105682,135506,127204,135615,136498,137571,61534,76540,96787,133102,96770,96771,116692,133768,61537,88935,110216,96797,69469,98123,111626,96802,100289,97233,97623,135801,69700,77808,43026,77809,43027,100825,126854,105589,96405,102105,133770,134408,91177,91179,96822,96824,48031,78965,78936,78935,79114,76620,125164,61804,96826,61977,67592,72594,134415,135804,65097,64850,64851,64879,64881,64882,64884,67612,67613,67614,67615,68501,68502,68503,68516,68518,68519,68521,71974,68659,69764,68662,68661,68757,69765,69766,69767,71975,71976,71977,71978,71979,71980,75149,71982,71983,75153,75158,71986,75160,75161,75162,72418,72419,71987,71988,71990,75164,72420,72421,72423,72424,72425,75165,75181,75182,83285,75184,75201,75220,75240,75260,75280,75242,76320,75320,76340,76321,82031,76341,76342,76344,76345,76806,76350,76810,76811,76360,76361,76362,76380,76637,76638,76639,76647,76649,76812,76650,78261,76815,77603,76818,76846,76847,76848,76849,77604,77606,77016,77607,77608,77609,78518,77671,77610,78519,78520,78205,78206,77795,78262,78263,78666,78521,78669,78767,78768,78770,78771,82032,79471,78772,82033,80856,80210,80898,82449,80211,80212,80214,80215,80216,80611,80217,82034,82035,80749,80750,82036,94266,82037,82038,82039,82040,82041,82042,82043,82044,82045,82046,82450,82296,82297,82451,82047,82298,82299,82300,82452,82453,82454,82455,82456,82457,82769,82458,82459,82770,82460,82461,82771,83286,85069,83543,83544,83287,85070,84959,85071,85072,84960,85073,85074,84975,85194,85075,85195,85196,85197,85198,85199,94267,85231,85237,94268,94269,94270,94271,94273,94274,94275,94276,94277,94278,94279,94280,94281,94282,94283,94284,94285,94286,94287,94288,94289,94290,94291,94292,94293,94294,94295,94296,94297,94298,94299,94300,94301,94302,94303,94304,94305,94306,94307,94308,94309,94310,94311,94312,94313,94314,94315,94316,94634,94317,94635,97035,94319,94320,94636,94637,94322,96536,96552,96554,96555,96556,96568,96569,96570,96571,96572,96573,96574,96575,96576,96577,96578,96579,96580,96581,96582,96583,96584,96585,96586,96818,97435,96819,96820,97599,97436,97437,97438,97439,97440,97434,97723,97640,97641,97642,97724,97725,97729,97743,97825,98097,98098,98099,98100,97999,98049,98101,98102,98103,99506,98268,98207,99507,99508,99509,99159,99510,99511,99512,102883,99513,99514,100243,99515,99880,99562,99563,99676,99677,99678,99881,99882,99883,99884,100244,100245,100623,100247,100624,100625,100626,100885,100719,100886,100887,100888,100889,100890,100990,100991,101301,101603,110065,101605,102180,102627,102181,102182,102183,102184,102185,102186,102187,102188,102189,102190,102191,104378,102192,104379,102193,102379,102380,102381,102884,102410,102411,102628,102465,102629,102630,102885,102886,102887,104380,104381,104382,104383,104384,104385,104387,110063,104389,106409,104561,104594,104660,105088,105089,105090,105091,105093,105097,105673,105768,106410,109314,106173,110064,137890,106433,106960,109080,111665,122015,110954,116763,110066,116764,110123,111867,110713,116765,111666,116869,111667,111668,116766,116767,115142,115143,121477,113924,114594,116768,115144,116769,115170,115172,115171,115644,120042,120043,116092,116870,116871,118382,116872,116876,120044,118026,119364,121485,120045,120416,121478,120417,122016,124577,129495,123602,123600,124578,124579,124580,124581,124784,125238,127096,127097,129496,129497,128036,128415,129498,129499,129914,130063,130064,130680,130681,131333,131488,133886,132219,132477,132478,133887,136537,136552,136538,136539,136540,136553,136554,136555,137869,85076,80857,62418,64889,64890,64891,64893,68666,68667,68668,68670,68671,68672,68673,72019,72020,72023,72024,72227,77745,77746,77747,77748,77749,77750,77751,77798,78773,80751,82464,82465,83288,92874,92875,92876,92877,92878,94122,94123,96290,96882,96883,97554,97514,97726,98008,98009,98051,99193,100248,99608,100249,100250,100670,100671,100672,101059,101061,101607,102194,102195,102412,102413,102633,104390,104391,106421,104560,104595,105767,106174,106426,109081,122017,137851,110712,116873,115145,115146,114597,115645,116095,120046,123551,122018,124584,124585,129500,129501,129502,128417,129503,129915,130066,131487,133897,133882,133883,136559,85078,100673,63475,78264,78265,78266,78267,78775,80753,94118,94119,94120,94121,96888,100251,100252,102631,102590,102632,65229,43366,69139,132551,59764,127129,101196,96830,61535,105433,96833,96835,96839,83795,77723,126868,99146,70188,117523,117524,117525,99237,100854,100855,137314,137315,96868,138232,138233,69709,96907,130854,119208,69520,124772,96878,60049,47875,70354,59371,54558,59849,33893,43087,43134,33894,60054,24345,49563,49558,97474,84982,31770,30950,49926,60050,52670,59846,59891,30966,59744,61988,59745,59881,59746,59741,47449,59747,64101,63480,63562,105382,105383,60052,48955,49561,49556,47401,65896,65906,65909,65985,108670,68697,68698,59754,59752,59751,62526,59805,59799,66981,46050,59756,46044,59806,46051,59807,82290,66980,59808,46046,61536,88834,70260,111081,105409,66093,66095,66094,47440,65778,59750,56748,99152,78409
15305
 
15306
                        ) 
15307
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
15308
 		) qry,
15309
 		PACKAGES pkg,
15310
		PACKAGE_VERSIONS pv
15311
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
15312
         and (pv.is_patch is null or pv.is_patch = 'N');
15313
    recInfo curInfo%ROWTYPE;
15314
 
15315
 
15316
BEGIN
15317
 
15318
	OPEN curInfo;
15319
    FETCH curInfo INTO recInfo;
15320
 
15321
	WHILE curInfo%FOUND
15322
	LOOP
15323
 
15324
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
15325
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
15326
 
15327
    FETCH curInfo INTO recInfo;
15328
 
15329
	END LOOP;
15330
 
15331
	CLOSE curInfo;
15332
 
15333
 
15334
 
15335
 
15336
END DEPLOY_TO_RELEASE; 
4040 dpurdie 15337
 
1374 dpurdie 15338
/
1373 dpurdie 15339
 
4040 dpurdie 15340
/
15341
--------------------------------------------------------
15342
--  DDL for Procedure DEPRECATE_PACKAGE
15343
--------------------------------------------------------
15344
set define off;
15345
 
3959 dpurdie 15346
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15347
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
15348
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
15349
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
15350
											   nUserId IN NUMBER) IS
15351
ext VARCHAR2(50);
1373 dpurdie 15352
 
15353
 
15354
 
3959 dpurdie 15355
 
1373 dpurdie 15356
BEGIN
15357
 
3959 dpurdie 15358
	--Extract the package version extension
15359
	SELECT V_EXT into ext
15360
	FROM PACKAGE_VERSIONS
15361
	WHERE PV_ID = nPvId; 
15362
 
15363
    -- Deprecate Package
15364
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
15365
	VALUES (nRtagId, nPkgId, sComments, ext);
15366
 
15367
	IF ext IS NOT NULL THEN
15368
	   UPDATE RELEASE_CONTENT 
15369
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
15370
	   WHERE RTAG_ID = nRtagId
15371
	   AND PV_ID IN (SELECT PV.PV_ID 
15372
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
15373
				  	WHERE PKG.PKG_ID = PV.PKG_ID
15374
				  	AND PV.V_EXT = ext
15375
				  	AND PKG.PKG_ID = nPkgId
15376
				 	);						
15377
	ELSE
15378
	   UPDATE RELEASE_CONTENT 
15379
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
15380
	   WHERE RTAG_ID = nRtagId
15381
	   AND PV_ID IN (SELECT PV.PV_ID 
15382
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
15383
				  	WHERE PKG.PKG_ID = PV.PKG_ID
15384
				  	AND PV.V_EXT IS NULL
15385
				  	AND PKG.PKG_ID = nPkgId
15386
				 	);
15387
	END IF;
15388
 
15389
	UPDATE RELEASE_CONTENT
15390
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
15391
	WHERE RTAG_ID = nRtagId
15392
	AND PV_ID IN (		   SELECT DISTINCT
15393
 	 		  	 		   qry.PV_ID
15394
						        FROM (
15395
								 	  SELECT dep.*,
15396
									  LEVEL AS LEVEL_NUM
15397
									  FROM PACKAGE_DEPENDENCIES dep 
15398
 								START WITH dep.DPV_ID IN ( nPvId ) 
15399
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
15400
 								) qry,
15401
								PACKAGES pkg,
15402
								PACKAGE_VERSIONS pv,
15403
								RELEASE_CONTENT rc
15404
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
15405
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
15406
							 AND rc.DEPRECATED_STATE IS NULL
15407
				 );			 
1373 dpurdie 15408
 
15409
    /* LOG ACTION */
3959 dpurdie 15410
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
15411
 
1373 dpurdie 15412
 
3959 dpurdie 15413
END Deprecate_Package;
4040 dpurdie 15414
 
1374 dpurdie 15415
/
1373 dpurdie 15416
 
4040 dpurdie 15417
/
15418
--------------------------------------------------------
15419
--  DDL for Procedure DT_DROPUSEROBJECTBYID
15420
--------------------------------------------------------
15421
set define off;
15422
 
1373 dpurdie 15423
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4040 dpurdie 15424
 
1374 dpurdie 15425
/
1373 dpurdie 15426
 
4040 dpurdie 15427
/
15428
--------------------------------------------------------
15429
--  DDL for Procedure DT_SETPROPERTYBYID
15430
--------------------------------------------------------
15431
set define off;
15432
 
3959 dpurdie 15433
  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 15434
 
3959 dpurdie 15435
/
15436
 
4040 dpurdie 15437
/
15438
--------------------------------------------------------
15439
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
15440
--------------------------------------------------------
15441
set define off;
15442
 
3959 dpurdie 15443
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
15444
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
15445
                                                         sIgnoreIdList IN VARCHAR2,
15446
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
15447
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
15448
/* ---------------------------------------------------------------------------
15449
    Updates the ignore warnings table - this is really two functions in one.
15450
 
15451
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
15452
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
15453
       the ignore warnings checkboxes and submits the form.
15454
       This can (at time of writing this) only be done within releases that are not build
15455
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
15456
       of in an ideal world.
15457
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
15458
       do so in this stored procedure, thereby making this stored procedure much more precise in
15459
       that it only updates the ignore_warnings table (action log table too although that is just
15460
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
15461
       about website presentation layer states, etc.
15462
 
15463
    2) The other function updates the table for out of sync dependencies that have in fact
15464
       been satisfied by patches made to some other product in the release.
15465
       This seems to be a seldom used feature in current projects.
15466
       It is probably the most often taken path through this function given that it occurs when
15467
       this function is called from Rebuild_Environment, and that is called in many circumstances
15468
       from the RM website whenever the seems to be a possibility that the state of a package
15469
       in a release might have changed and therefore affects the state of other packages in
15470
       that same release.
15471
 
15472
    Parameter Usage:
15473
                        when called from    | when called from
15474
                        Rebuild_Environment | SetIgnoreWarnings()
15475
                        stored procedure.   | in the Website
15476
      --------------------------------------+----------------------------
15477
      nRtagId           RTAG_ID             | RTAG_ID
15478
      nPvId             NULL                | PV_ID
15479
      sIgnoreIdList     NULL                | list of dependent PV_ID's
15480
      bDoPatchIgnore    TRUE                | FALSE
15481
      nUserId           NULL                | current user ID
15482
   --------------------------------------------------------------------------- */
15483
 
15484
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15485
ReleaseLocation VARCHAR2(4000);
15486
ActionTypeId NUMBER;
15487
 
1373 dpurdie 15488
BEGIN
15489
 
3959 dpurdie 15490
   IF (NOT bDoPatchIgnore) THEN
15491
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
15492
      */
15493
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
1373 dpurdie 15494
 
15495
 
3959 dpurdie 15496
      /* Log Action */
15497
      -- Get Release Location
15498
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
15499
        FROM PROJECTS proj,
15500
             RELEASE_TAGS rt
15501
       WHERE rt.PROJ_ID = proj.PROJ_ID
15502
         AND rt.RTAG_ID = nRtagId;
1373 dpurdie 15503
 
3959 dpurdie 15504
      -- Get Action Type Id for IGNORE_ON
15505
      SELECT act.ACTTYPE_ID INTO ActionTypeId
15506
        FROM ACTION_TYPE act
15507
       WHERE act.NAME = 'ignore_on';
15508
 
15509
      -- Get Ignored (Current MINUS Old)
15510
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
15511
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
15512
        FROM (
15513
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
15514
                FROM PACKAGE_VERSIONS pv
15515
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15516
              MINUS
15517
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
15518
                FROM IGNORE_WARNINGS igw
15519
               WHERE igw.RTAG_ID = nRtagId
15520
                 AND igw.PV_ID = nPvId
15521
             ) qry,
15522
             PACKAGE_VERSIONS pv,
15523
             PACKAGES pkg,
15524
             RELEASE_CONTENT rc,
15525
             PACKAGE_VERSIONS rpv
15526
       WHERE pv.PKG_ID = pkg.PKG_ID
15527
         AND rc.RTAG_ID = nRtagId
15528
         AND rc.PV_ID = rpv.PV_ID
15529
         AND rpv.PKG_ID = pv.PKG_ID
15530
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
15531
         AND qry.DPV_ID = pv.PV_ID;
15532
 
15533
 
15534
      -- Get Action Type Id for IGNORE_OFF
15535
      SELECT act.ACTTYPE_ID INTO ActionTypeId
15536
        FROM ACTION_TYPE act
15537
       WHERE act.NAME = 'ignore_off';
15538
 
15539
      -- Get UnIgnored (Old MINUS Current)
15540
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
15541
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
15542
        FROM (
15543
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
15544
                FROM IGNORE_WARNINGS igw
15545
               WHERE igw.RTAG_ID = nRtagId
15546
                 AND igw.PV_ID = nPvId
15547
              MINUS
15548
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
15549
                FROM PACKAGE_VERSIONS pv
15550
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15551
             ) qry,
15552
             PACKAGE_VERSIONS pv,
15553
             PACKAGES pkg,
15554
             RELEASE_CONTENT rc,
15555
             PACKAGE_VERSIONS rpv
15556
       WHERE pv.PKG_ID = pkg.PKG_ID
15557
         AND rc.RTAG_ID = nRtagId
15558
         AND rc.PV_ID = rpv.PV_ID
15559
         AND rpv.PKG_ID = pv.PKG_ID
15560
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
15561
         AND qry.DPV_ID = pv.PV_ID;
15562
 
15563
 
15564
      -- Delete Current Ignore Warnings
15565
      DELETE
15566
        FROM IGNORE_WARNINGS igw
15567
       WHERE igw.RTAG_ID = nRtagId
15568
         AND igw.PV_ID = nPvId
15569
         AND igw.IS_PATCH_IGNORE IS NULL;
15570
 
15571
 
15572
      IF (oIgnoreIdCollector.COUNT > 0) THEN
15573
         -- Insert Ignore Warnings
15574
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
15575
         SELECT nRtagId,
15576
                nPvId,
15577
                pv.PV_ID AS DPV_ID
15578
           FROM PACKAGE_VERSIONS pv
15579
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
15580
      END IF;
15581
 
15582
   ELSE
15583
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
15584
 
15585
      -- Delete Current Patch Ignore Warnings
15586
      DELETE
15587
        FROM IGNORE_WARNINGS igw
15588
       WHERE igw.RTAG_ID = nRtagId
15589
         AND igw.IS_PATCH_IGNORE = 'Y';
15590
 
15591
 
15592
      -- Delete Manual Ignores that need to be Patch Ignores
15593
      DELETE
15594
        FROM IGNORE_WARNINGS igw
15595
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
15596
             (
15597
              SELECT DISTINCT
15598
                     nRtagId,
15599
                     err.PV_ID,
15600
                     err.ERR_DPV AS DPV_ID
15601
               FROM  (
15602
                      /* Full Release Contents used for reference*/
15603
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
15604
                        FROM release_content rel, package_versions rpv
15605
                       WHERE rel.pv_id = rpv.pv_id
15606
                         AND rtag_id = nRtagId
15607
                     ) frc,
15608
                     (
15609
                      /* DPV_IDs not fount in release*/
15610
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
15611
                        FROM package_dependencies dep
15612
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
15613
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
15614
                     ) err,
15615
                     (
15616
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
15617
                        FROM PACKAGE_PATCHES pp,
15618
                             PACKAGE_DEPENDENCIES dep,
15619
                             RELEASE_CONTENT rc
15620
                       WHERE rc.RTAG_ID = nRtagId
15621
                         AND rc.PV_ID = pp.PV_ID
15622
                         AND dep.PV_ID = pp.PATCH_ID
15623
                     ) pp,
15624
                     package_versions errpkg,
15625
                     package_versions errpv
15626
               WHERE err.err_dpv = errpv.pv_id
15627
                 AND errpv.pkg_id = frc.pkg_id(+)
15628
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
15629
                 AND err.pv_id = errpkg.pv_id
15630
                 AND err.PV_ID = pp.PV_ID
15631
                 AND frc.PV_ID = pp.DPV_ID
15632
             );
15633
 
15634
      /*
15635
      ---------------------------------------------------
15636
      --  Make sure that select statement above and below are same
15637
      ---------------------------------------------------
15638
      */
15639
 
15640
      -- Insert Patch Ignores
15641
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
15642
      SELECT DISTINCT
15643
             nRtagId,
15644
             err.PV_ID,
15645
             err.ERR_DPV AS DPV_ID,
15646
             'Y'
15647
        FROM (
15648
              /* Full Release Contents used for reference*/
15649
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
15650
                FROM release_content rel, package_versions rpv
15651
               WHERE rel.pv_id = rpv.pv_id
15652
                 AND rtag_id = nRtagId
15653
             ) frc,
15654
             (
15655
               /* DPV_IDs not fount in release*/
15656
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
15657
                 FROM package_dependencies dep
15658
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
15659
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
15660
             ) err,
15661
             (
15662
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
15663
                FROM PACKAGE_PATCHES pp,
15664
                     PACKAGE_DEPENDENCIES dep,
15665
                     RELEASE_CONTENT rc
15666
               WHERE rc.RTAG_ID = nRtagId
15667
                 AND rc.PV_ID = pp.PV_ID
15668
                 AND dep.PV_ID = pp.PATCH_ID
15669
             ) pp,
15670
             package_versions errpkg,
15671
             package_versions errpv
15672
       WHERE err.err_dpv = errpv.pv_id
15673
         AND errpv.pkg_id = frc.pkg_id(+)
15674
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
15675
         AND err.pv_id = errpkg.pv_id
15676
         AND err.PV_ID = pp.PV_ID
15677
         AND frc.PV_ID = pp.DPV_ID;
15678
 
15679
    END IF;
15680
 
15681
END Ignore_Dependency_Warnings;
4040 dpurdie 15682
 
1374 dpurdie 15683
/
1373 dpurdie 15684
 
4040 dpurdie 15685
/
15686
--------------------------------------------------------
15687
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
15688
--------------------------------------------------------
15689
set define off;
15690
 
3959 dpurdie 15691
  CREATE OR REPLACE PROCEDURE "INSERT_INTO_PACKAGE_BUILD_INFO" IS
1373 dpurdie 15692
 
15693
/******************************************************************************
3959 dpurdie 15694
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
1373 dpurdie 15695
   PURPOSE:    
15696
 
15697
   REVISIONS:
15698
   Ver        Date        Author           Description
15699
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15700
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 15701
 
15702
   NOTES:
15703
 
15704
   Automatically available Auto Replace Keywords:
3959 dpurdie 15705
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
15706
      Sysdate:         6/12/2006
15707
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
1373 dpurdie 15708
      Username:         (set in TOAD Options, Procedure Editor)
15709
      Table Name:       (set in the "New PL/SQL Object" dialog)
15710
 
15711
******************************************************************************/
15712
 
15713
	CURSOR curInfo IS
3959 dpurdie 15714
    SELECT PV_ID
15715
	FROM PACKAGE_BUILD_ENV
15716
	WHERE BE_ID IN (11, 12);
1373 dpurdie 15717
    recInfo curInfo%ROWTYPE;
15718
 
15719
 
15720
BEGIN
15721
 
15722
	OPEN curInfo;
15723
    FETCH curInfo INTO recInfo;
15724
 
15725
	WHILE curInfo%FOUND
15726
	LOOP
15727
 
3959 dpurdie 15728
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
15729
		VALUES( recInfo.PV_ID, 2, 5);
15730
 
15731
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
15732
 
1373 dpurdie 15733
		FETCH curInfo INTO recInfo;
3959 dpurdie 15734
 
1373 dpurdie 15735
	END LOOP;
15736
 
15737
	CLOSE curInfo;
15738
 
15739
 
15740
 
15741
 
3959 dpurdie 15742
END INSERT_INTO_PACKAGE_BUILD_INFO;
4040 dpurdie 15743
 
1374 dpurdie 15744
/
1373 dpurdie 15745
 
4040 dpurdie 15746
/
15747
--------------------------------------------------------
15748
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
15749
--------------------------------------------------------
15750
set define off;
15751
 
3959 dpurdie 15752
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
1373 dpurdie 15753
 
3959 dpurdie 15754
/******************************************************************************
15755
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
15756
   PURPOSE:    
1373 dpurdie 15757
 
3959 dpurdie 15758
   REVISIONS:
15759
   Ver        Date        Author           Description
15760
   ---------  ----------  ---------------  ------------------------------------
15761
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 15762
 
3959 dpurdie 15763
   NOTES:
1373 dpurdie 15764
 
3959 dpurdie 15765
   Automatically available Auto Replace Keywords:
15766
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
15767
      Sysdate:         6/12/2006
15768
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
15769
      Username:         (set in TOAD Options, Procedure Editor)
15770
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 15771
 
3959 dpurdie 15772
******************************************************************************/
1373 dpurdie 15773
 
3959 dpurdie 15774
	CURSOR curInfo IS
15775
    SELECT PV_ID
15776
	FROM PACKAGE_BUILD_ENV
15777
	WHERE BE_ID IN (11, 12);
15778
    recInfo curInfo%ROWTYPE;
15779
 
15780
 
1373 dpurdie 15781
BEGIN
15782
 
3959 dpurdie 15783
	OPEN curInfo;
15784
    FETCH curInfo INTO recInfo;
15785
 
15786
	WHILE curInfo%FOUND
15787
	LOOP
1373 dpurdie 15788
 
3959 dpurdie 15789
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
15790
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
15791
 
15792
		FETCH curInfo INTO recInfo;
15793
 
15794
	END LOOP;
1373 dpurdie 15795
 
3959 dpurdie 15796
	CLOSE curInfo;
1373 dpurdie 15797
 
15798
 
15799
 
15800
 
3959 dpurdie 15801
END INSERT_MULTIPLE_STICKY_NOTES;
4040 dpurdie 15802
 
1374 dpurdie 15803
/
1373 dpurdie 15804
 
4040 dpurdie 15805
/
15806
--------------------------------------------------------
15807
--  DDL for Procedure LEVEL_N_CONFLICTS
15808
--------------------------------------------------------
15809
set define off;
15810
 
3959 dpurdie 15811
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
15812
   nnrtag_id       IN       NUMBER,
15813
   nnsession_num   IN       NUMBER,
15814
   nnrowcnt        OUT      NUMBER,
15815
   nniteration     IN       NUMBER
15816
)
15817
IS
1373 dpurdie 15818
/* ---------------------------------------------------------------------------
3959 dpurdie 15819
    Version: 3.0.1
1373 dpurdie 15820
   --------------------------------------------------------------------------- */
3959 dpurdie 15821
   previteration   NUMBER := nniteration - 1;
1373 dpurdie 15822
BEGIN
3959 dpurdie 15823
   /* ---------  LEVEL 1 CONFILCTS -----------
15824
   || Following states are used:
15825
   || 0 -> NOT FOUND
15826
   || 1 -> MAJOR
15827
   || 2 -> MINOR MINOR
15828
   */
15829
   INSERT INTO temp_env_states
15830
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
15831
                      pv.pv_id, pv.pkg_id, pv.v_ext,
15832
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
15833
                 FROM package_dependencies dep,
15834
                      package_versions dpv,
15835
                      package_versions pv,
15836
                      release_content rel,
15837
                      temp_env_states tes
15838
                WHERE rel.pv_id = dep.pv_id
15839
                  AND rel.rtag_id = nnrtag_id
15840
                  AND dep.pv_id = pv.pv_id
15841
                  AND dep.dpv_id = dpv.pv_id
15842
                  AND dpv.pkg_id = tes.pkg_id
15843
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
15844
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
15845
                  AND tes.session_num = nnsession_num
15846
                  AND tes.level_num = previteration
15847
                  AND (dep.pv_id, dep.dpv_id) IN 
15848
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
15849
                                                 || packages already stored in Temp Table.
15850
                                                 */
15851
                      (
15852
                         SELECT pd.pv_id, pd.dpv_id
15853
                           FROM package_dependencies pd, release_content rc
15854
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
15855
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
15856
                         MINUS
15857
                         SELECT igw.pv_id, igw.dpv_id
15858
                           FROM ignore_warnings igw
15859
                          WHERE igw.rtag_id = nnrtag_id);
1373 dpurdie 15860
 
3959 dpurdie 15861
   nnrowcnt := SQL%ROWCOUNT;
15862
END level_n_conflicts;
4040 dpurdie 15863
 
1374 dpurdie 15864
/
1373 dpurdie 15865
 
4040 dpurdie 15866
/
15867
--------------------------------------------------------
15868
--  DDL for Procedure LEVEL_ONE_CONFLICTS
15869
--------------------------------------------------------
15870
set define off;
15871
 
1373 dpurdie 15872
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
15873
   nnrtag_id       IN   NUMBER,
15874
   nnsession_num   IN   NUMBER
15875
)
15876
IS
15877
BEGIN
15878
   /* ---------  LEVEL 1 CONFILCTS -----------
15879
   || Following states are used:
15880
   || 0 -> NOT FOUND
15881
   || 1 -> MAJOR
15882
   || 2 -> MINOR MINOR
15883
   */
15884
   INSERT INTO temp_env_states
15885
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
15886
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
15887
                      DECODE (frc.v_nmm,
15888
                              NULL, 0,
15889
                              errpv.v_nmm, DECODE (frc.v_mm,
15890
                                                   errpv.v_mm, NULL,
15891
                                                   2
15892
                                                  ),
15893
                              1
15894
                             ) AS MESSAGE
15895
                 FROM (
15896
                       /* Full Release Contents used for reference*/
15897
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
15898
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
15899
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
15900
                                (SELECT COUNT(*)
15901
                                   FROM ADVISORY_RIPPLE avr
15902
                                  WHERE avr.rtag_id = rel.rtag_id
15903
                                    AND avr.pv_id = rel.pv_id
15904
                                ) AS IsAvr
15905
                          FROM release_content rel,
15906
                                package_versions rpv
15907
                          WHERE rel.pv_id = rpv.pv_id
15908
                             AND rtag_id = nnrtag_id
15909
                      ) frc,
15910
 
15911
                      (
15912
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
15913
                          necessarily be satisfied in the release) */
15914
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
15915
                         FROM package_dependencies dep,
15916
                              package_versions dep_dpv
15917
                        WHERE dep.dpv_id = dep_dpv.pv_id
15918
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
15919
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
15920
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
15921
                       MINUS
15922
                       /* MINUS Dependencies to be ignored */
15923
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
15924
                         FROM ignore_warnings igw,
15925
                              package_versions igw_dpv
15926
                        WHERE igw.dpv_id = igw_dpv.pv_id
15927
                          AND igw.rtag_id = nnrtag_id
15928
                      ) err,
15929
                      package_versions errpkg,
15930
                      package_versions errpv
15931
                WHERE err.err_dpv = errpv.pv_id
15932
                  AND errpv.pkg_id = frc.pkg_id(+)
15933
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
15934
                  AND err.pv_id = errpkg.pv_id
15935
                  AND frc.IsAvr = 0;
15936
END level_one_conflicts;
4040 dpurdie 15937
 
1374 dpurdie 15938
/
1373 dpurdie 15939
 
4040 dpurdie 15940
/
15941
--------------------------------------------------------
15942
--  DDL for Procedure LOCK_PACKAGE
15943
--------------------------------------------------------
15944
set define off;
15945
 
1373 dpurdie 15946
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15947
											 nUserId IN NUMBER ) IS
15948
/* ---------------------------------------------------------------------------
15949
    Version: 4.0
15950
   --------------------------------------------------------------------------- */
15951
 
15952
BEGIN
15953
 
15954
    -- Lock Package
15955
    UPDATE PACKAGE_VERSIONS pv SET
15956
    	pv.DLOCKED = 'Y'
15957
    WHERE pv.PV_ID = nPvId;
15958
 
15959
    /* LOG ACTION */
15960
   	Log_Action ( nPvId, 'lock_package', nUserId );
15961
 
15962
END Lock_Package;
4040 dpurdie 15963
 
1374 dpurdie 15964
/
1373 dpurdie 15965
 
4040 dpurdie 15966
/
15967
--------------------------------------------------------
15968
--  DDL for Procedure LOG_ACTION
15969
--------------------------------------------------------
15970
set define off;
15971
 
3959 dpurdie 15972
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15973
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
15974
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
15975
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 15976
/* ---------------------------------------------------------------------------
15977
    Version: 3.0
15978
   --------------------------------------------------------------------------- */
15979
 
3959 dpurdie 15980
    ActionTypeId NUMBER;
1373 dpurdie 15981
 
15982
BEGIN
15983
 
3959 dpurdie 15984
    -- Get Action Type FK
15985
    SELECT act.ACTTYPE_ID INTO ActionTypeId
15986
      FROM ACTION_TYPE act
15987
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 15988
 
15989
 
3959 dpurdie 15990
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
15991
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
1373 dpurdie 15992
 
15993
 
3959 dpurdie 15994
END Log_Action;
4040 dpurdie 15995
 
1374 dpurdie 15996
/
1373 dpurdie 15997
 
4040 dpurdie 15998
/
15999
--------------------------------------------------------
16000
--  DDL for Procedure LOG_ACTION_BULK
16001
--------------------------------------------------------
16002
set define off;
16003
 
3959 dpurdie 16004
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
16005
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
16006
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
16007
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 16008
/* ---------------------------------------------------------------------------
3959 dpurdie 16009
    Version: 3.0
1373 dpurdie 16010
   --------------------------------------------------------------------------- */
16011
 
3959 dpurdie 16012
    ActionTypeId NUMBER;
16013
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 16014
 
16015
BEGIN
16016
 
3959 dpurdie 16017
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
1373 dpurdie 16018
 
3959 dpurdie 16019
    -- Get Action Type FK
16020
    SELECT act.ACTTYPE_ID INTO ActionTypeId
16021
      FROM ACTION_TYPE act
16022
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 16023
 
3959 dpurdie 16024
    -- Log Action
16025
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
16026
    SELECT nUserId,
16027
    	   ORA_SYSDATETIME,
16028
           pv.PV_ID,
16029
           sAdditionalComments,
16030
           ActionTypeId
16031
      FROM PACKAGE_VERSIONS pv
16032
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 16033
 
16034
 
3959 dpurdie 16035
END Log_Action_Bulk;
4040 dpurdie 16036
 
1374 dpurdie 16037
/
1373 dpurdie 16038
 
4040 dpurdie 16039
/
16040
--------------------------------------------------------
16041
--  DDL for Procedure LOG_DAEMON_ACTION
16042
--------------------------------------------------------
16043
set define off;
16044
 
3959 dpurdie 16045
  CREATE OR REPLACE PROCEDURE "LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
16046
												 enumActionTypeName IN VARCHAR2,
16047
		                                         nUserId IN NUMBER,
16048
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
16049
/* ---------------------------------------------------------------------------
16050
    Version: 3.0
16051
   --------------------------------------------------------------------------- */
1373 dpurdie 16052
 
3959 dpurdie 16053
    ActionTypeId NUMBER;
1373 dpurdie 16054
 
16055
BEGIN
16056
 
3959 dpurdie 16057
    -- Get Action Type FK
16058
    SELECT act.ACTTYPE_ID INTO ActionTypeId
16059
      FROM ACTION_TYPE act
16060
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 16061
 
16062
 
3959 dpurdie 16063
    INSERT INTO DAEMON_ACTION_LOG
16064
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
1373 dpurdie 16065
 
16066
 
3959 dpurdie 16067
END Log_Daemon_Action;
4040 dpurdie 16068
 
1374 dpurdie 16069
/
1373 dpurdie 16070
 
4040 dpurdie 16071
/
16072
--------------------------------------------------------
16073
--  DDL for Procedure LOG_PROJECT_ACTION
16074
--------------------------------------------------------
16075
set define off;
16076
 
3959 dpurdie 16077
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
16078
												 enumActionTypeName IN VARCHAR2,
16079
		                                         nUserId IN NUMBER,
16080
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
16081
												 nRtagId IN NUMBER  ) IS
1373 dpurdie 16082
/* ---------------------------------------------------------------------------
3959 dpurdie 16083
    Version: 3.0
1373 dpurdie 16084
   --------------------------------------------------------------------------- */
16085
 
3959 dpurdie 16086
    ActionTypeId NUMBER;
1373 dpurdie 16087
 
16088
BEGIN
16089
 
3959 dpurdie 16090
    -- Get Action Type FK
16091
    SELECT act.ACTTYPE_ID INTO ActionTypeId
16092
      FROM ACTION_TYPE act
16093
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 16094
 
16095
 
3959 dpurdie 16096
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
16097
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
1373 dpurdie 16098
 
16099
 
3959 dpurdie 16100
END Log_Project_Action;
4040 dpurdie 16101
 
1374 dpurdie 16102
/
1373 dpurdie 16103
 
4040 dpurdie 16104
/
16105
--------------------------------------------------------
16106
--  DDL for Procedure NEW_ADDITIONAL_NOTE
16107
--------------------------------------------------------
16108
set define off;
16109
 
3959 dpurdie 16110
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
16111
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
16112
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
16113
                                                  pnUser_id IN NUMBER,
16114
                                                  outErrCode OUT NUMBER
16115
                                                 ) IS
1373 dpurdie 16116
/* ---------------------------------------------------------------------------
3959 dpurdie 16117
    Version: 3.0.0
1373 dpurdie 16118
   --------------------------------------------------------------------------- */
16119
 
16120
    newID NUMBER;
16121
 
16122
	CURSOR an_duplicate_cur IS
3959 dpurdie 16123
        SELECT note_id
1373 dpurdie 16124
          FROM ADDITIONAL_NOTES
16125
         WHERE pv_id = pnPv_id
16126
           AND note_title = psNote_title;
16127
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
16128
 
16129
BEGIN
16130
	outErrCode := -1;		-- Set default return error code to ERROR state
16131
 
16132
	OPEN an_duplicate_cur;
16133
    FETCH an_duplicate_cur INTO an_duplicate_rec;
16134
 
3959 dpurdie 16135
    IF an_duplicate_cur%NOTFOUND
1373 dpurdie 16136
    THEN
3959 dpurdie 16137
		/* No duplicate titles */
16138
		-- Get new ID --
16139
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
16140
 
16141
		--- Add Additional Note ---
16142
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
16143
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
1373 dpurdie 16144
		outErrCode := 0;		-- Set return to SUCCESS
16145
	END IF;
16146
 
16147
	CLOSE an_duplicate_cur;
3959 dpurdie 16148
END New_Additional_Note;
4040 dpurdie 16149
 
1374 dpurdie 16150
/
1373 dpurdie 16151
 
4040 dpurdie 16152
/
16153
--------------------------------------------------------
16154
--  DDL for Procedure NEW_PACKAGE_NAME
16155
--------------------------------------------------------
16156
set define off;
16157
 
3959 dpurdie 16158
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
16159
                                               retPKG_ID OUT NUMBER ) IS
1373 dpurdie 16160
/* ---------------------------------------------------------------------------
3959 dpurdie 16161
    Version: 3.0.0
1373 dpurdie 16162
   --------------------------------------------------------------------------- */
16163
 
3959 dpurdie 16164
    CURSOR packages_cur IS
16165
        SELECT pkg.pkg_id
16166
          FROM packages pkg
16167
         WHERE pkg.pkg_name = SSpkg_name;
16168
    packages_rec packages_cur%ROWTYPE;
1373 dpurdie 16169
 
16170
 
16171
BEGIN
16172
 
3959 dpurdie 16173
    /* ---------------------------------------------------- */
16174
    /* Find if package name exists                          */
16175
    /* ---------------------------------------------------- */
1373 dpurdie 16176
 
3959 dpurdie 16177
    OPEN packages_cur;
16178
    FETCH packages_cur INTO packages_rec;
1373 dpurdie 16179
 
3959 dpurdie 16180
    IF packages_cur%NOTFOUND
16181
    THEN
16182
        -- Create new pkg_name --
16183
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
1373 dpurdie 16184
 
3959 dpurdie 16185
        INSERT INTO packages ( pkg_id, pkg_name )
16186
        VALUES ( retPKG_ID, SSpkg_name );
1373 dpurdie 16187
 
3959 dpurdie 16188
    ELSE
16189
        retPKG_ID := packages_rec.pkg_id;
1373 dpurdie 16190
 
3959 dpurdie 16191
    END IF;
1373 dpurdie 16192
 
16193
 
3959 dpurdie 16194
    CLOSE packages_cur;
1373 dpurdie 16195
 
3959 dpurdie 16196
END New_Package_Name;
4040 dpurdie 16197
 
1374 dpurdie 16198
/
1373 dpurdie 16199
 
4040 dpurdie 16200
/
16201
--------------------------------------------------------
16202
--  DDL for Procedure NEW_PATCH
16203
--------------------------------------------------------
16204
set define off;
16205
 
1373 dpurdie 16206
  CREATE OR REPLACE PROCEDURE "NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16207
 	   	  		  					  	NNparent_id IN NUMBER,
16208
                                        sPatchIdList IN VARCHAR2,
16209
										NNuser_id IN NUMBER ) IS
16210
/* ---------------------------------------------------------------------------
16211
    Version: 3.5
16212
   --------------------------------------------------------------------------- */
16213
 
16214
    patchPv_id    NUMBER;
16215
	parPkg_id	  NUMBER;
16216
    LastInstallOrder NUMBER;
16217
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
16218
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16219
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16220
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
16221
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16222
 
16223
	CURSOR parent_cur IS
16224
        SELECT pv.*, pkg.pkg_name
16225
          FROM package_versions pv,
16226
		       packages pkg
16227
         WHERE pv.pv_id = NNparent_id
16228
		   AND pv.pkg_id = pkg.pkg_id;
16229
    parent_rec parent_cur%ROWTYPE;
16230
 
16231
    CURSOR patch_cur IS
16232
        SELECT pv.*, pg.pkg_name
16233
          FROM package_versions pv,
16234
		       packages pg
16235
         WHERE pv.pkg_id = parPkg_id
16236
		   AND pv.pkg_version = SSpatch_version
16237
		   AND pv.pkg_id = pg.pkg_id;
16238
    patch_rec patch_cur%ROWTYPE;
16239
 
16240
	CURSOR releases_cur IS
16241
        SELECT rc.pv_id
16242
		  FROM release_content rc
16243
		 WHERE rc.pv_id = patch_rec.pv_id;
16244
    releases_rec releases_cur%ROWTYPE;
16245
 
16246
 
16247
BEGIN
16248
 
16249
	-- Get Last Install Order
16250
    SELECT Count(*) INTO LastInstallOrder
16251
	  FROM PACKAGE_PATCHES pp
16252
	 WHERE pp.PV_ID = NNparent_id;
16253
 
16254
 
16255
    -- Get parent details
16256
	OPEN parent_cur;
16257
    FETCH parent_cur INTO parent_rec;
16258
	parPkg_id := parent_rec.pkg_id;
16259
 
16260
 
16261
	-- Find if patch exists in database
16262
    OPEN patch_cur;
16263
    FETCH patch_cur INTO patch_rec;
16264
 
16265
 
16266
    -- Parent must be official
16267
    IF parent_rec.dlocked = 'Y' THEN
16268
 
16269
	    IF patch_cur%NOTFOUND
16270
	    THEN
16271
        	isPatchDlocked := 'N';
16272
 
16273
	        -- Create new patch version --
16274
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
16275
 
16276
 
16277
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
16278
 
16279
	        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 )
16280
				   VALUES (
16281
						   patchPv_id,
16282
	                       parPkg_id,
16283
	                       SSpatch_version,
16284
	                       isPatchDlocked,
16285
	                       ORA_SYSDATE,
16286
	                       NNuser_id,
16287
	                       ORA_SYSDATETIME,
16288
	                       NNuser_id,
16289
	                       SSV_MM,
16290
	                       SSV_NMM,
16291
	                       SSV_EXT,
16292
	                       parent_rec.src_path,
16293
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
16294
	                       NNuser_id,
16295
						   'Y',
16296
                           patchPv_id,
16297
						   parent_rec.bs_id,
16298
						   parent_rec.is_autobuildable,
16299
						   parent_rec.ripple_field
16300
 
16301
						   );
16302
 
16303
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
16304
		    	   ( SELECT NNparent_id AS pv_id,
16305
				            pv.pv_id AS patch_id,
16306
	                        LastInstallOrder + 1 AS INSTALL_ORDER
16307
				       FROM package_versions pv
16308
					  WHERE pv.pv_id = patchPv_id
16309
					    AND pv.is_patch = 'Y' );
16310
 
16311
	        /* LOG ACTION */
16312
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
16313
        			     'Patch version created: '|| SSpatch_version );
16314
 
16315
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
16316
        			     'New patch created and attached: '|| SSpatch_version );
16317
 
16318
 
16319
	    ELSE
16320
 
16321
		    patchPv_id := patch_rec.pv_id;
16322
	    	isPatchDlocked := patch_rec.dlocked;
16323
 
16324
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
16325
		    OPEN releases_cur;
16326
		    FETCH releases_cur INTO releases_rec;
16327
 
16328
			IF releases_cur%NOTFOUND
16329
	   		THEN
16330
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
16331
				UPDATE package_versions SET
16332
					   is_patch = 'Y'
16333
					   WHERE pv_id = patchPv_id;
16334
 
16335
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
16336
			    	   ( SELECT NNparent_id AS pv_id,
16337
					            pv.pv_id AS patch_id,
16338
	                            LastInstallOrder + 1 AS INSTALL_ORDER
16339
					       FROM package_versions pv
16340
						  WHERE pv.pv_id = patchPv_id
16341
						    AND pv.is_patch = 'Y' );
16342
 
16343
			END IF;
16344
 
16345
			CLOSE releases_cur;
16346
 
16347
            /* LOG ACTION */
16348
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
16349
        			     'Patch version was found and attached: '|| SSpatch_version );
16350
 
16351
	    END IF;
16352
 
16353
 
16354
 
16355
 
16356
    END IF;
16357
 
16358
 
16359
 
16360
    /* Create Patch Dependencies */
16361
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
16362
 
16363
 
16364
    -- Make sure patch is unofficial before altering its dependencies
16365
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
16366
    	-- Delete Existing Dependencies
16367
        DELETE
16368
          FROM PACKAGE_DEPENDENCIES dep
16369
         WHERE dep.PV_ID = patchPv_id;
16370
 
16371
 
16372
        -- Insert new dependencies
16373
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
16374
        SELECT patchPv_id AS PV_ID,
16375
        	   pv.PV_ID AS DPV_ID,
16376
               parPkg_id AS PKG_ID,
16377
               pv.PKG_ID AS DPKG_ID,
16378
               'L' AS BUILD_TYPE
16379
          FROM PACKAGE_VERSIONS pv
16380
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
16381
 
16382
 
16383
    END IF;
16384
 
16385
 
16386
    CLOSE parent_cur;
16387
    CLOSE patch_cur;
16388
END New_Patch;
4040 dpurdie 16389
 
1374 dpurdie 16390
/
1373 dpurdie 16391
 
4040 dpurdie 16392
/
16393
--------------------------------------------------------
16394
--  DDL for Procedure NEW_UNIT_TEST
16395
--------------------------------------------------------
16396
set define off;
16397
 
3959 dpurdie 16398
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
16399
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
16400
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
16401
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
16402
                                            sDpkg_path IN VARCHAR2,
16403
                                            sResults IN VARCHAR2,
16404
                                            sCompletion_date IN VARCHAR2,
16405
                                            nCompleted_by IN NUMBER,
16406
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
16407
											enumTEST_TYPE_NOT_DONE IN NUMBER,
16408
											outFileName OUT VARCHAR2
16409
                                           ) IS
16410
/* ---------------------------------------------------------------------------
16411
    Version: 3.2.0
16412
   --------------------------------------------------------------------------- */
1373 dpurdie 16413
 
3959 dpurdie 16414
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 16415
 
3959 dpurdie 16416
    newID NUMBER;
16417
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
16418
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 16419
 
3959 dpurdie 16420
BEGIN
1373 dpurdie 16421
 
3959 dpurdie 16422
	-- Get new ID --
16423
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
1373 dpurdie 16424
 
3959 dpurdie 16425
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
16426
       	ResultsURL := sResults;
16427
       ELSE
16428
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
16429
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
16430
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
16431
           END IF;
16432
       END IF;
1373 dpurdie 16433
 
3959 dpurdie 16434
	-- Remove NOT_DONE entry if exists
16435
	DELETE FROM UNIT_TESTS
16436
	 WHERE pv_id = nPv_id
16437
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
1373 dpurdie 16438
 
3959 dpurdie 16439
	--- Add Additional Note ---
16440
    INSERT INTO UNIT_TESTS ( TEST_ID,
16441
								PV_ID,
16442
								TEST_TYPES_FK,
16443
								TEST_SUMMARY,
16444
								COMPLETION_DATE,
16445
								COMPLETED_BY,
16446
								RESULTS_URL,
16447
								RESULTS_ATTACHMENT_NAME,
16448
								NUMOF_TEST )
16449
    VALUES (
16450
       	newID,
16451
           nPv_id,
16452
           nTestTypeId,
16453
           sTest_summary,
16454
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
16455
           nCompleted_by,
16456
           ResultsURL,
16457
           ResultsAttachment,
16458
		   sNumOfTest );
1373 dpurdie 16459
 
3959 dpurdie 16460
END New_Unit_Test;
4040 dpurdie 16461
 
1374 dpurdie 16462
/
1373 dpurdie 16463
 
1374 dpurdie 16464
/
4040 dpurdie 16465
--------------------------------------------------------
16466
--  DDL for Procedure OLE
16467
--------------------------------------------------------
16468
set define off;
1373 dpurdie 16469
 
3959 dpurdie 16470
  CREATE OR REPLACE PROCEDURE "OLE" 
16471
IS retval VARCHAR2(40);   
16472
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
16473
DBMS_OUTPUT.PUT_LINE(retval);
4040 dpurdie 16474
 
3959 dpurdie 16475
/
1373 dpurdie 16476
 
4040 dpurdie 16477
/
16478
--------------------------------------------------------
16479
--  DDL for Procedure PAOLO_BUILD_TREE
16480
--------------------------------------------------------
16481
set define off;
16482
 
3959 dpurdie 16483
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
1373 dpurdie 16484
 
3959 dpurdie 16485
    sessionNumber NUMBER := 0;
16486
    iteration NUMBER := 1; 
16487
    rowCnt NUMBER := 0;
16488
    maxIterations 	NUMBER := 50;
16489
 
1373 dpurdie 16490
BEGIN
3959 dpurdie 16491
 
16492
 
16493
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
16494
    SELECT sessionNumber, iteration, rc.PV_ID
16495
      FROM RELEASE_CONTENT rc
16496
     WHERE rc.RTAG_ID = nRtag_id;
16497
 
16498
    iteration := iteration + 1;
16499
    LOOP
16500
 
16501
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
16502
		SELECT sessionNumber,     
16503
               iteration,
16504
               dep.DPV_ID
16505
          FROM TEMP_TREE_BROWSE ttb,
16506
               PACKAGE_DEPENDENCIES dep
16507
         WHERE dep.PV_ID = ttb.PV_ID 
16508
           AND ttb.LEVEL_NUM = iteration - 1 
16509
 
16510
         MINUS  
16511
 
16512
        SELECT sessionNumber, iteration, ttb.PV_ID
16513
          FROM TEMP_TREE_BROWSE ttb;   
16514
 
16515
 
16516
 
16517
 
16518
		rowCnt := SQL%ROWCOUNT;
16519
		IF rowCnt > 0 THEN
16520
           iteration := iteration + 1;
16521
		END IF;
16522
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
16523
    END LOOP; 
16524
 
16525
END PAOLO_Build_Tree;
4040 dpurdie 16526
 
1374 dpurdie 16527
/
1373 dpurdie 16528
 
4040 dpurdie 16529
/
16530
--------------------------------------------------------
16531
--  DDL for Procedure REBUILD_ENVIRONMENT
16532
--------------------------------------------------------
16533
set define off;
16534
 
1373 dpurdie 16535
  CREATE OR REPLACE PROCEDURE "REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
16536
 
16537
/* ---------------------------------------------------------------------------
16538
    Version: 3.3
16539
   --------------------------------------------------------------------------- */
16540
    rowCnt NUMBER := 0;
16541
    iteration NUMBER := 2;          -- Iterations counter
16542
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
16543
                                    -- This will prevent infinite loops if cyrcular dependencies are found
16544
    sessionNum NUMBER;
16545
BEGIN
16546
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
16547
 
16548
 
16549
    -- Redo Patch Ignore warnings
16550
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
16551
 
16552
 
16553
    Level_One_Conflicts ( NNrtag_id, sessionNum );
16554
 
16555
    LOOP
16556
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
16557
        iteration := iteration + 1;
16558
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
16559
    END LOOP;
16560
 
16561
    Update_Package_States ( NNrtag_id, sessionNum );
16562
 
16563
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
16564
 
16565
    -- Flag Packages with New Patches Available
16566
    Check_New_Patches ( NNrtag_id );
16567
 
16568
	Clean_Do_Not_Ripple( NNrtag_id );
16569
 
16570
 
16571
	/* Circular Dependency Flag */
16572
    /*
16573
	IF iteration > maxIterations
16574
	THEN
16575
		UPDATE release_tags SET
16576
		   	   circular_dependency = 'Y'
16577
		 WHERE rtag_id = NNrtag_id;
16578
	ELSE
16579
		UPDATE release_tags SET
16580
		   	   circular_dependency = NULL
16581
		 WHERE rtag_id = NNrtag_id;
16582
	END IF;
16583
    */
16584
END Rebuild_Environment;
4040 dpurdie 16585
 
1374 dpurdie 16586
/
1373 dpurdie 16587
 
4040 dpurdie 16588
/
16589
--------------------------------------------------------
16590
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
16591
--------------------------------------------------------
16592
set define off;
16593
 
3959 dpurdie 16594
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
16595
  sender      IN VARCHAR2,
16596
  recipient   IN VARCHAR2,
16597
  ccrecipient IN VARCHAR2,
16598
  subject     IN VARCHAR2,
16599
  message     IN VARCHAR2
16600
  ) IS
16601
 
16602
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
16603
  connection utl_smtp.connection;
16604
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
16605
  header VARCHAR2(1000);
16606
 
16607
BEGIN
16608
 
16609
  --
16610
  -- Start the connection.
16611
  --
16612
  connection := utl_smtp.open_connection(mailhost,25);
16613
 
16614
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
16615
     'From: '||sender||''||crlf||
16616
  'Subject: '||subject||crlf||
16617
       'To: '||recipient||crlf||
16618
       'CC: '||ccrecipient;
16619
 
16620
  --
16621
  -- Handshake with the SMTP server
16622
  --
16623
  utl_smtp.helo(connection, mailhost);
16624
  utl_smtp.mail(connection, sender);
16625
  utl_smtp.rcpt(connection, recipient);
16626
  utl_smtp.rcpt(connection, ccrecipient);
16627
  utl_smtp.open_data(connection);
16628
  --
16629
  -- Write the header
16630
  --
16631
  utl_smtp.write_data(connection, header);
16632
  --
16633
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
16634
  --
16635
  utl_smtp.write_data(connection, crlf ||message);
16636
  utl_smtp.close_data(connection);
16637
  utl_smtp.quit(connection);
16638
 
16639
EXCEPTION
16640
  WHEN UTL_SMTP.INVALID_OPERATION THEN
16641
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
16642
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
16643
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
16644
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
16645
    dbms_output.put_line(' Errors in code for SMTP transaction.');
16646
 
16647
END RELEASE_MANAGER_MAILOUT;
4040 dpurdie 16648
 
3959 dpurdie 16649
/
16650
 
4040 dpurdie 16651
/
16652
--------------------------------------------------------
16653
--  DDL for Procedure REMOVE_COMPONENTS
16654
--------------------------------------------------------
16655
set define off;
16656
 
3959 dpurdie 16657
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
16658
/* ---------------------------------------------------------------------------
16659
    Version: 3.0.0
16660
   --------------------------------------------------------------------------- */
16661
 
16662
 
16663
BEGIN
16664
 
16665
	 --- Delete From RELEASE_COMPONENTS
16666
	 DELETE FROM RELEASE_COMPONENTS
16667
	 WHERE PV_ID = nPvId;
16668
 
16669
END Remove_Components;
4040 dpurdie 16670
 
3959 dpurdie 16671
/
16672
 
4040 dpurdie 16673
/
16674
--------------------------------------------------------
16675
--  DDL for Procedure REMOVE_DOCUMENT
16676
--------------------------------------------------------
16677
set define off;
16678
 
3959 dpurdie 16679
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16680
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
16681
                                              nUserId IN NUMBER ) IS
16682
/* ---------------------------------------------------------------------------
16683
    Version: 3.0
16684
   --------------------------------------------------------------------------- */
16685
 
16686
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
16687
 
16688
BEGIN
16689
 
16690
	-- Get Doc Num
16691
    SELECT pd.DOC_NUM INTO DocNumber
16692
      FROM PACKAGE_DOCUMENTS pd
16693
     WHERE pd.PV_ID = nPvId
16694
       AND pd.DOC_ID = nDocId;
16695
 
16696
 
16697
	-- Delete Document
16698
    DELETE
16699
      FROM PACKAGE_DOCUMENTS pd
16700
     WHERE pd.PV_ID = nPvId
16701
       AND pd.DOC_ID = nDocId;
16702
 
16703
 
16704
    /* LOG ACTION */
16705
   	Log_Action ( nPvId, 'document_remove', nUserId,
16706
   			     'Document number: '|| DocNumber );
16707
 
16708
 
16709
END Remove_Document;
4040 dpurdie 16710
 
3959 dpurdie 16711
/
16712
 
4040 dpurdie 16713
/
16714
--------------------------------------------------------
16715
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
16716
--------------------------------------------------------
16717
set define off;
16718
 
3959 dpurdie 16719
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
16720
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
16721
												  	nUserId IN NUMBER
16722
	   	  		  									) IS
16723
 
1373 dpurdie 16724
/******************************************************************************
3959 dpurdie 16725
   NAME:       REMOVE_PACKAGE_INTEREST
16726
   PURPOSE:    To remove interest in a given package per project
1373 dpurdie 16727
 
16728
   REVISIONS:
16729
   Ver        Date        Author           Description
16730
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16731
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
1373 dpurdie 16732
 
16733
   NOTES:
16734
 
16735
   Automatically available Auto Replace Keywords:
3959 dpurdie 16736
      Object Name:     REMOVE_PACKAGE_INTEREST
16737
      Sysdate:         12/05/2006
16738
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
1373 dpurdie 16739
      Username:         (set in TOAD Options, Procedure Editor)
16740
      Table Name:       (set in the "New PL/SQL Object" dialog)
16741
 
16742
******************************************************************************/
16743
BEGIN
16744
 
3959 dpurdie 16745
	 --Delete from PACKAGE_INTEREST
16746
	 DELETE FROM PACKAGE_INTEREST
16747
	 WHERE PROJ_ID = nProjId
16748
	 AND PKG_ID = nPkgId
16749
	 AND USER_ID = nUserId;
16750
 
16751
END REMOVE_PACKAGE_INTEREST;
4040 dpurdie 16752
 
1374 dpurdie 16753
/
1373 dpurdie 16754
 
4040 dpurdie 16755
/
16756
--------------------------------------------------------
16757
--  DDL for Procedure REMOVE_PATCH
16758
--------------------------------------------------------
16759
set define off;
16760
 
3959 dpurdie 16761
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
16762
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
16763
                                           nUserId IN NUMBER ) IS
1373 dpurdie 16764
/* ---------------------------------------------------------------------------
3959 dpurdie 16765
    Version: 4.0
1373 dpurdie 16766
   --------------------------------------------------------------------------- */
16767
 
3959 dpurdie 16768
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
1373 dpurdie 16769
 
3959 dpurdie 16770
CURSOR curPatch IS
16771
	SELECT pp.PV_ID,
16772
		   pp.PATCH_ID,
16773
	       ROWNUM AS NEW_INSTALL_ORDER
16774
	  FROM PACKAGE_PATCHES pp
16775
	 WHERE pp.PV_ID = nPvId
16776
	ORDER BY pp.INSTALL_ORDER;
16777
recPatch curPatch%ROWTYPE;
16778
 
1373 dpurdie 16779
BEGIN
16780
 
3959 dpurdie 16781
	 -- Delete Patch
16782
     DELETE
16783
       FROM PACKAGE_PATCHES pp
16784
      WHERE pp.PV_ID = nPvId
16785
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16786
 
16787
 
3959 dpurdie 16788
	-- Redo Install Order
16789
    OPEN curPatch;
16790
	FETCH curPatch INTO recPatch;
16791
 
16792
	WHILE curPatch%FOUND
16793
	LOOP
16794
 
16795
		UPDATE PACKAGE_PATCHES pp SET
16796
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
16797
		WHERE pp.PV_ID = nPvId
16798
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
16799
 
16800
		FETCH curPatch INTO recPatch;
16801
	END LOOP;
16802
 
16803
	CLOSE curPatch;
16804
 
16805
 
16806
 
16807
 
16808
    /* LOG ACTION */
16809
    SELECT pv.PKG_VERSION INTO PatchVersion
1373 dpurdie 16810
      FROM PACKAGE_VERSIONS pv
3959 dpurdie 16811
     WHERE pv.PV_ID = nPatchId;
1373 dpurdie 16812
 
3959 dpurdie 16813
   	Log_Action ( nPvId, 'patch_remove', nUserId,
16814
   			     'Version: '|| PatchVersion );
1373 dpurdie 16815
 
3959 dpurdie 16816
END Remove_Patch;
4040 dpurdie 16817
 
1374 dpurdie 16818
/
1373 dpurdie 16819
 
4040 dpurdie 16820
/
16821
--------------------------------------------------------
16822
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
16823
--------------------------------------------------------
16824
set define off;
16825
 
3959 dpurdie 16826
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
16827
	   	  		  						 			  nViewId IN NUMBER,
16828
										 			  sUserIdList IN VARCHAR2,
16829
										 			  nUserId IN NUMBER ) IS
1373 dpurdie 16830
 
3959 dpurdie 16831
GroupId NUMBER;													  
16832
 
16833
 
16834
 
1373 dpurdie 16835
/******************************************************************************
3959 dpurdie 16836
   NAME:       UPDATE_VIEW
16837
   PURPOSE:    
1373 dpurdie 16838
 
16839
   REVISIONS:
3959 dpurdie 16840
   Ver        Date        Author           		Description
1373 dpurdie 16841
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16842
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
1373 dpurdie 16843
 
16844
   NOTES:
16845
 
16846
   Automatically available Auto Replace Keywords:
3959 dpurdie 16847
      Object Name:     UPDATE_VIEW
16848
      Sysdate:         10/04/2006
16849
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
1373 dpurdie 16850
      Username:         (set in TOAD Options, Procedure Editor)
16851
      Table Name:       (set in the "New PL/SQL Object" dialog)
16852
 
16853
******************************************************************************/
16854
 
16855
BEGIN
3959 dpurdie 16856
	 SELECT GROUP_EMAIL_ID into GroupId
16857
	 FROM AUTOBUILD_FAILURE
16858
	 WHERE PROJ_ID = nProjId
16859
	 AND VIEW_ID = nViewId;
16860
 
16861
	 DELETE FROM MEMBERS_GROUP
16862
	 WHERE GROUP_EMAIL_ID = GroupId
16863
	 AND USER_ID IN (
16864
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
16865
	 );
16866
 
1373 dpurdie 16867
 
3959 dpurdie 16868
 
16869
END REMOVE_PROJECT_VIEW_OWNER;
4040 dpurdie 16870
 
3959 dpurdie 16871
/
1373 dpurdie 16872
 
4040 dpurdie 16873
/
16874
--------------------------------------------------------
16875
--  DDL for Procedure REMOVE_RELEASE_CONTENT
16876
--------------------------------------------------------
16877
set define off;
16878
 
3959 dpurdie 16879
  CREATE OR REPLACE PROCEDURE "REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
16880
													 sNotPvIdList IN VARCHAR2,
16881
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
16882
/* ---------------------------------------------------------------------------
16883
    Version: 3.0
16884
   --------------------------------------------------------------------------- */
1373 dpurdie 16885
 
3959 dpurdie 16886
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16887
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 16888
 
3959 dpurdie 16889
BEGIN
16890
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
16891
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
16892
 
16893
    -- Delete From Release Content
16894
    DELETE
16895
      FROM RELEASE_CONTENT
16896
	 WHERE rtag_id = nRTagId
16897
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
16898
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
16899
 
16900
 
16901
 
16902
END Remove_Release_Content;
4040 dpurdie 16903
 
1374 dpurdie 16904
/
3959 dpurdie 16905
 
4040 dpurdie 16906
/
16907
--------------------------------------------------------
16908
--  DDL for Procedure REMOVE_RUNTIME
16909
--------------------------------------------------------
16910
set define off;
16911
 
3959 dpurdie 16912
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16913
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
16914
                                             nUserId IN NUMBER ) IS
16915
/* ---------------------------------------------------------------------------
16916
    Version: 3.0
16917
   --------------------------------------------------------------------------- */
16918
 
16919
   RuntimeDependency VARCHAR2(4000);
16920
 
16921
BEGIN
16922
 
16923
	-- Get Runtime dependency
16924
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
16925
	  FROM RUNTIME_DEPENDENCIES rtd,
16926
	  	   PACKAGES pkg,
16927
	       PACKAGE_VERSIONS pv
16928
	 WHERE rtd.PV_ID = nPvId
16929
	   AND pv.PKG_ID = pkg.PKG_ID
16930
	   AND rtd.RTD_ID = pv.PV_ID
16931
	   AND rtd.RTD_ID = nRuntimeId;
16932
 
16933
 
16934
	-- Delete Document
16935
    DELETE
16936
      FROM RUNTIME_DEPENDENCIES rtd
16937
     WHERE rtd.PV_ID = nPvId
16938
       AND rtd.RTD_ID = nRuntimeId;
16939
 
16940
 
16941
    /* LOG ACTION */
16942
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
16943
   			     'Runtime package: '|| RuntimeDependency );
16944
 
16945
 
16946
END Remove_Runtime;
4040 dpurdie 16947
 
3959 dpurdie 16948
/
16949
 
4040 dpurdie 16950
/
16951
--------------------------------------------------------
16952
--  DDL for Procedure RENAME_PACKAGE_VERSION
16953
--------------------------------------------------------
16954
set define off;
16955
 
3959 dpurdie 16956
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
16957
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16958
													 cBuildType IN CHAR,
16959
                                                     NNuser_id IN NUMBER,
16960
                                                     errMessage OUT VARCHAR2 ) IS
16961
/* ---------------------------------------------------------------------------
16962
    Version: 3.2
16963
   --------------------------------------------------------------------------- */
16964
 
16965
    sPackageVersion VARCHAR2(4000);
16966
	sLabel VARCHAR2(4000) := NULL;
16967
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
16968
 
16969
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16970
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16971
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
16972
 
16973
    CURSOR package_versions_cur IS
16974
        SELECT pv_id
16975
     	  FROM package_versions
16976
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
16977
     	   AND pkg_version = SSpkg_version;
16978
    package_versions_rec package_versions_cur%ROWTYPE;
16979
 
16980
 
16981
BEGIN
16982
 
16983
    /* ---------------------------------------------------- */
16984
    /* Find if package_version exists                       */
16985
    /* ---------------------------------------------------- */
16986
 
16987
	errMessage := NULL;
16988
 
16989
 
16990
	-- Get previous version
16991
	SELECT pv.PKG_VERSION INTO OldPkgVersion
16992
      FROM PACKAGE_VERSIONS pv
16993
     WHERE pv.PV_ID = NNpv_id;
16994
 
16995
 
16996
	sPackageVersion := SSpkg_version;
16997
 
16998
 
16999
	IF OldPkgVersion != sPackageVersion THEN
17000
 
17001
	    OPEN package_versions_cur;
17002
	    FETCH package_versions_cur INTO package_versions_rec;
17003
 
17004
	    IF package_versions_cur%NOTFOUND
17005
	    THEN
17006
 
17007
			-- Split current version in parts
17008
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
17009
 
17010
 
17011
		    -- Automated built config
17012
			IF (cBuildType = 'A') THEN
17013
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
17014
			END IF;
17015
 
17016
 
17017
	        -- Packge version not found, hence rename it.
17018
	        UPDATE package_versions
17019
	           SET pkg_version = sPackageVersion,
17020
	               v_mm = SSV_MM,
17021
	               v_nmm = SSV_NMM,
17022
	               v_ext = SSV_EXT,
17023
	               modified_stamp = ORA_SYSDATETIME,
17024
	               modifier_id = NNuser_id,
17025
				   build_type = cBuildType,
17026
				   pkg_label = NULL
17027
	         WHERE pv_id = NNpv_id;
17028
 
17029
 
17030
			IF (cBuildType = 'A') THEN
17031
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
17032
				UPDATE PACKAGE_VERSIONS pv SET
17033
					pv.PKG_LABEL = sLabel
17034
		         WHERE pv_id = NNpv_id;
17035
			END IF;
17036
 
17037
			/* LOG ACTION */
17038
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
17039
 
17040
	    ELSE
17041
	        -- Package version exists. Cannot proceed.
17042
	        errMessage := 'enum_MSG_VERSION_EXISTS';
17043
 
17044
	    END IF;
17045
 
17046
	    CLOSE package_versions_cur;
17047
 
17048
	END IF;
17049
 
17050
 
17051
 
17052
 
17053
END Rename_Package_Version;
4040 dpurdie 17054
 
3959 dpurdie 17055
/
17056
 
4040 dpurdie 17057
/
17058
--------------------------------------------------------
17059
--  DDL for Procedure RESET_IGNORE_WARNINGS
17060
--------------------------------------------------------
17061
set define off;
17062
 
3959 dpurdie 17063
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
17064
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
17065
/* ---------------------------------------------------------------------------
17066
    Version: 5.0
17067
   --------------------------------------------------------------------------- */
17068
 
17069
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17070
 
17071
BEGIN
17072
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
17073
 
17074
    -- Remove Ignore Warnings
17075
     DELETE
17076
       FROM ignore_warnings
17077
	  WHERE (rtag_id, pv_id, dpv_id) IN
17078
	     (
17079
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
17080
	        FROM ignore_warnings igw,
17081
	             package_versions dpv,
17082
	             package_versions pv
17083
	       WHERE igw.dpv_id = dpv.pv_id
17084
	         AND igw.rtag_id = nRTagId
17085
	         AND dpv.pkg_id = pv.pkg_id
17086
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
17087
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
17088
         );
17089
 
17090
END Reset_Ignore_Warnings;
4040 dpurdie 17091
 
3959 dpurdie 17092
/
17093
 
4040 dpurdie 17094
/
17095
--------------------------------------------------------
17096
--  DDL for Procedure RIPPLE_PACKAGE
17097
--------------------------------------------------------
17098
set define off;
17099
 
3959 dpurdie 17100
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
17101
        sPvIdList IN VARCHAR2,
17102
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
17103
        nUserId IN NUMBER
17104
    ) IS
17105
/* ---------------------------------------------------------------------------
17106
    Version: 4.1
17107
   --------------------------------------------------------------------------- */
17108
 
17109
BEGIN
17110
 
17111
    IF (sPvIdList IS NULL) THEN
17112
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
17113
    END IF;
17114
 
17115
    -- Ripple Package
17116
    DELETE FROM DO_NOT_RIPPLE
17117
    WHERE RTAG_ID = nRtagId
17118
    AND PV_ID IN (
17119
        SELECT *
17120
        FROM THE (
17121
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
17122
            AS RELMGR_NUMBER_TAB_t )
17123
            FROM DUAL
17124
        )
17125
    );
17126
 
17127
    /* LOG ACTION */
17128
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
17129
 
17130
END Ripple_Package;
4040 dpurdie 17131
 
3959 dpurdie 17132
/
17133
 
4040 dpurdie 17134
/
17135
--------------------------------------------------------
17136
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
17137
--------------------------------------------------------
17138
set define off;
17139
 
17140
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
3959 dpurdie 17141
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17142
                                                          NNuser_id IN NUMBER,
17143
                                                          retPV_ID OUT NUMBER,
17144
                                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
17145
                                                          nBuildType IN CHAR DEFAULT 'M',
17146
                                                          nChangeType IN CHAR DEFAULT 'F') IS
17147
/* ---------------------------------------------------------------------------
17148
    Version: 4.0
17149
   --------------------------------------------------------------------------- */
17150
 
17151
    parPkg_id   NUMBER;
17152
    parPv_id    NUMBER;
17153
    cloneFrom_pv_id NUMBER;
17154
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
17155
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
17156
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
17157
    spackageversion VARCHAR2 (4000);
17158
 
17159
    CURSOR packages_cur IS
17160
        SELECT pkg_id FROM PACKAGES
17161
        WHERE pkg_name = SSpkg_name;
17162
    packages_rec packages_cur%ROWTYPE;
17163
 
17164
    CURSOR package_versions_cur IS
17165
        SELECT pv_id FROM PACKAGE_VERSIONS
17166
        WHERE pkg_id = parPkg_id
17167
        AND pkg_version = SSpkg_version;
17168
    package_versions_rec package_versions_cur%ROWTYPE;
17169
 
17170
    CURSOR clone_package_versions_cur IS
17171
        SELECT MAX(pv_id) AS pv_id
17172
          FROM PACKAGE_VERSIONS
17173
         WHERE pkg_id = parPkg_id
17174
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
17175
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
17176
 
17177
BEGIN
17178
    /* -------------------------------------------- */
17179
    /* Find if pkg_name exists and seed if required */
17180
    /* -------------------------------------------- */
17181
    OPEN packages_cur;
17182
    FETCH packages_cur INTO packages_rec;
17183
 
17184
    IF packages_cur%NOTFOUND
17185
    THEN
17186
        /* INSERT into packages table */
17187
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
17188
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
17189
 
17190
    ELSE
17191
        parPkg_id := packages_rec.pkg_id;
17192
 
17193
    END IF;
17194
 
17195
    CLOSE packages_cur;
17196
 
17197
 
17198
    /* ---------------------------------------------------- */
17199
    /* Find if package_version exists and seed if required  */
17200
    /* ---------------------------------------------------- */
17201
    OPEN package_versions_cur;
17202
    FETCH package_versions_cur INTO package_versions_rec;
17203
 
17204
    IF package_versions_cur%NOTFOUND
17205
    THEN
17206
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
17207
 
17208
        /* Generate automated version Number */
17209
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
17210
        spackageversion := SSpkg_version;
17211
 
17212
        IF ( nBuildType = 'A' )
17213
        THEN
17214
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
17215
        END If;
17216
 
17217
        /* LOG ACTION */
17218
        Log_Action ( parPv_id, 'new_version', NNuser_id,
17219
                     'New package version: '|| spackageversion );
17220
 
17221
 
17222
        /* Find similar pkg_name + ext to clone from */
17223
        OPEN clone_package_versions_cur;
17224
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
17225
 
17226
 
17227
        IF NOT clone_package_versions_rec.pv_id IS NULL
17228
        THEN
17229
            /* CLONE details from similar version  OR  from nCloneFromPvId */
17230
            IF ( NOT nCloneFromPvId IS NULL) THEN
17231
                cloneFrom_pv_id := nCloneFromPvId;
17232
            ELSE
17233
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
17234
            END IF;
17235
 
17236
            -- Clone Package Version Details --
17237
            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,
17238
                                           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  )
17239
                SELECT parPv_id         AS pv_id,
17240
                       parPkg_id        AS pkg_id,
17241
                       spackageversion  AS pkg_version,
17242
                       'N'              AS dlocked,
17243
                       Ora_Sysdate      AS created_stamp,
17244
                       NNuser_id        AS creator_id,
17245
                       Ora_Sysdatetime  AS modified_stamp,
17246
                       NNuser_id        AS modifier_id,
17247
                       SSV_MM           AS V_MM,
17248
                       SSV_NMM          AS V_NMM,
17249
                       SSV_EXT          AS V_EXT,
17250
                       pv.src_path,
17251
                       pv.pv_description,
17252
                       pv.PV_OVERVIEW,
17253
                       cloneFrom_pv_id  AS LAST_PV_ID,
17254
                       pv.owner_id,
17255
                       nBuildType       AS BUILD_TYPE,
17256
                       pv.IS_BUILD_ENV_REQUIRED,
17257
                       pv.BS_ID,
17258
                       pv.is_autobuildable,
17259
                       pv.IS_DEPLOYABLE, 
17260
                       pv.ripple_field,
17261
                       nChangeType       AS change_type
17262
                  FROM PACKAGE_VERSIONS pv
17263
                 WHERE pv.pv_id = cloneFrom_pv_id;
17264
 
17265
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
17266
 
17267
        ELSE
17268
            /* BRAND NEW version + ext */
17269
            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 )
17270
            VALUES (
17271
                    parPv_id,
17272
                    parPkg_id,
17273
                    spackageversion,
17274
                    'N',
17275
                    Ora_Sysdate,
17276
                    NNuser_id,
17277
                    Ora_Sysdatetime,
17278
                    NNuser_id,
17279
                    SSV_MM,
17280
                    SSV_NMM,
17281
                    SSV_EXT,
17282
                    NNuser_id,
17283
                    parPv_id,
17284
                    nBuildType,
17285
                    'b',
17286
                    nChangeType
17287
                   );
17288
 
17289
        END IF;
17290
 
17291
        CLOSE clone_package_versions_cur;
17292
        retPV_ID := parPv_id;
17293
 
17294
    ELSE
17295
        retPV_ID := package_versions_rec.pv_id;
17296
 
17297
    END IF;
17298
 
17299
    CLOSE package_versions_cur;
17300
 
17301
END Seed_Package_Names_Versions;
4040 dpurdie 17302
 
3959 dpurdie 17303
/
17304
 
4040 dpurdie 17305
/
17306
--------------------------------------------------------
17307
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
17308
--------------------------------------------------------
17309
set define off;
1373 dpurdie 17310
 
17311
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
17312
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17313
                                                          NNuser_id IN NUMBER,
17314
                                                          retPV_ID OUT NUMBER,
17315
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
17316
/* ---------------------------------------------------------------------------
17317
    Version: 4.0
17318
   --------------------------------------------------------------------------- */
17319
 
17320
    parPkg_id   NUMBER;
17321
    parPv_id    NUMBER;
17322
    cloneFrom_pv_id NUMBER;
17323
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
17324
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
17325
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
17326
 
17327
    CURSOR packages_cur IS
17328
        SELECT pkg_id FROM PACKAGES
17329
        WHERE pkg_name = SSpkg_name;
17330
    packages_rec packages_cur%ROWTYPE;
17331
 
17332
    CURSOR package_versions_cur IS
17333
        SELECT pv_id FROM PACKAGE_VERSIONS
17334
        WHERE pkg_id = parPkg_id
17335
        AND pkg_version = SSpkg_version;
17336
    package_versions_rec package_versions_cur%ROWTYPE;
17337
 
17338
    CURSOR clone_package_versions_cur IS
17339
        SELECT MAX(pv_id) AS pv_id
17340
          FROM PACKAGE_VERSIONS
17341
         WHERE pkg_id = parPkg_id
17342
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
17343
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
17344
 
17345
BEGIN
17346
    /* -------------------------------------------- */
17347
    /* Find if pkg_name exists and seed if required */
17348
    /* -------------------------------------------- */
17349
    OPEN packages_cur;
17350
    FETCH packages_cur INTO packages_rec;
17351
 
17352
    IF packages_cur%NOTFOUND
17353
    THEN
17354
        /* INSERT into packages table */
17355
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
17356
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
17357
 
17358
    ELSE
17359
        parPkg_id := packages_rec.pkg_id;
17360
 
17361
    END IF;
17362
 
17363
    CLOSE packages_cur;
17364
 
17365
 
17366
 
17367
    /* ---------------------------------------------------- */
17368
    /* Find if package_version exists and seed if required  */
17369
    /* ---------------------------------------------------- */
17370
    OPEN package_versions_cur;
17371
    FETCH package_versions_cur INTO package_versions_rec;
17372
 
17373
    IF package_versions_cur%NOTFOUND
17374
    THEN
17375
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
17376
 
17377
        /* LOG ACTION */
17378
        Log_Action ( parPv_id, 'new_version', NNuser_id,
17379
        			 'New package version: '|| SSpkg_version );
17380
 
17381
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
17382
 
17383
 
17384
 
17385
 
17386
 
17387
            /* CLONE details from similar version  OR  from nCloneFromPvId */
17388
			IF ( NOT nCloneFromPvId IS NULL) THEN
17389
            	cloneFrom_pv_id := nCloneFromPvId;
17390
			ELSE
17391
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
17392
			END IF;
17393
 
17394
            -- Clone Package Version Details --
17395
            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,
17396
                                           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 )
17397
                SELECT parPv_id         AS pv_id,
17398
                       parPkg_id        AS pkg_id,
17399
                       SSpkg_version    AS pkg_version,
17400
                       'N'              AS dlocked,
17401
                       Ora_Sysdate      AS created_stamp,
17402
                       NNuser_id        AS creator_id,
17403
                       Ora_Sysdatetime  AS modified_stamp,
17404
                       NNuser_id        AS modifier_id,
17405
                       SSV_MM           AS V_MM,
17406
                       SSV_NMM          AS V_NMM,
17407
                       SSV_EXT          AS V_EXT,
17408
                       pv.src_path,
17409
                       pv.pv_description,
17410
                       pv.PV_OVERVIEW,
17411
                       cloneFrom_pv_id 	AS LAST_PV_ID,
17412
                       pv.owner_id,
17413
					   pv.BUILD_TYPE,
17414
					   pv.IS_BUILD_ENV_REQUIRED,
17415
					   pv.bs_id,
17416
					   pv.is_autobuildable,
17417
					   pv.IS_DEPLOYABLE,
17418
					   pv.ripple_field
17419
                  FROM PACKAGE_VERSIONS pv
17420
                 WHERE pv.pv_id = cloneFrom_pv_id;
17421
 
17422
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
17423
 
17424
        retPV_ID := parPv_id;
17425
 
17426
    ELSE
17427
        retPV_ID := package_versions_rec.pv_id;
17428
 
17429
    END IF;
17430
 
17431
    CLOSE package_versions_cur;
17432
 
17433
 
17434
 
17435
 
17436
END Seed_Package_Names_Versions2;
4040 dpurdie 17437
 
1374 dpurdie 17438
/
1373 dpurdie 17439
 
4040 dpurdie 17440
/
17441
--------------------------------------------------------
17442
--  DDL for Procedure SET_ADVISORY_RIPPLE
17443
--------------------------------------------------------
17444
set define off;
17445
 
3959 dpurdie 17446
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
1373 dpurdie 17447
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
17448
											 nUserId IN NUMBER ) IS
17449
/* ---------------------------------------------------------------------------
17450
    Version: 4.0
17451
   --------------------------------------------------------------------------- */
17452
 
17453
BEGIN
17454
 
3959 dpurdie 17455
    -- Set Advisory Ripple Package
17456
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
17457
	VALUES (nRtagId, nPvId);
1373 dpurdie 17458
 
17459
    /* LOG ACTION */
3959 dpurdie 17460
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
1373 dpurdie 17461
 
17462
	/*Rebuild_Environment(nRtagId);*/
17463
 
3959 dpurdie 17464
END Set_Advisory_Ripple;
4040 dpurdie 17465
 
1374 dpurdie 17466
/
1373 dpurdie 17467
 
4040 dpurdie 17468
/
17469
--------------------------------------------------------
17470
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
17471
--------------------------------------------------------
17472
set define off;
17473
 
3959 dpurdie 17474
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
17475
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
1373 dpurdie 17476
/* ---------------------------------------------------------------------------
3959 dpurdie 17477
    Last Modified: Rupesh Solanki
17478
	Version: 3.0.1
1373 dpurdie 17479
   --------------------------------------------------------------------------- */
17480
 
17481
 
17482
BEGIN
17483
 
3959 dpurdie 17484
   -- Delete Current Build Env settings
17485
   DELETE FROM PACKAGE_BUILD_ENV
17486
   WHERE pv_id = nPvId;
17487
 
17488
   -- Delet Current Package Build Info Settings
17489
   DELETE FROM PACKAGE_BUILD_INFO
17490
   WHERE pv_id = nPvId;
1373 dpurdie 17491
 
3959 dpurdie 17492
   -- Reset flag to N
17493
   UPDATE PACKAGE_VERSIONS SET
17494
	   IS_BUILD_ENV_REQUIRED = 'N'
17495
   WHERE PV_ID = nPvId;
1373 dpurdie 17496
 
17497
 
3959 dpurdie 17498
   -- Set new Build Env
17499
   IF NOT sBuildEnvIdList IS NULL THEN
17500
   	  -- Insert into PACKAGE_BUILD_ENV
17501
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
17502
	  SELECT nPvId AS PV_ID,
17503
	  		 be.BE_ID
17504
	    FROM BUILD_ENVIRONMENTS be
17505
	   WHERE be.BE_ID IN (
17506
	   		 		  	   SELECT *
17507
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
17508
	   		 		  	 );
17509
 
17510
   	  -- Insert into PACKAGE_BUILD_INFO
17511
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
17512
	  SELECT nPvId AS PV_ID,
17513
	  		 be.BM_ID
17514
	    FROM BUILD_MACHINES be
17515
	   WHERE be.BM_ID IN (
17516
	   		 		  	   SELECT *
17517
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
17518
	   		 		  	 );						 
1373 dpurdie 17519
 
3959 dpurdie 17520
	   -- Set flag to Y
17521
	   UPDATE PACKAGE_VERSIONS SET
17522
		   IS_BUILD_ENV_REQUIRED = 'Y'
17523
	   WHERE PV_ID = nPvId;
1373 dpurdie 17524
 
3959 dpurdie 17525
   END IF;
1373 dpurdie 17526
 
17527
 
3959 dpurdie 17528
END Set_Package_Build_Env;
4040 dpurdie 17529
 
1374 dpurdie 17530
/
1373 dpurdie 17531
 
4040 dpurdie 17532
/
17533
--------------------------------------------------------
17534
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
17535
--------------------------------------------------------
17536
set define off;
17537
 
1373 dpurdie 17538
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
17539
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
17540
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
17541
														 ) IS
17542
/* ---------------------------------------------------------------------------
17543
    Last Modified: Rupesh Solanki
17544
	Version: 3.0.1
17545
   --------------------------------------------------------------------------- */
17546
 
17547
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
17548
   BsId NUMBER;
17549
   HackBsId NUMBER;
17550
 
17551
 
17552
BEGIN
17553
 
17554
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
17555
 
17556
   -- Delete Current Build Env settings
17557
   DELETE FROM PACKAGE_BUILD_ENV
17558
   WHERE pv_id = nPvId;
17559
 
17560
   -- Delet Current Package Build Info Settings
17561
   DELETE FROM PACKAGE_BUILD_INFO
17562
   WHERE pv_id = nPvId;
17563
 
17564
   -- Reset flag to N
17565
   UPDATE PACKAGE_VERSIONS SET
17566
	   IS_BUILD_ENV_REQUIRED = 'N'
17567
   WHERE PV_ID = nPvId;
17568
 
17569
 
17570
   -- Set new Build Env
17571
   IF NOT sBuildEnvIdList IS NULL THEN
17572
	FOR i IN 1..nBsCollector.COUNT
17573
	LOOP   
17574
 
17575
	BsId := nBsCollector(i);
17576
 
17577
	IF nBuildStandard = 2 THEN
17578
	   IF BsId = 1 THEN
17579
	   	  HackBsId := 11;
17580
	   ELSE
17581
	   	  HackBsId := 12;
17582
	   END IF;
17583
 
17584
   	  -- Insert into PACKAGE_BUILD_ENV
17585
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
17586
	  SELECT nPvId AS PV_ID,
17587
	  		 be.BE_ID
17588
	    FROM BUILD_ENVIRONMENTS be
17589
	   WHERE be.BE_ID IN ( HackBsId );
17590
 
17591
   	  -- Insert into PACKAGE_BUILD_INFO
17592
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
17593
	  SELECT nPvId AS PV_ID,
17594
	  		 be.BM_ID
17595
	    FROM BUILD_MACHINES be
17596
	   WHERE be.BM_ID IN ( BsId );						 
17597
 
17598
	   -- Set flag to Y
17599
	   UPDATE PACKAGE_VERSIONS SET
17600
		   IS_BUILD_ENV_REQUIRED = 'Y'
17601
	   WHERE PV_ID = nPvId;	
17602
 
17603
 
17604
	ELSE
17605
 
17606
   	  -- Insert into PACKAGE_BUILD_ENV
17607
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
17608
	  SELECT nPvId AS PV_ID,
17609
	  		 be.BE_ID
17610
	    FROM BUILD_ENVIRONMENTS be
17611
	   WHERE be.BE_ID IN ( BsId );
17612
 
17613
   	  -- Insert into PACKAGE_BUILD_INFO
17614
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
17615
	  SELECT nPvId AS PV_ID,
17616
	  		 be.BM_ID
17617
	    FROM BUILD_MACHINES be
17618
	   WHERE be.BM_ID IN ( BsId );						 
17619
 
17620
	   -- Set flag to Y
17621
	   UPDATE PACKAGE_VERSIONS SET
17622
		   IS_BUILD_ENV_REQUIRED = 'Y'
17623
	   WHERE PV_ID = nPvId;
17624
 
17625
	END IF;  
17626
 
17627
 
17628
	END LOOP;	   
17629
 
17630
   END IF;
17631
 
17632
 
17633
END Set_Package_Build_Env_Temp;
4040 dpurdie 17634
 
1374 dpurdie 17635
/
1373 dpurdie 17636
 
4040 dpurdie 17637
/
17638
--------------------------------------------------------
17639
--  DDL for Procedure SET_TO_AUTOBUILDABLE
17640
--------------------------------------------------------
17641
set define off;
17642
 
3959 dpurdie 17643
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
17644
   nrtagid     IN   NUMBER,
17645
   spvidlist   IN   VARCHAR2
17646
)
17647
IS
17648
/******************************************************************************
17649
   NAME:       SET_TO_AUTOBUILDABLE
17650
   PURPOSE:
1373 dpurdie 17651
 
3959 dpurdie 17652
   REVISIONS:
17653
   Ver        Date        Author           Description
17654
   ---------  ----------  ---------------  ------------------------------------
17655
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 17656
 
3959 dpurdie 17657
   NOTES:
1373 dpurdie 17658
 
3959 dpurdie 17659
   Automatically available Auto Replace Keywords:
17660
      Object Name:     SET_TO_AUTOBUILDABLE
17661
      Sysdate:         15/12/2006
17662
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
17663
      Username:         (set in TOAD Options, Procedure Editor)
17664
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17665
 
3959 dpurdie 17666
******************************************************************************/
17667
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
17668
   PvId NUMBER;
1373 dpurdie 17669
BEGIN
17670
 
3959 dpurdie 17671
   npvidcollector := in_list_number2 (spvidlist);
17672
 
17673
   UPDATE package_versions
17674
      SET is_autobuildable = 'N'
17675
    WHERE pv_id IN (SELECT pv_id
17676
                      FROM release_content
17677
                     WHERE rtag_id = nrtagid);
1373 dpurdie 17678
 
3959 dpurdie 17679
 
17680
 
17681
   	FOR i IN 1..npvidcollector.COUNT
17682
	LOOP
17683
		PvId := npvidcollector(i);
1373 dpurdie 17684
 
3959 dpurdie 17685
		UPDATE package_versions
17686
		set is_autobuildable = 'Y'
17687
		where pv_id = PvId;
1373 dpurdie 17688
 
3959 dpurdie 17689
	END LOOP;
17690
 
17691
 
17692
END set_to_autobuildable;
4040 dpurdie 17693
 
3959 dpurdie 17694
/
1373 dpurdie 17695
 
4040 dpurdie 17696
/
17697
--------------------------------------------------------
17698
--  DDL for Procedure SHIFT_INSTALL_ORDER
17699
--------------------------------------------------------
17700
set define off;
17701
 
3959 dpurdie 17702
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
17703
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
17704
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
17705
/* ---------------------------------------------------------------------------
17706
    Version: 3.0
17707
   --------------------------------------------------------------------------- */
1373 dpurdie 17708
 
3959 dpurdie 17709
currInstallOrder NUMBER;
17710
FromInstallOrder NUMBER;
1373 dpurdie 17711
 
3959 dpurdie 17712
BEGIN
1373 dpurdie 17713
 
3959 dpurdie 17714
	 -- Get Current Install Order
17715
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
17716
       FROM PACKAGE_PATCHES pp
17717
      WHERE pp.PV_ID = nPvId
17718
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 17719
 
17720
 
3959 dpurdie 17721
	 IF currInstallOrder > nToInstallOrder
17722
	 THEN
1373 dpurdie 17723
 
3959 dpurdie 17724
		FromInstallOrder := nToInstallOrder;
1373 dpurdie 17725
 
3959 dpurdie 17726
	    -- Shift others Up
17727
		UPDATE PACKAGE_PATCHES pp SET
17728
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
17729
		 WHERE pp.PV_ID = nPvId
17730
           AND pp.PATCH_ID != nPatchId
17731
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
1373 dpurdie 17732
 
17733
 
3959 dpurdie 17734
	 ELSIF currInstallOrder < nToInstallOrder
17735
	 THEN
1373 dpurdie 17736
 
3959 dpurdie 17737
		FromInstallOrder := currInstallOrder + 1;
1373 dpurdie 17738
 
3959 dpurdie 17739
		-- Shift others Down
17740
        UPDATE PACKAGE_PATCHES pp SET
17741
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
17742
		 WHERE pp.PV_ID = nPvId
17743
           AND pp.PATCH_ID != nPatchId
17744
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
1373 dpurdie 17745
 
3959 dpurdie 17746
	 END IF;
1373 dpurdie 17747
 
17748
 
3959 dpurdie 17749
	 -- Move Patch to new install order
17750
     UPDATE PACKAGE_PATCHES pp SET
17751
		    pp.INSTALL_ORDER = nToInstallOrder
17752
	  WHERE pp.PV_ID = nPvId
17753
	    AND pp.PATCH_ID = nPatchId;
1373 dpurdie 17754
 
17755
 
3959 dpurdie 17756
END Shift_Install_Order;
4040 dpurdie 17757
 
1374 dpurdie 17758
/
1373 dpurdie 17759
 
4040 dpurdie 17760
/
17761
--------------------------------------------------------
17762
--  DDL for Procedure SPLIT_VERSION
17763
--------------------------------------------------------
17764
set define off;
17765
 
3959 dpurdie 17766
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17767
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
17768
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
17769
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
1373 dpurdie 17770
/* ---------------------------------------------------------------------------
3959 dpurdie 17771
    Version: 3.0.0
1373 dpurdie 17772
   --------------------------------------------------------------------------- */
17773
 
3959 dpurdie 17774
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
17775
        INDEX BY BINARY_INTEGER;
1373 dpurdie 17776
 
3959 dpurdie 17777
    version_components VERSION_COMPONENTS_TYPE;
17778
    lastDot NUMBER := 0;
17779
    currDot NUMBER := 0;
1373 dpurdie 17780
 
17781
BEGIN
3959 dpurdie 17782
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
1373 dpurdie 17783
 
3959 dpurdie 17784
    IF ( currDot > 0 )
1373 dpurdie 17785
    THEN
3959 dpurdie 17786
        -- YES dot separator found --
17787
        SSV_EXT := GET_V_EXT( SSpkg_version );
1373 dpurdie 17788
 
3959 dpurdie 17789
        IF NOT SSV_EXT IS NULL
1373 dpurdie 17790
        THEN
3959 dpurdie 17791
            lastDot := currDot;
17792
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
1373 dpurdie 17793
 
3959 dpurdie 17794
            IF ( currDot > 0 )
17795
            THEN
17796
                -- XXXX.M.E
17797
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
17798
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
17799
            ELSE
17800
                -- XXXX.E
17801
                SSV_MM := NULL;
17802
                SSV_NMM := SSpkg_version;
17803
            END IF;
1373 dpurdie 17804
 
17805
        ELSE
3959 dpurdie 17806
            -- XXXX.M
17807
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
17808
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
1373 dpurdie 17809
 
17810
        END IF;
17811
 
17812
    ELSE
3959 dpurdie 17813
        -- NO dot separator found --
17814
        -- XXXXXX
17815
        SSV_MM  := NULL;
17816
        SSV_NMM := SSpkg_version;
17817
        SSV_EXT := NULL;
1373 dpurdie 17818
 
17819
    END IF;
17820
 
3959 dpurdie 17821
END Split_Version;
4040 dpurdie 17822
 
1374 dpurdie 17823
/
1373 dpurdie 17824
 
4040 dpurdie 17825
/
17826
--------------------------------------------------------
17827
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
17828
--------------------------------------------------------
17829
set define off;
17830
 
3959 dpurdie 17831
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
17832
Auto CHAR;
17833
/******************************************************************************
17834
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
17835
   PURPOSE:    
1373 dpurdie 17836
 
3959 dpurdie 17837
   REVISIONS:
17838
   Ver        Date        Author           Description
17839
   ---------  ----------  ---------------  ------------------------------------
17840
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 17841
 
3959 dpurdie 17842
   NOTES:
1373 dpurdie 17843
 
3959 dpurdie 17844
   Automatically available Auto Replace Keywords:
17845
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
17846
      Sysdate:         14/12/2006
17847
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
17848
      Username:         (set in TOAD Options, Procedure Editor)
17849
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17850
 
3959 dpurdie 17851
******************************************************************************/
1373 dpurdie 17852
BEGIN
17853
 
3959 dpurdie 17854
	 SELECT IS_AUTOBUILDABLE into Auto
17855
	 FROM PACKAGE_VERSIONS 
17856
	 WHERE PV_ID = nPvId;
1373 dpurdie 17857
 
3959 dpurdie 17858
	 IF Auto = 'N' Then
17859
 
17860
	 	UPDATE PACKAGE_VERSIONS
17861
	 	SET IS_AUTOBUILDABLE = 'Y'
17862
	 	WHERE PV_ID = nPvId;
17863
 
17864
 
17865
	 	/* LOG ACTION */
17866
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
17867
 
17868
	 Else
17869
 
17870
		 UPDATE PACKAGE_VERSIONS
17871
		 SET IS_AUTOBUILDABLE = 'N'
17872
		 WHERE PV_ID = nPvId;
17873
 
17874
 
17875
	 	 /* LOG ACTION */
17876
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
17877
 
17878
	 End If;
17879
 
17880
 
1373 dpurdie 17881
 
3959 dpurdie 17882
 
1373 dpurdie 17883
 
17884
 
17885
 
17886
 
3959 dpurdie 17887
END SWITCH_REPRODUCIBLE_PACKAGE;
4040 dpurdie 17888
 
1374 dpurdie 17889
/
1373 dpurdie 17890
 
4040 dpurdie 17891
/
17892
--------------------------------------------------------
17893
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
17894
--------------------------------------------------------
17895
set define off;
17896
 
3959 dpurdie 17897
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
17898
														  sSyncRtagsInList		IN VARCHAR2,
17899
				                                          nUser_id 				IN NUMBER ) IS
1373 dpurdie 17900
/* ---------------------------------------------------------------------------
17901
    Version: 3.0.0
17902
   --------------------------------------------------------------------------- */
17903
 
3959 dpurdie 17904
	CURSOR sync_rtags_cur IS
17905
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
17906
		  FROM release_content rc,
17907
		  	   package_versions pv,
17908
		       package_versions opv
17909
		 WHERE rc.pv_id = pv.pv_id
17910
		   AND opv.pkg_id = pv.pkg_id
17911
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
17912
		   AND opv.pv_id = nPv_id
17913
		   AND rtag_id IN ( SELECT *
17914
		   	   		   	      FROM THE (
17915
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
17916
					       		   	    FROM dual
17917
									   )
17918
						  );
17919
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
1373 dpurdie 17920
 
17921
BEGIN
17922
 
3959 dpurdie 17923
	OPEN sync_rtags_cur;
17924
	FETCH sync_rtags_cur INTO sync_rtags_rec;
1373 dpurdie 17925
 
3959 dpurdie 17926
	WHILE sync_rtags_cur%FOUND
17927
	LOOP
17928
		DELETE FROM RELEASE_CONTENT
17929
		 WHERE rtag_id = sync_rtags_rec.rtag_id
17930
	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 17931
 
3959 dpurdie 17932
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
17933
	   		   VALUES ( sync_rtags_rec.rtag_id,
17934
		       		  	nPv_id,
17935
						sync_rtags_rec.BASE_VIEW_ID,
17936
	           			Ora_Sysdate,
17937
	           			nUser_id,
17938
 
17939
	      	   		   );
1373 dpurdie 17940
 
3959 dpurdie 17941
-- 		UPDATE RELEASE_CONTENT
17942
-- 	       SET pv_id = nPv_id,
17943
-- 	           insert_stamp = Ora_Sysdate,
17944
-- 	           insertor_id = nUser_id
17945
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
17946
-- 	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 17947
 
3959 dpurdie 17948
		FETCH sync_rtags_cur INTO sync_rtags_rec;
17949
	END LOOP;
1373 dpurdie 17950
 
3959 dpurdie 17951
	CLOSE sync_rtags_cur;
17952
 
17953
END Sync_Projects_New_Version;
4040 dpurdie 17954
 
1374 dpurdie 17955
/
1373 dpurdie 17956
 
4040 dpurdie 17957
/
17958
--------------------------------------------------------
17959
--  DDL for Procedure TEST
17960
--------------------------------------------------------
17961
set define off;
17962
 
3959 dpurdie 17963
  CREATE OR REPLACE PROCEDURE "TEST" 
17964
IS
1373 dpurdie 17965
 
3959 dpurdie 17966
proc_id NUMBER;
17967
/******************************************************************************
17968
   NAME:       DELETE_DO_NOT_RIPPLE
17969
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17970
               IS RELEASED
1373 dpurdie 17971
 
3959 dpurdie 17972
   REVISIONS:
17973
   Ver        Date        Author           Description
17974
   ---------  ----------  ---------------  ------------------------------------
17975
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 17976
 
3959 dpurdie 17977
   NOTES:
17978
 
17979
   Automatically available Auto Replace Keywords:
17980
      Object Name:     DELETE_DO_NOT_RIPPLE
17981
      Sysdate:         21/04/2006
17982
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17983
      Username:         (set in TOAD Options, Procedure Editor)
17984
      Table Name:       (set in the "New PL/SQL Object" dialog)
17985
 
17986
******************************************************************************/
17987
   CURSOR ripple_cur
17988
   IS
17989
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
17990
 
17991
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 17992
BEGIN
3959 dpurdie 17993
   OPEN ripple_cur;
1373 dpurdie 17994
 
3959 dpurdie 17995
   FETCH ripple_cur
17996
    INTO ripple_rec;
1373 dpurdie 17997
 
3959 dpurdie 17998
   WHILE ripple_cur%FOUND
17999
   LOOP
18000
 
18001
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
18002
 
18003
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
18004
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 18005
 
3959 dpurdie 18006
      FETCH ripple_cur
18007
       INTO ripple_rec;
18008
   END LOOP;
18009
END test;
4040 dpurdie 18010
 
1374 dpurdie 18011
/
1373 dpurdie 18012
 
4040 dpurdie 18013
/
18014
--------------------------------------------------------
18015
--  DDL for Procedure TEST_MARCO
18016
--------------------------------------------------------
18017
set define off;
18018
 
3959 dpurdie 18019
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
1373 dpurdie 18020
/******************************************************************************
3959 dpurdie 18021
   NAME:       TEST_MARCO
1373 dpurdie 18022
   PURPOSE:    
18023
 
18024
   REVISIONS:
18025
   Ver        Date        Author           Description
18026
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 18027
   1.0        2/03/2007          1. Created this procedure.
1373 dpurdie 18028
 
18029
   NOTES:
18030
 
18031
   Automatically available Auto Replace Keywords:
3959 dpurdie 18032
      Object Name:     TEST_MARCO
18033
      Sysdate:         2/03/2007
18034
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
1373 dpurdie 18035
      Username:         (set in TOAD Options, Procedure Editor)
18036
      Table Name:       (set in the "New PL/SQL Object" dialog)
18037
 
18038
******************************************************************************/
18039
 
3959 dpurdie 18040
parPv_id    NUMBER;
18041
parPkg_id   NUMBER;
18042
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
18043
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
18044
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
1373 dpurdie 18045
BEGIN
18046
 
3959 dpurdie 18047
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
1373 dpurdie 18048
 
3959 dpurdie 18049
        /* LOG ACTION */
18050
        Log_Action ( parPv_id, 'new_version', 3764,
18051
        			 'New package version: '|| parPv_id || '.' );
18052
 
18053
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
1373 dpurdie 18054
 
3959 dpurdie 18055
     -- Clone Package Version Details --
18056
            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,
18057
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
18058
                SELECT parPv_id         AS pv_id,
18059
                       pv.pkg_id        AS pkg_id,
18060
                       parPv_id || '.'    AS pkg_version,
18061
                       'N'              AS dlocked,
18062
                       Ora_Sysdate      AS created_stamp,
18063
                       3764        AS creator_id,
18064
                       Ora_Sysdatetime  AS modified_stamp,
18065
                       3764        AS modifier_id,
18066
                       SSV_MM          AS V_MM,
18067
                       SSV_NMM         AS V_NMM,
18068
                       SSV_EXT          AS V_EXT,
18069
                       pv.src_path,
18070
                       pv.pv_description,
18071
                       pv.PV_OVERVIEW,
18072
                       112982 	AS LAST_PV_ID,
18073
                       pv.owner_id,
18074
					   pv.BUILD_TYPE,
18075
					   pv.IS_BUILD_ENV_REQUIRED,
18076
					   pv.bs_id,
18077
					   pv.is_autobuildable,
18078
					   pv.IS_DEPLOYABLE
18079
                  FROM PACKAGE_VERSIONS pv
18080
                 WHERE pv.pv_id = 112982;		
1373 dpurdie 18081
 
3959 dpurdie 18082
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
1373 dpurdie 18083
 
18084
 
3959 dpurdie 18085
END TEST_MARCO;
4040 dpurdie 18086
 
3959 dpurdie 18087
/
1373 dpurdie 18088
 
4040 dpurdie 18089
/
18090
--------------------------------------------------------
18091
--  DDL for Procedure TOUCH_RELEASE
18092
--------------------------------------------------------
18093
set define off;
18094
 
3959 dpurdie 18095
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
18096
/* ---------------------------------------------------------------------------
18097
    The purpose of this procedure is to flag in the database that the specified
18098
    release has changed to an extent that the procedure Rebuild_Environment
18099
    should be called at the next opportunity in order that the package state
18100
    icons are all re-evaluated.
18101
    The package state icons are controlled using the pkg_state column in the
18102
    release_content table, and Rebuild_Environment updates that column.
18103
    It will be through user action in the website that Rebuild_Environment will
18104
    be called, for example:
18105
      a) when setting/clearing ignore warnings checkboxes
18106
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
18107
      c) when someone opens the build order report form
18108
      d) when someone modifies dependencies of a package
18109
      + other scenarios (?)
18110
   --------------------------------------------------------------------------- */
18111
BEGIN
18112
   -- Touch Release for Rebuild
18113
   UPDATE RELEASE_TAGS rt SET
18114
          rt.REBUILD_ENV = 'Y',
18115
          rt.REBUILD_STAMP = 0
18116
    WHERE rt.RTAG_ID = nRtagId;
1373 dpurdie 18117
 
3959 dpurdie 18118
END Touch_Release;
4040 dpurdie 18119
 
1374 dpurdie 18120
/
1373 dpurdie 18121
 
4040 dpurdie 18122
/
18123
--------------------------------------------------------
18124
--  DDL for Procedure TOUCH_RELEASE_BULK
18125
--------------------------------------------------------
18126
set define off;
18127
 
1373 dpurdie 18128
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
18129
/* ---------------------------------------------------------------------------
18130
    Version: 3.0
18131
   --------------------------------------------------------------------------- */
18132
 
18133
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
18134
 
18135
BEGIN
18136
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
18137
 
18138
	 -- Touch Release for Rebuild
18139
     UPDATE RELEASE_TAGS rt SET
18140
     	rt.REBUILD_ENV = 'Y',
18141
        rt.REBUILD_STAMP = 0
18142
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
18143
 
18144
 
18145
END Touch_Release_Bulk;
4040 dpurdie 18146
 
1374 dpurdie 18147
/
1373 dpurdie 18148
 
4040 dpurdie 18149
/
18150
--------------------------------------------------------
18151
--  DDL for Procedure TO_INSERT_VTREE_ID
18152
--------------------------------------------------------
18153
set define off;
18154
 
3959 dpurdie 18155
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
1373 dpurdie 18156
 
3959 dpurdie 18157
/******************************************************************************
18158
   NAME:       TO_INSERT_VTREE_ID
18159
   PURPOSE:    
1373 dpurdie 18160
 
3959 dpurdie 18161
   REVISIONS:
18162
   Ver        Date        Author           Description
18163
   ---------  ----------  ---------------  ------------------------------------
18164
   1.0        2/02/2007          1. Created this procedure.
1373 dpurdie 18165
 
3959 dpurdie 18166
   NOTES:
1373 dpurdie 18167
 
3959 dpurdie 18168
   Automatically available Auto Replace Keywords:
18169
      Object Name:     TO_INSERT_VTREE_ID
18170
      Sysdate:         2/02/2007
18171
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
18172
      Username:         (set in TOAD Options, Procedure Editor)
18173
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 18174
 
3959 dpurdie 18175
******************************************************************************/
18176
VTreeId NUMBER;																			  																	   
1373 dpurdie 18177
 
18178
 
3959 dpurdie 18179
	CURSOR curInfo IS
18180
    SELECT RTAG_ID
18181
	FROM RELEASE_TAGS
18182
	WHERE VTREE_ID IS NULL;
18183
    recInfo curInfo%ROWTYPE;
18184
 
18185
 
1373 dpurdie 18186
BEGIN
18187
 
3959 dpurdie 18188
	OPEN curInfo;
18189
    FETCH curInfo INTO recInfo;
18190
 
18191
	WHILE curInfo%FOUND
18192
	LOOP
18193
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
1373 dpurdie 18194
 
3959 dpurdie 18195
		UPDATE RELEASE_TAGS
18196
		SET VTREE_ID = VTreeId
18197
		WHERE RTAG_ID = recInfo.RTAG_ID;
1373 dpurdie 18198
 
3959 dpurdie 18199
		FETCH curInfo INTO recInfo;
18200
	END LOOP;
1373 dpurdie 18201
 
3959 dpurdie 18202
	CLOSE curInfo;
1373 dpurdie 18203
 
3959 dpurdie 18204
END TO_INSERT_VTREE_ID;
4040 dpurdie 18205
 
1374 dpurdie 18206
/
1373 dpurdie 18207
 
4040 dpurdie 18208
/
18209
--------------------------------------------------------
18210
--  DDL for Procedure UNDEPRECATE_PACKAGE
18211
--------------------------------------------------------
18212
set define off;
18213
 
1373 dpurdie 18214
  CREATE OR REPLACE PROCEDURE "UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
18215
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
18216
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
18217
											   	 nUserId IN NUMBER) IS
18218
 
18219
ext VARCHAR2(50);
18220
PvIdList VARCHAR2(32767);
18221
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
18222
PvId NUMBER;
18223
sComments VARCHAR2(32767);
18224
 
18225
BEGIN
18226
 
18227
 
18228
 
18229
	--Extract the package extension
18230
	SELECT V_EXT into ext 
18231
	FROM PACKAGE_VERSIONS 
18232
	WHERE PV_ID = nPvId;
18233
 
18234
	--SELECT COMMENTS into sComments 
18235
	--FROM DEPRECATED_PACKAGES
18236
	--WHERE RTAG_ID = nRtagId
18237
	--AND V_EXT = ext
18238
	--AND PKG_ID = nPkgId;
18239
 
18240
	--SELECT PV_ID into PvIdList FROM
18241
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
18242
	--AND PKG_STATE = 6
18243
	--AND PV_ID NOT IN nPvId;
18244
 
18245
 
18246
	IF ext IS NOT NULL THEN
18247
       -- Undeprecate Package
18248
       DELETE FROM DEPRECATED_PACKAGES 
18249
	   WHERE RTAG_ID = nRtagId 
18250
	   AND PKG_ID = nPkgId
18251
	   AND V_EXT = ext;	
18252
 
18253
		UPDATE RELEASE_CONTENT 
18254
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
18255
		WHERE RTAG_ID = nRtagId
18256
		AND PV_ID IN (SELECT PV.PV_ID 
18257
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
18258
					  WHERE PKG.PKG_ID = PV.PKG_ID
18259
					  AND PKG.PKG_ID = nPkgId
18260
					  AND PV.V_EXT = ext
18261
					  UNION
18262
					  SELECT DISTINCT
18263
	 	 		  	 		   qry.PV_ID
18264
							        FROM (
18265
									 	  SELECT dep.*,
18266
										  LEVEL AS LEVEL_NUM
18267
										  FROM PACKAGE_DEPENDENCIES dep
18268
	 								START WITH dep.DPV_ID IN ( nPvId )
18269
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
18270
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
18271
	 								) qry,
18272
									PACKAGES pkg,
18273
									PACKAGE_VERSIONS pv,
18274
									RELEASE_CONTENT rc
18275
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
18276
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
18277
 
18278
					 );	 
18279
 
18280
	ELSE
18281
       -- Undeprecate Package
18282
       DELETE FROM DEPRECATED_PACKAGES 
18283
	   WHERE RTAG_ID = nRtagId 
18284
	   AND PKG_ID = nPkgId
18285
	   AND V_EXT IS NULL;	
18286
 
18287
		UPDATE RELEASE_CONTENT 
18288
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
18289
		WHERE RTAG_ID = nRtagId
18290
		AND PV_ID IN (SELECT PV.PV_ID 
18291
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
18292
					  WHERE PKG.PKG_ID = PV.PKG_ID
18293
					  AND PKG.PKG_ID = nPkgId
18294
					  AND PV.V_EXT IS NULL
18295
					  UNION
18296
					  SELECT DISTINCT
18297
	 	 		  	 		   qry.PV_ID
18298
							        FROM (
18299
									 	  SELECT dep.*,
18300
										  LEVEL AS LEVEL_NUM
18301
										  FROM PACKAGE_DEPENDENCIES dep
18302
	 								START WITH dep.DPV_ID IN ( nPvId )
18303
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
18304
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
18305
	 								) qry,
18306
									PACKAGES pkg,
18307
									PACKAGE_VERSIONS pv,
18308
									RELEASE_CONTENT rc
18309
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
18310
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
18311
 
18312
					 );	 	   
18313
 
18314
	END IF;
18315
 
18316
	--IF PvIdList IS NOT NULL THEN
18317
 
18318
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
18319
 
18320
	 --  FOR i IN 1..nIdCollector.COUNT
18321
	 --  LOOP
18322
	--	   PvId := nIdCollector(i);
18323
 
18324
 
18325
 
18326
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
18327
	--		END LOOP;
18328
	--END IF;
18329
 
18330
	Rebuild_environment(nRtagId);			 
18331
 
18332
 
18333
 
18334
END Undeprecate_Package;
4040 dpurdie 18335
 
1374 dpurdie 18336
/
1373 dpurdie 18337
 
4040 dpurdie 18338
/
18339
--------------------------------------------------------
18340
--  DDL for Procedure UNLOCK_PACKAGE
18341
--------------------------------------------------------
18342
set define off;
18343
 
3959 dpurdie 18344
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
18345
											 nUserId IN NUMBER ) IS
18346
/* ---------------------------------------------------------------------------
18347
    Author: Rupesh Solanki
18348
 
18349
	Version: 4.0
18350
   --------------------------------------------------------------------------- */
18351
   STATE CHAR;
18352
 
18353
BEGIN
18354
 
18355
	SELECT DLOCKED INTO STATE
18356
	FROM PACKAGE_VERSIONS
18357
	WHERE PV_ID = nPvId; 
1373 dpurdie 18358
 
3959 dpurdie 18359
	IF STATE = 'A' THEN --It was made official for autobuilds
18360
		-- Unlock Package
18361
		UPDATE PACKAGE_VERSIONS pv SET
18362
		pv.DLOCKED = 'P'
18363
		WHERE pv.PV_ID = nPvId;	
18364
	ELSE
18365
		-- Unlock Package
18366
		UPDATE PACKAGE_VERSIONS pv SET
18367
		pv.DLOCKED = 'N'
18368
		WHERE pv.PV_ID = nPvId;	
18369
 
18370
	END IF;	   
18371
 
18372
    /* LOG ACTION */
18373
   	Log_Action ( nPvId, 'unlock_package', nUserId );
18374
 
18375
END Unlock_Package;
4040 dpurdie 18376
 
3959 dpurdie 18377
/
18378
 
4040 dpurdie 18379
/
18380
--------------------------------------------------------
18381
--  DDL for Procedure UNRIPPLE_PACKAGE
18382
--------------------------------------------------------
18383
set define off;
18384
 
3959 dpurdie 18385
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
18386
        sPvIdList IN VARCHAR2,
18387
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
18388
        nUserId IN NUMBER
18389
    ) IS
18390
/* ---------------------------------------------------------------------------
18391
    Version: 4.1
18392
   --------------------------------------------------------------------------- */
18393
 
18394
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
18395
 
18396
BEGIN
18397
 
18398
    IF (sPvIdList IS NULL) THEN
18399
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
18400
    END IF;
18401
 
18402
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
18403
 
18404
    -- UnRipple Package
18405
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
18406
    SELECT nRtagId, pv.PV_ID
18407
    FROM PACKAGE_VERSIONS pv
18408
    WHERE pv.PV_ID IN (
18409
        SELECT *
18410
        FROM TABLE (
18411
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
18412
        )
18413
    );
18414
 
18415
    /* LOG ACTION */
18416
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
18417
 
18418
END UnRipple_Package;
4040 dpurdie 18419
 
3959 dpurdie 18420
/
18421
 
4040 dpurdie 18422
/
18423
--------------------------------------------------------
18424
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
18425
--------------------------------------------------------
18426
set define off;
18427
 
3959 dpurdie 18428
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
18429
        nPvId IN NUMBER,
18430
        nRtagId IN NUMBER,
18431
        nUserId IN NUMBER,
18432
        nrootCausePvId IN NUMBER,
18433
        srootCause IN VARCHAR2,
18434
        srootFile IN VARCHAR2
18435
    ) IS
18436
    ReleaseLocation VARCHAR2(4000);
18437
BEGIN
18438
 
18439
    -- UnRipple Package
18440
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
18441
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
18442
 
18443
    /* LOG ACTION */
18444
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18445
              FROM PROJECTS proj,
18446
                   RELEASE_TAGS rt
18447
             WHERE rt.RTAG_ID = nRtagId
18448
               AND rt.PROJ_ID = proj.PROJ_ID;
18449
 
18450
    /* LOG ACTION */
18451
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
18452
 
18453
END UnRipple_Package_Indirect;
4040 dpurdie 18454
 
3959 dpurdie 18455
/
18456
 
4040 dpurdie 18457
/
18458
--------------------------------------------------------
18459
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
18460
--------------------------------------------------------
18461
set define off;
18462
 
3959 dpurdie 18463
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
18464
													 pnPv_id IN NUMBER,
18465
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
18466
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
18467
                                                     pnUser_id IN NUMBER,
18468
                                                     outErrCode OUT NUMBER
18469
                                                    ) IS
18470
/* ---------------------------------------------------------------------------
18471
    Version: 3.0.1
18472
   --------------------------------------------------------------------------- */
18473
 
18474
    newID NUMBER;
18475
 
18476
    /* Disallow duplicate Note Titles */
18477
	CURSOR an_duplicate_cur IS
18478
        SELECT COUNT(*) AS cnt_note
18479
          FROM ADDITIONAL_NOTES
18480
         WHERE pv_id = pnPv_id
18481
           AND note_id != pnNote_id
18482
           AND note_title = psNote_title;
18483
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
18484
 
18485
BEGIN
18486
	outErrCode := -1;		-- Set default return error code to ERROR state
18487
 
18488
	OPEN an_duplicate_cur;
18489
    FETCH an_duplicate_cur INTO an_duplicate_rec;
18490
 
18491
    IF an_duplicate_rec.cnt_note < 1
18492
    THEN
18493
		--- Update Additional Note ---
18494
	    UPDATE ADDITIONAL_NOTES SET
18495
		       note_title = psNote_title,
18496
		       note_body = psNote_body,
18497
		       mod_date = Ora_Sysdate,
18498
		       mod_user = pnUser_id
18499
         WHERE note_id = pnNote_id
18500
           AND pv_id = pnPv_id;
18501
		outErrCode := 0;		-- Set return to SUCCESS
18502
	END IF;
18503
 
18504
	CLOSE an_duplicate_cur;
18505
END Update_Additional_Note;
4040 dpurdie 18506
 
3959 dpurdie 18507
/
18508
 
4040 dpurdie 18509
/
18510
--------------------------------------------------------
18511
--  DDL for Procedure UPDATE_DEPRECATION_STATE
18512
--------------------------------------------------------
18513
set define off;
18514
 
3959 dpurdie 18515
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
18516
 
18517
recno NUMBER;
18518
 
18519
CURSOR deprecate_cur IS
18520
 
18521
SELECT rc.pv_id
18522
FROM release_content rc
18523
WHERE rtag_id = nnrtag_id
18524
 AND deprecated_state IN(7);
18525
 
18526
deprecate_rec deprecate_cur % rowtype;
18527
 
18528
BEGIN
18529
 
18530
  OPEN deprecate_cur;
18531
 
18532
  FETCH deprecate_cur
18533
  INTO deprecate_rec;
18534
 
18535
  WHILE deprecate_cur % FOUND
18536
  LOOP
18537
 
18538
    SELECT COUNT(*)
18539
    INTO recno
18540
    FROM package_dependencies pd,
18541
      release_content rc
18542
    WHERE pd.pv_id = deprecate_rec.pv_id
18543
     AND rc.pv_id = pd.dpv_id
18544
     AND rc.rtag_id = nnrtag_id
18545
     AND rc.deprecated_state IN(6,   7);
18546
 
18547
    IF recno = 0 THEN
18548
 
18549
      UPDATE release_content
18550
      SET pkg_id = NULL, deprecated_state = NULL
18551
      WHERE pv_id = deprecate_rec.pv_id
18552
       AND rtag_id = nnrtag_id;
18553
 
18554
    END IF;
18555
 
18556
    FETCH deprecate_cur
18557
    INTO deprecate_rec;
18558
  END LOOP;
18559
 
18560
END;
4040 dpurdie 18561
 
3959 dpurdie 18562
/
18563
 
4040 dpurdie 18564
/
18565
--------------------------------------------------------
18566
--  DDL for Procedure UPDATE_MISC_VIEW
18567
--------------------------------------------------------
18568
set define off;
18569
 
3959 dpurdie 18570
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
1373 dpurdie 18571
/******************************************************************************
3959 dpurdie 18572
   NAME:       UPDATE_MISC_VIEW
18573
   PURPOSE:    
1373 dpurdie 18574
 
18575
   REVISIONS:
18576
   Ver        Date        Author           Description
18577
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 18578
   1.0        16/03/2007          1. Created this procedure.
1373 dpurdie 18579
 
18580
   NOTES:
18581
 
18582
   Automatically available Auto Replace Keywords:
3959 dpurdie 18583
      Object Name:     UPDATE_MISC_VIEW
18584
      Sysdate:         16/03/2007
18585
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
1373 dpurdie 18586
      Username:         (set in TOAD Options, Procedure Editor)
18587
      Table Name:       (set in the "New PL/SQL Object" dialog)
18588
 
18589
******************************************************************************/
3959 dpurdie 18590
   CURSOR view_cur /*Create a record set to store the ripple data*/
18591
   IS
18592
   	 SELECT pkg.pkg_id, rc.base_view_id 
18593
	 FROM package_versions pv, packages pkg, release_content rc
18594
	 where rc.rtag_id = 2362
18595
	 and rc.pv_id = pv.pv_id
18596
	 and pv.pkg_id = pkg.pkg_id;
18597
   view_rec   view_cur%ROWTYPE;
18598
 
18599
 
18600
 
1373 dpurdie 18601
BEGIN
3959 dpurdie 18602
   OPEN view_cur;
1373 dpurdie 18603
 
3959 dpurdie 18604
   FETCH view_cur
18605
    INTO view_rec;
1373 dpurdie 18606
 
3959 dpurdie 18607
   WHILE view_cur%FOUND
18608
   LOOP
1373 dpurdie 18609
 
3959 dpurdie 18610
 
18611
	   update release_content
18612
	   set base_view_id = view_rec.base_view_id
18613
	   where rtag_id = 8027
18614
	   and pv_id IN 
18615
	   (
18616
	   	select pv.pv_id from release_content rc, package_versions pv
18617
		where rc.rtag_id = 8027
18618
		and pv.pv_id = rc.pv_id
18619
		and pv.pkg_id = view_rec.pkg_id 
18620
 
18621
	   );
18622
 
18623
 
1373 dpurdie 18624
 
3959 dpurdie 18625
 
18626
 
18627
 
18628
 
18629
 
1373 dpurdie 18630
 
3959 dpurdie 18631
   FETCH view_cur
18632
   		 INTO view_rec;
18633
   END LOOP;	 
1373 dpurdie 18634
 
18635
 
18636
 
18637
 
3959 dpurdie 18638
 
18639
END UPDATE_MISC_VIEW; 
4040 dpurdie 18640
 
1374 dpurdie 18641
/
1373 dpurdie 18642
 
4040 dpurdie 18643
/
18644
--------------------------------------------------------
18645
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
18646
--------------------------------------------------------
18647
set define off;
18648
 
3959 dpurdie 18649
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
18650
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
18651
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
18652
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
18653
                                                        NNuser_id IN NUMBER,
18654
                                                        NNdelete_old_dependency IN NUMBER
18655
                                                       ) IS
1373 dpurdie 18656
/* ---------------------------------------------------------------------------
3959 dpurdie 18657
    Version: 3.3
1373 dpurdie 18658
   --------------------------------------------------------------------------- */
18659
 
3959 dpurdie 18660
    retPV_ID NUMBER;
18661
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
18662
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
18663
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
18664
    NNpkg_id NUMBER;
18665
    NNdpkg_id NUMBER;
1373 dpurdie 18666
 
18667
BEGIN
3959 dpurdie 18668
    --- Seed database with package_name and version if required ---
18669
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
1373 dpurdie 18670
 
3959 dpurdie 18671
    -- get v_ext,pkg_id of current dependency
18672
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
18673
      FROM PACKAGE_VERSIONS
18674
     WHERE pv_id = retPV_ID;
1373 dpurdie 18675
 
3959 dpurdie 18676
    -- get pkg_id of parent package
18677
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
18678
      FROM PACKAGE_VERSIONS
18679
     WHERE pv_id = NNpv_id;
1373 dpurdie 18680
 
18681
 
3959 dpurdie 18682
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
18683
    	( (PvIsPatch IS NOT NULL) )THEN
1373 dpurdie 18684
 
3959 dpurdie 18685
	    IF NNdelete_old_dependency = 1 THEN
18686
	        /* Used for CUSTOM dependency add/edit */
1373 dpurdie 18687
 
3959 dpurdie 18688
	        --- Remove old dependency ---
18689
            IF (PvIsPatch IS NULL) THEN
18690
            	-- Do it for Packages
18691
		        DELETE FROM PACKAGE_DEPENDENCIES
18692
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
18693
		            (
18694
		            SELECT dep.*
18695
		              FROM PACKAGE_DEPENDENCIES dep,
18696
		                   PACKAGE_VERSIONS dpv,
18697
		                   PACKAGE_VERSIONS pv
18698
		             WHERE dep.dpv_id = dpv.pv_id
18699
		               AND dep.pv_id = NNpv_id
18700
		               AND pv.pv_id = retPV_ID
18701
		               AND dpv.pkg_id = pv.pkg_id
18702
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
18703
		            );
18704
            ELSE
18705
            	-- Do it for Patches
18706
                DELETE FROM PACKAGE_DEPENDENCIES
18707
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
18708
		            (
18709
		            SELECT dep.*
18710
		              FROM PACKAGE_DEPENDENCIES dep
18711
		             WHERE dep.dpv_id = retPV_ID
18712
		               AND dep.pv_id = NNpv_id
18713
		            );
18714
			END IF;
1373 dpurdie 18715
 
3959 dpurdie 18716
	    END IF;
1373 dpurdie 18717
 
3959 dpurdie 18718
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
18719
 
18720
	    --- Add new dependency ---
18721
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
18722
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
18723
 
18724
	END IF;
18725
 
18726
END Update_Package_Dependency;
4040 dpurdie 18727
 
1374 dpurdie 18728
/
1373 dpurdie 18729
 
4040 dpurdie 18730
/
18731
--------------------------------------------------------
18732
--  DDL for Procedure UPDATE_PACKAGE_STATES
18733
--------------------------------------------------------
18734
set define off;
18735
 
3959 dpurdie 18736
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
18737
                                                    NNsession_num IN NUMBER ) IS
18738
/* =============  STATE RULES =================== */
18739
/*
18740
   MNR   MRR   MN   MR    |   pkg_state
18741
   ------------------------------------
18742
 
18743
 
18744
 
18745
 
18746
   ------------------------------------
18747
 
18748
 
18749
 
18750
 
18751
   ------------------------------------
18752
    1     0     0     0   |      MINOR_READY
18753
    1     0     0     1   |      MAJOR
18754
    1     0     1     0   |      MINOR
18755
    1     0     1     1   |      MAJOR
18756
   ------------------------------------
18757
    1     1     0     0   |      MAJOR_READY
18758
    1     1     0     1   |      MAJOR
18759
    1     1     1     0   |      MAJOR
18760
    1     1     1     1   |      MAJOR
18761
   ------------------------------------
18762
*/
18763
BEGIN
18764
    /*----------------------------------------------
18765
    ||              MINOR READY
18766
    */----------------------------------------------
1373 dpurdie 18767
 
3959 dpurdie 18768
    UPDATE release_content
18769
       SET pkg_state = 4
18770
     WHERE rtag_id = NNrtag_id
18771
       AND pv_id IN
18772
           (
18773
           SELECT DISTINCT pv_id
18774
           FROM temp_env_states
18775
           WHERE session_num = NNsession_num
18776
             AND level_num = 1
18777
             AND tes_state = 2
18778
           );
1373 dpurdie 18779
 
3959 dpurdie 18780
    /*----------------------------------------------
18781
    ||              MAJOR READY
18782
    */----------------------------------------------
18783
    UPDATE release_content
18784
       SET pkg_state = 3
18785
     WHERE rtag_id = NNrtag_id
18786
       AND pv_id IN
18787
           (
18788
           SELECT DISTINCT pv_id
18789
           FROM temp_env_states
18790
           WHERE session_num = NNsession_num
18791
             AND level_num = 1
18792
             AND tes_state IN (0,1)
18793
           );
1373 dpurdie 18794
 
3959 dpurdie 18795
    /*----------------------------------------------
18796
    ||                MINOR
18797
    */----------------------------------------------
18798
    UPDATE release_content
18799
       SET pkg_state = 2
18800
     WHERE rtag_id = NNrtag_id
18801
       AND pv_id IN
18802
           (
18803
           SELECT DISTINCT pv_id
18804
            FROM temp_env_states
18805
            WHERE session_num = NNsession_num
18806
              AND level_num >= 2
18807
              AND tes_state = 2
18808
            MINUS
18809
           SELECT pv_id
18810
             FROM release_content
18811
            WHERE rtag_id = NNrtag_id
18812
              AND pkg_state = 3
18813
           );
1373 dpurdie 18814
 
3959 dpurdie 18815
    /*----------------------------------------------
18816
    ||                MAJOR
18817
    */----------------------------------------------
18818
    UPDATE release_content
18819
       SET pkg_state = 1
18820
     WHERE rtag_id = NNrtag_id
18821
       AND pv_id IN
18822
           (
18823
           SELECT DISTINCT pv_id
18824
           FROM temp_env_states
18825
           WHERE session_num = NNsession_num
18826
             AND level_num >= 2
18827
             AND tes_state IN (0,1)
18828
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
18829
           UNION
18830
           SELECT DISTINCT tes.pv_id
18831
           FROM temp_env_states tes,
18832
                release_content rc
18833
           WHERE tes.session_num = NNsession_num
18834
             AND tes.level_num >= 2
18835
             AND tes.tes_state = 2
18836
             AND rtag_id = NNrtag_id
18837
             AND rc.pv_id = tes.pv_id
18838
             AND rc.pkg_state = 3
18839
           );
1373 dpurdie 18840
 
3959 dpurdie 18841
    /*----------------------------------------------
18842
    ||                 OK
18843
    */----------------------------------------------
18844
    UPDATE release_content
18845
       SET pkg_state = 0
18846
     WHERE rtag_id = NNrtag_id
18847
       AND pv_id IN
18848
           (
18849
           SELECT rc.pv_id
18850
             FROM release_content rc
18851
            WHERE rc.rtag_id = NNrtag_id
18852
              AND NOT rc.pv_id IN
18853
                    (
18854
                     SELECT DISTINCT pv_id
18855
                     FROM temp_env_states WHERE session_num = NNsession_num
18856
                    )
18857
           );
1373 dpurdie 18858
 
3959 dpurdie 18859
      Update_Deprecation_State (NNrtag_id);
1373 dpurdie 18860
 
3959 dpurdie 18861
    /*----------------------------------------------
18862
    ||              PEGGED VERSIONS DEPENDENT
18863
    */----------------------------------------------
18864
    UPDATE release_content
18865
       SET pkg_state = 10
18866
     WHERE rtag_id = NNrtag_id
18867
       AND pv_id IN
18868
           (
18869
           SELECT DISTINCT pv_id
18870
           FROM pegged_versions pegv
18871
           WHERE pegv.rtag_id = NNrtag_id
18872
           );
1373 dpurdie 18873
 
3959 dpurdie 18874
    /*----------------------------------------------
18875
    ||              ADVISORY RIPPLE
18876
    */----------------------------------------------
18877
    UPDATE release_content
18878
       SET pkg_state = 8
18879
     WHERE rtag_id = NNrtag_id
18880
       AND pv_id IN
18881
           (
18882
           SELECT DISTINCT pv_id
18883
           FROM advisory_ripple ar
18884
           WHERE ar.rtag_id = NNrtag_id
18885
           )
18886
       AND pv_id IN
18887
           (
18888
           SELECT DISTINCT pv_id
18889
           FROM release_content rc
18890
           WHERE rc.rtag_id = NNrtag_id
18891
           );
1373 dpurdie 18892
 
3959 dpurdie 18893
END Update_Package_States;
4040 dpurdie 18894
 
3959 dpurdie 18895
/
1373 dpurdie 18896
 
4040 dpurdie 18897
/
18898
--------------------------------------------------------
18899
--  DDL for Procedure UPDATE_PROCESSES
18900
--------------------------------------------------------
18901
set define off;
18902
 
3959 dpurdie 18903
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
18904
IS
1373 dpurdie 18905
 
3959 dpurdie 18906
proc_id NUMBER;
18907
/******************************************************************************
18908
   NAME:       DELETE_DO_NOT_RIPPLE
18909
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
18910
               IS RELEASED
1373 dpurdie 18911
 
3959 dpurdie 18912
   REVISIONS:
18913
   Ver        Date        Author           Description
18914
   ---------  ----------  ---------------  ------------------------------------
18915
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 18916
 
3959 dpurdie 18917
   NOTES:
1373 dpurdie 18918
 
3959 dpurdie 18919
   Automatically available Auto Replace Keywords:
18920
      Object Name:     DELETE_DO_NOT_RIPPLE
18921
      Sysdate:         21/04/2006
18922
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
18923
      Username:         (set in TOAD Options, Procedure Editor)
18924
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 18925
 
3959 dpurdie 18926
******************************************************************************/
18927
   CURSOR ripple_cur
18928
   IS
18929
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
1373 dpurdie 18930
 
3959 dpurdie 18931
   ripple_rec   ripple_cur%ROWTYPE;
18932
BEGIN
18933
   OPEN ripple_cur;
18934
 
18935
   FETCH ripple_cur
18936
    INTO ripple_rec;
18937
 
18938
   WHILE ripple_cur%FOUND
18939
   LOOP
18940
 
18941
 
18942
update deployment_manager.processes_config 
18943
set proc_id = ripple_rec.proc_id
18944
where pkg_health_tag = ripple_rec.proc_name
18945
and cmd_interface IS NULL
18946
and pkg_owner IS NULL
18947
and is_interface IS NULL; 
18948
 
18949
 
18950
      FETCH ripple_cur
18951
       INTO ripple_rec;
18952
   END LOOP;
18953
END UPDATE_PROCESSES;
4040 dpurdie 18954
 
1374 dpurdie 18955
/
1373 dpurdie 18956
 
4040 dpurdie 18957
/
18958
--------------------------------------------------------
18959
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
18960
--------------------------------------------------------
18961
set define off;
18962
 
3959 dpurdie 18963
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
18964
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
18965
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
18966
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
18967
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
18968
													    NNuser_id IN NUMBER ) IS
1373 dpurdie 18969
/* ---------------------------------------------------------------------------
3959 dpurdie 18970
    Version: 3.0.1
1373 dpurdie 18971
   --------------------------------------------------------------------------- */
18972
 
3959 dpurdie 18973
    retRTD_ID	NUMBER;
18974
	CURSOR rtd_cur IS
18975
	    SELECT pv.pkg_version, pkg.pkg_name
18976
		  FROM runtime_dependencies rtd,
18977
		       package_versions pv,
18978
			   packages pkg
18979
		 WHERE rtd.rtd_id = pv.pv_id
18980
		   AND pv.pkg_id = pkg.pkg_id
18981
		   AND rtd.pv_id = NNpv_id
18982
		   AND rtd.rtd_id = NNrtd_id;
18983
	   rtd_rec rtd_cur%ROWTYPE;
1373 dpurdie 18984
 
3959 dpurdie 18985
	CURSOR old_rtd_cur IS
18986
	    SELECT pv.pv_id
18987
		  FROM package_versions pv
18988
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
18989
		 	   			 	    FROM package_versions rtdpv
18990
							   WHERE rtdpv.pv_id = NNrtd_id )
18991
		   AND pv.pkg_version = SSrtd_version;
18992
	old_rtd_rec old_rtd_cur%ROWTYPE;
1373 dpurdie 18993
 
3959 dpurdie 18994
 
1373 dpurdie 18995
BEGIN
18996
 
3959 dpurdie 18997
    -- Get current runtime dependency details
18998
	OPEN rtd_cur;
18999
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 19000
 
19001
 
19002
 
19003
 
3959 dpurdie 19004
	IF rtd_rec.pkg_version != SSrtd_version THEN
19005
           -- Version has changed, hence create new runtime dependency --
19006
	    /* NOTE: You must create new version as updating just a version will affect
19007
		        all packages using this runtime dependency and user does not expect that.
19008
		        It is safer to create new version */
19009
		OPEN old_rtd_cur;
19010
		FETCH old_rtd_cur INTO old_rtd_rec;
1373 dpurdie 19011
 
19012
 
3959 dpurdie 19013
		IF old_rtd_cur%NOTFOUND
19014
		THEN
19015
			-- Version not found, hence Create New version --
19016
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 19017
 
3959 dpurdie 19018
			-- Update runtime dependency table --
19019
			UPDATE runtime_dependencies SET
19020
				   rtd_id = retRTD_ID,
19021
				   rtd_url = SSrtd_url,
19022
				   rtd_comments = SSrtd_comments
19023
			 WHERE pv_id = NNpv_id
19024
			   AND rtd_id = NNrtd_id;
1373 dpurdie 19025
 
3959 dpurdie 19026
		ELSE
19027
			-- Update runtime dependency table --
19028
			UPDATE runtime_dependencies SET
19029
				   rtd_id = old_rtd_rec.pv_id,
19030
				   rtd_url = SSrtd_url,
19031
				   rtd_comments = SSrtd_comments
19032
			 WHERE pv_id = NNpv_id
19033
			   AND rtd_id = NNrtd_id;
19034
 
19035
		END IF;
19036
 
19037
 
19038
		CLOSE old_rtd_cur;
19039
 
19040
	ELSE
19041
		--  Version has not changed, hence update everithing except	version --
19042
		UPDATE runtime_dependencies SET
19043
			   rtd_url = SSrtd_url,
19044
			   rtd_comments = SSrtd_comments
19045
		 WHERE pv_id = NNpv_id
19046
		   AND rtd_id = NNrtd_id;
19047
 
19048
 
19049
 
19050
	END IF;
19051
 
19052
 
19053
	CLOSE rtd_cur;
19054
 
19055
END Update_Runtime_Dependency;
4040 dpurdie 19056
 
1374 dpurdie 19057
/
1373 dpurdie 19058
 
4040 dpurdie 19059
/
19060
--------------------------------------------------------
19061
--  DDL for Procedure UPDATE_UNIT_TEST
19062
--------------------------------------------------------
19063
set define off;
19064
 
3959 dpurdie 19065
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
19066
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
19067
											   nPv_id IN NUMBER,
19068
											   nUserId IN NUMBER,
19069
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
19070
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
19071
	                                           sCompletion_date IN VARCHAR2,
19072
											   sDpkg_path IN VARCHAR2,
19073
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
19074
											   sResults IN VARCHAR2,
19075
											   outFileName OUT VARCHAR2
19076
                                              ) IS
1373 dpurdie 19077
/* ---------------------------------------------------------------------------
3959 dpurdie 19078
    Version: 3.1.0
1373 dpurdie 19079
   --------------------------------------------------------------------------- */
3959 dpurdie 19080
 
19081
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 19082
 
3959 dpurdie 19083
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
19084
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 19085
 
3959 dpurdie 19086
 
1373 dpurdie 19087
BEGIN
19088
 
3959 dpurdie 19089
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
19090
       	ResultsURL := sResults;
19091
       ELSE
19092
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
19093
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
19094
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
19095
           END IF;
19096
       END IF;
1373 dpurdie 19097
 
3959 dpurdie 19098
	--- Update Unit Test ---
19099
    UPDATE UNIT_TESTS SET
19100
           TEST_SUMMARY = sTest_summary,
19101
		   NUMOF_TEST = sNumof_test,
19102
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
19103
		   COMPLETED_BY = nUserId,
19104
		   RESULTS_URL = ResultsURL,
19105
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
19106
     WHERE TEST_ID = nTest_id
19107
       AND PV_ID = nPv_id;
1373 dpurdie 19108
 
3959 dpurdie 19109
END Update_Unit_Test;
4040 dpurdie 19110
 
3959 dpurdie 19111
/
1373 dpurdie 19112
 
4040 dpurdie 19113
/
19114
--------------------------------------------------------
19115
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
19116
--------------------------------------------------------
19117
set define off;
19118
 
3959 dpurdie 19119
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
19120
														  pnPv_id IN NUMBER,
19121
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
19122
														  sAcceptanceDate IN VARCHAR2,
19123
														  sAcceptedBy IN NUMBER,
19124
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
19125
														  cUpdateAcceptedStateOnly IN CHAR
19126
					                                     ) IS
19127
/* ---------------------------------------------------------------------------
19128
    Version: 3.0.0
19129
   --------------------------------------------------------------------------- */
1373 dpurdie 19130
 
19131
 
19132
 
3959 dpurdie 19133
BEGIN
19134
	IF cUpdateAcceptedStateOnly = 'Y'
19135
	THEN
19136
		--- Update Accepted State Only ---
19137
		IF ( sAccepted IS NULL )
19138
		THEN
19139
			-- Clear alleptance
19140
			UPDATE UNIT_TESTS SET
19141
		           TEST_ACCEPTED = NULL,
19142
		           ACCEPTANCE_DATE = NULL,
19143
				   ACCEPTED_BY = NULL,
19144
				   REVIEW_COMMENTS = NULL
19145
		     WHERE TEST_ID = pnTest_id
19146
		       AND PV_ID = pnPv_id;
19147
 
19148
	    ELSE
19149
			UPDATE UNIT_TESTS SET
19150
		           TEST_ACCEPTED = sAccepted,
19151
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
19152
				   ACCEPTED_BY = sAcceptedBy
19153
		     WHERE TEST_ID = pnTest_id
19154
		       AND PV_ID = pnPv_id;
19155
 
19156
		END IF;
19157
 
19158
 
19159
	ELSE
19160
		--- Update Unit Test Acceptance ---
19161
	    UPDATE UNIT_TESTS SET
19162
	           TEST_ACCEPTED = sAccepted,
19163
			   REVIEW_COMMENTS = sReviewComments,
19164
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
19165
			   ACCEPTED_BY = sAcceptedBy
19166
	     WHERE TEST_ID = pnTest_id
19167
	       AND PV_ID = pnPv_id;
19168
 
19169
	END IF;
19170
 
19171
END Update_Unit_Test_Acceptance;
4040 dpurdie 19172
 
1374 dpurdie 19173
/
1373 dpurdie 19174
 
4040 dpurdie 19175
/
19176
--------------------------------------------------------
19177
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
19178
--------------------------------------------------------
19179
set define off;
19180
 
3959 dpurdie 19181
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
19182
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
19183
											   nPv_id IN NUMBER,
19184
											   nUserId IN NUMBER,
19185
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
19186
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
19187
	                                           sCompletion_date IN VARCHAR2,
19188
											   sDpkg_path IN VARCHAR2,
19189
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
19190
											   sResults IN VARCHAR2,
19191
											   outFileName OUT VARCHAR2
19192
                                              ) IS
1373 dpurdie 19193
/* ---------------------------------------------------------------------------
3959 dpurdie 19194
    Version: 3.1.0
1373 dpurdie 19195
   --------------------------------------------------------------------------- */
3959 dpurdie 19196
 
19197
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 19198
 
3959 dpurdie 19199
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
19200
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
19201
 
19202
 
1373 dpurdie 19203
BEGIN
19204
 
3959 dpurdie 19205
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
19206
       	ResultsURL := sResults;
19207
       ELSE
19208
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
19209
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
19210
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
19211
           END IF;
19212
       END IF;
1373 dpurdie 19213
 
3959 dpurdie 19214
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
19215
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
19216
    		sResults_url:= 'doc' || '/' || 
19217
			;
19218
        END IF;*/
19219
	--- Update Unit Test ---
19220
    UPDATE UNIT_TESTS SET
19221
           TEST_SUMMARY = sTest_summary,
19222
		   NUMOF_TEST = sNumof_test,
19223
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
19224
		   COMPLETED_BY = nUserId,
19225
		   RESULTS_URL = ResultsURL,
19226
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
19227
     WHERE TEST_ID = nTest_id
19228
       AND PV_ID = nPv_id;
1373 dpurdie 19229
 
3959 dpurdie 19230
END Update_Unit_Test_Test;
4040 dpurdie 19231
 
19232
/
19233
 
19234
/
19235
--------------------------------------------------------
19236
--  DDL for Synonymn APPLICATIONS
19237
--------------------------------------------------------
19238
 
19239
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
19240
/
19241
--------------------------------------------------------
19242
--  DDL for Synonymn APPLICATION_PAGES
19243
--------------------------------------------------------
19244
 
19245
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
19246
/
19247
--------------------------------------------------------
19248
--  DDL for Synonymn CONTROL_OBJECTS
19249
--------------------------------------------------------
19250
 
19251
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
19252
/
19253
--------------------------------------------------------
19254
--  DDL for Synonymn DATA_PERMISSIONS
19255
--------------------------------------------------------
19256
 
19257
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
19258
/
19259
--------------------------------------------------------
19260
--  DDL for Synonymn DATA_TABLES
19261
--------------------------------------------------------
19262
 
19263
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
19264
/
19265
--------------------------------------------------------
19266
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
19267
--------------------------------------------------------
19268
 
19269
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
19270
/
19271
--------------------------------------------------------
19272
--  DDL for Synonymn PERMISSION_TYPES
19273
--------------------------------------------------------
19274
 
19275
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
19276
/
19277
--------------------------------------------------------
19278
--  DDL for Synonymn PK_AMUTILS
19279
--------------------------------------------------------
19280
 
19281
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
19282
/
19283
--------------------------------------------------------
19284
--  DDL for Synonymn PK_SECURITY
19285
--------------------------------------------------------
19286
 
19287
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
19288
/
19289
--------------------------------------------------------
19290
--  DDL for Synonymn ROLES
19291
--------------------------------------------------------
19292
 
19293
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
19294
/
19295
--------------------------------------------------------
19296
--  DDL for Synonymn ROLE_PRIVILEGES
19297
--------------------------------------------------------
19298
 
19299
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
19300
/
19301
--------------------------------------------------------
19302
--  DDL for Synonymn USERS
19303
--------------------------------------------------------
19304
 
19305
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
19306
/
19307
--------------------------------------------------------
19308
--  DDL for Synonymn USER_APPLICATIONS
19309
--------------------------------------------------------
19310
 
19311
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
19312
/
19313
--------------------------------------------------------
19314
--  DDL for Synonymn USER_ROLES
19315
--------------------------------------------------------
19316
 
19317
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
19318
/