Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
1374 dpurdie 1
--------------------------------------------------------
4585 dpurdie 2
--  File created - Tuesday-October-07-2014   
1374 dpurdie 3
--------------------------------------------------------
4040 dpurdie 4
--------------------------------------------------------
5
--  DDL for Type RELMGR_NUMBER_TAB_T
6
--------------------------------------------------------
1373 dpurdie 7
 
4040 dpurdie 8
  CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T" as TABLE of NUMBER
1373 dpurdie 9
 
4040 dpurdie 10
/
11
 
12
/
13
--------------------------------------------------------
14
--  DDL for Type RELMGR_VARCHAR2_TAB_T
15
--------------------------------------------------------
16
 
17
  CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T" 
18
as TABLE of VARCHAR2(4000)
19
 
20
/
21
 
22
/
23
--------------------------------------------------------
24
--  DDL for Type TDICTIONARY
25
--------------------------------------------------------
26
 
27
  CREATE OR REPLACE TYPE "TDICTIONARY" AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
28
 
29
/
30
 
31
/
32
--------------------------------------------------------
33
--  DDL for Sequence MICROSOFTSEQDTPROPERTIES
34
--------------------------------------------------------
35
 
36
   CREATE SEQUENCE  "MICROSOFTSEQDTPROPERTIES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 50 NOORDER  NOCYCLE ;
37
/
38
--------------------------------------------------------
39
--  DDL for Sequence SEQ_ADDITIONAL_NOTES
40
--------------------------------------------------------
41
 
4585 dpurdie 42
   CREATE SEQUENCE  "SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 35669 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 43
/
44
--------------------------------------------------------
45
--  DDL for Sequence SEQ_BMCON_ID
46
--------------------------------------------------------
47
 
4308 dpurdie 48
   CREATE SEQUENCE  "SEQ_BMCON_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 141 CACHE 20 NOORDER  NOCYCLE ;
4040 dpurdie 49
/
50
--------------------------------------------------------
51
--  DDL for Sequence SEQ_BM_ID
52
--------------------------------------------------------
53
 
54
   CREATE SEQUENCE  "SEQ_BM_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 5 NOCACHE  ORDER  NOCYCLE ;
55
/
56
--------------------------------------------------------
57
--  DDL for Sequence SEQ_CR_ID
58
--------------------------------------------------------
59
 
4585 dpurdie 60
   CREATE SEQUENCE  "SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 88021 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 61
/
62
--------------------------------------------------------
63
--  DDL for Sequence SEQ_DAEMON_INSTRUCTION_ID
64
--------------------------------------------------------
65
 
4585 dpurdie 66
   CREATE SEQUENCE  "SEQ_DAEMON_INSTRUCTION_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 154087 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 67
/
68
--------------------------------------------------------
69
--  DDL for Sequence SEQ_GBE_ID
70
--------------------------------------------------------
71
 
4211 dpurdie 72
   CREATE SEQUENCE  "SEQ_GBE_ID"  MINVALUE 40 MAXVALUE 9999999999999999999999990 INCREMENT BY 1 START WITH 1231 NOCACHE  ORDER  NOCYCLE ;
4040 dpurdie 73
/
74
--------------------------------------------------------
75
--  DDL for Sequence SEQ_GROUP_EMAIL_ID
76
--------------------------------------------------------
77
 
4211 dpurdie 78
   CREATE SEQUENCE  "SEQ_GROUP_EMAIL_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 1166 CACHE 20 NOORDER  NOCYCLE ;
4040 dpurdie 79
/
80
--------------------------------------------------------
81
--  DDL for Sequence SEQ_MSG_ID
82
--------------------------------------------------------
83
 
84
   CREATE SEQUENCE  "SEQ_MSG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 562 CACHE 20 ORDER  NOCYCLE ;
85
/
86
--------------------------------------------------------
87
--  DDL for Sequence SEQ_PKG_ID
88
--------------------------------------------------------
89
 
4585 dpurdie 90
   CREATE SEQUENCE  "SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 60686 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 91
/
92
--------------------------------------------------------
93
--  DDL for Sequence SEQ_PROJ_ID
94
--------------------------------------------------------
95
 
4585 dpurdie 96
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 821 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 97
/
98
--------------------------------------------------------
99
--  DDL for Sequence SEQ_PV_ID
100
--------------------------------------------------------
101
 
4585 dpurdie 102
   CREATE SEQUENCE  "SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1002791 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 103
/
104
--------------------------------------------------------
105
--  DDL for Sequence SEQ_RCON_ID
106
--------------------------------------------------------
107
 
4585 dpurdie 108
   CREATE SEQUENCE  "SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 26023 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 109
/
110
--------------------------------------------------------
111
--  DDL for Sequence SEQ_RTAG_ID
112
--------------------------------------------------------
113
 
4585 dpurdie 114
   CREATE SEQUENCE  "SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 30823 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 115
/
116
--------------------------------------------------------
117
--  DDL for Sequence SEQ_SCHEDULED_ID
118
--------------------------------------------------------
119
 
4585 dpurdie 120
   CREATE SEQUENCE  "SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 27001 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 121
/
122
--------------------------------------------------------
123
--  DDL for Sequence SEQ_SESSION_NUM
124
--------------------------------------------------------
125
 
4585 dpurdie 126
   CREATE SEQUENCE  "SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1015006 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 127
/
128
--------------------------------------------------------
129
--  DDL for Sequence SEQ_UNIT_TESTS
130
--------------------------------------------------------
131
 
4585 dpurdie 132
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 353825 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 133
/
134
--------------------------------------------------------
135
--  DDL for Sequence SEQ_USER_ID
136
--------------------------------------------------------
137
 
138
   CREATE SEQUENCE  "SEQ_USER_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3961 CACHE 20 ORDER  NOCYCLE ;
139
/
140
--------------------------------------------------------
141
--  DDL for Sequence SEQ_VCS_TYPE
142
--------------------------------------------------------
143
 
144
   CREATE SEQUENCE  "SEQ_VCS_TYPE"  MINVALUE 1 MAXVALUE 255 INCREMENT BY 1 START WITH 43 CACHE 20 ORDER  NOCYCLE ;
145
/
146
--------------------------------------------------------
147
--  DDL for Sequence SEQ_VIEW_ID
148
--------------------------------------------------------
149
 
4585 dpurdie 150
   CREATE SEQUENCE  "SEQ_VIEW_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5421 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 151
/
152
--------------------------------------------------------
153
--  DDL for Sequence SEQ_VTREE_ID
154
--------------------------------------------------------
155
 
4585 dpurdie 156
   CREATE SEQUENCE  "SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 27642 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 157
/
158
--------------------------------------------------------
159
--  DDL for Table ABT_ACTION_LOG
160
--------------------------------------------------------
161
 
162
  CREATE TABLE "ABT_ACTION_LOG" 
163
   (	"RCON_ID" NUMBER, 
164
	"ACTION_DATETIME" DATE, 
165
	"ACTION" VARCHAR2(4000)
166
   ) ;
167
/
168
--------------------------------------------------------
169
--  DDL for Table ACTION_LOG
170
--------------------------------------------------------
171
 
172
  CREATE TABLE "ACTION_LOG" 
173
   (	"USER_ID" NUMBER, 
174
	"ACTION_DATETIME" DATE, 
175
	"PV_ID" NUMBER, 
176
	"DESCRIPTION" VARCHAR2(4000), 
177
	"ACTTYPE_ID" NUMBER
178
   ) ;
179
/
180
--------------------------------------------------------
181
--  DDL for Table ACTION_TYPE
182
--------------------------------------------------------
183
 
184
  CREATE TABLE "ACTION_TYPE" 
185
   (	"ACTTYPE_ID" NUMBER, 
186
	"NAME" VARCHAR2(255), 
187
	"DESCRIPTION" VARCHAR2(4000)
188
   ) ;
189
/
190
--------------------------------------------------------
191
--  DDL for Table ADDITIONAL_NOTES
192
--------------------------------------------------------
193
 
194
  CREATE TABLE "ADDITIONAL_NOTES" 
195
   (	"NOTE_ID" NUMBER, 
196
	"PV_ID" NUMBER, 
197
	"NOTE_TITLE" VARCHAR2(2000), 
198
	"NOTE_BODY" VARCHAR2(4000), 
199
	"MOD_DATE" DATE, 
200
	"MOD_USER" NUMBER
201
   ) ;
202
/
203
--------------------------------------------------------
204
--  DDL for Table ADVISORY_RIPPLE
205
--------------------------------------------------------
206
 
207
  CREATE TABLE "ADVISORY_RIPPLE" 
208
   (	"RTAG_ID" NUMBER, 
209
	"PV_ID" NUMBER
210
   ) ;
211
/
212
--------------------------------------------------------
213
--  DDL for Table ARCHIVE_ACTION_LOG
214
--------------------------------------------------------
215
 
216
  CREATE TABLE "ARCHIVE_ACTION_LOG" 
217
   (	"USER_ID" NUMBER, 
218
	"DATE_TIME_STAMP" DATE, 
219
	"RTAG_ID" NUMBER, 
220
	"DESCRIPTION" VARCHAR2(4000)
221
   ) ;
222
/
223
--------------------------------------------------------
224
--  DDL for Table ARCHIVE_DATA
225
--------------------------------------------------------
226
 
227
  CREATE TABLE "ARCHIVE_DATA" 
228
   (	"RTAG_ID" NUMBER(*,0), 
229
	"PV_ID" NUMBER(*,0)
230
   ) ;
231
/
232
--------------------------------------------------------
233
--  DDL for Table AUTOBUILD_FAILURE
234
--------------------------------------------------------
235
 
236
  CREATE TABLE "AUTOBUILD_FAILURE" 
237
   (	"GROUP_EMAIL_ID" NUMBER, 
238
	"PROJ_ID" NUMBER, 
239
	"VIEW_ID" NUMBER
240
   ) ;
241
/
242
--------------------------------------------------------
243
--  DDL for Table BUILD_ENVIRONMENTS
244
--------------------------------------------------------
245
 
246
  CREATE TABLE "BUILD_ENVIRONMENTS" 
247
   (	"BE_ID" NUMBER, 
248
	"BE_NAME" VARCHAR2(255)
249
   ) ;
250
/
251
--------------------------------------------------------
252
--  DDL for Table BUILD_ENV_DOCUMENTS
253
--------------------------------------------------------
254
 
255
  CREATE TABLE "BUILD_ENV_DOCUMENTS" 
256
   (	"BE_ID" NUMBER, 
257
	"DOC_NUM" VARCHAR2(255)
258
   ) ;
259
/
260
--------------------------------------------------------
261
--  DDL for Table BUILD_MACHINES
262
--------------------------------------------------------
263
 
264
  CREATE TABLE "BUILD_MACHINES" 
265
   (	"BM_ID" NUMBER, 
266
	"BM_NAME" VARCHAR2(20)
267
   ) ;
268
/
269
--------------------------------------------------------
270
--  DDL for Table BUILD_MACHINE_CONFIG
271
--------------------------------------------------------
272
 
273
  CREATE TABLE "BUILD_MACHINE_CONFIG" 
274
   (	"BMCON_ID" NUMBER, 
275
	"DISPLAY_NAME" VARCHAR2(50), 
276
	"MACHINE_HOSTNAME" VARCHAR2(50), 
277
	"DESCRIPTION" VARCHAR2(512), 
278
	"GBE_ID" NUMBER
279
   ) ;
280
/
281
--------------------------------------------------------
282
--  DDL for Table BUILD_ORDER
283
--------------------------------------------------------
284
 
285
  CREATE TABLE "BUILD_ORDER" 
286
   (	"RTAG_ID" NUMBER, 
287
	"STEP_NUM" NUMBER, 
288
	"PV_ID" NUMBER, 
289
	"UNRESOLVED" CHAR(1)
290
   ) ;
291
/
292
--------------------------------------------------------
293
--  DDL for Table BUILD_SERVICE_CONFIG
294
--------------------------------------------------------
295
 
296
  CREATE TABLE "BUILD_SERVICE_CONFIG" 
297
   (	"SERVICE" VARCHAR2(50), 
298
	"CONFIG" VARCHAR2(2000)
299
   ) ;
300
/
301
--------------------------------------------------------
302
--  DDL for Table BUILD_STANDARDS
303
--------------------------------------------------------
304
 
305
  CREATE TABLE "BUILD_STANDARDS" 
306
   (	"BS_ID" NUMBER, 
307
	"BS_NAME" VARCHAR2(20)
308
   ) ;
309
/
310
--------------------------------------------------------
311
--  DDL for Table BUILD_STANDARDS_ADDENDUM
312
--------------------------------------------------------
313
 
314
  CREATE TABLE "BUILD_STANDARDS_ADDENDUM" 
315
   (	"BSA_ID" NUMBER, 
316
	"BSA_NAME" VARCHAR2(4000), 
317
	"BS_ID" NUMBER
318
   ) ;
319
/
320
--------------------------------------------------------
321
--  DDL for Table CODE_REVIEWS
322
--------------------------------------------------------
323
 
324
  CREATE TABLE "CODE_REVIEWS" 
325
   (	"PV_ID" NUMBER, 
326
	"DATE_OF_REVIEW" DATE, 
327
	"TIME_SPENT" FLOAT(126), 
328
	"REVIEW_REASON" VARCHAR2(4000), 
329
	"RTEAM_DOMAIN_EXPERT" VARCHAR2(4000), 
330
	"RTEAM_LANGUAGE_EXPERT" VARCHAR2(4000), 
331
	"RTEAM_PEER_DEVELOPER" VARCHAR2(4000), 
332
	"RTEAM_AUTHOR" VARCHAR2(4000), 
333
	"FILES_REVIEWED" VARCHAR2(4000), 
334
	"REVIEW_RESULTS" NUMBER, 
335
	"ISSUES_RAISED" VARCHAR2(4000), 
336
	"REVIEW_COMMENTS" VARCHAR2(4000), 
337
	"FNC_S_MEETS_FUNCTIONALITY" CHAR(1), 
338
	"FNC_C_MEETS_FUNCTIONALITY" VARCHAR2(4000), 
339
	"RBS_S_BOUND_COND_HANDLED" CHAR(1), 
340
	"RBS_C_BOUND_COND_HANDLED" VARCHAR2(4000), 
341
	"RBS_S_CLASS_INTERF_PRECOND" CHAR(1), 
342
	"RBS_C_CLASS_INTERF_PRECOND" VARCHAR2(4000), 
343
	"RBS_S_NO_UNITIALISED_DATE" CHAR(1), 
344
	"RBS_C_NO_UNITIALISED_DATE" VARCHAR2(4000), 
345
	"RBS_S_EXCEP_HANDING" CHAR(1), 
346
	"RBS_C_EXCEP_HANDING" VARCHAR2(4000), 
347
	"RBS_S_RESOURCE_MNG" CHAR(1), 
348
	"RBS_C_RESOURCE_MNG" VARCHAR2(4000), 
349
	"RBS_S_TRANS_COMPLET" CHAR(1), 
350
	"RBS_C_TRANS_COMPLET" VARCHAR2(4000), 
351
	"RBS_S_THREADSAFETY" CHAR(1), 
352
	"RBS_C_THREADSAFETY" VARCHAR2(4000), 
353
	"RBS_S_RET_VALS" CHAR(1), 
354
	"RBS_C_RET_VALS" VARCHAR2(4000), 
355
	"RBS_S_CORR_ERR_HANDLING" CHAR(1), 
356
	"RBS_C_CORR_ERR_HANDLING" VARCHAR2(4000), 
357
	"RBS_S_SQL_STD" CHAR(1), 
358
	"RBS_C_SQL_STD" VARCHAR2(4000), 
359
	"MNT_S_EXT_REF" CHAR(1), 
360
	"MNT_C_EXT_REF" VARCHAR2(4000), 
361
	"MNT_S_CLASS_SIZE" CHAR(1), 
362
	"MNT_C_CLASS_SIZE" VARCHAR2(4000), 
363
	"MNT_S_METHOD_SIZE" CHAR(1), 
364
	"MNT_C_METHOD_SIZE" VARCHAR2(4000), 
365
	"MNT_S_APPROP_COMM" CHAR(1), 
366
	"MNT_C_APPROP_COMM" VARCHAR2(4000), 
367
	"MNT_S_IDENT_NAME_STD" CHAR(1), 
368
	"MNT_C_IDENT_NAME_STD" VARCHAR2(4000), 
369
	"MNT_S_SWITCH_HAVE_DEFAULTS" CHAR(1), 
370
	"MNT_C_SWITCH_HAVE_DEFAULTS" VARCHAR2(4000), 
371
	"MNT_S_NO_LIT_NUM" CHAR(1), 
372
	"MNT_C_NO_LIT_NUM" VARCHAR2(4000), 
373
	"MNT_S_NO_DEAD_CODE" CHAR(1), 
374
	"MNT_C_NO_DEAD_CODE" VARCHAR2(4000), 
375
	"DEI_S_STD_DES_PATT" CHAR(1), 
376
	"DEI_C_STD_DES_PATT" VARCHAR2(4000), 
377
	"DEI_S_APPROP_ALGOR" CHAR(1), 
378
	"DEI_C_APPROP_ALGOR" VARCHAR2(4000), 
379
	"DEI_S_APPROP_OBJ" CHAR(1), 
380
	"DEI_C_APPROP_OBJ" VARCHAR2(4000), 
381
	"DEI_S_APPROP_ERR_MSG" CHAR(1), 
382
	"DEI_C_APPROP_ERR_MSG" VARCHAR2(4000), 
383
	"DEI_S_STD_FRAMEW_COMP" CHAR(1), 
384
	"DEI_C_STD_FRAMEW_COMP" VARCHAR2(4000), 
385
	"DEI_S_APPROP_LOGGING" CHAR(1), 
386
	"DEI_C_APPROP_LOGGING" VARCHAR2(4000)
387
   ) ;
388
/
389
--------------------------------------------------------
390
--  DDL for Table CODE_REVIEW_URL
391
--------------------------------------------------------
392
 
393
  CREATE TABLE "CODE_REVIEW_URL" 
394
   (	"CR_ID" NUMBER, 
395
	"PV_ID" NUMBER, 
396
	"PROJ_ID" NUMBER, 
397
	"URL" VARCHAR2(4000), 
398
	"REASON" VARCHAR2(4000), 
399
	"DATE_OF_REVIEW" DATE, 
400
	"LAST_MODIFIED" DATE
401
   ) ;
402
/
403
--------------------------------------------------------
4585 dpurdie 404
--  DDL for Table CQ_HISTORY
405
--------------------------------------------------------
406
 
407
  CREATE TABLE "CQ_HISTORY" 
408
   (	"DBID" NUMBER(10,0), 
409
	"ENTITY_DBID" NUMBER(10,0), 
410
	"ENTITYDEF_ID" NUMBER(10,0), 
411
	"ENTITYDEF_NAME" VARCHAR2(30 CHAR), 
412
	"ACTION_TIMESTAMP" DATE, 
413
	"USER_NAME" VARCHAR2(30 CHAR), 
414
	"ACTION_NAME" VARCHAR2(30 CHAR), 
415
	"OLD_STATE" VARCHAR2(30 CHAR), 
416
	"NEW_STATE" VARCHAR2(30 CHAR), 
417
	"EXPIRED_TIMESTAMP" DATE
418
   ) ;
419
/
420
--------------------------------------------------------
4040 dpurdie 421
--  DDL for Table CQ_ISSUES
422
--------------------------------------------------------
423
 
424
  CREATE TABLE "CQ_ISSUES" 
425
   (	"PV_ID" NUMBER, 
426
	"ISS_DB" NUMBER, 
427
	"ISS_ID" NUMBER, 
428
	"ISS_STATE" NUMBER, 
429
	"MOD_DATE" DATE, 
430
	"NOTES" VARCHAR2(255)
431
   ) ;
432
/
4585 dpurdie 433
--------------------------------------------------------
434
--  DDL for Table CQ_SOFTWARE_ISSUE
435
--------------------------------------------------------
436
 
437
  CREATE TABLE "CQ_SOFTWARE_ISSUE" 
438
   (	"RATL_MASTERSHIP" NUMBER(10,0), 
439
	"DBID" NUMBER(10,0), 
440
	"IS_ACTIVE" NUMBER(10,0), 
441
	"ID" VARCHAR2(13 CHAR), 
442
	"STATE" NUMBER(10,0), 
443
	"VERSION" NUMBER(10,0), 
444
	"LOCK_VERSION" NUMBER(10,0), 
445
	"LOCKED_BY" NUMBER(10,0), 
446
	"IS_DUPLICATE" NUMBER(10,0), 
447
	"UNDUPLICATE_STATE" VARCHAR2(50 CHAR), 
448
	"HEADLINE" VARCHAR2(150 CHAR), 
449
	"DESCRIPTION" CLOB, 
450
	"PRIORITY" VARCHAR2(50 CHAR), 
451
	"SUBMITTER" NUMBER(10,0), 
452
	"SUBMIT_DATE" DATE, 
453
	"OWNER" NUMBER(10,0), 
454
	"APPROVER" NUMBER(10,0), 
455
	"NOTE_ENTRY" CLOB, 
456
	"NOTES_LOG" CLOB, 
457
	"RESOLUTION_DATE" DATE, 
458
	"ISSUE_TYPE" VARCHAR2(50 CHAR), 
459
	"PACKAGE_REF" VARCHAR2(50 CHAR), 
460
	"SOLUTION_APPROVED_DATE" DATE, 
461
	"CLOSE_DATE" DATE, 
462
	"BUILD_NUMBER" VARCHAR2(50 CHAR), 
463
	"NEW_NUM" VARCHAR2(50 CHAR), 
464
	"FOR_INFORMATION" CLOB, 
465
	"PROP_SOL_DATE" DATE, 
466
	"ARTIFACTS_TO_BE_UPDATED_1" CLOB, 
467
	"ISSUE_ID" NUMBER(10,0), 
468
	"SOLUTION_DATE" DATE, 
469
	"KPI_SOLUTION_DATE" DATE, 
470
	"TITLE" VARCHAR2(80 CHAR), 
471
	"PROJECT" VARCHAR2(50 CHAR), 
472
	"ORIGINATING_AREA" VARCHAR2(50 CHAR), 
473
	"ESTIMATED_TIME_INHOURS" NUMBER(10,0), 
474
	"RELEASE_PART1" NUMBER(10,0), 
475
	"RELEASE_PART2" NUMBER(10,0), 
476
	"RELEASE_PART3" NUMBER(10,0), 
477
	"SOLUTION_RELEASE_PART1" NUMBER(10,0), 
478
	"SOLUTION_RELEASE_PART2" NUMBER(10,0), 
479
	"SOLUTION_RELEASE_PART3" NUMBER(10,0), 
480
	"ORIGINAL_IMPLEMENT_DATE" DATE, 
481
	"ISSUE_LABEL" VARCHAR2(50 CHAR), 
482
	"PRODUCT" VARCHAR2(50 CHAR), 
483
	"ORIGIN" VARCHAR2(50 CHAR), 
484
	"CLONE_NOTE" CLOB, 
485
	"SOLUTION_LABEL" VARCHAR2(50 CHAR), 
486
	"REQUIRED_BY" DATE, 
487
	"ITERATION_AFFECTED" VARCHAR2(50 CHAR), 
488
	"MERGE_OLD_ID" VARCHAR2(150 CHAR), 
489
	"COMMENTS" CLOB, 
490
	"CHANGE_CONTROL" VARCHAR2(50 CHAR), 
491
	"MERGE_COMMENTS" CLOB, 
492
	"MERGE_CHANGE_CONTROL" VARCHAR2(50 CHAR), 
493
	"AWAITING_INFO_DESC" CLOB, 
494
	"REQUEST_CLOSE_DESC" CLOB, 
495
	"ROOT_CAUSE" VARCHAR2(50 CHAR), 
496
	"FLAGA" VARCHAR2(50 CHAR), 
497
	"FLAGB" VARCHAR2(50 CHAR), 
498
	"FLAGC" VARCHAR2(50 CHAR), 
499
	"SCHEDULED_RELEASE" VARCHAR2(60 CHAR), 
500
	"SEVERITY" VARCHAR2(50 CHAR), 
501
	"CUSTOM_FIELD_01" CLOB, 
502
	"CUSTOM_FIELD_02" CLOB, 
503
	"CUSTOM_FIELD_03" CLOB, 
504
	"CUSTOMER_REFERENCE" VARCHAR2(254 CHAR), 
505
	"TEAMLEADER" NUMBER(10,0), 
506
	"WIP" CLOB, 
507
	"RELEASEINFO" CLOB, 
508
	"SBOM" VARCHAR2(254 CHAR), 
509
	"NEW_EXTERNAL_NOTE" CLOB, 
510
	"EXTERNAL_NOTE_LOG" CLOB, 
511
	"CUSTOMER_REFERENCE_2" VARCHAR2(50 CHAR), 
512
	"CUSTOMER_REFERENCE_3" VARCHAR2(50 CHAR), 
513
	"CUSTOMER_REFERENCE_4" VARCHAR2(50 CHAR), 
514
	"CUSTOMER_REFERENCE_5" VARCHAR2(50 CHAR), 
515
	"TEST_CASES" CLOB, 
516
	"INTEGRATION_NOTES" CLOB, 
517
	"UPDATED_DESIGN_NOTES" VARCHAR2(50 CHAR), 
518
	"RELATED_DATABASE_PATCHES" VARCHAR2(50 CHAR), 
519
	"AFFECTED_PACKAGES" VARCHAR2(50 CHAR), 
520
	"CODEREVIEW_REFERENCE" CLOB, 
521
	"RISK" VARCHAR2(50 CHAR), 
522
	"DEPENDANT_DEVIS" VARCHAR2(50 CHAR), 
523
	"CUSTOM_FIELD_04" CLOB, 
524
	"CUSTOM_FIELD_05" CLOB, 
525
	"ITERATION_FOUND" VARCHAR2(50 CHAR)
526
   ) ;
527
/
528
--------------------------------------------------------
529
--  DDL for Table CQ_STATEDEF
530
--------------------------------------------------------
531
 
532
  CREATE TABLE "CQ_STATEDEF" 
533
   (	"ID" NUMBER(10,0), 
534
	"PACKAGE_OWNERSHIP" NUMBER(10,0), 
535
	"NAME" VARCHAR2(255 CHAR), 
536
	"ENTITYDEF_ID" NUMBER(10,0), 
537
	"ORDINAL" NUMBER(10,0)
538
   ) ;
539
/
540
--------------------------------------------------------
541
--  DDL for Table CQ_USERS
542
--------------------------------------------------------
543
 
544
  CREATE TABLE "CQ_USERS" 
545
   (	"DBID" VARCHAR2(8), 
546
	"LOGIN_NAME" VARCHAR2(17), 
547
	"FULLNAME" VARCHAR2(30)
548
   ) ;
549
/
4040 dpurdie 550
--------------------------------------------------------
551
--  DDL for Table DAEMON_ACTION_LOG
552
--------------------------------------------------------
553
 
554
  CREATE TABLE "DAEMON_ACTION_LOG" 
555
   (	"USER_ID" NUMBER, 
556
	"ACTION_DATETIME" DATE, 
557
	"RCON_ID" NUMBER, 
558
	"DESCRIPTION" VARCHAR2(4000), 
559
	"ACTTYPE_ID" NUMBER
560
   ) ;
561
/
562
--------------------------------------------------------
563
--  DDL for Table DAEMON_INSTRUCTIONS
564
--------------------------------------------------------
565
 
566
  CREATE TABLE "DAEMON_INSTRUCTIONS" 
567
   (	"DAEMON_INSTRUCTIONS_ID" NUMBER, 
568
	"OP_CODE" NUMBER(*,0), 
569
	"RTAG_ID" NUMBER, 
570
	"PV_ID" NUMBER, 
571
	"SCHEDULED_DATETIME" DATE, 
572
	"REPEAT_SECS" NUMBER(*,0), 
573
	"ADDED_DATETIME" DATE, 
574
	"USER_ID" NUMBER, 
575
	"IN_PROGRESS" CHAR(1)
576
   ) ;
577
 
578
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."OP_CODE" IS 'The instruction op-code';
579
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."SCHEDULED_DATETIME" IS 'The datetime after which the instruction can be carried out.';
580
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."REPEAT_SECS" IS 'The number of seconds to add to scheduled_datetime when instruction is repeating';
581
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."ADDED_DATETIME" IS 'The datetime the instruction was added to the table - informational only';
582
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."USER_ID" IS 'The user who added the instruction to the table  - informational only';
583
/
584
--------------------------------------------------------
585
--  DDL for Table DASH_BOARD
586
--------------------------------------------------------
587
 
588
  CREATE TABLE "DASH_BOARD" 
589
   (	"PROJ_ID" NUMBER, 
590
	"RTAG_ID" NUMBER, 
591
	"LAST_BUILD_TIME" DATE, 
592
	"AUTOMATED_PACKAGES" NUMBER, 
593
	"TOTAL_PACKAGES" NUMBER
594
   ) ;
595
/
596
--------------------------------------------------------
597
--  DDL for Table DEPRECATED_PACKAGES
598
--------------------------------------------------------
599
 
600
  CREATE TABLE "DEPRECATED_PACKAGES" 
601
   (	"RTAG_ID" NUMBER, 
602
	"PKG_ID" NUMBER, 
603
	"COMMENTS" VARCHAR2(4000), 
604
	"V_EXT" VARCHAR2(50)
605
   ) ;
606
/
607
--------------------------------------------------------
608
--  DDL for Table DO_NOT_RIPPLE
609
--------------------------------------------------------
610
 
611
  CREATE TABLE "DO_NOT_RIPPLE" 
612
   (	"RTAG_ID" NUMBER, 
613
	"PV_ID" NUMBER, 
614
	"ROOT_PV_ID" NUMBER, 
615
	"ROOT_CAUSE" VARCHAR2(50), 
616
	"ROOT_FILE" VARCHAR2(100)
617
   ) ;
618
/
619
--------------------------------------------------------
620
--  DDL for Table GBE_MACHTYPE
621
--------------------------------------------------------
622
 
623
  CREATE TABLE "GBE_MACHTYPE" 
624
   (	"GBE_ID" NUMBER, 
625
	"GBE_VALUE" VARCHAR2(20), 
626
	"BM_ID" NUMBER
627
   ) ;
628
/
629
--------------------------------------------------------
630
--  DDL for Table IGNORE_WARNINGS
631
--------------------------------------------------------
632
 
633
  CREATE TABLE "IGNORE_WARNINGS" 
634
   (	"RTAG_ID" NUMBER, 
635
	"PV_ID" NUMBER, 
636
	"DPV_ID" NUMBER, 
637
	"IS_PATCH_IGNORE" CHAR(1)
638
   ) ;
639
/
640
--------------------------------------------------------
641
--  DDL for Table JIRA_ISSUES
642
--------------------------------------------------------
643
 
644
  CREATE TABLE "JIRA_ISSUES" 
645
   (	"PV_ID" NUMBER, 
646
	"ISS_KEY" VARCHAR2(4000), 
647
	"DATE_TIME_STAMP" DATE
648
   ) ;
649
/
650
--------------------------------------------------------
651
--  DDL for Table LICENCES
652
--------------------------------------------------------
653
 
654
  CREATE TABLE "LICENCES" 
655
   (	"LICENCE" NUMBER, 
656
	"NAME" VARCHAR2(50)
657
   ) ;
658
/
659
--------------------------------------------------------
660
--  DDL for Table LICENCING
661
--------------------------------------------------------
662
 
663
  CREATE TABLE "LICENCING" 
664
   (	"PV_ID" NUMBER, 
665
	"LICENCE" NUMBER
666
   ) ;
667
/
668
--------------------------------------------------------
669
--  DDL for Table MEMBERS_GROUP
670
--------------------------------------------------------
671
 
672
  CREATE TABLE "MEMBERS_GROUP" 
673
   (	"GROUP_EMAIL_ID" NUMBER, 
674
	"USER_ID" NUMBER
675
   ) ;
676
/
677
--------------------------------------------------------
678
--  DDL for Table MESSAGE_BOARD
679
--------------------------------------------------------
680
 
681
  CREATE TABLE "MESSAGE_BOARD" 
682
   (	"MSG_ID" NUMBER, 
683
	"MSG_DETAILS" VARCHAR2(2000), 
684
	"SUBMITION_DATE" DATE, 
685
	"EXPIRY_DATE" DATE, 
686
	"DUE_DATE" DATE
687
   ) ;
688
/
689
--------------------------------------------------------
690
--  DDL for Table MICROSOFTDTPROPERTIES
691
--------------------------------------------------------
692
 
693
  CREATE TABLE "MICROSOFTDTPROPERTIES" 
694
   (	"ID" NUMBER, 
695
	"OBJECTID" NUMBER, 
696
	"PROPERTY" VARCHAR2(64), 
697
	"VALUE" VARCHAR2(255), 
698
	"LVALUE" LONG RAW, 
699
	"VERSION" NUMBER DEFAULT (0)
700
   ) ;
701
/
702
--------------------------------------------------------
703
--  DDL for Table NOTE_MANAGER
704
--------------------------------------------------------
705
 
706
  CREATE TABLE "NOTE_MANAGER" 
707
   (	"NID" VARCHAR2(30), 
708
	"LAST_USER" VARCHAR2(20), 
709
	"LAST_DATE" DATE, 
710
	"DESCRIPTION" VARCHAR2(4000)
711
   ) ;
712
/
713
--------------------------------------------------------
714
--  DDL for Table NOTIFICATION_HISTORY
715
--------------------------------------------------------
716
 
717
  CREATE TABLE "NOTIFICATION_HISTORY" 
718
   (	"RTAG_ID" NUMBER, 
719
	"PV_ID" NUMBER, 
720
	"USER_ID" NUMBER, 
721
	"DATE_TIME_STAMP" DATE
722
   ) ;
723
/
724
--------------------------------------------------------
725
--  DDL for Table PACKAGES
726
--------------------------------------------------------
727
 
728
  CREATE TABLE "PACKAGES" 
729
   (	"PKG_ID" NUMBER, 
730
	"PKG_NAME" VARCHAR2(255), 
731
	"SUNOS_ELECTRONIC_NAME" VARCHAR2(255), 
732
	"WIN_ELECTRONIC_NAME" VARCHAR2(255)
733
   ) ;
734
/
735
--------------------------------------------------------
736
--  DDL for Table PACKAGE_BUILD_ENV
737
--------------------------------------------------------
738
 
739
  CREATE TABLE "PACKAGE_BUILD_ENV" 
740
   (	"PV_ID" NUMBER, 
741
	"BE_ID" NUMBER, 
742
	"BUILD_TYPE" NUMBER
743
   ) ;
744
/
745
--------------------------------------------------------
746
--  DDL for Table PACKAGE_BUILD_INFO
747
--------------------------------------------------------
748
 
749
  CREATE TABLE "PACKAGE_BUILD_INFO" 
750
   (	"PV_ID" NUMBER, 
751
	"BM_ID" NUMBER, 
752
	"BSA_ID" NUMBER
753
   ) ;
754
/
755
--------------------------------------------------------
756
--  DDL for Table PACKAGE_DEPENDENCIES
757
--------------------------------------------------------
758
 
759
  CREATE TABLE "PACKAGE_DEPENDENCIES" 
760
   (	"PV_ID" NUMBER, 
761
	"DPV_ID" NUMBER, 
762
	"PKG_ID" NUMBER, 
763
	"DPKG_ID" NUMBER, 
764
	"BUILD_TYPE" CHAR(1), 
765
	"DISPLAY_ORDER" NUMBER
766
   ) ;
767
/
768
--------------------------------------------------------
769
--  DDL for Table PACKAGE_DOCUMENTS
770
--------------------------------------------------------
771
 
772
  CREATE TABLE "PACKAGE_DOCUMENTS" 
773
   (	"PV_ID" NUMBER, 
774
	"TEST_ID" NUMBER, 
775
	"DOC_ID" NUMBER, 
776
	"DOC_NUM" VARCHAR2(50), 
777
	"IS_LATEST" CHAR(1)
778
   ) ;
779
/
780
--------------------------------------------------------
781
--  DDL for Table PACKAGE_INTEREST
782
--------------------------------------------------------
783
 
784
  CREATE TABLE "PACKAGE_INTEREST" 
785
   (	"PKG_ID" NUMBER, 
786
	"PROJ_ID" NUMBER, 
787
	"USER_ID" NUMBER
788
   ) ;
789
/
790
--------------------------------------------------------
791
--  DDL for Table PACKAGE_METRICS
792
--------------------------------------------------------
793
 
794
  CREATE TABLE "PACKAGE_METRICS" 
795
   (	"PV_ID" NUMBER, 
796
	"BRANCHES" NUMBER, 
797
	"BRANCH_LIST" VARCHAR2(4000), 
798
	"CODE_FILES" NUMBER, 
799
	"IGNORED_FILES" NUMBER, 
800
	"DIRECTORIES" NUMBER, 
801
	"DIRECTORY_DEPTH" NUMBER, 
802
	"TOTAL_FILES" NUMBER, 
803
	"MAKEFILES" NUMBER, 
804
	"BLANK_LINES" NUMBER, 
805
	"CODE_LINES" NUMBER, 
806
	"COMMENT_LINES" NUMBER, 
807
	"CREATED_STAMP" DATE
808
   ) ;
809
/
810
--------------------------------------------------------
811
--  DDL for Table PACKAGE_PATCHES
812
--------------------------------------------------------
813
 
814
  CREATE TABLE "PACKAGE_PATCHES" 
815
   (	"PV_ID" NUMBER, 
816
	"PATCH_ID" NUMBER, 
817
	"INSTALL_ORDER" NUMBER, 
818
	"PATCH_OBSOLETED_BY" NUMBER
819
   ) ;
820
/
821
--------------------------------------------------------
822
--  DDL for Table PACKAGE_PROCESSES
823
--------------------------------------------------------
824
 
825
  CREATE TABLE "PACKAGE_PROCESSES" 
826
   (	"PV_ID" NUMBER, 
827
	"PROC_ID" NUMBER
828
   ) ;
829
/
830
--------------------------------------------------------
831
--  DDL for Table PACKAGE_VERSIONS
832
--------------------------------------------------------
833
 
834
  CREATE TABLE "PACKAGE_VERSIONS" 
835
   (	"PV_ID" NUMBER, 
836
	"PKG_ID" NUMBER, 
837
	"PKG_VERSION" VARCHAR2(50), 
838
	"DLOCKED" CHAR(1), 
839
	"RELEASED_AT" NUMBER, 
840
	"MODIFIED_STAMP" DATE, 
841
	"MODIFIER_ID" NUMBER, 
842
	"CREATED_STAMP" DATE, 
843
	"CREATOR_ID" NUMBER, 
844
	"COMMENTS" VARCHAR2(4000), 
845
	"V_MM" VARCHAR2(50), 
846
	"V_NMM" VARCHAR2(50), 
847
	"V_EXT" VARCHAR2(50), 
848
	"PKG_LABEL" VARCHAR2(60), 
849
	"SRC_PATH" VARCHAR2(2000), 
850
	"PV_DESCRIPTION" VARCHAR2(4000), 
851
	"OWNER_ID" NUMBER, 
852
	"PV_OVERVIEW" VARCHAR2(4000), 
853
	"IS_PATCH" CHAR(1), 
854
	"LAST_PV_ID" NUMBER, 
855
	"RELEASE_NOTES_INFO" VARCHAR2(1000), 
856
	"IS_DEPLOYABLE" CHAR(1), 
857
	"IS_BUILD_ENV_REQUIRED" CHAR(1), 
858
	"IS_OBSOLETE" CHAR(1), 
859
	"OBSOLETE_COMMENTS" VARCHAR2(4000), 
860
	"BUILD_TYPE" CHAR(1), 
861
	"CHANGE_TYPE" CHAR(1), 
862
	"LINK" VARCHAR2(4000), 
863
	"PATCH_ELECTRONIC_NAME" VARCHAR2(4000), 
864
	"BS_ID" NUMBER, 
865
	"IS_AUTOBUILDABLE" CHAR(1), 
866
	"SBOM_PRIORITY" CHAR(1), 
867
	"RIPPLE_FIELD" CHAR(1 CHAR), 
868
	"MAXIMUM_BUILD_TIME" NUMBER, 
869
	"ESTIMATED_COMPLETION_TIME" DATE, 
870
	"MAJOR_LIMIT" NUMBER(10,0), 
871
	"MINOR_LIMIT" NUMBER(10,0), 
872
	"PATCH_LIMIT" NUMBER(10,0), 
873
	"BUILD_NUMBER_LIMIT" NUMBER(10,0), 
874
	"VCS_TYPE_ID" NUMBER
875
   ) ;
876
/
877
--------------------------------------------------------
878
--  DDL for Table PEGGED_VERSIONS
879
--------------------------------------------------------
880
 
881
  CREATE TABLE "PEGGED_VERSIONS" 
882
   (	"RTAG_ID" NUMBER, 
883
	"PV_ID" NUMBER
884
   ) ;
885
/
886
--------------------------------------------------------
887
--  DDL for Table PLANNED
888
--------------------------------------------------------
889
 
890
  CREATE TABLE "PLANNED" 
891
   (	"RTAG_ID" NUMBER, 
892
	"PV_ID" NUMBER, 
893
	"VIEW_ID" NUMBER, 
894
	"OPERATION" CHAR(1)
895
   ) ;
896
/
897
--------------------------------------------------------
898
--  DDL for Table PLANNED_VERSIONS
899
--------------------------------------------------------
900
 
901
  CREATE TABLE "PLANNED_VERSIONS" 
902
   (	"PKG_ID" NUMBER, 
903
	"PKG_VERSION" VARCHAR2(50), 
904
	"PLANNED_TIME" DATE
905
   ) ;
906
/
907
--------------------------------------------------------
908
--  DDL for Table PLATFORMS
909
--------------------------------------------------------
910
 
911
  CREATE TABLE "PLATFORMS" 
912
   (	"CODE" NUMBER, 
913
	"NAME" VARCHAR2(255)
914
   ) ;
915
/
916
--------------------------------------------------------
917
--  DDL for Table PROCESSES
918
--------------------------------------------------------
919
 
920
  CREATE TABLE "PROCESSES" 
921
   (	"PROC_ID" NUMBER, 
922
	"PROC_NAME" VARCHAR2(255), 
923
	"PROC_DESCRIPTION" VARCHAR2(255), 
924
	"RUN_AS" VARCHAR2(255), 
925
	"PKG_OWNER" VARCHAR2(4000), 
926
	"IS_INTERFACE" CHAR(1)
927
   ) ;
928
/
929
--------------------------------------------------------
930
--  DDL for Table PRODUCT_COMPONENTS
931
--------------------------------------------------------
932
 
933
  CREATE TABLE "PRODUCT_COMPONENTS" 
934
   (	"PV_ID" NUMBER, 
935
	"OS_ID" NUMBER, 
936
	"FILE_PATH" VARCHAR2(4000), 
937
	"FILE_NAME" VARCHAR2(4000), 
938
	"DESTINATION_PATH" VARCHAR2(4000), 
939
	"BYTE_SIZE" NUMBER, 
940
	"CRC_CKSUM" VARCHAR2(2000)
941
   ) ;
942
/
943
--------------------------------------------------------
944
--  DDL for Table PRODUCT_STATES
945
--------------------------------------------------------
946
 
947
  CREATE TABLE "PRODUCT_STATES" 
948
   (	"STATE_ID" NUMBER, 
949
	"STATE" VARCHAR2(4000)
950
   ) ;
951
/
952
--------------------------------------------------------
953
--  DDL for Table PROJECTS
954
--------------------------------------------------------
955
 
956
  CREATE TABLE "PROJECTS" 
957
   (	"PROJ_ID" NUMBER, 
958
	"PROJ_NAME" VARCHAR2(50), 
959
	"BASE_URL" VARCHAR2(4000), 
960
	"JIRA_KEY" VARCHAR2(16)
961
   ) ;
962
/
963
--------------------------------------------------------
964
--  DDL for Table PROJECT_ACTION_LOG
965
--------------------------------------------------------
966
 
967
  CREATE TABLE "PROJECT_ACTION_LOG" 
968
   (	"USER_ID" NUMBER, 
969
	"ACTION_DATETIME" DATE, 
970
	"PROJ_ID" NUMBER, 
971
	"DESCRIPTION" VARCHAR2(4000), 
972
	"ACTTYPE_ID" NUMBER, 
973
	"RTAG_ID" NUMBER
974
   ) ;
975
/
976
--------------------------------------------------------
977
--  DDL for Table PROJECT_EXTENTIONS
978
--------------------------------------------------------
979
 
980
  CREATE TABLE "PROJECT_EXTENTIONS" 
981
   (	"PROJ_ID" NUMBER, 
982
	"EXT_NAME" VARCHAR2(10), 
983
	"UCOMMENT" VARCHAR2(120), 
984
	"IS_VISIBLE" CHAR(1) DEFAULT 'Y', 
985
	"IS_COTS" CHAR(1) DEFAULT 'N'
986
   ) ;
987
/
988
--------------------------------------------------------
989
--  DDL for Table RELEASE_COMPONENTS
990
--------------------------------------------------------
991
 
992
  CREATE TABLE "RELEASE_COMPONENTS" 
993
   (	"PV_ID" NUMBER, 
994
	"FILE_NAME" VARCHAR2(255), 
995
	"FILE_PATH" VARCHAR2(2000), 
996
	"BYTE_SIZE" NUMBER, 
997
	"CRC_CKSUM" VARCHAR2(50), 
998
	"CRC_MODCRC" VARCHAR2(50)
999
   ) ;
1000
/
1001
--------------------------------------------------------
1002
--  DDL for Table RELEASE_CONFIG
1003
--------------------------------------------------------
1004
 
1005
  CREATE TABLE "RELEASE_CONFIG" 
1006
   (	"RCON_ID" NUMBER, 
1007
	"RTAG_ID" NUMBER, 
1008
	"GBE_ID" NUMBER, 
1009
	"DAEMON_HOSTNAME" VARCHAR2(50), 
1010
	"DAEMON_MODE" CHAR(1 CHAR), 
4308 dpurdie 1011
	"GBE_BUILDFILTER" VARCHAR2(255), 
1012
	"BMCON_ID" NUMBER
1013
   ) ;
1014
 
1015
   COMMENT ON COLUMN "RELEASE_CONFIG"."GBE_ID" IS 'Do not use. Data should come from build_machine_config';
1016
   COMMENT ON COLUMN "RELEASE_CONFIG"."DAEMON_HOSTNAME" IS 'Do not use. Data should come from build_machine_config';
1017
   COMMENT ON COLUMN "RELEASE_CONFIG"."BMCON_ID" IS 'Link to the build_machine_config table';
4040 dpurdie 1018
/
1019
--------------------------------------------------------
1020
--  DDL for Table RELEASE_CONTENT
1021
--------------------------------------------------------
1022
 
1023
  CREATE TABLE "RELEASE_CONTENT" 
1024
   (	"RTAG_ID" NUMBER, 
1025
	"PV_ID" NUMBER, 
1026
	"BASE_VIEW_ID" NUMBER, 
1027
	"INSERT_STAMP" DATE, 
1028
	"INSERTOR_ID" NUMBER, 
1029
	"PKG_STATE" NUMBER, 
1030
	"PKG_ID" NUMBER, 
1031
	"DEPRECATED_STATE" NUMBER, 
1032
	"PRODUCT_STATE" NUMBER
1033
   ) ;
1034
/
1035
--------------------------------------------------------
1036
--  DDL for Table RELEASE_LINKS
1037
--------------------------------------------------------
1038
 
1039
  CREATE TABLE "RELEASE_LINKS" 
1040
   (	"RTAG_ID" NUMBER, 
1041
	"REF_RTAG_ID" NUMBER
1042
   ) ;
1043
/
1044
--------------------------------------------------------
1045
--  DDL for Table RELEASE_METRICS
1046
--------------------------------------------------------
1047
 
1048
  CREATE TABLE "RELEASE_METRICS" 
1049
   (	"RTAG_ID" NUMBER, 
1050
	"TOTAL_PACKAGES" NUMBER, 
1051
	"AUTOBUILT" NUMBER, 
1052
	"LINES_OF_CODE" NUMBER, 
1053
	"UNIT_TESTED" NUMBER, 
1054
	"AUTOTESTED" NUMBER, 
1055
	"BRANCHES" NUMBER, 
1056
	"LAST_BUILD_TIME" DATE
1057
   ) ;
1058
/
1059
--------------------------------------------------------
1060
--  DDL for Table RELEASE_TAGS
1061
--------------------------------------------------------
1062
 
1063
  CREATE TABLE "RELEASE_TAGS" 
1064
   (	"RTAG_ID" NUMBER, 
1065
	"VTREE_ID" NUMBER, 
1066
	"RTAG_NAME" VARCHAR2(50), 
1067
	"DESCRIPTION" VARCHAR2(4000), 
1068
	"CREATED_STAMP" DATE, 
1069
	"CREATOR_ID" NUMBER, 
1070
	"OFFICIAL_STAMP" DATE, 
1071
	"RELEASOR_ID" NUMBER, 
1072
	"OFFICIAL" CHAR(1), 
1073
	"REBUILD_ENV" CHAR(1), 
1074
	"REBUILD_STAMP" NUMBER, 
1075
	"RTAG_VERSION" VARCHAR2(4000), 
1076
	"RTAG_LIFE_CYCLE" NUMBER, 
1077
	"PARENT_RTAG_ID" NUMBER, 
1078
	"PROJ_ID" NUMBER, 
1079
	"DISPLAY_ORDER" NUMBER, 
1080
	"OWNER_EMAIL" VARCHAR2(1000), 
1081
	"ASSOC_MASS_REF" NUMBER, 
1082
	"OWNER_PERSONAL_EMAIL" VARCHAR2(1000), 
1083
	"CONFIG_SPEC_BRANCH" VARCHAR2(4000), 
4211 dpurdie 1084
	"PRODUCT_STATE_USED" CHAR(1), 
1085
	"OFFICIAL_ID" NUMBER
4040 dpurdie 1086
   ) ;
1087
/
1088
--------------------------------------------------------
1089
--  DDL for Table REPEAT_SCHEDULE
1090
--------------------------------------------------------
1091
 
1092
  CREATE TABLE "REPEAT_SCHEDULE" 
1093
   (	"RPT_ID" NUMBER, 
1094
	"REPEAT" CHAR(1)
1095
   ) ;
1096
/
1097
--------------------------------------------------------
1098
--  DDL for Table RIPPLE_FIELD_STATES
1099
--------------------------------------------------------
1100
 
1101
  CREATE TABLE "RIPPLE_FIELD_STATES" 
1102
   (	"STATE_ID" NUMBER, 
1103
	"STATE_ACRONYM" CHAR(1), 
1104
	"STATE_NAME" VARCHAR2(50)
1105
   ) ;
1106
/
1107
--------------------------------------------------------
1108
--  DDL for Table RM_PACKAGE_ISSUES
1109
--------------------------------------------------------
1110
 
1111
  CREATE TABLE "RM_PACKAGE_ISSUES" 
1112
   (	"PKG_ID" NUMBER, 
1113
	"PKG_NAME" VARCHAR2(50), 
1114
	"PV_ID" NUMBER, 
1115
	"PKG_VERSION" VARCHAR2(50), 
1116
	"DPV_ID" NUMBER, 
1117
	"DPKG_NAME" VARCHAR2(50), 
1118
	"DPKG_VERSION" VARCHAR2(50), 
1119
	"ISS_DB" NUMBER, 
1120
	"ISS_ID" NUMBER
1121
   ) ;
1122
/
1123
--------------------------------------------------------
1124
--  DDL for Table RM_PKG_ISSUES
1125
--------------------------------------------------------
1126
 
1127
  CREATE GLOBAL TEMPORARY TABLE "RM_PKG_ISSUES" 
1128
   (	"PKG_ID" NUMBER, 
1129
	"PKG_NAME" VARCHAR2(50), 
1130
	"PV_ID" NUMBER, 
1131
	"PKG_VERSION" VARCHAR2(50), 
1132
	"DPV_ID" NUMBER, 
1133
	"DPKG_NAME" VARCHAR2(50), 
1134
	"DPKG_VERSION" VARCHAR2(50), 
1135
	"ISS_DB" NUMBER, 
1136
	"ISS_ID" NUMBER
1137
   ) ON COMMIT PRESERVE ROWS ;
1138
/
1139
--------------------------------------------------------
1140
--  DDL for Table RUNTIME_DEPENDENCIES
1141
--------------------------------------------------------
1142
 
1143
  CREATE TABLE "RUNTIME_DEPENDENCIES" 
1144
   (	"PV_ID" NUMBER, 
1145
	"RTD_ID" NUMBER, 
1146
	"RTD_COMMENTS" VARCHAR2(2000), 
1147
	"RTD_URL" VARCHAR2(2000), 
1148
	"MOD_DATE" DATE, 
1149
	"MOD_USER" NUMBER
1150
   ) ;
1151
/
1152
--------------------------------------------------------
1153
--  DDL for Table RUN_LEVEL
1154
--------------------------------------------------------
1155
 
1156
  CREATE TABLE "RUN_LEVEL" 
1157
   (	"RCON_ID" NUMBER, 
1158
	"CURRENT_BUILD_FILES" CLOB, 
1159
	"CURRENT_RUN_LEVEL" NUMBER, 
1160
	"PAUSE" NUMBER, 
1161
	"CURRENT_PKG_ID_BEING_BUILT" NUMBER, 
4553 dpurdie 1162
	"KEEP_ALIVE" DATE, 
1163
	"CURRENT_PV_ID" NUMBER, 
1164
	"LAST_BUILD" DATE DEFAULT sysdate
4040 dpurdie 1165
   ) ;
4553 dpurdie 1166
 
1167
   COMMENT ON COLUMN "RUN_LEVEL"."RCON_ID" IS 'Link to the Release_config table';
1168
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_BUILD_FILES" IS 'The current build file. Set by the Master, consumed by the Slaves.';
1169
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_RUN_LEVEL" IS 'Daemon indiactes its current state';
1170
   COMMENT ON COLUMN "RUN_LEVEL"."PAUSE" IS 'The daemon should pause at the end of the current build';
1171
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_PKG_ID_BEING_BUILT" IS 'pkg_id of the package currently being built';
1172
   COMMENT ON COLUMN "RUN_LEVEL"."KEEP_ALIVE" IS 'DateTime of the last database enquiry made by the daemon. Used to locate dead daemons.';
1173
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_PV_ID" IS 'The PV_ID of the package currently being built.
1174
Added 29-Jul-14 for future use within the build system.';
1175
   COMMENT ON COLUMN "RUN_LEVEL"."LAST_BUILD" IS 'The DateTime that the last build started. This does not include dummy builds. Used to determine unused daemons.';
4040 dpurdie 1176
/
1177
--------------------------------------------------------
1178
--  DDL for Table RUN_LEVEL_SCHEDULE
1179
--------------------------------------------------------
1180
 
1181
  CREATE TABLE "RUN_LEVEL_SCHEDULE" 
1182
   (	"SCHEDULED_ID" NUMBER, 
1183
	"SCHEDULED_PAUSE" DATE, 
1184
	"SCHEDULED_RESUME" DATE, 
1185
	"REPEAT" CHAR(1), 
1186
	"INDEFINITE_PAUSE" CHAR(1)
1187
   ) ;
1188
/
1189
--------------------------------------------------------
1190
--  DDL for Table TEMP_ENV_STATES
1191
--------------------------------------------------------
1192
 
1193
  CREATE TABLE "TEMP_ENV_STATES" 
1194
   (	"SESSION_NUM" NUMBER, 
1195
	"LEVEL_NUM" NUMBER, 
1196
	"PV_ID" NUMBER, 
1197
	"PKG_ID" NUMBER, 
1198
	"V_EXT" VARCHAR2(50), 
1199
	"TES_STATE" NUMBER
1200
   ) ;
1201
/
1202
--------------------------------------------------------
1203
--  DDL for Table TEMP_SASH
1204
--------------------------------------------------------
1205
 
1206
  CREATE TABLE "TEMP_SASH" 
1207
   (	"RTAG_ID" NUMBER, 
1208
	"PROJ_ID" NUMBER
1209
   ) ;
1210
/
1211
--------------------------------------------------------
1212
--  DDL for Table TEMP_TREE_BROWSE
1213
--------------------------------------------------------
1214
 
1215
  CREATE TABLE "TEMP_TREE_BROWSE" 
1216
   (	"SESSION_NUM" NUMBER, 
1217
	"LEVEL_NUM" NUMBER, 
1218
	"PV_ID" NUMBER, 
1219
	"PKG_ID" NUMBER, 
1220
	"V_EXT" VARCHAR2(50), 
1221
	"DIRECTION" NUMBER
1222
   ) ;
1223
/
1224
--------------------------------------------------------
1225
--  DDL for Table TEST_TYPES
1226
--------------------------------------------------------
1227
 
1228
  CREATE TABLE "TEST_TYPES" 
1229
   (	"TEST_TYPE_ID" NUMBER, 
1230
	"TEST_TYPE_NAME" VARCHAR2(50), 
1231
	"DISPLAY_ORDER" NUMBER
1232
   ) ;
1233
/
1234
--------------------------------------------------------
1235
--  DDL for Table UNIT_TESTS
1236
--------------------------------------------------------
1237
 
1238
  CREATE TABLE "UNIT_TESTS" 
1239
   (	"TEST_ID" NUMBER, 
1240
	"PV_ID" NUMBER, 
1241
	"TEST_TYPES_FK" NUMBER, 
1242
	"TEST_SUMMARY" VARCHAR2(4000), 
1243
	"COMPLETION_DATE" DATE, 
1244
	"COMPLETED_BY" NUMBER, 
1245
	"RESULTS_URL" VARCHAR2(2000), 
1246
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
1247
	"TEST_ACCEPTED" CHAR(1), 
1248
	"ACCEPTANCE_DATE" DATE, 
1249
	"ACCEPTED_BY" NUMBER, 
1250
	"REVIEW_COMMENTS" VARCHAR2(4000), 
1251
	"NUMOF_TEST" VARCHAR2(50)
1252
   ) ;
1253
/
1254
--------------------------------------------------------
1255
--  DDL for Table VALIDATION_RULES
1256
--------------------------------------------------------
1257
 
1258
  CREATE TABLE "VALIDATION_RULES" 
1259
   (	"FIELD_NAME" VARCHAR2(1000), 
1260
	"IS_REQUIRED" CHAR(1), 
1261
	"IS_NUMERIC" CHAR(1), 
1262
	"MIN_NUMERIC_VALUE" NUMBER, 
1263
	"MAX_NUMERIC_VALUE" NUMBER, 
1264
	"IS_DATE" CHAR(1), 
1265
	"START_DATE" DATE, 
1266
	"END_DATE" DATE, 
1267
	"MIN_STRING_LENGTH" NUMBER, 
1268
	"MAX_STRING_LENGTH" NUMBER, 
1269
	"REGEXP" VARCHAR2(4000), 
1270
	"REGEXP_DESCRIPTION" VARCHAR2(50)
1271
   ) ;
1272
/
1273
--------------------------------------------------------
1274
--  DDL for Table VCS_TYPE
1275
--------------------------------------------------------
1276
 
1277
  CREATE TABLE "VCS_TYPE" 
1278
   (	"VCS_TYPE_ID" NUMBER, 
1279
	"NAME" VARCHAR2(128), 
1280
	"TAG" VARCHAR2(32)
1281
   ) ;
1282
/
1283
--------------------------------------------------------
1284
--  DDL for Table VIEWS
1285
--------------------------------------------------------
1286
 
1287
  CREATE TABLE "VIEWS" 
1288
   (	"VIEW_ID" NUMBER, 
1289
	"VIEW_NAME" VARCHAR2(30), 
1290
	"OWNER_ID" NUMBER, 
1291
	"BASE_VIEW" CHAR(1), 
1292
	"PUBLIC_READ" CHAR(1)
1293
   ) ;
1294
/
1295
--------------------------------------------------------
1296
--  DDL for Table VIEW_DEF
1297
--------------------------------------------------------
1298
 
1299
  CREATE TABLE "VIEW_DEF" 
1300
   (	"VIEW_ID" NUMBER, 
1301
	"PKG_ID" NUMBER
1302
   ) ;
1303
/
1304
--------------------------------------------------------
1305
--  DDL for Table VIEW_SETTINGS
1306
--------------------------------------------------------
1307
 
1308
  CREATE TABLE "VIEW_SETTINGS" 
1309
   (	"USER_ID" NUMBER, 
1310
	"VIEW_ID" NUMBER
1311
   ) ;
1312
/
1313
--------------------------------------------------------
1314
--  DDL for Table VTREES
1315
--------------------------------------------------------
1316
 
1317
  CREATE TABLE "VTREES" 
1318
   (	"VTREE_ID" NUMBER, 
1319
	"PROJ_ID" NUMBER, 
1320
	"VTREE_NAME" VARCHAR2(50), 
1321
	"HIDE" CHAR(1)
1322
   ) ;
1323
/
1324
--------------------------------------------------------
1325
--  DDL for Table VTREES_WORLD
1326
--------------------------------------------------------
1327
 
1328
  CREATE TABLE "VTREES_WORLD" 
1329
   (	"WORLD_ID" NUMBER, 
1330
	"VTREE_ID" NUMBER
1331
   ) ;
1332
/
1333
--------------------------------------------------------
1334
--  DDL for Table WORK_IN_PROGRESS
1335
--------------------------------------------------------
1336
 
1337
  CREATE TABLE "WORK_IN_PROGRESS" 
1338
   (	"RTAG_ID" NUMBER, 
1339
	"PV_ID" NUMBER, 
1340
	"VIEW_ID" NUMBER
1341
   ) ;
1342
/
1343
--------------------------------------------------------
1344
--  DDL for Table WORLDS
1345
--------------------------------------------------------
1346
 
1347
  CREATE TABLE "WORLDS" 
1348
   (	"WORLD_ID" NUMBER, 
1349
	"WORLD_NAME" VARCHAR2(30), 
1350
	"WORLD_DESC" VARCHAR2(255)
1351
   ) ;
1352
/
1353
--------------------------------------------------------
1354
--  DDL for View ENVIRONMENT_VIEW
1355
--------------------------------------------------------
1356
 
1357
  CREATE OR REPLACE VIEW "ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP", "OPERATION") AS 
1358
  SELECT 2 AS ENV_AREA,
1359
    rc.PV_ID,
1360
    rc.RTAG_ID,
1361
    rc.BASE_VIEW_ID AS VIEW_ID,
1362
    rc.PKG_STATE,
1363
 rc.DEPRECATED_STATE,
1364
    rc.INSERTOR_ID,
1365
    rc.INSERT_STAMP,
1366
    ' ' AS OPERATION
1367
  FROM RELEASE_CONTENT rc
1368
UNION
1369
SELECT 0 AS ENV_AREA,
1370
    wip.PV_ID,
1371
    wip.RTAG_ID,
1372
    wip.VIEW_ID,
1373
    NULL AS PKG_STATE,
1374
 NULL AS DEPRECATED_STATE,
1375
    NULL AS INSERTOR_ID,
1376
    NULL AS INSERT_STAMP,
1377
    ' ' AS OPERATION
1378
  FROM WORK_IN_PROGRESS wip
1379
UNION
1380
SELECT 1 AS ENV_AREA,
1381
    pl.PV_ID,
1382
    pl.RTAG_ID,
1383
    pl.VIEW_ID,
1384
    NULL AS PKG_STATE,
1385
 NULL AS DEPRECATED_STATE,
1386
    NULL AS INSERTOR_ID,
1387
    NULL AS INSERT_STAMP,
1388
    pl.operation
1389
FROM PLANNED pl;
1390
/
1391
--------------------------------------------------------
1392
--  DDL for View RM_PKG_ISSUES_ID
1393
--------------------------------------------------------
1394
 
1395
  CREATE OR REPLACE VIEW "RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
1396
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
1397
 
1398
;
1399
/
1400
--------------------------------------------------------
4211 dpurdie 1401
--  DDL for Index PK_LICENCES
4040 dpurdie 1402
--------------------------------------------------------
1403
 
4211 dpurdie 1404
  CREATE UNIQUE INDEX "PK_LICENCES" ON "LICENCES" ("LICENCE") 
4040 dpurdie 1405
  ;
1406
/
1407
--------------------------------------------------------
4211 dpurdie 1408
--  DDL for Index UNQ_PKG_BUILD_ENV
4040 dpurdie 1409
--------------------------------------------------------
1410
 
4211 dpurdie 1411
  CREATE UNIQUE INDEX "UNQ_PKG_BUILD_ENV" ON "PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
4040 dpurdie 1412
  ;
1413
/
1414
--------------------------------------------------------
4211 dpurdie 1415
--  DDL for Index UNQ_PACKAGES
4040 dpurdie 1416
--------------------------------------------------------
1417
 
4211 dpurdie 1418
  CREATE UNIQUE INDEX "UNQ_PACKAGES" ON "PACKAGES" ("PKG_NAME") 
4040 dpurdie 1419
  ;
1420
/
1421
--------------------------------------------------------
1422
--  DDL for Index CODE_REVIEW_URL_PK
1423
--------------------------------------------------------
1424
 
1425
  CREATE UNIQUE INDEX "CODE_REVIEW_URL_PK" ON "CODE_REVIEW_URL" ("CR_ID") 
1426
  ;
1427
/
1428
--------------------------------------------------------
4211 dpurdie 1429
--  DDL for Index INX_UT_COMPLETED
4040 dpurdie 1430
--------------------------------------------------------
1431
 
4211 dpurdie 1432
  CREATE INDEX "INX_UT_COMPLETED" ON "UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
4040 dpurdie 1433
  ;
1434
/
1435
--------------------------------------------------------
4308 dpurdie 1436
--  DDL for Index INX_PV_ID_PKGDOC
1437
--------------------------------------------------------
4040 dpurdie 1438
 
4211 dpurdie 1439
  CREATE INDEX "INX_PV_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID") 
4040 dpurdie 1440
  ;
1441
/
4308 dpurdie 1442
--------------------------------------------------------
1443
--  DDL for Index UNQ_VIEW_SETTINGS
1444
--------------------------------------------------------
4040 dpurdie 1445
 
4211 dpurdie 1446
  CREATE UNIQUE INDEX "UNQ_VIEW_SETTINGS" ON "VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
4040 dpurdie 1447
  ;
1448
/
4308 dpurdie 1449
--------------------------------------------------------
1450
--  DDL for Index INX_PP_PV_ID
1451
--------------------------------------------------------
4040 dpurdie 1452
 
4211 dpurdie 1453
  CREATE INDEX "INX_PP_PV_ID" ON "PACKAGE_PATCHES" ("PV_ID") 
4040 dpurdie 1454
  ;
1455
/
4308 dpurdie 1456
--------------------------------------------------------
1457
--  DDL for Index PK_VIEWS
1458
--------------------------------------------------------
4040 dpurdie 1459
 
4211 dpurdie 1460
  CREATE UNIQUE INDEX "PK_VIEWS" ON "VIEWS" ("VIEW_ID") 
4040 dpurdie 1461
  ;
1462
/
4308 dpurdie 1463
--------------------------------------------------------
1464
--  DDL for Index PK_PACKAGES
1465
--------------------------------------------------------
4040 dpurdie 1466
 
4211 dpurdie 1467
  CREATE UNIQUE INDEX "PK_PACKAGES" ON "PACKAGES" ("PKG_ID") 
4040 dpurdie 1468
  ;
1469
/
4308 dpurdie 1470
--------------------------------------------------------
1471
--  DDL for Index PK_TEST_TYPES
1472
--------------------------------------------------------
4040 dpurdie 1473
 
4211 dpurdie 1474
  CREATE UNIQUE INDEX "PK_TEST_TYPES" ON "TEST_TYPES" ("TEST_TYPE_ID") 
4040 dpurdie 1475
  ;
1476
/
4308 dpurdie 1477
--------------------------------------------------------
1478
--  DDL for Index UNQ_ACTTYPE_ID
1479
--------------------------------------------------------
4040 dpurdie 1480
 
4211 dpurdie 1481
  CREATE UNIQUE INDEX "UNQ_ACTTYPE_ID" ON "ACTION_TYPE" ("ACTTYPE_ID") 
4040 dpurdie 1482
  ;
1483
/
4308 dpurdie 1484
--------------------------------------------------------
1485
--  DDL for Index INX_PROJ_ACTION_DATE_TIME
1486
--------------------------------------------------------
4040 dpurdie 1487
 
4211 dpurdie 1488
  CREATE INDEX "INX_PROJ_ACTION_DATE_TIME" ON "PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1489
  ;
1490
/
4308 dpurdie 1491
--------------------------------------------------------
1492
--  DDL for Index INX_RC_PKG_STATE
1493
--------------------------------------------------------
4040 dpurdie 1494
 
4211 dpurdie 1495
  CREATE INDEX "INX_RC_PKG_STATE" ON "RELEASE_CONTENT" ("PKG_STATE") 
4040 dpurdie 1496
  ;
1497
/
4308 dpurdie 1498
--------------------------------------------------------
1499
--  DDL for Index PROCESSES_PK
1500
--------------------------------------------------------
4040 dpurdie 1501
 
4211 dpurdie 1502
  CREATE UNIQUE INDEX "PROCESSES_PK" ON "PROCESSES" ("PROC_ID") 
4040 dpurdie 1503
  ;
1504
/
4308 dpurdie 1505
--------------------------------------------------------
1506
--  DDL for Index INX_PACKAGE_DEPS_DPV_ID
1507
--------------------------------------------------------
4040 dpurdie 1508
 
4211 dpurdie 1509
  CREATE INDEX "INX_PACKAGE_DEPS_DPV_ID" ON "PACKAGE_DEPENDENCIES" ("DPV_ID") 
4040 dpurdie 1510
  ;
1511
/
4308 dpurdie 1512
--------------------------------------------------------
1513
--  DDL for Index INX_PACKAGES_PKG_VERSION
1514
--------------------------------------------------------
4040 dpurdie 1515
 
4211 dpurdie 1516
  CREATE INDEX "INX_PACKAGES_PKG_VERSION" ON "PACKAGE_VERSIONS" ("PKG_VERSION") 
4040 dpurdie 1517
  ;
1518
/
4308 dpurdie 1519
--------------------------------------------------------
1520
--  DDL for Index UNQ_PACKAGE_METRICS
1521
--------------------------------------------------------
4040 dpurdie 1522
 
4211 dpurdie 1523
  CREATE UNIQUE INDEX "UNQ_PACKAGE_METRICS" ON "PACKAGE_METRICS" ("PV_ID") 
4040 dpurdie 1524
  ;
1525
/
4308 dpurdie 1526
--------------------------------------------------------
1527
--  DDL for Index UNQ_PLATFORM
1528
--------------------------------------------------------
4040 dpurdie 1529
 
4211 dpurdie 1530
  CREATE UNIQUE INDEX "UNQ_PLATFORM" ON "PLATFORMS" ("NAME") 
4040 dpurdie 1531
  ;
1532
/
4308 dpurdie 1533
--------------------------------------------------------
1534
--  DDL for Index UNQ_VIEWS
1535
--------------------------------------------------------
4040 dpurdie 1536
 
4211 dpurdie 1537
  CREATE UNIQUE INDEX "UNQ_VIEWS" ON "VIEWS" ("VIEW_NAME", "OWNER_ID") 
4040 dpurdie 1538
  ;
1539
/
4308 dpurdie 1540
--------------------------------------------------------
4211 dpurdie 1541
--  DDL for Index PRODUCT_STATES_PK
4040 dpurdie 1542
--------------------------------------------------------
1543
 
4211 dpurdie 1544
  CREATE UNIQUE INDEX "PRODUCT_STATES_PK" ON "PRODUCT_STATES" ("STATE_ID") 
4040 dpurdie 1545
  ;
1546
/
1547
--------------------------------------------------------
4211 dpurdie 1548
--  DDL for Index PK_MESSAGE_BOARD
4040 dpurdie 1549
--------------------------------------------------------
1550
 
4211 dpurdie 1551
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
4040 dpurdie 1552
  ;
1553
/
4308 dpurdie 1554
--------------------------------------------------------
1555
--  DDL for Index PK_BUILD_MACHINE_CONFIG
1556
--------------------------------------------------------
4040 dpurdie 1557
 
4211 dpurdie 1558
  CREATE UNIQUE INDEX "PK_BUILD_MACHINE_CONFIG" ON "BUILD_MACHINE_CONFIG" ("BMCON_ID") 
4040 dpurdie 1559
  ;
1560
/
4308 dpurdie 1561
--------------------------------------------------------
1562
--  DDL for Index INX_MSGBOARD
1563
--------------------------------------------------------
4040 dpurdie 1564
 
4211 dpurdie 1565
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
4040 dpurdie 1566
  ;
1567
/
4308 dpurdie 1568
--------------------------------------------------------
1569
--  DDL for Index PK_VTREES
1570
--------------------------------------------------------
4040 dpurdie 1571
 
4211 dpurdie 1572
  CREATE UNIQUE INDEX "PK_VTREES" ON "VTREES" ("VTREE_ID") 
4040 dpurdie 1573
  ;
1574
/
4308 dpurdie 1575
--------------------------------------------------------
1576
--  DDL for Index UNQ_UT_PART1
1577
--------------------------------------------------------
4040 dpurdie 1578
 
4211 dpurdie 1579
  CREATE UNIQUE INDEX "UNQ_UT_PART1" ON "UNIT_TESTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1580
  ;
1581
/
4308 dpurdie 1582
--------------------------------------------------------
1583
--  DDL for Index UNQ_BUILD_ENV
1584
--------------------------------------------------------
4040 dpurdie 1585
 
4211 dpurdie 1586
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV" ON "BUILD_ENVIRONMENTS" ("BE_NAME") 
4040 dpurdie 1587
  ;
1588
/
1589
--------------------------------------------------------
4211 dpurdie 1590
--  DDL for Index INX_ACTION_DATE_TIME
4040 dpurdie 1591
--------------------------------------------------------
1592
 
4211 dpurdie 1593
  CREATE INDEX "INX_ACTION_DATE_TIME" ON "ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1594
  ;
1595
/
1596
--------------------------------------------------------
4308 dpurdie 1597
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG02
1598
--------------------------------------------------------
4040 dpurdie 1599
 
4211 dpurdie 1600
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG02" ON "BUILD_MACHINE_CONFIG" ("MACHINE_HOSTNAME") 
4040 dpurdie 1601
  ;
1602
/
4308 dpurdie 1603
--------------------------------------------------------
1604
--  DDL for Index BUILD_MACHINES_PK
1605
--------------------------------------------------------
4040 dpurdie 1606
 
4211 dpurdie 1607
  CREATE UNIQUE INDEX "BUILD_MACHINES_PK" ON "BUILD_MACHINES" ("BM_ID") 
4040 dpurdie 1608
  ;
1609
/
4308 dpurdie 1610
--------------------------------------------------------
1611
--  DDL for Index INX_TTB_SESSION
1612
--------------------------------------------------------
4040 dpurdie 1613
 
4211 dpurdie 1614
  CREATE INDEX "INX_TTB_SESSION" ON "TEMP_TREE_BROWSE" ("SESSION_NUM") 
4040 dpurdie 1615
  ;
1616
/
4308 dpurdie 1617
--------------------------------------------------------
1618
--  DDL for Index UNQ_RTD
1619
--------------------------------------------------------
4040 dpurdie 1620
 
4211 dpurdie 1621
  CREATE INDEX "UNQ_RTD" ON "RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
4040 dpurdie 1622
  ;
1623
/
4308 dpurdie 1624
--------------------------------------------------------
4211 dpurdie 1625
--  DDL for Index INX_RL_RTAG_ID
4040 dpurdie 1626
--------------------------------------------------------
1627
 
4211 dpurdie 1628
  CREATE INDEX "INX_RL_RTAG_ID" ON "RELEASE_LINKS" ("RTAG_ID") 
4040 dpurdie 1629
  ;
1630
/
1631
--------------------------------------------------------
4211 dpurdie 1632
--  DDL for Index UNQ_VIEW_DEF
4040 dpurdie 1633
--------------------------------------------------------
1634
 
4211 dpurdie 1635
  CREATE UNIQUE INDEX "UNQ_VIEW_DEF" ON "VIEW_DEF" ("VIEW_ID", "PKG_ID") 
4040 dpurdie 1636
  ;
1637
/
1638
--------------------------------------------------------
4211 dpurdie 1639
--  DDL for Index INX_PACKAGES_PKG_NAME
4040 dpurdie 1640
--------------------------------------------------------
1641
 
4211 dpurdie 1642
  CREATE INDEX "INX_PACKAGES_PKG_NAME" ON "PACKAGE_VERSIONS" ("PKG_ID") 
4040 dpurdie 1643
  ;
1644
/
1645
--------------------------------------------------------
4211 dpurdie 1646
--  DDL for Index INX_PCOMP_FK_PV_ID
4040 dpurdie 1647
--------------------------------------------------------
1648
 
4211 dpurdie 1649
  CREATE INDEX "INX_PCOMP_FK_PV_ID" ON "PRODUCT_COMPONENTS" ("PV_ID") 
4040 dpurdie 1650
  ;
1651
/
1652
--------------------------------------------------------
4211 dpurdie 1653
--  DDL for Index DAEMON_INSTRUCTIONS_UK1
4040 dpurdie 1654
--------------------------------------------------------
1655
 
4211 dpurdie 1656
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_UK1" ON "DAEMON_INSTRUCTIONS" ("OP_CODE", "RTAG_ID", "PV_ID") 
4040 dpurdie 1657
  ;
1658
/
1659
--------------------------------------------------------
4211 dpurdie 1660
--  DDL for Index INX_FILE_NAME
4040 dpurdie 1661
--------------------------------------------------------
1662
 
4211 dpurdie 1663
  CREATE INDEX "INX_FILE_NAME" ON "RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1664
  ;
1665
/
1666
--------------------------------------------------------
4211 dpurdie 1667
--  DDL for Index INX_IS_PATCH_IGNORE
4040 dpurdie 1668
--------------------------------------------------------
1669
 
4211 dpurdie 1670
  CREATE INDEX "INX_IS_PATCH_IGNORE" ON "IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
4040 dpurdie 1671
  ;
1672
/
1673
--------------------------------------------------------
4211 dpurdie 1674
--  DDL for Index UNQ_BUILD_ENV_DOCS
4040 dpurdie 1675
--------------------------------------------------------
1676
 
4211 dpurdie 1677
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV_DOCS" ON "BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
4040 dpurdie 1678
  ;
1679
/
1680
--------------------------------------------------------
4211 dpurdie 1681
--  DDL for Index INX_PROJ_ACTION_LOG_PROJ
4040 dpurdie 1682
--------------------------------------------------------
1683
 
4211 dpurdie 1684
  CREATE INDEX "INX_PROJ_ACTION_LOG_PROJ" ON "PROJECT_ACTION_LOG" ("PROJ_ID") 
4040 dpurdie 1685
  ;
1686
/
1687
--------------------------------------------------------
1688
--  DDL for Index INX_TTB_LEVEL_NUM
1689
--------------------------------------------------------
1690
 
1691
  CREATE INDEX "INX_TTB_LEVEL_NUM" ON "TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1692
  ;
1693
/
1694
--------------------------------------------------------
4211 dpurdie 1695
--  DDL for Index UNQ_WORK_IN_PROGRESS
4040 dpurdie 1696
--------------------------------------------------------
1697
 
4211 dpurdie 1698
  CREATE UNIQUE INDEX "UNQ_WORK_IN_PROGRESS" ON "WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1699
  ;
1700
/
1701
--------------------------------------------------------
4211 dpurdie 1702
--  DDL for Index INX_PACKAGES_V_NMM
4040 dpurdie 1703
--------------------------------------------------------
1704
 
4211 dpurdie 1705
  CREATE INDEX "INX_PACKAGES_V_NMM" ON "PACKAGE_VERSIONS" ("V_NMM") 
4040 dpurdie 1706
  ;
1707
/
1708
--------------------------------------------------------
4211 dpurdie 1709
--  DDL for Index UNQ_PLANNED
4040 dpurdie 1710
--------------------------------------------------------
1711
 
4211 dpurdie 1712
  CREATE INDEX "UNQ_PLANNED" ON "PLANNED" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1713
  ;
1714
/
1715
--------------------------------------------------------
4211 dpurdie 1716
--  DDL for Index INX_TES_PKGEXT
4040 dpurdie 1717
--------------------------------------------------------
1718
 
4211 dpurdie 1719
  CREATE INDEX "INX_TES_PKGEXT" ON "TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
4040 dpurdie 1720
  ;
1721
/
4308 dpurdie 1722
--------------------------------------------------------
1723
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG01
1724
--------------------------------------------------------
4040 dpurdie 1725
 
4211 dpurdie 1726
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG01" ON "BUILD_MACHINE_CONFIG" (LOWER("DISPLAY_NAME")) 
4040 dpurdie 1727
  ;
1728
/
1729
--------------------------------------------------------
4211 dpurdie 1730
--  DDL for Index UNQ_RELEASE_LINKS
4040 dpurdie 1731
--------------------------------------------------------
1732
 
4211 dpurdie 1733
  CREATE UNIQUE INDEX "UNQ_RELEASE_LINKS" ON "RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
4040 dpurdie 1734
  ;
1735
/
4308 dpurdie 1736
--------------------------------------------------------
1737
--  DDL for Index UNQ_PKG_DOC
1738
--------------------------------------------------------
4040 dpurdie 1739
 
4211 dpurdie 1740
  CREATE UNIQUE INDEX "UNQ_PKG_DOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
4040 dpurdie 1741
  ;
1742
/
1743
--------------------------------------------------------
4211 dpurdie 1744
--  DDL for Index DAEMON_INSTRUCTIONS_PK
4040 dpurdie 1745
--------------------------------------------------------
1746
 
4211 dpurdie 1747
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_PK" ON "DAEMON_INSTRUCTIONS" ("DAEMON_INSTRUCTIONS_ID") 
4040 dpurdie 1748
  ;
1749
/
4308 dpurdie 1750
--------------------------------------------------------
1751
--  DDL for Index INX_DAEMON_INST_SCHED_DATETIME
1752
--------------------------------------------------------
4040 dpurdie 1753
 
4211 dpurdie 1754
  CREATE INDEX "INX_DAEMON_INST_SCHED_DATETIME" ON "DAEMON_INSTRUCTIONS" ("SCHEDULED_DATETIME") 
4040 dpurdie 1755
  ;
1756
/
1757
--------------------------------------------------------
4211 dpurdie 1758
--  DDL for Index INX_TTB_PKG
4040 dpurdie 1759
--------------------------------------------------------
1760
 
4211 dpurdie 1761
  CREATE INDEX "INX_TTB_PKG" ON "TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
4040 dpurdie 1762
  ;
1763
/
1764
--------------------------------------------------------
4211 dpurdie 1765
--  DDL for Index UNQ_VALIDATION_RULES
4040 dpurdie 1766
--------------------------------------------------------
1767
 
4211 dpurdie 1768
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
4040 dpurdie 1769
  ;
1770
/
4308 dpurdie 1771
--------------------------------------------------------
1772
--  DDL for Index BUILD_STANDARDS_ADDENDUM_PK
1773
--------------------------------------------------------
4040 dpurdie 1774
 
4211 dpurdie 1775
  CREATE UNIQUE INDEX "BUILD_STANDARDS_ADDENDUM_PK" ON "BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
4040 dpurdie 1776
  ;
1777
/
1778
--------------------------------------------------------
4211 dpurdie 1779
--  DDL for Index INX_PV_OWNER_ID
4040 dpurdie 1780
--------------------------------------------------------
1781
 
4211 dpurdie 1782
  CREATE INDEX "INX_PV_OWNER_ID" ON "PACKAGE_VERSIONS" ("OWNER_ID") 
4040 dpurdie 1783
  ;
1784
/
1785
--------------------------------------------------------
4211 dpurdie 1786
--  DDL for Index INX_TES_TES_STATE
4040 dpurdie 1787
--------------------------------------------------------
1788
 
4211 dpurdie 1789
  CREATE INDEX "INX_TES_TES_STATE" ON "TEMP_ENV_STATES" ("TES_STATE") 
4040 dpurdie 1790
  ;
1791
/
1792
--------------------------------------------------------
4308 dpurdie 1793
--  DDL for Index UNQ_AN_PART1
1794
--------------------------------------------------------
4040 dpurdie 1795
 
4211 dpurdie 1796
  CREATE UNIQUE INDEX "UNQ_AN_PART1" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
4040 dpurdie 1797
  ;
1798
/
4308 dpurdie 1799
--------------------------------------------------------
4211 dpurdie 1800
--  DDL for Index UNQ_RELEASE_CONTENTS
4040 dpurdie 1801
--------------------------------------------------------
1802
 
4211 dpurdie 1803
  CREATE UNIQUE INDEX "UNQ_RELEASE_CONTENTS" ON "RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1804
  ;
1805
/
4308 dpurdie 1806
--------------------------------------------------------
1807
--  DDL for Index INX_ACTION_LOG_PV_ID
1808
--------------------------------------------------------
4040 dpurdie 1809
 
4211 dpurdie 1810
  CREATE INDEX "INX_ACTION_LOG_PV_ID" ON "ACTION_LOG" ("PV_ID") 
4040 dpurdie 1811
  ;
1812
/
1813
--------------------------------------------------------
4211 dpurdie 1814
--  DDL for Index UNQ_TEST_TYPE_NAME
4040 dpurdie 1815
--------------------------------------------------------
1816
 
4211 dpurdie 1817
  CREATE UNIQUE INDEX "UNQ_TEST_TYPE_NAME" ON "TEST_TYPES" ("TEST_TYPE_NAME") 
4040 dpurdie 1818
  ;
1819
/
1820
--------------------------------------------------------
4308 dpurdie 1821
--  DDL for Index PKNOTE_MANAGER1
1822
--------------------------------------------------------
4040 dpurdie 1823
 
4211 dpurdie 1824
  CREATE UNIQUE INDEX "PKNOTE_MANAGER1" ON "NOTE_MANAGER" ("NID") 
4040 dpurdie 1825
  ;
1826
/
4308 dpurdie 1827
--------------------------------------------------------
1828
--  DDL for Index INX_PACKAGES_V_MM
1829
--------------------------------------------------------
4040 dpurdie 1830
 
4211 dpurdie 1831
  CREATE INDEX "INX_PACKAGES_V_MM" ON "PACKAGE_VERSIONS" ("V_MM") 
4040 dpurdie 1832
  ;
1833
/
4308 dpurdie 1834
--------------------------------------------------------
1835
--  DDL for Index INX_CODE_REVIEW
1836
--------------------------------------------------------
4040 dpurdie 1837
 
4211 dpurdie 1838
  CREATE UNIQUE INDEX "INX_CODE_REVIEW" ON "CODE_REVIEWS" ("PV_ID") 
4040 dpurdie 1839
  ;
1840
/
4308 dpurdie 1841
--------------------------------------------------------
4211 dpurdie 1842
--  DDL for Index UNQ_VTREES
4040 dpurdie 1843
--------------------------------------------------------
1844
 
4211 dpurdie 1845
  CREATE UNIQUE INDEX "UNQ_VTREES" ON "VTREES" ("PROJ_ID", "VTREE_NAME") 
4040 dpurdie 1846
  ;
1847
/
4308 dpurdie 1848
--------------------------------------------------------
1849
--  DDL for Index INX_PACKAGE_DEPS_PKG_ID
1850
--------------------------------------------------------
4040 dpurdie 1851
 
4211 dpurdie 1852
  CREATE INDEX "INX_PACKAGE_DEPS_PKG_ID" ON "PACKAGE_DEPENDENCIES" ("PKG_ID") 
4040 dpurdie 1853
  ;
1854
/
1855
--------------------------------------------------------
4211 dpurdie 1856
--  DDL for Index UNQ_PROJECTS
4040 dpurdie 1857
--------------------------------------------------------
1858
 
4211 dpurdie 1859
  CREATE UNIQUE INDEX "UNQ_PROJECTS" ON "PROJECTS" ("PROJ_NAME") 
4040 dpurdie 1860
  ;
1861
/
4308 dpurdie 1862
--------------------------------------------------------
1863
--  DDL for Index INX_PACKAGES_V_EXT
1864
--------------------------------------------------------
4040 dpurdie 1865
 
4211 dpurdie 1866
  CREATE INDEX "INX_PACKAGES_V_EXT" ON "PACKAGE_VERSIONS" ("V_EXT") 
4040 dpurdie 1867
  ;
1868
/
1869
--------------------------------------------------------
4211 dpurdie 1870
--  DDL for Index PK_PROJECTS
4040 dpurdie 1871
--------------------------------------------------------
1872
 
4211 dpurdie 1873
  CREATE UNIQUE INDEX "PK_PROJECTS" ON "PROJECTS" ("PROJ_ID") 
4040 dpurdie 1874
  ;
1875
/
4308 dpurdie 1876
--------------------------------------------------------
1877
--  DDL for Index INX_TES_PV
1878
--------------------------------------------------------
4040 dpurdie 1879
 
4211 dpurdie 1880
  CREATE INDEX "INX_TES_PV" ON "TEMP_ENV_STATES" ("PV_ID") 
4040 dpurdie 1881
  ;
1882
/
1883
--------------------------------------------------------
4211 dpurdie 1884
--  DDL for Index UNQ_VTREE_WORLD
4040 dpurdie 1885
--------------------------------------------------------
1886
 
4211 dpurdie 1887
  CREATE UNIQUE INDEX "UNQ_VTREE_WORLD" ON "VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
4040 dpurdie 1888
  ;
1889
/
1890
--------------------------------------------------------
4308 dpurdie 1891
--  DDL for Index UNQ_IGW
1892
--------------------------------------------------------
4040 dpurdie 1893
 
4211 dpurdie 1894
  CREATE UNIQUE INDEX "UNQ_IGW" ON "IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
4040 dpurdie 1895
  ;
1896
/
4308 dpurdie 1897
--------------------------------------------------------
1898
--  DDL for Index INX_DAEMON_INST_RTAG_ID
1899
--------------------------------------------------------
4040 dpurdie 1900
 
4211 dpurdie 1901
  CREATE INDEX "INX_DAEMON_INST_RTAG_ID" ON "DAEMON_INSTRUCTIONS" ("RTAG_ID") 
4040 dpurdie 1902
  ;
1903
/
4308 dpurdie 1904
--------------------------------------------------------
1905
--  DDL for Index PK_NOTIFICATION_HISTORY
1906
--------------------------------------------------------
4040 dpurdie 1907
 
4211 dpurdie 1908
  CREATE UNIQUE INDEX "PK_NOTIFICATION_HISTORY" ON "NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
4040 dpurdie 1909
  ;
1910
/
4308 dpurdie 1911
--------------------------------------------------------
1912
--  DDL for Index UNQ_PACKAGE_DEPENDENCIES
1913
--------------------------------------------------------
4040 dpurdie 1914
 
4211 dpurdie 1915
  CREATE UNIQUE INDEX "UNQ_PACKAGE_DEPENDENCIES" ON "PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
4040 dpurdie 1916
  ;
1917
/
4308 dpurdie 1918
--------------------------------------------------------
1919
--  DDL for Index INX_PACKAGE_DEPS_PV_ID
1920
--------------------------------------------------------
4040 dpurdie 1921
 
4211 dpurdie 1922
  CREATE INDEX "INX_PACKAGE_DEPS_PV_ID" ON "PACKAGE_DEPENDENCIES" ("PV_ID") 
4040 dpurdie 1923
  ;
1924
/
4308 dpurdie 1925
--------------------------------------------------------
4211 dpurdie 1926
--  DDL for Index BUILD_STANDARDS_PK
4040 dpurdie 1927
--------------------------------------------------------
1928
 
4211 dpurdie 1929
  CREATE UNIQUE INDEX "BUILD_STANDARDS_PK" ON "BUILD_STANDARDS" ("BS_ID") 
4040 dpurdie 1930
  ;
1931
/
4308 dpurdie 1932
--------------------------------------------------------
1933
--  DDL for Index UNQ_CQ
1934
--------------------------------------------------------
4040 dpurdie 1935
 
1936
  CREATE UNIQUE INDEX "UNQ_CQ" ON "CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1937
  ;
1938
/
1939
--------------------------------------------------------
4211 dpurdie 1940
--  DDL for Index UNQ_PACKAGE_VERSIONS
4040 dpurdie 1941
--------------------------------------------------------
1942
 
4211 dpurdie 1943
  CREATE UNIQUE INDEX "UNQ_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
4040 dpurdie 1944
  ;
1945
/
4308 dpurdie 1946
--------------------------------------------------------
1947
--  DDL for Index INX_PV_ID_TEST_ID_PKGDOC
1948
--------------------------------------------------------
4040 dpurdie 1949
 
4211 dpurdie 1950
  CREATE INDEX "INX_PV_ID_TEST_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1951
  ;
1952
/
1953
--------------------------------------------------------
4211 dpurdie 1954
--  DDL for Index UNQ_PACKAGE_PATCHES
4040 dpurdie 1955
--------------------------------------------------------
1956
 
4211 dpurdie 1957
  CREATE UNIQUE INDEX "UNQ_PACKAGE_PATCHES" ON "PACKAGE_PATCHES" ("PATCH_ID") 
4040 dpurdie 1958
  ;
1959
/
1960
--------------------------------------------------------
4308 dpurdie 1961
--  DDL for Index UNQ_REL_COMPONENTS
1962
--------------------------------------------------------
4040 dpurdie 1963
 
4211 dpurdie 1964
  CREATE UNIQUE INDEX "UNQ_REL_COMPONENTS" ON "RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
4040 dpurdie 1965
  ;
1966
/
4308 dpurdie 1967
--------------------------------------------------------
1968
--  DDL for Index PK_PACKAGE_VERSIONS
1969
--------------------------------------------------------
4040 dpurdie 1970
 
4211 dpurdie 1971
  CREATE UNIQUE INDEX "PK_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PV_ID") 
4040 dpurdie 1972
  ;
1973
/
4308 dpurdie 1974
--------------------------------------------------------
1975
--  DDL for Index UNQ_RELEASE_METRICS
1976
--------------------------------------------------------
4040 dpurdie 1977
 
4211 dpurdie 1978
  CREATE UNIQUE INDEX "UNQ_RELEASE_METRICS" ON "RELEASE_METRICS" ("RTAG_ID") 
4040 dpurdie 1979
  ;
1980
/
4308 dpurdie 1981
--------------------------------------------------------
1982
--  DDL for Index UNQ_BUILD_ORDER
1983
--------------------------------------------------------
4040 dpurdie 1984
 
4211 dpurdie 1985
  CREATE UNIQUE INDEX "UNQ_BUILD_ORDER" ON "BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
4040 dpurdie 1986
  ;
1987
/
4308 dpurdie 1988
--------------------------------------------------------
1989
--  DDL for Index PK_BUILD_ENVIRONMENTS
1990
--------------------------------------------------------
4040 dpurdie 1991
 
4211 dpurdie 1992
  CREATE UNIQUE INDEX "PK_BUILD_ENVIRONMENTS" ON "BUILD_ENVIRONMENTS" ("BE_ID") 
4040 dpurdie 1993
  ;
1994
/
4308 dpurdie 1995
--------------------------------------------------------
1996
--  DDL for Index INX_PACKAGE_DEPS_DPKG_ID
1997
--------------------------------------------------------
4040 dpurdie 1998
 
4211 dpurdie 1999
  CREATE INDEX "INX_PACKAGE_DEPS_DPKG_ID" ON "PACKAGE_DEPENDENCIES" ("DPKG_ID") 
4040 dpurdie 2000
  ;
2001
/
4308 dpurdie 2002
--------------------------------------------------------
2003
--  DDL for Index INX_RL_REFRTAG_ID
2004
--------------------------------------------------------
4040 dpurdie 2005
 
4211 dpurdie 2006
  CREATE INDEX "INX_RL_REFRTAG_ID" ON "RELEASE_LINKS" ("REF_RTAG_ID") 
4040 dpurdie 2007
  ;
2008
/
4308 dpurdie 2009
--------------------------------------------------------
2010
--  DDL for Index INX_RC_BASE_VIEW_ID
2011
--------------------------------------------------------
4040 dpurdie 2012
 
4211 dpurdie 2013
  CREATE INDEX "INX_RC_BASE_VIEW_ID" ON "RELEASE_CONTENT" ("BASE_VIEW_ID") 
4040 dpurdie 2014
  ;
2015
/
4308 dpurdie 2016
--------------------------------------------------------
2017
--  DDL for Index INX_DAEMON_INST_PV_ID
2018
--------------------------------------------------------
4211 dpurdie 2019
 
2020
  CREATE INDEX "INX_DAEMON_INST_PV_ID" ON "DAEMON_INSTRUCTIONS" ("PV_ID") 
2021
  ;
2022
/
4308 dpurdie 2023
--------------------------------------------------------
4040 dpurdie 2024
--  DDL for Index UNQ_PROJECT_EXT
2025
--------------------------------------------------------
2026
 
2027
  CREATE UNIQUE INDEX "UNQ_PROJECT_EXT" ON "PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
2028
  ;
2029
/
4308 dpurdie 2030
--------------------------------------------------------
2031
--  DDL for Index VCS_TYPE_PK
2032
--------------------------------------------------------
4040 dpurdie 2033
 
4211 dpurdie 2034
  CREATE UNIQUE INDEX "VCS_TYPE_PK" ON "VCS_TYPE" ("VCS_TYPE_ID") 
4040 dpurdie 2035
  ;
2036
/
2037
--------------------------------------------------------
4211 dpurdie 2038
--  DDL for Index INX_PC_FILE_NAME
4040 dpurdie 2039
--------------------------------------------------------
2040
 
4211 dpurdie 2041
  CREATE INDEX "INX_PC_FILE_NAME" ON "PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 2042
  ;
2043
/
4308 dpurdie 2044
--------------------------------------------------------
2045
--  DDL for Index PK_RELEASE_TAGS
2046
--------------------------------------------------------
4040 dpurdie 2047
 
4211 dpurdie 2048
  CREATE UNIQUE INDEX "PK_RELEASE_TAGS" ON "RELEASE_TAGS" ("RTAG_ID") 
4040 dpurdie 2049
  ;
2050
/
2051
--------------------------------------------------------
4211 dpurdie 2052
--  DDL for Index FK_PROJ_ID_RELEASE_TAGS
4040 dpurdie 2053
--------------------------------------------------------
2054
 
4211 dpurdie 2055
  CREATE INDEX "FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_TAGS" ("PROJ_ID") 
4040 dpurdie 2056
  ;
2057
/
2058
--------------------------------------------------------
4211 dpurdie 2059
--  DDL for Index INX_RCOMP_PV_ID
4040 dpurdie 2060
--------------------------------------------------------
2061
 
4211 dpurdie 2062
  CREATE INDEX "INX_RCOMP_PV_ID" ON "RELEASE_COMPONENTS" ("PV_ID") 
4040 dpurdie 2063
  ;
2064
/
4308 dpurdie 2065
--------------------------------------------------------
2066
--  DDL for Index MICROSOFT_PK_DTPROPERTIES
2067
--------------------------------------------------------
4040 dpurdie 2068
 
4211 dpurdie 2069
  CREATE UNIQUE INDEX "MICROSOFT_PK_DTPROPERTIES" ON "MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
4040 dpurdie 2070
  ;
2071
/
2072
--------------------------------------------------------
4308 dpurdie 2073
--  DDL for Index INX_UT_PV_TEST_TYPE
2074
--------------------------------------------------------
4040 dpurdie 2075
 
4211 dpurdie 2076
  CREATE INDEX "INX_UT_PV_TEST_TYPE" ON "UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
4040 dpurdie 2077
  ;
2078
/
4308 dpurdie 2079
--------------------------------------------------------
2080
--  DDL for Index PK_WORLDS
2081
--------------------------------------------------------
4040 dpurdie 2082
 
4211 dpurdie 2083
  CREATE UNIQUE INDEX "PK_WORLDS" ON "WORLDS" ("WORLD_ID") 
4040 dpurdie 2084
  ;
2085
/
4308 dpurdie 2086
--------------------------------------------------------
2087
--  DDL for Index UNQ_AN_PART2
2088
--------------------------------------------------------
4040 dpurdie 2089
 
4211 dpurdie 2090
  CREATE UNIQUE INDEX "UNQ_AN_PART2" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
4040 dpurdie 2091
  ;
2092
/
4308 dpurdie 2093
--------------------------------------------------------
4211 dpurdie 2094
--  Constraints for Table RELEASE_TAGS
4040 dpurdie 2095
--------------------------------------------------------
2096
 
4211 dpurdie 2097
  ALTER TABLE "RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") ENABLE;
2098
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2099
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PARENT_RTAG_ID" NOT NULL ENABLE);
2100
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_STAMP" NOT NULL ENABLE);
2101
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_ENV" NOT NULL ENABLE);
2102
  ALTER TABLE "RELEASE_TAGS" MODIFY ("OFFICIAL" NOT NULL ENABLE);
2103
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_NAME" NOT NULL ENABLE);
2104
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2105
/
2106
--------------------------------------------------------
4308 dpurdie 2107
--  Constraints for Table RIPPLE_FIELD_STATES
2108
--------------------------------------------------------
4040 dpurdie 2109
 
4211 dpurdie 2110
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ACRONYM" NOT NULL DISABLE);
2111
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 2112
/
4308 dpurdie 2113
--------------------------------------------------------
4211 dpurdie 2114
--  Constraints for Table RUNTIME_DEPENDENCIES
4040 dpurdie 2115
--------------------------------------------------------
2116
 
4211 dpurdie 2117
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2118
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2119
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2120
/
4308 dpurdie 2121
--------------------------------------------------------
2122
--  Constraints for Table PACKAGE_PROCESSES
2123
--------------------------------------------------------
4040 dpurdie 2124
 
4211 dpurdie 2125
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
2126
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2127
/
2128
--------------------------------------------------------
4211 dpurdie 2129
--  Constraints for Table DO_NOT_RIPPLE
4040 dpurdie 2130
--------------------------------------------------------
2131
 
4211 dpurdie 2132
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2133
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2134
/
2135
--------------------------------------------------------
4211 dpurdie 2136
--  Constraints for Table RELEASE_COMPONENTS
4040 dpurdie 2137
--------------------------------------------------------
2138
 
4211 dpurdie 2139
  ALTER TABLE "RELEASE_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2140
/
4308 dpurdie 2141
--------------------------------------------------------
2142
--  Constraints for Table VIEW_SETTINGS
2143
--------------------------------------------------------
4211 dpurdie 2144
 
2145
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2146
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("USER_ID" NOT NULL ENABLE);
2147
/
4040 dpurdie 2148
--------------------------------------------------------
4211 dpurdie 2149
--  Constraints for Table WORLDS
4040 dpurdie 2150
--------------------------------------------------------
2151
 
4211 dpurdie 2152
  ALTER TABLE "WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") ENABLE;
2153
  ALTER TABLE "WORLDS" MODIFY ("WORLD_NAME" NOT NULL ENABLE);
2154
  ALTER TABLE "WORLDS" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2155
/
2156
--------------------------------------------------------
4211 dpurdie 2157
--  Constraints for Table UNIT_TESTS
4040 dpurdie 2158
--------------------------------------------------------
2159
 
4211 dpurdie 2160
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
2161
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2162
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
4040 dpurdie 2163
/
2164
--------------------------------------------------------
4211 dpurdie 2165
--  Constraints for Table PACKAGE_DOCUMENTS
4040 dpurdie 2166
--------------------------------------------------------
2167
 
4211 dpurdie 2168
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2169
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_ID" NOT NULL ENABLE);
2170
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2171
/
2172
--------------------------------------------------------
4211 dpurdie 2173
--  Constraints for Table PACKAGE_BUILD_INFO
4040 dpurdie 2174
--------------------------------------------------------
2175
 
4211 dpurdie 2176
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("BM_ID" NOT NULL ENABLE);
2177
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2178
/
2179
--------------------------------------------------------
2180
--  Constraints for Table ADVISORY_RIPPLE
2181
--------------------------------------------------------
2182
 
2183
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2184
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2185
/
2186
--------------------------------------------------------
4211 dpurdie 2187
--  Constraints for Table PRODUCT_STATES
4040 dpurdie 2188
--------------------------------------------------------
2189
 
4211 dpurdie 2190
  ALTER TABLE "PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") ENABLE;
2191
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE" NOT NULL ENABLE);
2192
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 2193
/
4308 dpurdie 2194
--------------------------------------------------------
2195
--  Constraints for Table PRODUCT_COMPONENTS
2196
--------------------------------------------------------
4040 dpurdie 2197
 
4211 dpurdie 2198
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
2199
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2200
/
4308 dpurdie 2201
--------------------------------------------------------
2202
--  Constraints for Table PACKAGE_PATCHES
2203
--------------------------------------------------------
4040 dpurdie 2204
 
4211 dpurdie 2205
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("INSTALL_ORDER" NOT NULL ENABLE);
2206
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PATCH_ID" NOT NULL ENABLE);
2207
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2208
/
4308 dpurdie 2209
--------------------------------------------------------
2210
--  Constraints for Table RUN_LEVEL_SCHEDULE
2211
--------------------------------------------------------
4040 dpurdie 2212
 
4211 dpurdie 2213
  ALTER TABLE "RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") ENABLE;
2214
  ALTER TABLE "RUN_LEVEL_SCHEDULE" MODIFY ("SCHEDULED_ID" NOT NULL ENABLE);
4040 dpurdie 2215
/
2216
--------------------------------------------------------
4211 dpurdie 2217
--  Constraints for Table MICROSOFTDTPROPERTIES
4040 dpurdie 2218
--------------------------------------------------------
2219
 
4211 dpurdie 2220
  ALTER TABLE "MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") ENABLE;
2221
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("VERSION" CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE);
2222
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("PROPERTY" CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE);
2223
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("ID" CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE);
4040 dpurdie 2224
/
2225
--------------------------------------------------------
4211 dpurdie 2226
--  Constraints for Table NOTE_MANAGER
4040 dpurdie 2227
--------------------------------------------------------
2228
 
4211 dpurdie 2229
  ALTER TABLE "NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") ENABLE;
2230
  ALTER TABLE "NOTE_MANAGER" MODIFY ("NID" NOT NULL ENABLE);
4040 dpurdie 2231
/
2232
--------------------------------------------------------
4308 dpurdie 2233
--  Constraints for Table BUILD_SERVICE_CONFIG
2234
--------------------------------------------------------
4040 dpurdie 2235
 
4211 dpurdie 2236
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("CONFIG" NOT NULL ENABLE);
2237
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("SERVICE" NOT NULL ENABLE);
4040 dpurdie 2238
/
4308 dpurdie 2239
--------------------------------------------------------
2240
--  Constraints for Table GBE_MACHTYPE
2241
--------------------------------------------------------
4040 dpurdie 2242
 
4211 dpurdie 2243
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("BM_ID" NOT NULL ENABLE);
2244
  ALTER TABLE "GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") ENABLE;
2245
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_VALUE" NOT NULL ENABLE);
2246
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_ID" NOT NULL ENABLE);
4040 dpurdie 2247
/
4308 dpurdie 2248
--------------------------------------------------------
4211 dpurdie 2249
--  Constraints for Table ACTION_LOG
4040 dpurdie 2250
--------------------------------------------------------
2251
 
4211 dpurdie 2252
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2253
  ALTER TABLE "ACTION_LOG" MODIFY ("PV_ID" NOT NULL ENABLE);
2254
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2255
  ALTER TABLE "ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2256
/
4308 dpurdie 2257
--------------------------------------------------------
2258
--  Constraints for Table ADDITIONAL_NOTES
2259
--------------------------------------------------------
4040 dpurdie 2260
 
4211 dpurdie 2261
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2262
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2263
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_TITLE" NOT NULL ENABLE);
2264
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("PV_ID" NOT NULL ENABLE);
2265
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_ID" NOT NULL ENABLE);
4040 dpurdie 2266
/
2267
--------------------------------------------------------
4308 dpurdie 2268
--  Constraints for Table BUILD_STANDARDS_ADDENDUM
2269
--------------------------------------------------------
4040 dpurdie 2270
 
2271
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") ENABLE;
2272
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BS_ID" NOT NULL ENABLE);
2273
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_NAME" NOT NULL ENABLE);
2274
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_ID" NOT NULL ENABLE);
2275
/
4308 dpurdie 2276
--------------------------------------------------------
4211 dpurdie 2277
--  Constraints for Table TEST_TYPES
4040 dpurdie 2278
--------------------------------------------------------
2279
 
4211 dpurdie 2280
  ALTER TABLE "TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
2281
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
2282
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2283
/
2284
--------------------------------------------------------
4211 dpurdie 2285
--  Constraints for Table TEMP_ENV_STATES
4040 dpurdie 2286
--------------------------------------------------------
2287
 
4211 dpurdie 2288
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("TES_STATE" NOT NULL ENABLE);
2289
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2290
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PV_ID" NOT NULL ENABLE);
2291
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("LEVEL_NUM" NOT NULL ENABLE);
2292
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("SESSION_NUM" NOT NULL ENABLE);
4040 dpurdie 2293
/
2294
--------------------------------------------------------
4211 dpurdie 2295
--  Constraints for Table VTREES_WORLD
4040 dpurdie 2296
--------------------------------------------------------
2297
 
4211 dpurdie 2298
  ALTER TABLE "VTREES_WORLD" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2299
  ALTER TABLE "VTREES_WORLD" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2300
/
2301
--------------------------------------------------------
4211 dpurdie 2302
--  Constraints for Table RELEASE_CONFIG
4040 dpurdie 2303
--------------------------------------------------------
2304
 
4211 dpurdie 2305
  ALTER TABLE "RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") ENABLE;
2306
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2307
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2308
/
2309
--------------------------------------------------------
4211 dpurdie 2310
--  Constraints for Table VIEWS
4040 dpurdie 2311
--------------------------------------------------------
2312
 
4211 dpurdie 2313
  ALTER TABLE "VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") ENABLE;
2314
  ALTER TABLE "VIEWS" MODIFY ("PUBLIC_READ" NOT NULL ENABLE);
2315
  ALTER TABLE "VIEWS" MODIFY ("BASE_VIEW" NOT NULL ENABLE);
2316
  ALTER TABLE "VIEWS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2317
  ALTER TABLE "VIEWS" MODIFY ("VIEW_NAME" NOT NULL ENABLE);
2318
  ALTER TABLE "VIEWS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2319
/
2320
--------------------------------------------------------
4211 dpurdie 2321
--  Constraints for Table JIRA_ISSUES
4040 dpurdie 2322
--------------------------------------------------------
2323
 
4211 dpurdie 2324
  ALTER TABLE "JIRA_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2325
/
4308 dpurdie 2326
--------------------------------------------------------
2327
--  Constraints for Table PLATFORMS
2328
--------------------------------------------------------
4040 dpurdie 2329
 
4211 dpurdie 2330
  ALTER TABLE "PLATFORMS" MODIFY ("NAME" NOT NULL ENABLE);
2331
  ALTER TABLE "PLATFORMS" MODIFY ("CODE" NOT NULL ENABLE);
4040 dpurdie 2332
/
2333
--------------------------------------------------------
2334
--  Constraints for Table IGNORE_WARNINGS
2335
--------------------------------------------------------
2336
 
2337
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("DPV_ID" NOT NULL ENABLE);
2338
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("PV_ID" NOT NULL ENABLE);
2339
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2340
/
2341
--------------------------------------------------------
4211 dpurdie 2342
--  Constraints for Table DASH_BOARD
4040 dpurdie 2343
--------------------------------------------------------
2344
 
4211 dpurdie 2345
  ALTER TABLE "DASH_BOARD" MODIFY ("TOTAL_PACKAGES" NOT NULL ENABLE);
2346
  ALTER TABLE "DASH_BOARD" MODIFY ("AUTOMATED_PACKAGES" NOT NULL ENABLE);
2347
  ALTER TABLE "DASH_BOARD" MODIFY ("LAST_BUILD_TIME" NOT NULL ENABLE);
2348
  ALTER TABLE "DASH_BOARD" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2349
  ALTER TABLE "DASH_BOARD" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2350
/
2351
--------------------------------------------------------
4211 dpurdie 2352
--  Constraints for Table ACTION_TYPE
4040 dpurdie 2353
--------------------------------------------------------
2354
 
4211 dpurdie 2355
  ALTER TABLE "ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") ENABLE;
2356
  ALTER TABLE "ACTION_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2357
  ALTER TABLE "ACTION_TYPE" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2358
/
2359
--------------------------------------------------------
4211 dpurdie 2360
--  Constraints for Table PACKAGE_VERSIONS
4040 dpurdie 2361
--------------------------------------------------------
2362
 
4211 dpurdie 2363
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") ENABLE;
2364
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2365
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("LAST_PV_ID" NOT NULL ENABLE);
2366
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2367
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
2368
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
2369
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("DLOCKED" NOT NULL ENABLE);
2370
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_VERSION" NOT NULL ENABLE);
2371
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_ID" NOT NULL ENABLE);
2372
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2373
/
2374
--------------------------------------------------------
4211 dpurdie 2375
--  Constraints for Table PACKAGE_INTEREST
4040 dpurdie 2376
--------------------------------------------------------
2377
 
4211 dpurdie 2378
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("USER_ID" NOT NULL ENABLE);
2379
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2380
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2381
/
2382
--------------------------------------------------------
4211 dpurdie 2383
--  Constraints for Table RELEASE_CONTENT
4040 dpurdie 2384
--------------------------------------------------------
2385
 
4211 dpurdie 2386
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PKG_STATE" NOT NULL ENABLE);
2387
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERTOR_ID" NOT NULL ENABLE);
2388
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERT_STAMP" NOT NULL ENABLE);
2389
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("BASE_VIEW_ID" NOT NULL ENABLE);
2390
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PV_ID" NOT NULL ENABLE);
2391
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2392
/
2393
--------------------------------------------------------
4211 dpurdie 2394
--  Constraints for Table RELEASE_METRICS
4040 dpurdie 2395
--------------------------------------------------------
2396
 
4211 dpurdie 2397
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") ENABLE;
2398
  ALTER TABLE "RELEASE_METRICS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2399
/
2400
--------------------------------------------------------
4211 dpurdie 2401
--  Constraints for Table PROJECT_EXTENTIONS
4040 dpurdie 2402
--------------------------------------------------------
2403
 
4211 dpurdie 2404
  ALTER TABLE "PROJECT_EXTENTIONS" MODIFY ("EXT_NAME" NOT NULL ENABLE);
4040 dpurdie 2405
/
2406
--------------------------------------------------------
4211 dpurdie 2407
--  Constraints for Table ABT_ACTION_LOG
4040 dpurdie 2408
--------------------------------------------------------
2409
 
4211 dpurdie 2410
  ALTER TABLE "ABT_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2411
/
2412
--------------------------------------------------------
4211 dpurdie 2413
--  Constraints for Table DAEMON_ACTION_LOG
4040 dpurdie 2414
--------------------------------------------------------
2415
 
4211 dpurdie 2416
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2417
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2418
/
2419
--------------------------------------------------------
4211 dpurdie 2420
--  Constraints for Table PACKAGE_METRICS
4040 dpurdie 2421
--------------------------------------------------------
2422
 
4211 dpurdie 2423
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") ENABLE;
2424
  ALTER TABLE "PACKAGE_METRICS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2425
/
2426
--------------------------------------------------------
4211 dpurdie 2427
--  Constraints for Table CODE_REVIEW_URL
4040 dpurdie 2428
--------------------------------------------------------
2429
 
4211 dpurdie 2430
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") ENABLE;
2431
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("DATE_OF_REVIEW" NOT NULL ENABLE);
2432
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("URL" NOT NULL ENABLE);
2433
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2434
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PV_ID" NOT NULL ENABLE);
2435
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("CR_ID" NOT NULL ENABLE);
4040 dpurdie 2436
/
2437
--------------------------------------------------------
4211 dpurdie 2438
--  Constraints for Table AUTOBUILD_FAILURE
4040 dpurdie 2439
--------------------------------------------------------
2440
 
4211 dpurdie 2441
  ALTER TABLE "AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") ENABLE;
2442
  ALTER TABLE "AUTOBUILD_FAILURE" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2443
/
2444
--------------------------------------------------------
4211 dpurdie 2445
--  Constraints for Table BUILD_MACHINE_CONFIG
4040 dpurdie 2446
--------------------------------------------------------
2447
 
4211 dpurdie 2448
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "PK_BUILD_MACHINE_CONFIG" PRIMARY KEY ("BMCON_ID") ENABLE;
2449
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2450
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("MACHINE_HOSTNAME" NOT NULL ENABLE);
2451
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("DISPLAY_NAME" NOT NULL ENABLE);
2452
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("BMCON_ID" NOT NULL ENABLE);
4040 dpurdie 2453
/
2454
--------------------------------------------------------
4211 dpurdie 2455
--  Constraints for Table VIEW_DEF
4040 dpurdie 2456
--------------------------------------------------------
2457
 
4211 dpurdie 2458
  ALTER TABLE "VIEW_DEF" MODIFY ("PKG_ID" NOT NULL ENABLE);
2459
  ALTER TABLE "VIEW_DEF" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2460
/
2461
--------------------------------------------------------
4211 dpurdie 2462
--  Constraints for Table BUILD_STANDARDS
4040 dpurdie 2463
--------------------------------------------------------
2464
 
4211 dpurdie 2465
  ALTER TABLE "BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") ENABLE;
2466
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_NAME" NOT NULL ENABLE);
2467
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_ID" NOT NULL ENABLE);
4040 dpurdie 2468
/
4308 dpurdie 2469
--------------------------------------------------------
2470
--  Constraints for Table PACKAGE_BUILD_ENV
2471
--------------------------------------------------------
4040 dpurdie 2472
 
4211 dpurdie 2473
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("BE_ID" NOT NULL ENABLE);
2474
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2475
/
2476
--------------------------------------------------------
4211 dpurdie 2477
--  Constraints for Table VTREES
4040 dpurdie 2478
--------------------------------------------------------
2479
 
4211 dpurdie 2480
  ALTER TABLE "VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") ENABLE;
2481
  ALTER TABLE "VTREES" MODIFY ("HIDE" NOT NULL ENABLE);
2482
  ALTER TABLE "VTREES" MODIFY ("VTREE_NAME" NOT NULL ENABLE);
2483
  ALTER TABLE "VTREES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2484
  ALTER TABLE "VTREES" MODIFY ("VTREE_ID" NOT NULL ENABLE);
4040 dpurdie 2485
/
2486
--------------------------------------------------------
4308 dpurdie 2487
--  Constraints for Table NOTIFICATION_HISTORY
2488
--------------------------------------------------------
4040 dpurdie 2489
 
4211 dpurdie 2490
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") ENABLE;
2491
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2492
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("USER_ID" NOT NULL ENABLE);
2493
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("PV_ID" NOT NULL ENABLE);
2494
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2495
/
4308 dpurdie 2496
--------------------------------------------------------
2497
--  Constraints for Table RELEASE_LINKS
2498
--------------------------------------------------------
4040 dpurdie 2499
 
4211 dpurdie 2500
  ALTER TABLE "RELEASE_LINKS" MODIFY ("REF_RTAG_ID" NOT NULL ENABLE);
2501
  ALTER TABLE "RELEASE_LINKS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2502
/
4308 dpurdie 2503
--------------------------------------------------------
2504
--  Constraints for Table PACKAGES
2505
--------------------------------------------------------
4040 dpurdie 2506
 
4211 dpurdie 2507
  ALTER TABLE "PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") ENABLE;
2508
  ALTER TABLE "PACKAGES" MODIFY ("PKG_NAME" NOT NULL ENABLE);
2509
  ALTER TABLE "PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2510
/
4308 dpurdie 2511
--------------------------------------------------------
2512
--  Constraints for Table REPEAT_SCHEDULE
2513
--------------------------------------------------------
4040 dpurdie 2514
 
4211 dpurdie 2515
  ALTER TABLE "REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") ENABLE;
4040 dpurdie 2516
/
4308 dpurdie 2517
--------------------------------------------------------
2518
--  Constraints for Table PROJECTS
2519
--------------------------------------------------------
4040 dpurdie 2520
 
4211 dpurdie 2521
  ALTER TABLE "PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
2522
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
2523
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2524
/
4308 dpurdie 2525
--------------------------------------------------------
2526
--  Constraints for Table LICENCING
2527
--------------------------------------------------------
4040 dpurdie 2528
 
4211 dpurdie 2529
  ALTER TABLE "LICENCING" MODIFY ("LICENCE" NOT NULL ENABLE);
2530
  ALTER TABLE "LICENCING" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2531
/
4308 dpurdie 2532
--------------------------------------------------------
2533
--  Constraints for Table MESSAGE_BOARD
2534
--------------------------------------------------------
4040 dpurdie 2535
 
4211 dpurdie 2536
  ALTER TABLE "MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") ENABLE;
2537
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
2538
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
2539
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
4040 dpurdie 2540
/
4308 dpurdie 2541
--------------------------------------------------------
2542
--  Constraints for Table PROJECT_ACTION_LOG
2543
--------------------------------------------------------
4040 dpurdie 2544
 
2545
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2546
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2547
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2548
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2549
/
4308 dpurdie 2550
--------------------------------------------------------
2551
--  Constraints for Table ARCHIVE_DATA
2552
--------------------------------------------------------
4040 dpurdie 2553
 
4211 dpurdie 2554
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("PV_ID" NOT NULL ENABLE);
2555
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2556
/
4308 dpurdie 2557
--------------------------------------------------------
2558
--  Constraints for Table VALIDATION_RULES
2559
--------------------------------------------------------
4040 dpurdie 2560
 
4211 dpurdie 2561
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
2562
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
4040 dpurdie 2563
/
4308 dpurdie 2564
--------------------------------------------------------
2565
--  Constraints for Table LICENCES
2566
--------------------------------------------------------
4040 dpurdie 2567
 
4211 dpurdie 2568
  ALTER TABLE "LICENCES" ADD CONSTRAINT "PK_LICENCES" PRIMARY KEY ("LICENCE") ENABLE;
2569
  ALTER TABLE "LICENCES" MODIFY ("NAME" NOT NULL ENABLE);
2570
  ALTER TABLE "LICENCES" MODIFY ("LICENCE" NOT NULL ENABLE);
4040 dpurdie 2571
/
4308 dpurdie 2572
--------------------------------------------------------
2573
--  Constraints for Table MEMBERS_GROUP
2574
--------------------------------------------------------
4040 dpurdie 2575
 
4211 dpurdie 2576
  ALTER TABLE "MEMBERS_GROUP" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2577
/
4308 dpurdie 2578
--------------------------------------------------------
2579
--  Constraints for Table CQ_ISSUES
2580
--------------------------------------------------------
4040 dpurdie 2581
 
4211 dpurdie 2582
  ALTER TABLE "CQ_ISSUES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2583
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_STATE" NOT NULL ENABLE);
2584
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_ID" NOT NULL ENABLE);
2585
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_DB" NOT NULL ENABLE);
2586
  ALTER TABLE "CQ_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2587
/
4308 dpurdie 2588
--------------------------------------------------------
2589
--  Constraints for Table ARCHIVE_ACTION_LOG
2590
--------------------------------------------------------
4040 dpurdie 2591
 
4211 dpurdie 2592
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
2593
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2594
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2595
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2596
/
4308 dpurdie 2597
--------------------------------------------------------
4211 dpurdie 2598
--  Constraints for Table CODE_REVIEWS
4040 dpurdie 2599
--------------------------------------------------------
2600
 
4211 dpurdie 2601
  ALTER TABLE "CODE_REVIEWS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2602
/
4308 dpurdie 2603
--------------------------------------------------------
2604
--  Constraints for Table PLANNED
2605
--------------------------------------------------------
4040 dpurdie 2606
 
4211 dpurdie 2607
  ALTER TABLE "PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") ENABLE;
2608
  ALTER TABLE "PLANNED" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2609
  ALTER TABLE "PLANNED" MODIFY ("PV_ID" NOT NULL ENABLE);
2610
  ALTER TABLE "PLANNED" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2611
/
4308 dpurdie 2612
--------------------------------------------------------
2613
--  Constraints for Table VCS_TYPE
2614
--------------------------------------------------------
4040 dpurdie 2615
 
4211 dpurdie 2616
  ALTER TABLE "VCS_TYPE" ADD CONSTRAINT "VCS_TYPE_PK" PRIMARY KEY ("VCS_TYPE_ID") ENABLE;
2617
  ALTER TABLE "VCS_TYPE" MODIFY ("TAG" NOT NULL ENABLE);
2618
  ALTER TABLE "VCS_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2619
  ALTER TABLE "VCS_TYPE" MODIFY ("VCS_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2620
/
4308 dpurdie 2621
--------------------------------------------------------
2622
--  Constraints for Table BUILD_MACHINES
2623
--------------------------------------------------------
4040 dpurdie 2624
 
4211 dpurdie 2625
  ALTER TABLE "BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") ENABLE;
2626
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_NAME" NOT NULL ENABLE);
2627
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_ID" NOT NULL ENABLE);
4040 dpurdie 2628
/
4308 dpurdie 2629
--------------------------------------------------------
2630
--  Constraints for Table PEGGED_VERSIONS
2631
--------------------------------------------------------
4040 dpurdie 2632
 
4211 dpurdie 2633
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2634
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2635
/
4308 dpurdie 2636
--------------------------------------------------------
2637
--  Constraints for Table DAEMON_INSTRUCTIONS
2638
--------------------------------------------------------
4040 dpurdie 2639
 
4211 dpurdie 2640
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_UK1" UNIQUE ("OP_CODE", "RTAG_ID", "PV_ID") ENABLE;
2641
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PK" PRIMARY KEY ("DAEMON_INSTRUCTIONS_ID") ENABLE;
2642
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("OP_CODE" NOT NULL ENABLE);
2643
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("DAEMON_INSTRUCTIONS_ID" NOT NULL ENABLE);
4040 dpurdie 2644
/
2645
--------------------------------------------------------
4211 dpurdie 2646
--  Constraints for Table WORK_IN_PROGRESS
4040 dpurdie 2647
--------------------------------------------------------
2648
 
4211 dpurdie 2649
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2650
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("PV_ID" NOT NULL ENABLE);
2651
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2652
/
2653
--------------------------------------------------------
4308 dpurdie 2654
--  Constraints for Table BUILD_ENV_DOCUMENTS
2655
--------------------------------------------------------
4040 dpurdie 2656
 
4211 dpurdie 2657
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2658
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2659
/
4308 dpurdie 2660
--------------------------------------------------------
4211 dpurdie 2661
--  Constraints for Table BUILD_ORDER
4040 dpurdie 2662
--------------------------------------------------------
2663
 
4211 dpurdie 2664
  ALTER TABLE "BUILD_ORDER" MODIFY ("PV_ID" NOT NULL ENABLE);
2665
  ALTER TABLE "BUILD_ORDER" MODIFY ("STEP_NUM" NOT NULL ENABLE);
2666
  ALTER TABLE "BUILD_ORDER" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2667
/
4308 dpurdie 2668
--------------------------------------------------------
2669
--  Constraints for Table PACKAGE_DEPENDENCIES
2670
--------------------------------------------------------
4040 dpurdie 2671
 
4211 dpurdie 2672
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2673
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPKG_ID" NOT NULL ENABLE);
2674
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2675
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPV_ID" NOT NULL ENABLE);
2676
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2677
/
4308 dpurdie 2678
--------------------------------------------------------
2679
--  Constraints for Table PROCESSES
2680
--------------------------------------------------------
4040 dpurdie 2681
 
4211 dpurdie 2682
  ALTER TABLE "PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") ENABLE;
2683
  ALTER TABLE "PROCESSES" MODIFY ("PROC_NAME" NOT NULL ENABLE);
2684
  ALTER TABLE "PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
4040 dpurdie 2685
/
4308 dpurdie 2686
--------------------------------------------------------
2687
--  Constraints for Table BUILD_ENVIRONMENTS
2688
--------------------------------------------------------
4040 dpurdie 2689
 
4211 dpurdie 2690
  ALTER TABLE "BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") ENABLE;
2691
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_NAME" NOT NULL ENABLE);
2692
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2693
/
4308 dpurdie 2694
--------------------------------------------------------
2695
--  Constraints for Table DEPRECATED_PACKAGES
2696
--------------------------------------------------------
4040 dpurdie 2697
 
4211 dpurdie 2698
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("COMMENTS" NOT NULL ENABLE);
2699
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2700
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2701
/
2702
--------------------------------------------------------
2703
--  Ref Constraints for Table ABT_ACTION_LOG
2704
--------------------------------------------------------
2705
 
2706
  ALTER TABLE "ABT_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2707
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2708
/
2709
--------------------------------------------------------
2710
--  Ref Constraints for Table ACTION_LOG
2711
--------------------------------------------------------
2712
 
2713
  ALTER TABLE "ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE48" FOREIGN KEY ("ACTTYPE_ID")
2714
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2715
/
2716
--------------------------------------------------------
2717
--  Ref Constraints for Table ADDITIONAL_NOTES
2718
--------------------------------------------------------
2719
 
2720
  ALTER TABLE "ADDITIONAL_NOTES" ADD CONSTRAINT "FK_ADDITION_REF_PV_ID" FOREIGN KEY ("PV_ID")
2721
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2722
/
2723
--------------------------------------------------------
2724
--  Ref Constraints for Table ADVISORY_RIPPLE
2725
--------------------------------------------------------
2726
 
2727
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2728
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2729
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2730
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2731
/
2732
--------------------------------------------------------
2733
--  Ref Constraints for Table AUTOBUILD_FAILURE
2734
--------------------------------------------------------
2735
 
2736
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("PROJ_ID")
2737
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2738
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("VIEW_ID")
2739
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2740
/
2741
--------------------------------------------------------
2742
--  Ref Constraints for Table BUILD_ENV_DOCUMENTS
2743
--------------------------------------------------------
2744
 
2745
  ALTER TABLE "BUILD_ENV_DOCUMENTS" ADD CONSTRAINT "FK_BUILD_E_DOCS_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2746
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2747
/
2748
--------------------------------------------------------
2749
--  Ref Constraints for Table BUILD_MACHINE_CONFIG
2750
--------------------------------------------------------
2751
 
2752
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "FK_BM_GBE_ID" FOREIGN KEY ("GBE_ID")
2753
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2754
/
2755
--------------------------------------------------------
2756
--  Ref Constraints for Table BUILD_ORDER
2757
--------------------------------------------------------
2758
 
2759
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_PV_ID" FOREIGN KEY ("PV_ID")
2760
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2761
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2762
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2763
/
2764
--------------------------------------------------------
2765
--  Ref Constraints for Table BUILD_STANDARDS_ADDENDUM
2766
--------------------------------------------------------
2767
 
2768
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_R01" FOREIGN KEY ("BS_ID")
2769
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2770
/
2771
--------------------------------------------------------
2772
--  Ref Constraints for Table CODE_REVIEWS
2773
--------------------------------------------------------
2774
 
2775
  ALTER TABLE "CODE_REVIEWS" ADD CONSTRAINT "FK_CODE_REV_REF_PV_ID" FOREIGN KEY ("PV_ID")
2776
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2777
/
2778
--------------------------------------------------------
2779
--  Ref Constraints for Table CODE_REVIEW_URL
2780
--------------------------------------------------------
2781
 
2782
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PACKAGE_V_FK1" FOREIGN KEY ("PV_ID")
2783
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2784
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PROJECT_V_FK1" FOREIGN KEY ("PROJ_ID")
2785
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2786
/
2787
--------------------------------------------------------
2788
--  Ref Constraints for Table CQ_ISSUES
2789
--------------------------------------------------------
2790
 
2791
  ALTER TABLE "CQ_ISSUES" ADD CONSTRAINT "FK_CQ_PV_ID" FOREIGN KEY ("PV_ID")
2792
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2793
/
2794
--------------------------------------------------------
2795
--  Ref Constraints for Table DAEMON_ACTION_LOG
2796
--------------------------------------------------------
2797
 
2798
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2799
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2800
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("ACTTYPE_ID")
2801
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2802
/
2803
--------------------------------------------------------
2804
--  Ref Constraints for Table DAEMON_INSTRUCTIONS
2805
--------------------------------------------------------
2806
 
2807
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PV_ID_FK" FOREIGN KEY ("PV_ID")
2808
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2809
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_RTAG_ID_FK" FOREIGN KEY ("RTAG_ID")
2810
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2811
/
2812
--------------------------------------------------------
2813
--  Ref Constraints for Table DASH_BOARD
2814
--------------------------------------------------------
2815
 
2816
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("PROJ_ID")
2817
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2818
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("RTAG_ID")
2819
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2820
/
2821
--------------------------------------------------------
2822
--  Ref Constraints for Table DO_NOT_RIPPLE
2823
--------------------------------------------------------
2824
 
2825
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2826
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2827
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2828
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2829
/
2830
--------------------------------------------------------
2831
--  Ref Constraints for Table GBE_MACHTYPE
2832
--------------------------------------------------------
2833
 
2834
  ALTER TABLE "GBE_MACHTYPE" ADD CONSTRAINT "GBE_MACHTYPE_BUILD_MACHIN_FK1" FOREIGN KEY ("BM_ID")
2835
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2836
/
2837
--------------------------------------------------------
2838
--  Ref Constraints for Table IGNORE_WARNINGS
2839
--------------------------------------------------------
2840
 
2841
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_DPV_ID" FOREIGN KEY ("DPV_ID")
2842
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2843
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_PV_ID" FOREIGN KEY ("PV_ID")
2844
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2845
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2846
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2847
/
2848
--------------------------------------------------------
2849
--  Ref Constraints for Table JIRA_ISSUES
2850
--------------------------------------------------------
2851
 
2852
  ALTER TABLE "JIRA_ISSUES" ADD CONSTRAINT "FK_JIRA_PV_ID" FOREIGN KEY ("PV_ID")
2853
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2854
/
2855
--------------------------------------------------------
2856
--  Ref Constraints for Table LICENCING
2857
--------------------------------------------------------
2858
 
2859
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("PV_ID")
2860
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2861
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("LICENCE")
2862
	  REFERENCES "LICENCES" ("LICENCE") ENABLE;
2863
/
2864
--------------------------------------------------------
2865
--  Ref Constraints for Table MEMBERS_GROUP
2866
--------------------------------------------------------
2867
 
2868
  ALTER TABLE "MEMBERS_GROUP" ADD FOREIGN KEY ("GROUP_EMAIL_ID")
2869
	  REFERENCES "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") ENABLE;
2870
/
2871
--------------------------------------------------------
2872
--  Ref Constraints for Table NOTIFICATION_HISTORY
2873
--------------------------------------------------------
2874
 
2875
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NH_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2876
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2877
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NK_PV_ID" FOREIGN KEY ("PV_ID")
2878
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2879
/
2880
--------------------------------------------------------
2881
--  Ref Constraints for Table PACKAGE_BUILD_ENV
2882
--------------------------------------------------------
2883
 
2884
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2885
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2886
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_PKG_VERSION" FOREIGN KEY ("PV_ID")
2887
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2888
/
2889
--------------------------------------------------------
2890
--  Ref Constraints for Table PACKAGE_BUILD_INFO
2891
--------------------------------------------------------
2892
 
2893
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("PV_ID")
2894
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2895
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("BM_ID")
2896
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2897
/
2898
--------------------------------------------------------
2899
--  Ref Constraints for Table PACKAGE_DOCUMENTS
2900
--------------------------------------------------------
2901
 
2902
  ALTER TABLE "PACKAGE_DOCUMENTS" ADD CONSTRAINT "FK_PKGDOCS_REF_PV" FOREIGN KEY ("PV_ID")
2903
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2904
/
2905
--------------------------------------------------------
2906
--  Ref Constraints for Table PACKAGE_INTEREST
2907
--------------------------------------------------------
2908
 
2909
  ALTER TABLE "PACKAGE_INTEREST" ADD FOREIGN KEY ("PROJ_ID")
2910
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2911
/
2912
--------------------------------------------------------
2913
--  Ref Constraints for Table PACKAGE_METRICS
2914
--------------------------------------------------------
2915
 
2916
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "FK_PACKAGE_METRICS_PV_ID" FOREIGN KEY ("PV_ID")
2917
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2918
/
2919
--------------------------------------------------------
2920
--  Ref Constraints for Table PACKAGE_PATCHES
2921
--------------------------------------------------------
2922
 
2923
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PATCH_ID" FOREIGN KEY ("PATCH_ID")
2924
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2925
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PV_ID" FOREIGN KEY ("PV_ID")
2926
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2927
/
2928
--------------------------------------------------------
2929
--  Ref Constraints for Table PACKAGE_PROCESSES
2930
--------------------------------------------------------
2931
 
2932
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R01" FOREIGN KEY ("PV_ID")
2933
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2934
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R02" FOREIGN KEY ("PROC_ID")
2935
	  REFERENCES "PROCESSES" ("PROC_ID") ENABLE;
2936
/
2937
--------------------------------------------------------
2938
--  Ref Constraints for Table PACKAGE_VERSIONS
2939
--------------------------------------------------------
2940
 
2941
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PACKAGE_VERSIONS_VCS_TYPE" FOREIGN KEY ("VCS_TYPE_ID")
2942
	  REFERENCES "VCS_TYPE" ("VCS_TYPE_ID") ENABLE;
2943
  ALTER TABLE "PACKAGE_VERSIONS" ADD FOREIGN KEY ("BS_ID")
2944
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2945
/
2946
--------------------------------------------------------
2947
--  Ref Constraints for Table PEGGED_VERSIONS
2948
--------------------------------------------------------
2949
 
2950
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_PACKAG_FK1" FOREIGN KEY ("PV_ID")
2951
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2952
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_RELEAS_FK1" FOREIGN KEY ("RTAG_ID")
2953
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2954
/
2955
--------------------------------------------------------
2956
--  Ref Constraints for Table PLANNED
2957
--------------------------------------------------------
2958
 
2959
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFPACKAGE_VERSIONS54" FOREIGN KEY ("PV_ID")
2960
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2961
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFRELEASE_TAGS53" FOREIGN KEY ("RTAG_ID")
2962
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2963
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFVIEWS55" FOREIGN KEY ("VIEW_ID")
2964
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2965
/
2966
--------------------------------------------------------
2967
--  Ref Constraints for Table PLANNED_VERSIONS
2968
--------------------------------------------------------
2969
 
2970
  ALTER TABLE "PLANNED_VERSIONS" ADD FOREIGN KEY ("PKG_ID")
2971
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2972
/
2973
--------------------------------------------------------
2974
--  Ref Constraints for Table PRODUCT_COMPONENTS
2975
--------------------------------------------------------
2976
 
2977
  ALTER TABLE "PRODUCT_COMPONENTS" ADD CONSTRAINT "REFPACKAGE_VERSIONS49" FOREIGN KEY ("PV_ID")
2978
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2979
/
2980
--------------------------------------------------------
2981
--  Ref Constraints for Table PROJECT_ACTION_LOG
2982
--------------------------------------------------------
2983
 
2984
  ALTER TABLE "PROJECT_ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE63" FOREIGN KEY ("ACTTYPE_ID")
2985
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2986
  ALTER TABLE "PROJECT_ACTION_LOG" ADD FOREIGN KEY ("RTAG_ID")
2987
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") DISABLE;
2988
/
2989
--------------------------------------------------------
2990
--  Ref Constraints for Table RELEASE_COMPONENTS
2991
--------------------------------------------------------
2992
 
2993
  ALTER TABLE "RELEASE_COMPONENTS" ADD CONSTRAINT "FK_RCONT_PV_ID" FOREIGN KEY ("PV_ID")
2994
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2995
/
2996
--------------------------------------------------------
2997
--  Ref Constraints for Table RELEASE_CONFIG
2998
--------------------------------------------------------
2999
 
3000
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("RTAG_ID")
3001
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
3002
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("GBE_ID")
3003
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
3004
/
3005
--------------------------------------------------------
3006
--  Ref Constraints for Table RELEASE_CONTENT
3007
--------------------------------------------------------
3008
 
3009
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PKG_ID")
3010
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
3011
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PRODUCT_STATE")
3012
	  REFERENCES "PRODUCT_STATES" ("STATE_ID") ENABLE;
3013
/
3014
--------------------------------------------------------
3015
--  Ref Constraints for Table RELEASE_LINKS
3016
--------------------------------------------------------
3017
 
3018
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS56" FOREIGN KEY ("RTAG_ID")
3019
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
3020
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS58" FOREIGN KEY ("REF_RTAG_ID")
3021
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
3022
/
3023
--------------------------------------------------------
3024
--  Ref Constraints for Table RELEASE_METRICS
3025
--------------------------------------------------------
3026
 
3027
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "FK_RELEASE_METRICS_RTAG_ID" FOREIGN KEY ("RTAG_ID")
3028
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
3029
/
3030
--------------------------------------------------------
3031
--  Ref Constraints for Table RUNTIME_DEPENDENCIES
3032
--------------------------------------------------------
3033
 
3034
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_PV_ID" FOREIGN KEY ("PV_ID")
3035
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
3036
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_RTD_ID" FOREIGN KEY ("RTD_ID")
3037
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
3038
/
3039
--------------------------------------------------------
3040
--  Ref Constraints for Table RUN_LEVEL
3041
--------------------------------------------------------
3042
 
3043
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("RCON_ID")
3044
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
3045
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("CURRENT_PKG_ID_BEING_BUILT")
3046
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
3047
/
3048
--------------------------------------------------------
3049
--  Ref Constraints for Table UNIT_TESTS
3050
--------------------------------------------------------
3051
 
3052
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_PV_ID" FOREIGN KEY ("PV_ID")
3053
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
3054
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_TEST_TYPES" FOREIGN KEY ("TEST_TYPES_FK")
3055
	  REFERENCES "TEST_TYPES" ("TEST_TYPE_ID") ENABLE;
3056
/
3057
--------------------------------------------------------
3058
--  Ref Constraints for Table VTREES_WORLD
3059
--------------------------------------------------------
3060
 
3061
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_VTREE_ID" FOREIGN KEY ("VTREE_ID")
3062
	  REFERENCES "VTREES" ("VTREE_ID") ENABLE;
3063
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_WORLD_ID" FOREIGN KEY ("WORLD_ID")
3064
	  REFERENCES "WORLDS" ("WORLD_ID") ENABLE;
3065
/
3066
--------------------------------------------------------
3067
--  Ref Constraints for Table WORK_IN_PROGRESS
3068
--------------------------------------------------------
3069
 
3070
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFPACKAGE_VERSIONS51" FOREIGN KEY ("PV_ID")
3071
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
3072
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFRELEASE_TAGS50" FOREIGN KEY ("RTAG_ID")
3073
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
3074
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFVIEWS52" FOREIGN KEY ("VIEW_ID")
3075
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
3076
/
3077
--------------------------------------------------------
3078
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
3079
--------------------------------------------------------
3080
 
1373 dpurdie 3081
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
3082
 
3083
/* ---------------------------------------------------------------------------
3084
    Version: 3.0.0
3085
   --------------------------------------------------------------------------- */
3086
 
3087
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
3088
	ProjId NUMBER;
3089
	RowCount NUMBER;
3090
	cReleaseMode CHAR(1);
3091
 
3092
BEGIN
3093
 
3094
	--RETURN 1;
3095
 
3096
 
3097
	/*--------------- Business Rules Here -------------------*/
3098
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
3099
		RETURN 0;
3100
	END IF;
3101
	/*-------------------------------------------------------*/
3102
 
3103
 
3104
 
3105
 
3106
 
3107
 
3108
	/*-- First Check. See if package is used through release reference --*/
3109
	SELECT COUNT(rc.PV_ID) INTO RowCount
3110
	  FROM (
3111
	  		SELECT rl.REF_RTAG_ID
3112
			  FROM RELEASE_LINKS rl
3113
			 WHERE rl.RTAG_ID = nRtagId
3114
	  		) rl,
3115
			RELEASE_CONTENT rc
3116
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
3117
	    AND rc.PV_ID = nPvId;			
3118
 
3119
 
3120
	-- Decide if package can be edited  
3121
	IF RowCount > 0 THEN
3122
		-- Package is referenced from other release, hence cannot be edited
3123
		RETURN 0;	
3124
 
3125
	ELSE
3126
 
3127
		-- Check is only done for releases in restrictive mode
3128
		SELECT rt.OFFICIAL INTO cReleaseMode
3129
		  FROM RELEASE_TAGS rt
3130
		 WHERE rt.RTAG_ID = nRtagId;
3131
 
3132
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
3133
			-- Do not do any firther checking,
3134
			-- Package is editable here
3135
			RETURN 1;
3136
		END IF;	
3137
 
3138
	END IF;
3139
 
3140
 
3141
 
3142
 
3143
	/*-- Further checking --*/
3144
	-- Get proj_id
3145
	SELECT rt.PROJ_ID  INTO  ProjId
3146
	  FROM RELEASE_TAGS rt
3147
	 WHERE rt.RTAG_ID = nRtagId;
3148
 
3149
 
3150
 
3151
	BEGIN
3152
 
3153
		-- Get v_ext
3154
		SELECT pv.V_EXT  INTO  Vext
3155
		  FROM PACKAGE_VERSIONS pv
3156
		 WHERE pv.PV_ID = nPvId;  
3157
 
3158
		EXCEPTION
3159
	    	WHEN NO_DATA_FOUND THEN
3160
	       		Vext := NULL;
3161
 
3162
	END;	 
3163
 
3164
 
3165
	--Temp Hack for Step Project
3166
	IF ProjId != 281 THEN
3167
		-- Find if package can be edited in this project
3168
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
3169
	 		FROM PROJECT_EXTENTIONS pe
3170
			WHERE pe.PROJ_ID != ProjId  
3171
	  		AND pe.EXT_NAME = VExt;
3172
	END IF;		
3173
 
3174
 
3175
	-- Decide if package can be edited  
3176
	IF RowCount > 0 THEN
3177
		-- Package extension is found in other projects, hece NOT EDITABLE
3178
		RETURN 0;
3179
	ELSE
3180
		RETURN 1;	
3181
	END IF;
3182
 
3183
 
3184
END CAN_EDIT_PKG_IN_PROJECT;
4040 dpurdie 3185
 
1374 dpurdie 3186
/
1373 dpurdie 3187
 
4040 dpurdie 3188
/
3189
--------------------------------------------------------
3190
--  DDL for Function DT_ADDUSEROBJECT
3191
--------------------------------------------------------
3192
 
3959 dpurdie 3193
  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 3194
 
3959 dpurdie 3195
/
3196
 
4040 dpurdie 3197
/
3198
--------------------------------------------------------
3199
--  DDL for Function GET_AUTOMATED_LABEL
3200
--------------------------------------------------------
3201
 
3959 dpurdie 3202
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
3203
 
3204
/* ---------------------------------------------------------------------------
3205
    Version: 3.0.0
3206
   --------------------------------------------------------------------------- */
3207
 
4211 dpurdie 3208
  sPkgName VARCHAR2(4000);
3209
  sPkgVersion VARCHAR2(4000);
3210
  sVext VARCHAR2(4000);
3211
  cChangeType CHAR;
3212
  cBuildType CHAR;
3213
 
3959 dpurdie 3214
 
1373 dpurdie 3215
BEGIN
3216
 
3959 dpurdie 3217
	-- Get package details
4211 dpurdie 3218
	SELECT pkg.PKG_NAME, pv.V_EXT, pv.build_type, pv.change_type, pv.pkg_version INTO sPkgName, sVext,cBuildType, cChangeType, sPkgVersion  
3959 dpurdie 3219
	  FROM PACKAGE_VERSIONS pv,
3220
	  	   PACKAGES pkg
3221
	 WHERE pv.PKG_ID = pkg.PKG_ID
3222
	   AND pv.PV_ID = nPvId;
3223
 
4211 dpurdie 3224
  -- Generate Label for manually built package
3225
  If cBuildType = 'M' Then
3226
    return (sPkgName ||'_'|| sPkgVersion );
3227
  End If;
3959 dpurdie 3228
 
4211 dpurdie 3229
  -- Generate Label for automated build with specified package version
3230
  IF cchangetype = 'F' Then
3231
    return (sPkgName ||'_'|| sPkgVersion ||'.WIP');
3232
  End If;
3233
 
3959 dpurdie 3234
	-- Generate Label for automated build
3235
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
3236
 
3237
END GET_AUTOMATED_LABEL;
4040 dpurdie 3238
 
1374 dpurdie 3239
/
1373 dpurdie 3240
 
4040 dpurdie 3241
/
3242
--------------------------------------------------------
3243
--  DDL for Function GET_BUILD_NUMBER
3244
--------------------------------------------------------
3245
 
1373 dpurdie 3246
  CREATE OR REPLACE FUNCTION "GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
3247
IS
3248
/* ---------------------------------------------------------------------------
3249
    Version: 1.0.0
3250
   --------------------------------------------------------------------------- */
3251
BEGIN
3252
    IF is_number(s_version) AND LENGTH(s_version) > 3
3253
    THEN
3254
        RETURN MOD(TO_NUMBER(s_version), 1000);
3255
    ELSE
3256
        RETURN 0;
3257
    END IF;
3258
END get_build_number;
4040 dpurdie 3259
 
1374 dpurdie 3260
/
1373 dpurdie 3261
 
4040 dpurdie 3262
/
3263
--------------------------------------------------------
3264
--  DDL for Function GET_PATCH_VERSION
3265
--------------------------------------------------------
3266
 
3959 dpurdie 3267
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
1373 dpurdie 3268
IS
3269
/* ---------------------------------------------------------------------------
3959 dpurdie 3270
    Version: 1.0.0
1373 dpurdie 3271
   --------------------------------------------------------------------------- */
3272
BEGIN
3959 dpurdie 3273
    IF is_number(s_version) AND LENGTH(s_version) > 3
1373 dpurdie 3274
    THEN
3959 dpurdie 3275
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
1373 dpurdie 3276
    ELSE
3959 dpurdie 3277
        RETURN s_version;
1373 dpurdie 3278
    END IF;
3959 dpurdie 3279
END get_patch_version;
4040 dpurdie 3280
 
1374 dpurdie 3281
/
1373 dpurdie 3282
 
4040 dpurdie 3283
/
3284
--------------------------------------------------------
3285
--  DDL for Function GET_PV_FIRST_MODIFIED
3286
--------------------------------------------------------
3287
 
3959 dpurdie 3288
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
3289
  ret DATE;
1373 dpurdie 3290
BEGIN
3959 dpurdie 3291
  SELECT q.modified_stamp
3292
    INTO ret
3293
    FROM (
3294
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
3295
              FROM package_versions pvc
3296
              START WITH pvc.pv_id = v_pv_id
3297
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
3298
          ) Q
3299
  WHERE q.change_type IS NOT NULL
3300
    AND rownum = 1
3301
  ORDER BY q.lvl;
3302
 
3303
  RETURN ret;
3304
END;
4040 dpurdie 3305
 
1374 dpurdie 3306
/
1373 dpurdie 3307
 
4040 dpurdie 3308
/
3309
--------------------------------------------------------
3310
--  DDL for Function GET_V_EXT
3311
--------------------------------------------------------
3312
 
3959 dpurdie 3313
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
3314
 
1373 dpurdie 3315
/* ---------------------------------------------------------------------------
3959 dpurdie 3316
    Version: 3.0.0
1373 dpurdie 3317
   --------------------------------------------------------------------------- */
3959 dpurdie 3318
 
3319
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
3320
    lastDot NUMBER;
3321
 
1373 dpurdie 3322
BEGIN
3959 dpurdie 3323
    lastDot := INSTR (SSpkg_version, '.', -1);
3324
 
3325
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
1373 dpurdie 3326
    THEN
3959 dpurdie 3327
        -- YES dot separator found --
3328
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
3329
 
3330
        IF IS_VERSION_EXTENSION ( SSV_EXT )
3331
        THEN
3332
            RETURN SSV_EXT;
3333
        ELSE
3334
            RETURN NULL;
3335
        END IF;
3336
 
1373 dpurdie 3337
    ELSE
3959 dpurdie 3338
        -- NO dot separator found --
3339
        RETURN NULL;
1373 dpurdie 3340
    END IF;
3959 dpurdie 3341
 
3342
END GET_V_EXT;
4040 dpurdie 3343
 
1374 dpurdie 3344
/
1373 dpurdie 3345
 
4040 dpurdie 3346
/
3347
--------------------------------------------------------
3348
--  DDL for Function IN_LIST_NUMBER
3349
--------------------------------------------------------
3350
 
3959 dpurdie 3351
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3352
 
3353
/* ---------------------------------------------------------------------------
3354
    Version: 3.0.0
3355
   --------------------------------------------------------------------------- */
3356
 
3357
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3358
	pos				   NUMBER;
3959 dpurdie 3359
	in_list			   VARCHAR2(4000) := sInList || ',';
1373 dpurdie 3360
 
3361
BEGIN
3362
 
3363
	IF NOT sInList IS NULL
3364
	THEN
3365
		LOOP
3366
	        EXIT WHEN in_list IS NULL;
3367
	        pos := INSTR ( in_list, ',' );
3368
	        sync_rtags.extend;
3369
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3370
	        in_list := SUBSTR ( in_list, pos+1 );
3371
		END LOOP;
3372
	END IF;
3373
 
3374
	RETURN sync_rtags;
3959 dpurdie 3375
END IN_LIST_NUMBER;
4040 dpurdie 3376
 
1374 dpurdie 3377
/
1373 dpurdie 3378
 
4040 dpurdie 3379
/
3380
--------------------------------------------------------
3381
--  DDL for Function IN_LIST_NUMBER2
3382
--------------------------------------------------------
3383
 
3959 dpurdie 3384
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3385
 
3386
/* ---------------------------------------------------------------------------
3387
    Version: 3.0.0
3388
   --------------------------------------------------------------------------- */
3389
 
3390
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3391
	pos				   NUMBER;
3959 dpurdie 3392
	in_list			   VARCHAR2(32767) := sInList || ',';
1373 dpurdie 3393
 
3394
BEGIN
3395
 
3396
	IF NOT sInList IS NULL
3397
	THEN
3398
		LOOP
3399
	        EXIT WHEN in_list IS NULL;
3400
	        pos := INSTR ( in_list, ',' );
3401
	        sync_rtags.extend;
3402
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3403
	        in_list := SUBSTR ( in_list, pos+1 );
3404
		END LOOP;
3405
	END IF;
3406
 
3407
	RETURN sync_rtags;
3959 dpurdie 3408
END IN_LIST_NUMBER2;
4040 dpurdie 3409
 
1374 dpurdie 3410
/
1373 dpurdie 3411
 
4040 dpurdie 3412
/
3413
--------------------------------------------------------
3414
--  DDL for Function IN_LIST_VARCHAR2
3415
--------------------------------------------------------
3416
 
1373 dpurdie 3417
  CREATE OR REPLACE FUNCTION "IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3418
 
3419
/* ---------------------------------------------------------------------------
3420
    Version: 3.1
3421
   --------------------------------------------------------------------------- */
3422
 
3423
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3424
	pos				   NUMBER;
3425
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3426
	val				   VARCHAR2(4000);
3427
 
3428
BEGIN
3429
 
3430
	IF NOT sInList IS NULL
3431
	THEN
3432
		LOOP
3433
	        EXIT WHEN in_list IS NULL;
3434
	        pos := INSTR ( in_list, cSeparator );
3435
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3436
 
3437
			IF (NOT val IS NULL) THEN
3438
		        cItemCollection.extend;
3439
		        cItemCollection(cItemCollection.count) := val;
3440
			END IF;
3441
 
3442
	        in_list := SUBSTR ( in_list, pos+1 );
3443
		END LOOP;
3444
	END IF;
3445
 
3446
	RETURN cItemCollection;
3447
END IN_LIST_VARCHAR2;
4040 dpurdie 3448
 
1374 dpurdie 3449
/
1373 dpurdie 3450
 
4040 dpurdie 3451
/
3452
--------------------------------------------------------
3453
--  DDL for Function IS_NUMBER
3454
--------------------------------------------------------
3455
 
3959 dpurdie 3456
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3457
IS
3458
   temp_num NUMBER;
3459
/* ---------------------------------------------------------------------------
3460
    Version: 1.0.0
3461
   --------------------------------------------------------------------------- */
3462
BEGIN
3463
   temp_num := TO_NUMBER(p_val);
3464
   RETURN true;
3465
EXCEPTION WHEN VALUE_ERROR THEN
3466
   RETURN false;
3467
END IS_NUMBER;
4040 dpurdie 3468
 
3959 dpurdie 3469
/
1373 dpurdie 3470
 
4040 dpurdie 3471
/
3472
--------------------------------------------------------
3473
--  DDL for Function IS_VERSION_EXTENSION
3474
--------------------------------------------------------
3475
 
3959 dpurdie 3476
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3477
IS
3478
/* ---------------------------------------------------------------------------
3479
    Version: 3.0.0
3480
   --------------------------------------------------------------------------- */
1373 dpurdie 3481
 
3959 dpurdie 3482
BEGIN
3483
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3484
    THEN
3485
        RETURN FALSE;
3486
    ELSE
3487
        RETURN TRUE;
3488
    END IF;
1373 dpurdie 3489
 
3959 dpurdie 3490
END IS_VERSION_EXTENSION;
4040 dpurdie 3491
 
1374 dpurdie 3492
/
1373 dpurdie 3493
 
4040 dpurdie 3494
/
3495
--------------------------------------------------------
3496
--  DDL for Function ORA_SYSDATE
3497
--------------------------------------------------------
3498
 
3959 dpurdie 3499
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
3500
RETURN DATE
1373 dpurdie 3501
IS
3959 dpurdie 3502
/* ---------------------------------------------------------------------------
3503
    Version: 3.0.0
3504
   --------------------------------------------------------------------------- */
3505
BEGIN
1373 dpurdie 3506
 
3959 dpurdie 3507
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3508
END ORA_SYSDATE;
4040 dpurdie 3509
 
3959 dpurdie 3510
/
1373 dpurdie 3511
 
4040 dpurdie 3512
/
3513
--------------------------------------------------------
3514
--  DDL for Function ORA_SYSDATETIME
3515
--------------------------------------------------------
3516
 
3959 dpurdie 3517
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
3518
RETURN DATE
3519
IS
3520
/* ---------------------------------------------------------------------------
3521
    Version: 3.0.0
3522
   --------------------------------------------------------------------------- */
3523
BEGIN
1373 dpurdie 3524
 
3959 dpurdie 3525
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3526
END ORA_SYSDATETIME;
4040 dpurdie 3527
 
3959 dpurdie 3528
/
1373 dpurdie 3529
 
4040 dpurdie 3530
/
3531
--------------------------------------------------------
3532
--  DDL for Function PERL_DBD_TESTFUNC
3533
--------------------------------------------------------
3534
 
3959 dpurdie 3535
  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 3536
 
1374 dpurdie 3537
/
1373 dpurdie 3538
 
4040 dpurdie 3539
/
3540
--------------------------------------------------------
3541
--  DDL for Function RELEASE_MODE
3542
--------------------------------------------------------
3543
 
3959 dpurdie 3544
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
1373 dpurdie 3545
 
3959 dpurdie 3546
/* ---------------------------------------------------------------------------
3547
    Version: 3.0.0
3548
   --------------------------------------------------------------------------- */
1373 dpurdie 3549
 
3959 dpurdie 3550
   returnValue CHAR(1);
1373 dpurdie 3551
 
3959 dpurdie 3552
BEGIN
1373 dpurdie 3553
 
3959 dpurdie 3554
    /*--------------- Business Rules Here -------------------*/
3555
	/*-------------------------------------------------------*/
3556
 
3557
	-- Get release mode
3558
	SELECT rt.OFFICIAL INTO returnValue
3559
	  FROM RELEASE_TAGS rt
3560
	 WHERE rt.RTAG_ID = nRtagId;
3561
 
3562
	RETURN returnValue;
3563
 
3564
END RELEASE_MODE;
4040 dpurdie 3565
 
1374 dpurdie 3566
/
1373 dpurdie 3567
 
4040 dpurdie 3568
/
3569
--------------------------------------------------------
3570
--  DDL for Package PK_APP_UTILS
3571
--------------------------------------------------------
3572
 
1373 dpurdie 3573
  CREATE OR REPLACE PACKAGE "PK_APP_UTILS" IS
3574
/*
3575
------------------------------
3576
||  Last Modified:  S.Vukovic
3577
||  Modified Date:  26/Apr/2005
3578
||  Spec Version:   1.0
3579
------------------------------
3580
*/
3581
 
3582
	TYPE typeCur IS REF CURSOR;
3583
 
3584
    /*================================================================================================*/
3585
 
3586
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
3587
 
3588
	/*================================================================================================*/
3589
 
3590
END PK_APP_UTILS;
4040 dpurdie 3591
 
1374 dpurdie 3592
/
1373 dpurdie 3593
 
4040 dpurdie 3594
/
3595
--------------------------------------------------------
3596
--  DDL for Package PK_ARCHIVE
3597
--------------------------------------------------------
3598
 
3959 dpurdie 3599
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1373 dpurdie 3600
IS
3959 dpurdie 3601
/*
3602
------------------------------
3603
||  Author:  Rupesh Solanki
3604
||  Date:    26 October 2006
3605
||  Version:   1.0
3606
------------------------------
3607
*/
1373 dpurdie 3608
 
3959 dpurdie 3609
   /*================================================================================================*/
3610
   PROCEDURE populate_packages_table;
3611
 
3612
   PROCEDURE populate_archive_data_table (
3613
      nrtagid   IN   release_tags.rtag_id%TYPE
3614
   );
1373 dpurdie 3615
 
3959 dpurdie 3616
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1373 dpurdie 3617
 
3959 dpurdie 3618
   PROCEDURE migrate_rtag_to_archive_schema (
3619
      nrtagid   IN   release_tags.rtag_id%TYPE
3620
   );
1373 dpurdie 3621
 
3959 dpurdie 3622
   PROCEDURE clean_up_archive_data_table (
3623
      nrtagid   IN   release_tags.rtag_id%TYPE
3624
   );
1373 dpurdie 3625
 
3959 dpurdie 3626
   PROCEDURE write_action_log (
3627
      nuserid   IN   NUMBER,
3628
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 3629
   );
3630
/*================================================================================================*/
3959 dpurdie 3631
END pk_archive;
4040 dpurdie 3632
 
1374 dpurdie 3633
/
1373 dpurdie 3634
 
4040 dpurdie 3635
/
3636
--------------------------------------------------------
3637
--  DDL for Package PK_BUILDAPI
3638
--------------------------------------------------------
3639
 
1373 dpurdie 3640
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI" 
3641
IS
3642
   /*================================================================================================*/
3643
   PROCEDURE add_product_component (
3644
      npvid           IN   NUMBER,
3645
      sosname         IN   VARCHAR2,
3646
      sorigfilepath   IN   VARCHAR2,
3647
      sfilename       IN   VARCHAR2,
3648
      sdestfilepath   IN   VARCHAR2,
3649
      nbytesize       IN   NUMBER,
3650
      scrccksum       IN   VARCHAR2
3651
   );
3652
 
3653
   PROCEDURE remove_all_product_components (
3654
      npvid     IN   NUMBER,
3655
      sosname   IN   VARCHAR2
3656
   );
3657
 
3658
   /*================================================================================================*/
3659
   FUNCTION get_osid (sosname IN VARCHAR2)
3660
      RETURN NUMBER;
3661
 
4308 dpurdie 3662
  /*================================================================================================*/
3663
    PROCEDURE update_build_service_info (
1373 dpurdie 3664
      sdatabaseserver   IN   VARCHAR2,
3665
      sarchiveserver    IN   VARCHAR2,
3666
      smailserver       IN   VARCHAR2,
3667
      smailsender       IN   VARCHAR2,
4211 dpurdie 3668
      faultmlist        IN   VARCHAR2,
1373 dpurdie 3669
      sdiskspace        IN   VARCHAR2,
3670
      ssbommanagement   IN   VARCHAR2
3671
   );
3672
 
3673
   /*================================================================================================*/
4040 dpurdie 3674
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3675
 
3676
   /*================================================================================================*/
3677
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
3678
 
3679
   /*================================================================================================*/
4040 dpurdie 3680
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3681
 
4040 dpurdie 3682
  /*================================================================================================*/
3683
   PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2);
3684
 
1373 dpurdie 3685
   /*================================================================================================*/
4040 dpurdie 3686
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER);
3687
 
3688
   /*================================================================================================*/
3689
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2);
3690
 
3691
   /*================================================================================================*/
1373 dpurdie 3692
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
4308 dpurdie 3693
 
1373 dpurdie 3694
   /*================================================================================================*/
4308 dpurdie 3695
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2);
1373 dpurdie 3696
 
3697
   /*================================================================================================*/
3698
   PROCEDURE insert_schedule_info (
3699
      dschedulepause     IN   DATE,
3700
      dscheduleresume    IN   DATE,
3701
      crepeat            IN   VARCHAR2,
3702
      cindefinitepause   IN   VARCHAR2
3703
   );
3704
 
3705
   /*================================================================================================*/
3706
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
3707
 
3708
   /*================================================================================================*/
3709
   PROCEDURE set_infinite_pause;
3710
 
3711
   /*================================================================================================*/
3712
   PROCEDURE set_resume;
3713
 
3714
   /*================================================================================================*/
3715
   PROCEDURE delete_out_of_date_schedule;
3716
 
3717
   /*================================================================================================*/
3718
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
3719
 
3720
   /*================================================================================================*/
3721
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
3722
 
3723
   /*================================================================================================*/
3724
   PROCEDURE set_daemon_disable (nrconid NUMBER);
3725
 
3726
   /*================================================================================================*/
3727
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER);
3728
 
3729
   /*================================================================================================*/
3730
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER );
3731
   /*================================================================================================*/
3732
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER );
3733
   /*================================================================================================*/
3734
   FUNCTION get_daemon_inst(
3735
      nRtag_id IN NUMBER,
3736
      nInst_id IN OUT NUMBER,
3737
      nOp_code IN OUT NUMBER,
3738
      nPv_id OUT NUMBER,
3739
      nUser_id OUT NUMBER,
3740
      nInProgress OUT NUMBER
3741
   ) RETURN NUMBER;
3742
   /*================================================================================================*/
3743
   PROCEDURE cleanup_stranded_daemon_insts;
3744
   /*================================================================================================*/
3745
   PROCEDURE insert_daemon_inst(
3746
      nOp_code IN NUMBER,
3747
      nRtag_id IN NUMBER,
3748
      nPv_id IN NUMBER,
3749
      nSchedDate IN DATE,
3750
      nRepeatSecs IN NUMBER,
3751
      nAddedDate IN DATE,
3752
      nUser_id IN NUMBER
3753
   );
3754
   /*================================================================================================*/
3755
   PROCEDURE del_daemon_inst( nInstId IN NUMBER );
3756
   /*================================================================================================*/
3757
   PROCEDURE del_daemon_inst_by_rtag_pvid(
3758
      nOp_code IN NUMBER,
3759
      nRtag_id IN NUMBER,
3760
      nPv_id IN NUMBER
3761
   );
3762
   /*================================================================================================*/
3763
   PROCEDURE update_daemon_inst(
3764
      nInstId IN NUMBER,
3765
      nOp_code IN NUMBER,
3766
      nRtag_id IN NUMBER,
3767
      nPv_id IN NUMBER,
3768
      nSchedDate IN DATE,
3769
      nRepeatSecs IN NUMBER,
3770
      nAddedDate IN DATE,
3771
      nUser_id IN NUMBER
3772
   );
3773
   /*================================================================================================*/
3774
   FUNCTION daemon_ops_for_rtag_pvid(
3775
      nRtag_id IN NUMBER,
3776
      nPv_id IN NUMBER
3777
   ) RETURN VARCHAR2;
3778
   /*================================================================================================*/
3779
   FUNCTION daemon_ops_for_rtag(
3780
      nRtag_id IN NUMBER
3781
   ) RETURN VARCHAR2;
3782
   /*================================================================================================*/
3783
   PROCEDURE add_daemon_config (
3784
      nrtagid           IN   NUMBER,
3785
      nbmcon_id         IN   NUMBER,
3786
      sdaemon_mode      IN   VARCHAR2,
3787
      sgbebuildfilter   IN   VARCHAR2
3788
   );
3789
   /*================================================================================================*/
3790
   PROCEDURE update_daemon_config (
3791
      nrconid           IN   NUMBER,
3792
      nbmcon_id         IN   NUMBER,
3793
      sdaemon_mode      IN   VARCHAR2,
3794
      sgbebuildfilter   IN   VARCHAR2
3795
   );
3796
 
4308 dpurdie 3797
 /*================================================================================================*/
3798
   PROCEDURE duplicate_daemon_config (
3799
      nrtagid           IN   NUMBER,
3800
      nbmcon_id         IN   NUMBER,
3801
      sdaemonhostname   IN   VARCHAR2,
3802
      ngbe_id           IN   NUMBER,
3803
      sdaemon_mode      IN   VARCHAR2,
3804
      sgbebuildfilter   IN   VARCHAR2
3805
   );
3806
 
1373 dpurdie 3807
   /*================================================================================================*/
3808
   PROCEDURE add_build_machine (
3809
      sdisplay_name          IN   VARCHAR2,
3810
      smachine_hostname      IN   VARCHAR2,
3811
      ngbeid                 IN   NUMBER,
3812
      sdescription           IN   VARCHAR2
3813
   );
3814
   /*================================================================================================*/
3815
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2);
3816
   /*================================================================================================*/
3817
   PROCEDURE update_build_machine (
3818
      nbmcon_id              IN   NUMBER,
3819
      sdisplay_name          IN   VARCHAR2,
3820
      smachine_hostname      IN   VARCHAR2,
3821
      ngbeid                 IN   NUMBER,
3822
      sdescription           IN   VARCHAR2
3823
   );
4553 dpurdie 3824
   /*================================================================================================*/
3825
   PROCEDURE import_daemons ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  );
1373 dpurdie 3826
END pk_buildapi;
4040 dpurdie 3827
 
1374 dpurdie 3828
/
1373 dpurdie 3829
 
4040 dpurdie 3830
/
3831
--------------------------------------------------------
3832
--  DDL for Package PK_ENVIRONMENT
3833
--------------------------------------------------------
3834
 
3959 dpurdie 3835
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1373 dpurdie 3836
/*
3837
------------------------------
3959 dpurdie 3838
||  Last Modified:  G.Huddy
3839
||  Modified Date:  28/May/2008
3840
||  Spec Version:   1.2
1373 dpurdie 3841
------------------------------
3842
*/
3843
 
3959 dpurdie 3844
	TYPE typeCur IS REF CURSOR;
3845
 
1373 dpurdie 3846
	/*================================================================================================*/
3847
 
3959 dpurdie 3848
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
3849
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3850
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3851
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3852
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3853
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3854
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
3855
 
3856
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3857
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3858
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3859
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3860
 
3861
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3862
 
3863
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3864
 
3865
 
3866
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3867
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3868
 
3869
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3870
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3871
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3872
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3873
 
3874
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3875
 
3876
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
3877
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
3878
 
3879
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
3880
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
3881
							 CloneFromPvId IN NUMBER );
3882
 
3883
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3884
 
3885
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3886
 
3887
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3888
 
3889
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3890
 
3891
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1373 dpurdie 3892
	/*================================================================================================*/
3959 dpurdie 3893
 
3894
END PK_ENVIRONMENT;
4040 dpurdie 3895
 
1374 dpurdie 3896
/
1373 dpurdie 3897
 
4040 dpurdie 3898
/
3899
--------------------------------------------------------
3900
--  DDL for Package PK_LICENCING
3901
--------------------------------------------------------
3902
 
3959 dpurdie 3903
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
3904
/*
3905
------------------------------
3906
||  Last Modified:  G.Huddy
3907
||  Modified Date:  19/Aug/2008
3908
||  Spec Version:   1.0
3909
------------------------------
3910
*/
3911
 
3912
   TYPE typeCur IS REF CURSOR;
3913
 
3914
    /*================================================================================================*/
3915
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3916
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3917
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
3918
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
3919
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
3920
   /*================================================================================================*/
3921
 
3922
END PK_LICENCING;
4040 dpurdie 3923
 
3959 dpurdie 3924
/
3925
 
4040 dpurdie 3926
/
3927
--------------------------------------------------------
3928
--  DDL for Package PK_PACKAGE
3929
--------------------------------------------------------
3930
 
3959 dpurdie 3931
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1373 dpurdie 3932
IS
3933
/*
3934
------------------------------
3959 dpurdie 3935
||  Last Modified:  Jeremy Tweddle
3936
||  Modified Date:  24/08/2007
1373 dpurdie 3937
||
3938
------------------------------
3939
*/
3940
   TYPE typecur IS REF CURSOR;
3941
 
3942
/*================================================================================================*/
3943
   PROCEDURE new_version (
3944
      nlastpvid                   IN       NUMBER,
3945
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
3946
      cbuildtype                  IN       CHAR,
4211 dpurdie 3947
      cchangetype                 IN       CHAR,
1373 dpurdie 3948
      nsettopvid                  IN       NUMBER DEFAULT NULL,
3949
      nrtagid                     IN       NUMBER,
3950
      nuserid                     IN       NUMBER,
3951
      enumissues_state_imported   IN       NUMBER,
3952
      returnpvid                  OUT      NUMBER
3953
   );
3954
 
3955
   PROCEDURE change_state (
3956
      pvid       IN   NUMBER,
3957
      newstate   IN   package_versions.dlocked%TYPE,
3958
      userid     IN   NUMBER
3959
   );
3960
 
3961
   PROCEDURE new_patch (
3962
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
3963
      nparentpvid        IN       NUMBER,
3964
      spatchidlist       IN       VARCHAR2,
3965
      nuserid            IN       NUMBER,
3966
      returnpatchid      OUT      NUMBER
3967
   );
3968
 
3969
   PROCEDURE obsolete_patch (
3970
      patchid            IN   NUMBER,
3971
      isobsolete         IN   CHAR,
3972
      obsoletecomments   IN   VARCHAR2,
3973
      userid             IN   NUMBER
3974
   );
3975
 
3976
   PROCEDURE obsolete_patches (
3977
      spatchidlist       IN   VARCHAR2,
3978
      isobsolete         IN   CHAR,
3979
      obsoletecomments   IN   VARCHAR2,
3980
      userid             IN   NUMBER
3981
   );
3982
 
3983
   PROCEDURE destroy_package (
3984
      pvid               IN       NUMBER,
3985
      overridewarnings   IN       CHAR DEFAULT 'N',
3986
      problemstring      OUT      VARCHAR2
3987
   );
3988
 
3989
   PROCEDURE add_process (
3990
      nprocid         IN   processes.proc_id%TYPE,
3991
      shealthtag      IN   processes.proc_name%TYPE,
3992
      sprocdesc       IN   processes.proc_description%TYPE,
3993
      scmdinterface   IN   processes.run_as%TYPE,
3994
      spkgowner       IN   processes.pkg_owner%TYPE,
3995
      sisinterface    IN   processes.is_interface%TYPE,
3996
      npvid           IN   package_processes.pv_id%TYPE,
3997
      nuserid         IN   NUMBER
3998
   );
3999
 
4000
   PROCEDURE add_package_process (
4001
      nprocidlist   IN   VARCHAR2,
4002
      npvid         IN   package_processes.pv_id%TYPE,
4003
      nuserid       IN   NUMBER
4004
   );
4005
 
4006
 
4007
 
4008
   PROCEDURE remove_process (
4009
      nprocid   IN   package_processes.proc_id%TYPE,
4010
      npvid     IN   package_processes.pv_id%TYPE,
4011
      nuserid   IN   NUMBER
4012
   );
4013
 
4014
   PROCEDURE move_package (
4015
   	  npvid  			  IN package_versions.pv_id%TYPE,
4016
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4017
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4018
	  nuserid			  IN NUMBER		 
4019
   ); 
4020
 
3959 dpurdie 4021
   PROCEDURE modify_product_state (
1373 dpurdie 4022
   	  npvid IN package_versions.pv_id%TYPE,
3959 dpurdie 4023
	  nrtagid IN release_tags.rtag_id%TYPE,
1373 dpurdie 4024
	  nstateid IN product_states.state_id%TYPE,
4025
	  nuserid IN NUMBER
4026
   );
3959 dpurdie 4027
 
4028
   PROCEDURE add_code_review_url (
4029
        npvid           IN    NUMBER,
4030
        nprojid         IN    NUMBER,
4031
        surl            IN    VARCHAR2,
4032
        sreason         IN    VARCHAR2,
4553 dpurdie 4033
        ddateofreview   IN    VARCHAR2
3959 dpurdie 4034
   );
4035
 
4036
   PROCEDURE update_code_review_url (
4037
        ncrid           IN    NUMBER,
4038
        nprojid         IN    NUMBER,
4039
        surl            IN    VARCHAR2,
4553 dpurdie 4040
        sreason         IN    VARCHAR2,
4041
        ddateofreview   IN    VARCHAR2
3959 dpurdie 4042
   );
4043
 
4044
   PROCEDURE remove_code_review_url (
4045
        ncrid           IN    NUMBER
4046
   );
1373 dpurdie 4047
/*================================================================================================*/
3959 dpurdie 4048
END pk_package;
4040 dpurdie 4049
 
1374 dpurdie 4050
/
1373 dpurdie 4051
 
4040 dpurdie 4052
/
4053
--------------------------------------------------------
4054
--  DDL for Package PK_PLANNED
4055
--------------------------------------------------------
4056
 
1373 dpurdie 4057
  CREATE OR REPLACE PACKAGE "PK_PLANNED" IS
4058
/*
4059
------------------------------
4060
||  Last Modified:  G.Huddy
4061
||  Modified Date:  28/May/2008
4062
||  Spec Version:   1.1
4063
------------------------------
4064
*/
4065
 
4066
	TYPE typeCur IS REF CURSOR;
4067
 
4068
    /*================================================================================================*/
4069
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4585 dpurdie 4070
  PROCEDURE ADD_RIPPLE_PACKAGE ( newPvId IN NUMBER, basePvid IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1373 dpurdie 4071
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4072
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
4073
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
4074
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4075
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
4076
	/*================================================================================================*/
4077
 
4078
END PK_PLANNED;
4040 dpurdie 4079
 
1374 dpurdie 4080
/
1373 dpurdie 4081
 
4040 dpurdie 4082
/
4083
--------------------------------------------------------
4084
--  DDL for Package PK_PROJECT
4085
--------------------------------------------------------
4086
 
3959 dpurdie 4087
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1373 dpurdie 4088
 
3959 dpurdie 4089
    TYPE typecur IS REF CURSOR;
1373 dpurdie 4090
 
3959 dpurdie 4091
    /*------------------------------------------------------------------------*/
4092
    PROCEDURE update_base_url (
4093
        nprojid   IN  projects.proj_id%TYPE,
4094
        sbaseurl  IN  VARCHAR2
4095
    );
4096
    /*------------------------------------------------------------------------*/
4097
    PROCEDURE update_project_config (
4098
    nprojid   IN  projects.proj_id%TYPE,
4099
    sbaseurl  IN  VARCHAR2,
4100
    sjirakey  IN  VARCHAR2
4101
    );
4102
    /*------------------------------------------------------------------------*/
1373 dpurdie 4103
 
3959 dpurdie 4104
    END pk_project;
4040 dpurdie 4105
 
1374 dpurdie 4106
/
1373 dpurdie 4107
 
4040 dpurdie 4108
/
4109
--------------------------------------------------------
4110
--  DDL for Package PK_RELEASE
4111
--------------------------------------------------------
4112
 
1373 dpurdie 4113
  CREATE OR REPLACE PACKAGE "PK_RELEASE" IS
4114
/*
4115
------------------------------
4116
||  Last Modified:  S.Vukovic
4117
||  Modified Date:  12/Sep/2005
4118
||  Body Version:   3.0
4119
------------------------------
4120
*/
4121
 
4122
	TYPE typeCur IS REF CURSOR;
4123
 
4124
    /*================================================================================================*/
4125
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
4126
	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 );
4127
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
4128
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
4129
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
4130
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
4131
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
4132
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
4133
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
4134
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4135
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
4136
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4137
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4138
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4139
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
4140
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
4141
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
4142
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4143
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
4144
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
4145
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
4146
 
4147
	/*================================================================================================*/
4148
 
4149
END PK_RELEASE;
4040 dpurdie 4150
 
1374 dpurdie 4151
/
1373 dpurdie 4152
 
4040 dpurdie 4153
/
4154
--------------------------------------------------------
4155
--  DDL for Package PK_RMAPI
4156
--------------------------------------------------------
4157
 
3959 dpurdie 4158
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
4159
IS
4160
   TYPE typecur IS REF CURSOR;
1373 dpurdie 4161
 
3959 dpurdie 4162
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4163
      RETURN typecur;
1373 dpurdie 4164
 
3959 dpurdie 4165
   FUNCTION wip_iteration_package (
4166
      projname        VARCHAR2,
4167
      iterationname   VARCHAR2,
4168
      pkgname         VARCHAR2
4169
   )
4170
      RETURN typecur;
1373 dpurdie 4171
 
3959 dpurdie 4172
   FUNCTION auto_make_vcsrelease (
4173
      rtagid                   IN   NUMBER,
4174
      pkgname                  IN   VARCHAR2,
4175
      vext                     IN   VARCHAR2,
4176
      newpkgversion            IN   VARCHAR2,
4177
      vcstag                   IN   VARCHAR2,
4178
      dependenciesimportlist   IN   VARCHAR2,
4179
      isrippled                IN   NUMBER,
4180
      username                 IN   VARCHAR2
4181
   )
4182
      RETURN NUMBER;
4585 dpurdie 4183
 
4184
       FUNCTION auto_make_vcsrelease2 (
4185
      rtagid                   IN   NUMBER,
4186
      pkgname                  IN   VARCHAR2,
4187
      vext                     IN   VARCHAR2,
4188
      newpkgversion            IN   VARCHAR2,
4189
      vcstag                   IN   VARCHAR2,
4190
      dependenciesimportlist   IN   VARCHAR2,
4191
      isrippled                IN   NUMBER,
4192
      username                 IN   VARCHAR2
4193
   )
4194
      RETURN NUMBER;
1373 dpurdie 4195
 
4196
 
3959 dpurdie 4197
   PROCEDURE import_dependencies (
4198
      pvid                     IN   NUMBER,
4199
      dependenciesimportlist   IN   VARCHAR2,
4200
      userid                   IN   NUMBER
4201
   );
1373 dpurdie 4202
 
3959 dpurdie 4203
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4204
      RETURN VARCHAR2;
1373 dpurdie 4205
 
3959 dpurdie 4206
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4207
      RETURN VARCHAR2;
1373 dpurdie 4208
 
3959 dpurdie 4209
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1373 dpurdie 4210
 
3959 dpurdie 4211
   FUNCTION exclude_from_build (
4212
      pvid          IN   NUMBER,
4213
      spkgversion   IN   VARCHAR2,
4214
      rtagid        IN   NUMBER,
4215
      username      IN   VARCHAR2
4216
   )
4217
      RETURN NUMBER;
1373 dpurdie 4218
 
3959 dpurdie 4219
   FUNCTION exclude_indirect_from_build (
4220
      pvid          IN   NUMBER,
4221
      spkgversion   IN   VARCHAR2,
4222
      rtagid        IN   NUMBER,
4223
      username      IN   VARCHAR2,
4224
      rootpvid      IN   NUMBER,
4225
      rootcause     IN   VARCHAR2,
4226
      rootfile      IN   VARCHAR2
4227
   )
4228
      RETURN NUMBER;
1373 dpurdie 4229
 
3959 dpurdie 4230
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1373 dpurdie 4231
 
3959 dpurdie 4232
   FUNCTION insert_package_metrics (
4233
      rtagid IN NUMBER,
4234
      pkgname IN VARCHAR2,
4235
      vext IN VARCHAR2,
4236
      metricstring IN VARCHAR2
4237
   )
4238
      RETURN NUMBER;
1373 dpurdie 4239
 
3959 dpurdie 4240
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1373 dpurdie 4241
 
3959 dpurdie 4242
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4243
 
4244
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
4245
 
4246
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
4247
 
4248
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
4249
 
4250
END pk_rmapi;
4040 dpurdie 4251
 
1374 dpurdie 4252
/
1373 dpurdie 4253
 
4040 dpurdie 4254
/
4255
--------------------------------------------------------
4256
--  DDL for Package PK_WORK_IN_PROGRESS
4257
--------------------------------------------------------
4258
 
3959 dpurdie 4259
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 4260
/*
4261
------------------------------
4262
||  Last Modified:  S.Vukovic
3959 dpurdie 4263
||  Modified Date:  2/May/2005
4264
||  Spec Version:   1.0
1373 dpurdie 4265
------------------------------
4266
*/
4267
 
4268
	TYPE typeCur IS REF CURSOR;
4269
 
4270
    /*================================================================================================*/
4271
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4272
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3959 dpurdie 4273
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
4274
 
1373 dpurdie 4275
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3959 dpurdie 4276
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1373 dpurdie 4277
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4278
	/*================================================================================================*/
3959 dpurdie 4279
 
4280
END PK_WORK_IN_PROGRESS;
4040 dpurdie 4281
 
1374 dpurdie 4282
/
1373 dpurdie 4283
 
4040 dpurdie 4284
/
4285
--------------------------------------------------------
4286
--  DDL for Package RM_ISSUES
4287
--------------------------------------------------------
4288
 
3959 dpurdie 4289
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1373 dpurdie 4290
 
3959 dpurdie 4291
	TYPE T_Cur IS REF CURSOR;
1373 dpurdie 4292
 
3959 dpurdie 4293
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4294
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
4295
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4296
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1373 dpurdie 4297
 
3959 dpurdie 4298
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4299
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4300
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1373 dpurdie 4301
 
3959 dpurdie 4302
END Rm_Issues;
4040 dpurdie 4303
 
3959 dpurdie 4304
/
1373 dpurdie 4305
 
4040 dpurdie 4306
/
4307
--------------------------------------------------------
4308
--  DDL for Package Body PK_APP_UTILS
4309
--------------------------------------------------------
4310
 
3959 dpurdie 4311
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1373 dpurdie 4312
 
3959 dpurdie 4313
/*
4314
------------------------------
4315
||  Last Modified:  S.Vukovic
4316
||  Modified Date:  26/Apr/2005
4317
||  Body Version:   1.0
4318
------------------------------
4319
*/
1373 dpurdie 4320
 
4321
 
4322
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4323
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1373 dpurdie 4324
 
4325
 
4326
BEGIN
4327
 
4328
 
3959 dpurdie 4329
	IF (NOT RtagId IS NULL) THEN
4330
		-- Case with RTAG_ID present
4331
		OPEN records FOR
4332
		SELECT rt.PROJ_ID,
4333
			   rt.RTAG_ID AS RTAG_ID
4334
		  FROM RELEASE_TAGS rt
4335
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1373 dpurdie 4336
 
3959 dpurdie 4337
	ELSIF (NOT ProjId IS NULL) THEN
4338
		-- Case with PROJ_ID present
4339
		OPEN records FOR
4340
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
4341
			   -1 AS RTAG_ID
4342
		  FROM DUAL;
1373 dpurdie 4343
 
3959 dpurdie 4344
	ELSE
4345
		-- Case with none present
4346
		OPEN records FOR
4347
		SELECT -1 AS PROJ_ID,
4348
			   -1 AS RTAG_ID
4349
		  FROM DUAL;
1373 dpurdie 4350
 
3959 dpurdie 4351
	END IF;
1373 dpurdie 4352
 
4353
 
4354
 
4355
 
3959 dpurdie 4356
   	--RETURN records;
1373 dpurdie 4357
 
4358
END;
4359
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4360
END PK_APP_UTILS;
4040 dpurdie 4361
 
1374 dpurdie 4362
/
1373 dpurdie 4363
 
4040 dpurdie 4364
/
4365
--------------------------------------------------------
4366
--  DDL for Package Body PK_ARCHIVE
4367
--------------------------------------------------------
4368
 
3959 dpurdie 4369
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1373 dpurdie 4370
IS
3959 dpurdie 4371
/*
4372
------------------------------
4373
||  Author:  Rupesh Solanki
4374
||  Date:    26 October 2006
4375
||  Version:   1.0
4376
------------------------------
4377
*/
4378
/*---------------------------*/
4379
PROCEDURE populate_packages_table IS
1373 dpurdie 4380
 
3959 dpurdie 4381
BEGIN
4382
		  INSERT INTO archive_manager.PACKAGES
4383
		  (
4384
		  select * from packages where pkg_id not in 
4385
		  		  (select pkg_id from archive_manager.packages)
4386
		  );
1373 dpurdie 4387
 
3959 dpurdie 4388
          INSERT INTO archive_manager.PROCESSES
4389
          (
4390
          select * from processes where proc_id not in 
4391
            (select proc_id from archive_manager.processes)
4392
          );
4393
 
1373 dpurdie 4394
 
4395
 
3959 dpurdie 4396
END;
1373 dpurdie 4397
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4398
   PROCEDURE populate_archive_data_table (
4399
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4400
   )
4401
   IS
3959 dpurdie 4402
/*
4403
Reason: To populate the archive_data table with information regarding the
4404
         number of package versions that exist in other releases.
4405
*/
4406
      numcount      NUMBER;
4407
      numusedby     NUMBER;
4408
      numruntime    NUMBER;
4409
 
4410
      /* Get all the package versions in the release */
4411
      CURSOR archive_cur
4412
      IS
4413
         SELECT pv_id
4414
           FROM release_content
4415
          WHERE rtag_id = nrtagid;
4416
 
4417
      archive_rec   archive_cur%ROWTYPE;
1373 dpurdie 4418
   BEGIN
3959 dpurdie 4419
/*--------------- Business Rules Here -------------------*/
4420
/*-------------------------------------------------------*/
4421
      OPEN archive_cur;
1373 dpurdie 4422
 
3959 dpurdie 4423
      FETCH archive_cur
4424
       INTO archive_rec;
4425
 
4426
      WHILE archive_cur%FOUND
4427
      LOOP
4428
        /* How many packages depend on this package version? */
4429
         SELECT COUNT (*)
4430
           INTO numusedby
4431
           FROM package_dependencies
4432
          WHERE dpv_id = archive_rec.pv_id;
4433
 
4434
        /* How many project releases use this package version?  */
4435
         SELECT COUNT (*)
4436
           INTO numcount
4437
           FROM release_content
4438
          WHERE pv_id = archive_rec.pv_id;
4439
 
4440
        /* How many packages have this package version as runtime
4441
        dependency? */
4442
         SELECT COUNT (*)
4443
           INTO numruntime
4444
           FROM runtime_dependencies
4445
          WHERE rtd_id = archive_rec.pv_id;
4446
 
4447
        /* Insert into the archive_data table if they are not runtime dependant
4448
        and package dependant and they exist in that particular release only*/
4449
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
1373 dpurdie 4450
         THEN
3959 dpurdie 4451
            INSERT INTO archive_data
4452
                        (rtag_id, pv_id
4453
                        )
4454
                 VALUES (nrtagid, archive_rec.pv_id
4455
                        );
1373 dpurdie 4456
         END IF;
4457
 
3959 dpurdie 4458
         FETCH archive_cur
4459
          INTO archive_rec;
4460
      END LOOP;
1373 dpurdie 4461
   END;
4462
 
4463
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4464
   PROCEDURE migrate_pv_to_archive_schema (
4465
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4466
   )
4467
   IS
4468
   BEGIN
4469
 
3959 dpurdie 4470
      /* MIGRATION - PACKAGE_VERSIONS */
4471
      INSERT INTO archive_manager.package_versions
4472
         SELECT *
4473
           FROM package_versions
4474
          WHERE pv_id IN (SELECT pv_id
4475
                            FROM archive_data);
1373 dpurdie 4476
 
3959 dpurdie 4477
      /* MIGRATION - PACKAGE_BUILD_ENV */
4478
      INSERT INTO archive_manager.package_build_env
4479
         SELECT *
4480
           FROM package_build_env
4481
          WHERE pv_id IN (SELECT pv_id
4482
                            FROM archive_data);
1373 dpurdie 4483
 
3959 dpurdie 4484
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
4485
      DELETE FROM package_build_env
4486
            WHERE pv_id IN (SELECT pv_id
4487
                              FROM archive_data);
1373 dpurdie 4488
 
3959 dpurdie 4489
      /* MIGRATION - PACKAGE_BUILD_INFO */
4490
      INSERT INTO archive_manager.package_build_info
4491
         SELECT *
4492
           FROM package_build_info
4493
          WHERE pv_id IN (SELECT pv_id
4494
                            FROM archive_data);
1373 dpurdie 4495
 
3959 dpurdie 4496
      /* PURGE DATA FROM PACKAGE_BUILD_info */
4497
      DELETE FROM package_build_info
4498
            WHERE pv_id IN (SELECT pv_id
4499
                              FROM archive_data);							  
1373 dpurdie 4500
 
3959 dpurdie 4501
      /* MIGRATION - UNIT_TESTS  */
4502
      INSERT INTO archive_manager.unit_tests
4503
         SELECT *
4504
           FROM unit_tests
4505
          WHERE pv_id IN (SELECT pv_id
4506
                            FROM archive_data);
1373 dpurdie 4507
 
3959 dpurdie 4508
      /* PURGE DATA FROM UNIT_TESTS*/
4509
      DELETE FROM unit_tests
4510
            WHERE pv_id IN (SELECT pv_id
4511
                              FROM archive_data);
1373 dpurdie 4512
 
3959 dpurdie 4513
      /* MIGRATION - PACKAGE_PROCESSES */
4514
      INSERT INTO archive_manager.package_processes
4515
         SELECT *
4516
           FROM package_processes
4517
          WHERE pv_id IN (SELECT pv_id
4518
                            FROM archive_data);
1373 dpurdie 4519
 
3959 dpurdie 4520
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
4521
      DELETE FROM package_processes
4522
            WHERE pv_id IN (SELECT pv_id
4523
                              FROM archive_data);
1373 dpurdie 4524
 
3959 dpurdie 4525
      /* MIGRATION - PACKAGE_DEPENDENCIES */
4526
      INSERT INTO archive_manager.package_dependencies
4527
         SELECT *
4528
           FROM package_dependencies
4529
          WHERE pv_id IN (SELECT pv_id
4530
                            FROM archive_data);
2735 dpurdie 4531
 
3959 dpurdie 4532
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
4533
      DELETE FROM package_dependencies
4534
            WHERE pv_id IN (SELECT pv_id
4535
                              FROM archive_data);
1373 dpurdie 4536
 
3959 dpurdie 4537
      /* MIGRATION - CODE_REVIEWS */
4538
      INSERT INTO archive_manager.code_reviews
4539
         SELECT *
4540
           FROM code_reviews
4541
          WHERE pv_id IN (SELECT pv_id
4542
                            FROM archive_data);
1373 dpurdie 4543
 
3959 dpurdie 4544
      /* PURGE DATA FROM CODE_REVIEWS*/
4545
      DELETE FROM code_reviews
4546
            WHERE pv_id IN (SELECT pv_id
4547
                              FROM archive_data);
1373 dpurdie 4548
 
3959 dpurdie 4549
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
4550
      INSERT INTO archive_manager.runtime_dependencies
4551
         SELECT *
4552
           FROM runtime_dependencies
4553
          WHERE pv_id IN (SELECT pv_id
4554
                            FROM archive_data);
1373 dpurdie 4555
 
3959 dpurdie 4556
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
4557
      DELETE FROM runtime_dependencies
4558
            WHERE pv_id IN (SELECT pv_id
4559
                              FROM archive_data);
1373 dpurdie 4560
 
3959 dpurdie 4561
      /* MIGRATION - PACKAGE_DOCUMENTS */
4562
      INSERT INTO archive_manager.package_documents
4563
         SELECT *
4564
           FROM package_documents
4565
          WHERE pv_id IN (SELECT pv_id
4566
                            FROM archive_data);
1373 dpurdie 4567
 
3959 dpurdie 4568
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
4569
      DELETE FROM package_documents
4570
            WHERE pv_id IN (SELECT pv_id
4571
                              FROM archive_data);
1373 dpurdie 4572
 
3959 dpurdie 4573
      /* MIGRATION - PACKAGE_PATCHES */
4574
      INSERT INTO archive_manager.package_patches
4575
         SELECT *
4576
           FROM package_patches
4577
          WHERE pv_id IN (SELECT pv_id
4578
                            FROM archive_data);
1373 dpurdie 4579
 
3959 dpurdie 4580
      /* PURGE DATA FROM PACKAGE_PATCHES*/
4581
      DELETE FROM package_patches
4582
            WHERE pv_id IN (SELECT pv_id
4583
                              FROM archive_data);
1373 dpurdie 4584
 
3959 dpurdie 4585
      /* MIGRATION - CQ_ISSUES */
4586
      INSERT INTO archive_manager.cq_issues
4587
         SELECT *
4588
           FROM cq_issues
4589
          WHERE pv_id IN (SELECT pv_id
4590
                            FROM archive_data);
1373 dpurdie 4591
 
3959 dpurdie 4592
      /* PURGE DATA FROM CQ_ISSUES*/
4593
      DELETE FROM cq_issues
4594
            WHERE pv_id IN (SELECT pv_id
4595
                              FROM archive_data);
1373 dpurdie 4596
 
3959 dpurdie 4597
      /* MIGRATION - ADDITIONAL_NOTES */
4598
      INSERT INTO archive_manager.additional_notes
4599
         SELECT *
4600
           FROM additional_notes
4601
          WHERE pv_id IN (SELECT pv_id
4602
                            FROM archive_data);
1373 dpurdie 4603
 
3959 dpurdie 4604
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
4605
      DELETE FROM additional_notes
4606
            WHERE pv_id IN (SELECT pv_id
4607
                              FROM archive_data);
1373 dpurdie 4608
 
3959 dpurdie 4609
      /* MIGRATION - RELEASE_COMPONENTS */
4610
      INSERT INTO archive_manager.release_components
4611
         SELECT *
4612
           FROM release_components
4613
          WHERE pv_id IN (SELECT pv_id
4614
                            FROM archive_data);
1373 dpurdie 4615
 
3959 dpurdie 4616
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
4617
      DELETE FROM release_components
4618
            WHERE pv_id IN (SELECT pv_id
4619
                              FROM archive_data);
1373 dpurdie 4620
 
3959 dpurdie 4621
      /* MIGRATION - IGNORE_WARNINGS */
4622
      INSERT INTO archive_manager.ignore_warnings
4623
         SELECT *
4624
           FROM ignore_warnings
4625
          WHERE pv_id IN (SELECT pv_id
4626
                            FROM archive_data);
1374 dpurdie 4627
 
3959 dpurdie 4628
      /* PURGE DATA FROM IGNORE_WARNINGS*/
4629
      DELETE FROM ignore_warnings
4630
            WHERE pv_id IN (SELECT pv_id
4631
                              FROM archive_data);
1373 dpurdie 4632
 
3959 dpurdie 4633
      /* PURGE DATA FROM WORK_IN_PROGRESS */
4634
      DELETE FROM work_in_progress
4635
            WHERE rtag_id = nrtagid;
1374 dpurdie 4636
 
3959 dpurdie 4637
      /* PURGE DATA FROM PLANNED */
4638
      DELETE FROM planned
4639
            WHERE rtag_id = nrtagid;
1373 dpurdie 4640
 
3959 dpurdie 4641
      /* MIGRATION - JIRA_ISSUES */
4642
      INSERT INTO archive_manager.jira_issues
4643
         SELECT *
4644
           FROM jira_issues
4645
          WHERE pv_id IN (SELECT pv_id
4646
                            FROM archive_data);
1373 dpurdie 4647
 
3959 dpurdie 4648
      /* PURGE DATA FROM JIRA_ISSUES*/
4649
      DELETE FROM jira_issues
4650
            WHERE pv_id IN (SELECT pv_id
4651
                              FROM archive_data);
1373 dpurdie 4652
 
3959 dpurdie 4653
      /* MIGRATION - PRODUCT_COMPONENTS */
4654
      INSERT INTO archive_manager.product_components
4655
         SELECT *
4656
           FROM product_components
4657
          WHERE pv_id IN (SELECT pv_id
4658
                            FROM archive_data);
1373 dpurdie 4659
 
3959 dpurdie 4660
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
4661
      DELETE FROM product_components
4662
            WHERE pv_id IN (SELECT pv_id
4663
                              FROM archive_data);
1373 dpurdie 4664
 
3959 dpurdie 4665
      /* MIGRATION - ACTION_LOG */
4666
      INSERT INTO archive_manager.action_log
4667
         SELECT *
4668
           FROM action_log
4669
          WHERE pv_id IN (SELECT pv_id
4670
                            FROM archive_data);
1373 dpurdie 4671
 
3959 dpurdie 4672
      /* PURGE DATA FROM ACTION_LOG*/
4673
      DELETE FROM action_log
4674
            WHERE pv_id IN (SELECT pv_id
4675
                              FROM archive_data);
1373 dpurdie 4676
 
4677
 
4678
   END;
4679
 
4680
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4681
   PROCEDURE migrate_rtag_to_archive_schema (
4682
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4683
   )
4684
   IS
4685
   BEGIN
3959 dpurdie 4686
      /* MIGRATION - DO_NOT_RIPPLE */
4687
      INSERT INTO archive_manager.do_not_ripple
4688
         SELECT *
4689
           FROM do_not_ripple dnp
4690
          WHERE rtag_id = nrtagid;
1373 dpurdie 4691
 
3959 dpurdie 4692
      /* PURGE DATA FROM DO_NOT_RIPPLE */
4693
      DELETE FROM do_not_ripple
4694
            WHERE rtag_id = nrtagid;
4695
 
4696
      /* MIGRATION - ADVISORY_RIPPLES*/
4697
      INSERT INTO archive_manager.advisory_ripples
4698
         SELECT *
4699
           FROM advisory_ripple dnp
4700
          WHERE rtag_id = nrtagid;
1373 dpurdie 4701
 
3959 dpurdie 4702
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
4703
      DELETE FROM advisory_ripple
4704
            WHERE rtag_id = nrtagid;			
1373 dpurdie 4705
 
3959 dpurdie 4706
      /* MIGRATION - RELEASE_CONTENT */
4707
      INSERT INTO archive_manager.release_content
4708
         SELECT *
4709
           FROM release_content
4710
          WHERE rtag_id = nrtagid;
1373 dpurdie 4711
 
3959 dpurdie 4712
      /* PURGE DATA FROM RELEASE_CONTENT*/
4713
      DELETE FROM release_content
4714
            WHERE rtag_id = nrtagid;
1373 dpurdie 4715
 
3959 dpurdie 4716
      /* MIGRATION - NOTIFICATION_HISTORY */
4717
      INSERT INTO archive_manager.notification_history
4718
         SELECT *
4719
           FROM notification_history
4720
          WHERE rtag_id = nrtagid;
1373 dpurdie 4721
 
3959 dpurdie 4722
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
4723
      DELETE FROM notification_history
4724
            WHERE rtag_id = nrtagid;
1373 dpurdie 4725
 
3959 dpurdie 4726
      /* MIGRATION - BUILD_ORDER   */
4727
      INSERT INTO archive_manager.build_order
4728
         SELECT *
4729
           FROM build_order
4730
          WHERE rtag_id = nrtagid;
1373 dpurdie 4731
 
3959 dpurdie 4732
      /* PURGE DATA FROM BUILD_ORDER*/
4733
      DELETE FROM build_order
4734
            WHERE rtag_id = nrtagid;
1373 dpurdie 4735
 
3959 dpurdie 4736
      /* MIGRATION - PROJECT_ACTION_LOG */
4737
      INSERT INTO archive_manager.project_action_log
4738
         SELECT *
4739
           FROM project_action_log
4740
          WHERE rtag_id = nrtagid;
1373 dpurdie 4741
 
3959 dpurdie 4742
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4743
      DELETE FROM project_action_log
4744
            WHERE rtag_id = nrtagid;
1373 dpurdie 4745
 
3959 dpurdie 4746
      /* MIGRATION - DEPRECATED_PACKAGES */
4747
      INSERT INTO archive_manager.deprecated_packages
4748
         SELECT *
4749
           FROM deprecated_packages
4750
          WHERE rtag_id = nrtagid;
1373 dpurdie 4751
 
3959 dpurdie 4752
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
4753
      DELETE FROM deprecated_packages
4754
            WHERE rtag_id = nrtagid;
4755
 
4756
      /* MIGRATION - RELEASE_TAGS */
4757
      INSERT INTO archive_manager.release_tags
4758
         SELECT *
1373 dpurdie 4759
           FROM release_tags
3959 dpurdie 4760
          WHERE rtag_id = nrtagid;
4761
 
4762
 
4763
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
4764
      DELETE FROM package_versions
4765
            WHERE pv_id IN (SELECT pv_id
4766
                              FROM archive_data);
4767
 
4768
 
1373 dpurdie 4769
   END;
4770
 
4771
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4772
   PROCEDURE clean_up_archive_data_table (
4773
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4774
   )
4775
   IS
4776
   BEGIN
3959 dpurdie 4777
      /* Cleaning Up The Archive_Data Table */
4778
      DELETE FROM archive_data
4779
            WHERE rtag_id = nrtagid;
1373 dpurdie 4780
   END;
4781
 
4782
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4783
   PROCEDURE write_action_log (
4784
      nuserid   IN   NUMBER,
4785
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4786
   )
4787
   IS
4788
   BEGIN
3959 dpurdie 4789
      /* Write Into Archive_Action_Log Table */
4790
      INSERT INTO archive_action_log
4791
                  (user_id, date_time_stamp, rtag_id,
4792
                   description
1373 dpurdie 4793
                  )
3959 dpurdie 4794
           VALUES (nuserid, ora_sysdatetime, nrtagid,
4795
                   'Release has been archived to the ARCHIVE_MANAGER schema'
1373 dpurdie 4796
                  );
4797
   END;
4798
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4799
END pk_archive; 
4040 dpurdie 4800
 
1374 dpurdie 4801
/
1373 dpurdie 4802
 
4040 dpurdie 4803
/
4804
--------------------------------------------------------
4805
--  DDL for Package Body PK_BUILDAPI
4806
--------------------------------------------------------
4807
 
1373 dpurdie 4808
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI" 
4809
IS
4810
   /*-------------------------------------------------------------------------------------------------------*/
4811
   PROCEDURE add_product_component (
4812
      npvid           IN   NUMBER,
4813
      sosname         IN   VARCHAR2,
4814
      sorigfilepath   IN   VARCHAR2,
4815
      sfilename       IN   VARCHAR2,
4816
      sdestfilepath   IN   VARCHAR2,
4817
      nbytesize       IN   NUMBER,
4818
      scrccksum       IN   VARCHAR2
4819
   )
4820
   IS
4821
      nosid   NUMBER;
4822
   BEGIN
4823
      /*--------------- Business Rules Here -------------------*/
4824
      -- OS Name Requirements --
4825
      IF (sosname IS NULL)
4826
      THEN
4827
         raise_application_error (-20000, 'OsName cannot be NULL.');
4828
      END IF;
4829
 
4830
      -- File Requirements --
4831
      IF (NOT sfilename IS NULL)
4832
      THEN
4833
         IF (nbytesize IS NULL)
4834
         THEN
4835
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
4836
         ELSIF (scrccksum IS NULL)
4837
         THEN
4838
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
4839
         END IF;
4840
      END IF;
4841
 
4842
      -- Folder Requirements --
4843
      -- No requirements for now.
4844
 
4845
      /*-------------------------------------------------------*/
4846
 
4847
      -- Get OsId
4848
      nosid := get_osid (sosname);
4849
 
4850
      -- Insert component entry
4851
      INSERT INTO product_components
4852
                  (pv_id, os_id, file_path, file_name, destination_path,
4853
                  byte_size, crc_cksum
4854
                  )
4855
         VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
4856
                  nbytesize, scrccksum
4857
                  );
4858
   EXCEPTION
4859
      WHEN DUP_VAL_ON_INDEX
4860
      THEN
4861
         raise_application_error (-20000,
4862
                                 'Cannot have duplicate product components.'
4863
                                 );
4864
   END;
4865
 
4866
/*-------------------------------------------------------------------------------------------------------*/
4867
   PROCEDURE remove_all_product_components (
4868
      npvid     IN   NUMBER,
4869
      sosname   IN   VARCHAR2
4870
   )
4871
   IS
4872
      nosid   NUMBER;
4873
   BEGIN
4874
/*--------------- Business Rules Here -------------------*/
4875
/*-------------------------------------------------------*/
4876
 
4877
      -- Get OsId
4878
      nosid := get_osid (sosname);
4879
 
4880
      -- Delete component entry
4881
      DELETE FROM product_components pc
4882
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
4883
   END;
4884
 
4885
/*-------------------------------------------------------------------------------------------------------*/
4886
   FUNCTION get_osid (sosname IN VARCHAR2)
4887
      RETURN NUMBER
4888
   IS
4889
      code   NUMBER;
4890
   BEGIN
4891
      -- Get Platform Code --
4892
      SELECT pf.code
4893
      INTO code
4894
      FROM platforms pf
4895
      WHERE UPPER (pf.NAME) = UPPER (sosname);
4896
 
4897
      RETURN code;
4898
   EXCEPTION
4899
      WHEN NO_DATA_FOUND
4900
      THEN
4901
         raise_application_error
4902
            (-20000,
4903
               'Platform '
4904
            || sosname
4905
            || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
4906
            );
4907
         RAISE;
4908
   END;
4909
 
4910
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 4911
 PROCEDURE update_build_service_info (
1373 dpurdie 4912
      sdatabaseserver   IN   VARCHAR2,
4913
      sarchiveserver    IN   VARCHAR2,
4914
      smailserver       IN   VARCHAR2,
4915
      smailsender       IN   VARCHAR2,
4211 dpurdie 4916
      faultmlist        IN   VARCHAR2,
1373 dpurdie 4917
      sdiskspace        IN   VARCHAR2,
4918
      ssbommanagement   IN   VARCHAR2
4919
   )
4920
   IS
4921
   BEGIN
4922
      UPDATE build_service_config
4923
         SET config = sdatabaseserver
4924
      WHERE service = 'DATABASE SERVER';
4925
 
4926
      UPDATE build_service_config
4927
         SET config = sarchiveserver
4928
      WHERE service = 'ARCHIVE SERVER';
4929
 
4930
      UPDATE build_service_config
4931
         SET config = smailserver
4932
      WHERE service = 'MAIL SERVER';
4933
 
4934
      UPDATE build_service_config
4935
         SET config = smailsender
4936
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4937
 
4938
      UPDATE build_service_config
4211 dpurdie 4939
         SET config = faultmlist
4940
      WHERE service = 'FAULT EMAIL ADDRESS LIST';
4941
 
4942
      UPDATE build_service_config
1373 dpurdie 4943
         SET config = sdiskspace
4944
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4945
 
4946
      UPDATE build_service_config
4947
         SET config = ssbommanagement
4948
      WHERE service = 'SBOM MANAGEMENT';
4949
   END;
4308 dpurdie 4950
 
1373 dpurdie 4951
 
4952
 
4953
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4954
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4955
   IS
4956
      gbe_id   NUMBER;
4957
   BEGIN
4958
      -- Get GBE_ID
4959
      SELECT seq_gbe_id.NEXTVAL
4960
      INTO gbe_id
4961
      FROM DUAL;
4962
 
4963
      INSERT INTO gbe_machtype
4040 dpurdie 4964
                  (gbe_id, gbe_value, bm_id )
4965
         VALUES (gbe_id, sgbevalue, sgbeclass );
1373 dpurdie 4966
   END;
4967
 
4968
/*-------------------------------------------------------------------------------------------------------*/
4969
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
4970
   IS
4971
   BEGIN
4972
      DELETE FROM gbe_machtype
4973
            WHERE gbe_id = ngbe_id;
4974
   END;
4975
 
4976
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4977
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4978
   IS
4979
   BEGIN
4980
      UPDATE gbe_machtype
4040 dpurdie 4981
         SET gbe_value = sgbevalue,
4982
             bm_id = sgbeclass
1373 dpurdie 4983
      WHERE gbe_id = ngbe_id;
4984
   END;
4985
 
4986
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4987
PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2)
4988
   IS
4989
      bm_id   NUMBER;
4990
   BEGIN
4991
      -- Get BM_ID
4992
      SELECT seq_bm_id.NEXTVAL
4993
      INTO bm_id
4994
      FROM DUAL;
4995
 
4996
      INSERT INTO build_machines
4997
                  (bm_id, bm_name)
4998
         VALUES (bm_id, sbmvalue );
4999
   END;
5000
 
5001
/*-------------------------------------------------------------------------------------------------------*/
5002
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER)
5003
   IS
5004
   BEGIN
5005
      DELETE FROM build_machines
5006
            WHERE bm_id = nbm_id;
5007
   END;
5008
 
5009
/*-------------------------------------------------------------------------------------------------------*/
5010
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2) 
5011
   IS
5012
   BEGIN
5013
      UPDATE build_machines
5014
         SET bm_name = sbmvalue
5015
         WHERE bm_id = nbm_id;
5016
   END;
5017
 
5018
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 5019
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
5020
   IS
5021
   BEGIN
5022
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
5023
      DELETE FROM daemon_action_log
5024
            WHERE rcon_id IN (
5025
                     SELECT *
5026
                     FROM THE
5027
                              (SELECT CAST
5028
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5029
                                          )
5030
                                 FROM DUAL
5031
                              ));
5032
 
5033
      DELETE FROM run_level
5034
            WHERE rcon_id IN (
5035
                     SELECT *
5036
                     FROM THE
5037
                              (SELECT CAST
5038
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5039
                                          )
5040
                                 FROM DUAL
5041
                              ));
5042
 
5043
      DELETE FROM abt_action_log
5044
            WHERE rcon_id IN (
5045
                     SELECT *
5046
                     FROM THE
5047
                              (SELECT CAST
5048
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5049
                                          )
5050
                                 FROM DUAL
5051
                              ));
5052
 
5053
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
5054
      DELETE FROM release_config
5055
            WHERE rcon_id IN (
5056
                     SELECT *
5057
                     FROM THE
5058
                              (SELECT CAST
5059
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
5060
                                          )
5061
                                 FROM DUAL
5062
                              ));
5063
   END;
5064
 
5065
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 5066
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2)
1373 dpurdie 5067
   IS
4308 dpurdie 5068
   oRconIdList RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5069
 
1373 dpurdie 5070
   BEGIN
4308 dpurdie 5071
 
5072
   oRconIdList := IN_LIST_NUMBER ( srconidlist );
5073
 
5074
      -- Break the linkage between the release_config and the build_machine_config
5075
 
5076
      -- Delete the linkage between the two tables.
5077
       UPDATE release_config
5078
         SET daemon_hostname = NULL,
5079
             bmcon_id = NULL 
5080
      WHERE rcon_id IN ( SELECT * FROM TABLE ( CAST ( oRconIdList AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 5081
   END;
5082
 
5083
/*-------------------------------------------------------------------------------------------------------*/
5084
   PROCEDURE insert_schedule_info (
5085
      dschedulepause     IN   DATE,
5086
      dscheduleresume    IN   DATE,
5087
      crepeat            IN   VARCHAR2,
5088
      cindefinitepause   IN   VARCHAR2
5089
   )
5090
   IS
5091
      nscheduledid   NUMBER;
5092
   BEGIN
5093
      -- Get Next Available Scheduled Id
5094
      SELECT seq_scheduled_id.NEXTVAL
5095
      INTO nscheduledid
5096
      FROM DUAL;
5097
 
5098
      INSERT INTO run_level_schedule
5099
         VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
5100
                  cindefinitepause);
5101
   END;
5102
 
5103
/*-------------------------------------------------------------------------------------------------------*/
5104
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
5105
   IS
5106
   BEGIN
5107
      DELETE FROM run_level_schedule
5108
            WHERE scheduled_id = nscheduleid;
5109
   END;
5110
 
5111
/*-------------------------------------------------------------------------------------------------------*/
5112
   PROCEDURE set_infinite_pause
5113
   IS
5114
      nscheduledid   NUMBER;
5115
   BEGIN
5116
      -- Get Next Available Scheduled Id
5117
      SELECT seq_scheduled_id.NEXTVAL
5118
      INTO nscheduledid
5119
      FROM DUAL;
5120
 
5121
      INSERT INTO run_level_schedule
5122
         VALUES (nscheduledid, NULL, NULL, NULL, 'P');
5123
   END;
5124
 
5125
/*-------------------------------------------------------------------------------------------------------*/
5126
   PROCEDURE set_resume
5127
   IS
5128
   BEGIN
5129
      DELETE FROM run_level_schedule
5130
            WHERE indefinite_pause = 'P';
5131
   END;
5132
 
5133
/*-------------------------------------------------------------------------------------------------------*/
5134
   PROCEDURE delete_out_of_date_schedule
5135
   IS
5136
   BEGIN
5137
      DELETE FROM run_level_schedule
5138
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
5139
   END;
5140
 
5141
/*-------------------------------------------------------------------------------------------------------*/
5142
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
5143
   IS
5144
   BEGIN
5145
      UPDATE run_level
5146
         SET PAUSE = NULL
5147
      WHERE rcon_id = nrconid;
5148
   END;
5149
 
5150
/*-------------------------------------------------------------------------------------------------------*/
5151
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
5152
   IS
5153
   BEGIN
5154
      UPDATE run_level
5155
         SET PAUSE = 1
5156
      WHERE rcon_id = nrconid;
5157
   END;
5158
/*-------------------------------------------------------------------------------------------------------*/
5159
   PROCEDURE set_daemon_disable (nrconid NUMBER)
5160
   IS
5161
   BEGIN
5162
      UPDATE run_level
5163
         SET PAUSE = 2
5164
      WHERE rcon_id = nrconid;
5165
   END;
5166
 
5167
/*-------------------------------------------------------------------------------------------------------*/
5168
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER)
5169
   IS
5170
   BEGIN
5171
     UPDATE run_level
5172
     SET pause = nstate
5173
     WHERE rcon_id IN
5174
     (SELECT rc.rcon_id FROM release_config rc WHERE rc.rtag_id = nrtagid);
5175
   END;
5176
 
5177
/*-------------------------------------------------------------------------------------------------------*/
5178
   -- inserts a new daemon instruction
5179
   -- This is for use by the Release Manager Website code.
5180
   --
5181
   PROCEDURE insert_daemon_inst
5182
   ( nOp_code IN NUMBER
5183
   , nRtag_id IN NUMBER
5184
   , nPv_id IN NUMBER
5185
   , nSchedDate IN DATE
5186
   , nRepeatSecs IN NUMBER
5187
   , nAddedDate IN DATE
5188
   , nUser_id IN NUMBER
5189
   ) IS
5190
      nInstId   NUMBER;
5191
   BEGIN
5192
      -- Get Next Available Scheduled Id
5193
      SELECT seq_daemon_instruction_id.NEXTVAL
5194
      INTO nInstId
5195
      FROM DUAL;
5196
 
5197
      INSERT INTO Daemon_Instructions
5198
         VALUES (nInstId, nOp_code, nRtag_id,
5199
                  nPv_id, nSchedDate, nRepeatSecs,
5200
                  nAddedDate, nUser_id, '0');
5201
   EXCEPTION
5202
      WHEN DUP_VAL_ON_INDEX
5203
      THEN
5204
         raise_application_error (-20000,
5205
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5206
                                 );
5207
      WHEN OTHERS
5208
      THEN
5209
         raise;
5210
   END insert_daemon_inst;
5211
 
5212
/*-------------------------------------------------------------------------------------------------------*/
5213
   -- Deletes a daemon instruction matching the specified instruction ID
5214
   --
5215
   PROCEDURE del_daemon_inst
5216
   ( nInstId IN NUMBER
5217
   ) IS
5218
 
5219
   BEGIN
5220
      DELETE FROM Daemon_Instructions
5221
      WHERE DAEMON_INSTRUCTIONS_ID = nInstId;
5222
 
5223
   END del_daemon_inst;
5224
 
5225
/*-------------------------------------------------------------------------------------------------------*/
5226
   -- Deletes a daemon instruction matching the specified op-code, ratag, and pv_id
5227
   --
5228
   PROCEDURE del_daemon_inst_by_rtag_pvid(
5229
      nOp_code IN NUMBER,
5230
      nRtag_id IN NUMBER,
5231
      nPv_id IN NUMBER
5232
   ) IS
5233
   BEGIN
5234
      DELETE FROM Daemon_Instructions
5235
      WHERE OP_CODE = nOp_code
5236
      AND RTAG_ID = nRtag_id
5237
      AND PV_ID   = nPv_id;
5238
 
5239
   END del_daemon_inst_by_rtag_pvid;
5240
 
5241
/*-------------------------------------------------------------------------------------------------------*/
5242
   -- Updates a daemon instruction
5243
   -- This is for use by the Release Manager Website code.
5244
   --
5245
   PROCEDURE update_daemon_inst
5246
   ( nInstId IN NUMBER
5247
   , nOp_code IN NUMBER
5248
   , nRtag_id IN NUMBER
5249
   , nPv_id IN NUMBER
5250
   , nSchedDate IN DATE
5251
   , nRepeatSecs IN NUMBER
5252
   , nAddedDate IN DATE
5253
   , nUser_id IN NUMBER
5254
   ) IS
5255
      CURSOR daemon_inst_cur IS
5256
         SELECT *
5257
         FROM daemon_instructions di
5258
         WHERE di.DAEMON_INSTRUCTIONS_ID = nInstId;
5259
 
5260
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5261
 
5262
      exc_inst_removed EXCEPTION;
5263
   BEGIN
5264
      OPEN daemon_inst_cur;
5265
 
5266
      FETCH daemon_inst_cur
5267
      INTO daemon_inst_rec;
5268
 
5269
      IF daemon_inst_cur%FOUND THEN
5270
 
5271
         UPDATE Daemon_Instructions
5272
         SET op_code = nOp_code,
5273
            rtag_id = nRtag_id,
5274
            pv_id   = nPv_id,
5275
            scheduled_datetime = nSchedDate,
5276
            repeat_secs = nRepeatSecs,
5277
            added_datetime = nAddedDate,
5278
            user_id = nUser_id,
5279
            in_progress = '0'
5280
         WHERE daemon_instructions_id = nInstId;
5281
      ELSE
5282
         raise exc_inst_removed;
5283
      END IF;
5284
 
5285
      CLOSE daemon_inst_cur;
5286
   EXCEPTION
5287
      WHEN DUP_VAL_ON_INDEX
5288
      THEN
5289
         raise_application_error (-20000,
5290
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5291
                                 );
5292
      WHEN exc_inst_removed
5293
      THEN
5294
         raise_application_error (-20000,
5295
                                 'Record was probably deleted by the Buildtool during your edit-form session. Please create a new Daemon Instruction.'
5296
                                 );
5297
      WHEN OTHERS
5298
      THEN
5299
         raise;
5300
   END update_daemon_inst;
5301
 
5302
/*-------------------------------------------------------------------------------------------------------*/
5303
   -- Returns a comma-separated list of operation codes found for a given rtag and pv_id combination
5304
   -- This is for use by the Release Manager Website code.
5305
   --
5306
   FUNCTION daemon_ops_for_rtag_pvid(
5307
      nRtag_id IN NUMBER,
5308
      nPv_id IN NUMBER
5309
   ) RETURN VARCHAR2
5310
   IS
5311
      CURSOR daemon_inst_cur IS
5312
         SELECT di.OP_CODE
5313
         FROM daemon_instructions di
5314
         WHERE di.RTAG_ID = nRtag_id
5315
            AND di.PV_ID = nPv_id;
5316
 
5317
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5318
 
5319
      sRetList VARCHAR2(4000) := '';
5320
 
5321
   BEGIN
5322
      OPEN daemon_inst_cur;
5323
 
5324
      FETCH daemon_inst_cur
5325
      INTO daemon_inst_rec;
5326
 
5327
      WHILE daemon_inst_cur%FOUND
5328
      LOOP
5329
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5330
 
5331
         FETCH daemon_inst_cur
5332
         INTO daemon_inst_rec;
5333
      END LOOP;
5334
 
5335
      CLOSE daemon_inst_cur;
5336
 
5337
      RETURN sRetList;
5338
   END daemon_ops_for_rtag_pvid;
5339
/*-------------------------------------------------------------------------------------------------------*/
5340
   -- Returns a comma-separated list of operation codes found for a given rtag
5341
   -- This is for use by the Release Manager Website code.
5342
   --
5343
   FUNCTION daemon_ops_for_rtag(
5344
      nRtag_id IN NUMBER
5345
   ) RETURN VARCHAR2
5346
   IS
5347
      CURSOR daemon_inst_cur IS
5348
         SELECT di.OP_CODE
5349
         FROM daemon_instructions di
5350
         WHERE di.RTAG_ID = nRtag_id;
5351
 
5352
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5353
 
5354
      sRetList VARCHAR2(4000) := '';
5355
 
5356
   BEGIN
5357
      OPEN daemon_inst_cur;
5358
 
5359
      FETCH daemon_inst_cur
5360
      INTO daemon_inst_rec;
5361
 
5362
      WHILE daemon_inst_cur%FOUND
5363
      LOOP
5364
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5365
 
5366
         FETCH daemon_inst_cur
5367
         INTO daemon_inst_rec;
5368
      END LOOP;
5369
 
5370
      CLOSE daemon_inst_cur;
5371
 
5372
      RETURN sRetList;
5373
   END daemon_ops_for_rtag;
5374
/*-------------------------------------------------------------------------------------------------------*/
5375
   -- Gets a record from the daemon instruction table that can be carried out now and returns the fields
5376
   -- in the record a daemon will need
5377
   -- The Buildtool should use this to find a job to do for a particular release. It should then call
5378
   -- mark_daemon_inst_in_progress(inst_id) before carrying out the work, and then call
5379
   -- mark_daemon_inst_completed(inst_id) to signal its completion.
5380
   -- Can be called repeatedly to get a full list of all instructions for a release, by passing back in
5381
   -- the instruction ID obtained from the previous call (the 1st call should use 0)
5382
   -- Can be called repeatedly to get a full list of all instructions of a specific op-code value for a release,
5383
   -- by passing back in an op-code value of 0 or higher (use -1 if no op-code filtering is needed)
5384
   -- Returns 1 if a record was found, else 0.
5385
   --
5386
   FUNCTION get_daemon_inst(
5387
      nRtag_id IN NUMBER,
5388
      nInst_id IN OUT NUMBER,
5389
      nOp_code IN OUT NUMBER,
5390
      nPv_id OUT NUMBER,
5391
      nUser_id OUT NUMBER,
5392
      nInProgress OUT NUMBER
5393
   ) RETURN NUMBER
5394
   IS
5395
      CURSOR daemon_inst_cur IS
5396
         SELECT di.daemon_instructions_id, di.op_code, di.pv_id ,di.user_id, di.in_progress
5397
           FROM daemon_instructions di
5398
          WHERE di.rtag_id = nRtag_id
5399
            AND di.daemon_instructions_id > nInst_id
5400
            AND di.scheduled_datetime <= ora_sysdatetime
5401
            AND ((nOp_code = -1) OR (nOp_code = di.op_code))
5402
            AND rownum <= 1
5403
       ORDER BY di.daemon_instructions_id;
5404
 
5405
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5406
   BEGIN
5407
      OPEN daemon_inst_cur;
5408
 
5409
      FETCH daemon_inst_cur
5410
      INTO daemon_inst_rec;
5411
 
5412
      -- If we found a record, return it.
5413
      IF daemon_inst_cur%FOUND THEN
5414
         nInst_id := daemon_inst_rec.daemon_instructions_id;
5415
         nOp_code := daemon_inst_rec.op_code;
5416
         nPv_id   := daemon_inst_rec.pv_id;
5417
         nUser_id := daemon_inst_rec.user_id;
5418
         IF daemon_inst_rec.in_progress = '1' THEN
5419
            nInProgress := 1;
5420
         ELSE
5421
            nInProgress := 0;
5422
         END IF;
5423
         CLOSE daemon_inst_cur;
5424
         RETURN 1;
5425
      END IF;
5426
 
5427
      CLOSE daemon_inst_cur;
5428
      RETURN 0;
5429
 
5430
   END get_daemon_inst;
5431
/*-------------------------------------------------------------------------------------------------------*/
5432
   -- Marks a daemon instruction as being processed by a daemon
5433
   -- The Buildtool should use this before it embarks on the work the instruction commands
5434
   --
5435
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER )
5436
   IS
5437
   BEGIN
5438
      UPDATE Daemon_Instructions
5439
      SET in_progress = '1'
5440
      WHERE daemon_instructions_id = nInstId;
5441
 
5442
   END mark_daemon_inst_in_progress;
5443
 
5444
/*-------------------------------------------------------------------------------------------------------*/
5445
   -- Once the Buildtool has finished carrying out the daemon instruction, it should call this stored
5446
   -- procedure in order to either delete the instruction or update it in the case where it is a repeating
5447
   -- instruction.
5448
   --
5449
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER )
5450
   IS
5451
      repSecs NUMBER;
5452
      schedDate  DATE;
5453
 
5454
      CURSOR daemon_inst_cur IS
5455
         SELECT di.REPEAT_SECS AS repSecs, di.SCHEDULED_DATETIME AS schedDate
5456
         FROM daemon_instructions di
5457
         WHERE di.daemon_instructions_id = nInstId;
5458
 
5459
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5460
   BEGIN
5461
      OPEN daemon_inst_cur;
5462
 
5463
      FETCH daemon_inst_cur
5464
      INTO daemon_inst_rec;
5465
 
5466
      IF daemon_inst_cur%FOUND THEN
5467
 
5468
         -- if instruction repeats daily, add 1 day to the scheduled time and update the record
5469
         IF daemon_inst_rec.repSecs = 86400 THEN
5470
            UPDATE Daemon_Instructions
5471
               SET scheduled_datetime = daemon_inst_rec.schedDate + 1,
5472
                  in_progress = '0'
5473
            WHERE daemon_instructions_id = nInstId;
5474
         ELSE
5475
            -- Delete the daemon instruction, we are done with it
5476
            del_daemon_inst(nInstId);
5477
         END IF;
5478
      END IF;
5479
 
5480
      CLOSE daemon_inst_cur;
5481
 
5482
   EXCEPTION
5483
      WHEN OTHERS
5484
      THEN
5485
         raise;
5486
 
5487
   END mark_daemon_inst_completed;
5488
/*-------------------------------------------------------------------------------------------------------*/
5489
   -- This function deletes any old daemon instruction that appears stranded due to a problem that might
5490
   -- have occured during buildtool operation such as might occur if the buildtool or the machine it was
5491
   -- hosted on came down whilst it was processing a daemon instruction.
5492
   PROCEDURE cleanup_stranded_daemon_insts
5493
   IS
5494
   BEGIN
5495
      -- delete records at least two days old
5496
      DELETE FROM daemon_instructions di
5497
      WHERE  (di.scheduled_datetime + 5) <= ora_sysdatetime;
5498
 
5499
   END cleanup_stranded_daemon_insts;
5500
/*-------------------------------------------------------------------------------------------------------*/
5501
  --This function supersedes function, add_daemon. Done for DEVI-046806
5502
   PROCEDURE add_daemon_config (
5503
      nrtagid           IN   NUMBER,
5504
      nbmcon_id         IN   NUMBER,
5505
      sdaemon_mode      IN   VARCHAR2,
5506
      sgbebuildfilter   IN   VARCHAR2
5507
   )
5508
   IS
5509
      nrecordnumber   NUMBER;
5510
      nrconid         NUMBER;
5511
      sdaemonhostname VARCHAR2(50);
5512
      ngbeid         NUMBER;
5513
   BEGIN
5514
      -- Get RCON_ID
5515
      SELECT seq_rcon_id.NEXTVAL
5516
      INTO nrconid
5517
      FROM DUAL;
5518
 
5519
      SELECT COUNT (*)
5520
      INTO nrecordnumber
5521
      FROM release_config
5522
      WHERE rtag_id = nrtagid;
5523
 
5524
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5525
      FROM build_machine_config
5526
      WHERE bmcon_id = nbmcon_id;
5527
 
5528
      INSERT INTO release_config
5529
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
4308 dpurdie 5530
                gbe_id, gbe_buildfilter, bmcon_id)
1373 dpurdie 5531
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
4308 dpurdie 5532
                ngbeid, sgbebuildfilter, nbmcon_id);
1373 dpurdie 5533
 
5534
      -- A newly configured daemon should initially be paused (DEVI-047277)
5535
      INSERT INTO run_level
5536
                  (rcon_id, pause)
5537
           VALUES (nrconid, 2);
5538
 
5539
   END;
5540
 
5541
/*-------------------------------------------------------------------------------------------------------*/
5542
  --This function supersedes function, update_daemon. Done for DEVI-046806
5543
   PROCEDURE update_daemon_config (
5544
      nrconid           IN   NUMBER,
5545
      nbmcon_id         IN   NUMBER,
5546
      sdaemon_mode      IN   VARCHAR2,
5547
      sgbebuildfilter   IN   VARCHAR2
5548
   )
5549
   IS
5550
      sdaemonhostname VARCHAR2(50);
5551
      ngbeid         NUMBER;
5552
   BEGIN
5553
 
5554
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5555
      FROM build_machine_config
5556
      WHERE bmcon_id = nbmcon_id;
5557
 
5558
      UPDATE release_config
5559
         SET daemon_hostname = sdaemonhostname,
5560
            gbe_id = ngbeid,
5561
            daemon_mode = sdaemon_mode,
4308 dpurdie 5562
            gbe_buildfilter = sgbebuildfilter,
5563
            bmcon_id = nbmcon_id 
1373 dpurdie 5564
      WHERE rcon_id = nrconid;
5565
   END;
5566
 
5567
 
5568
/*-------------------------------------------------------------------------------------------------------*/
5569
   PROCEDURE add_build_machine (
5570
      sdisplay_name          IN   VARCHAR2,
5571
      smachine_hostname      IN   VARCHAR2,
5572
      ngbeid                 IN   NUMBER,
5573
      sdescription           IN   VARCHAR2
5574
   )
5575
   IS
5576
      nrecordnumber   NUMBER;
5577
      nbmcon_id       NUMBER;
5578
   BEGIN
5579
      -- Get BMCON_ID
5580
      SELECT seq_bmcon_id.NEXTVAL INTO nbmcon_id FROM DUAL;
5581
 
5582
      INSERT INTO build_machine_config(bmcon_id, display_name, machine_hostname,gbe_id,description)
5583
            VALUES (nbmcon_id,sdisplay_name,smachine_hostname,ngbeid,sdescription);
5584
 
5585
   EXCEPTION
5586
      WHEN DUP_VAL_ON_INDEX
5587
      THEN
5588
         raise_application_error (-20000,
5589
                                 'Cannot have duplicate machines.'
5590
                                 );
5591
 
5592
   END;
5593
 
5594
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 5595
 PROCEDURE duplicate_daemon_config (
5596
      nrtagid           IN   NUMBER,
5597
      nbmcon_id         IN   NUMBER,
5598
      sdaemonhostname   IN   VARCHAR2,
5599
      ngbe_id           IN   NUMBER,
5600
      sdaemon_mode      IN   VARCHAR2,
5601
      sgbebuildfilter   IN   VARCHAR2
5602
   )
5603
   IS
5604
      nrecordnumber   NUMBER;
5605
      nrconid         NUMBER;
5606
    BEGIN
5607
 
5608
      -- Get RCON_ID
5609
      SELECT seq_rcon_id.NEXTVAL
5610
      INTO nrconid
5611
      FROM DUAL;
5612
 
5613
      INSERT INTO release_config
5614
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5615
                gbe_id, gbe_buildfilter, bmcon_id)
5616
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
5617
                ngbe_id, sgbebuildfilter, nbmcon_id);
5618
 
5619
    -- A newly configured daemon should initially be disabled (DEVI-047277)
5620
      INSERT INTO run_level
5621
                  (rcon_id, pause)
5622
           VALUES (nrconid, 2);
5623
 
5624
   END;
5625
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 5626
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2)
5627
   IS
5628
   BEGIN
5629
      DELETE FROM build_machine_config
5630
            WHERE bmcon_id IN (
5631
                     SELECT * FROM THE
5632
                              (SELECT CAST
5633
                                          (in_list_number (sbmcon_id_list) AS relmgr_number_tab_t
5634
                                          )
5635
                                 FROM DUAL
5636
                              ));
5637
   END;
5638
 
5639
 
5640
/*-------------------------------------------------------------------------------------------------------*/
5641
   PROCEDURE update_build_machine (
5642
      nbmcon_id              IN   NUMBER,
5643
      sdisplay_name          IN   VARCHAR2,
5644
      smachine_hostname      IN   VARCHAR2,
5645
      ngbeid                 IN   NUMBER,
5646
      sdescription           IN   VARCHAR2
5647
   )
5648
   IS
5649
   BEGIN
5650
      UPDATE build_machine_config
5651
         SET display_name = sdisplay_name,
5652
             machine_hostname = smachine_hostname,
5653
             gbe_id = ngbeid,
5654
             description = sdescription
5655
      WHERE bmcon_id = nbmcon_id;
5656
   EXCEPTION
5657
      WHEN DUP_VAL_ON_INDEX
5658
      THEN
5659
         raise_application_error (-20000,
5660
                                 'Cannot have duplicate machines.'
5661
                                 );
5662
   END;
4553 dpurdie 5663
 
5664
/*-------------------------------------------------------------------------------------------------------*/
5665
PROCEDURE import_daemons ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
5666
 
5667
   sSourceLocation VARCHAR2(4000);
5668
   sTargetLocation VARCHAR2(4000);
5669
   ProjId NUMBER;
5670
   cReleaseMode CHAR(1);
5671
   RconId NUMBER;
5672
 
5673
   -- this cursor gets the source release daemon configurations, ensuring that the
5674
   -- first record will be the master daemon, and subsequent records will be the slaves.
5675
   CURSOR curSrcReleaseConfigs IS
5676
    SELECT daemon_hostname, gbe_id, gbe_buildfilter, bmcon_id, daemon_mode
5677
     FROM RELEASE_CONFIG rc
5678
    WHERE rc.RTAG_ID = nSourceRtagId
5679
    ORDER BY rc.daemon_mode;
5680
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
5681
 
5682
    -- this cursor looks for target release daemons
5683
   CURSOR curTgtReleaseConfigs IS
5684
    SELECT rcon_id
5685
     FROM RELEASE_CONFIG rc
5686
    WHERE rc.RTAG_ID = nTargetRtagId;
5687
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
5688
 
5689
    -- this cursor looks for target release daemon run level entries
5690
   CURSOR curTgtReleaseConfigRunLevel IS
5691
    SELECT current_run_level
5692
     FROM RUN_LEVEL rl
5693
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
5694
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
5695
 
5696
BEGIN
5697
   /*--------------- Business Rules Here -------------------*/
5698
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
5699
   THEN
5700
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
5701
   END IF;
5702
 
5703
   IF (nSourceRtagId = nTargetRtagId) THEN
5704
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
5705
   END IF;
5706
 
5707
   -- Check if Target release is in OPEN mode
5708
   SELECT rt.OFFICIAL  INTO  cReleaseMode
5709
     FROM RELEASE_TAGS rt
5710
    WHERE rt.RTAG_ID = nTargetRtagId;
5711
 
5712
   IF (cReleaseMode != 'N') THEN
5713
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
5714
   END IF;
5715
 
5716
   -- check that the target release's daemons are all paused before we allow an import operation
5717
   OPEN curTgtReleaseConfigs;
5718
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
5719
 
5720
   WHILE curTgtReleaseConfigs%FOUND
5721
   LOOP
5722
      OPEN curTgtReleaseConfigRunLevel;
5723
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
5724
      IF curTgtReleaseConfigRunLevel%FOUND THEN
5725
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
5726
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
5727
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
5728
         END IF;
5729
      ELSE
5730
         -- we don't know what the daemon run level is so err on the side of caution
5731
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
5732
      END IF;
5733
      CLOSE curTgtReleaseConfigRunLevel;
5734
 
5735
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
5736
   END LOOP;
5737
 
5738
   CLOSE curTgtReleaseConfigs;
5739
 
5740
 
5741
   /*-------------------------------------------------------*/
5742
 
5743
   --Import Release Configuration Information
5744
   OPEN curSrcReleaseConfigs;
5745
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
5746
 
5747
     WHILE curSrcReleaseConfigs%FOUND
5748
   LOOP
5749
      -- add a daemon to the target release
5750
      PK_BUILDAPI.duplicate_daemon_config( nTargetRtagId, 
5751
                                     recSrcReleaseConfigs.bmcon_id, 
5752
                                     recSrcReleaseConfigs.daemon_hostname, 
5753
                                     recSrcReleaseConfigs.gbe_id, 
5754
                                     recSrcReleaseConfigs.daemon_mode ,
5755
                                     recSrcReleaseConfigs.gbe_buildfilter );
5756
 
5757
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
5758
   END LOOP;
5759
 
5760
   CLOSE curSrcReleaseConfigs;
5761
 
5762
 
5763
   /* Log Project Action */
5764
   -- Get Source Location
5765
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
5766
     FROM RELEASE_TAGS rt,
5767
           PROJECTS pr
5768
    WHERE rt.PROJ_ID = pr.PROJ_ID
5769
      AND rt.RTAG_ID = nSourceRtagId;
5770
 
5771
   -- Get Target Location
5772
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
5773
     FROM RELEASE_TAGS rt,
5774
           PROJECTS pr
5775
    WHERE rt.PROJ_ID = pr.PROJ_ID
5776
      AND rt.RTAG_ID = nTargetRtagId;
5777
 
5778
   -- Get project id
5779
   SELECT rt.PROJ_ID  INTO  ProjId
5780
     FROM RELEASE_TAGS rt
5781
    WHERE rt.RTAG_ID = nTargetRtagId;
5782
 
5783
   Log_Project_Action ( ProjId, 'import_daemon_configuration', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
5784
END;
5785
 
1373 dpurdie 5786
END pk_buildapi;
4040 dpurdie 5787
 
1374 dpurdie 5788
/
1373 dpurdie 5789
 
4040 dpurdie 5790
/
5791
--------------------------------------------------------
5792
--  DDL for Package Body PK_ENVIRONMENT
5793
--------------------------------------------------------
5794
 
1373 dpurdie 5795
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
5796
IS
5797
 
5798
   /*-------------------------------------------------------------------------------------------------------*/
5799
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
5800
     RETURN NUMBER
5801
   IS
5802
   BEGIN
5803
      /*
5804
     || N - unlocked
5805
     || Y - release and locked
5806
     || P - penging approval
5807
     || A - approved package ready for auto-build
5808
     */
5809
     IF cdlock = 'N' OR cdlock = 'R'
5810
     THEN
5811
       -- WORK IN PROGRESS --
5812
       RETURN 0;
5813
     ELSIF cdlock = 'P' OR cdlock = 'A'
5814
     THEN
5815
       -- PENDING --
5816
       RETURN 1;
5817
     ELSIF cdlock = 'Y'
5818
     THEN
5819
       -- RELEASED --
5820
       RETURN 2;
5821
     ELSE
5822
       -- NOT FOUND --
5823
       raise_application_error
5824
                   (-20000,
5825
                      'Cannot decide where to place package. [cDlock='
5826
                    || cdlock
5827
                    || ']'
5828
                   );
5829
     END IF;
5830
   END;
5831
 
5832
/*-------------------------------------------------------------------------------------------------------*/
5833
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
5834
     RETURN NUMBER
5835
   IS
5836
     envtab   NUMBER         := -1;
5837
 
5838
     CURSOR curarea
5839
     IS
5840
       SELECT 2 AS envtab
5841
         FROM release_content rc
5842
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5843
       UNION
5844
       SELECT 0 AS envtab
5845
         FROM work_in_progress wip
5846
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5847
       UNION
5848
       SELECT 1 AS envtab
5849
         FROM planned pl
5850
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5851
 
5852
     recarea   curarea%ROWTYPE;
5853
   BEGIN
5854
     OPEN curarea;
5855
 
5856
     FETCH curarea
5857
      INTO recarea;
5858
 
5859
     IF curarea%FOUND
5860
     THEN
5861
       envtab := recarea.envtab;
5862
     END IF;
5863
 
5864
     CLOSE curarea;
5865
 
5866
     RETURN envtab;
5867
   END;
5868
 
5869
/*-------------------------------------------------------------------------------------------------------*/
5870
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
5871
     RETURN NUMBER
5872
   IS
5873
     ispatch   package_versions.dlocked%TYPE;
5874
     viewid   NUMBER                    := -1;
5875
 
5876
     CURSOR curview
5877
     IS
5878
       SELECT rc.base_view_id AS view_id
5879
         FROM release_content rc
5880
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5881
       UNION
5882
       SELECT wip.view_id AS view_id
5883
         FROM work_in_progress wip
5884
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5885
       UNION
5886
       SELECT pl.view_id AS view_id
5887
         FROM planned pl
5888
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5889
 
5890
     recview   curview%ROWTYPE;
5891
   BEGIN
5892
     -- Get dlock state
5893
     SELECT pv.is_patch
5894
      INTO ispatch
5895
      FROM package_versions pv
5896
      WHERE pv.pv_id = pvid;
5897
 
5898
     -- Decide which view id should package go under.
5899
     IF (ispatch != 'Y') OR (ispatch IS NULL)
5900
     THEN
5901
       -- Get VIEW ID of Package
5902
       OPEN curview;
5903
 
5904
       FETCH curview
5905
        INTO recview;
5906
 
5907
       IF curview%FOUND
5908
       THEN
5909
         viewid := recview.view_id;
5910
       ELSE
5911
         raise_application_error
5912
            (-20000,
5913
               'Cannot find view_id to proceed. [PvId='
5914
            || pvid
5915
            || ']. The current version may not exist in the release anymore.'
5916
            );
5917
       END IF;
5918
 
5919
       CLOSE curview;
5920
     ELSE
5921
       -- Get VIEW ID of Patch (view id of parent package)
5922
       SELECT rc.base_view_id
5923
         INTO viewid
5924
         FROM release_content rc, package_patches ppv
5925
        WHERE rc.rtag_id = rtagid
5926
         AND rc.pv_id = ppv.pv_id
5927
         AND ppv.patch_id = pvid;
5928
     END IF;
5929
 
5930
     RETURN viewid;
5931
   END;
5932
 
5933
/*-------------------------------------------------------------------------------------------------------*/
5934
   PROCEDURE add_package (
5935
     pvid    IN   NUMBER,
5936
     viewid   IN   NUMBER,
5937
     rtagid   IN   NUMBER,
5938
     userid   IN   NUMBER
5939
   )
5940
   IS
5941
     dlocked   package_versions.dlocked%TYPE;
5942
     envtab   NUMBER;
5943
   BEGIN
5944
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
5945
     THEN
5946
       -- Get dlock state
5947
       SELECT pv.dlocked
5948
         INTO dlocked
5949
         FROM package_versions pv
5950
        WHERE pv.pv_id = pvid;
5951
 
5952
       -- Get which area should go under
5953
       envtab := select_environment_area (dlocked);
5954
       -- Log
5955
       log_action (pvid, 'action', userid, 'Start of Package Add...');
5956
 
5957
       -- Remove Package
5958
       IF envtab = 0
5959
       THEN
5960
         -- WORK IN PROGRESS --
5961
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
5962
       ELSIF envtab = 1
5963
       THEN
5964
         -- PENDING --
5965
         pk_planned.add_package (pvid, viewid, rtagid, userid);
5966
       ELSIF envtab = 2
5967
       THEN
5968
         -- RELEASED --
5969
         -- NOTE: this package will be replaced with matching package
5970
         pk_release.add_package (pvid, viewid, rtagid, userid);
5971
         -- Now do post Release Actions
5972
         pk_release.run_post_actions (pvid, rtagid);
5973
       END IF;
5974
 
5975
       -- Log
5976
       log_action (pvid, 'action', userid, 'End of Package Add...');
5977
     END IF;
5978
   END;
5979
 
5980
/*-------------------------------------------------------------------------------------------------------*/
5981
   PROCEDURE add_package_bulk (
5982
     pvidlist   IN   VARCHAR2,
5983
     viewid    IN   NUMBER,
5984
     rtagid    IN   NUMBER,
5985
     userid    IN   NUMBER
5986
   )
5987
   IS
5988
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
5989
                                                        ();
5990
     dlocked      package_versions.dlocked%TYPE;
5991
     pvid         NUMBER;
5992
     envtab       NUMBER;
5993
   BEGIN
5994
     /*--------------- Business Rules Here -------------------*/
5995
     IF (pvidlist IS NULL)
5996
     THEN
5997
       raise_application_error (-20000,
5998
                          'Please select at least one package.'
5999
                         );
6000
     END IF;
6001
 
6002
/*-------------------------------------------------------*/
6003
     nidcollector := in_list_number (pvidlist);
6004
 
6005
     FOR i IN 1 .. nidcollector.COUNT
6006
     LOOP
6007
       pvid := nidcollector (i);
6008
       add_package (pvid, viewid, rtagid, userid);
6009
     END LOOP;
6010
   END;
6011
 
6012
/*-------------------------------------------------------------------------------------------------------*/
6013
   PROCEDURE replace_package (
6014
     newpvid  IN   NUMBER,
6015
     oldpvid  IN   NUMBER,
6016
     rtagid   IN   NUMBER,
6017
     userid   IN   NUMBER
6018
   )
6019
   IS
6020
     dlocked      package_versions.dlocked%TYPE;
6021
     viewid       NUMBER;
6022
     envtab       NUMBER;
6023
     ROWCOUNT     NUMBER;
6024
     creleasemode CHAR (1);
6025
     npkgid       NUMBER;
6026
   BEGIN
6027
     /*--------------- Business Rules Here -------------------*/
6028
     -- Check if oldPvId exists. It could have been removed
6029
     SELECT COUNT (pv.pv_id)
6030
       INTO ROWCOUNT
6031
       FROM package_versions pv
6032
      WHERE pv.pv_id = oldpvid;
6033
 
6034
/*-------------------------------------------------------*/
6035
 
6036
     /* This procedure is usually used by "History" option in Release Manager */
6037
 
6038
     -- Get dlock state
6039
     SELECT pv.dlocked
6040
       INTO dlocked
6041
       FROM package_versions pv
6042
      WHERE pv.pv_id = newpvid;
6043
 
6044
     -- Get VIEW_ID ---
6045
     IF ROWCOUNT = 1
6046
     THEN
6047
       viewid := get_view_location (oldpvid, rtagid);
6048
     ELSE
6049
       -- Set ViewID to default
6050
       viewid := 7;
6051
     END IF;
6052
 
6053
     -- Get which area should go under
6054
     envtab := select_environment_area (dlocked);
6055
     -- Log
6056
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
6057
 
6058
     -- Replace package
6059
     IF envtab = 0
6060
     THEN
6061
       -- WORK IN PROGRESS --
6062
 
6063
       -- Delete old package
6064
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
6065
 
6066
       -- Add new package
6067
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
6068
     ELSIF envtab = 1
6069
     THEN
6070
       -- PENDING --
6071
 
6072
       -- Delete old package
6073
       pk_planned.remove_package (oldpvid, rtagid, userid);
6074
 
6075
       -- Add new package
6076
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
6077
     ELSIF envtab = 2
6078
     THEN
6079
       -- RELEASED --
6080
 
6081
       -- Delete old package
6082
       pk_release.remove_package (oldpvid, rtagid, userid);
6083
       -- Add new package
6084
       pk_release.add_package (newpvid, viewid, rtagid, userid);
6085
 
6086
       -- update the pegging table
6087
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
6088
 
6089
       -- update the advisory ripple table
6090
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
6091
 
6092
       -- Now do post Release Actions
6093
       pk_release.run_post_actions (newpvid, rtagid);
6094
     END IF;
6095
 
6096
     -- Log
6097
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
6098
   END;
6099
 
6100
/*-------------------------------------------------------------------------------------------------------*/
6101
   FUNCTION remove_package (
6102
     pvid        IN   NUMBER,
6103
     rtagid      IN   NUMBER,
6104
     userid      IN   NUMBER,
6105
     forceremove IN   CHAR
6106
   )
6107
     RETURN NUMBER
6108
   IS
6109
     envtab      NUMBER;
6110
     isused      BOOLEAN;
6111
     recordcount   NUMBER;
6112
   BEGIN
6113
/*--------------- Business Rules Here -------------------*/
6114
/*-------------------------------------------------------*/
6115
 
6116
     -- Find location of package
6117
     envtab := get_package_area (pvid, rtagid);
6118
 
6119
     -- Remove Package
6120
     IF envtab = 0
6121
     THEN
6122
       -- WORK IN PROGRESS --
6123
       -- Delete package
6124
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6125
 
6126
       RETURN 0;
6127
     ELSIF envtab = 1
6128
     THEN
6129
       -- PENDING --
6130
       -- Delete package
6131
       pk_planned.remove_package (pvid, rtagid, userid);
6132
 
6133
       RETURN 0;
6134
     ELSIF envtab = 2
6135
     THEN
6136
       -- RELEASED --
6137
 
6138
       -- Check if is used by other packages
6139
       isused := TRUE;
6140
 
6141
       IF forceremove = 'N'
6142
       THEN
6143
         SELECT COUNT (pv.pv_id)
6144
           INTO recordcount
6145
           FROM (SELECT dpv.pkg_id, dpv.v_ext
6146
                 FROM release_content rc,
6147
                     package_dependencies dep,
6148
                     package_versions dpv
6149
                WHERE rc.rtag_id = rtagid
6150
                  AND rc.pv_id = dep.pv_id
6151
                  AND dep.dpv_id = dpv.pv_id) rdep,
6152
               package_versions pv
6153
          WHERE pv.pkg_id = rdep.pkg_id
6154
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
6155
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
6156
            AND pv.pv_id = pvid;
6157
 
6158
         IF recordcount > 0
6159
         THEN
6160
            RETURN 1;               -- Return 1 as package being used
6161
         ELSE
6162
            isused := FALSE;
6163
         END IF;
6164
       END IF;
6165
 
6166
       IF forceremove = 'Y' OR NOT isused
6167
       THEN
6168
         -- Delete old package
6169
         pk_release.remove_package (pvid, rtagid, userid);
6170
 
6171
         -- Delete old package's pegging info
6172
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
6173
 
6174
         -- Delete old package's advisory ripple info
6175
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
6176
 
6177
         -- Now do post Release Actions
6178
         pk_release.run_post_actions (pvid, rtagid);
6179
         RETURN 0;
6180
       END IF;
6181
     END IF;
6182
   END;
6183
 
6184
/*-------------------------------------------------------------------------------------------------------*/
6185
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6186
 
6187
   PROCEDURE get_environment_items (
6188
     viewtype         IN      NUMBER,
6189
     userid           IN      NUMBER,
6190
     rtagid           IN      NUMBER,
6191
     sviewidshowlist  IN      VARCHAR2,
6192
     ntruerecordcount OUT     NUMBER,
6193
     recordset        OUT     typecur
6194
   )
6195
   IS
6196
   BEGIN
6197
     -- Get true record count because views can give false count
6198
     SELECT COUNT (pl.pv_id)
6199
      INTO ntruerecordcount
6200
      FROM environment_view pl
6201
      WHERE pl.rtag_id = rtagid;
6202
 
6203
     IF viewtype = 1
6204
     THEN
6205
       /*--- GUEST VIEW ---*/
6206
       OPEN recordset FOR
6207
         SELECT   *
6208
            FROM (
6209
                 /* Base Views collapsed */
6210
                 SELECT DISTINCT vi.view_id, vi.view_name,
6211
                             TO_NUMBER (NULL) AS pkg_state,
6212
                             TO_NUMBER (NULL) AS deprecated_state,
6213
                             TO_NUMBER (NULL) AS pv_id,
6214
                             NULL AS pkg_name, NULL AS pkg_version,
6215
                             NULL AS dlocked, NULL AS pv_description,
6216
                             rel.operation
6217
                         FROM environment_view rel, views vi
6218
                        WHERE rel.view_id = vi.view_id
6219
                          AND rtag_id = rtagid
6220
                          AND rel.view_id NOT IN (
6221
                               SELECT *
6222
                                 FROM THE
6223
                                       (SELECT CAST
6224
                                               (in_list_number
6225
                                                  (sviewidshowlist
6226
                                                  ) AS relmgr_number_tab_t
6227
                                               )
6228
                                         FROM DUAL
6229
                                       ))
6230
                 UNION
6231
                 /* Base Views expanded */
6232
                 SELECT vi.view_id, vi.view_name,
6233
                      DECODE (rel.pkg_state,
6234
                            NULL, 0,
6235
                            rel.pkg_state
6236
                           ) AS pkg_state,
6237
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6238
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6239
                      rel.operation
6240
                  FROM environment_view rel,
6241
                      PACKAGES pkg,
6242
                      package_versions pv,
6243
                      views vi
6244
                  WHERE pv.pkg_id = pkg.pkg_id
6245
                   AND rel.pv_id = pv.pv_id
6246
                   AND rel.view_id = vi.view_id
6247
                   AND rel.view_id IN (
6248
                        SELECT *
6249
                          FROM THE
6250
                                (SELECT CAST
6251
                                        (in_list_number
6252
                                               (sviewidshowlist) AS relmgr_number_tab_t
6253
                                        )
6254
                                  FROM DUAL
6255
                                ))
6256
                   AND rtag_id = rtagid) ord
6257
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6258
     ELSIF viewtype = 2
6259
     THEN
6260
       /*--- PERSONAL VIEW ---*/
6261
       OPEN recordset FOR
6262
         SELECT   *
6263
            FROM (
6264
                 /* Base Views collapsed */
6265
                 SELECT DISTINCT vi.view_id, vi.view_name,
6266
                             TO_NUMBER (NULL) AS pkg_state,
6267
                             TO_NUMBER (NULL) AS deprecated_state,
6268
                             TO_NUMBER (NULL) AS pv_id,
6269
                             NULL AS pkg_name, NULL AS pkg_version,
6270
                             NULL AS dlocked, NULL AS pv_description,
6271
                             rel.operation
6272
                         FROM environment_view rel,
6273
                             view_settings vs,
6274
                             views vi
6275
                        WHERE rel.view_id = vi.view_id
6276
                          AND vs.view_id = rel.view_id
6277
                          AND vs.user_id = userid
6278
                          AND rtag_id = rtagid
6279
                          AND rel.view_id NOT IN (
6280
                               SELECT *
6281
                                 FROM THE
6282
                                       (SELECT CAST
6283
                                               (in_list_number
6284
                                                  (sviewidshowlist
6285
                                                  ) AS relmgr_number_tab_t
6286
                                               )
6287
                                         FROM DUAL
6288
                                       ))
6289
                 UNION
6290
                 /* Base Views expanded */
6291
                 SELECT vi.view_id, vi.view_name,
6292
                      DECODE (rel.pkg_state,
6293
                            NULL, 0,
6294
                            rel.pkg_state
6295
                           ) AS pkg_state,
6296
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6297
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6298
                      rel.operation
6299
                  FROM environment_view rel,
6300
                      PACKAGES pkg,
6301
                      package_versions pv,
6302
                      views vi,
6303
                      view_settings vs
6304
                  WHERE pv.pkg_id = pkg.pkg_id
6305
                   AND rel.pv_id = pv.pv_id
6306
                   AND rel.view_id = vi.view_id
6307
                   AND vs.view_id = vi.view_id
6308
                   AND vs.user_id = userid
6309
                   AND rel.view_id IN (
6310
                        SELECT *
6311
                          FROM THE
6312
                                (SELECT CAST
6313
                                        (in_list_number
6314
                                               (sviewidshowlist) AS relmgr_number_tab_t
6315
                                        )
6316
                                  FROM DUAL
6317
                                ))
6318
                   AND rtag_id = rtagid
6319
                 UNION
6320
                 /* Private Views collapsed */
6321
                 SELECT vi.view_id, vi.view_name,
6322
                      TO_NUMBER (NULL) AS pkg_state,
6323
                      TO_NUMBER (NULL) AS deprecated_state,
6324
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6325
                      NULL AS pkg_version, NULL AS dlocked,
6326
                      NULL AS pv_description,
6327
                      rel.operation
6328
                  FROM view_settings vs,
6329
                      view_def vd,
6330
                      views vi,
6331
                      environment_view rel,
6332
                      package_versions pv
6333
                  WHERE vs.view_id = vi.view_id
6334
                   AND rel.pv_id = pv.pv_id
6335
                   AND vd.pkg_id = pv.pkg_id
6336
                   AND vd.view_id = vi.view_id
6337
                   AND vi.base_view = 'N'
6338
                   AND rel.rtag_id = rtagid
6339
                   AND vs.user_id = userid
6340
                   AND vi.view_id NOT IN (
6341
                        SELECT *
6342
                          FROM THE
6343
                                (SELECT CAST
6344
                                        (in_list_number
6345
                                               (sviewidshowlist) AS relmgr_number_tab_t
6346
                                        )
6347
                                  FROM DUAL
6348
                                ))
6349
                 UNION
6350
                 /* Private Views expanded */
6351
                 SELECT vi.view_id, vi.view_name,
6352
                      DECODE (rel.pkg_state,
6353
                            NULL, 0,
6354
                            rel.pkg_state
6355
                           ) AS pkg_state,
6356
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6357
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6358
                      rel.operation
6359
                  FROM users usr,
6360
                      view_settings vs,
6361
                      view_def vd,
6362
                      views vi,
6363
                      environment_view rel,
6364
                      PACKAGES pkg,
6365
                      package_versions pv
6366
                  WHERE vs.user_id = usr.user_id
6367
                   AND vs.view_id = vi.view_id
6368
                   AND vd.view_id = vi.view_id
6369
                   AND pv.pkg_id = pkg.pkg_id
6370
                   AND rel.pv_id = pv.pv_id
6371
                   AND rel.rtag_id = rtagid
6372
                   AND vd.pkg_id = pkg.pkg_id
6373
                   AND vi.base_view = 'N'
6374
                   AND vi.view_id IN (
6375
                        SELECT *
6376
                          FROM THE
6377
                                (SELECT CAST
6378
                                        (in_list_number
6379
                                               (sviewidshowlist) AS relmgr_number_tab_t
6380
                                        )
6381
                                  FROM DUAL
6382
                                ))
6383
                   AND usr.user_id = userid) ord
6384
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6385
     END IF;
6386
   END;
6387
 
6388
/*-------------------------------------------------------------------------------------------------------*/
6389
   PROCEDURE get_released_items (
6390
     viewtype         IN      NUMBER,
6391
     userid           IN      NUMBER,
6392
     rtagid           IN      NUMBER,
6393
     sviewidshowlist  IN      VARCHAR2,
6394
     ntruerecordcount OUT     NUMBER,
6395
     recordset        OUT     typecur
6396
   )
6397
   IS
6398
   BEGIN
6399
     -- Get true record count because views can give false count
6400
     SELECT COUNT (rc.pv_id)
6401
      INTO ntruerecordcount
6402
      FROM release_content rc
6403
      WHERE rc.rtag_id = rtagid;
6404
 
6405
     IF viewtype = 1
6406
     THEN
6407
       /*--- GUEST VIEW ---*/
6408
       OPEN recordset FOR
6409
         SELECT   *
6410
            FROM (
6411
                 /* Base Views collapsed */
6412
                 SELECT DISTINCT vi.view_id, vi.view_name,
6413
                             TO_NUMBER (NULL) AS pkg_state,
6414
                             TO_NUMBER (NULL) AS deprecated_state,
6415
                             TO_NUMBER (NULL) AS pv_id,
6416
                             NULL AS pkg_name, NULL AS pkg_version,
6417
                             NULL AS dlocked, NULL AS pv_description
6418
                         FROM release_content rel, views vi
6419
                        WHERE rel.base_view_id = vi.view_id
6420
                          AND rtag_id = rtagid
6421
                          AND rel.base_view_id NOT IN (
6422
                               SELECT *
6423
                                 FROM THE
6424
                                       (SELECT CAST
6425
                                               (in_list_number
6426
                                                  (sviewidshowlist
6427
                                                  ) AS relmgr_number_tab_t
6428
                                               )
6429
                                         FROM DUAL
6430
                                       ))
6431
                 UNION
6432
                 /* Base Views expanded */
6433
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6434
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6435
                      pv.pkg_version, pv.dlocked, pv.pv_description
6436
                  FROM release_content rel,
6437
                      PACKAGES pkg,
6438
                      package_versions pv,
6439
                      views vi
6440
                  WHERE pv.pkg_id = pkg.pkg_id
6441
                   AND rel.pv_id = pv.pv_id
6442
                   AND rel.base_view_id = vi.view_id
6443
                   AND rel.base_view_id IN (
6444
                        SELECT *
6445
                          FROM THE
6446
                                (SELECT CAST
6447
                                        (in_list_number
6448
                                               (sviewidshowlist) AS relmgr_number_tab_t
6449
                                        )
6450
                                  FROM DUAL
6451
                                ))
6452
                   AND rtag_id = rtagid) ord
6453
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6454
     ELSIF viewtype = 2
6455
     THEN
6456
       /*--- PERSONAL VIEW ---*/
6457
       OPEN recordset FOR
6458
         SELECT   *
6459
            FROM (
6460
                 /* Base Views collapsed */
6461
                 SELECT DISTINCT vi.view_id, vi.view_name,
6462
                             TO_NUMBER (NULL) AS pkg_state,
6463
                             TO_NUMBER (NULL) AS deprecated_state,
6464
                             TO_NUMBER (NULL) AS pv_id,
6465
                             NULL AS pkg_name, NULL AS pkg_version,
6466
                             NULL AS dlocked, NULL AS pv_description
6467
                         FROM release_content rel,
6468
                             view_settings vs,
6469
                             views vi
6470
                        WHERE rel.base_view_id = vi.view_id
6471
                          AND vs.view_id = rel.base_view_id
6472
                          AND vs.user_id = userid
6473
                          AND rtag_id = rtagid
6474
                          AND rel.base_view_id NOT IN (
6475
                               SELECT *
6476
                                 FROM THE
6477
                                       (SELECT CAST
6478
                                               (in_list_number
6479
                                                  (sviewidshowlist
6480
                                                  ) AS relmgr_number_tab_t
6481
                                               )
6482
                                         FROM DUAL
6483
                                       ))
6484
                 UNION
6485
                 /* Base Views expanded */
6486
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6487
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6488
                      pv.pkg_version, pv.dlocked, pv.pv_description
6489
                  FROM release_content rel,
6490
                      PACKAGES pkg,
6491
                      package_versions pv,
6492
                      views vi,
6493
                      view_settings vs
6494
                  WHERE pv.pkg_id = pkg.pkg_id
6495
                   AND rel.pv_id = pv.pv_id
6496
                   AND rel.base_view_id = vi.view_id
6497
                   AND vs.view_id = vi.view_id
6498
                   AND vs.user_id = userid
6499
                   AND rel.base_view_id IN (
6500
                        SELECT *
6501
                          FROM THE
6502
                                (SELECT CAST
6503
                                        (in_list_number
6504
                                               (sviewidshowlist) AS relmgr_number_tab_t
6505
                                        )
6506
                                  FROM DUAL
6507
                                ))
6508
                   AND rtag_id = rtagid
6509
                 UNION
6510
                 /* Private Views collapsed */
6511
                 SELECT vi.view_id, vi.view_name,
6512
                      TO_NUMBER (NULL) AS pkg_state,
6513
                      TO_NUMBER (NULL) AS deprecated_state,
6514
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6515
                      NULL AS pkg_version, NULL AS dlocked,
6516
                      NULL AS pv_description
6517
                  FROM view_settings vs,
6518
                      view_def vd,
6519
                      views vi,
6520
                      release_content rel,
6521
                      package_versions pv
6522
                  WHERE vs.view_id = vi.view_id
6523
                   AND rel.pv_id = pv.pv_id
6524
                   AND vd.pkg_id = pv.pkg_id
6525
                   AND vd.view_id = vi.view_id
6526
                   AND vi.base_view = 'N'
6527
                   AND rel.rtag_id = rtagid
6528
                   AND vs.user_id = userid
6529
                   AND vi.view_id NOT IN (
6530
                        SELECT *
6531
                          FROM THE
6532
                                (SELECT CAST
6533
                                        (in_list_number
6534
                                               (sviewidshowlist) AS relmgr_number_tab_t
6535
                                        )
6536
                                  FROM DUAL
6537
                                ))
6538
                 UNION
6539
                 /* Private Views expanded */
6540
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6541
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6542
                      pv.pkg_version, pv.dlocked, pv.pv_description
6543
                  FROM users usr,
6544
                      view_settings vs,
6545
                      view_def vd,
6546
                      views vi,
6547
                      release_content rel,
6548
                      PACKAGES pkg,
6549
                      package_versions pv
6550
                  WHERE vs.user_id = usr.user_id
6551
                   AND vs.view_id = vi.view_id
6552
                   AND vd.view_id = vi.view_id
6553
                   AND pv.pkg_id = pkg.pkg_id
6554
                   AND rel.pv_id = pv.pv_id
6555
                   AND rel.rtag_id = rtagid
6556
                   AND vd.pkg_id = pkg.pkg_id
6557
                   AND vi.base_view = 'N'
6558
                   AND vi.view_id IN (
6559
                        SELECT *
6560
                          FROM THE
6561
                                (SELECT CAST
6562
                                        (in_list_number
6563
                                               (sviewidshowlist) AS relmgr_number_tab_t
6564
                                        )
6565
                                  FROM DUAL
6566
                                ))
6567
                   AND usr.user_id = userid) ord
6568
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6569
     END IF;
6570
   END;
6571
 
6572
/*-------------------------------------------------------------------------------------------------------*/
6573
   PROCEDURE get_work_in_progress_items (
6574
     viewtype         IN      NUMBER,
6575
     userid           IN      NUMBER,
6576
     rtagid           IN      NUMBER,
6577
     sviewidshowlist  IN      VARCHAR2,
6578
     ntruerecordcount OUT     NUMBER,
6579
     recordset        OUT     typecur
6580
   )
6581
   IS
6582
   BEGIN
6583
     -- Get true record count because views can give false count
6584
     SELECT COUNT (wip.pv_id)
6585
      INTO ntruerecordcount
6586
      FROM work_in_progress wip
6587
      WHERE wip.rtag_id = rtagid;
6588
 
6589
     IF viewtype = 1
6590
     THEN
6591
       /*--- GUEST VIEW ---*/
6592
       OPEN recordset FOR
6593
         SELECT   *
6594
            FROM (
6595
                 /* Base Views collapsed */
6596
                 SELECT DISTINCT vi.view_id, vi.view_name,
6597
                             TO_NUMBER (NULL) AS pkg_state,
6598
                             TO_NUMBER (NULL) AS deprecated_state,
6599
                             TO_NUMBER (NULL) AS pv_id,
6600
                             NULL AS pkg_name, NULL AS pkg_version,
6601
                             NULL AS dlocked, NULL AS pv_description
6602
                         FROM work_in_progress rel, views vi
6603
                        WHERE rel.view_id = vi.view_id
6604
                          AND rtag_id = rtagid
6605
                          AND rel.view_id NOT IN (
6606
                               SELECT *
6607
                                 FROM THE
6608
                                       (SELECT CAST
6609
                                               (in_list_number
6610
                                                  (sviewidshowlist
6611
                                                  ) AS relmgr_number_tab_t
6612
                                               )
6613
                                         FROM DUAL
6614
                                       ))
6615
                 UNION
6616
                 /* Base 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 work_in_progress rel,
6624
                      PACKAGES pkg,
6625
                      package_versions pv,
6626
                      views vi
6627
                  WHERE pv.pkg_id = pkg.pkg_id
6628
                   AND rel.pv_id = pv.pv_id
6629
                   AND rel.view_id = vi.view_id
6630
                   AND rel.view_id IN (
6631
                        SELECT *
6632
                          FROM THE
6633
                                (SELECT CAST
6634
                                        (in_list_number
6635
                                               (sviewidshowlist) AS relmgr_number_tab_t
6636
                                        )
6637
                                  FROM DUAL
6638
                                ))
6639
                   AND rtag_id = rtagid) ord
6640
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6641
     ELSIF viewtype = 2
6642
     THEN
6643
       /*--- PERSONAL VIEW ---*/
6644
       OPEN recordset FOR
6645
         SELECT   *
6646
            FROM (
6647
                 /* Base Views collapsed */
6648
                 SELECT DISTINCT vi.view_id, vi.view_name,
6649
                             TO_NUMBER (NULL) AS pkg_state,
6650
                             TO_NUMBER (NULL) AS deprecated_state,
6651
                             TO_NUMBER (NULL) AS pv_id,
6652
                             NULL AS pkg_name, NULL AS pkg_version,
6653
                             NULL AS dlocked, NULL AS pv_description
6654
                         FROM work_in_progress rel,
6655
                             view_settings vs,
6656
                             views vi
6657
                        WHERE rel.view_id = vi.view_id
6658
                          AND vs.view_id = rel.view_id
6659
                          AND vs.user_id = userid
6660
                          AND rtag_id = rtagid
6661
                          AND rel.view_id NOT IN (
6662
                               SELECT *
6663
                                 FROM THE
6664
                                       (SELECT CAST
6665
                                               (in_list_number
6666
                                                  (sviewidshowlist
6667
                                                  ) AS relmgr_number_tab_t
6668
                                               )
6669
                                         FROM DUAL
6670
                                       ))
6671
                 UNION
6672
                 /* Base Views expanded */
6673
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6674
 
6675
                      --rel.pkg_state,
6676
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6677
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6678
                      pv.pv_description
6679
                  FROM work_in_progress rel,
6680
                      PACKAGES pkg,
6681
                      package_versions pv,
6682
                      views vi,
6683
                      view_settings vs
6684
                  WHERE pv.pkg_id = pkg.pkg_id
6685
                   AND rel.pv_id = pv.pv_id
6686
                   AND rel.view_id = vi.view_id
6687
                   AND vs.view_id = vi.view_id
6688
                   AND vs.user_id = userid
6689
                   AND rel.view_id IN (
6690
                        SELECT *
6691
                          FROM THE
6692
                                (SELECT CAST
6693
                                        (in_list_number
6694
                                               (sviewidshowlist) AS relmgr_number_tab_t
6695
                                        )
6696
                                  FROM DUAL
6697
                                ))
6698
                   AND rtag_id = rtagid
6699
                 UNION
6700
                 /* Private Views collapsed */
6701
                 SELECT vi.view_id, vi.view_name,
6702
                      TO_NUMBER (NULL) AS pkg_state,
6703
                      TO_NUMBER (NULL) AS deprecated_state,
6704
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6705
                      NULL AS pkg_version, NULL AS dlocked,
6706
                      NULL AS pv_description
6707
                  FROM view_settings vs,
6708
                      view_def vd,
6709
                      views vi,
6710
                      work_in_progress rel,
6711
                      package_versions pv
6712
                  WHERE vs.view_id = vi.view_id
6713
                   AND rel.pv_id = pv.pv_id
6714
                   AND vd.pkg_id = pv.pkg_id
6715
                   AND vd.view_id = vi.view_id
6716
                   AND vi.base_view = 'N'
6717
                   AND rel.rtag_id = rtagid
6718
                   AND vs.user_id = userid
6719
                   AND vi.view_id NOT IN (
6720
                        SELECT *
6721
                          FROM THE
6722
                                (SELECT CAST
6723
                                        (in_list_number
6724
                                               (sviewidshowlist) AS relmgr_number_tab_t
6725
                                        )
6726
                                  FROM DUAL
6727
                                ))
6728
                 UNION
6729
                 /* Private Views expanded */
6730
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6731
 
6732
                      --rel.pkg_state,
6733
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6734
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6735
                      pv.pv_description
6736
                  FROM users usr,
6737
                      view_settings vs,
6738
                      view_def vd,
6739
                      views vi,
6740
                      work_in_progress rel,
6741
                      PACKAGES pkg,
6742
                      package_versions pv
6743
                  WHERE vs.user_id = usr.user_id
6744
                   AND vs.view_id = vi.view_id
6745
                   AND vd.view_id = vi.view_id
6746
                   AND pv.pkg_id = pkg.pkg_id
6747
                   AND rel.pv_id = pv.pv_id
6748
                   AND rel.rtag_id = rtagid
6749
                   AND vd.pkg_id = pkg.pkg_id
6750
                   AND vi.base_view = 'N'
6751
                   AND vi.view_id IN (
6752
                        SELECT *
6753
                          FROM THE
6754
                                (SELECT CAST
6755
                                        (in_list_number
6756
                                               (sviewidshowlist) AS relmgr_number_tab_t
6757
                                        )
6758
                                  FROM DUAL
6759
                                ))
6760
                   AND usr.user_id = userid) ord
6761
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6762
     END IF;
6763
   END;
6764
 
6765
/*-------------------------------------------------------------------------------------------------------*/
6766
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6767
 
6768
   PROCEDURE get_pending_items (
6769
     viewtype         IN      NUMBER,
6770
     userid           IN      NUMBER,
6771
     rtagid           IN      NUMBER,
6772
     sviewidshowlist  IN      VARCHAR2,
6773
     ntruerecordcount OUT     NUMBER,
6774
     recordset        OUT     typecur
6775
   )
6776
   IS
6777
   BEGIN
6778
     -- Get true record count because views can give false count
6779
     SELECT COUNT (pl.pv_id)
6780
      INTO ntruerecordcount
6781
      FROM planned pl
6782
      WHERE pl.rtag_id = rtagid;
6783
 
6784
     IF viewtype = 1
6785
     THEN
6786
       /*--- GUEST VIEW ---*/
6787
       OPEN recordset FOR
6788
         SELECT   *
6789
            FROM (
6790
                 /* Base Views collapsed */
6791
                 SELECT DISTINCT vi.view_id, vi.view_name,
6792
                             TO_NUMBER (NULL) AS pkg_state,
6793
                             TO_NUMBER (NULL) AS deprecated_state,
6794
                             TO_NUMBER (NULL) AS pv_id,
6795
                             NULL AS pkg_name, NULL AS pkg_version,
6796
                             NULL AS dlocked, NULL AS pv_description,
6797
                             rel.operation
6798
                         FROM planned rel, views vi
6799
                        WHERE rel.view_id = vi.view_id
6800
                          AND rtag_id = rtagid
6801
                          AND rel.view_id NOT IN (
6802
                               SELECT *
6803
                                 FROM THE
6804
                                       (SELECT CAST
6805
                                               (in_list_number
6806
                                                  (sviewidshowlist
6807
                                                  ) AS relmgr_number_tab_t
6808
                                               )
6809
                                         FROM DUAL
6810
                                       ))
6811
                 UNION
6812
                 /* Base Views expanded */
6813
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6814
 
6815
                      --rel.pkg_state,
6816
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6817
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6818
                      pv.pv_description,
6819
                      rel.operation
6820
                  FROM planned rel,
6821
                      PACKAGES pkg,
6822
                      package_versions pv,
6823
                      views vi
6824
                  WHERE pv.pkg_id = pkg.pkg_id
6825
                   AND rel.pv_id = pv.pv_id
6826
                   AND rel.view_id = vi.view_id
6827
                   AND rel.view_id IN (
6828
                        SELECT *
6829
                          FROM THE
6830
                                (SELECT CAST
6831
                                        (in_list_number
6832
                                               (sviewidshowlist) AS relmgr_number_tab_t
6833
                                        )
6834
                                  FROM DUAL
6835
                                ))
6836
                   AND rtag_id = rtagid) ord
6837
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6838
     ELSIF viewtype = 2
6839
     THEN
6840
       /*--- PERSONAL VIEW ---*/
6841
       OPEN recordset FOR
6842
         SELECT   *
6843
            FROM (
6844
                 /* Base Views collapsed */
6845
                 SELECT DISTINCT vi.view_id, vi.view_name,
6846
                             TO_NUMBER (NULL) AS pkg_state,
6847
                             TO_NUMBER (NULL) AS deprecated_state,
6848
                             TO_NUMBER (NULL) AS pv_id,
6849
                             NULL AS pkg_name, NULL AS pkg_version,
6850
                             NULL AS dlocked, NULL AS pv_description,
6851
                             rel.operation
6852
                         FROM planned rel, view_settings vs, views vi
6853
                        WHERE rel.view_id = vi.view_id
6854
                          AND vs.view_id = rel.view_id
6855
                          AND vs.user_id = userid
6856
                          AND rtag_id = rtagid
6857
                          AND rel.view_id NOT IN (
6858
                               SELECT *
6859
                                 FROM THE
6860
                                       (SELECT CAST
6861
                                               (in_list_number
6862
                                                  (sviewidshowlist
6863
                                                  ) AS relmgr_number_tab_t
6864
                                               )
6865
                                         FROM DUAL
6866
                                       ))
6867
                 UNION
6868
                 /* Base Views expanded */
6869
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6870
 
6871
                      --rel.pkg_state,
6872
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6873
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6874
                      pv.pv_description,
6875
                      rel.operation
6876
                  FROM planned rel,
6877
                      PACKAGES pkg,
6878
                      package_versions pv,
6879
                      views vi,
6880
                      view_settings vs
6881
                  WHERE pv.pkg_id = pkg.pkg_id
6882
                   AND rel.pv_id = pv.pv_id
6883
                   AND rel.view_id = vi.view_id
6884
                   AND vs.view_id = vi.view_id
6885
                   AND vs.user_id = userid
6886
                   AND rel.view_id IN (
6887
                        SELECT *
6888
                          FROM THE
6889
                                (SELECT CAST
6890
                                        (in_list_number
6891
                                               (sviewidshowlist) AS relmgr_number_tab_t
6892
                                        )
6893
                                  FROM DUAL
6894
                                ))
6895
                   AND rtag_id = rtagid
6896
                 UNION
6897
                 /* Private Views collapsed */
6898
                 SELECT vi.view_id, vi.view_name,
6899
                      TO_NUMBER (NULL) AS pkg_state,
6900
                      TO_NUMBER (NULL) AS deprecated_state,
6901
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6902
                      NULL AS pkg_version, NULL AS dlocked,
6903
                      NULL AS pv_description,
6904
                      rel.operation
6905
                  FROM view_settings vs,
6906
                      view_def vd,
6907
                      views vi,
6908
                      planned rel,
6909
                      package_versions pv
6910
                  WHERE vs.view_id = vi.view_id
6911
                   AND rel.pv_id = pv.pv_id
6912
                   AND vd.pkg_id = pv.pkg_id
6913
                   AND vd.view_id = vi.view_id
6914
                   AND vi.base_view = 'N'
6915
                   AND rel.rtag_id = rtagid
6916
                   AND vs.user_id = userid
6917
                   AND vi.view_id NOT IN (
6918
                        SELECT *
6919
                          FROM THE
6920
                                (SELECT CAST
6921
                                        (in_list_number
6922
                                               (sviewidshowlist) AS relmgr_number_tab_t
6923
                                        )
6924
                                  FROM DUAL
6925
                                ))
6926
                 UNION
6927
                 /* Private Views expanded */
6928
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6929
 
6930
                      --rel.pkg_state,
6931
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6932
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6933
                      pv.pv_description,
6934
                      rel.operation
6935
                  FROM users usr,
6936
                      view_settings vs,
6937
                      view_def vd,
6938
                      views vi,
6939
                      planned rel,
6940
                      PACKAGES pkg,
6941
                      package_versions pv
6942
                  WHERE vs.user_id = usr.user_id
6943
                   AND vs.view_id = vi.view_id
6944
                   AND vd.view_id = vi.view_id
6945
                   AND pv.pkg_id = pkg.pkg_id
6946
                   AND rel.pv_id = pv.pv_id
6947
                   AND rel.rtag_id = rtagid
6948
                   AND vd.pkg_id = pkg.pkg_id
6949
                   AND vi.base_view = 'N'
6950
                   AND vi.view_id IN (
6951
                        SELECT *
6952
                          FROM THE
6953
                                (SELECT CAST
6954
                                        (in_list_number
6955
                                               (sviewidshowlist) AS relmgr_number_tab_t
6956
                                        )
6957
                                  FROM DUAL
6958
                                ))
6959
                   AND usr.user_id = userid) ord
6960
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6961
     END IF;
6962
   END;
6963
 
6964
/*-------------------------------------------------------------------------------------------------------*/
6965
   PROCEDURE get_view_content (
6966
     rtagid     IN      NUMBER,
6967
     viewid     IN      NUMBER,
6968
     recordset OUT     typecur
6969
   )
6970
   IS
6971
     isbaseview   CHAR (1);
6972
   BEGIN
6973
     -- Check if the view is BASE VIEW
6974
     SELECT vi.base_view
6975
      INTO isbaseview
6976
      FROM views vi
6977
      WHERE vi.view_id = viewid;
6978
 
6979
     IF (isbaseview = 'Y')
6980
     THEN
6981
       -- Get Base view content
6982
       OPEN recordset FOR
6983
         SELECT   DECODE (rel.pkg_state,
6984
                      NULL, 0,
6985
                      rel.pkg_state
6986
                     ) AS pkg_state,
6987
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6988
                pv.pkg_version, pv.dlocked, pv.pv_description,
6989
                pv.build_type,
6990
                rel.operation
6991
            FROM environment_view rel, PACKAGES pkg, package_versions pv
6992
            WHERE pv.pkg_id = pkg.pkg_id
6993
             AND rel.pv_id = pv.pv_id
6994
             AND rel.view_id = viewid
6995
             AND rel.rtag_id = rtagid
6996
         ORDER BY UPPER (pkg.pkg_name);
6997
     ELSE
6998
       -- Get non base view content
6999
       OPEN recordset FOR
7000
         SELECT   DECODE (rel.pkg_state,
7001
                      NULL, 0,
7002
                      rel.pkg_state
7003
                     ) AS pkg_state,
7004
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7005
                pv.pkg_version, pv.dlocked, pv.pv_description,
7006
                pv.build_type,
7007
                rel.operation
7008
            FROM environment_view rel,
7009
                PACKAGES pkg,
7010
                package_versions pv,
7011
                view_def vd
7012
            WHERE pv.pkg_id = pkg.pkg_id
7013
             AND rel.pv_id = pv.pv_id
7014
             AND rel.rtag_id = rtagid
7015
             AND vd.view_id = viewid
7016
             AND vd.pkg_id = pv.pkg_id
7017
         ORDER BY UPPER (pkg.pkg_name);
7018
     END IF;
7019
   END;
7020
 
7021
/*-------------------------------------------------------------------------------------------------------*/
7022
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
7023
     RETURN NUMBER
7024
   IS
7025
     envtab           NUMBER;
7026
     returnvalue      NUMBER;
7027
     return_not_found NUMBER := -1;
7028
   BEGIN
7029
     envtab := get_package_area (pvid, rtagid);
7030
 
7031
     IF envtab = 0
7032
     THEN
7033
       -- WORK IN PROGRESS --
7034
       returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
7035
     ELSIF envtab = 1
7036
     THEN
7037
       -- PENDING --
7038
       returnvalue := pk_planned.get_package_view (pvid, rtagid);
7039
     ELSIF envtab = 2
7040
     THEN
7041
       -- RELEASED --
7042
       returnvalue := pk_release.get_package_view (pvid, rtagid);
7043
     ELSE
7044
       -- This may be a Patch not located anywhere but unlocked
7045
       returnvalue := return_not_found;
7046
     END IF;
7047
 
7048
     RETURN returnvalue;
7049
   END;
7050
 
7051
/*-------------------------------------------------------------------------------------------------------*/
4585 dpurdie 7052
   PROCEDURE make_release (
7053
     pvid          IN   NUMBER,                         -- NEW  PKG pvid
7054
     rtagid        IN   NUMBER,                         -- Release Id
7055
     userid        IN   NUMBER                          -- User performing Release
7056
   )
1373 dpurdie 7057
   IS
7058
     viewid        NUMBER;
7059
     envtab        NUMBER;
7060
     ispatch       CHAR (1) := NULL;
7061
     buildtype     CHAR (1) := NULL;
7062
   BEGIN
7063
     -- Check if package is patch
7064
     SELECT pv.is_patch, pv.build_type
7065
      INTO ispatch, buildtype
7066
      FROM package_versions pv
7067
      WHERE pv.pv_id = pvid;
7068
 
7069
     -- Get ViewId
7070
     viewid := get_package_view (pvid, rtagid);
7071
     -- Remove from current area
7072
     envtab := pk_environment.get_package_area (pvid, rtagid);
7073
 
7074
     -- Make sure that package was in work-in-progress or pending before makeing it release
7075
     -- Exclude patches, ripple builds
7076
     IF (envtab < 0)
7077
     THEN
7078
       -- Not found in work-in-progress or pending
7079
       IF (ispatch IS NULL) AND (buildtype = 'M')
7080
       THEN
7081
         raise_application_error (-20000,
7082
                            'This package cannot be released here.'
7083
                           );
7084
       END IF;
7085
     END IF;
7086
 
7087
     -- Log
7088
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
7089
 
7090
     IF envtab = 0
7091
     THEN
7092
       -- WORK IN PROGRESS --
7093
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7094
     ELSIF envtab = 1
7095
     THEN
7096
       -- PENDING --
7097
       pk_planned.remove_package (pvid, rtagid, userid);
7098
     END IF;
7099
 
7100
     -- Change package state
4585 dpurdie 7101
     -- Set dlocked state to mark the package a 'Released and Locked'
1373 dpurdie 7102
     pk_package.change_state (pvid, 'Y', userid);
7103
 
7104
     -- Make sure it is valid BASE VIEW
7105
     IF viewid < 1
7106
     THEN
7107
       viewid := 7;                     -- This is default base view
7108
     END IF;
7109
 
7110
     IF (ispatch IS NULL)
7111
     THEN
4585 dpurdie 7112
       -- Add (Replace) package to new area
1373 dpurdie 7113
       pk_release.add_package (pvid, viewid, rtagid, userid);
7114
     END IF;
7115
 
7116
     -- Now do post Release Actions
7117
     pk_release.run_post_actions (pvid, rtagid);
7118
 
7119
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
7120
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
7121
     clean_do_not_ripple(rtagid);
7122
     clean_advisory_ripple(rtagid);
7123
 
7124
     -- Log
7125
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
7126
   END;
7127
 
7128
/*-------------------------------------------------------------------------------------------------------*/
4585 dpurdie 7129
  --  Release a specified package into a specified release
7130
  --
7131
  --  Similar to 'make_release', but it attempts to handle the case where a package-version
7132
  --  is being replaced with one with a different package-suffix, but it doesn't
7133
  --  handle all the cases well. 
7134
  --
7135
  --  The current build system cannot do this automatically - yet
7136
  --
7137
  --
1373 dpurdie 7138
   PROCEDURE auto_make_release (
4585 dpurdie 7139
     pvid          IN   NUMBER,                         -- NEW  PKG pvid
7140
     rtagid        IN   NUMBER,                         -- Release Id
7141
     userid        IN   NUMBER,                         -- User performing Release
7142
     vext          IN   package_versions.v_ext%TYPE,    -- Package Extension for original pkg
7143
     ssv_ext       IN   package_versions.v_ext%TYPE,    -- Package Extension for new package
7144
     clonefrompvid IN   NUMBER                          -- PVID of Original
1373 dpurdie 7145
   )
7146
   IS
7147
     viewid        NUMBER;
7148
     envtab        NUMBER;
4585 dpurdie 7149
 
7150
     clone_removal NUMBER := 0;
7151
     clone_viewid  NUMBER := -1;
7152
     clone_envtab  NUMBER := -1;
7153
 
1373 dpurdie 7154
     ispatch       CHAR (1) := NULL;
4585 dpurdie 7155
     buildtype     CHAR (1) := NULL;
7156
 
1373 dpurdie 7157
   BEGIN
7158
     -- Check if package is patch
7159
     SELECT pv.is_patch, pv.build_type
7160
      INTO ispatch, buildtype
7161
      FROM package_versions pv
7162
      WHERE pv.pv_id = pvid;
7163
 
4585 dpurdie 7164
     --
7165
     -- Determine the viewid and environment for the new package
7166
     --
7167
     viewid := get_package_view (pvid, rtagid);
7168
     envtab := pk_environment.get_package_area (pvid, rtagid);
7169
 
7170
     --
7171
     -- If changing pkgExt, then we need to delete the orig package, not just replace it
7172
     --
7173
     IF (clonefrompvid is NOT NULL) AND (vext <> ssv_ext)
1373 dpurdie 7174
     THEN
4585 dpurdie 7175
        clone_removal := 1;
7176
        clone_viewid := get_package_view (clonefrompvid, rtagid);
7177
        clone_envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
1373 dpurdie 7178
     END IF;
7179
 
4585 dpurdie 7180
     --
1373 dpurdie 7181
     -- Make sure that package was in work-in-progress or pending before makeing it release
7182
     -- Exclude patches, ripple builds
4585 dpurdie 7183
     --
1373 dpurdie 7184
     IF (envtab < 0)
7185
     THEN
7186
       -- Not found in work-in-progress or pending
7187
       IF (ispatch IS NULL) AND (buildtype = 'M')
7188
       THEN
7189
         raise_application_error (-20000,
7190
                            'This package cannot be released here.'
7191
                           );
7192
       END IF;
7193
     END IF;
7194
 
7195
     -- Log
7196
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
7197
 
4585 dpurdie 7198
     --
7199
     -- Remove the package from the WIP or PENDING tab
7200
     -- Do NOT remove from the release area. 
7201
     --     This will be handled later with a process that
7202
     --     will do a 'replace' so that meta data is not lost
7203
     --
7204
    IF envtab = 0
7205
    THEN
7206
        -- WORK IN PROGRESS --
7207
        pk_work_in_progress.remove_package (pvid, rtagid, userid);
7208
    ELSIF envtab = 1
7209
    THEN
7210
        -- PENDING --
7211
        pk_planned.remove_package (pvid, rtagid, userid);
7212
    END IF;
7213
 
7214
    --
7215
    --  If we are changing the pkgExt, then fully remove the base package
7216
    --  This includes removing it from the 'release' area.
7217
    --
7218
    IF clone_removal = 1
7219
    THEN
7220
        IF clone_envtab = 0
7221
        THEN
7222
            -- WORK IN PROGRESS --
7223
            pk_work_in_progress.remove_package (clonefrompvid, rtagid, userid);
7224
        ELSIF clone_envtab = 1
7225
        THEN
7226
            -- PENDING --
7227
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
7228
        ELSIF clone_envtab = 2
7229
        THEN
7230
            -- RELEASED --
7231
            pk_release.remove_package (clonefrompvid, rtagid, userid);
1373 dpurdie 7232
       END IF;
4585 dpurdie 7233
    END IF;
1373 dpurdie 7234
 
7235
     -- Change package state
4585 dpurdie 7236
     -- Set dlocked state to mark the package a 'Released and Locked'
1373 dpurdie 7237
     pk_package.change_state (pvid, 'Y', userid);
7238
 
7239
     -- Make sure it is valid BASE VIEW
4585 dpurdie 7240
     -- If its not specified, give it a default (7) view
1373 dpurdie 7241
     IF viewid < 1
7242
     THEN
4585 dpurdie 7243
        IF clone_viewid >= 0
7244
        THEN
7245
            viewid := clone_viewid; 
7246
        ELSE
7247
            viewid := 7;
7248
        END IF;
1373 dpurdie 7249
     END IF;
7250
 
7251
     IF (ispatch IS NULL)
7252
     THEN
4585 dpurdie 7253
       -- Add (Replace) package to new area
1373 dpurdie 7254
       pk_release.add_package (pvid, viewid, rtagid, userid);
7255
     END IF;
7256
 
7257
     -- Now do post Release Actions
7258
     pk_release.run_post_actions (pvid, rtagid);
7259
     -- Now update the Dash_Board Table (DEPRECATED)
7260
     pk_rmapi.update_dash_board (rtagid);
7261
 
7262
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
7263
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
7264
     clean_do_not_ripple(rtagid);
7265
     clean_advisory_ripple(rtagid);
7266
 
7267
     -- Log
7268
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
7269
   END;
7270
 
7271
/*-------------------------------------------------------------------------------------------------------*/
7272
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7273
   IS
7274
     viewid   NUMBER;
7275
     envtab   NUMBER;
7276
   BEGIN
7277
     -- Get ViewId
7278
     --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
7279
     viewid := get_package_view (pvid, rtagid);
7280
     -- Remove from current area
7281
     envtab := pk_environment.get_package_area (pvid, rtagid);
7282
     -- Log
7283
     log_action (pvid,
7284
              'action',
7285
              userid,
7286
              'Start of Make Package UnRelease...'
7287
             );
7288
 
7289
     IF envtab = 2
7290
     THEN
7291
       -- RELEASE AREA --
7292
       pk_release.remove_package (pvid, rtagid, userid);
7293
     ELSIF envtab = 1
7294
     THEN
7295
       -- PENDING --
7296
       pk_planned.remove_package (pvid, rtagid, userid);
7297
     END IF;
7298
 
7299
     -- Change package state
7300
     pk_package.change_state (pvid, 'N', userid);
7301
 
7302
     -- Make sure it is valid BASE VIEW
7303
     IF viewid < 1
7304
     THEN
7305
       viewid := 7;                     -- This is default base view
7306
     END IF;
7307
 
7308
     -- Add package to new area
7309
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7310
     -- Now do post Release Actions
7311
     pk_release.run_post_actions (pvid, rtagid);
7312
     -- Log
7313
     log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
7314
   END;
7315
 
7316
/*-------------------------------------------------------------------------------------------------------*/
7317
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7318
   IS
7319
     viewid     NUMBER;
7320
     ispatch    CHAR (1) := NULL;
7321
     buildtype  CHAR (1) := NULL;
7322
   BEGIN
7323
     -- Check if package is patch
7324
     SELECT pv.is_patch, pv.build_type
7325
      INTO ispatch, buildtype
7326
      FROM package_versions pv
7327
      WHERE pv.pv_id = pvid;
7328
 
7329
     -- Get ViewId
7330
     viewid := get_package_view (pvid, rtagid);
7331
     --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
7332
 
7333
     -- Log
7334
     log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
7335
 
7336
     IF (ispatch IS NULL)
7337
     THEN
7338
       -- Remove from current area
7339
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7340
       -- Change package state
7341
       pk_package.change_state (pvid, 'P', userid);
7342
       -- Add package to new area
7343
       pk_planned.add_package (pvid, viewid, rtagid, userid);
7344
     END IF;
7345
 
7346
     -- Log
7347
     log_action (pvid, 'action', userid, 'End of Make Package Pending...');
7348
   END;
7349
 
7350
/*-------------------------------------------------------------------------------------------------------*/
7351
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7352
   IS
7353
   BEGIN
7354
     -- Log
7355
     log_action (pvid,
7356
                 'action',
7357
                 userid,
7358
                 'Start of Package Pending Approval...'
7359
                 );
7360
     -- Change package state
7361
     pk_package.change_state (pvid, 'A', userid);
7362
     -- Log
7363
     log_action (pvid, 'action', userid,
7364
                 'End of Package Pending Approval...');
7365
   END;
7366
 
7367
/*-------------------------------------------------------------------------------------------------------*/
7368
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7369
   IS
7370
     viewid   NUMBER;
7371
     operation CHAR;
7372
   BEGIN
7373
     -- Get ViewId
7374
     viewid := get_package_view (pvid, rtagid);
7375
     -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
7376
 
7377
     -- DEVI-45275
7378
     -- If the package version is an official version that is to be rejected from a merge operation
7379
     -- then find out in order to prevent it being added back to work-in-progress table . This will
7380
     -- be denoted by the operation field in the planned table being A or S
7381
     operation := ' ';
7382
     SELECT
7383
     (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
7384
     FROM planned pl
7385
     WHERE pl.PV_ID = pvid
7386
     AND pl.RTAG_ID = rtagid;
7387
 
7388
     -- Log
7389
     log_action (pvid, 'action', userid, 'Start of Reject Package...');
7390
     -- Remove from current area
7391
     pk_planned.remove_package (pvid, rtagid, userid);
7392
 
7393
     -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
7394
     IF operation <> 'A' AND operation <> 'S'
7395
     THEN
7396
     -- Change package state
7397
     pk_package.change_state (pvid, 'R', userid);
7398
     -- Add package to new area
7399
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7400
     ELSE
7401
      log_action (pvid, 'action', userid, 'Rejected Package Merge');
7402
     END IF;
7403
     -- Log
7404
     log_action (pvid, 'action', userid, 'End of Reject Package...');
7405
   END;
7406
 
7407
/*-------------------------------------------------------------------------------------------------------*/
7408
   PROCEDURE change_package_view (
7409
     pvid       IN   NUMBER,
7410
     rtagid     IN   NUMBER,
7411
     newviewid  IN   NUMBER
7412
   )
7413
   IS
7414
     envtab   NUMBER;
7415
   BEGIN
7416
     envtab := pk_environment.get_package_area (pvid, rtagid);
7417
 
7418
     IF envtab = 0
7419
     THEN
7420
       -- WORK IN PROGRESS --
7421
       pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
7422
     ELSIF envtab = 1
7423
     THEN
7424
       -- PENDING --
7425
       pk_planned.change_package_view (pvid, rtagid, newviewid);
7426
     ELSIF envtab = 2
7427
     THEN
7428
       -- RELEASED --
7429
       pk_release.change_package_view (pvid, rtagid, newviewid);
7430
     END IF;
7431
   END;
7432
 
7433
/*-------------------------------------------------------------------------------------------------------*/
7434
   PROCEDURE find_package (
7435
     skeyword     IN      VARCHAR2,
7436
     nrtagid      IN      NUMBER,
7437
     nsearcharea  IN      NUMBER,
7438
     recordset    OUT     typecur
7439
   )
7440
   IS
7441
   BEGIN
7442
     IF nsearcharea = 0
7443
     THEN
7444
       /* Search Work In Progress */
7445
       OPEN recordset FOR
7446
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7447
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7448
                pv.modified_stamp, usr.full_name, usr.user_email
7449
           FROM views vi,
7450
                work_in_progress rc,
7451
                PACKAGES pkg,
7452
                package_versions pv,
7453
                users usr
7454
          WHERE rc.view_id = vi.view_id
7455
            AND rc.pv_id = pv.pv_id
7456
            AND pkg.pkg_id = pv.pkg_id
7457
            AND pv.modifier_id = usr.user_id
7458
            AND rc.rtag_id = nrtagid
7459
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7460
       ORDER BY UPPER (pkg.pkg_name);
7461
     ELSIF nsearcharea = 1
7462
     THEN
7463
       /* Search Pending */
7464
       OPEN recordset FOR
7465
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7466
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7467
                pv.modified_stamp, usr.full_name, usr.user_email
7468
           FROM views vi,
7469
                planned rc,
7470
                PACKAGES pkg,
7471
                package_versions pv,
7472
                users usr
7473
          WHERE rc.view_id = vi.view_id
7474
            AND rc.pv_id = pv.pv_id
7475
            AND pkg.pkg_id = pv.pkg_id
7476
            AND pv.modifier_id = usr.user_id
7477
            AND rc.rtag_id = nrtagid
7478
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7479
       ORDER BY UPPER (pkg.pkg_name);
7480
     ELSIF nsearcharea = 2
7481
     THEN
7482
       /* Search Released */
7483
       OPEN recordset FOR
7484
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7485
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7486
                pv.modified_stamp, usr.full_name, usr.user_email
7487
           FROM views vi,
7488
                release_content rc,
7489
                PACKAGES pkg,
7490
                package_versions pv,
7491
                users usr
7492
          WHERE rc.base_view_id = vi.view_id
7493
            AND rc.pv_id = pv.pv_id
7494
            AND pkg.pkg_id = pv.pkg_id
7495
            AND pv.modifier_id = usr.user_id
7496
            AND rc.rtag_id = nrtagid
7497
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7498
         ORDER BY UPPER (pkg.pkg_name);
7499
     ELSIF nsearcharea = 3
7500
     THEN
7501
       /* Search ALL */
7502
       OPEN recordset FOR
7503
         SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
7504
                pv.pv_id, pv.pkg_version, pv.comments,
7505
                pv.modified_stamp, usr.full_name, usr.user_email
7506
           FROM views vi,
7507
                environment_view rc,
7508
                PACKAGES pkg,
7509
                package_versions pv,
7510
                users usr
7511
          WHERE rc.view_id = vi.view_id
7512
            AND rc.pv_id = pv.pv_id
7513
            AND pkg.pkg_id = pv.pkg_id
7514
            AND pv.modifier_id = usr.user_id
7515
            AND rc.rtag_id = nrtagid
7516
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7517
         ORDER BY UPPER (pkg.pkg_name);
7518
     END IF;
7519
   END;
7520
 
7521
/*-------------------------------------------------------------------------------------------------------*/
7522
   PROCEDURE find_file (
7523
     skeyword     IN      VARCHAR2,
7524
     nrtagid      IN      NUMBER,
7525
     nsearcharea  IN      NUMBER,
7526
     npagesize    IN      NUMBER,
7527
     recordset    OUT     typecur
7528
   )
7529
   IS
7530
   BEGIN
7531
     IF nsearcharea = 0
7532
     THEN
7533
       /* Search Work In Progress */
7534
       OPEN recordset FOR
7535
         SELECT   qry.*
7536
            FROM (
7537
                 /* File search on Packages */
7538
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7539
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7540
                   FROM work_in_progress rc,
7541
                        PACKAGES pkg,
7542
                        package_versions pv,
7543
                        release_components art
7544
                  WHERE rc.pv_id = art.pv_id
7545
                    AND pv.pkg_id = pkg.pkg_id
7546
                    AND rc.pv_id = pv.pv_id
7547
                    AND rc.rtag_id = nrtagid
7548
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7549
                 UNION ALL
7550
                 /* File search on Products */
7551
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7552
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7553
                   FROM work_in_progress rc,
7554
                        PACKAGES pkg,
7555
                        package_versions pv,
7556
                        product_components art
7557
                  WHERE rc.pv_id = art.pv_id
7558
                    AND pv.pkg_id = pkg.pkg_id
7559
                    AND rc.pv_id = pv.pv_id
7560
                    AND rc.rtag_id = nrtagid
7561
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7562
            WHERE ROWNUM <= npagesize
7563
         ORDER BY UPPER (qry.pkg_name);
7564
     ELSIF nsearcharea = 1
7565
     THEN
7566
       /* Search Pending */
7567
       OPEN recordset FOR
7568
         SELECT   qry.*
7569
            FROM (
7570
                 /* File search on Packages */
7571
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7572
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7573
                   FROM planned rc,
7574
                        PACKAGES pkg,
7575
                        package_versions pv,
7576
                        release_components art
7577
                  WHERE rc.pv_id = art.pv_id
7578
                    AND pv.pkg_id = pkg.pkg_id
7579
                    AND rc.pv_id = pv.pv_id
7580
                    AND rc.rtag_id = nrtagid
7581
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7582
                 UNION ALL
7583
                 /* File search on Products */
7584
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7585
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7586
                   FROM planned rc,
7587
                        PACKAGES pkg,
7588
                        package_versions pv,
7589
                        product_components art
7590
                  WHERE rc.pv_id = art.pv_id
7591
                    AND pv.pkg_id = pkg.pkg_id
7592
                    AND rc.pv_id = pv.pv_id
7593
                    AND rc.rtag_id = nrtagid
7594
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7595
            WHERE ROWNUM <= npagesize
7596
         ORDER BY UPPER (qry.pkg_name);
7597
     ELSIF nsearcharea = 2
7598
     THEN
7599
       /* Search Released */
7600
       OPEN recordset FOR
7601
         SELECT   qry.*
7602
            FROM (
7603
                 /* File search on Packages */
7604
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7605
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7606
                        NULL AS patch_id
7607
                   FROM release_content rc,
7608
                        PACKAGES pkg,
7609
                        package_versions pv,
7610
                        release_components art
7611
                  WHERE rc.pv_id = art.pv_id
7612
                    AND pv.pkg_id = pkg.pkg_id
7613
                    AND rc.pv_id = pv.pv_id
7614
                    AND rc.rtag_id = nrtagid
7615
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7616
                 UNION ALL
7617
                 /* File search on Products */
7618
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7619
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7620
                        NULL AS patch_id
7621
                   FROM release_content rc,
7622
                        PACKAGES pkg,
7623
                        package_versions pv,
7624
                        product_components art
7625
                  WHERE rc.pv_id = art.pv_id
7626
                    AND pv.pkg_id = pkg.pkg_id
7627
                    AND rc.pv_id = pv.pv_id
7628
                    AND rc.rtag_id = nrtagid
7629
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7630
                 UNION ALL
7631
                 /* File search on Patches */
7632
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7633
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7634
                        DECODE (art.file_path,
7635
                                NULL, pp.patch_id,
7636
                                NULL
7637
                                ) AS patch_id
7638
                   FROM release_content rc,
7639
                        PACKAGES pkg,
7640
                        package_versions pv,
7641
                        release_components art,
7642
                        package_patches pp
7643
                  WHERE pv.pv_id = pp.pv_id
7644
                    AND pv.pkg_id = pkg.pkg_id
7645
                    AND rc.rtag_id = nrtagid
7646
                    AND art.pv_id = pp.patch_id
7647
                    AND rc.pv_id = pp.pv_id
7648
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7649
            WHERE ROWNUM <= npagesize
7650
         ORDER BY UPPER (qry.pkg_name);
7651
     ELSIF nsearcharea = 3
7652
     THEN
7653
       /* Search ALL */
7654
       OPEN recordset FOR
7655
         SELECT   qry.*
7656
            FROM (
7657
                 /* File search on Packages */
7658
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7659
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7660
                        NULL AS patch_id
7661
                   FROM environment_view rc,
7662
                        PACKAGES pkg,
7663
                        package_versions pv,
7664
                        release_components art
7665
                  WHERE rc.pv_id = art.pv_id
7666
                    AND pv.pkg_id = pkg.pkg_id
7667
                    AND rc.pv_id = pv.pv_id
7668
                    AND rc.rtag_id = nrtagid
7669
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7670
                 UNION ALL
7671
                 /* File search on Products */
7672
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7673
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7674
                        NULL AS patch_id
7675
                   FROM environment_view rc,
7676
                        PACKAGES pkg,
7677
                        package_versions pv,
7678
                        product_components art
7679
                  WHERE rc.pv_id = art.pv_id
7680
                    AND pv.pkg_id = pkg.pkg_id
7681
                    AND rc.pv_id = pv.pv_id
7682
                    AND rc.rtag_id = nrtagid
7683
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7684
                 UNION ALL
7685
                 /* File search on Patches */
7686
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7687
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7688
                        DECODE (art.file_path,
7689
                                NULL, pp.patch_id,
7690
                                NULL
7691
                               ) AS patch_id
7692
                   FROM release_content rc,
7693
                        PACKAGES pkg,
7694
                        package_versions pv,
7695
                        release_components art,
7696
                        package_patches pp
7697
                  WHERE pv.pv_id = pp.pv_id
7698
                    AND pv.pkg_id = pkg.pkg_id
7699
                    AND rc.rtag_id = nrtagid
7700
                    AND art.pv_id = pp.patch_id
7701
                    AND rc.pv_id = pp.pv_id
7702
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7703
            WHERE ROWNUM <= npagesize
7704
         ORDER BY UPPER (qry.pkg_name);
7705
     END IF;
7706
   END;
7707
 
7708
/*-------------------------------------------------------------------------------------------------------*/
7709
   PROCEDURE get_prodrelease_items (
7710
     rtagid           IN      NUMBER,
7711
     ntruerecordcount OUT     NUMBER,
7712
     recordset        OUT     typecur
7713
   )
7714
   IS
7715
   BEGIN
7716
     -- Get true record count n the number of integration products
7717
     SELECT COUNT (rc.pv_id)
7718
      INTO ntruerecordcount
7719
      FROM release_content rc
7720
      WHERE rc.rtag_id = rtagid;
7721
 
7722
     OPEN recordset FOR
7723
       SELECT vi.view_id, vi.view_name, rel.pkg_state,   --rel.pkg_state,
7724
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7725
              pv.pkg_version, pv.dlocked, pv.pv_description
7726
         FROM release_content rel,
7727
              PACKAGES pkg,
7728
              package_versions pv,
7729
              views vi
7730
        WHERE pv.pkg_id = pkg.pkg_id
7731
          AND rel.pv_id = pv.pv_id
7732
          AND rel.base_view_id = vi.view_id
7733
          AND pv.is_deployable = 'Y'
7734
          AND rtag_id = rtagid
7735
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7736
                                 FROM deployment_manager.os_contents)
7737
          AND rel.product_state IS NULL
7738
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7739
   END;
7740
 
7741
/*-------------------------------------------------------------------------------------------------------*/
7742
   PROCEDURE get_integration_items (
7743
     rtagid           IN      NUMBER,
7744
     ntruerecordcount OUT     NUMBER,
7745
     recordset        OUT     typecur
7746
   )
7747
   IS
7748
   BEGIN
7749
     -- Get true record count n the number of integration products
7750
     SELECT COUNT (rc.pv_id)
7751
      INTO ntruerecordcount
7752
      FROM release_content rc
7753
      WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
7754
 
7755
     OPEN recordset FOR
7756
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7757
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7758
              pv.pkg_version, pv.dlocked, pv.pv_description
7759
         FROM release_content rel,
7760
              PACKAGES pkg,
7761
              package_versions pv,
7762
              views vi
7763
        WHERE pv.pkg_id = pkg.pkg_id
7764
          AND rel.pv_id = pv.pv_id
7765
          AND rel.base_view_id = vi.view_id
7766
          AND pv.is_deployable = 'Y'
7767
          AND rtag_id = rtagid
7768
          AND rel.product_state IN (1, 5)
7769
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7770
   END;
7771
 
7772
/*-------------------------------------------------------------------------------------------------------*/
7773
   PROCEDURE get_test_items (
7774
     rtagid           IN      NUMBER,
7775
     ntruerecordcount OUT     NUMBER,
7776
     recordset        OUT     typecur
7777
   )
7778
   IS
7779
   BEGIN
7780
     -- Get true record count n the number of test products
7781
     SELECT COUNT (rc.pv_id)
7782
      INTO ntruerecordcount
7783
      FROM release_content rc
7784
      WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
7785
 
7786
     OPEN recordset FOR
7787
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7788
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7789
              pv.pkg_version, pv.dlocked, pv.pv_description
7790
         FROM release_content rel,
7791
              PACKAGES pkg,
7792
              package_versions pv,
7793
              views vi
7794
        WHERE pv.pkg_id = pkg.pkg_id
7795
          AND rel.pv_id = pv.pv_id
7796
          AND rel.base_view_id = vi.view_id
7797
          AND pv.is_deployable = 'Y'
7798
          AND rtag_id = rtagid
7799
          AND rel.product_state = 2
7800
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7801
   END;
7802
 
7803
/*-------------------------------------------------------------------------------------------------------*/
7804
   PROCEDURE get_deploy_items (
7805
     rtagid           IN      NUMBER,
7806
     ntruerecordcount OUT     NUMBER,
7807
     recordset        OUT     typecur
7808
   )
7809
   IS
7810
   BEGIN
7811
     -- Get true record count n the number of deploy products
7812
     SELECT COUNT (rc.pv_id)
7813
      INTO ntruerecordcount
7814
      FROM release_content rc
7815
      WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
7816
 
7817
     OPEN recordset FOR
7818
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7819
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7820
              pv.pkg_version, pv.dlocked, pv.pv_description
7821
         FROM release_content rel,
7822
              PACKAGES pkg,
7823
              package_versions pv,
7824
              views vi
7825
        WHERE pv.pkg_id = pkg.pkg_id
7826
          AND rel.pv_id = pv.pv_id
7827
          AND rel.base_view_id = vi.view_id
7828
          AND pv.is_deployable = 'Y'
7829
          AND rtag_id = rtagid
7830
          AND rel.product_state IN (3, 5)
7831
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7832
                                 FROM deployment_manager.os_contents)
7833
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7834
   END;
7835
 
7836
/*-------------------------------------------------------------------------------------------------------*/
7837
   PROCEDURE get_reject_items (
7838
     rtagid           IN      NUMBER,
7839
     ntruerecordcount OUT     NUMBER,
7840
     recordset        OUT     typecur
7841
   )
7842
   IS
7843
   BEGIN
7844
     -- Get true record count n the number of reject products
7845
     SELECT COUNT (rc.pv_id)
7846
       INTO ntruerecordcount
7847
       FROM release_content rc
7848
      WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
7849
 
7850
     OPEN recordset FOR
7851
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7852
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7853
              pv.pkg_version, pv.dlocked, pv.pv_description
7854
         FROM release_content rel,
7855
              PACKAGES pkg,
7856
              package_versions pv,
7857
              views vi
7858
        WHERE pv.pkg_id = pkg.pkg_id
7859
          AND rel.pv_id = pv.pv_id
7860
          AND rel.base_view_id = vi.view_id
7861
          AND pv.is_deployable = 'Y'
7862
          AND rtag_id = rtagid
7863
          AND rel.product_state = 4
7864
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7865
   END;
7866
/*-------------------------------------------------------------------------------------------------------*/
7867
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
7868
   -- to the release_content table.
7869
 
7870
  PROCEDURE approve_merge (
7871
   PvId    IN NUMBER,
7872
   RtagId  IN NUMBER,
7873
   UserId  IN NUMBER
7874
  )
7875
  IS
7876
   viewid        NUMBER;
7877
   envtab        NUMBER;
7878
   oper         CHAR;
7879
  BEGIN
7880
      -- Get ViewId
7881
     viewid := get_package_view (pvid, rtagid);
7882
 
7883
     -- Get the view tab
7884
     envtab := pk_environment.get_package_area (pvid, rtagid);
7885
 
7886
     -- Make sure that package was in pending before merging it to released
7887
     IF (envtab <> 1)
7888
     THEN
7889
       -- Not found in pending
7890
       raise_application_error (-20000,
7891
                          'This package cannot be released here.'
7892
                         );
7893
     END IF;
7894
 
7895
     -- Log
7896
     log_action (pvid, 'action', userid, 'Start of Package Merge...');
7897
 
7898
     -- Get the planned operation type A=Add, S=Subtract
7899
     SELECT ev.operation INTO oper
7900
       FROM environment_view ev
7901
      WHERE ev.rtag_id = RtagId
7902
        AND ev.pv_id = PvId
7903
        AND (ev.operation = 'A' OR ev.operation = 'S');
7904
 
7905
     -- Remove from Pending
7906
     pk_planned.remove_package (PvId, RtagId, UserId);
7907
 
7908
     -- Either add to the release, or remove from the release as the operation commands
7909
     IF oper = 'A'
7910
     THEN
7911
       pk_release.add_package(PvId, viewId, RtagId, UserId);
7912
 
7913
     ELSIF oper = 'S'
7914
     THEN
7915
       pk_release.remove_package(PvId, RtagId, UserId);
7916
 
7917
       -- Delete old package's pegging info
7918
       DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = RtagId AND pegv.PV_ID = PvId;
7919
 
7920
       -- Delete old package's advisory ripple info
7921
       DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = RtagId AND avr.PV_ID = PvId;
7922
     END IF;
7923
 
7924
     touch_release(RtagId);
7925
 
7926
     -- Log
7927
     log_action (pvid, 'action', userid, 'End of Package Merge...');
7928
  END;
7929
/*-------------------------------------------------------------------------------------------------------*/
7930
END pk_environment;
4040 dpurdie 7931
 
1374 dpurdie 7932
/
1373 dpurdie 7933
 
4040 dpurdie 7934
/
7935
--------------------------------------------------------
7936
--  DDL for Package Body PK_LICENCING
7937
--------------------------------------------------------
7938
 
3959 dpurdie 7939
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
1373 dpurdie 7940
 
7941
/*
7942
------------------------------
3959 dpurdie 7943
||  Last Modified:  G.Huddy
7944
||  Modified Date:  19/Aug/2008
1373 dpurdie 7945
||  Body Version:   1.0
7946
------------------------------
7947
*/
7948
 
3959 dpurdie 7949
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7950
   BEGIN
7951
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
7952
         -- Add entry to licencing table
7953
         INSERT INTO licencing (pv_id, licence)
7954
         VALUES (PvId, licenceId);
1373 dpurdie 7955
 
3959 dpurdie 7956
         -- log action
7957
         -- TODO
7958
      END IF;
1373 dpurdie 7959
 
3959 dpurdie 7960
   END;
1373 dpurdie 7961
 
7962
/*-------------------------------------------------------------------------------------------------------*/
7963
 
3959 dpurdie 7964
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7965
   BEGIN
7966
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
7967
         -- Delete entry from licencing table
7968
         DELETE FROM licencing
7969
         WHERE pv_id = PvId
7970
         AND licence = licenceId;
1373 dpurdie 7971
 
3959 dpurdie 7972
         -- log action
7973
         -- TODO
7974
      END IF;
7975
   END;
1373 dpurdie 7976
 
7977
/*-------------------------------------------------------------------------------------------------------*/
7978
 
3959 dpurdie 7979
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7980
 
3959 dpurdie 7981
      CURSOR licencing_cur
7982
      IS
7983
         SELECT *
7984
         FROM licencing
7985
         WHERE pv_id = fromPvId;
1373 dpurdie 7986
 
3959 dpurdie 7987
      licencing_rec licencing_cur%ROWTYPE;
1373 dpurdie 7988
 
7989
   BEGIN
3959 dpurdie 7990
      -- For each licence association that the Last PV_ID had, create a similar
7991
      -- arrangement for the new PV_ID
7992
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
7993
      -- does not have, are retained. The assumption is that the user has made those and so we do not
7994
      -- have any right to destroy them without asking them.
7995
      OPEN licencing_cur;
1373 dpurdie 7996
 
3959 dpurdie 7997
      FETCH licencing_cur
7998
      INTO licencing_rec;
1373 dpurdie 7999
 
3959 dpurdie 8000
      WHILE licencing_cur%FOUND
1373 dpurdie 8001
      LOOP
3959 dpurdie 8002
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
1373 dpurdie 8003
 
3959 dpurdie 8004
         FETCH licencing_cur
8005
         INTO licencing_rec;
1373 dpurdie 8006
      END LOOP;
8007
   END;
8008
 
8009
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8010
 
8011
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
8012
      found NUMBER;
1373 dpurdie 8013
   BEGIN
8014
 
3959 dpurdie 8015
      SELECT COUNT(*) INTO found
8016
      FROM licencing
8017
      WHERE pv_id = PvId
8018
      AND licence = LicenceId;
1373 dpurdie 8019
 
3959 dpurdie 8020
      RETURN found;
1373 dpurdie 8021
   END;
8022
 
8023
/*-------------------------------------------------------------------------------------------------------*/
8024
 
3959 dpurdie 8025
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8026
 
3959 dpurdie 8027
      CURSOR licencing_cur
8028
      IS
1373 dpurdie 8029
         SELECT *
3959 dpurdie 8030
         FROM licencing
8031
         WHERE pv_id = PvId;
1373 dpurdie 8032
 
3959 dpurdie 8033
      licencing_rec licencing_cur%ROWTYPE;
8034
   BEGIN
8035
      -- For each licence association that the PV_ID had, remove it
8036
      OPEN licencing_cur;
1373 dpurdie 8037
 
3959 dpurdie 8038
      FETCH licencing_cur
8039
      INTO licencing_rec;
1373 dpurdie 8040
 
3959 dpurdie 8041
      WHILE licencing_cur%FOUND
8042
      LOOP
8043
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
1373 dpurdie 8044
 
3959 dpurdie 8045
         FETCH licencing_cur
8046
         INTO licencing_rec;
8047
      END LOOP;
1373 dpurdie 8048
   END;
8049
 
8050
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8051
END PK_LICENCING;
4040 dpurdie 8052
 
1374 dpurdie 8053
/
1373 dpurdie 8054
 
4040 dpurdie 8055
/
8056
--------------------------------------------------------
8057
--  DDL for Package Body PK_PACKAGE
8058
--------------------------------------------------------
8059
 
3959 dpurdie 8060
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
1373 dpurdie 8061
IS
8062
   /*-------------------------------------------------------------------------------------------------------*/
8063
   PROCEDURE new_version (
8064
      nlastpvid                   IN       NUMBER,
8065
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
8066
      cbuildtype                  IN       CHAR,
4211 dpurdie 8067
      cchangetype                 IN       CHAR,
1373 dpurdie 8068
      nsettopvid                  IN       NUMBER DEFAULT NULL,
8069
      nrtagid                     IN       NUMBER,
8070
      nuserid                     IN       NUMBER,
8071
      enumissues_state_imported   IN       NUMBER,
8072
      returnpvid                  OUT      NUMBER
8073
   )
8074
   IS
3959 dpurdie 8075
      origpkg_id                  package_versions.pkg_id%TYPE;
8076
      origdlocked                 package_versions.dlocked%TYPE;
8077
      ssv_mm                      package_versions.v_mm%TYPE;
8078
      ssv_nmm                     package_versions.v_nmm%TYPE;
8079
      ssv_ext                     package_versions.v_ext%TYPE;
8080
      spackageversion             VARCHAR2 (4000);
8081
      nissuestypes                NUMBER;
8082
      nviewid                     NUMBER;
8083
      reccount                    NUMBER;
8084
      isreleased                  package_versions.dlocked%TYPE := 'N';
8085
      slabel                      VARCHAR2 (4000)               := NULL;
4211 dpurdie 8086
      uchangetype                 CHAR := cchangetype;
1373 dpurdie 8087
 
8088
      CURSOR package_versions_cur
8089
      IS
8090
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
8091
           FROM package_versions pv
8092
          WHERE pv.pkg_version = snewpkgversion
8093
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
8094
                                         FROM package_versions origpv
8095
                                        WHERE origpv.pv_id = nlastpvid);
8096
 
3959 dpurdie 8097
      package_versions_rec package_versions_cur%ROWTYPE;
1373 dpurdie 8098
 
8099
      CURSOR clone_package_versions_cur
8100
      IS
8101
         SELECT DISTINCT pkg_id, dlocked
8102
                    FROM package_versions
8103
                   WHERE pv_id = nlastpvid;
8104
 
3959 dpurdie 8105
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
1373 dpurdie 8106
   BEGIN
8107
      spackageversion := snewpkgversion;
8108
 
8109
      IF nsettopvid IS NULL
8110
      THEN
8111
         -- SetToPv_id is not supplied, hence proceed.
8112
 
8113
         /* ---------------------------------------------------- */
3959 dpurdie 8114
         /* Find id package_version exists                       */
8115
         /* ---------------------------------------------------- */
1373 dpurdie 8116
         OPEN package_versions_cur;
8117
 
8118
         FETCH package_versions_cur
8119
          INTO package_versions_rec;
8120
 
8121
         IF package_versions_cur%NOTFOUND
8122
         THEN
8123
            ---  Create brand new package ---
8124
            SELECT seq_pv_id.NEXTVAL
8125
              INTO returnpvid
8126
              FROM DUAL;
8127
 
8128
            -- Split Version to get extention + other
8129
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
8130
 
8131
            -- Get previous package to clone from
8132
            OPEN clone_package_versions_cur;
8133
 
8134
            FETCH clone_package_versions_cur
8135
             INTO clone_package_versions_rec;
8136
 
8137
            origpkg_id := clone_package_versions_rec.pkg_id;
8138
            origdlocked := clone_package_versions_rec.dlocked;
8139
 
8140
            CLOSE clone_package_versions_cur;
8141
 
8142
            -- Automated built config
4211 dpurdie 8143
            IF ( cbuildtype = 'M' ) THEN
8144
              uchangetype := 'F';
8145
            END IF;  
8146
 
8147
            -- Automated version numbering
8148
            -- Make sure that version is still unique
8149
            IF (uchangetype != 'F') THEN
8150
              spackageversion := '(' || returnpvid || ')' || ssv_ext;
1373 dpurdie 8151
            END IF;
4211 dpurdie 8152
 
1373 dpurdie 8153
 
8154
            -- Clone Package Version Details --
3959 dpurdie 8155
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
8156
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
8157
                                         v_ext, src_path, pv_description, pv_overview,
8158
                                         last_pv_id, owner_id, is_deployable,
4211 dpurdie 8159
                                         is_build_env_required, build_type, change_type, 
8160
                                         bs_id, is_autobuildable, ripple_field)
3959 dpurdie 8161
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
8162
                        spackageversion AS pkg_version, 'N' AS dlocked,
8163
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
8164
                        ora_sysdatetime AS modified_stamp,
8165
                        nuserid AS modifier_id, ssv_mm AS v_mm,
8166
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
8167
                        pv.pv_description, pv.pv_overview,
8168
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
4211 dpurdie 8169
                        pv.is_build_env_required, cbuildtype, uchangetype, 
8170
                        pv.bs_id, pv.is_autobuildable, pv.ripple_field
3959 dpurdie 8171
                   FROM package_versions pv
8172
                  WHERE pv.pv_id = nlastpvid;
1373 dpurdie 8173
 
8174
            -- Set Issues Type for cloning ---
8175
            IF origdlocked = 'Y'
8176
            THEN
8177
               nissuestypes := enumissues_state_imported;
8178
            ELSE
8179
               nissuestypes := NULL;
8180
            END IF;
8181
 
8182
            basic_clone (nlastpvid,
8183
                         returnpvid,
8184
                         nrtagid,
8185
                         nuserid,
8186
                         origpkg_id,
8187
                         nissuestypes
8188
                        );
4211 dpurdie 8189
 
8190
            -- Update Label for versioning purposes
8191
            slabel := get_automated_label (returnpvid);
8192
            UPDATE package_versions pv
8193
            SET pv.pkg_label = slabel
8194
            WHERE pv.pv_id = returnpvid;
8195
 
1373 dpurdie 8196
         ELSE
8197
            --- Package already exists, hence reuse ---
8198
            returnpvid := package_versions_rec.pv_id;
8199
            isreleased := package_versions_rec.dlocked;
8200
         END IF;
8201
 
8202
         CLOSE package_versions_cur;
8203
      ELSE
8204
         returnpvid := nsettopvid;
8205
      END IF;
8206
   END new_version;
8207
 
8208
/*-------------------------------------------------------------------------------------------------------*/
8209
   PROCEDURE change_state (
8210
      pvid       IN   NUMBER,
8211
      newstate   IN   package_versions.dlocked%TYPE,
8212
      userid     IN   NUMBER
8213
   )
8214
   IS
8215
   BEGIN
8216
      -- Set package in Released mode
8217
      UPDATE package_versions pv
8218
         SET pv.dlocked = newstate,
8219
             pv.modified_stamp = ora_sysdatetime,
8220
             pv.modifier_id = userid
8221
       WHERE pv.pv_id = pvid;
8222
 
8223
      -- Log action --
8224
      IF newstate = 'Y'
8225
      THEN
8226
         -- RELEASED --
8227
         log_action (pvid,
8228
                     'makeofficial',
8229
                     userid,
8230
                     'Package state change to: Released'
8231
                    );
8232
      ELSIF newstate = 'N'
8233
      THEN
8234
         -- UNLOCKED --
8235
         log_action (pvid,
8236
                     'makeunofficial',
8237
                     userid,
8238
                     'Package state change to: Ulocked'
8239
                    );
8240
      ELSIF newstate = 'P'
8241
      THEN
8242
         -- PENDING APPROVAL --
8243
         log_action (pvid,
8244
                     'add_to_planned',
8245
                     userid,
8246
                     'Package state change to: Pending Approval'
8247
                    );
8248
      ELSIF newstate = 'R'
8249
      THEN
8250
         -- REJECTED --
8251
         log_action (pvid,
8252
                     'reject_package',
8253
                     userid,
8254
                     'Package state change to: Rejected'
8255
                    );
8256
      ELSIF newstate = 'A'
8257
      THEN
8258
         -- APPROVED --
8259
         log_action (pvid,
8260
                     'approve_package',
8261
                     userid,
8262
                     'Package state change to: Approved'
8263
                    );
8264
      END IF;
8265
   END;
8266
 
8267
/*-------------------------------------------------------------------------------------------------------*/
8268
   PROCEDURE destroy_package (
8269
      pvid               IN       NUMBER,
8270
      overridewarnings   IN       CHAR DEFAULT 'N',
8271
      problemstring      OUT      VARCHAR2
8272
   )
8273
   IS
8274
      LOCKED     CHAR;
8275
      pkgid      NUMBER;
8276
      ROWCOUNT   NUMBER;
8277
   BEGIN
8278
      /*
8279
      || This will destroy all package details from database.
8280
      || It will only be used to remove unwanted work in progress packages,
8281
      || or mestaken versions
8282
      */
8283
 
8284
      /*--------------- Business Rules Here -------------------*/
8285
      problemstring := NULL;
8286
 
8287
      IF overridewarnings = 'N'
8288
      THEN
8289
         -- Package must not be official
8290
         SELECT pv.dlocked
8291
           INTO LOCKED
8292
           FROM package_versions pv
8293
          WHERE pv.pv_id = pvid;
8294
 
8295
         IF LOCKED = 'Y'
8296
         THEN
8297
            problemstring :=
8298
                  problemstring
8299
               || '- Package is locked and released.'
8300
               || UTL_TCP.crlf;
8301
         END IF;
8302
 
8303
         -- Cannot remove if used in BOMs
8304
         SELECT COUNT (osc.prod_id)
8305
           INTO ROWCOUNT
8306
           FROM deployment_manager.os_contents osc
8307
          WHERE osc.prod_id = pvid;
8308
 
8309
         IF ROWCOUNT > 0
8310
         THEN
8311
            problemstring :=
8312
                  problemstring
8313
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
8314
               || UTL_TCP.crlf;
8315
         END IF;
8316
 
8317
         -- Cannot remove if Referenced as build dependency
8318
         SELECT COUNT (dep.pv_id)
8319
           INTO ROWCOUNT
8320
           FROM package_dependencies dep
8321
          WHERE dep.dpv_id = pvid;
8322
 
8323
         IF ROWCOUNT > 0
8324
         THEN
8325
            problemstring :=
8326
                  problemstring
8327
               || '- Package is referenced by other package as build dependency.'
8328
               || UTL_TCP.crlf;
8329
         END IF;
8330
 
8331
         -- Cannot remove if Referenced as runtime dependency
8332
         SELECT COUNT (rd.pv_id)
8333
           INTO ROWCOUNT
8334
           FROM runtime_dependencies rd
8335
          WHERE rd.rtd_id = pvid;
8336
 
8337
         IF ROWCOUNT > 0
8338
         THEN
8339
            problemstring :=
8340
                  problemstring
8341
               || '- Package is referenced by other package as runtime dependency.'
8342
               || UTL_TCP.crlf;
8343
         END IF;
8344
 
8345
         -- Cannot remove if Referenced as patch
8346
         SELECT COUNT (pp.pv_id)
8347
           INTO ROWCOUNT
8348
           FROM package_patches pp
8349
          WHERE pp.patch_id = pvid;
8350
 
8351
         IF ROWCOUNT > 0
8352
         THEN
8353
            problemstring :=
8354
                  problemstring
8355
               || '- Package is used as patch by other package.'
8356
               || UTL_TCP.crlf;
8357
         END IF;
8358
      END IF;
8359
 
8360
/*-------------------------------------------------------*/
8361
      IF (problemstring IS NULL)
8362
      THEN
8363
         --- Remove From Work in Progress
8364
         DELETE FROM work_in_progress wip
8365
               WHERE wip.pv_id = pvid;
8366
 
8367
         --- Remove From Pending
8368
         DELETE FROM planned pl
8369
               WHERE pl.pv_id = pvid;
8370
 
8371
         --- Remove From Released area
8372
         DELETE FROM release_content rc
8373
               WHERE rc.pv_id = pvid;
8374
 
8375
         ---Remove From Package Processes
8376
         DELETE FROM package_processes pp
8377
               WHERE pp.pv_id = pvid;
8378
 
8379
         --- Remove Dependencies
8380
         DELETE FROM package_dependencies dep
8381
               WHERE dep.pv_id = pvid;
8382
 
8383
         DELETE FROM package_dependencies dep
8384
               WHERE dep.dpv_id = pvid;
8385
 
8386
         --- Remove Runtime dependencies
8387
         DELETE FROM runtime_dependencies rtd
8388
               WHERE rtd.pv_id = pvid;
8389
 
8390
         DELETE FROM runtime_dependencies rtd
8391
               WHERE rtd.rtd_id = pvid;
8392
 
8393
         --- Remove components
8394
         DELETE FROM product_components pc
8395
               WHERE pc.pv_id = pvid;
8396
 
8397
         DELETE FROM release_components rc
8398
               WHERE rc.pv_id = pvid;
8399
 
8400
         --- Remove From Notification History
8401
         DELETE FROM notification_history nh
8402
               WHERE nh.pv_id = pvid;
8403
 
8404
         --- Remove From Ignore Warnings
8405
         DELETE FROM ignore_warnings iw
8406
               WHERE iw.pv_id = pvid;
8407
 
8408
         --- Remove From Additional Notes
8409
         DELETE FROM additional_notes an
8410
               WHERE an.pv_id = pvid;
8411
 
8412
         --- Remove From CQ Issues
8413
         DELETE FROM cq_issues cq
8414
               WHERE cq.pv_id = pvid;
8415
 
8416
         --- Remove from Package Patches
8417
         DELETE FROM package_patches pp
8418
               WHERE pp.pv_id = pvid;
8419
 
8420
         DELETE FROM package_patches pp
8421
               WHERE pp.patch_id = pvid;
8422
 
8423
         --- Remove From Package Documents
8424
         DELETE FROM package_documents pd
8425
               WHERE pd.pv_id = pvid;
8426
 
8427
         --- Remove from Code Review
8428
         DELETE FROM code_reviews cr
8429
               WHERE cr.pv_id = pvid;
8430
 
3959 dpurdie 8431
         --- Remove from Code Review URL
8432
         DELETE FROM code_review_url cru
8433
               WHERE cru.pv_id = pvid;
8434
 
1373 dpurdie 8435
         --- Remove from Unit Tests
8436
         DELETE FROM unit_tests ut
8437
               WHERE ut.pv_id = pvid;
8438
 
8439
         --- Remove from Package BuildEnv
8440
         DELETE FROM package_build_env pbe
8441
               WHERE pbe.pv_id = pvid;
8442
 
3959 dpurdie 8443
         --- Remove from Package Build Info
8444
         DELETE FROM package_build_info pbi
8445
               WHERE pbi.pv_id = pvid;
8446
 
1373 dpurdie 8447
         --- Remove from Build Order
8448
         DELETE FROM build_order bo
8449
               WHERE bo.pv_id = pvid;
8450
 
3959 dpurdie 8451
         --- Remove from Licencing
8452
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
8453
 
1373 dpurdie 8454
         --- Remove from Note Manager
8455
         DELETE FROM note_manager nm
8456
               WHERE nm.nid = pvid;
8457
 
8458
         --- Remove from Action log
8459
         DELETE FROM action_log al
8460
               WHERE al.pv_id = pvid;
3959 dpurdie 8461
 
8462
         --- Remove from Do Not Ripple
8463
         DELETE FROM DO_NOT_RIPPLE dnr
8464
               WHERE dnr.PV_ID = pvid;
8465
 
8466
         --- Remove from Advisory Ripple
8467
         DELETE FROM ADVISORY_RIPPLE ar
8468
               WHERE ar.PV_ID = pvid;
8469
 
8470
         --- Remove from Jira Issues
8471
         DELETE FROM JIRA_ISSUES jira
8472
               WHERE jira.PV_ID = pvid;
8473
 
8474
         --- Remove from Package Metrics
8475
         DELETE FROM package_metrics pm
8476
              WHERE pm.pv_id = pvid;
8477
 
8478
         -- Delete from Pegged Versions
8479
         DELETE FROM pegged_versions pegv
8480
              WHERE pegv.pv_id = pvid;
8481
 
1373 dpurdie 8482
         --- Finally Remove From Package Versions
8483
         --- Get Package name
8484
         SELECT pv.pkg_id
8485
           INTO pkgid
8486
           FROM package_versions pv
8487
          WHERE pv.pv_id = pvid;
8488
 
8489
         DELETE FROM package_versions pv
8490
               WHERE pv.pv_id = pvid;
8491
 
8492
         --- Remove package name if not used any more
8493
         SELECT COUNT (pv.pv_id)
8494
           INTO ROWCOUNT
8495
           FROM package_versions pv
8496
          WHERE pv.pkg_id = pkgid;
8497
 
8498
         IF ROWCOUNT < 1
8499
         THEN
8500
            DELETE FROM PACKAGES pkg
8501
                  WHERE pkg.pkg_id = pkgid;
8502
         END IF;
8503
      END IF;
8504
   END;
8505
 
8506
/*-------------------------------------------------------------------------------------------------------*/
8507
   PROCEDURE new_patch (
8508
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
8509
      nparentpvid        IN       NUMBER,
8510
      spatchidlist       IN       VARCHAR2,
8511
      nuserid            IN       NUMBER,
8512
      returnpatchid      OUT      NUMBER
8513
   )
8514
   IS
8515
      patchpv_id           NUMBER;
8516
      parpkg_id            NUMBER;
8517
      lastinstallorder     NUMBER;
8518
      ispatchdlocked       package_versions.dlocked%TYPE;
8519
      ssv_mm               package_versions.v_mm%TYPE;
8520
      ssv_nmm              package_versions.v_nmm%TYPE;
8521
      ssv_ext              package_versions.v_ext%TYPE;
3959 dpurdie 8522
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
1373 dpurdie 8523
 
8524
      CURSOR parent_cur
8525
      IS
8526
         SELECT pv.*, pkg.pkg_name
8527
           FROM package_versions pv, PACKAGES pkg
8528
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
8529
 
3959 dpurdie 8530
      parent_rec parent_cur%ROWTYPE;
1373 dpurdie 8531
 
8532
      CURSOR patch_cur
8533
      IS
8534
         SELECT pv.*, pg.pkg_name
8535
           FROM package_versions pv, PACKAGES pg
8536
          WHERE pv.pkg_id = parpkg_id
8537
            AND pv.pkg_version = snewpatchversion
8538
            AND pv.pkg_id = pg.pkg_id;
8539
 
3959 dpurdie 8540
      patch_rec  patch_cur%ROWTYPE;
1373 dpurdie 8541
 
8542
      CURSOR releases_cur
8543
      IS
8544
         SELECT rc.pv_id
8545
           FROM release_content rc
8546
          WHERE rc.pv_id = patch_rec.pv_id;
8547
 
3959 dpurdie 8548
      releases_rec releases_cur%ROWTYPE;
1373 dpurdie 8549
   BEGIN
8550
      -- Get Last Install Order
8551
      SELECT COUNT (*)
8552
        INTO lastinstallorder
8553
        FROM package_patches pp
8554
       WHERE pp.pv_id = nparentpvid;
8555
 
8556
      -- Get parent details
8557
      OPEN parent_cur;
8558
 
8559
      FETCH parent_cur
8560
       INTO parent_rec;
8561
 
8562
      parpkg_id := parent_rec.pkg_id;
8563
 
8564
      -- Find if patch exists in database
8565
      OPEN patch_cur;
8566
 
8567
      FETCH patch_cur
8568
       INTO patch_rec;
8569
 
8570
      -- Parent must be official
8571
      IF parent_rec.dlocked = 'Y'
8572
      THEN
8573
         IF patch_cur%NOTFOUND
8574
         THEN
8575
            ispatchdlocked := 'N';
8576
 
8577
            -- Create new patch version --
8578
            SELECT seq_pv_id.NEXTVAL
8579
              INTO patchpv_id
8580
              FROM DUAL;
8581
 
8582
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
8583
 
8584
            INSERT INTO package_versions
8585
                        (pv_id, pkg_id, pkg_version,
8586
                         dlocked, created_stamp, creator_id,
8587
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
8588
                         src_path,
8589
                         pv_description,
8590
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
3959 dpurdie 8591
                         is_autobuildable, ripple_field
1373 dpurdie 8592
                        )
8593
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
8594
                         ispatchdlocked, ora_sysdate, nuserid,
8595
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
8596
                         parent_rec.src_path,
8597
                            'This is a patch to '
8598
                         || parent_rec.pkg_name
8599
                         || ' '
8600
                         || parent_rec.pkg_version,
3959 dpurdie 8601
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
1373 dpurdie 8602
                        );
8603
 
8604
            INSERT INTO package_patches
8605
                        (pv_id, patch_id, install_order)
3959 dpurdie 8606
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8607
                        lastinstallorder + 1 AS install_order
8608
                   FROM package_versions pv
8609
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8610
 
8611
            /* LOG ACTION */
8612
            log_action (patchpv_id,
8613
                        'new_version',
8614
                        nuserid,
8615
                        'Patch version created: ' || snewpatchversion
8616
                       );
8617
            log_action (nparentpvid,
8618
                        'patch_add',
8619
                        nuserid,
8620
                        'New patch created and attached: ' || snewpatchversion
8621
                       );
8622
         ELSE
8623
            patchpv_id := patch_rec.pv_id;
8624
            ispatchdlocked := patch_rec.dlocked;
8625
 
8626
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
8627
            OPEN releases_cur;
8628
 
8629
            FETCH releases_cur
8630
             INTO releases_rec;
8631
 
8632
            IF releases_cur%NOTFOUND
8633
            THEN
8634
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
8635
               UPDATE package_versions
8636
                  SET is_patch = 'Y'
8637
                WHERE pv_id = patchpv_id;
8638
 
8639
               INSERT INTO package_patches
8640
                           (pv_id, patch_id, install_order)
3959 dpurdie 8641
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8642
                           lastinstallorder + 1 AS install_order
8643
                      FROM package_versions pv
8644
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8645
            END IF;
8646
 
8647
            CLOSE releases_cur;
8648
 
8649
            /* LOG ACTION */
8650
            log_action (nparentpvid,
8651
                        'patch_add',
8652
                        nuserid,
8653
                           'Patch version was found and attached: '
8654
                        || snewpatchversion
8655
                       );
8656
         END IF;
8657
      END IF;
8658
 
8659
      /* Create Patch Dependencies */
8660
      opatchdepcollector := in_list_number (spatchidlist);
8661
 
8662
      -- Make sure patch is unofficial before altering its dependencies
8663
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
8664
      THEN
8665
         -- Delete Existing Dependencies
8666
         DELETE FROM package_dependencies dep
8667
               WHERE dep.pv_id = patchpv_id;
8668
 
8669
         -- Insert new dependencies
8670
         INSERT INTO package_dependencies
8671
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
3959 dpurdie 8672
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
8673
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
8674
                     'L' AS build_type
8675
                FROM package_versions pv
8676
               WHERE pv.pv_id IN (
1373 dpurdie 8677
                      SELECT *
8678
                        FROM TABLE
8679
                                (CAST
8680
                                    (opatchdepcollector AS relmgr_number_tab_t)
8681
                                ));
8682
      END IF;
8683
 
8684
      -- Return patch_id
8685
      returnpatchid := patchpv_id;
8686
 
8687
      CLOSE parent_cur;
8688
 
8689
      CLOSE patch_cur;
8690
   EXCEPTION
8691
      WHEN DUP_VAL_ON_INDEX
8692
      THEN
8693
         raise_application_error (-20000,
8694
                                     'Patch version '
8695
                                  || snewpatchversion
8696
                                  || ' already exist.'
8697
                                 );
8698
   END;
8699
 
8700
/*-------------------------------------------------------------------------------------------------------*/
8701
   PROCEDURE obsolete_patch (
8702
      patchid            IN   NUMBER,
8703
      isobsolete         IN   CHAR,
8704
      obsoletecomments   IN   VARCHAR2,
8705
      userid             IN   NUMBER
8706
   )
8707
   IS
8708
   BEGIN
8709
      -- Update patch
8710
      UPDATE package_versions pv
8711
         SET pv.is_obsolete = isobsolete,
8712
             pv.obsolete_comments = obsoletecomments
8713
       WHERE pv.pv_id = patchid;
8714
 
8715
      /*
8716
      -- Update patch children
8717
      UPDATE PACKAGE_VERSIONS pv SET
8718
      pv.IS_OBSOLETE = IsObsolete,
8719
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8720
      WHERE pv.PV_ID IN (
8721
                     SELECT DISTINCT dep.DPV_ID
8722
                       FROM PACKAGE_DEPENDENCIES dep
8723
                      WHERE dep.PV_ID = PatchId
8724
                     );
8725
 
8726
 
8727
      -- Update patch parent
8728
      UPDATE PACKAGE_VERSIONS pv SET
8729
      pv.IS_OBSOLETE = IsObsolete,
8730
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8731
      WHERE pv.PV_ID IN (
8732
                     SELECT DISTINCT dep.PV_ID
8733
                       FROM PACKAGE_DEPENDENCIES dep
8734
                      WHERE dep.DPV_ID = PatchId
8735
                     );
8736
 
3959 dpurdie 8737
      */
1373 dpurdie 8738
 
8739
      /* LOG ACTION */
8740
      IF isobsolete IS NOT NULL
8741
      THEN
8742
         log_action (patchid,
8743
                     'patch_obsolete',
8744
                     userid,
8745
                     'Obsolete patch. ' || obsoletecomments
8746
                    );
8747
      ELSE
8748
         log_action (patchid,
8749
                     'patch_obsolete',
8750
                     userid,
8751
                     'Undo patch obsolete.'
8752
                    );
8753
      END IF;
8754
   END;
8755
 
8756
/*-------------------------------------------------------------------------------------------------------*/
8757
   PROCEDURE obsolete_patches (
8758
      spatchidlist       IN   VARCHAR2,
8759
      isobsolete         IN   CHAR,
8760
      obsoletecomments   IN   VARCHAR2,
8761
      userid             IN   NUMBER
8762
   )
8763
   IS
8764
   BEGIN
8765
      /*--------------- Business Rules Here -------------------*/
8766
      IF spatchidlist IS NULL
8767
      THEN
8768
         raise_application_error (-20000,
8769
                                  'Please select one or more Patches.'
8770
                                 );
8771
      END IF;
8772
 
8773
/*-------------------------------------------------------*/
8774
 
8775
      -- Update patch
8776
      UPDATE package_versions pv
8777
         SET pv.is_obsolete = isobsolete,
8778
             pv.obsolete_comments = obsoletecomments
8779
       WHERE pv.pv_id IN (
8780
                SELECT *
8781
                  FROM THE
8782
                          (SELECT CAST
8783
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
8784
                                     )
8785
                             FROM DUAL
8786
                          ));
3959 dpurdie 8787
      /*
8788
      -- Update patch children
8789
      UPDATE PACKAGE_VERSIONS pv SET
8790
      pv.IS_OBSOLETE = IsObsolete,
8791
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8792
      WHERE pv.PV_ID IN (
8793
                     SELECT DISTINCT dep.DPV_ID
8794
                       FROM PACKAGE_DEPENDENCIES dep
8795
                      WHERE dep.PV_ID = PatchId
8796
                     );
1373 dpurdie 8797
 
8798
 
3959 dpurdie 8799
      -- Update patch parent
8800
      UPDATE PACKAGE_VERSIONS pv SET
8801
      pv.IS_OBSOLETE = IsObsolete,
8802
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8803
      WHERE pv.PV_ID IN (
8804
                     SELECT DISTINCT dep.PV_ID
8805
                       FROM PACKAGE_DEPENDENCIES dep
8806
                      WHERE dep.DPV_ID = PatchId
8807
                     );
1373 dpurdie 8808
 
8809
      */
8810
 
3959 dpurdie 8811
      /* LOG ACTION
8812
      IF IsObsolete IS NOT NULL THEN
1373 dpurdie 8813
         Log_Action ( PatchId, 'patch_obsolete', UserId,
3959 dpurdie 8814
                     'Obsolete patch. '|| ObsoleteComments );
8815
      ELSE
8816
         Log_Action ( PatchId, 'patch_obsolete', UserId,
8817
                     'Undo patch obsolete.' );
8818
      END IF;  */
1373 dpurdie 8819
   END;
8820
 
8821
/*-------------------------------------------------------------------------------------------------------*/
8822
   PROCEDURE add_process (
8823
      nprocid         IN   processes.proc_id%TYPE,
8824
      shealthtag      IN   processes.proc_name%TYPE,
8825
      sprocdesc       IN   processes.proc_description%TYPE,
8826
      scmdinterface   IN   processes.run_as%TYPE,
8827
      spkgowner       IN   processes.pkg_owner%TYPE,
8828
      sisinterface    IN   processes.is_interface%TYPE,
8829
      npvid           IN   package_processes.pv_id%TYPE,
8830
      nuserid         IN   NUMBER
8831
   )
8832
   IS
8833
      pkgname   VARCHAR2 (100);
3959 dpurdie 8834
 
1373 dpurdie 8835
   BEGIN
8836
      INSERT INTO processes
8837
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
8838
                   is_interface
8839
                  )
8840
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
8841
                   sisinterface
8842
                  );
8843
 
8844
      pk_package.add_package_process (nprocid, npvid, nuserid);
8845
   END;
8846
 
8847
/*-------------------------------------------------------------------------------------------------------*/
8848
   PROCEDURE add_package_process (
8849
      nprocidlist   IN   VARCHAR2,
8850
      npvid         IN   package_processes.pv_id%TYPE,
8851
      nuserid       IN   NUMBER
8852
   )
8853
   IS
8854
      processname   VARCHAR2 (4000);
8855
 
8856
      CURSOR proc_cur
8857
      IS
8858
         SELECT prc.proc_id
8859
           FROM processes prc
8860
          WHERE prc.proc_id IN (
8861
                   SELECT *
8862
                     FROM THE
8863
                             (SELECT CAST
8864
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
8865
                                        )
8866
                                FROM DUAL
8867
                             ));
8868
 
3959 dpurdie 8869
      proc_rec  proc_cur%ROWTYPE;
1373 dpurdie 8870
   BEGIN
8871
      OPEN proc_cur;
8872
 
8873
      FETCH proc_cur
8874
       INTO proc_rec;
8875
 
8876
      WHILE proc_cur%FOUND
8877
      LOOP
3959 dpurdie 8878
         INSERT INTO package_processes (proc_id, pv_id)
8879
              VALUES (proc_rec.proc_id, npvid);
1373 dpurdie 8880
 
8881
         SELECT prc.proc_name
8882
           INTO processname
8883
           FROM processes prc
8884
          WHERE prc.proc_id = proc_rec.proc_id;
8885
 
8886
         -- Log Action --
8887
         log_action (npvid,
8888
                     'process_add',
8889
                     nuserid,
8890
                     'Added process with health tag ' || processname
8891
                    );
8892
 
8893
         FETCH proc_cur
8894
          INTO proc_rec;
8895
      END LOOP;
3959 dpurdie 8896
 
8897
      CLOSE proc_cur;
1373 dpurdie 8898
   END;
8899
 
8900
/*-------------------------------------------------------------------------------------------------------*/
8901
   PROCEDURE remove_process (
8902
      nprocid   IN   package_processes.proc_id%TYPE,
8903
      npvid     IN   package_processes.pv_id%TYPE,
8904
      nuserid   IN   NUMBER
8905
   )
8906
   IS
8907
      processname   VARCHAR2 (4000);
8908
   BEGIN
8909
      SELECT prc.proc_name
8910
        INTO processname
8911
        FROM processes prc
8912
       WHERE prc.proc_id = nprocid;
8913
 
8914
      DELETE FROM package_processes
8915
            WHERE proc_id = nprocid AND pv_id = npvid;
8916
 
8917
      -- Log Action --
8918
      log_action (npvid,
8919
                  'process_remove',
8920
                  nuserid,
8921
                  'Removed process with health tag ' || processname
8922
                 );
8923
   END;
8924
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8925
   /*
8926
   ** Author: Rupesh Solanki
8927
   ** Purpose: To move package versions from one release to another
8928
   ** Release: 4th September 2006
8929
   */
8930
   PROCEDURE move_package (
8931
      npvid        IN package_versions.pv_id%TYPE,
8932
      nrtagid      IN release_tags.rtag_id%TYPE,
8933
      nnewrtagid   IN release_tags.rtag_id%TYPE,
8934
      nuserid      IN NUMBER
8935
   )
8936
   IS
1373 dpurdie 8937
 
3959 dpurdie 8938
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
8939
 
8940
   BEGIN
8941
      SELECT rtag_name into oldrtag_name
8942
      FROM RELEASE_TAGS
8943
      WHERE rtag_id = nrtagid;
8944
 
8945
      SELECT rtag_name into newrtag_name
8946
      FROM RELEASE_TAGS
8947
      WHERE rtag_id = nnewrtagid;
8948
 
8949
      /* Table Work In Progress*/
8950
      UPDATE WORK_IN_PROGRESS
8951
      SET RTAG_ID = nnewrtagid
8952
      WHERE RTAG_ID = nrtagid
8953
      AND PV_ID = npvid;
8954
 
8955
      /* Table PLANNED*/
8956
      UPDATE PLANNED
8957
      SET RTAG_ID = nnewrtagid
8958
      WHERE RTAG_ID = nrtagid
8959
      AND PV_ID = npvid;
8960
 
8961
      /* Table PEGGED_VERSIONS */
8962
      DELETE FROM PEGGED_VERSIONS pegv
8963
      WHERE pegv.RTAG_ID = nrtagid
8964
      AND pegv.PV_ID = npvid;
8965
 
8966
      /* Table ADVISORY_RIPPLE*/
8967
      DELETE FROM ADVISORY_RIPPLE
8968
      WHERE RTAG_ID = nrtagid
8969
      AND PV_ID = npvid;
8970
 
8971
 
1373 dpurdie 8972
      -- Log Action --
8973
      log_action (npvid,
8974
                  'move_package_version',
8975
                  nuserid,
8976
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
3959 dpurdie 8977
                 );
8978
   END;
8979
 
1373 dpurdie 8980
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8981
   /*
8982
   ** Author: Rupesh Solanki
8983
   ** Purpose: To modify the product state from integration to test to deployment
8984
   ** Release: 25th January 2006
8985
   */
8986
   PROCEDURE modify_product_state (
8987
      npvid    IN package_versions.pv_id%TYPE,
8988
      nrtagid  IN release_tags.rtag_id%TYPE,
8989
      nstateid IN product_states.state_id%TYPE,
8990
      nuserid  IN NUMBER
1373 dpurdie 8991
   ) IS
3959 dpurdie 8992
 
8993
      sStateName VARCHAR2(4000);
8994
      sRtagName VARCHAR2(4000);
8995
 
8996
   BEGIN
8997
 
8998
      UPDATE RELEASE_CONTENT
8999
      SET PRODUCT_STATE = nstateid
9000
      WHERE PV_ID = npvid
9001
      AND RTAG_ID = nrtagid;
9002
 
9003
 
9004
      SELECT STATE INTO sStateName
9005
      FROM PRODUCT_STATES
9006
      WHERE STATE_ID = nstateid;
9007
 
9008
      SELECT RTAG_NAME into sRtagName
9009
      FROM RELEASE_TAGS
9010
      WHERE RTAG_ID = nrtagid;
9011
 
9012
 
9013
      -- Log Action --
9014
      log_action (npvid,
9015
                  'modify_product_state',
9016
                     nuserid,
9017
                     sStateName || ' in '|| sRtagName
9018
                  );
9019
   END;
9020
/*-------------------------------------------------------------------------------------------------------*/
9021
   /*
9022
   ** Author: Jeremy Tweddle
9023
   ** Date: 24/Aug/2007
9024
   */
9025
   PROCEDURE add_code_review_url (
9026
      npvid           IN    NUMBER,
9027
      nprojid         IN    NUMBER,
9028
      surl            IN    VARCHAR2,
9029
      sreason         IN    VARCHAR2,
4553 dpurdie 9030
      ddateofreview   IN    VARCHAR2
3959 dpurdie 9031
   ) IS
9032
 
9033
      ncrid NUMBER;
9034
 
9035
   BEGIN
9036
 
9037
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
9038
 
4553 dpurdie 9039
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review, last_modified )
9040
      VALUES ( ncrid, npvid, nprojid, surl, sreason, TO_DATE( ddateofreview,'DD/MM/YYYY' ), ora_sysdate );
3959 dpurdie 9041
 
9042
   END;
9043
/*-------------------------------------------------------------------------------------------------------*/
9044
   /*
9045
   ** Author: Jeremy Tweddle
9046
   ** Date: 22/Aug/2007
9047
   */
9048
   PROCEDURE update_code_review_url (
9049
      ncrid           IN    NUMBER,
9050
      nprojid         IN    NUMBER,
9051
      surl            IN    VARCHAR2,
4553 dpurdie 9052
      sreason         IN    VARCHAR2,
9053
      ddateofreview   IN    VARCHAR2
3959 dpurdie 9054
   ) IS
9055
 
9056
   BEGIN
9057
 
9058
      UPDATE code_review_url
9059
      SET url = surl,
9060
          proj_id = nprojid,
9061
          reason = sreason,
4553 dpurdie 9062
          date_of_review = TO_DATE( ddateofreview,'DD/MM/YYYY' ), 
3959 dpurdie 9063
          last_modified = ora_sysdate
9064
      WHERE cr_id = ncrid;
9065
 
9066
   END;
4553 dpurdie 9067
 
3959 dpurdie 9068
/*-------------------------------------------------------------------------------------------------------*/
9069
   /*
9070
   ** Author: Jeremy Tweddle
9071
   ** Date: 22/Aug/2007
9072
   */
9073
   PROCEDURE remove_code_review_url (
9074
      ncrid  IN    NUMBER
9075
   ) IS
9076
 
9077
   BEGIN
9078
      DELETE FROM code_review_url
9079
      WHERE cr_id = ncrid;
9080
   END;
9081
/*-------------------------------------------------------------------------------------------------------*/
9082
END pk_package;
4040 dpurdie 9083
 
1374 dpurdie 9084
/
1373 dpurdie 9085
 
4040 dpurdie 9086
/
9087
--------------------------------------------------------
9088
--  DDL for Package Body PK_PLANNED
9089
--------------------------------------------------------
9090
 
3959 dpurdie 9091
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
9092
 
1373 dpurdie 9093
/*
9094
------------------------------
3959 dpurdie 9095
||  Last Modified:  G.Huddy
9096
||  Modified Date:  05/Aug/2008
9097
||  Body Version:   1.2
1373 dpurdie 9098
------------------------------
9099
*/
9100
 
9101
 
9102
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9103
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 9104
 
3959 dpurdie 9105
    oldPvId NUMBER;
9106
    ReleaseLocation VARCHAR2(4000);
9107
    IsPatch CHAR(1) := NULL;
9108
    sLocation VARCHAR2(4000) := NULL;
9109
    nRtagIdLocation NUMBER;
1373 dpurdie 9110
 
9111
 
9112
 
3959 dpurdie 9113
BEGIN
9114
    /*--------------- Business Rules Here -------------------*/
9115
    /*-------------------------------------------------------*/
1373 dpurdie 9116
 
3959 dpurdie 9117
    BEGIN
9118
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
9119
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
9120
          FROM PLANNED pl,
9121
               RELEASE_TAGS rt,
9122
               PROJECTS proj
9123
         WHERE pl.PV_ID = newPvId
9124
           AND pl.RTAG_ID = rt.RTAG_ID
9125
           AND rt.OFFICIAL != 'Y'
9126
           AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 9127
 
3959 dpurdie 9128
        EXCEPTION
9129
            WHEN NO_DATA_FOUND THEN
9130
                sLocation := NULL;
9131
    END;
1373 dpurdie 9132
 
3959 dpurdie 9133
 
9134
 
9135
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
9136
 
9137
        -- Add to "Pending" area
9138
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9139
        VALUES( RtagId, newPvId, ViewId, 'R' );
9140
 
9141
 
9142
        /* LOG ACTION */
9143
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9144
          FROM PROJECTS proj,
9145
               RELEASE_TAGS rt
9146
         WHERE rt.PROJ_ID = proj.PROJ_ID
9147
           AND rt.RTAG_ID = RtagId;
9148
 
9149
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
9150
 
9151
    ELSE
9152
 
9153
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
9154
 
9155
    END IF;
9156
 
9157
END;
4585 dpurdie 9158
PROCEDURE ADD_RIPPLE_PACKAGE ( newPvId IN NUMBER, basePvid IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9159
 
9160
    oldPvId NUMBER;
9161
    ReleaseLocation VARCHAR2(4000);
9162
    IsPatch CHAR(1) := NULL;
9163
    sLocation VARCHAR2(4000) := NULL;
9164
    nRtagIdLocation NUMBER;
9165
    ViewId NUMBER := -1;
9166
 
9167
/*  ADD_RIPPLE_PACKAGE is used by the auto build process to add a rippled package into the
9168
    Pending tab as a part of the Release process.
9169
 
9170
    Done mainly to assist in error handling and build restart
9171
*/
9172
 
9173
 
9174
BEGIN
9175
    /*--------------- Business Rules Here -------------------*/
9176
    BEGIN
9177
        -- Ensure that the Base package exists in the Release
9178
        -- Determine the Base Package View Id
9179
        select BASE_VIEW_ID into ViewId 
9180
        from release_content rc
9181
        where rc.pv_id = basePvid and rc.rtag_id = RtagId;
9182
        exception
9183
            when NO_DATA_FOUND then
9184
                ViewId := -1;
9185
    END; 
9186
 
9187
    SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9188
      FROM PROJECTS proj,
9189
           RELEASE_TAGS rt
9190
     WHERE rt.PROJ_ID = proj.PROJ_ID
9191
       AND rt.RTAG_ID = RtagId;
9192
 
9193
    /* Core operation */
9194
 
9195
    IF ViewId != -1 THEN
9196
 
9197
        -- Add to "Pending" area
9198
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9199
        VALUES( RtagId, newPvId, ViewId, 'R' );
9200
 
9201
        /* LOG ACTION */
9202
 
9203
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
9204
 
9205
    ELSE
9206
 
9207
        RAISE_APPLICATION_ERROR (-20000, 'Base version not in release '|| sLocation ||'.' );
9208
 
9209
    END IF;
9210
 
9211
END;
9212
 
1373 dpurdie 9213
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9214
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 9215
 
3959 dpurdie 9216
    ReleaseLocation VARCHAR2(4000);
1373 dpurdie 9217
 
3959 dpurdie 9218
BEGIN
1373 dpurdie 9219
 
3959 dpurdie 9220
    /*--------------- Business Rules Here -------------------*/
9221
    /*-------------------------------------------------------*/
1373 dpurdie 9222
 
9223
 
3959 dpurdie 9224
    -- Get release location for logging pusposes
9225
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9226
      FROM PROJECTS proj,
9227
           RELEASE_TAGS rt
9228
     WHERE rt.PROJ_ID = proj.PROJ_ID
9229
       AND rt.RTAG_ID = RtagId;
1373 dpurdie 9230
 
9231
 
3959 dpurdie 9232
    -- Delete from Work In Progress
9233
    DELETE
9234
      FROM PLANNED pl
9235
     WHERE pl.RTAG_ID = RtagId
9236
       AND pl.PV_ID = PvId;
1373 dpurdie 9237
 
3959 dpurdie 9238
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
9239
 
9240
 
9241
 
9242
 
9243
END;
1373 dpurdie 9244
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9245
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
1373 dpurdie 9246
 
3959 dpurdie 9247
    ReturnValue NUMBER;
1373 dpurdie 9248
 
3959 dpurdie 9249
BEGIN
9250
    SELECT pl.VIEW_ID INTO ReturnValue
9251
      FROM PLANNED pl
9252
     WHERE pl.RTAG_ID = RtagId
9253
       AND pl.PV_ID = PvId;
9254
 
9255
    RETURN ReturnValue;
9256
END;
9257
/*-------------------------------------------------------------------------------------------------------*/
9258
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9259
 
9260
    IsBaseView CHAR(1);
9261
 
9262
BEGIN
9263
 
9264
    -- Check if the view is BASE VIEW
9265
    SELECT vi.BASE_VIEW INTO IsBaseView
9266
      FROM VIEWS vi
9267
     WHERE vi.VIEW_ID = ViewId;
9268
 
9269
 
9270
    IF (IsBaseView = 'Y') THEN
9271
        -- Get Base view content
9272
        OPEN RecordSet FOR
9273
        SELECT 0 AS PKG_STATE,
9274
               NULL AS DEPRECATED_STATE,
9275
               pv.pv_id,
9276
               pkg.pkg_name,
9277
               pv.pkg_version,
9278
               pv.dlocked,
9279
               pv.pv_description,
9280
               pv.BUILD_TYPE,
9281
               rel.operation
9282
          FROM PLANNED rel,
9283
               packages pkg,
9284
               package_versions pv
9285
         WHERE pv.pkg_id = pkg.pkg_id
9286
           AND rel.pv_id = pv.pv_id
9287
           AND rel.VIEW_ID = ViewId
9288
           AND rel.RTAG_ID = RtagId
9289
         ORDER BY UPPER(pkg.PKG_NAME);
9290
 
9291
    ELSE
9292
 
9293
        -- Get non base view content
9294
        OPEN RecordSet FOR
9295
        SELECT 0 AS PKG_STATE,
9296
               NULL AS DEPRECATED_STATE,
9297
               pv.pv_id,
9298
               pkg.pkg_name,
9299
               pv.pkg_version,
9300
               pv.dlocked,
9301
               pv.pv_description,
9302
               pv.BUILD_TYPE,
9303
               rel.operation
9304
          FROM PLANNED rel,
9305
               packages pkg,
9306
               package_versions pv,
9307
               VIEW_DEF vd
9308
         WHERE pv.pkg_id = pkg.pkg_id
9309
           AND rel.pv_id = pv.pv_id
9310
           AND rel.RTAG_ID = RtagId
9311
           AND vd.VIEW_ID = ViewId
9312
           AND vd.PKG_ID = pv.PKG_ID
9313
         ORDER BY UPPER(pkg.PKG_NAME);
9314
 
9315
    END IF;
9316
 
9317
 
9318
END;
9319
/*-------------------------------------------------------------------------------------------------------*/
9320
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
9321
 
9322
BEGIN
9323
 
9324
    UPDATE PLANNED pl SET
9325
    pl.VIEW_ID = NewViewId
9326
    WHERE pl.PV_ID = PvId
9327
      AND pl.RTAG_ID = RtagId;
9328
 
9329
END;
9330
/*-------------------------------------------------------------------------------------------------------*/
9331
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
9332
-- version of a package as part of a release-to-release merge operation carried out within release manager.
9333
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
9334
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
9335
-- via the Release Manager merge manager display
9336
 
9337
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
9338
 
9339
    ReleaseLocation VARCHAR2(4000);
9340
 
9341
        entryExists NUMBER;
9342
        existingOperation CHAR;
9343
BEGIN
9344
    /*--------------- Business Rules Here -------------------*/
9345
    /*-------------------------------------------------------*/
9346
 
9347
      -- Determine if the specified PV_ID already exists in the planned table....
9348
      SELECT COUNT (pl.pv_id) INTO entryExists
9349
      FROM PLANNED pl
9350
      WHERE pl.pv_id = newPvId
9351
      AND pl.rtag_id = RtagId
9352
      AND pl.view_id = ViewId;
9353
 
9354
      -- If the specified PV_ID already exists in the planned table....
9355
      IF entryExists = 1 THEN
9356
 
9357
         -- Get the operation for the existing entry
9358
         SELECT pl.operation INTO existingOperation
9359
         FROM PLANNED pl
9360
         WHERE pl.pv_id = newPvId
9361
         AND pl.rtag_id = RtagId
9362
         AND pl.view_id = ViewId;
9363
 
9364
         -- Is the specified merge operation the opposite of the existing entry?
9365
         -- If it is not, then there is nothing to do, otherwise...
9366
         -- NOTE: A = Add, S = Subtract
9367
         IF (mergeOperation = 'S' AND existingOperation = 'A')
9368
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
9369
 
9370
           -- It is the opposite, so effectively it cancels the existing entry
9371
           -- Remove the entry from the planned table
9372
           DELETE
9373
            FROM PLANNED pl
9374
           WHERE pl.pv_id = newPvId
9375
             AND pl.rtag_id = RtagId
9376
             AND pl.view_id = ViewId;
9377
 
9378
           -- Log action
9379
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9380
             FROM PROJECTS proj,
9381
                  RELEASE_TAGS rt
9382
            WHERE rt.PROJ_ID = proj.PROJ_ID
9383
              AND rt.RTAG_ID = RtagId;
9384
 
9385
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9386
         END IF;
3959 dpurdie 9387
      ELSE
9388
         -- Add to Planned tabled
9389
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9390
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
1373 dpurdie 9391
 
3959 dpurdie 9392
         -- Log Action
9393
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9394
          FROM PROJECTS proj,
9395
               RELEASE_TAGS rt
9396
         WHERE rt.PROJ_ID = proj.PROJ_ID
9397
         AND   rt.RTAG_ID = RtagId;
9398
 
9399
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9400
      END IF;
9401
 
3959 dpurdie 9402
END;
1373 dpurdie 9403
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9404
END PK_PLANNED;
4040 dpurdie 9405
 
3959 dpurdie 9406
/
1373 dpurdie 9407
 
4040 dpurdie 9408
/
9409
--------------------------------------------------------
9410
--  DDL for Package Body PK_PROJECT
9411
--------------------------------------------------------
9412
 
3959 dpurdie 9413
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
1373 dpurdie 9414
 
3959 dpurdie 9415
    /*------------------------------------------------------------------------*/
9416
    PROCEDURE update_base_url (
9417
    nprojid   IN  projects.proj_id%TYPE,
9418
    sbaseurl  IN  VARCHAR2
9419
    ) IS
9420
    BEGIN
1373 dpurdie 9421
 
3959 dpurdie 9422
    UPDATE projects
9423
    SET base_url = sbaseurl
9424
    WHERE proj_id = nprojid;
9425
 
9426
    END update_base_url;
9427
 
9428
/*------------------------------------------------------------------------*/
9429
    PROCEDURE update_project_config (
9430
    nprojid   IN  projects.proj_id%TYPE,
9431
    sbaseurl  IN  VARCHAR2,
9432
    sjirakey  IN  VARCHAR2
9433
    ) IS
9434
    BEGIN
9435
 
9436
    UPDATE projects
9437
    SET base_url = sbaseurl,
9438
        jira_key = sjirakey
9439
    WHERE proj_id = nprojid;
9440
 
9441
    END update_project_config;
9442
    /*------------------------------------------------------------------------*/
9443
 
9444
    END pk_project;
4040 dpurdie 9445
 
3959 dpurdie 9446
/
9447
 
4040 dpurdie 9448
/
9449
--------------------------------------------------------
9450
--  DDL for Package Body PK_RELEASE
9451
--------------------------------------------------------
9452
 
3959 dpurdie 9453
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
9454
 
1373 dpurdie 9455
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9456
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
1373 dpurdie 9457
 
3959 dpurdie 9458
RtagId NUMBER;
9459
ParentRtagId NUMBER;
9460
RecCount NUMBER := 0;
9461
VtreeId NUMBER;
1373 dpurdie 9462
 
3959 dpurdie 9463
BEGIN
9464
   /*--------------- Business Rules Here -------------------*/
9465
   -- Check for missing parameters
9466
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
9467
   THEN
9468
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
1373 dpurdie 9469
 
3959 dpurdie 9470
   END IF;
1373 dpurdie 9471
 
3959 dpurdie 9472
 
9473
   -- Check for duplicate Release Names
9474
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9475
     FROM RELEASE_TAGS rt
9476
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9477
      AND rt.PROJ_ID = nProjId;
9478
 
9479
   IF (RecCount > 0) THEN
9480
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9481
   END IF;
9482
   /*-------------------------------------------------------*/
9483
 
9484
 
9485
   -- Get rtag_id
9486
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
9487
 
9488
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
9489
 
9490
 
9491
 
9492
   -- Get Parent RtagId
9493
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
9494
 
9495
   -- If the parent RTAG is NOT in this project then we cannot use it.
9496
   -- We must re-assign the parent to be the new release's RTAG_ID instead
9497
   -- else it will not show up in the projects release tree (DEVI-55480)
9498
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9499
     FROM RELEASE_TAGS rt
9500
    WHERE rt.RTAG_ID = ParentRtagId
9501
      AND rt.PROJ_ID = nProjId;
9502
 
9503
   IF (RecCount = 0) THEN
9504
     ParentRtagId := RtagId;
9505
   END IF;
9506
 
9507
   -- Create new release
9508
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
9509
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
9510
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
9511
   VALUES ( RtagId,
9512
          sReleaseName,
9513
          sReleaseComments,
9514
          ORA_SYSDATE,
9515
          nUserId,
9516
          'N',
9517
          'N',
9518
          0,
9519
          ParentRtagId,
9520
          nProjId,
9521
          VtreeId );
9522
 
9523
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
9524
   IF (NOT nSourceRtagId IS NULL)
9525
   THEN
9526
      UPDATE RELEASE_TAGS rtd
9527
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
9528
      WHERE rtd.RTAG_ID = RtagId;
9529
   END IF;
9530
 
9531
   -- Update display Order
9532
   UPDATE_DISPLAY_ORDER ( nProjId );
9533
 
9534
   /* Log Project Action */
9535
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
9536
 
9537
 
9538
   -- Import Release Contents
9539
   IF (NOT nSourceRtagId IS NULL) THEN
9540
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
9541
   END IF;
9542
 
9543
END;
9544
/*-------------------------------------------------------------------------------------------------------*/
9545
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
9546
 
9547
 
9548
BEGIN
9549
 
9550
 
9551
   /*--------------- Business Rules Here -------------------*/
9552
   /*-------------------------------------------------------*/
9553
 
9554
   UPDATE RELEASE_TAGS urt SET
9555
   urt.DISPLAY_ORDER = (
9556
                  SELECT qry.REC_NUM
9557
                    FROM (
9558
                        SELECT rel.*, ROWNUM AS REC_NUM
9559
                          FROM (
9560
 
9561
                                SELECT rt.RTAG_ID,
9562
                                    rt.DISPLAY_ORDER,
9563
                                     DECODE( rt.PARENT_RTAG_ID,
9564
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
9565
                                FROM RELEASE_TAGS rt
9566
                               WHERE rt.PROJ_ID = nProjId
9567
 
9568
                                ) rel
9569
                        START WITH rel.PARENT_RTAG_ID = 0
9570
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
9571
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
9572
                        ) qry
9573
                     WHERE qry.RTAG_ID = urt.RTAG_ID
9574
                  )
9575
   WHERE urt.PROJ_ID = nProjId;
9576
 
9577
END;
9578
/*-------------------------------------------------------------------------------------------------------*/
9579
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
9580
 
9581
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9582
   SeqNum NUMBER;
9583
 
9584
BEGIN
9585
 
9586
 
9587
   /*--------------- Business Rules Here -------------------*/
9588
   /*-------------------------------------------------------*/
9589
 
9590
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
9591
 
9592
   -- Set start sequence number
9593
   SeqNum := 1;
9594
 
9595
   FOR i IN 1..nIdCollector.COUNT
9596
   LOOP
9597
 
9598
      -- Update new display order
9599
      UPDATE RELEASE_TAGS rt SET
9600
         rt.DISPLAY_ORDER = SeqNum
9601
       WHERE rt.PROJ_ID = nProjId
9602
         AND rt.RTAG_ID = nIdCollector(i);
9603
 
9604
      SeqNum := SeqNum + 1;
9605
 
9606
   END LOOP;
9607
 
9608
END;
9609
/*-------------------------------------------------------------------------------------------------------*/
9610
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
9611
 
9612
RecCount NUMBER := 0;
9613
ProjId NUMBER;
9614
 
9615
BEGIN
9616
 
9617
 
9618
   /*--------------- Business Rules Here -------------------*/
9619
   -- Check for missing parameters
9620
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
9621
   THEN
9622
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9623
 
9624
   END IF;
9625
 
9626
 
9627
   -- Check for duplicate Release Names
9628
   SELECT rt.PROJ_ID INTO ProjId
9629
     FROM RELEASE_TAGS rt
9630
    WHERE rt.RTAG_ID = nRtagId;
9631
 
9632
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9633
     FROM RELEASE_TAGS rt
9634
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9635
      AND rt.RTAG_ID != nRtagId
9636
      AND rt.PROJ_ID = ProjId;
9637
 
9638
 
9639
   IF (RecCount > 0) THEN
9640
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9641
   END IF;
9642
   /*-------------------------------------------------------*/
9643
 
9644
 
9645
 
9646
   -- Update release details
9647
   UPDATE RELEASE_TAGS rt SET
9648
   rt.RTAG_NAME = sReleaseName,
9649
   rt.DESCRIPTION = sReleaseComments,
9650
   rt.PARENT_RTAG_ID = nParentRtagId,
9651
   rt.ASSOC_MASS_REF = nMASSRtagId,
9652
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9653
   rt.OWNER_EMAIL = sOwnerEmail,
9654
   rt.PRODUCT_STATE_USED = cState
9655
   WHERE rt.RTAG_ID = nRtagId;
9656
 
9657
   -- Update display Order
9658
   UPDATE_DISPLAY_ORDER ( ProjId );
9659
 
9660
   /* Log Project Action */
9661
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9662
 
9663
 
9664
 
9665
 
9666
END;
9667
/*-------------------------------------------------------------------------------------------------------*/
9668
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9669
 
9670
   RecCount NUMBER := 0;
9671
   sReleaseId VARCHAR2(4000);
9672
   ProjId NUMBER;
9673
 
9674
BEGIN
9675
   /*--------------- Business Rules Here -------------------*/
9676
   IF (nRtagId IS NULL)
9677
   THEN
9678
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9679
   END IF;
9680
 
9681
 
9682
 
9683
   -- Check for any kids
9684
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9685
     FROM RELEASE_TAGS rt
9686
    WHERE rt.PARENT_RTAG_ID = nRtagId
9687
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9688
 
9689
   IF (RecCount > 0) THEN
9690
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9691
   END IF;
9692
   /*-------------------------------------------------------*/
9693
 
9694
   -- Clear the release contents
9695
   Clean_Release_Contents ( nRtagId, nUserId );
9696
 
9697
   /* Log Project Action */
9698
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9699
     FROM RELEASE_TAGS rt
9700
    WHERE rt.RTAG_ID = nRtagId;
9701
 
9702
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9703
 
9704
 
9705
   -- Remove Release
9706
   DELETE
9707
     FROM RELEASE_TAGS rt
9708
    WHERE rt.RTAG_ID = nRtagId;
9709
 
9710
 
9711
 
9712
END;
9713
/*-------------------------------------------------------------------------------------------------------*/
9714
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9715
 
9716
   sSourceLocation VARCHAR2(4000);
9717
   sTargetLocation VARCHAR2(4000);
9718
   ProjId NUMBER;
9719
   cReleaseMode CHAR(1);
9720
   RconId NUMBER;
9721
 
9722
   -- this cursor gets the source release daemon configurations, ensuring that the
9723
   -- first record will be the master daemon, and subsequent records will be the slaves.
9724
   CURSOR curSrcReleaseConfigs IS
4308 dpurdie 9725
    SELECT daemon_hostname, gbe_id, gbe_buildfilter, bmcon_id, daemon_mode
3959 dpurdie 9726
     FROM RELEASE_CONFIG rc
9727
    WHERE rc.RTAG_ID = nSourceRtagId
9728
    ORDER BY rc.daemon_mode;
9729
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
9730
 
9731
    -- this cursor looks for target release daemons
9732
   CURSOR curTgtReleaseConfigs IS
9733
    SELECT rcon_id
9734
     FROM RELEASE_CONFIG rc
9735
    WHERE rc.RTAG_ID = nTargetRtagId;
9736
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
9737
 
9738
    -- this cursor looks for target release daemon run level entries
9739
   CURSOR curTgtReleaseConfigRunLevel IS
9740
    SELECT current_run_level
9741
     FROM RUN_LEVEL rl
9742
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
9743
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
9744
 
9745
BEGIN
9746
   /*--------------- Business Rules Here -------------------*/
9747
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9748
   THEN
9749
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9750
   END IF;
9751
 
9752
   IF (nSourceRtagId = nTargetRtagId) THEN
9753
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9754
   END IF;
9755
 
9756
 
9757
   -- Check if Target release is in OPEN mode
9758
   SELECT rt.OFFICIAL  INTO  cReleaseMode
9759
     FROM RELEASE_TAGS rt
9760
    WHERE rt.RTAG_ID = nTargetRtagId;
9761
 
9762
   IF (cReleaseMode != 'N') THEN
9763
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9764
   END IF;
9765
 
9766
   -- check that the target release's daemons are all paused before we allow an import operation
9767
   OPEN curTgtReleaseConfigs;
9768
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
9769
 
9770
   WHILE curTgtReleaseConfigs%FOUND
9771
   LOOP
9772
      OPEN curTgtReleaseConfigRunLevel;
9773
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
9774
      IF curTgtReleaseConfigRunLevel%FOUND THEN
9775
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
9776
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
9777
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
9778
         END IF;
1373 dpurdie 9779
      ELSE
3959 dpurdie 9780
         -- we don't know what the daemon run level is so err on the side of caution
9781
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
1373 dpurdie 9782
      END IF;
3959 dpurdie 9783
      CLOSE curTgtReleaseConfigRunLevel;
1373 dpurdie 9784
 
3959 dpurdie 9785
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
9786
   END LOOP;
1373 dpurdie 9787
 
3959 dpurdie 9788
   CLOSE curTgtReleaseConfigs;
1373 dpurdie 9789
 
9790
 
3959 dpurdie 9791
   /*-------------------------------------------------------*/
1373 dpurdie 9792
 
3959 dpurdie 9793
   -- Clean target contents
9794
   Clean_Release_Contents ( nTargetRtagId, nUserId );
1373 dpurdie 9795
 
9796
 
3959 dpurdie 9797
   -- Import Released Area Contents
9798
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
9799
   SELECT nTargetRtagId AS RTAG_ID,
9800
         rc.PV_ID,
9801
         rc.BASE_VIEW_ID,
9802
         rc.INSERT_STAMP,
9803
         rc.INSERTOR_ID,
9804
         rc.PKG_STATE,
9805
         rc.PKG_ID,
9806
         rc.DEPRECATED_STATE
9807
     FROM RELEASE_CONTENT rc
9808
    WHERE rc.RTAG_ID = nSourceRtagId;
9809
 
9810
 
9811
   -- Import any Pegged Version settings from the source release
9812
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
9813
   SELECT nTargetRtagId AS RTAG_ID,
9814
          pegv.PV_ID
9815
     FROM PEGGED_VERSIONS pegv
9816
    WHERE pegv.RTAG_ID = nSourceRtagId;
9817
 
9818
   -- Import any Advisory Ripple settings from the source release
9819
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
9820
   SELECT nTargetRtagId AS RTAG_ID,
9821
          avr.PV_ID
9822
     FROM ADVISORY_RIPPLE avr
9823
    WHERE avr.RTAG_ID = nSourceRtagId;
9824
 
9825
 
9826
   --Import Release Configuration Information
9827
   OPEN curSrcReleaseConfigs;
9828
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9829
 
4308 dpurdie 9830
     WHILE curSrcReleaseConfigs%FOUND
3959 dpurdie 9831
   LOOP
9832
      -- add a daemon to the target release
4308 dpurdie 9833
      PK_BUILDAPI.duplicate_daemon_config( nTargetRtagId, 
9834
                                     recSrcReleaseConfigs.bmcon_id, 
9835
                                     recSrcReleaseConfigs.daemon_hostname, 
9836
                                     recSrcReleaseConfigs.gbe_id, 
9837
                                     recSrcReleaseConfigs.daemon_mode ,
9838
                                     recSrcReleaseConfigs.gbe_buildfilter );
3959 dpurdie 9839
 
9840
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9841
   END LOOP;
9842
 
9843
   CLOSE curSrcReleaseConfigs;
9844
 
9845
 
9846
 
9847
   -- Import Ignore Warning states
9848
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9849
   SELECT nTargetRtagId AS RTAG_ID,
9850
          igw.PV_ID,
9851
          igw.DPV_ID
9852
     FROM IGNORE_WARNINGS igw
9853
    WHERE igw.rtag_id = nSourceRtagId;
9854
 
9855
 
9856
   /* Log Project Action */
9857
   -- Get Source Location
9858
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9859
     FROM RELEASE_TAGS rt,
9860
           PROJECTS pr
9861
    WHERE rt.PROJ_ID = pr.PROJ_ID
9862
      AND rt.RTAG_ID = nSourceRtagId;
9863
 
9864
   -- Get Target Location
9865
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9866
     FROM RELEASE_TAGS rt,
9867
           PROJECTS pr
9868
    WHERE rt.PROJ_ID = pr.PROJ_ID
9869
      AND rt.RTAG_ID = nTargetRtagId;
9870
 
9871
   -- Get project id
9872
   SELECT rt.PROJ_ID  INTO  ProjId
9873
     FROM RELEASE_TAGS rt
9874
    WHERE rt.RTAG_ID = nTargetRtagId;
9875
 
9876
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
9877
END;
9878
 
9879
 
9880
 
1373 dpurdie 9881
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9882
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
1373 dpurdie 9883
 
3959 dpurdie 9884
   RecCount NUMBER;
9885
        rconIdList VARCHAR2(4000);
1373 dpurdie 9886
 
3959 dpurdie 9887
BEGIN
9888
   /*--------------- Business Rules Here -------------------*/
9889
   IF (nRtagId IS NULL)
9890
   THEN
9891
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9892
   END IF;
1373 dpurdie 9893
 
9894
 
3959 dpurdie 9895
   -- Check if other release references this release
9896
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9897
     FROM RELEASE_LINKS rl
9898
    WHERE rl.REF_RTAG_ID = nRtagId;
1373 dpurdie 9899
 
3959 dpurdie 9900
   IF (RecCount > 0) THEN
9901
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9902
   END IF;
9903
   /*-------------------------------------------------------*/
1373 dpurdie 9904
 
3959 dpurdie 9905
   -- Delete Release links
9906
   DELETE
9907
     FROM RELEASE_LINKS rl
9908
    WHERE rl.RTAG_ID = nRtagId;
9909
 
9910
   -- Delete ignore warning
9911
   DELETE
9912
     FROM IGNORE_WARNINGS iw
9913
    WHERE iw.RTAG_ID = nRtagId;
9914
 
9915
 
9916
   -- Delete Build Order cached calculations
9917
   DELETE
9918
     FROM BUILD_ORDER bo
9919
    WHERE bo.RTAG_ID = nRtagId;
9920
 
9921
 
9922
   -- Delete Notification History
9923
   DELETE
9924
     FROM NOTIFICATION_HISTORY nh
9925
    WHERE nh.RTAG_ID = nRtagId;
9926
 
9927
 
9928
   -- Delete Released Area Contents
9929
   DELETE
9930
     FROM RELEASE_CONTENT rc
9931
    WHERE rc.RTAG_ID = nRtagId;
9932
 
9933
 
9934
   -- Delete Work In Progress Area Contents
9935
   DELETE
9936
     FROM WORK_IN_PROGRESS wip
9937
    WHERE wip.RTAG_ID = nRtagId;
9938
 
9939
 
9940
   -- Delete Pending Area Contents
9941
   DELETE
9942
     FROM PLANNED pl
9943
    WHERE pl.RTAG_ID = nRtagId;
9944
 
9945
   -- Delete Deprecated Packages
9946
   DELETE
9947
     FROM DEPRECATED_PACKAGES dp
9948
    WHERE dp.RTAG_ID = nRtagId;
9949
 
9950
   -- Delete Project Action Log
9951
   DELETE
9952
     FROM PROJECT_ACTION_LOG pal
9953
    WHERE pal.RTAG_ID = nRtagId;
9954
 
9955
   -- Delete Do Not Ripple Contents
9956
   DELETE
9957
     FROM DO_NOT_RIPPLE dnr
9958
    WHERE dnr.RTAG_ID = nRtagId;
9959
 
9960
   -- Delete Dash Board Contents
9961
   DELETE
9962
     FROM DASH_BOARD db
9963
    WHERE db.RTAG_ID = nRtagId;
9964
 
9965
   -- Delete Advisory Ripple Contents
9966
   DELETE
9967
     FROM ADVISORY_RIPPLE adr
9968
    WHERE adr.RTAG_ID = nRtagId;
9969
 
9970
   -- Delete Archive Action Log
9971
   DELETE
9972
     FROM ARCHIVE_ACTION_LOG aal
9973
    WHERE aal.RTAG_ID = nRtagId;
9974
 
9975
   -- Delete Daemons For This Release
9976
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9977
   LOOP
9978
      rconIdList := rconIdList || rcon.RCON_ID || ',';
9979
   END LOOP;
9980
 
9981
   pk_buildapi.DELETE_DAEMON(rconIdList);
9982
 
9983
   -- Delete Release Metrics Contents
9984
   DELETE
9985
     FROM RELEASE_METRICS rm
9986
    WHERE rm.RTAG_ID = nRtagId;
9987
 
9988
   -- Delete Release Configuration Contents
9989
   DELETE
9990
     FROM RELEASE_CONFIG rc
9991
    WHERE rc.RTAG_ID = nRtagId;
9992
 
9993
   -- Delete Pegged Version Contents
9994
   DELETE
9995
     FROM PEGGED_VERSIONS pegv
9996
    WHERE pegv.RTAG_ID = nRtagId;
9997
 
9998
END;
9999
/*-------------------------------------------------------------------------------------------------------*/
10000
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
10001
 
10002
   nSourceParentRtagId NUMBER;
10003
 
10004
BEGIN
10005
   /*--------------- Business Rules Here -------------------*/
10006
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
10007
   THEN
10008
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
10009
   END IF;
10010
   /*-------------------------------------------------------*/
10011
 
10012
 
10013
   IF ( nSourceRtagId IS NULL ) THEN
10014
      -- Create new on main branch
10015
      RETURN nRtagId;
10016
 
10017
   ELSE
10018
      -- Create from source rtag_id
10019
 
10020
      -- Find parent of Source RtagId
10021
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
10022
        FROM RELEASE_TAGS rt
10023
       WHERE rt.RTAG_ID = nSourceRtagId;
10024
 
10025
      IF (UPPER(cIsBranch) = 'Y') THEN
10026
         RETURN nSourceRtagId;
10027
      ELSE
10028
         IF (nSourceRtagId = nSourceParentRtagId) THEN
10029
            RETURN nRtagId;
10030
         ELSE
10031
            RETURN nSourceParentRtagId;
1373 dpurdie 10032
         END IF;
10033
      END IF;
10034
 
3959 dpurdie 10035
 
10036
   END IF;
10037
 
10038
 
10039
END;
1373 dpurdie 10040
/*-------------------------------------------------------------------------------------------------------*/
10041
 
3959 dpurdie 10042
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
10043
--                       sNextVersion OUT VARCHAR2,
10044
--                       nNextLifeCycle OUT NUMBER,
10045
--                       nParentRtagId OUT NUMBER,
10046
--                       nProjId IN NUMBER ) IS
10047
--
10048
-- SourceBranchCount NUMBER;
10049
-- ProjRootVersion VARCHAR2(4000);
10050
-- LastLifeCycle NUMBER;
10051
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
10052
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
10053
--
10054
-- SourceProjId NUMBER;
10055
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
10056
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
10057
--
10058
-- BEGIN
10059
--    /*--------------- Business Rules Here -------------------*/
10060
--    /*-------------------------------------------------------*/
10061
--
10062
--
10063
--    BEGIN
10064
--       -- Get Project root version
10065
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
10066
--         FROM RELEASE_TAGS rt
10067
--        WHERE rt.PROJ_ID = nProjId
10068
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
10069
--
10070
--       EXCEPTION
10071
--       WHEN NO_DATA_FOUND THEN
10072
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
10073
--    END;
10074
--
10075
--
10076
--
10077
--
10078
--    BEGIN
10079
--       -- Get info for source rtagid
10080
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
10081
--         FROM RELEASE_TAGS rt
10082
--        WHERE rt.RTAG_ID = nSourceRtagId;
10083
--
10084
--       EXCEPTION
10085
--       WHEN NO_DATA_FOUND THEN
10086
--       SourceProjId := NULL;
10087
--       SourceVersion := NULL;
10088
--       SourceLifeCycle := NULL;
10089
--    END;
10090
--
10091
--
10092
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
10093
--
10094
--       /* Blank Release Required  OR  Release imported from other project */
10095
--
10096
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
10097
--          /* No Releases found in the project, hence calculate next version available.  */
10098
--
10099
--          -- Set parent rtag
10100
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
10101
--
10102
--
10103
--          BEGIN
10104
--             -- Get Next Available Global Root Version
10105
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
10106
--               FROM RELEASE_TAGS rt
10107
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
10108
--
10109
--             -- Set Next Rtag Version
10110
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
10111
--
10112
--             -- Restart Lifecycle
10113
--             nNextLifeCycle := 0;
10114
--
10115
--
10116
--             EXCEPTION
10117
--             WHEN NO_DATA_FOUND THEN
10118
--             -- Release Manager has no releases, hence start from 1
10119
--             sNextVersion := '1';
10120
--             nNextLifeCycle := 0;
10121
--
10122
--          END;
10123
--
10124
--
10125
--
10126
--       ELSE
10127
--          /* Releases found in this project. */
10128
--
10129
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
10130
--            FROM (
10131
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
10132
--                  FROM RELEASE_TAGS rt
10133
--                 WHERE rt.PROJ_ID = nProjId
10134
--                   AND rt.RTAG_VERSION = ProjRootVersion
10135
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
10136
--                  ) qry
10137
--           WHERE ROWNUM = 1;
10138
--
10139
--
10140
--          -- Set same Rtag Version
10141
--          sNextVersion := ProjRootVersion;
10142
--
10143
--          -- Increase Lifecycle
10144
--          nNextLifeCycle := LastLifeCycle + 1;
10145
--
10146
--       END IF;
10147
--
10148
--
10149
--
10150
--    ELSE
10151
--       /* Create Release From other release within this project */
10152
--
10153
--       -- Set parent id
10154
--       nParentRtagId := nSourceRtagId;
10155
--
10156
--
10157
--       -- Get number of source branches
10158
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
10159
--         FROM RELEASE_TAGS rt
10160
--        WHERE rt.PROJ_ID = nProjId
10161
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
10162
--
10163
--
10164
--       IF SourceBranchCount = 0 THEN
10165
--          /* Release is Head (i.e. Tip on its branch ) */
10166
--
10167
--          -- Set Next Rtag Version
10168
--          sNextVersion := SourceVersion;
10169
--
10170
--          -- Increase Lifecycle
10171
--          nNextLifeCycle := SourceLifeCycle + 1;
10172
--
10173
--
10174
--       ELSIF SourceBranchCount = 1 THEN
10175
--          /* Release IS NOT Head, but can be branched */
10176
--
10177
--          -- Set Next Rtag Version
10178
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
10179
--
10180
--          -- Reset Lifecycle to 1
10181
--          nNextLifeCycle := 1;
10182
--
10183
--
10184
--       ELSE
10185
--          -- Limit of two branches is reached
10186
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
10187
--
10188
--       END IF;
10189
--
10190
--
10191
--
10192
--
10193
--
10194
--
10195
--    END IF;
10196
--
10197
--
10198
-- END;
10199
 
10200
/*-------------------------------------------------------------------------------------------------------*/
10201
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
10202
 
10203
   IsBaseView CHAR(1);
10204
 
10205
BEGIN
10206
 
10207
   -- Check if the view is BASE VIEW
10208
   SELECT vi.BASE_VIEW INTO IsBaseView
10209
     FROM VIEWS vi
10210
    WHERE vi.VIEW_ID = ViewId;
10211
 
10212
   IF (IsBaseView = 'Y') THEN
10213
      -- Get Base view content
10214
      OPEN RecordSet FOR
10215
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
10216
            rel.deprecated_state,
10217
            pv.pv_id,
10218
            pkg.pkg_name,
10219
            pv.pkg_version,
10220
            pv.dlocked,
10221
            pv.pv_description,
10222
            pv.BUILD_TYPE
10223
        FROM release_content rel,
10224
             packages pkg,
10225
             package_versions pv
10226
       WHERE pv.pkg_id = pkg.pkg_id
10227
         AND rel.pv_id = pv.pv_id
10228
         AND rel.BASE_VIEW_ID = ViewId
10229
         AND rel.RTAG_ID = RtagId
10230
       ORDER BY UPPER(pkg.PKG_NAME);
10231
 
10232
   ELSE
10233
 
10234
       -- Get non base view content
10235
      OPEN RecordSet FOR
10236
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
10237
            rel.deprecated_state,
10238
            pv.pv_id,
10239
            pkg.pkg_name,
10240
            pv.pkg_version,
10241
            pv.dlocked,
10242
            pv.pv_description,
10243
            pv.BUILD_TYPE
10244
        FROM release_content rel,
10245
             packages pkg,
10246
             package_versions pv,
10247
            VIEW_DEF vd
10248
       WHERE pv.pkg_id = pkg.pkg_id
10249
         AND rel.pv_id = pv.pv_id
10250
         AND vd.VIEW_ID = ViewId
10251
         AND vd.PKG_ID = pv.PKG_ID
10252
         AND rel.RTAG_ID = RtagId
10253
       ORDER BY UPPER(pkg.PKG_NAME);
10254
 
10255
   END IF;
10256
 
10257
 
10258
 
10259
 
10260
END;
10261
/*-------------------------------------------------------------------------------------------------------*/
4585 dpurdie 10262
  -- Add or Replace a package to the specified release
3959 dpurdie 10263
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10264
   ReleaseLocation VARCHAR2(4000);
10265
   sPkgVersion VARCHAR2(4000);
10266
   nPkgId NUMBER;
10267
   sVExt VARCHAR2(4000);
10268
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
10269
 
10270
   -- Find package for replacement
10271
   CURSOR curReplacePkg IS
10272
    SELECT pv.PV_ID
10273
     FROM RELEASE_CONTENT rc,
10274
           PACKAGE_VERSIONS pv
10275
    WHERE rc.PV_ID = pv.PV_ID
10276
      AND rc.RTAG_ID = RtagId
10277
      AND pv.PKG_ID = nPkgId
10278
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
10279
    recReplacePkg curReplacePkg%ROWTYPE;
10280
 
10281
BEGIN
10282
 
10283
   -- Get is_patch, pkg_id and v_ext
10284
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
10285
     FROM PACKAGE_VERSIONS pv
10286
    WHERE pv.PV_ID = newPvId;
10287
 
10288
 
10289
   -- Never put patch in relesed area
10290
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
10291
 
10292
      -- Try to get a package to be replaced with this new one.
10293
      -- Use unique constraint of PKG_ID and V_EXT
10294
      OPEN curReplacePkg;
10295
       FETCH curReplacePkg INTO recReplacePkg;
10296
 
10297
       IF curReplacePkg%FOUND THEN
10298
         -- Replace package
10299
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
10300
 
10301
      ELSE
10302
         -- Add new package
10303
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
10304
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
10305
 
10306
 
10307
          /* LOG ACTION */
10308
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10309
           FROM PROJECTS proj,
10310
                 RELEASE_TAGS rt
10311
          WHERE rt.PROJ_ID = proj.PROJ_ID
10312
            AND rt.RTAG_ID = RtagId;
10313
 
10314
         SELECT pv.PKG_VERSION INTO sPkgVersion
10315
           FROM PACKAGE_VERSIONS pv
10316
          WHERE pv.PV_ID = newPvId;
10317
 
10318
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10319
 
10320
 
1373 dpurdie 10321
      END IF;
10322
 
3959 dpurdie 10323
      CLOSE curReplacePkg;
10324
 
10325
   END IF;
10326
 
10327
END;
1373 dpurdie 10328
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10329
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 10330
 
3959 dpurdie 10331
   ReleaseLocation VARCHAR2(4000);
10332
   sPkgVersion VARCHAR2(4000);
10333
 
10334
BEGIN
10335
 
10336
   -- Replace Package
10337
    UPDATE RELEASE_CONTENT
10338
       SET pv_id = newPvId,
10339
           insert_stamp = Ora_Sysdate,
10340
           insertor_id = UserId,
10341
         product_state = NULL
10342
     WHERE rtag_id = RtagId
10343
       AND pv_id = oldPvId;
10344
 
10345
   -- update the pegging table
10346
   UPDATE PEGGED_VERSIONS
10347
      SET pv_id = newPvId
10348
     WHERE rtag_id = RtagId
10349
       AND pv_id = oldPvId;
10350
 
10351
   -- update the advisory_ripple table
10352
   UPDATE ADVISORY_RIPPLE
10353
      SET pv_id = newPvId
10354
     WHERE rtag_id = RtagId
10355
       AND pv_id = oldPvId;
10356
 
10357
    /* LOG ACTION */
10358
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10359
     FROM PROJECTS proj,
10360
           RELEASE_TAGS rt
10361
    WHERE rt.PROJ_ID = proj.PROJ_ID
10362
      AND rt.RTAG_ID = RtagId;
10363
 
10364
   SELECT pv.PKG_VERSION INTO sPkgVersion
10365
     FROM PACKAGE_VERSIONS pv
10366
    WHERE pv.PV_ID = newPvId;
10367
 
10368
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
10369
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10370
 
10371
END;
10372
/*-------------------------------------------------------------------------------------------------------*/
10373
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10374
   ReleaseLocation VARCHAR2(4000);
10375
 
10376
BEGIN
10377
 
10378
 
10379
   -- Delete old package
10380
   DELETE
10381
     FROM RELEASE_CONTENT rc
10382
    WHERE rc.PV_ID = PvId
10383
      AND rc.RTAG_ID = RtagId;
10384
 
10385
 
10386
   /* LOG ACTION */
10387
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10388
     FROM PROJECTS proj,
10389
          RELEASE_TAGS rt
10390
    WHERE rt.PROJ_ID = proj.PROJ_ID
10391
      AND rt.RTAG_ID = RtagId;
10392
 
10393
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10394
 
10395
 
10396
END;
10397
/*-------------------------------------------------------------------------------------------------------*/
10398
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10399
   ReleaseLocation VARCHAR2(4000);
10400
 
10401
   CURSOR curMatchingPackage IS
10402
    SELECT mpv.PV_ID
10403
     FROM RELEASE_CONTENT rc,
10404
           PACKAGE_VERSIONS mpv,
10405
         PACKAGE_VERSIONS pv
10406
    WHERE rc.PV_ID = mpv.PV_ID
10407
      AND rc.RTAG_ID = RtagId
10408
      AND pv.PV_ID = PvId
10409
      AND pv.PKG_ID = mpv.PKG_ID
10410
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
10411
    recMatchingPackage curMatchingPackage%ROWTYPE;
10412
 
10413
BEGIN
10414
 
10415
   OPEN curMatchingPackage;
10416
    FETCH curMatchingPackage INTO recMatchingPackage;
10417
 
10418
    IF curMatchingPackage%FOUND THEN
10419
      -- Delete old package
10420
      DELETE
10421
        FROM RELEASE_CONTENT rc
10422
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
10423
         AND rc.RTAG_ID = RtagId;
10424
 
10425
 
10426
      /* LOG ACTION */
10427
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10428
        FROM PROJECTS proj,
10429
              RELEASE_TAGS rt
10430
       WHERE rt.PROJ_ID = proj.PROJ_ID
10431
         AND rt.RTAG_ID = RtagId;
10432
 
10433
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10434
 
10435
   END IF;
10436
 
10437
 
10438
   CLOSE curMatchingPackage;
10439
 
10440
 
10441
 
10442
 
10443
END;
10444
/*-------------------------------------------------------------------------------------------------------*/
10445
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10446
 
10447
   ReturnValue NUMBER;
10448
 
10449
BEGIN
10450
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
10451
     FROM RELEASE_CONTENT rc
10452
    WHERE rc.RTAG_ID = RtagId
10453
      AND rc.PV_ID = PvId;
10454
 
10455
   RETURN ReturnValue;
10456
END;
10457
/*-------------------------------------------------------------------------------------------------------*/
10458
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
10459
 
10460
BEGIN
10461
   -- Reset Ignore warnings up-the-tree
10462
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
10463
 
10464
   -- Refresh Package states
10465
   TOUCH_RELEASE ( RtagId );
10466
 
10467
END;
10468
/*-------------------------------------------------------------------------------------------------------*/
10469
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
10470
   CURSOR curReleases IS
10471
    SELECT rc.RTAG_ID
10472
     FROM RELEASE_CONTENT rc
10473
    WHERE rc.PV_ID = PvId;
10474
    recReleases curReleases%ROWTYPE;
10475
 
10476
BEGIN
10477
 
10478
   OPEN curReleases;
10479
    FETCH curReleases INTO recReleases;
10480
 
10481
   WHILE curReleases%FOUND
10482
   LOOP
10483
 
10484
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
10485
 
10486
      FETCH curReleases INTO recReleases;
10487
   END LOOP;
10488
 
10489
   CLOSE curReleases;
10490
 
10491
END;
10492
/*-------------------------------------------------------------------------------------------------------*/
10493
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10494
 
10495
BEGIN
10496
 
10497
   UPDATE RELEASE_CONTENT rc SET
10498
   rc.BASE_VIEW_ID = NewViewId
10499
   WHERE rc.PV_ID = PvId
10500
     AND rc.RTAG_ID = RtagId;
10501
 
10502
END;
10503
/*-------------------------------------------------------------------------------------------------------*/
10504
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
10505
 
10506
   RowCount NUMBER;
10507
 
10508
 
10509
   CURSOR curPackageClash IS
10510
   SELECT pkg.PKG_NAME,
10511
         er.*
10512
     FROM (
10513
 
10514
           /* Get existing referenced packages */
10515
         SELECT pv.PKG_ID,
10516
                pv.V_EXT
10517
           FROM RELEASE_LINKS rl,
10518
                 RELEASE_CONTENT rc,
10519
                 PACKAGE_VERSIONS pv
10520
          WHERE rl.RTAG_ID = nRtagId
10521
            AND rl.REF_RTAG_ID = rc.RTAG_ID
10522
            AND rc.PV_ID = pv.PV_ID
10523
 
10524
            ) er,
10525
         (
10526
 
10527
         /* Get current reference packages */
10528
         SELECT pv.PKG_ID,
10529
                pv.V_EXT
10530
           FROM RELEASE_CONTENT rc,
10531
                 PACKAGE_VERSIONS pv
10532
          WHERE rc.RTAG_ID = nRefRtagId
10533
            AND rc.PV_ID = pv.PV_ID
10534
 
10535
         ) cr,
10536
         PACKAGES PKG
10537
    WHERE er.PKG_ID = cr.PKG_ID
10538
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10539
      AND er.PKG_ID = pkg.PKG_ID;
10540
 
10541
   recPackageClash curPackageClash%ROWTYPE;
10542
 
10543
BEGIN
10544
   /*--------------- Business Rules Here -------------------*/
10545
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10546
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10547
   END IF;
10548
 
10549
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10550
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10551
   END IF;
10552
   /*-------------------------------------------------------*/
10553
   ProblemString := NULL;
10554
 
10555
 
10556
   -- Check if release already has references
10557
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
10558
     FROM RELEASE_LINKS rl
10559
    WHERE rl.RTAG_ID = nRtagId;
10560
 
10561
 
10562
   IF RowCount > 0 THEN
10563
      -- Found existing references
10564
 
10565
      -- Make sure there is no package clashes
10566
      OPEN curPackageClash;
10567
       FETCH curPackageClash INTO recPackageClash;
10568
 
10569
      IF curPackageClash%FOUND THEN
10570
 
10571
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
10572
 
10573
         WHILE curPackageClash%FOUND
10574
         LOOP
10575
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
10576
 
10577
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
10578
 
10579
            FETCH curPackageClash INTO recPackageClash;
10580
         END LOOP;
10581
 
1373 dpurdie 10582
      END IF;
10583
 
3959 dpurdie 10584
      CLOSE curPackageClash;
10585
 
10586
 
10587
   ELSE
10588
      -- No references found, hence reference a release
10589
 
10590
 
10591
      -- Remove exising package from this release to be referenced
10592
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
10593
 
10594
 
10595
      -- Add new linked packages to release
10596
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
10597
      SELECT nRtagId,
10598
            rc.PV_ID,
10599
            rc.BASE_VIEW_ID,
10600
            rc.INSERT_STAMP,
10601
            rc.INSERTOR_ID,
10602
            rc.PKG_STATE
10603
        FROM RELEASE_CONTENT rc
10604
       WHERE rc.RTAG_ID = nRefRtagId;
10605
 
10606
 
10607
 
10608
      -- Copy ignore warnings for referenced packages
10609
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
10610
      SELECT nRtagId,
10611
            iw.PV_ID,
10612
            iw.DPV_ID,
10613
            iw.IS_PATCH_IGNORE
10614
        FROM IGNORE_WARNINGS iw,
10615
              RELEASE_CONTENT rc
10616
       WHERE iw.RTAG_ID = rc.RTAG_ID
10617
         AND iw.PV_ID = rc.PV_ID
10618
         AND rc.RTAG_ID = nRefRtagId;
10619
 
10620
 
10621
 
10622
      -- Reference release
10623
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
10624
      VALUES ( nRtagId, nRefRtagId );
10625
 
10626
 
10627
      -- Refresh Package states
10628
      TOUCH_RELEASE ( nRtagId );
10629
 
10630
   END IF;
10631
 
10632
 
10633
END;
1373 dpurdie 10634
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10635
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
1373 dpurdie 10636
 
3959 dpurdie 10637
 
10638
BEGIN
10639
   /*--------------- Business Rules Here -------------------*/
10640
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10641
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10642
   END IF;
10643
 
10644
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10645
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10646
   END IF;
10647
 
10648
   /*-------------------------------------------------------*/
10649
 
10650
 
10651
   -- Remove ignore warnings for those packages who use referenced packages
10652
   DELETE FROM IGNORE_WARNINGS iw
10653
    WHERE iw.RTAG_ID = nRtagId
10654
      AND iw.DPV_ID IN (
10655
                        SELECT dep.DPV_ID
10656
                       FROM (
10657
 
10658
                           /* Get referenced packages */
10659
                           SELECT pv.PKG_ID,
10660
                                  pv.V_EXT
10661
                             FROM RELEASE_CONTENT rc,
10662
                                   PACKAGE_VERSIONS pv
10663
                            WHERE rc.RTAG_ID = nRefRtagId
10664
                              AND rc.PV_ID = pv.PV_ID
10665
 
10666
                           ) cr,
10667
                           (
10668
 
10669
                           /* Get all dependencies for current release */
10670
                           SELECT DISTINCT
10671
                                 pv.PKG_ID,
10672
                                 pv.V_EXT,
10673
                                 dep.DPV_ID
10674
                             FROM RELEASE_CONTENT rc,
10675
                                 PACKAGE_DEPENDENCIES dep,
10676
                                 PACKAGE_VERSIONS pv
10677
                            WHERE rc.RTAG_ID = nRtagId
10678
                              AND rc.PV_ID = dep.PV_ID
10679
                              AND dep.PV_ID = pv.PV_ID
10680
 
10681
                           ) dep
10682
                      WHERE dep.PKG_ID = cr.PKG_ID
10683
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10684
                     );
10685
 
10686
 
10687
 
10688
 
10689
   -- Remove ignore warnings for those package which are going to be replaced with the reference
10690
   DELETE FROM IGNORE_WARNINGS iw
10691
    WHERE iw.RTAG_ID = nRtagId
10692
      AND iw.PV_ID IN (
10693
                  SELECT pv.PV_ID
10694
                    FROM (
10695
 
10696
                        /* Get referenced packages */
10697
                        SELECT pv.PKG_ID,
10698
                               pv.V_EXT
10699
                          FROM RELEASE_CONTENT rc,
10700
                                PACKAGE_VERSIONS pv
10701
                         WHERE rc.RTAG_ID = nRefRtagId
10702
                           AND rc.PV_ID = pv.PV_ID
10703
 
10704
                        ) cr,
10705
                        RELEASE_CONTENT rc,
10706
                        PACKAGE_VERSIONS pv
10707
                   WHERE pv.PKG_ID = cr.PKG_ID
10708
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10709
                     AND rc.RTAG_ID = nRtagId
10710
                     AND rc.PV_ID = pv.PV_ID
10711
                  );
10712
 
10713
 
10714
 
10715
 
10716
 
10717
   -- Remove matching packages from release
10718
   DELETE FROM RELEASE_CONTENT rc
10719
    WHERE rc.RTAG_ID = nRtagId
10720
      AND rc.PV_ID IN (
10721
                  SELECT pv.PV_ID
10722
                    FROM (
10723
 
10724
                        /* Get referenced packages */
10725
                        SELECT pv.PKG_ID,
10726
                               pv.V_EXT
10727
                          FROM RELEASE_CONTENT rc,
10728
                                PACKAGE_VERSIONS pv
10729
                         WHERE rc.RTAG_ID = nRefRtagId
10730
                           AND rc.PV_ID = pv.PV_ID
10731
 
10732
                        ) cr,
10733
                        RELEASE_CONTENT rc,
10734
                        PACKAGE_VERSIONS pv
10735
                   WHERE pv.PKG_ID = cr.PKG_ID
10736
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10737
                     AND rc.RTAG_ID = nRtagId
10738
                     AND rc.PV_ID = pv.PV_ID
10739
                  );
10740
 
10741
 
10742
 
10743
 
10744
 
10745
   -- Remove Reference release
10746
   DELETE
10747
     FROM RELEASE_LINKS rl
10748
    WHERE rl.RTAG_ID = nRtagId
10749
      AND rl.REF_RTAG_ID = nRefRtagId;
10750
 
10751
 
10752
   -- Refresh Package states
10753
   TOUCH_RELEASE ( nRtagId );
10754
 
10755
 
10756
END;
10757
/*-------------------------------------------------------------------------------------------------------*/
10758
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10759
 
10760
   cReleaseMode CHAR(1);
10761
   cPvMode CHAR(1);
10762
 
10763
BEGIN
10764
 
10765
   -- Get Release Mode
10766
   SELECT rt.OFFICIAL INTO cReleaseMode
10767
     FROM RELEASE_TAGS rt
10768
    WHERE rt.RTAG_ID = RtagId;
10769
 
10770
 
10771
   -- Get Package Mode
10772
   SELECT pv.DLOCKED INTO cPvMode
10773
     FROM PACKAGE_VERSIONS pv
10774
    WHERE pv.PV_ID = PvId;
10775
 
10776
   -- Only check if package is locked
10777
   IF (cPvMode = 'Y') THEN
10778
 
10779
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
1373 dpurdie 10780
      THEN
3959 dpurdie 10781
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10782
 
1373 dpurdie 10783
      END IF;
10784
 
3959 dpurdie 10785
   END IF;
10786
 
10787
 
10788
END;
10789
 
1373 dpurdie 10790
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10791
END PK_RELEASE;
4040 dpurdie 10792
 
3959 dpurdie 10793
/
10794
 
4040 dpurdie 10795
/
10796
--------------------------------------------------------
10797
--  DDL for Package Body PK_RMAPI
10798
--------------------------------------------------------
10799
 
3959 dpurdie 10800
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
10801
IS
10802
 
10803
   /*-------------------------------------------------------------------------------------------------------*/
10804
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
10805
      RETURN typecur
1373 dpurdie 10806
   IS
3959 dpurdie 10807
      npvid     NUMBER  := 0;
10808
      RECORDS   typecur;
1373 dpurdie 10809
   BEGIN
3959 dpurdie 10810
      BEGIN
10811
         -- Get PV_ID --
10812
         SELECT pv.pv_id
10813
           INTO npvid
10814
           FROM PACKAGES pkg, package_versions pv
10815
          WHERE pv.pkg_id = pkg.pkg_id
10816
            AND pkg.pkg_name = pkgname
10817
            AND pv.pkg_version = pkgversion;
10818
      EXCEPTION
10819
         WHEN NO_DATA_FOUND
10820
         THEN
10821
            raise_application_error (-20000, 'Package Not Found!');
10822
            --WHEN OTHERS THEN
10823
                  -- Consider logging the error and then re-raise
10824
            RAISE;
10825
      END;
1373 dpurdie 10826
 
3959 dpurdie 10827
      -- Finally get package dependencies --
10828
      OPEN RECORDS FOR
10829
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
10830
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
10831
          WHERE dep.pv_id = npvid
10832
            AND dpv.pkg_id = dpkg.pkg_id
10833
            AND dpv.pv_id = dep.dpv_id;
10834
 
10835
      RETURN RECORDS;
1373 dpurdie 10836
   END;
10837
 
10838
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10839
   FUNCTION wip_iteration_package (
10840
      projname        VARCHAR2,
10841
      iterationname   VARCHAR2,
10842
      pkgname         VARCHAR2
1373 dpurdie 10843
   )
3959 dpurdie 10844
      RETURN typecur
1373 dpurdie 10845
   IS
3959 dpurdie 10846
      nrtagid   NUMBER  := 0;
10847
      RECORDS   typecur;
1373 dpurdie 10848
   BEGIN
3959 dpurdie 10849
      BEGIN
10850
         -- Get latest rtag_id --
10851
         SELECT rt.rtag_id
10852
           INTO nrtagid
10853
           FROM projects proj, release_tags rt
10854
          WHERE rt.proj_id = proj.proj_id
10855
            AND UPPER (proj.proj_name) = UPPER (projname)
10856
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
1373 dpurdie 10857
 
3959 dpurdie 10858
         IF (nrtagid IS NULL)
10859
         THEN
10860
            raise_application_error (-20000,
10861
                                     'Work In Progress is Not Found!');
10862
         END IF;
10863
      EXCEPTION
10864
         WHEN NO_DATA_FOUND
10865
         THEN
10866
            raise_application_error (-20000,
10867
                                     'Work In Progress is Not Found!');
10868
            RAISE;
10869
      END;
10870
 
10871
      -- Finally get package dependencies --
10872
      OPEN RECORDS FOR
10873
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
10874
                pv.src_path
10875
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
10876
          WHERE pv.pkg_id = pkg.pkg_id
10877
            AND wip.pv_id = pv.pv_id
10878
            AND wip.rtag_id = nrtagid
10879
            AND pkg.pkg_name = pkgname;
10880
 
10881
      RETURN RECORDS;
1373 dpurdie 10882
   END;
10883
 
10884
/*-------------------------------------------------------------------------------------------------------*/
4553 dpurdie 10885
-- Use:
10886
--   Used by the Automated Build System to release a new package
10887
-- Returns:
10888
--    Use application errors to indicate programming errors
10889
--    Use negative return codes to indicate correctable user problems
10890
--    Positive return code is the new PVID of the package
10891
  FUNCTION auto_make_vcsrelease (
3959 dpurdie 10892
      rtagid                   IN   NUMBER,
10893
      pkgname                  IN   VARCHAR2,
10894
      vext                     IN   VARCHAR2,
10895
      newpkgversion            IN   VARCHAR2,
10896
      vcstag                   IN   VARCHAR2,
10897
      dependenciesimportlist   IN   VARCHAR2,
10898
      isrippled                IN   NUMBER,
10899
      username                 IN   VARCHAR2
10900
   )
1373 dpurdie 10901
      RETURN NUMBER
10902
   IS
3959 dpurdie 10903
      pkgid                           NUMBER;
10904
      pvid                            NUMBER                        := 0;
10905
      userid                          NUMBER;
10906
      dlocked                         VARCHAR2 (20)                 := NULL;
10907
      clonefrompvid                   NUMBER;
10908
      ssv_mm                          package_versions.v_mm%TYPE;
10909
      ssv_nmm                         package_versions.v_nmm%TYPE;
10910
      ssv_ext                         package_versions.v_ext%TYPE;
10911
      return_package_not_found        NUMBER                        := -1;
10912
      return_package_already_exists   NUMBER                        := -2;
10913
      return_not_approved             NUMBER                        := -3;
10914
      return_migrated_pkg             NUMBER                        := -4;
4553 dpurdie 10915
      return_svn_path_changed         NUMBER                        := -5;
1373 dpurdie 10916
 
10917
 
3959 dpurdie 10918
      x_vcstypeid                     NUMBER;
10919
      x_tag                           VARCHAR2(32);
10920
      x_label                         VARCHAR2(60);
10921
      x_srcpath                       VARCHAR2(2000);
10922
      p_srcpath                       VARCHAR2(2000);
1373 dpurdie 10923
 
3959 dpurdie 10924
      -- Regular expression constituents
10925
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
10926
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
10927
      BOL           VARCHAR2(4)  := '^';
10928
      Anything      VARCHAR2(4)  := '.*';
10929
      ReplaceToken1 VARCHAR2(4)  := '\1';
10930
      ReplaceToken2 VARCHAR2(4)  := '\2';
10931
      ReplaceToken3 VARCHAR2(4)  := '\3';
10932
      iprev_modifier_id               NUMBER;
10933
 
1373 dpurdie 10934
   BEGIN
3959 dpurdie 10935
      /*--------------- Business Rules Here -------------------*/
10936
      IF (rtagid IS NULL)
10937
      THEN
10938
         raise_application_error (-20000, 'RtagId must be supplied.');
10939
      END IF;
1373 dpurdie 10940
 
3959 dpurdie 10941
      IF (pkgname IS NULL)
10942
      THEN
10943
         raise_application_error (-20000, 'PkgName must be supplied.');
10944
      END IF;
1373 dpurdie 10945
 
3959 dpurdie 10946
      IF (newpkgversion IS NULL)
1373 dpurdie 10947
      THEN
3959 dpurdie 10948
         raise_application_error (-20000, 'PkgVersion must be supplied.');
1373 dpurdie 10949
      END IF;
10950
 
3959 dpurdie 10951
      IF (vcstag IS NULL)
1373 dpurdie 10952
      THEN
3959 dpurdie 10953
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
1373 dpurdie 10954
      END IF;
10955
 
3959 dpurdie 10956
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
1373 dpurdie 10957
      THEN
4553 dpurdie 10958
         raise_application_error (-20000, 'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).');
1373 dpurdie 10959
      END IF;
10960
 
3959 dpurdie 10961
      IF (username IS NULL)
1373 dpurdie 10962
      THEN
3959 dpurdie 10963
         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 10964
      END IF;
10965
 
3959 dpurdie 10966
      -- Parse the PkgVcsTag
10967
      -- Sets up
10968
      --   x_tag, x_label, x_srcpath
1373 dpurdie 10969
 
3959 dpurdie 10970
       BEGIN
10971
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
10972
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
1373 dpurdie 10973
 
3959 dpurdie 10974
          -- Decode the short tag
10975
          CASE x_tag
10976
             WHEN 'CC' THEN
10977
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
10978
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10979
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10980
 
3959 dpurdie 10981
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10982
                -- check for that error as well as the obvious zero-length string conditions.
10983
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10984
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10985
                END IF;
10986
 
10987
                IF isSVNbyName(pkgname) > 0 THEN
10988
                    -- Don't allow migrated packages to be released from a CC label
10989
                    return return_migrated_pkg;
10990
                END IF;
1373 dpurdie 10991
 
10992
 
3959 dpurdie 10993
             WHEN 'SVN' THEN
10994
                -- extract the 2nd token, that being the subversion tag
10995
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10996
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10997
 
3959 dpurdie 10998
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10999
                -- check for that error as well as the obvious zero-length string conditions.
11000
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
11001
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
11002
                END IF;
11003
 
11004
             WHEN 'UC' THEN
11005
                -- nothing to extract, just assign defaults
11006
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
11007
                x_label   := 'N/A';
11008
             ELSE
11009
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
11010
          END CASE;
11011
       END;
11012
 
11013
      -- Get the VCS_TYPE_ID for the version control system.
11014
      BEGIN
11015
         SELECT vt.vcs_type_id
11016
         INTO x_vcstypeid
11017
         FROM VCS_TYPE vt
11018
         WHERE vt.tag = x_tag;
11019
         EXCEPTION
11020
            WHEN NO_DATA_FOUND THEN
11021
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
11022
      END;
11023
 
11024
 
11025
      -- Get user_id
11026
      BEGIN
11027
         SELECT usr.user_id
11028
           INTO userid
11029
           FROM users usr
11030
          WHERE UPPER (usr.user_name) = UPPER (username)
11031
            AND usr.is_disabled IS NULL;
11032
      EXCEPTION
11033
         WHEN NO_DATA_FOUND
1373 dpurdie 11034
         THEN
4585 dpurdie 11035
            raise_application_error (-20000, 'UserName: ' || username || ' is not valid or disabled.' );
3959 dpurdie 11036
      END;
1373 dpurdie 11037
 
3959 dpurdie 11038
/*-------------------------------------------------------*/
1373 dpurdie 11039
 
3959 dpurdie 11040
      -- Create package if necessary
11041
      IF isrippled = 1
1373 dpurdie 11042
      THEN
3959 dpurdie 11043
         /* Ripple Build */
11044
         BEGIN
11045
            -- Make sure that package does not exist
11046
            SELECT pv.pv_id
11047
              INTO pvid
11048
              FROM package_versions pv, PACKAGES pkg
11049
             WHERE pv.pkg_id = pkg.pkg_id
11050
               AND pkg.pkg_name = pkgname
11051
               AND pv.pkg_version = newpkgversion;
11052
         EXCEPTION
11053
            WHEN NO_DATA_FOUND
11054
            THEN
11055
               pvid := 0;
11056
         END;
11057
 
11058
         IF (pvid = 0)
1373 dpurdie 11059
         THEN
3959 dpurdie 11060
            -- Split current version in parts
11061
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11062
 
11063
            BEGIN
11064
               -- Find package to be replaced with the ripple package
11065
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
11066
               THEN
11067
                  SELECT pv.pv_id, pv.src_path
11068
                    INTO clonefrompvid, p_srcpath
11069
                    FROM PACKAGES pkg, package_versions pv,
11070
                         release_content rc
11071
                   WHERE rc.pv_id = pv.pv_id
11072
                     AND pv.pkg_id = pkg.pkg_id
11073
                     AND rc.rtag_id = rtagid
11074
                     AND pkg.pkg_name = pkgname
11075
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
11076
               ELSE
11077
                  SELECT pv.pv_id, pv.src_path
11078
                    INTO clonefrompvid, p_srcpath
11079
                    FROM PACKAGES pkg, package_versions pv,
11080
                         release_content rc
11081
                   WHERE rc.pv_id = pv.pv_id
11082
                     AND pv.pkg_id = pkg.pkg_id
11083
                     AND rc.rtag_id = rtagid
11084
                     AND pkg.pkg_name = pkgname
11085
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11086
               END IF;
11087
            EXCEPTION
11088
               WHEN NO_DATA_FOUND
11089
               THEN
11090
                  raise_application_error
11091
                                        (-20000,
11092
                                            'Cannot get CloneFromPvId. VExt='
11093
                                         || vext
11094
                                         || ', RtagId='
11095
                                         || rtagid
11096
                                         || ', PkgName='
11097
                                         || pkgname
11098
                                         || ', SSV_EXT='
11099
                                         || ssv_ext
11100
                                        );
11101
            END;
11102
 
11103
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
11104
            THEN
11105
               -- Create package
11106
               seed_package_names_versions (pkgname,
11107
                                            newpkgversion,
11108
                                            userid,
11109
                                            pvid,
11110
                                            clonefrompvid
11111
                                           );
11112
            ELSE
4585 dpurdie 11113
               -- Create package (now both the same)
11114
               seed_package_names_versions (pkgname,
3959 dpurdie 11115
                                             newpkgversion,
11116
                                             userid,
11117
                                             pvid,
11118
                                             clonefrompvid
11119
                                            );
11120
            END IF;
11121
 
11122
            -- Update Package reason for release
11123
            UPDATE package_versions pv
11124
               SET pv.comments = 'Rippled Build.',
11125
                   pv.build_type = 'Y'
11126
             WHERE pv.pv_id = pvid;
11127
         ELSE
11128
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
11129
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
11130
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
11131
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
11132
            UPDATE package_versions pv
11133
               SET pv.release_notes_info = null,
11134
                   pv.modified_stamp = ora_sysdatetime
11135
             WHERE pv.pv_id = pvid;
11136
 
11137
            --DEVI-066151
11138
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
11139
 
11140
            RETURN return_package_already_exists;
1373 dpurdie 11141
         END IF;
11142
      ELSE
3959 dpurdie 11143
         /* Auto build from Pending area */
11144
 
11145
         -- Find package in pending area
11146
         BEGIN
11147
            SELECT pv.pv_id, pv.dlocked, pv.src_path
11148
              INTO pvid, dlocked, p_srcpath
11149
              FROM planned pl, package_versions pv, PACKAGES pkg
11150
             WHERE pl.pv_id = pv.pv_id
11151
               AND pv.pkg_id = pkg.pkg_id
11152
               AND pl.rtag_id = rtagid
11153
               AND pkg.pkg_name = pkgname
11154
               AND pv.dlocked = 'A'
11155
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
11156
               AND rownum = 1
11157
             ORDER BY pv.modified_stamp;
11158
         EXCEPTION
11159
            WHEN NO_DATA_FOUND
11160
            THEN
11161
               pvid := 0;
11162
         END;
11163
 
11164
         IF (pvid = 0)
1373 dpurdie 11165
         THEN
3959 dpurdie 11166
            -- Package does not exist in pending area, hence report it
11167
            RETURN return_package_not_found;
11168
         ELSIF (dlocked != 'A')
1373 dpurdie 11169
         THEN
3959 dpurdie 11170
            -- Package is not approved for autobuild
11171
            RETURN return_not_approved;
1373 dpurdie 11172
         END IF;
11173
 
11174
      END IF;
11175
 
3959 dpurdie 11176
      -- Ensure Source Path does not change
11177
      -- Do not expect the SVN development branch to change
11178
      -- From the previous package
11179
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
1373 dpurdie 11180
      THEN
4553 dpurdie 11181
        return return_svn_path_changed;
1373 dpurdie 11182
      END IF;
11183
 
3959 dpurdie 11184
      BEGIN
11185
         -- Import Dependencies
11186
         import_dependencies (pvid, dependenciesimportlist, userid);
11187
      END;
1373 dpurdie 11188
 
11189
 
3959 dpurdie 11190
      BEGIN
11191
         -- Split current version in parts
11192
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
1373 dpurdie 11193
 
3959 dpurdie 11194
         -- Update Package Details
11195
         UPDATE package_versions pv
11196
            SET pv.pkg_version = newpkgversion,
11197
                pv.v_ext = ssv_ext,
11198
                pv.v_mm = ssv_mm,
11199
                pv.v_nmm = ssv_nmm,
11200
                pv.src_path = x_srcpath,
11201
                pv.pkg_label = x_label,
11202
                pv.vcs_type_id = x_vcstypeid
11203
          WHERE pv.pv_id = pvid;
11204
      EXCEPTION
11205
         WHEN DUP_VAL_ON_INDEX
11206
         THEN
11207
            -- Package already exists, hence cannot be used for ripple build
11208
            RETURN return_package_already_exists;
11209
      END;
11210
 
11211
      -- Update the is_autobuildable
11212
      UPDATE package_versions
11213
         SET is_autobuildable = 'Y'
11214
       WHERE pv_id = pvid;
11215
 
11216
      -- DEVI-063601
11217
      -- For planned builds the modifier_id shouldn't be set to buildadm.
11218
      -- To ensure this the modifier_id is obtained so it can be restored after
11219
      -- the function pk_environment.auto_make_release is called.
11220
      -- This function calls, change_state, which sets the modifier_id to the
11221
      -- specified userid, which for auto builds is buildadm.
11222
      SELECT pv.modifier_id INTO iprev_modifier_id
11223
      FROM package_versions pv WHERE pv.pv_id = pvid;
11224
 
11225
      -- Now release package
11226
      pk_environment.auto_make_release (pvid,
11227
                                        rtagid,
11228
                                        userid,
11229
                                        vext,
11230
                                        ssv_ext,
11231
                                        clonefrompvid
11232
                                       );
11233
 
11234
      -- DEVI-063601
11235
      -- if it is a planned build then restore the modifier_id to the previous modifier
11236
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
11237
      WHERE pv.pv_id = pvid;
11238
 
11239
      --Now clean the PLANNED_VERSIONS table
11240
      SELECT pkg_id
11241
        INTO pkgid
11242
        FROM PACKAGES
11243
       WHERE pkg_name = pkgname;
11244
 
11245
      DELETE FROM planned_versions
11246
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
11247
 
11248
      RETURN pvid;
1373 dpurdie 11249
   END;
11250
 
4585 dpurdie 11251
/* -------------------------------------------------------------------------- */
11252
-- Use:
11253
--   Used by the Automated Build System to release a new package
11254
--   Will replace auto_make_vcsrelease
11255
-- Returns:
11256
--    Use application errors to indicate programming errors
11257
--    Use negative return codes to indicate correctable user problems
11258
--    Positive return code is the new PVID of the package
11259
--  Similar to auto_make_vcsrelease, but
11260
--      Cleaned up and simplified
11261
--      Does not Release the package, it only preps it for release
11262
--      Adds Rippled Package into the Pending Tab
11263
--
11264
FUNCTION auto_make_vcsrelease2 (
11265
      rtagid                   IN   NUMBER,
11266
      pkgname                  IN   VARCHAR2,
11267
      vext                     IN   VARCHAR2,
11268
      newpkgversion            IN   VARCHAR2,
11269
      vcstag                   IN   VARCHAR2,
11270
      dependenciesimportlist   IN   VARCHAR2,
11271
      isrippled                IN   NUMBER,
11272
      username                 IN   VARCHAR2
11273
   )
11274
      RETURN NUMBER
11275
   IS
11276
      pkgid                           NUMBER;
11277
      pvid                            NUMBER                        := 0;
11278
      userid                          NUMBER;
11279
      dlocked                         VARCHAR2 (20)                 := NULL;
11280
      clonefrompvid                   NUMBER;
11281
      ssv_mm                          package_versions.v_mm%TYPE;
11282
      ssv_nmm                         package_versions.v_nmm%TYPE;
11283
      ssv_ext                         package_versions.v_ext%TYPE;
11284
      return_package_not_found        NUMBER                        := -1;
11285
      return_package_already_exists   NUMBER                        := -2;
11286
      return_not_approved             NUMBER                        := -3;
11287
      return_migrated_pkg             NUMBER                        := -4;
11288
      return_svn_path_changed         NUMBER                        := -5;
11289
 
11290
 
11291
      x_vcstypeid                     NUMBER;
11292
      x_tag                           VARCHAR2(32);
11293
      x_label                         VARCHAR2(60);
11294
      x_srcpath                       VARCHAR2(2000);
11295
      p_srcpath                       VARCHAR2(2000);
11296
 
11297
      -- Regular expression constituents
11298
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
11299
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
11300
      BOL           VARCHAR2(4)  := '^';
11301
      Anything      VARCHAR2(4)  := '.*';
11302
      ReplaceToken1 VARCHAR2(4)  := '\1';
11303
      ReplaceToken2 VARCHAR2(4)  := '\2';
11304
      ReplaceToken3 VARCHAR2(4)  := '\3';
11305
      iprev_modifier_id               NUMBER;
11306
 
11307
   BEGIN
11308
      /*--------------- Business Rules Here -------------------*/
11309
      IF (rtagid IS NULL)
11310
      THEN
11311
         raise_application_error (-20000, 'RtagId must be supplied.');
11312
      END IF;
11313
 
11314
      IF (pkgname IS NULL)
11315
      THEN
11316
         raise_application_error (-20000, 'PkgName must be supplied.');
11317
      END IF;
11318
 
11319
      IF (newpkgversion IS NULL)
11320
      THEN
11321
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11322
      END IF;
11323
 
11324
      IF (vcstag IS NULL)
11325
      THEN
11326
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
11327
      END IF;
11328
 
11329
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11330
      THEN
11331
         raise_application_error (-20000, 'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).');
11332
      END IF;
11333
 
11334
      IF (username IS NULL)
11335
      THEN
11336
         raise_application_error (-20000, 'UserName must be supplied.');
11337
      END IF;
11338
 
11339
      -- Parse the PkgVcsTag
11340
      -- Sets up
11341
      --   x_tag, x_label, x_srcpath
11342
 
11343
       BEGIN
11344
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
11345
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
11346
 
11347
          -- Decode the short tag
11348
          CASE x_tag
11349
             WHEN 'CC' THEN
11350
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
11351
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
11352
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
11353
 
11354
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
11355
                -- check for that error as well as the obvious zero-length string conditions.
11356
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
11357
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
11358
                END IF;
11359
 
11360
                IF isSVNbyName(pkgname) > 0 THEN
11361
                    -- Don't allow migrated packages to be released from a CC label
11362
                    return return_migrated_pkg;
11363
                END IF;
11364
 
11365
 
11366
             WHEN 'SVN' THEN
11367
                -- extract the 2nd token, that being the subversion tag
11368
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
11369
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
11370
 
11371
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
11372
                -- check for that error as well as the obvious zero-length string conditions.
11373
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
11374
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
11375
                END IF;
11376
 
11377
             WHEN 'UC' THEN
11378
                -- nothing to extract, just assign defaults
11379
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
11380
                x_label   := 'N/A';
11381
             ELSE
11382
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
11383
          END CASE;
11384
       END;
11385
 
11386
      -- Get the VCS_TYPE_ID for the version control system.
11387
      BEGIN
11388
         SELECT vt.vcs_type_id
11389
         INTO x_vcstypeid
11390
         FROM VCS_TYPE vt
11391
         WHERE vt.tag = x_tag;
11392
         EXCEPTION
11393
            WHEN NO_DATA_FOUND THEN
11394
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
11395
      END;
11396
 
11397
 
11398
      -- Get user_id
11399
      BEGIN
11400
         SELECT usr.user_id
11401
           INTO userid
11402
           FROM users usr
11403
          WHERE UPPER (usr.user_name) = UPPER (username)
11404
            AND usr.is_disabled IS NULL;
11405
      EXCEPTION
11406
         WHEN NO_DATA_FOUND
11407
         THEN
11408
            raise_application_error (-20000,
11409
                                        'UserName: '
11410
                                     || username
11411
                                     || ' is not valid or disabled.'
11412
                                    );
11413
      END;
11414
 
11415
/*----------------------------------------------------------------------------*/
11416
      -- Create package if necessary
11417
      IF isrippled = 1
11418
      THEN
11419
         /* Ripple Build */
11420
         BEGIN
11421
            -- Make sure that the named version does not exist
11422
            SELECT pv.pv_id
11423
              INTO pvid
11424
              FROM package_versions pv, PACKAGES pkg
11425
             WHERE pv.pkg_id = pkg.pkg_id
11426
               AND pkg.pkg_name = pkgname
11427
               AND pv.pkg_version = newpkgversion;
11428
         EXCEPTION
11429
            WHEN NO_DATA_FOUND
11430
            THEN
11431
               pvid := 0;
11432
         END;
11433
 
11434
         IF (pvid = 0)
11435
         THEN
11436
 
11437
            BEGIN
11438
               -- Find package to be replaced with the ripple package
11439
               SELECT pv.pv_id, pv.src_path
11440
                 INTO clonefrompvid, p_srcpath
11441
                 FROM PACKAGES pkg, package_versions pv,
11442
                      release_content rc
11443
                WHERE rc.pv_id = pv.pv_id
11444
                  AND pv.pkg_id = pkg.pkg_id
11445
                  AND rc.rtag_id = rtagid
11446
                  AND pkg.pkg_name = pkgname
11447
                  AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11448
            EXCEPTION
11449
               WHEN NO_DATA_FOUND
11450
               THEN
11451
                  raise_application_error
11452
                                        (-20000,
11453
                                            'Cannot get CloneFromPvId. VExt='
11454
                                         || vext
11455
                                         || ', RtagId='
11456
                                         || rtagid
11457
                                         || ', PkgName='
11458
                                         || pkgname
11459
                                        );
11460
            END;
11461
 
11462
              -- Ensure Source Path does not change
11463
              --    Ripple:   Will only change if the labeling process is messed up
11464
              --
11465
              IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
11466
              THEN
11467
                return return_svn_path_changed;
11468
              END IF;
11469
 
11470
            -- Create new Package Version, based on existing package
11471
            seed_package_names_versions (pkgname,
11472
                                         newpkgversion,
11473
                                         userid,
11474
                                         pvid,
11475
                                         clonefrompvid
11476
                                        );
11477
 
11478
             -- Insert new Version into the 'Planned' tab of the Release
11479
             PK_PLANNED.ADD_RIPPLE_PACKAGE ( pvid, clonefrompvid , rtagid, userid );
11480
 
11481
            -- Update Package reason for release
11482
            -- Force to be Approved for Autobuild - will control visability inn Pending Tab
11483
            UPDATE package_versions pv
11484
               SET pv.comments = 'Rippled Build.',
11485
                   pv.build_type = 'Y',
11486
                   pv.dlocked = 'A'
11487
             WHERE pv.pv_id = pvid;
11488
 
11489
 
11490
         ELSE   -- PVID != 0. 
11491
            --
11492
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
11493
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
11494
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
11495
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
11496
            UPDATE package_versions pv
11497
               SET pv.release_notes_info = null,
11498
                   pv.modified_stamp = ora_sysdatetime
11499
             WHERE pv.pv_id = pvid;
11500
 
11501
            --DEVI-066151
11502
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
11503
 
11504
            RETURN return_package_already_exists;
11505
         END IF;
11506
 
11507
      -- -----------------------------------------------------------------------
11508
      --    Package is NOT a ripple
11509
      --    Package is a planned release
11510
      --    Package MUST exist in the Pending Area
11511
      --
11512
      ELSE
11513
         -- Find package in pending area
11514
         BEGIN
11515
            SELECT pv.pv_id, pv.dlocked, pv.src_path
11516
              INTO pvid, dlocked, p_srcpath
11517
              FROM planned pl, package_versions pv, PACKAGES pkg
11518
             WHERE pl.pv_id = pv.pv_id
11519
               AND pv.pkg_id = pkg.pkg_id
11520
               AND pl.rtag_id = rtagid
11521
               AND pkg.pkg_name = pkgname
11522
               AND pv.dlocked = 'A'
11523
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
11524
               AND rownum = 1
11525
             ORDER BY pv.modified_stamp;
11526
         EXCEPTION
11527
            WHEN NO_DATA_FOUND
11528
            THEN
11529
               pvid := 0;
11530
         END;
11531
 
11532
         IF (pvid = 0)
11533
         THEN
11534
            -- Package does not exist in pending area, hence report it
11535
            -- It may have been reject while were building it
11536
            RETURN return_package_not_found;
11537
         END IF;
11538
 
11539
         IF (dlocked != 'A')
11540
         THEN
11541
            -- Package is not approved for autobuild
11542
            -- Will no longer get here, due to check in the previous select
11543
            -- This is intentional. We need the force approved package
11544
            RETURN return_not_approved;
11545
         END IF;
11546
 
11547
          -- Ensure Source Path does not change
11548
          -- Do not expect the SVN development branch to change from the previous version
11549
          --    Planned:  Will only change if user has incorrect metadata
11550
          --
11551
          IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
11552
          THEN
11553
            return return_svn_path_changed;
11554
          END IF;
11555
 
11556
      END IF;
11557
 
11558
      -- ----------------------------------------------------------------------
11559
      -- Common Processing for ripple and planned(non-ripple) builds
11560
      --
11561
 
11562
      BEGIN
11563
         -- Import Dependencies
11564
         import_dependencies (pvid, dependenciesimportlist, userid);
11565
      END;
11566
 
11567
      BEGIN
11568
         -- Split current version in parts
11569
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11570
 
11571
         -- Update Package Details
11572
         UPDATE package_versions pv
11573
            SET pv.pkg_version = newpkgversion,
11574
                pv.v_ext = ssv_ext,
11575
                pv.v_mm = ssv_mm,
11576
                pv.v_nmm = ssv_nmm,
11577
                pv.src_path = x_srcpath,
11578
                pv.pkg_label = x_label,
11579
                pv.vcs_type_id = x_vcstypeid
11580
          WHERE pv.pv_id = pvid;
11581
      EXCEPTION
11582
         WHEN DUP_VAL_ON_INDEX
11583
         THEN
11584
            -- Package already exists, hence cannot be used for ripple build
11585
            RETURN return_package_already_exists;
11586
      END;
11587
 
11588
      -- Update the is_autobuildable
11589
      UPDATE package_versions
11590
         SET is_autobuildable = 'Y'
11591
       WHERE pv_id = pvid;
11592
 
11593
 
11594
      -- DEVI-063601
11595
      -- For planned builds the modifier_id shouldn't be set to buildadm.
11596
      -- The auto_make_release() will set it to the 'buildadm' 
11597
      -- Save and restore the modifier_id
11598
 
11599
      -- SELECT pv.modifier_id INTO iprev_modifier_id
11600
      -- FROM package_versions pv WHERE pv.pv_id = pvid;
11601
 
11602
      -- Now release package
11603
      -- pk_environment.auto_make_release (pvid,
11604
      --                                  rtagid,
11605
      --                                  userid,
11606
      --                                  vext,
11607
      --                                  ssv_ext,
11608
      --                                  clonefrompvid
11609
      --                                 );
11610
 
11611
      -- DEVI-063601
11612
      -- if it is a planned build then restore the modifier_id to the previous modifier
11613
      -- UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
11614
      -- WHERE pv.pv_id = pvid;
11615
 
11616
      --Now clean the PLANNED_VERSIONS table
11617
      SELECT pkg_id
11618
        INTO pkgid
11619
        FROM PACKAGES
11620
       WHERE pkg_name = pkgname;
11621
 
11622
      DELETE FROM planned_versions
11623
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
11624
 
11625
      RETURN pvid;
11626
   END;
11627
 
1373 dpurdie 11628
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11629
   PROCEDURE import_dependencies (
11630
      pvid                     IN   NUMBER,
11631
      dependenciesimportlist   IN   VARCHAR2,
11632
      userid                   IN   NUMBER
11633
   )
1373 dpurdie 11634
   IS
3959 dpurdie 11635
/*
11636
|| DependenciesImportList Format:
11637
|| "pkgA","1.0.0";"pkgB","2.0.0";
11638
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11639
*/
11640
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11641
         INDEX BY VARCHAR2 (4000);
11642
 
11643
      seperator         VARCHAR2 (2)           := '||';
11644
      pkgname           VARCHAR2 (4000);
11645
      pkgversion        VARCHAR2 (4000);
11646
      buildtype         VARCHAR2 (50);
11647
      pkgid             NUMBER;
11648
      vext              VARCHAR2 (4000);
11649
      dpvid             NUMBER;
11650
      slist             VARCHAR2 (4000);
11651
      cbuildtypes       tdictionary;
11652
      dependencyrow     NUMBER;
11653
      sdependency       VARCHAR2 (4000);
11654
      first_pos         VARCHAR2 (4000);
11655
      second_pos        VARCHAR2 (4000);
11656
      third_pos         VARCHAR2 (4000);
11657
      forth_pos         VARCHAR2 (4000);
11658
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11659
 
11660
      CURSOR curbuildtype
11661
      IS
11662
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11663
                dep.build_type
11664
           FROM package_dependencies dep, package_versions dpv
11665
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11666
 
11667
      recbuildtype      curbuildtype%ROWTYPE;
1373 dpurdie 11668
   BEGIN
3959 dpurdie 11669
      slist := dependenciesimportlist;
1373 dpurdie 11670
 
3959 dpurdie 11671
      -- Preformat String
11672
      IF NOT slist IS NULL
1373 dpurdie 11673
      THEN
3959 dpurdie 11674
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11675
         slist := REPLACE (slist, UTL_TCP.crlf);
11676
         -- Remove new line and carriage-return characters
11677
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
1373 dpurdie 11678
      END IF;
11679
 
3959 dpurdie 11680
      -- Get Current Dependencies
11681
      OPEN curbuildtype;
1373 dpurdie 11682
 
3959 dpurdie 11683
      FETCH curbuildtype
11684
       INTO recbuildtype;
1373 dpurdie 11685
 
3959 dpurdie 11686
      WHILE curbuildtype%FOUND
11687
      LOOP
11688
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
1373 dpurdie 11689
 
3959 dpurdie 11690
         FETCH curbuildtype
11691
          INTO recbuildtype;
11692
      END LOOP;
1373 dpurdie 11693
 
3959 dpurdie 11694
      CLOSE curbuildtype;
1373 dpurdie 11695
 
3959 dpurdie 11696
      -- Separate dependencies with ; separator
11697
      citemcollection := in_list_varchar2 (slist, ';');
1373 dpurdie 11698
 
3959 dpurdie 11699
      BEGIN
11700
         -- Remove old dependencies
11701
         DELETE FROM package_dependencies dep
11702
               WHERE dep.pv_id = pvid;
1373 dpurdie 11703
 
3959 dpurdie 11704
         -- Loop through dependencies
11705
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11706
         LOOP
11707
            -- Extract pkg_name and pkg_version
11708
            sdependency := citemcollection (dependencyrow);
11709
            first_pos := INSTR (sdependency, '"', 1, 1);
11710
            second_pos := INSTR (sdependency, '"', 1, 2);
11711
            third_pos := INSTR (sdependency, '"', 1, 3);
11712
            forth_pos := INSTR (sdependency, '"', 1, 4);
11713
            pkgname :=
11714
               SUBSTR (sdependency,
11715
                       (first_pos + 1),
11716
                       (second_pos - first_pos - 1)
11717
                      );
11718
            pkgversion :=
11719
               SUBSTR (sdependency,
11720
                       (third_pos + 1),
11721
                       (forth_pos - third_pos - 1)
11722
                      );
11723
 
11724
            -- Dependency must exits to be linked against
11725
            BEGIN
11726
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11727
                 INTO dpvid, pkgid, vext
11728
                 FROM package_versions pv, PACKAGES pkg
11729
                WHERE pv.pkg_id = pkg.pkg_id
11730
                  AND pkg.pkg_name = pkgname
11731
                  AND pv.pkg_version = pkgversion;
11732
            EXCEPTION
11733
               WHEN NO_DATA_FOUND
11734
               THEN
11735
                  raise_application_error
11736
                                  (-20000,
11737
                                      'Dependency ['
11738
                                   || pkgname
11739
                                   || ' '
11740
                                   || pkgversion
11741
                                   || '] does not exist yet and cannot be used!'
11742
                                  );
11743
            END;
11744
 
11745
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11746
            BEGIN
11747
               buildtype := cbuildtypes (pkgid || seperator || vext);
11748
 
11749
               IF buildtype IS NULL
11750
               THEN
11751
                  -- Set build type to LinkPackageArchive by default
11752
                  buildtype := 'L';
11753
               END IF;
11754
            EXCEPTION
11755
               WHEN NO_DATA_FOUND
11756
               THEN
11757
                  buildtype := 'L';
11758
            END;
11759
 
11760
            -- Insert Dependencies
11761
            update_package_dependency (pvid,
11762
                                       pkgname,
11763
                                       pkgversion,
11764
                                       buildtype,
11765
                                       userid,
11766
 
11767
                                      );
11768
         END LOOP;
11769
      END;
1373 dpurdie 11770
   END;
11771
 
11772
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11773
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11774
      RETURN VARCHAR2
1373 dpurdie 11775
   IS
3959 dpurdie 11776
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11777
   BEGIN
3959 dpurdie 11778
      BEGIN
11779
         SELECT pv.pkg_version
11780
           INTO pkgversion
11781
           FROM PACKAGES pkg, release_content rc, package_versions pv
11782
          WHERE pv.pv_id = rc.pv_id
11783
            AND pkg.pkg_id = pv.pkg_id
11784
            AND pkg.pkg_name = pkgname
11785
            AND rc.rtag_id = rtagid;
11786
 
11787
         RETURN pkgversion;
11788
      END;
1373 dpurdie 11789
   END;
11790
 
11791
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11792
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
11793
      RETURN VARCHAR2
1373 dpurdie 11794
   IS
3959 dpurdie 11795
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11796
   BEGIN
3959 dpurdie 11797
      BEGIN
11798
         SELECT pv.pkg_version
11799
           INTO pkgversion
11800
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
11801
          WHERE pv.pv_id = wip.pv_id
11802
            AND pkg.pkg_id = pv.pkg_id
11803
            AND pkg.pkg_name = pkgname
11804
            AND wip.rtag_id = rtagid;
1373 dpurdie 11805
 
3959 dpurdie 11806
         IF pkgversion IS NULL
11807
         THEN
11808
            SELECT pv.pkg_version
11809
              INTO pkgversion
11810
              FROM PACKAGES pkg, planned pl, package_versions pv
11811
             WHERE pv.pv_id = pl.pv_id
11812
               AND pkg.pkg_id = pv.pkg_id
11813
               AND pkg.pkg_name = pkgname
11814
               AND pl.rtag_id = rtagid;
11815
         END IF;
11816
 
11817
         RETURN pkgversion;
11818
      END;
1373 dpurdie 11819
   END;
11820
 
11821
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11822
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1373 dpurdie 11823
   IS
3959 dpurdie 11824
      projid       NUMBER;
11825
      projiddb     NUMBER;
11826
      total        NUMBER;
11827
      auto_total   NUMBER;
11828
      rtagiddb     NUMBER;
1373 dpurdie 11829
   BEGIN
3959 dpurdie 11830
      SELECT COUNT (*)
11831
        INTO total
11832
        FROM release_content rc, package_versions pv
11833
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1373 dpurdie 11834
 
3959 dpurdie 11835
      SELECT COUNT (*)
11836
        INTO auto_total
11837
        FROM release_content rc, package_versions pv
11838
       WHERE pv.pv_id = rc.pv_id
11839
         AND pv.is_autobuildable = 'Y'
11840
         AND rc.rtag_id = rtagid;
11841
 
11842
      BEGIN
11843
         SELECT rtag_id
11844
           INTO rtagiddb
11845
           FROM dash_board
11846
          WHERE rtag_id = rtagid;
11847
 
11848
         SELECT proj_id
11849
           INTO projiddb
11850
           FROM dash_board
11851
          WHERE rtag_id = rtagid;
11852
      EXCEPTION
11853
         WHEN NO_DATA_FOUND
11854
         THEN
11855
            rtagiddb := '';
11856
      END;
11857
 
11858
      IF rtagiddb IS NULL
1373 dpurdie 11859
      THEN
3959 dpurdie 11860
         SELECT proj_id
11861
           INTO projid
11862
           FROM release_tags
11863
          WHERE rtag_id = rtagid;
11864
 
11865
         INSERT INTO dash_board
11866
                     (proj_id, rtag_id, last_build_time, automated_packages,
11867
                      total_packages
11868
                     )
11869
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
11870
                      total
11871
                     );
11872
      ELSE
11873
         UPDATE dash_board
11874
            SET last_build_time = ora_sysdatetime,
11875
                automated_packages = auto_total,
11876
                total_packages = total
11877
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1373 dpurdie 11878
      END IF;
11879
   END;
11880
 
11881
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11882
   FUNCTION exclude_from_build (
11883
      pvid          IN   NUMBER,
11884
      spkgversion   IN   VARCHAR2,
11885
      rtagid        IN   NUMBER,
11886
      username      IN   VARCHAR2
1373 dpurdie 11887
   )
3959 dpurdie 11888
      RETURN NUMBER
1373 dpurdie 11889
   IS
3959 dpurdie 11890
      userid              NUMBER;
11891
      outerrcode          NUMBER;
11892
      pkgid               NUMBER;
11893
 
11894
      CURSOR dnr_duplicate_cur
11895
      IS
11896
         SELECT *
11897
           FROM do_not_ripple
11898
          WHERE pv_id = pvid AND rtag_id = rtagid;
11899
 
11900
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11901
   BEGIN
3959 dpurdie 11902
      outerrcode := -1;       -- Set default return error code to ERROR state
11903
 
11904
      /*--------------- Business Rules Here -------------------*/
11905
      IF (rtagid IS NULL)
1373 dpurdie 11906
      THEN
3959 dpurdie 11907
         RETURN outerrcode;
11908
--         raise_application_error (-20000, 'RtagId must be supplied.');
11909
      END IF;
11910
 
11911
      IF (pvid IS NULL)
1373 dpurdie 11912
      THEN
3959 dpurdie 11913
         RETURN outerrcode;
11914
--         raise_application_error (-20000, 'PvId must be supplied.');
11915
      END IF;
11916
 
11917
      IF (username IS NULL)
1373 dpurdie 11918
      THEN
3959 dpurdie 11919
         RETURN outerrcode;
11920
--         raise_application_error (-20000, 'UserName must be supplied.');
11921
      END IF;
11922
 
11923
      -- Get user_id
11924
      BEGIN
11925
         SELECT usr.user_id
11926
           INTO userid
11927
           FROM users usr
11928
          WHERE UPPER (usr.user_name) = UPPER (username)
11929
            AND usr.is_disabled IS NULL;
11930
      EXCEPTION
11931
         WHEN NO_DATA_FOUND
11932
         THEN
11933
            RETURN outerrcode;
11934
--            raise_application_error (-20000,
11935
--                                        'UserName '
11936
--                                     || username
11937
--                                     || ' is not valid or disabled.'
11938
--                                    );
11939
      END;
11940
 
11941
      OPEN dnr_duplicate_cur;
11942
 
11943
      FETCH dnr_duplicate_cur
11944
       INTO dnr_duplicate_rec;
11945
 
11946
      IF dnr_duplicate_cur%FOUND
1373 dpurdie 11947
      THEN
3959 dpurdie 11948
         outerrcode := 0;
1373 dpurdie 11949
      END IF;
3959 dpurdie 11950
 
11951
      IF dnr_duplicate_cur%NOTFOUND
11952
      THEN
11953
         /* No duplicate recordset */
11954
         unripple_package (pvid, rtagid, userid);
11955
         outerrcode := 0;                            -- Set return to SUCCESS
11956
      END IF;
11957
 
11958
      CLOSE dnr_duplicate_cur;
11959
 
11960
      SELECT pkg_id
11961
        INTO pkgid
11962
        FROM package_versions
11963
       WHERE pv_id = pvid;
11964
 
11965
      DELETE FROM planned_versions
11966
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11967
 
11968
      RETURN outerrcode;
1373 dpurdie 11969
   END;
11970
 
11971
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11972
   FUNCTION exclude_indirect_from_build (
11973
      pvid          IN   NUMBER,
11974
      spkgversion   IN   VARCHAR2,
11975
      rtagid        IN   NUMBER,
11976
      username      IN   VARCHAR2,
11977
      rootpvid      IN   NUMBER,
11978
      rootcause     IN   VARCHAR2,
11979
      rootfile      IN   VARCHAR2
1373 dpurdie 11980
   )
3959 dpurdie 11981
      RETURN NUMBER
1373 dpurdie 11982
   IS
3959 dpurdie 11983
      userid              NUMBER;
11984
      outerrcode          NUMBER;
11985
      pkgid               NUMBER;
11986
 
11987
      CURSOR dnr_duplicate_cur
11988
      IS
11989
         SELECT *
11990
           FROM do_not_ripple
11991
          WHERE pv_id = pvid AND rtag_id = rtagid;
11992
 
11993
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11994
   BEGIN
3959 dpurdie 11995
      outerrcode := -1;       -- Set default return error code to ERROR state
11996
 
11997
      /*--------------- Business Rules Here -------------------*/
11998
      IF (rtagid IS NULL)
1373 dpurdie 11999
      THEN
3959 dpurdie 12000
         RETURN outerrcode;
12001
--         raise_application_error (-20000, 'RtagId must be supplied.');
12002
      END IF;
12003
 
12004
      IF (pvid IS NULL)
1373 dpurdie 12005
      THEN
3959 dpurdie 12006
         RETURN outerrcode;
12007
--         raise_application_error (-20000, 'PvId must be supplied.');
12008
      END IF;
12009
 
12010
      IF (username IS NULL)
1373 dpurdie 12011
      THEN
3959 dpurdie 12012
         RETURN outerrcode;
12013
--         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 12014
      END IF;
3959 dpurdie 12015
 
12016
      -- Get user_id
12017
      BEGIN
12018
         SELECT usr.user_id
12019
           INTO userid
12020
           FROM users usr
12021
          WHERE UPPER (usr.user_name) = UPPER (username)
12022
            AND usr.is_disabled IS NULL;
12023
      EXCEPTION
12024
         WHEN NO_DATA_FOUND
12025
         THEN
12026
            RETURN outerrcode;
12027
--            raise_application_error (-20000,
12028
--                                        'UserName '
12029
--                                     || username
12030
--                                     || ' is not valid or disabled.'
12031
--                                    );
12032
      END;
12033
 
12034
     /* No duplicate recordset */
12035
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
12036
     outerrcode := 0;                            -- Set return to SUCCESS
12037
 
12038
      SELECT pkg_id
12039
        INTO pkgid
12040
        FROM package_versions
12041
       WHERE pv_id = pvid;
12042
 
12043
      DELETE FROM planned_versions
12044
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
12045
 
12046
      RETURN outerrcode;
1373 dpurdie 12047
   END;
12048
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12049
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
1373 dpurdie 12050
   IS
12051
   BEGIN
3959 dpurdie 12052
      INSERT INTO abt_action_log
12053
                  (rcon_id, action_datetime, action
12054
                  )
12055
           VALUES (rconid, ora_sysdatetime, action
12056
                  );
1373 dpurdie 12057
   END;
12058
 
12059
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12060
   FUNCTION insert_package_metrics (
12061
      rtagid                   IN   NUMBER,
12062
      pkgname                  IN   VARCHAR2,
12063
      vext                     IN   VARCHAR2,
12064
      metricstring             IN   VARCHAR2
1373 dpurdie 12065
   )
3959 dpurdie 12066
      RETURN NUMBER
1373 dpurdie 12067
   IS
3959 dpurdie 12068
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
12069
      lv_pvid                  NUMBER                 := 0;
12070
      rownumber                NUMBER;
12071
      rowcontent               VARCHAR2(4000);
12072
      metricname               VARCHAR2(1000);
12073
      metricvalue              VARCHAR2(4000);
12074
      return_insert_error      NUMBER                 := -1;
12075
      return_insert_success    NUMBER                 := 0;
12076
 
12077
      /* Metrics */
12078
      lv_branches                 NUMBER;
12079
      lv_branchlist               VARCHAR2(4000);
12080
      lv_codefiles                NUMBER;
12081
      lv_ignoredfiles             NUMBER;
12082
      lv_directories              NUMBER;
12083
      lv_directorydepth           NUMBER;
12084
      lv_totalfiles               NUMBER;
12085
      lv_makefiles                NUMBER;
12086
      lv_blanklines               NUMBER;
12087
      lv_codelines                NUMBER;
12088
      lv_commentlines             NUMBER;
12089
 
1373 dpurdie 12090
   BEGIN
3959 dpurdie 12091
      /*--------------- Business Rules Here -------------------*/
12092
      IF (rtagid IS NULL)
12093
      THEN
12094
         RETURN return_insert_error;
12095
      END IF;
1373 dpurdie 12096
 
3959 dpurdie 12097
      IF (pkgname IS NULL)
12098
      THEN
12099
         RETURN return_insert_error;
12100
      END IF;
12101
 
12102
      IF (metricstring IS NULL)
12103
      THEN
12104
         RETURN return_insert_error;
12105
      END IF;
12106
 
12107
      BEGIN
12108
         SELECT pv.pv_id
12109
           INTO lv_pvid
12110
           FROM package_versions pv, packages pkg, release_content rc
12111
          WHERE pv.pkg_id = pkg.pkg_id
12112
            AND rc.rtag_id = rtagid
12113
            AND pv.pv_id = rc.pv_id
12114
            AND pkg.pkg_name = pkgname
12115
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
12116
      EXCEPTION
12117
           WHEN NO_DATA_FOUND
12118
           THEN
12119
                lv_pvid := 0;
12120
      END;
12121
 
12122
      citemcollection := in_list_varchar2 (metricstring, ';');
12123
 
12124
      FOR rownumber IN 1 .. citemcollection.COUNT
12125
      LOOP
12126
         rowcontent := citemcollection(rownumber);
12127
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
12128
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
12129
 
12130
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
12131
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
12132
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
12133
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
12134
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
12135
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
12136
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
12137
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
12138
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
12139
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
12140
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
12141
         END IF;
12142
      END LOOP;
12143
 
12144
      IF (lv_pvid > 0)
12145
      THEN
12146
         -- Delete any existing entries for this package version to makes sure our data is untainted
12147
         DELETE FROM package_metrics pm
12148
         WHERE pm.pv_id = lv_pvid;
12149
 
12150
         -- Insert the new data into the metrics table
12151
         INSERT INTO package_metrics
12152
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
12153
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
12154
                     )
12155
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
12156
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
12157
                     );
12158
 
12159
         -- Now update the Release_Metrics Table
12160
         update_release_metrics(rtagid);
12161
 
12162
         RETURN return_insert_success;
12163
      ELSE
12164
         RETURN return_insert_error;
12165
      END IF;
1373 dpurdie 12166
   END;
12167
 
12168
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12169
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1373 dpurdie 12170
   IS
3959 dpurdie 12171
      lv_totalpackages       NUMBER;
12172
      lv_autobuilt           NUMBER;
12173
      lv_linesofcode         NUMBER;
12174
      lv_unittested          NUMBER;
12175
      lv_autotested          NUMBER;
12176
      lv_numOfbranches       NUMBER;
12177
      lv_lastbuildtime       DATE;
1373 dpurdie 12178
   BEGIN
3959 dpurdie 12179
      IF (rtagid > 0)
12180
      THEN
12181
         -- Get the total number of packages in this release and the number of
12182
         -- those that are autobuilt
12183
         SELECT COUNT (DISTINCT rc.pv_id),
12184
                COUNT (DISTINCT autobuilt_qry.pv_id)
12185
           INTO lv_totalpackages, lv_autobuilt
12186
           FROM release_content rc,
12187
                package_versions pv,
12188
                (
12189
                 SELECT rc.pv_id
12190
                   FROM release_content rc,
12191
                        package_versions pv
12192
                  WHERE pv.is_autobuildable = 'Y'
12193
                    AND pv.pv_id = rc.pv_id
12194
                    AND rc.rtag_id = rtagid
12195
                ) autobuilt_qry
12196
          WHERE pv.pv_id = rc.pv_id
12197
            AND rc.rtag_id = rtagid
12198
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
1373 dpurdie 12199
 
3959 dpurdie 12200
         -- Get the build time of the last package built in this release and the
12201
         -- total number of lines of code
12202
         SELECT MAX(pm.created_stamp),
12203
                SUM(pm.code_lines)
12204
           INTO lv_lastbuildtime, lv_linesofcode
12205
           FROM package_metrics pm, release_content rc
12206
          WHERE pm.pv_id = rc.pv_id
12207
            AND rc.rtag_id = rtagid;
12208
 
12209
         -- Get the number of packages with unit tests in this release and the
12210
         -- number of those that are autotested
12211
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
12212
           FROM unit_tests ut,
12213
                release_content rc
12214
          WHERE ut.pv_id = rc.pv_id
12215
            AND rc.rtag_id = rtagid
12216
        AND ut.test_types_fk != 1;
12217
 
12218
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
12219
          FROM unit_tests ut,
12220
               release_content rc
12221
         WHERE ut.pv_id = rc.pv_id
12222
           AND rc.rtag_id = rtagid
12223
           AND ut.test_types_fk = 7;
12224
 
12225
 
12226
         -- Count the number of unique branches in the packages in this release.
12227
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
12228
--           FROM (
12229
--                SELECT pv_id,
12230
--                       regexp_substr(str, '[^,]+', 1, level) branch,
12231
--                       level lv,
12232
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
12233
--                  FROM (
12234
--                       SELECT pm.pv_id,
12235
--                              ','||pm.branch_list str
12236
--                         FROM package_metrics pm,
12237
--                              release_content rc
12238
--                        WHERE pm.pv_id = rc.pv_id
12239
--                          AND rc.rtag_id = rtagid
12240
--                       )
12241
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
12242
--                )
12243
--          WHERE lv != lg;
12244
 
12245
         UPDATE release_metrics rm
12246
            SET rm.total_packages = lv_totalpackages,
12247
                rm.autobuilt = lv_autobuilt,
12248
                rm.lines_of_code = lv_linesofcode,
12249
                rm.unit_tested = lv_unittested,
12250
                rm.autotested = lv_autotested,
12251
--                rm.branches = lv_numOfbranches,
12252
                rm.last_build_time = lv_lastbuildtime
12253
          WHERE rtag_id = rtagid;
12254
 
12255
         IF (SQL%ROWCOUNT = 0)
12256
         THEN
12257
            INSERT INTO release_metrics
12258
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
12259
                         autotested, last_build_time
12260
                        )
12261
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
12262
                         lv_autotested, lv_lastbuildtime
12263
                        );
12264
         END IF;
12265
--         IF (SQL%ROWCOUNT = 0)
12266
--         THEN
12267
--            INSERT INTO release_metrics
12268
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
12269
--                         autotested, branches, last_build_time
12270
--                        )
12271
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
12272
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
12273
--                        );
12274
--         END IF;
12275
--      ELSE
12276
--         raise_application_error (-20000, 'RtagId must be supplied.');
12277
      END IF;
1373 dpurdie 12278
   END;
12279
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12280
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
1373 dpurdie 12281
   IS
3959 dpurdie 12282
      vcstypeid    NUMBER;
12283
      vcstag       VARCHAR2(32);
12284
      label        VARCHAR2(60);
12285
      srcpath      VARCHAR2(2000);
12286
      vcstypeid_cc NUMBER;
12287
      vcstypeid_uc NUMBER;
1373 dpurdie 12288
   BEGIN
3959 dpurdie 12289
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
12290
      -- what the primary key value is for the ClearCase VCS entry.
12291
      BEGIN
12292
         SELECT vt.vcs_type_id
12293
         INTO vcstypeid_cc
12294
         FROM VCS_TYPE vt
12295
         WHERE vt.tag = 'CC';
12296
         EXCEPTION
12297
            WHEN NO_DATA_FOUND THEN
12298
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
12299
      END;
1373 dpurdie 12300
 
3959 dpurdie 12301
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
12302
      -- what the primary key value is for the Uncontrolled VCS entry.
12303
      BEGIN
12304
         SELECT vt.vcs_type_id
12305
         INTO vcstypeid_uc
12306
         FROM VCS_TYPE vt
12307
         WHERE vt.tag = 'UC';
12308
         EXCEPTION
12309
            WHEN NO_DATA_FOUND THEN
12310
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
12311
      END;
12312
 
12313
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
12314
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
12315
      BEGIN
12316
         SELECT pv.pkg_label, pv.src_path,
12317
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
12318
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
12319
                 ELSE pv.vcs_type_id END) AS vcs_type_id
12320
         INTO label, srcpath, vcstypeid
12321
         FROM PACKAGE_VERSIONS pv
12322
         WHERE pv.pv_id = pvid;
12323
         EXCEPTION
12324
            WHEN NO_DATA_FOUND THEN
12325
               raise_application_error (-20000, 'Package Version Not Found!');
12326
      END;
12327
 
12328
      -- Get the VCS TAG for the VCS_TYPE_ID.
12329
      BEGIN
12330
         SELECT vt.tag
12331
         INTO vcstag
12332
         FROM VCS_TYPE vt
12333
         WHERE vt.vcs_type_id = vcstypeid;
12334
         EXCEPTION
12335
            WHEN NO_DATA_FOUND THEN
12336
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
12337
      END;
12338
 
12339
      -- Return value depending upon which VCS Tag is being used.
12340
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
12341
      CASE vcstag
12342
         WHEN 'CC' THEN
12343
            RETURN vcstag || '::' || srcpath || '::' || label;
12344
         WHEN 'SVN' THEN
12345
            RETURN vcstag || '::' || srcpath || '::' || label;
12346
         ELSE
12347
            RETURN vcstag || '::';
12348
      END CASE;
12349
 
1373 dpurdie 12350
   END;
3959 dpurdie 12351
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 12352
 
3959 dpurdie 12353
/*-------------------------------------------------------------------------------------------------------
12354
Name:        update_vcs_details
12355
Description: Updates the Version Control System (vcs) details specified in the vcstag
12356
             parameter for the specified package version.
12357
             The specified package vcstag is parsed and split into 3 fields:
12358
                vcs type, src path, label
12359
             These fields are then stored for the specified pv_id in the package_versions, table.
12360
             An action is recorded in the action log and provides information for tracking and
12361
             for restoring the previous vcs settings if a recovery is required.
12362
Paramters:
12363
             ipv_id:     Package version identifier
12364
             vcstag:     Full version control tag.
12365
                         Examples:
12366
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
12367
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
12368
             user_id:    Identifier of the user that is performing this function.
12369
*/
12370
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
1373 dpurdie 12371
   IS
3959 dpurdie 12372
      ivcs_type_id   NUMBER;
12373
      svcs_type      VARCHAR2(128);
12374
      ssrc_path      VARCHAR2(512);
12375
      spkg_label     VARCHAR2(512);
12376
      spattern       VARCHAR2(64);
12377
      saction_desc   VARCHAR2(2048);
12378
      old_vcs_type   VARCHAR2(128);
12379
      old_src_path   VARCHAR2(512);
12380
      old_pkg_label  VARCHAR2(512);
12381
      old_pkg_vcstag VARCHAR2(1024);
12382
      i              NUMBER;
12383
      vcount         NUMBER;
1373 dpurdie 12384
   BEGIN
3959 dpurdie 12385
     -- Split vcs tag into fields: vcs type, src path, label
12386
     -- Fields are separated by '::'
12387
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
12388
     -- The below regular expression pattern has groups to achieve this.
1373 dpurdie 12389
 
3959 dpurdie 12390
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
12391
 
12392
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
12393
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
12394
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
12395
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
12396
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
12397
 
12398
     -- Validate vcs type
12399
     BEGIN
12400
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
12401
     EXCEPTION
12402
       WHEN NO_DATA_FOUND THEN
12403
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
12404
       --RAISE;
12405
     END;
12406
 
12407
     -- If Clearcase
12408
     IF (ivcs_type_id = 2) THEN
12409
       -- Validate source path
12410
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
12411
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
12412
       END IF;
12413
 
12414
       -- Validate label
12415
       -- For clearcase the label must be specified. For subversion it is not required.
12416
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
12417
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
12418
       END IF;
12419
 
12420
     -- if Subversion
12421
     ELSIF (ivcs_type_id = 23) THEN
12422
       -- general validity
12423
       -- Not as picky as the RM Data entry
12424
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
12425
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
12426
       END IF;
12427
 
12428
       -- Validate Tag
12429
       -- May be a Peg or a Label
12430
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
12431
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
12432
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
12433
           END IF;
12434
       END IF;
12435
 
12436
        -- Check for suitable ending
12437
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
12438
            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 || '"');
12439
        END IF;
12440
 
12441
       -- Check for combined use of tags, branches, trunk or repeats of each
12442
       -- Count occurrences of /tags or /branches/ or /trunk
12443
       vcount:=0;
12444
       i:=1;
12445
       WHILE i > 0 LOOP
12446
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
12447
         IF i > 0 THEN
12448
           -- if found then increment count
12449
           vcount:=vcount+1;
12450
           i:=i-1;  -- move index back to "/"
12451
         END IF;
12452
       END LOOP;
12453
 
12454
       IF vcount = 0  THEN
12455
         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 || '"');
12456
       END IF;
12457
 
12458
       IF vcount > 1  THEN
12459
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
12460
       END IF;
12461
 
12462
 
12463
     END IF;
12464
 
12465
     BEGIN
12466
       -- Get current vcs tag for specified package version
12467
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
12468
       INTO old_src_path, old_pkg_label, old_vcs_type
12469
       FROM package_versions pv, vcs_type vc
12470
       WHERE pv.pv_id = ipv_id
12471
       AND pv.vcs_type_id = vc.vcs_type_id (+);
12472
 
12473
     EXCEPTION
12474
       WHEN NO_DATA_FOUND THEN
12475
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
12476
     END;
12477
 
12478
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
12479
     IF (old_pkg_label IS NOT NULL) THEN
12480
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
12481
     END IF;
12482
 
12483
     -- Create action description
12484
     -- This description will contain the old and new tags.
12485
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
12486
     -- An example of the action description is below:
12487
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
12488
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
12489
 
12490
     -- Store new vcs details
12491
     UPDATE package_versions SET
12492
       src_path = ssrc_path,
12493
       pkg_label = spkg_label,
12494
       vcs_type_id = ivcs_type_id
12495
     WHERE
12496
       pv_id = ipv_id;
12497
 
12498
     -- Store action in action log so that we can back track and also restore vcs settings if required.
12499
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
12500
 
12501
   END update_vcs_details;
12502
 
12503
/*-------------------------------------------------------------------------------------------------------
12504
Name:        isSVN
12505
Description: Determine if any of the packages versions are controlled under SVN
12506
			 Intended to be used to prevent users from releasing a package
12507
			 that has been migrated to SVN
12508
 
12509
Paramters:	pkgid:     Package ID
12510
 
12511
Returns:	Number of versions under SVN version control
12512
*/
12513
 
12514
FUNCTION isSVN( pkgid IN NUMBER )
12515
    RETURN NUMBER
12516
    IS
12517
    svncount   NUMBER  := 0;
12518
   BEGIN
12519
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
12520
        RETURN (svncount);
1373 dpurdie 12521
   END;
3959 dpurdie 12522
 
12523
/*-------------------------------------------------------------------------------------------------------
12524
Name:        isSVNbyName
12525
Description: Determine if any of the packages versions are controlled under SVN
12526
			 Intended to be used to prevent users from releasing a package
12527
			 that has been migrated to SVN
12528
 
12529
Paramters:	pkgname:	Package Name
12530
 
12531
Returns:	Number of versions under SVN version control
12532
*/
12533
 
12534
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
12535
    RETURN NUMBER
12536
IS
12537
   svncount   NUMBER  := 0;
12538
   BEGIN
12539
        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;
12540
        RETURN (svncount);
12541
   END;
12542
 
12543
   END;
4040 dpurdie 12544
 
1374 dpurdie 12545
/
1373 dpurdie 12546
 
4040 dpurdie 12547
/
12548
--------------------------------------------------------
12549
--  DDL for Package Body PK_WORK_IN_PROGRESS
12550
--------------------------------------------------------
12551
 
3959 dpurdie 12552
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 12553
 
12554
/*
12555
------------------------------
12556
||  Last Modified:  S.Vukovic
3959 dpurdie 12557
||  Modified Date:  2/May/2005
1373 dpurdie 12558
||  Body Version:   1.0
12559
------------------------------
12560
*/
12561
 
12562
 
12563
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12564
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 12565
 
3959 dpurdie 12566
	oldPvId NUMBER;
12567
	ReleaseLocation VARCHAR2(4000);
12568
	sLocation VARCHAR2(4000) := NULL;
1373 dpurdie 12569
 
3959 dpurdie 12570
 
1373 dpurdie 12571
BEGIN
12572
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 12573
	/*-------------------------------------------------------*/
1373 dpurdie 12574
 
3959 dpurdie 12575
	BEGIN
12576
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
12577
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
12578
		  FROM WORK_IN_PROGRESS wip,
12579
		  	   RELEASE_TAGS rt,
12580
			   PROJECTS proj
12581
		 WHERE wip.PV_ID = newPvId
12582
		   AND wip.RTAG_ID = rt.RTAG_ID
12583
		   AND rt.OFFICIAL != 'Y'
12584
		   AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 12585
 
3959 dpurdie 12586
		EXCEPTION
12587
	    	WHEN NO_DATA_FOUND THEN
12588
	       		sLocation := NULL;
12589
 
12590
	END;	   	   
1373 dpurdie 12591
 
12592
 
12593
 
3959 dpurdie 12594
	IF (sLocation IS NULL)  THEN
1373 dpurdie 12595
 
3959 dpurdie 12596
		-- Add to "Work in progress"
12597
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
12598
		VALUES( RtagId, newPvId, ViewId );
12599
 
12600
 
12601
	    /* LOG ACTION */
12602
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12603
		  FROM PROJECTS proj,
12604
		  	   RELEASE_TAGS rt
12605
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12606
		   AND rt.RTAG_ID = RtagId;
12607
 
12608
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
12609
 
12610
	ELSE
12611
 
12612
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
12613
 
1373 dpurdie 12614
	END IF;
12615
 
3959 dpurdie 12616
END;
12617
/*-------------------------------------------------------------------------------------------------------*/
12618
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 12619
 
3959 dpurdie 12620
	ReleaseLocation VARCHAR2(4000);
1373 dpurdie 12621
 
3959 dpurdie 12622
BEGIN
12623
 
12624
	/*--------------- Business Rules Here -------------------*/
1373 dpurdie 12625
	/*-------------------------------------------------------*/
12626
 
12627
 
3959 dpurdie 12628
	-- Get release location for logging pusposes
12629
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12630
	  FROM PROJECTS proj,
12631
	  	   RELEASE_TAGS rt
12632
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12633
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 12634
 
12635
 
3959 dpurdie 12636
	-- Delete from Work In Progress
12637
	DELETE
12638
	  FROM WORK_IN_PROGRESS wip
12639
	 WHERE wip.RTAG_ID = RtagId
12640
	   AND wip.PV_ID = PvId;
1373 dpurdie 12641
 
3959 dpurdie 12642
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 12643
 
3959 dpurdie 12644
 
12645
 
12646
 
1373 dpurdie 12647
END;
12648
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12649
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 12650
 
3959 dpurdie 12651
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
12652
	ReleaseLocation VARCHAR2(4000);
12653
	PvId NUMBER;
1373 dpurdie 12654
 
12655
BEGIN
3959 dpurdie 12656
 
1373 dpurdie 12657
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 12658
	IF (PvIdList IS NULL)
12659
	THEN
12660
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
12661
	END IF;
1373 dpurdie 12662
	/*-------------------------------------------------------*/
12663
 
12664
 
3959 dpurdie 12665
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
1373 dpurdie 12666
 
12667
 
3959 dpurdie 12668
	-- Get release location for logging pusposes
12669
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12670
	  FROM PROJECTS proj,
12671
	  	   RELEASE_TAGS rt
12672
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12673
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 12674
 
3959 dpurdie 12675
 
12676
	FOR i IN 1..nIdCollector.COUNT
12677
	LOOP
12678
		PvId := nIdCollector(i);
12679
 
12680
		-- Delete from Work In Progress
12681
		DELETE
12682
		  FROM WORK_IN_PROGRESS wip
12683
		 WHERE wip.RTAG_ID = RtagId
12684
		   AND wip.PV_ID = PvId;
12685
 
12686
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
12687
 
12688
	END LOOP;
12689
 
12690
 
1373 dpurdie 12691
END;
12692
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12693
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12694
 
12695
	ReturnValue NUMBER;
12696
 
1373 dpurdie 12697
BEGIN
3959 dpurdie 12698
	SELECT wip.VIEW_ID INTO ReturnValue
12699
	  FROM WORK_IN_PROGRESS wip
12700
	 WHERE wip.RTAG_ID = RtagId
12701
	   AND wip.PV_ID = PvId;
1373 dpurdie 12702
 
3959 dpurdie 12703
	RETURN ReturnValue;
1373 dpurdie 12704
END;
12705
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12706
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12707
 
12708
	IsBaseView CHAR(1);
12709
 
1373 dpurdie 12710
BEGIN
12711
 
3959 dpurdie 12712
	-- Check if the view is BASE VIEW
12713
	SELECT vi.BASE_VIEW INTO IsBaseView
12714
	  FROM VIEWS vi
12715
	 WHERE vi.VIEW_ID = ViewId;
12716
 
12717
	IF (IsBaseView = 'Y') THEN 
12718
		-- Get Base view content
12719
		OPEN RecordSet FOR
12720
		SELECT 0 AS PKG_STATE,
12721
			   NULL AS DEPRECATED_STATE,
12722
			   pv.pv_id, 
12723
			   pkg.pkg_name, 
12724
			   pv.pkg_version, 
12725
			   pv.dlocked, 
12726
			   pv.pv_description,
12727
			   pv.BUILD_TYPE
12728
		  FROM WORK_IN_PROGRESS rel,
12729
		       packages pkg,
12730
		       package_versions pv
12731
		 WHERE pv.pkg_id = pkg.pkg_id
12732
		   AND rel.pv_id = pv.pv_id
12733
		   AND rel.VIEW_ID = ViewId
12734
		   AND rel.RTAG_ID = RtagId
12735
		 ORDER BY UPPER(pkg.PKG_NAME);
12736
 
1373 dpurdie 12737
 
3959 dpurdie 12738
	ELSE	 
1373 dpurdie 12739
 
3959 dpurdie 12740
	 	-- Get non base view content
12741
		OPEN RecordSet FOR
12742
		SELECT 0 AS PKG_STATE,
12743
			   NULL AS DEPRECATED_STATE,
12744
			   pv.pv_id, 
12745
			   pkg.pkg_name, 
12746
			   pv.pkg_version, 
12747
			   pv.dlocked, 
12748
			   pv.pv_description,
12749
			   pv.BUILD_TYPE
12750
		  FROM WORK_IN_PROGRESS rel,
12751
		       packages pkg,
12752
		       package_versions pv,
12753
			   VIEW_DEF vd
12754
		 WHERE pv.pkg_id = pkg.pkg_id
12755
		   AND rel.pv_id = pv.pv_id
12756
		   AND vd.VIEW_ID = ViewId
12757
		   AND vd.PKG_ID = pv.PKG_ID
12758
		   AND rel.RTAG_ID = RtagId
12759
		 ORDER BY UPPER(pkg.PKG_NAME);
1373 dpurdie 12760
 
3959 dpurdie 12761
 
12762
	END IF;	 	
12763
 
12764
 
1373 dpurdie 12765
END;
12766
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12767
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12768
 
1373 dpurdie 12769
BEGIN
12770
 
3959 dpurdie 12771
	UPDATE WORK_IN_PROGRESS wip SET
12772
	wip.VIEW_ID = NewViewId
12773
	WHERE wip.PV_ID = PvId
12774
	  AND wip.RTAG_ID = RtagId;
12775
 
1373 dpurdie 12776
END;
12777
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12778
END PK_WORK_IN_PROGRESS;
4040 dpurdie 12779
 
3959 dpurdie 12780
/
1373 dpurdie 12781
 
4040 dpurdie 12782
/
12783
--------------------------------------------------------
12784
--  DDL for Package Body RM_ISSUES
12785
--------------------------------------------------------
12786
 
3959 dpurdie 12787
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
1373 dpurdie 12788
 
3959 dpurdie 12789
-- Private Implementation -----------------------------------------------------
1373 dpurdie 12790
 
12791
 
3959 dpurdie 12792
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12793
	AS
1373 dpurdie 12794
 
3959 dpurdie 12795
	BEGIN
12796
		-- start boundary case
12797
		IF ( XXstart < XX ) THEN
12798
			RETURN 1;
1373 dpurdie 12799
 
3959 dpurdie 12800
		ELSIF ( XXstart = XX ) THEN
1373 dpurdie 12801
 
3959 dpurdie 12802
			-- need to consider YY
12803
			IF ( YYstart < YY ) THEN
12804
				RETURN 1;
1373 dpurdie 12805
 
3959 dpurdie 12806
			ELSIF ( YYstart = YY ) THEN
1373 dpurdie 12807
 
3959 dpurdie 12808
					-- need to consider ZZ
12809
					IF ( ZZstart <= ZZ ) THEN
12810
						RETURN 1;
12811
 
12812
					ELSE
12813
						RETURN 0;
12814
					END IF;
12815
 
12816
			ELSE
12817
				RETURN 0;
12818
			END IF;
12819
		ELSE
12820
			RETURN 0;
12821
		END IF;
12822
	EXCEPTION
12823
		WHEN OTHERS THEN
12824
			RETURN -1;
12825
	END;
12826
 
12827
 
12828
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12829
	AS
12830
 
12831
	BEGIN
12832
		-- end boundary case
12833
		IF ( XX < XXend ) THEN
12834
			RETURN 1;
12835
 
12836
		ELSIF ( XX = XXend ) THEN
12837
 
12838
			-- need to consider YY
12839
			IF ( YY < YYend ) THEN
12840
				RETURN 1;
12841
 
12842
			ELSIF ( YY = YYend ) THEN
12843
 
12844
					-- need to consider ZZ
12845
					IF ( ZZ <= ZZend ) THEN
12846
						RETURN 1;
12847
 
12848
					ELSE
12849
						RETURN 0;
12850
					END IF;
12851
			ELSE
12852
 
12853
				RETURN 0;
12854
			END IF;
12855
		ELSE
12856
			RETURN 0;
12857
		END IF;
12858
	EXCEPTION
12859
		WHEN OTHERS THEN
12860
			RETURN -1;
12861
	END;
12862
 
12863
	/*
12864
	-	version format:		XX.YY.ZZ.abc
12865
	*/
12866
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
12867
	AS
12868
		XXstart		NUMBER	:=	0;
12869
		XXend		NUMBER	:=	0;
12870
		XX			NUMBER	:=	0;
12871
		YYstart		NUMBER	:=	0;
12872
		YYend		NUMBER	:=	0;
12873
		YY			NUMBER	:=	0;
12874
		ZZstart		NUMBER	:=	0;
12875
		ZZend		NUMBER	:=	0;
12876
		ZZ			NUMBER	:=	0;
12877
		first_dot	NUMBER	:=	0;
12878
		second_dot	NUMBER	:=	0;
12879
		third_dot	NUMBER	:=	0;
12880
 
12881
		ProjExtstart	VARCHAR2(10);
12882
		ProjExtend		VARCHAR2(10);
12883
		ProjExt			VARCHAR2(10);
12884
 
12885
	BEGIN
12886
		-- strip the version number
12887
		first_dot :=  INSTR(version_start, '.', 1, 1);
12888
		second_dot :=  INSTR(version_start, '.', 1, 2);
12889
		third_dot :=  INSTR(version_start, '.', 1, 3);
12890
 
12891
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
12892
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12893
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12894
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
12895
 
12896
		first_dot :=  INSTR(version_end, '.', 1, 1);
12897
		second_dot :=  INSTR(version_end, '.', 1, 2);
12898
		third_dot :=  INSTR(version_end, '.', 1, 3);
12899
 
12900
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
12901
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12902
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12903
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
12904
 
12905
		first_dot :=  INSTR(version, '.', 1, 1);
12906
		second_dot :=  INSTR(version, '.', 1, 2);
12907
		third_dot :=  INSTR(version, '.', 1, 3);
12908
 
12909
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
12910
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12911
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12912
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
12913
 
12914
		-- only include versions if all project extensions are the same
12915
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
12916
 
12917
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
12918
				RETURN 1;
12919
			ELSE
12920
				RETURN 0;
12921
			END IF;
12922
		ELSE
12923
			RETURN 0;
12924
		END IF;
12925
 
12926
	EXCEPTION
12927
		WHEN OTHERS THEN
12928
			RETURN -1;
12929
	END;
12930
 
12931
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
12932
	AS
12933
	    pkg_id NUMBER;
12934
	BEGIN
12935
		SELECT
12936
			p.PKG_ID
12937
		INTO
12938
			pkg_id
12939
		FROM
12940
			PACKAGES p
12941
		WHERE
12942
			p.PKG_NAME = pkgName;
12943
 
12944
		RETURN pkg_id;
12945
	EXCEPTION
12946
	    WHEN OTHERS THEN
12947
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
12948
			RETURN -1;
12949
	END;
12950
 
12951
 
12952
-- Public Implementation ------------------------------------------------------
12953
 
12954
	/*
12955
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
12956
	--
12957
	-- INPUT PARAMETERS:
12958
	--
12959
	--		pkg_name  	-  	The name of the top level package to get issues for
12960
	--		version_start	-	The start version for the comparison
12961
	--		version_end	-	The end version for the comparison
12962
	*/
12963
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12964
	AS
12965
		pkgId	NUMBER;
12966
	BEGIN
12967
		-- get pkg_id of the input package:
12968
		pkgId := GetPkgId( pkg_name );
12969
 
12970
		OPEN vCursor FOR
12971
		SELECT
12972
			  pv.PKG_ID,
12973
			  pv.PKG_VERSION,
12974
			  pv.PV_ID,
12975
			  i_pkg.ISS_ID,
12976
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
12977
			  pd.DPKG_ID,
12978
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
12979
			  pd.DPV_ID,
12980
			  i_dpkg.ISS_ID AS ISSUE_ID
12981
		FROM
12982
			 PACKAGE_VERSIONS pv
12983
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
12984
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
12985
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
12986
		WHERE
12987
   			 pv.PKG_ID = pkgId
12988
		AND
12989
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
12990
		AND
12991
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
12992
		ORDER BY
12993
			 pv.PKG_ID,
12994
			 pv.PV_ID,
12995
			 pd.DPKG_ID,
12996
			 pd.DPV_ID;
12997
	EXCEPTION
12998
		WHEN OTHERS THEN
12999
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
13000
	END;
13001
 
13002
 
13003
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
13004
 
13005
	/*
13006
	-- Proc: LoadIssuesTable
13007
	--
13008
	-- Populates Package_Issues table with details of issues from all dependent packages.
13009
	-- This will be for all package versions of the input pkg_name between the
13010
	-- version_start and version_end.
13011
	--
13012
	-- INPUT PARAMETERS:
13013
	--
13014
	--		pkg_name  	-  	The name of the top level package to get issues for
13015
	--		version_start	-	The start version for the comparison
13016
	--		version_end	-	The end version for the comparison
13017
	*/
13018
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
13019
	AS
13020
		pkgId	NUMBER;
13021
 
13022
		CURSOR pack_vers_cur IS
13023
			SELECT
13024
				pv.PV_ID,
13025
				pv.PKG_VERSION,
13026
				pv.PKG_ID,
13027
				p.PKG_NAME
13028
			FROM
13029
				PACKAGE_VERSIONS pv
13030
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13031
			WHERE
13032
   				 pv.PKG_ID = pkgId
13033
			AND
13034
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
13035
 
13036
	BEGIN
13037
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13038
 
13039
		-- get the pkg_id we are finding issues for
13040
		pkgId := GetPkgId( pkg_name );
13041
 
13042
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
13043
		FOR pack_ver_rec IN  pack_vers_cur
13044
		LOOP
13045
			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 );
13046
			COMMIT;
13047
		END LOOP;
13048
 
13049
		-- The output cursor - shows the individual versions of the top level package then were reported on
13050
		OPEN vCursor FOR
13051
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13052
/*removed
13053
		SELECT
13054
			PKG_VERSION
13055
		FROM
13056
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
13057
*/
13058
 
13059
 
13060
	EXCEPTION
13061
		WHEN OTHERS THEN
13062
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
13063
	END;
13064
 
13065
 
13066
	/*
13067
	-- Proc: InsertIssuesForDepends
13068
	--
13069
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
13070
	--
13071
	-- INPUT PARAMETERS:
13072
	--
13073
	--		pvID  		-  	The package version id of the package to get issues for
13074
	--		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)
13075
	--		top_pkgName -  	The package name of the top level package
13076
	--		top_pvID  	-  	The package version id of the top level package
13077
	--		top_pkgVer  -  	The package version description of the top level package
13078
	*/
13079
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
13080
	AS
13081
		pkgId		NUMBER;
13082
		issCnt		NUMBER := 0;
13083
		pkgCheck	NUMBER := 0;
13084
		depCheck	NUMBER := 0;
13085
 
13086
		dpkgName	VARCHAR(50);
13087
		dpkgVersion	VARCHAR(50);
13088
 
13089
		CURSOR dep_packs_cur IS
13090
			SELECT
13091
				DPV_ID
13092
			FROM
13093
				PACKAGE_DEPENDENCIES
13094
			WHERE
13095
				PV_ID = pvID;
13096
 
13097
	BEGIN
13098
 
13099
		-- check to see if the package has been processed previously
13100
		SELECT
13101
			COUNT(*)
13102
		INTO
13103
			pkgCheck
13104
		FROM
13105
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13106
		WHERE
13107
			DPV_ID = pvID;
13108
 
13109
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
13110
 
13111
		-- Package not already processed (no cyclic dependency) - process it
13112
		IF ( pkgCheck = 0 ) THEN
13113
 
13114
			-- check to see if this package version has any issues assigned to it
13115
			SELECT
13116
				COUNT(*)
13117
			INTO
13118
				issCnt
13119
			FROM
13120
				CQ_ISSUES i
13121
			WHERE
13122
				i.PV_ID = pvID;
13123
 
13124
			dbms_output.put_line('issCnt: ' || issCnt );
13125
 
13126
			-- Always enter a marker row into the table even if there are no issues for the package.
13127
			-- This allows us to pick up any cyclic dependencies.
13128
			IF ( issCnt > 0 ) THEN
13129
				-- get issues and insert into RM_PACKAGE_ISSUES
13130
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13131
 
13132
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
13133
					SELECT DISTINCT
13134
						top_pkgID		AS PKG_ID,
13135
						top_pkgName		AS PKG_NAME,
13136
						top_pvID		AS PV_ID,
13137
						top_pkgVer		AS PKG_VERSION,
13138
						pv.PV_ID		AS DPV_ID,
13139
						p.PKG_NAME		AS DPKG_NAME,
13140
						pv.PKG_VERSION	AS DPKG_VERSION,
13141
						ci.ISS_DB,
13142
						ci.ISS_ID
13143
					FROM
13144
						PACKAGE_VERSIONS pv
13145
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13146
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
13147
					WHERE
13148
						pv.PV_ID = pvID;
13149
 
13150
			ELSE
13151
				-- get the dpkg details - there will always be a row returned here
13152
				SELECT
13153
					p.PKG_NAME
13154
				INTO
13155
					dpkgName
13156
				FROM
13157
					PACKAGE_VERSIONS pv
13158
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
13159
				WHERE
13160
	   				 pv.PV_ID = pvID;
13161
 
13162
				SELECT
13163
					pv.PKG_VERSION
13164
				INTO
13165
					dpkgVersion
13166
				FROM
13167
					PACKAGE_VERSIONS pv
13168
				WHERE
13169
	   				 pv.PV_ID = pvID;
13170
 
13171
				-- enter a marker row
13172
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
13173
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
13174
				VALUES (
13175
					top_pkgID,
13176
					top_pkgName,
13177
					top_pvID,
13178
					top_pkgVer,
13179
					pvID,
13180
					dpkgName,
13181
					dpkgVersion,
13182
					NULL,
13183
					NULL );
13184
 
13185
			END IF;
13186
 
13187
			-- If this package version has dependencies then recurse
13188
			SELECT
13189
				COUNT(*)
13190
			INTO
13191
				depCheck
13192
			FROM
13193
				PACKAGE_DEPENDENCIES
13194
			WHERE
13195
				PV_ID = pvID;
13196
 
13197
			IF ( depCheck > 0 ) THEN
13198
				-- get dependencies and call this function recursively for each one
13199
				FOR dep_rec IN  dep_packs_cur
13200
				LOOP
13201
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
13202
				END LOOP;
13203
 
13204
			END IF;
13205
 
13206
		END IF;
13207
 
13208
	/*EXCEPTION
13209
		WHEN OTHERS THEN
13210
			no exception handling required
13211
	*/
13212
	END;
13213
 
13214
END Rm_Issues;
4040 dpurdie 13215
 
1374 dpurdie 13216
/
1373 dpurdie 13217
 
4040 dpurdie 13218
/
13219
--------------------------------------------------------
13220
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
13221
--------------------------------------------------------
13222
set define off;
13223
 
1373 dpurdie 13224
  CREATE OR REPLACE PROCEDURE "ADD_AUTOBUILD_FAILURE_INFO" (
13225
   nprojid     IN   NUMBER,
13226
   nviewid     IN   NUMBER,
13227
   suserlist   IN   VARCHAR2
13228
)
13229
IS
13230
   groupid   NUMBER;
13231
/******************************************************************************
13232
   NAME:       ADD_AUTOBUILD_FAILURE
13233
   PURPOSE:
13234
 
13235
   REVISIONS:
13236
   Ver        Date        Author           Description
13237
   ---------  ----------  ---------------  ------------------------------------
13238
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
13239
 
13240
   NOTES:
13241
 
13242
   Automatically available Auto Replace Keywords:
13243
      Object Name:     ADD_AUTOBUILD_FAILURE
13244
      Sysdate:         11/04/2006
13245
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
13246
      Username:         (set in TOAD Options, Procedure Editor)
13247
      Table Name:       (set in the "New PL/SQL Object" dialog)
13248
 
13249
******************************************************************************/
13250
BEGIN
13251
   BEGIN
13252
      SELECT group_email_id
13253
        INTO groupid
13254
        FROM autobuild_failure
13255
       WHERE proj_id = nprojid AND view_id = nviewid;
13256
   EXCEPTION
13257
      WHEN NO_DATA_FOUND
13258
      THEN
13259
         --  Create Next Sequence Id ---
13260
         SELECT seq_group_email_id.NEXTVAL
13261
           INTO groupid
13262
           FROM DUAL;
13263
 
13264
         INSERT INTO autobuild_failure
13265
                     (group_email_id, proj_id, view_id
13266
                     )
13267
              VALUES (groupid, nprojid, nviewid
13268
                     );
13269
   END;
13270
 
13271
   add_view_members (groupid, suserlist);
13272
END add_autobuild_failure_info;
4040 dpurdie 13273
 
1374 dpurdie 13274
/
1373 dpurdie 13275
 
4040 dpurdie 13276
/
13277
--------------------------------------------------------
13278
--  DDL for Procedure ADD_COMPONENT
13279
--------------------------------------------------------
13280
set define off;
13281
 
3959 dpurdie 13282
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
13283
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
13284
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
13285
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
13286
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
13287
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
13288
                                           ) IS
13289
/* ---------------------------------------------------------------------------
13290
    Version: 3.0.0
13291
   --------------------------------------------------------------------------- */
1373 dpurdie 13292
 
13293
 
13294
BEGIN
13295
 
3959 dpurdie 13296
	 --- Insert into RELEASE_COMPONENTS
13297
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
13298
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
1373 dpurdie 13299
 
13300
 
3959 dpurdie 13301
 
13302
 
13303
END Add_Component;
4040 dpurdie 13304
 
1374 dpurdie 13305
/
1373 dpurdie 13306
 
4040 dpurdie 13307
/
13308
--------------------------------------------------------
13309
--  DDL for Procedure ADD_PACKAGE_INTEREST
13310
--------------------------------------------------------
13311
set define off;
13312
 
3959 dpurdie 13313
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
13314
	   	  		  								  nPkgIdList IN VARCHAR2,
13315
												  nUserId IN NUMBER
13316
	   	  		  								  ) IS
1373 dpurdie 13317
 
3959 dpurdie 13318
/******************************************************************************
13319
   NAME:       ADD_PACKAGE_INTEREST
13320
   PURPOSE:    
1373 dpurdie 13321
 
3959 dpurdie 13322
   REVISIONS:
13323
   Ver        Date        Author           Description
13324
   ---------  ----------  ---------------  ------------------------------------
13325
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
13326
 
13327
   NOTES:
13328
 
13329
   Automatically available Auto Replace Keywords:
13330
      Object Name:     ADD_PACKAGE_INTEREST
13331
      Sysdate:         12/05/2006
13332
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
13333
      Username:         (set in TOAD Options, Procedure Editor)
13334
      Table Name:       (set in the "New PL/SQL Object" dialog)
13335
 
13336
******************************************************************************/
13337
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
13338
   nPkgId NUMBER;
1373 dpurdie 13339
BEGIN
13340
 
3959 dpurdie 13341
	 npkgidcollector := in_list_number2 (nPkgIdList);
13342
 
13343
	FOR i IN 1..npkgidcollector.COUNT
13344
	LOOP
13345
		nPkgId := npkgidcollector(i);
1373 dpurdie 13346
 
3959 dpurdie 13347
	 --- Insert into PACKAGE_INTEREST TABLE
13348
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
13349
	 VALUES(nProjId, nPkgId, nUserId);
13350
	END LOOP;	 
13351
 
1373 dpurdie 13352
 
3959 dpurdie 13353
END ADD_PACKAGE_INTEREST;
4040 dpurdie 13354
 
3959 dpurdie 13355
/
1373 dpurdie 13356
 
4040 dpurdie 13357
/
13358
--------------------------------------------------------
13359
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
13360
--------------------------------------------------------
13361
set define off;
13362
 
3959 dpurdie 13363
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
13364
	   	  		  								  nPkgIdList IN VARCHAR2,
13365
												  nUserId IN NUMBER
13366
	   	  		  								  ) IS
1373 dpurdie 13367
 
3959 dpurdie 13368
/******************************************************************************
13369
   NAME:       ADD_PACKAGE_INTEREST
13370
   PURPOSE:    
13371
 
13372
   REVISIONS:
13373
   Ver        Date        Author           Description
13374
   ---------  ----------  ---------------  ------------------------------------
13375
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
13376
 
13377
   NOTES:
13378
 
13379
   Automatically available Auto Replace Keywords:
13380
      Object Name:     ADD_PACKAGE_INTEREST
13381
      Sysdate:         12/05/2006
13382
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
13383
      Username:         (set in TOAD Options, Procedure Editor)
13384
      Table Name:       (set in the "New PL/SQL Object" dialog)
13385
 
13386
******************************************************************************/
13387
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
13388
   nPkgId NUMBER;
13389
BEGIN
13390
 
13391
	 npkgidcollector := in_list_number2 (nPkgIdList);
13392
 
13393
	FOR i IN 1..npkgidcollector.COUNT
13394
	LOOP
13395
		nPkgId := npkgidcollector(i);
13396
 
13397
	 --- Insert into PACKAGE_INTEREST TABLE
13398
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
13399
	 VALUES(nProjId, nPkgId, nUserId);
13400
	END LOOP;	 
13401
 
13402
 
13403
END ADD_PACKAGE_INTEREST_TEST;
4040 dpurdie 13404
 
1374 dpurdie 13405
/
1373 dpurdie 13406
 
4040 dpurdie 13407
/
13408
--------------------------------------------------------
13409
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
13410
--------------------------------------------------------
13411
set define off;
13412
 
3959 dpurdie 13413
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
13414
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
13415
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
13416
                                                     NNuser_id IN NUMBER
13417
                                                    ) IS
1373 dpurdie 13418
/* ---------------------------------------------------------------------------
3959 dpurdie 13419
    Version: 3.1
1373 dpurdie 13420
   --------------------------------------------------------------------------- */
13421
 
3959 dpurdie 13422
    retRTD_ID NUMBER;
13423
 
13424
	CURSOR rtd_cur IS
13425
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
13426
    rtd_rec rtd_cur%ROWTYPE;
13427
 
1373 dpurdie 13428
BEGIN
3959 dpurdie 13429
    --- Seed database with package_name and version if required ---
13430
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 13431
 
3959 dpurdie 13432
	OPEN rtd_cur;
13433
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 13434
 
3959 dpurdie 13435
    IF rtd_cur%NOTFOUND
13436
    THEN
13437
		/* Make sure it does not exists already as runtime dependency */
1373 dpurdie 13438
 
3959 dpurdie 13439
		--- Add new Runtime Dependency ---
13440
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
13441
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
1373 dpurdie 13442
 
3959 dpurdie 13443
    	/* LOG ACTION */
13444
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
13445
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
13446
 
13447
	END IF;
13448
 
13449
 
13450
END Add_Runtime_Dependency;
4040 dpurdie 13451
 
1374 dpurdie 13452
/
1373 dpurdie 13453
 
4040 dpurdie 13454
/
13455
--------------------------------------------------------
13456
--  DDL for Procedure ADD_VIEW_MEMBERS
13457
--------------------------------------------------------
13458
set define off;
13459
 
3959 dpurdie 13460
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
13461
 
13462
/******************************************************************************
13463
   NAME:       ADD_VIEW_MEMBERS
13464
   PURPOSE:    
13465
 
13466
   REVISIONS:
13467
   Ver        Date        Author           Description
13468
   ---------  ----------  ---------------  ------------------------------------
13469
   1.0        11/04/2006          1. Created this procedure.
13470
 
13471
   NOTES:
13472
 
13473
   Automatically available Auto Replace Keywords:
13474
      Object Name:     ADD_VIEW_MEMBERS
13475
      Sysdate:         11/04/2006
13476
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
13477
      Username:         (set in TOAD Options, Procedure Editor)
13478
      Table Name:       (set in the "New PL/SQL Object" dialog)
13479
 
13480
******************************************************************************/
13481
CURSOR user_cur IS
13482
	SELECT u.USER_ID
13483
	  FROM USERS u
13484
	 WHERE u.USER_ID IN (
13485
	 	   			   	SELECT * 
13486
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
13487
						);
13488
user_rec user_cur%ROWTYPE;
13489
 
13490
 
13491
BEGIN
13492
 
13493
	 OPEN user_cur;
13494
	 FETCH user_cur INTO user_rec;
13495
 
13496
	 WHILE user_cur%FOUND
13497
	 LOOP
13498
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
13499
	 	 VALUES ( nGroupId, user_rec.USER_ID);
13500
 
13501
	 	 FETCH user_cur INTO user_rec;	 
13502
	 END LOOP;	 
13503
 
13504
 
13505
 
13506
END ADD_VIEW_MEMBERS;
4040 dpurdie 13507
 
1374 dpurdie 13508
/
1373 dpurdie 13509
 
4040 dpurdie 13510
/
13511
--------------------------------------------------------
13512
--  DDL for Procedure BASIC_CLONE
13513
--------------------------------------------------------
13514
set define off;
13515
 
1373 dpurdie 13516
  CREATE OR REPLACE PROCEDURE "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
13517
                        nTOpv_id IN NUMBER,
13518
                        nRtag_id IN NUMBER,
13519
                        nUser_id IN NUMBER,
13520
                        nTOpkg_id IN NUMBER DEFAULT NULL,
13521
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
13522
 
13523
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
13524
   major NUMBER;
13525
   minor NUMBER;
13526
   patch NUMBER;
13527
   buildn NUMBER;
13528
   from_vcs_type_id NUMBER;
13529
BEGIN
13530
------------------------------ Version Control System ------------------------------------------
13531
   SELECT vcs_type_id
13532
      INTO from_vcs_type_id
13533
      FROM package_versions WHERE pv_id = nFROMpv_id;
13534
 
13535
   UPDATE package_versions
13536
      SET vcs_type_id = from_vcs_type_id
13537
      WHERE pv_id = nTOpv_id;
13538
------------------------------------- Limits ---------------------------------------------------
13539
   select major_limit, minor_limit, patch_limit, build_number_limit
13540
   into major, minor, patch, buildn
13541
   from package_versions where pv_id=nFROMpv_id;
13542
    UPDATE package_versions SET
13543
           major_limit = major,
13544
           minor_limit = minor,
13545
           patch_limit = patch,
13546
           build_number_limit = buildn
13547
     WHERE PV_ID = nTOpv_id;
13548
------------------------------------- Clone Dependencies ---------------------------------------------------
13549
   IF NOT nRtag_id IS NULL
13550
   THEN
13551
      -- Auto Update Dependencies --
13552
      INSERT INTO PACKAGE_DEPENDENCIES
13553
           SELECT nTOpv_id AS pv_id,
13554
                  DECODE(nUser_id,
13555
                         frc.modifier_id,
13556
                         frc.pv_id,
13557
                         DECODE(frc.dlocked,
13558
                                'Y',
13559
                                frc.pv_id,
13560
                                dep.dpv_id)
13561
                         ) AS dpv_id,
13562
                  nTOpkg_id AS pkg_id,
13563
                  dep.dpkg_id,
13564
                  dep.build_type,
13565
                  dep.display_order
13566
             FROM PACKAGE_DEPENDENCIES dep,
13567
                  PACKAGE_VERSIONS pv,
13568
                  (
13569
                  /* Full Release Contents used for reference*/
13570
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
13571
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
13572
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
13573
                  ) frc
13574
            WHERE dep.pv_id = nFROMpv_id
13575
              AND dep.dpv_id = pv.pv_id
13576
              AND pv.pkg_id = frc.pkg_id(+)
13577
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
13578
   ELSE
13579
      -- Clone Dependencies --
13580
      INSERT INTO PACKAGE_DEPENDENCIES
13581
           SELECT nTOpv_id         AS pv_id,
13582
                  dep.dpv_id,
13583
                  nTOpkg_id        AS pkg_id,
13584
                  dep.dpkg_id,
13585
                  dep.build_type,
13586
                  dep.display_order
13587
             FROM PACKAGE_DEPENDENCIES dep
13588
            WHERE dep.pv_id = nFROMpv_id;
13589
 
13590
   END IF;
13591
 
13592
----------------------------------------- Clone Issues -------------------------------------------------------
13593
   IF enumISSUES_STATE_IMPORTED IS NULL
13594
   THEN
13595
        /* All Issues */
13596
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
13597
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
13598
              FROM CQ_ISSUES
13599
             WHERE pv_id = nFROMpv_id;
13600
   ELSE
13601
       /* Outstanding Issues Only */
13602
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
13603
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
13604
              FROM CQ_ISSUES
13605
             WHERE pv_id = nFROMpv_id
13606
               AND iss_state = enumISSUES_STATE_IMPORTED;
13607
   END IF;
13608
 
13609
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
13610
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
13611
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
13612
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
13613
 
13614
--------------------------------------- Clone Additional Notes ------------------------------------------------
13615
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
13616
        SELECT an.NOTE_ID,
13617
               nTOpv_id AS PV_ID,
13618
               an.NOTE_TITLE,
13619
               an.NOTE_BODY,
13620
               an.MOD_DATE,
13621
               an.MOD_USER
13622
          FROM ADDITIONAL_NOTES an
13623
         WHERE an.PV_ID = nFROMpv_id;
13624
 
13625
-------------------------------------------- Clone Unit Tests -------------------------------------------------
13626
   -- Clone only Automatic unit tests --
13627
   INSERT INTO UNIT_TESTS (
13628
                           TEST_ID,
13629
                           PV_ID,
13630
                           TEST_TYPES_FK,
13631
                           TEST_SUMMARY,
13632
                           COMPLETION_DATE,
13633
                           COMPLETED_BY,
13634
                           RESULTS_URL,
13635
                           RESULTS_ATTACHMENT_NAME,
13636
                           NUMOF_TEST
13637
                          )
13638
        SELECT ut.TEST_ID,
13639
               nTOpv_id AS PV_ID,
13640
               ut.TEST_TYPES_FK,
13641
               ut.TEST_SUMMARY,
13642
               Ora_Sysdate AS COMPLETION_DATE,
13643
               nUser_id AS COMPLETED_BY,
13644
               ut.RESULTS_URL,
13645
               ut.RESULTS_ATTACHMENT_NAME,
13646
               ut.NUMOF_TEST
13647
          FROM UNIT_TESTS ut
13648
         WHERE ut.PV_ID = nFROMpv_id
13649
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
13650
 
13651
    -- Clone only Interactive Unit Tests --
13652
    INSERT INTO UNIT_TESTS (
13653
                            TEST_ID,
13654
                            PV_ID,
13655
                            TEST_TYPES_FK,
13656
                            TEST_SUMMARY
13657
                           )
13658
       SELECT ut.TEST_ID,
13659
              nTOpv_id AS PV_ID,
13660
              ut.TEST_TYPES_FK,
13661
              ut.TEST_SUMMARY
13662
         FROM UNIT_TESTS ut
13663
        WHERE ut.PV_ID = nFROMpv_id
13664
          AND ut.TEST_TYPES_FK IN (6);
13665
 
13666
-------------------------------------------- Clone Package Documents ------------------------------------------
13667
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
13668
        SELECT nTOpv_id AS PV_ID,
13669
               pd.test_id,
13670
               pd.doc_num,
13671
               pd.doc_id,
13672
               pd.IS_LATEST
13673
          FROM PACKAGE_DOCUMENTS pd
13674
         WHERE pd.PV_ID = nFROMpv_id;
13675
 
13676
-------------------------------------------- Clone Build Environments -----------------------------------------
13677
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
13678
    SELECT nTOpv_id AS PV_ID,
13679
           pkgbe.BE_ID,
13680
           pkgbe.BUILD_TYPE
13681
      FROM PACKAGE_BUILD_ENV pkgbe
13682
     WHERE pkgbe.PV_ID = nFROMpv_id;
13683
---------------------------------------------Clone Package Build Info------------------------------------------
13684
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
13685
    SELECT nTOpv_id AS PV_ID,
13686
           pkgbinfo.BM_ID,
13687
           pkgbinfo.BSA_ID
13688
      FROM PACKAGE_BUILD_INFO pkgbinfo
13689
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
13690
---------------------------------------------Clone Package Version Processes-----------------------------------
13691
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
13692
    SELECT nTOpv_id AS PV_ID,
13693
           pp.PROC_ID
13694
      FROM PACKAGE_PROCESSES pp
13695
     WHERE pp.PV_ID = nFROMpv_id;
13696
---------------------------------------------Clone Licencing Associations-----------------------------------
13697
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
13698
---------------------------------------------------------------------------------------------------------------
13699
 
13700
    /* LOG ACTION */
13701
    SELECT pv.PKG_VERSION INTO FromVersion
13702
      FROM PACKAGE_VERSIONS pv
13703
     WHERE pv.PV_ID = nFROMpv_id;
13704
 
13705
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
13706
                 'Details cloned from: '|| FromVersion );
13707
 
13708
---------------------------------------------------------------------------------------------------------------
13709
 
13710
END Basic_Clone;
4040 dpurdie 13711
 
1374 dpurdie 13712
/
1373 dpurdie 13713
 
4040 dpurdie 13714
/
13715
--------------------------------------------------------
13716
--  DDL for Procedure BUILD_TREE
13717
--------------------------------------------------------
13718
set define off;
13719
 
3959 dpurdie 13720
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
13721
	   	  		  					     retSessionNum OUT NUMBER ) IS
13722
 
1373 dpurdie 13723
/* ---------------------------------------------------------------------------
3959 dpurdie 13724
    Version: 3.0.0
1373 dpurdie 13725
   --------------------------------------------------------------------------- */
3959 dpurdie 13726
    rowCnt 			NUMBER := 0;						-- Iterations counter
13727
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
13728
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
13729
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
13730
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
13731
    sessionNum 		NUMBER;
13732
	levelNum		NUMBER;
13733
 
13734
BEGIN
13735
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
13736
 
13737
	/*
13738
	||	   Start UP THE TREE
13739
	*/
13740
 
13741
 
13742
	/* Packages with no dependencies */    
13743
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13744
		SELECT sessionNum AS SESSION_NUM,
13745
			   iteration AS LEVEL_NUM,
13746
			   UP_THE_TREE AS DIRECTION,
13747
			   rc.pv_id, pv.pkg_id, pv.v_ext
13748
		  FROM release_content rc,
13749
		  	   package_versions pv
13750
		 WHERE rc.rtag_id = nRtag_id
13751
		   AND rc.pv_id = pv.pv_id
13752
		 MINUS
13753
		SELECT sessionNum AS SESSION_NUM, 
13754
			   iteration AS LEVEL_NUM,
13755
			   UP_THE_TREE AS DIRECTION,
13756
			   dep.pv_id, pv.pkg_id, pv.v_ext
13757
		  FROM package_dependencies dep,
13758
		  	   package_versions pv
13759
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
13760
		   AND dep.pv_id = pv.pv_id;
13761
 
13762
 
13763
	/* Browse UP the build tree */	   
13764
	iteration := iteration + 1;
13765
    LOOP
13766
 
13767
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13768
			SELECT DISTINCT 
13769
			       sessionNum AS SESSION_NUM,
13770
			       iteration AS LEVEL_NUM,
13771
				   UP_THE_TREE AS DIRECTION, 
13772
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13773
			  FROM (  
13774
			        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
13775
			          FROM package_dependencies dep,
13776
			               release_content rc,
13777
						   package_versions pv,
13778
						   package_versions dpv
13779
			         WHERE dep.pv_id = rc.pv_id
13780
			           AND rc.rtag_id = nRtag_id
13781
					   AND dep.pv_id = pv.pv_id
13782
					   AND dep.dpv_id = dpv.pv_id
13783
					) rdep,
13784
					temp_tree_browse ttb
13785
			 WHERE rdep.dpkg_id  = ttb.pkg_id
13786
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
13787
			   AND ttb.SESSION_NUM = sessionNum
13788
			   AND ttb.LEVEL_NUM = iteration - 1	
13789
			MINUS
13790
			/* Packages with all depencencies NOT matched */  
13791
			SELECT DISTINCT 
13792
			       sessionNum AS SESSION_NUM,
13793
			       iteration AS LEVEL_NUM, 
13794
				   UP_THE_TREE AS DIRECTION,
13795
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13796
			  FROM (  
13797
			        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
13798
			          FROM package_dependencies dep,
13799
			               release_content rc,
13800
						   package_versions pv,
13801
						   package_versions dpv
13802
			         WHERE dep.pv_id = rc.pv_id
13803
			           AND rc.rtag_id = nRtag_id
13804
					   AND dep.pv_id = pv.pv_id
13805
					   AND dep.dpv_id = dpv.pv_id
13806
					) rdep,
13807
					(
13808
					 SELECT tb.*
13809
					   FROM temp_tree_browse tb
13810
					  WHERE tb.SESSION_NUM = sessionNum
13811
					) ttb
13812
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
13813
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
13814
			   AND ttb.SESSION_NUM IS NULL;
13815
 
13816
		rowCnt := SQL%ROWCOUNT;
13817
		IF rowCnt > 0 THEN
13818
           iteration := iteration + 1;
13819
		END IF;
13820
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
13821
    END LOOP;
13822
 
13823
	/*---------------------------------------------------------------------------------------------------------------------*/
13824
 
13825
	/*     Check for unresolved dependencies
13826
	||  
13827
	*/
13828
	/* UNRESOLVED */
13829
	 SELECT COUNT(*) INTO rowCnt
13830
	   FROM (
13831
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13832
			  FROM release_content rc,
13833
			  	   package_versions pv
13834
			 WHERE rc.rtag_id = nRtag_id
13835
			   AND rc.pv_id = pv.pv_id	   
13836
			MINUS
13837
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13838
			  FROM temp_tree_browse ttb
13839
			 WHERE ttb.session_num = sessionNum
13840
			);
13841
 
13842
 
13843
 
13844
	 IF rowCnt > 0 
13845
	 THEN
13846
	 	 /*     Circular dependencies detected.
13847
		 ||     Try to resolve build order from the top now.
13848
		 ||		Start DOWN THE TREE
13849
		 */
13850
 
13851
		iteration := 0; 
13852
		 /* Top Level packages */	
13853
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
13854
			SELECT sessionNum AS SESSION_NUM,
13855
			       iteration AS LEVEL_NUM,
13856
				   DOWN_THE_TREE AS DIRECTION,
13857
				   pv.pv_id, pv.pkg_id, pv.v_ext
13858
			  FROM (		   
13859
					/* Packages no one depends on ( Top level packages )*/
13860
					( 
13861
					/* All parents*/ 
13862
					SELECT pv.pkg_id, pv.v_ext
13863
			          FROM package_dependencies dep,
13864
			               release_content rc,
13865
						   package_versions pv
13866
			         WHERE dep.pv_id = rc.pv_id
13867
			           AND rc.rtag_id = nRtag_id
13868
					   AND dep.pv_id = pv.pv_id
13869
					 MINUS
13870
					 /* All children */
13871
					SELECT dpv.pkg_id, dpv.v_ext
13872
			          FROM package_dependencies dep,
13873
			               release_content rc,
13874
						   package_versions dpv
13875
			         WHERE dep.pv_id = rc.pv_id
13876
			           AND rc.rtag_id = nRtag_id
13877
					   AND dep.dpv_id = dpv.pv_id
13878
					 ) 
13879
					 MINUS
13880
					/* Packages with resolved dependencies from UP THE TREE */ 
13881
					SELECT ttb.pkg_id, ttb.v_ext
13882
					  FROM temp_tree_browse ttb
13883
					 WHERE ttb.session_num = sessionNum
13884
				  ) tpkg,
13885
				  package_versions pv,
13886
				  release_content rc
13887
			WHERE rc.rtag_id = nRtag_id
13888
			  AND rc.pv_id = pv.pv_id
13889
			  AND tpkg.pkg_id = pv.pkg_id
13890
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13891
 
13892
 
13893
		 /* Keep taking packages which no one depende on */			  
13894
		 iteration := iteration - 1;  
13895
		 LOOP	  
13896
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13897
					SELECT sessionNum AS SESSION_NUM,
13898
					       iteration AS LEVEL_NUM,
13899
					       DOWN_THE_TREE AS DIRECTION,
13900
					       pv.pv_id, pv.pkg_id, pv.v_ext
13901
					  FROM (		   
13902
					 	/* All Unresolved */
13903
					 	(
13904
					 	SELECT pv.pkg_id, pv.v_ext
13905
					 	  FROM release_content rc,
13906
					 	  	   package_versions pv
13907
					 	 WHERE rc.rtag_id = nRtag_id
13908
					 	   AND rc.pv_id = pv.pv_id	   
13909
					 	MINUS
13910
					 	SELECT ttb.pkg_id, ttb.v_ext
13911
					 	  FROM temp_tree_browse ttb
13912
					 	 WHERE ttb.session_num = sessionNum
13913
					 	)
13914
					 	 MINUS
13915
					 	(  
13916
					 	 /* Children of Unresolved */  
13917
					 	SELECT dpv.pkg_id, dpv.V_EXT
13918
					 	  FROM (
13919
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13920
					 			  FROM release_content rc,
13921
					 			  	   package_versions pv
13922
					 			 WHERE rc.rtag_id = nRtag_id
13923
					 			   AND rc.pv_id = pv.pv_id	   
13924
					 			MINUS
13925
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13926
					 			  FROM temp_tree_browse ttb
13927
					 			 WHERE ttb.session_num = sessionNum
13928
					 		   ) unr,
13929
					 		   package_dependencies dep,
13930
					 		   package_versions dpv
13931
					 	 WHERE unr.pv_id = dep.pv_id
13932
					 	   AND dep.dpv_id = dpv.pv_id
13933
					 	 )  
13934
					   ) tpkg,
13935
					   package_versions pv,
13936
					   release_content rc
13937
					WHERE rc.rtag_id = nRtag_id
13938
					  AND rc.pv_id = pv.pv_id
13939
					  AND tpkg.pkg_id = pv.pkg_id
13940
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13941
 
13942
            rowCnt := SQL%ROWCOUNT;
13943
        	IF rowCnt > 0 THEN
13944
	           iteration := iteration - 1;
13945
			END IF;
13946
            EXIT WHEN (rowCnt < 1);
13947
     	END LOOP;
13948
 
13949
	 END IF;
13950
 
13951
 
13952
	/*---------------------------------------------------------------------------------------------------------------------*/
13953
 
13954
	/* 
13955
	|| 	 Save results from temp table
13956
	*/	
13957
	/* Clean up build_order table */
13958
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
13959
 
13960
	/* Save UP THE TREE */
13961
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13962
		SELECT nRtag_id AS rtag_id,
13963
			   ttb.level_num AS step_num, 
13964
			   ttb.PV_ID
13965
		  FROM temp_tree_browse ttb
13966
		 WHERE ttb.session_num = sessionNum
13967
		   AND ttb.direction = UP_THE_TREE;	
13968
 
13969
	/*Get last step_num */
13970
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
13971
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
13972
 
13973
	/* UNRESOLVED */
13974
	 SELECT COUNT(*) INTO rowCnt
13975
	   FROM (
13976
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13977
			  FROM release_content rc,
13978
			  	   package_versions pv
13979
			 WHERE rc.rtag_id = nRtag_id
13980
			   AND rc.pv_id = pv.pv_id	   
13981
			MINUS
13982
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13983
			  FROM temp_tree_browse ttb
13984
			 WHERE ttb.session_num = sessionNum
13985
			);
13986
 
13987
 
13988
	IF rowCnt > 0
13989
	THEN
13990
		/* Save unresolved packages */
13991
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
13992
		    SELECT  nRtag_id AS rtag_id,
13993
				    levelNum AS step_num, 
13994
				    upv.PV_ID,
13995
					'Y' AS UNRESOLVED
13996
			   FROM (
13997
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13998
					  FROM release_content rc,
13999
					  	   package_versions pv
14000
					 WHERE rc.rtag_id = nRtag_id
14001
					   AND rc.pv_id = pv.pv_id	   
14002
					MINUS
14003
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
14004
					  FROM temp_tree_browse ttb
14005
					 WHERE ttb.session_num = sessionNum
14006
					) upv;
14007
	END IF;	
14008
 
14009
	/* Save DOWN THE TREE */
14010
	levelNum := 1000;
14011
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
14012
		SELECT nRtag_id AS rtag_id,
14013
			   levelNum + ttb.level_num  AS step_num, 
14014
			   ttb.PV_ID
14015
		  FROM temp_tree_browse ttb
14016
		 WHERE ttb.session_num = sessionNum
14017
		   AND ttb.direction = DOWN_THE_TREE;
14018
 
14019
 
14020
	/*---------------------------------------------------------------------------------------------------------------------*/
14021
 
14022
	/* Clean up temp table */
14023
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
14024
 
14025
	retSessionNum := sessionNum;
14026
END Build_Tree;
4040 dpurdie 14027
 
3959 dpurdie 14028
/
1373 dpurdie 14029
 
4040 dpurdie 14030
/
14031
--------------------------------------------------------
14032
--  DDL for Procedure CHANGE_PACKAGE_STATE
14033
--------------------------------------------------------
14034
set define off;
14035
 
3959 dpurdie 14036
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14037
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
14038
/* ---------------------------------------------------------------------------
14039
    Version: 4.0
14040
   --------------------------------------------------------------------------- */
1373 dpurdie 14041
 
14042
BEGIN
14043
 
3959 dpurdie 14044
    -- Unlock Package
14045
    UPDATE RELEASE_CONTENT rc SET
14046
    	rc.PKG_STATE = 0
14047
    WHERE rc.PV_ID = nPvId
14048
	AND rc.RTAG_ID = nRtagId;
1373 dpurdie 14049
 
3959 dpurdie 14050
    /* LOG ACTION */
14051
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
1373 dpurdie 14052
 
3959 dpurdie 14053
END Change_Package_State;
4040 dpurdie 14054
 
1374 dpurdie 14055
/
1373 dpurdie 14056
 
4040 dpurdie 14057
/
14058
--------------------------------------------------------
14059
--  DDL for Procedure CHANGE_RELEASE_MODE
14060
--------------------------------------------------------
14061
set define off;
14062
 
3959 dpurdie 14063
  CREATE OR REPLACE PROCEDURE "CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
14064
/* ---------------------------------------------------------------------------
14065
    Version: 3.0.0
14066
   --------------------------------------------------------------------------- */
1373 dpurdie 14067
 
3959 dpurdie 14068
	cMode CHAR(1) := NULL;  
14069
	nProjId NUMBER; 
1373 dpurdie 14070
 
14071
BEGIN
3959 dpurdie 14072
 
1373 dpurdie 14073
 
3959 dpurdie 14074
	/*
14075
	Author: Rupesh Solanki
14076
	Modified: 24th October 2006
14077
	Reason: Added the archive mode state into Release Manager 
14078
	||	1 - Open Mode
14079
	||	2 - Restrictive Mode
14080
	||	3 - Closed Mode
14081
	||	4 - CCB Mode
14082
	||	5 - Archive Mode
14083
	*/	
14084
	-- Get project Id
14085
	SELECT rt.PROJ_ID INTO nProjId
14086
	  FROM RELEASE_TAGS rt
14087
	 WHERE rt.RTAG_ID = nRtagId; 
14088
 
14089
	IF nModeCode = 1 THEN
14090
		-- Open Mode
14091
		cMode := 'N';
14092
 
14093
		/* LOG ACTION */
14094
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
14095
 
14096
	ELSIF nModeCode = 2 THEN
14097
		-- Restrictive Mode
14098
		cMode := 'R';
14099
 
14100
		/* LOG ACTION */
14101
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
14102
 
14103
	ELSIF nModeCode = 3 THEN
14104
		-- Closed Mode
14105
		cMode := 'Y';
14106
 
14107
		/* LOG ACTION */
14108
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
1373 dpurdie 14109
 
3959 dpurdie 14110
	ELSIF nModeCode = 4 THEN
14111
		-- CCB Mode
14112
		cMode := 'C';
14113
 
14114
		/* LOG ACTION */
14115
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
14116
 
14117
	ELSIF nModeCode = 5 THEN
14118
		-- Archive Mode
14119
		cMode := 'A';
14120
 
14121
		/* LOG ACTION */
14122
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
14123
 
14124
 
14125
	END IF;
14126
 
14127
 
14128
 
14129
	-- Now update table
14130
	IF NOT cMode IS NULL THEN
14131
		UPDATE RELEASE_TAGS rt SET
4211 dpurdie 14132
		rt.OFFICIAL = cMode,
14133
    rt.OFFICIAL_STAMP = ORA_SYSDATETIME,
14134
    rt.OFFICIAL_ID = UserId
3959 dpurdie 14135
		WHERE rt.RTAG_ID = nRtagId;
14136
 
14137
	END IF;
1373 dpurdie 14138
 
14139
 
3959 dpurdie 14140
END CHANGE_RELEASE_MODE;
4040 dpurdie 14141
 
1374 dpurdie 14142
/
1373 dpurdie 14143
 
4040 dpurdie 14144
/
14145
--------------------------------------------------------
14146
--  DDL for Procedure CHECK_NEW_PATCHES
14147
--------------------------------------------------------
14148
set define off;
14149
 
3959 dpurdie 14150
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
14151
   nrtagid   IN   release_content.rtag_id%TYPE
1373 dpurdie 14152
)
14153
IS
14154
/* ---------------------------------------------------------------------------
3959 dpurdie 14155
    Version: 3.0
1373 dpurdie 14156
   --------------------------------------------------------------------------- */
14157
BEGIN
3959 dpurdie 14158
   /*--------------- Business Rules Here -------------------*/
14159
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
14160
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
14161
   END IF
14162
 
14163
   /*-------------------------------------------------------*/
14164
   UPDATE release_content rc
14165
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
14166
    WHERE rc.pv_id IN (
14167
             SELECT prod.pv_id
14168
               FROM (SELECT   pp.pv_id AS orig_parent_id,
14169
                              COUNT (*) AS num_of_patches
14170
                         FROM release_content rc, package_patches pp
14171
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
14172
                     GROUP BY pp.pv_id) orig,
14173
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
14174
                              COUNT (*) AS num_of_patches
14175
                         FROM release_content rc,
14176
                              package_patches pp,
14177
                              package_dependencies dep,
14178
                              package_versions pv,
14179
                              package_patches prodpp
14180
                        WHERE rc.pv_id = pp.pv_id
14181
                          AND rc.rtag_id = nrtagid
14182
                          AND pp.patch_id = dep.dpv_id
14183
                          AND dep.pv_id = pv.pv_id
14184
                          AND pv.is_patch = 'Y'
14185
                          AND pv.dlocked = 'Y'
14186
                          AND prodpp.patch_id = dep.pv_id
14187
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
14188
                    release_content rc
14189
              WHERE orig.orig_parent_id = prod.pv_id
14190
                AND orig.num_of_patches != prod.num_of_patches
14191
                AND rc.rtag_id = nrtagid
14192
                AND rc.pv_id = prod.pv_id
14193
                AND rc.pkg_state = 0
14194
             UNION
14195
             SELECT   prodpp.pv_id
14196
                 FROM release_content rc,
14197
                      package_patches pp,
14198
                      package_dependencies dep,
1373 dpurdie 14199
                      package_versions pv,
3959 dpurdie 14200
                      package_patches prodpp
14201
                WHERE rc.pv_id = pp.pv_id
14202
                  AND rc.rtag_id = nrtagid
14203
                  AND pp.patch_id = dep.dpv_id
1373 dpurdie 14204
                  AND dep.pv_id = pv.pv_id
3959 dpurdie 14205
                  AND pv.is_patch = 'Y'
14206
                  AND pv.dlocked = 'Y'
14207
                  AND prodpp.patch_id = dep.pv_id
14208
             GROUP BY prodpp.pv_id, pp.pv_id
14209
             MINUS
14210
             SELECT   pp.pv_id
14211
                 FROM release_content rc, package_patches pp
14212
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
14213
             GROUP BY pp.pv_id);
14214
END check_new_patches;
4040 dpurdie 14215
 
1374 dpurdie 14216
/
1373 dpurdie 14217
 
4040 dpurdie 14218
/
14219
--------------------------------------------------------
14220
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
14221
--------------------------------------------------------
14222
set define off;
14223
 
3959 dpurdie 14224
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
14225
IS
14226
/******************************************************************************
14227
   NAME:       clean_advisory_ripple
1373 dpurdie 14228
 
3959 dpurdie 14229
   PURPOSE:    To delete entries from the advisory_ripple table based upon
14230
               an RTAG_ID only
1373 dpurdie 14231
 
3959 dpurdie 14232
               This is a tidy-up operation performed against the advisory_ripple
14233
               table, ensuring that the table does not have rtag_id/pv_id
14234
               combinations that cannot be found in the release's wip/pending/release
14235
               tabs.
14236
 
14237
******************************************************************************/
1373 dpurdie 14238
BEGIN
3959 dpurdie 14239
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
14240
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
14241
   -- work_in_progress, planned, or release_content table.
14242
   -- NOTE: Planned operations that represent pending additive/subtractive merge
14243
   -- operations are ignored because they have not been approved yet and so
14244
   -- cannot be said to be "in the release".
14245
   DELETE FROM advisory_ripple
14246
         WHERE rtag_id = nrtagid
14247
           AND pv_id not in
14248
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
14249
                 UNION
14250
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
14251
                 UNION
14252
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
14253
               );
14254
END clean_advisory_ripple;
4040 dpurdie 14255
 
3959 dpurdie 14256
/
1373 dpurdie 14257
 
4040 dpurdie 14258
/
14259
--------------------------------------------------------
14260
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
14261
--------------------------------------------------------
14262
set define off;
14263
 
3959 dpurdie 14264
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
14265
IS
14266
/******************************************************************************
14267
   NAME:       clean_do_not_ripple
1373 dpurdie 14268
 
3959 dpurdie 14269
   PURPOSE:    To delete entries from the do_not_ripple table based upon
14270
               an RTAG_ID only
14271
 
14272
               This is a tidy-up operation performed against the do_not_ripple
14273
               table, ensuring that the table does not have rtag_id/pv_id
14274
               combinations that cannot be found in the release's wip/pending/release
14275
               tabs.
14276
 
14277
******************************************************************************/
14278
BEGIN
14279
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
14280
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
14281
   -- work_in_progress, planned, or release_content table.
14282
   -- NOTE: Planned operations that represent pending additive/subtractive merge
14283
   -- operations are ignored because they have not been approved yet and so
14284
   -- cannot be said to be "in the release".
14285
   DELETE FROM do_not_ripple
14286
         WHERE rtag_id = nrtagid
14287
           AND pv_id not in
14288
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
14289
                 UNION
14290
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
14291
                 UNION
14292
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
14293
               );
14294
END clean_do_not_ripple;
4040 dpurdie 14295
 
1374 dpurdie 14296
/
1373 dpurdie 14297
 
4040 dpurdie 14298
/
14299
--------------------------------------------------------
14300
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
14301
--------------------------------------------------------
14302
set define off;
14303
 
3959 dpurdie 14304
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14305
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
14306
											 nUserId IN NUMBER ) IS
1373 dpurdie 14307
/* ---------------------------------------------------------------------------
3959 dpurdie 14308
    Version: 4.0
1373 dpurdie 14309
   --------------------------------------------------------------------------- */
14310
 
14311
BEGIN
14312
 
3959 dpurdie 14313
    -- Clear Advisory Ripple Package
14314
    DELETE FROM ADVISORY_RIPPLE
14315
	WHERE PV_ID = nPvId
14316
	AND RTAG_ID = nRtagId;
1373 dpurdie 14317
 
3959 dpurdie 14318
    /* LOG ACTION */
14319
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
14320
 
14321
	/*Rebuild_Environment(nRtagId);*/
1373 dpurdie 14322
 
3959 dpurdie 14323
END Clear_Advisory_Ripple;
4040 dpurdie 14324
 
1374 dpurdie 14325
/
1373 dpurdie 14326
 
4040 dpurdie 14327
/
14328
--------------------------------------------------------
14329
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
14330
--------------------------------------------------------
14331
set define off;
14332
 
3959 dpurdie 14333
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
14334
IS
1373 dpurdie 14335
 
3959 dpurdie 14336
proc_id NUMBER;
1373 dpurdie 14337
/******************************************************************************
3959 dpurdie 14338
   NAME:       DELETE_DO_NOT_RIPPLE
14339
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
14340
               IS RELEASED
1373 dpurdie 14341
 
14342
   REVISIONS:
14343
   Ver        Date        Author           Description
14344
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14345
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 14346
 
14347
   NOTES:
14348
 
14349
   Automatically available Auto Replace Keywords:
3959 dpurdie 14350
      Object Name:     DELETE_DO_NOT_RIPPLE
14351
      Sysdate:         21/04/2006
14352
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
1373 dpurdie 14353
      Username:         (set in TOAD Options, Procedure Editor)
14354
      Table Name:       (set in the "New PL/SQL Object" dialog)
14355
 
14356
******************************************************************************/
3959 dpurdie 14357
   CURSOR ripple_cur
14358
   IS
14359
      select distinct proc_id, prod_id from deployment_manager.processes_config;
14360
 
14361
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 14362
BEGIN
3959 dpurdie 14363
   OPEN ripple_cur;
1373 dpurdie 14364
 
3959 dpurdie 14365
   FETCH ripple_cur
14366
    INTO ripple_rec;
1373 dpurdie 14367
 
3959 dpurdie 14368
   WHILE ripple_cur%FOUND
14369
   LOOP
14370
 
1373 dpurdie 14371
 
3959 dpurdie 14372
 
14373
insert into package_processes (PROC_ID, PV_ID) 
14374
values( ripple_rec.proc_id, ripple_rec.prod_id);
14375
 
14376
      FETCH ripple_cur
14377
       INTO ripple_rec;
14378
   END LOOP;
14379
END CLONED_PACKAGE_PROCESSES;
4040 dpurdie 14380
 
1374 dpurdie 14381
/
1373 dpurdie 14382
 
4040 dpurdie 14383
/
14384
--------------------------------------------------------
14385
--  DDL for Procedure CLONED_PROCESSES
14386
--------------------------------------------------------
14387
set define off;
14388
 
3959 dpurdie 14389
  CREATE OR REPLACE PROCEDURE "CLONED_PROCESSES" 
14390
IS
14391
 
14392
proc_id NUMBER;
14393
/******************************************************************************
14394
   NAME:       DELETE_DO_NOT_RIPPLE
14395
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
14396
               IS RELEASED
14397
 
14398
   REVISIONS:
14399
   Ver        Date        Author           Description
14400
   ---------  ----------  ---------------  ------------------------------------
14401
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
14402
 
14403
   NOTES:
14404
 
14405
   Automatically available Auto Replace Keywords:
14406
      Object Name:     DELETE_DO_NOT_RIPPLE
14407
      Sysdate:         21/04/2006
14408
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
14409
      Username:         (set in TOAD Options, Procedure Editor)
14410
      Table Name:       (set in the "New PL/SQL Object" dialog)
14411
 
14412
******************************************************************************/
14413
   CURSOR ripple_cur
14414
   IS
14415
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
14416
 
14417
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 14418
BEGIN
3959 dpurdie 14419
   OPEN ripple_cur;
1373 dpurdie 14420
 
3959 dpurdie 14421
   FETCH ripple_cur
14422
    INTO ripple_rec;
1373 dpurdie 14423
 
3959 dpurdie 14424
   WHILE ripple_cur%FOUND
14425
   LOOP
14426
 
14427
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
14428
 
14429
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
14430
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 14431
 
3959 dpurdie 14432
      FETCH ripple_cur
14433
       INTO ripple_rec;
14434
   END LOOP;
14435
END CLONED_PROCESSES;
4040 dpurdie 14436
 
1374 dpurdie 14437
/
1373 dpurdie 14438
 
4040 dpurdie 14439
/
14440
--------------------------------------------------------
14441
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
14442
--------------------------------------------------------
14443
set define off;
14444
 
3959 dpurdie 14445
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
14446
IS
1373 dpurdie 14447
/******************************************************************************
3959 dpurdie 14448
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
14449
   PURPOSE:
1373 dpurdie 14450
 
14451
   REVISIONS:
3959 dpurdie 14452
   Ver        Date        Author           Description
1373 dpurdie 14453
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14454
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
1373 dpurdie 14455
 
14456
   NOTES:
14457
 
14458
   Automatically available Auto Replace Keywords:
3959 dpurdie 14459
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
14460
      Sysdate:         2/06/2006
14461
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
1373 dpurdie 14462
      Username:         (set in TOAD Options, Procedure Editor)
14463
      Table Name:       (set in the "New PL/SQL Object" dialog)
14464
 
14465
******************************************************************************/
14466
BEGIN
3959 dpurdie 14467
   DELETE FROM autobuild_failure
14468
         WHERE group_email_id NOT IN (SELECT group_email_id
14469
                                        FROM members_group);
14470
END delete_autobuild_failure_info;
4040 dpurdie 14471
 
1374 dpurdie 14472
/
1373 dpurdie 14473
 
4040 dpurdie 14474
/
14475
--------------------------------------------------------
14476
--  DDL for Procedure DEPLOY_TO_RELEASE
14477
--------------------------------------------------------
14478
set define off;
14479
 
1373 dpurdie 14480
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
14481
 
14482
/******************************************************************************
14483
 
14484
 
14485
******************************************************************************/
14486
 
14487
	CURSOR curInfo IS
14488
    SELECT DISTINCT
14489
        qry.DPV_ID
14490
     FROM (
14491
             SELECT dep.*,
14492
                    LEVEL AS LEVEL_NUM
14493
               FROM PACKAGE_DEPENDENCIES dep
14494
             START WITH dep.PV_ID IN ( 
14495
 
4308 dpurdie 14496
                        69124,63479,60048,49566,49562,54351,63560,54360,46053,59753,97060,97061,100883,78236,75241,92371,92372,105682,135506,127204,135615,136498,137571,61534,76540,96787,133102,96770,96771,116692,133768,61537,88935,110216,96797,69469,98123,111626,96802,100289,97233,97623,135801,69700,77808,43026,77809,43027,100825,126854,105589,96405,102105,133770,134408,91177,91179,96822,96824,48031,78965,78936,78935,79114,76620,125164,61804,96826,61977,67592,72594,134415,135804,65097,64850,64851,64879,64881,64882,64884,67612,67613,67614,67615,68501,68502,68503,68516,68518,68519,68521,71974,68659,69764,68662,68661,68757,69765,69766,69767,71975,71976,71977,71978,71979,71980,75149,71982,71983,75153,75158,71986,75160,75161,75162,72418,72419,71987,71988,71990,75164,72420,72421,72423,72424,72425,75165,75181,75182,83285,75184,75201,75220,75240,75260,75280,75242,76320,75320,76340,76321,82031,76341,76342,76344,76345,76806,76350,76810,76811,76360,76361,76362,76380,76637,76638,76639,76647,76649,76812,76650,78261,76815,77603,76818,76846,76847,76848,76849,77604,77606,77016,77607,77608,77609,78518,77671,77610,78519,78520,78205,78206,77795,78262,78263,78666,78521,78669,78767,78768,78770,78771,82032,79471,78772,82033,80856,80210,80898,82449,80211,80212,80214,80215,80216,80611,80217,82034,82035,80749,80750,82036,94266,82037,82038,82039,82040,82041,82042,82043,82044,82045,82046,82450,82296,82297,82451,82047,82298,82299,82300,82452,82453,82454,82455,82456,82457,82769,82458,82459,82770,82460,82461,82771,83286,85069,83543,83544,83287,85070,84959,85071,85072,84960,85073,85074,84975,85194,85075,85195,85196,85197,85198,85199,94267,85231,85237,94268,94269,94270,94271,94273,94274,94275,94276,94277,94278,94279,94280,94281,94282,94283,94284,94285,94286,94287,94288,94289,94290,94291,94292,94293,94294,94295,94296,94297,94298,94299,94300,94301,94302,94303,94304,94305,94306,94307,94308,94309,94310,94311,94312,94313,94314,94315,94316,94634,94317,94635,97035,94319,94320,94636,94637,94322,96536,96552,96554,96555,96556,96568,96569,96570,96571,96572,96573,96574,96575,96576,96577,96578,96579,96580,96581,96582,96583,96584,96585,96586,96818,97435,96819,96820,97599,97436,97437,97438,97439,97440,97434,97723,97640,97641,97642,97724,97725,97729,97743,97825,98097,98098,98099,98100,97999,98049,98101,98102,98103,99506,98268,98207,99507,99508,99509,99159,99510,99511,99512,102883,99513,99514,100243,99515,99880,99562,99563,99676,99677,99678,99881,99882,99883,99884,100244,100245,100623,100247,100624,100625,100626,100885,100719,100886,100887,100888,100889,100890,100990,100991,101301,101603,110065,101605,102180,102627,102181,102182,102183,102184,102185,102186,102187,102188,102189,102190,102191,104378,102192,104379,102193,102379,102380,102381,102884,102410,102411,102628,102465,102629,102630,102885,102886,102887,104380,104381,104382,104383,104384,104385,104387,110063,104389,106409,104561,104594,104660,105088,105089,105090,105091,105093,105097,105673,105768,106410,109314,106173,110064,137890,106433,106960,109080,111665,122015,110954,116763,110066,116764,110123,111867,110713,116765,111666,116869,111667,111668,116766,116767,115142,115143,121477,113924,114594,116768,115144,116769,115170,115172,115171,115644,120042,120043,116092,116870,116871,118382,116872,116876,120044,118026,119364,121485,120045,120416,121478,120417,122016,124577,129495,123602,123600,124578,124579,124580,124581,124784,125238,127096,127097,129496,129497,128036,128415,129498,129499,129914,130063,130064,130680,130681,131333,131488,133886,132219,132477,132478,133887,136537,136552,136538,136539,136540,136553,136554,136555,137869,85076,80857,62418,64889,64890,64891,64893,68666,68667,68668,68670,68671,68672,68673,72019,72020,72023,72024,72227,77745,77746,77747,77748,77749,77750,77751,77798,78773,80751,82464,82465,83288,92874,92875,92876,92877,92878,94122,94123,96290,96882,96883,97554,97514,97726,98008,98009,98051,99193,100248,99608,100249,100250,100670,100671,100672,101059,101061,101607,102194,102195,102412,102413,102633,104390,104391,106421,104560,104595,105767,106174,106426,109081,122017,137851,110712,116873,115145,115146,114597,115645,116095,120046,123551,122018,124584,124585,129500,129501,129502,128417,129503,129915,130066,131487,133897,133882,133883,136559,85078,100673,63475,78264,78265,78266,78267,78775,80753,94118,94119,94120,94121,96888,100251,100252,102631,102590,102632,65229,43366,69139,132551,59764,127129,101196,96830,61535,105433,96833,96835,96839,83795,77723,126868,99146,70188,117523,117524,117525,99237,100854,100855,137314,137315,96868,138232,138233,69709,96907,130854,119208,69520,124772,96878,60049,47875,70354,59371,54558,59849,33893,43087,43134,33894,60054,24345,49563,49558,97474,84982,31770,30950,49926,60050,52670,59846,59891,30966,59744,61988,59745,59881,59746,59741,47449,59747,64101,63480,63562,105382,105383,60052,48955,49561,49556,47401,65896,65906,65909,65985,108670,68697,68698,59754,59752,59751,62526,59805,59799,66981,46050,59756,46044,59806,46051,59807,82290,66980,59808,46046,61536,88834,70260,111081,105409,66093,66095,66094,47440,65778,59750,56748,99152,78409
1373 dpurdie 14497
 
14498
                        ) 
14499
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
14500
 		) qry,
14501
 		PACKAGES pkg,
14502
		PACKAGE_VERSIONS pv
14503
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
14504
         and (pv.is_patch is null or pv.is_patch = 'N');
14505
    recInfo curInfo%ROWTYPE;
14506
 
14507
 
14508
BEGIN
14509
 
14510
	OPEN curInfo;
14511
    FETCH curInfo INTO recInfo;
14512
 
14513
	WHILE curInfo%FOUND
14514
	LOOP
14515
 
14516
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14517
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
14518
 
14519
    FETCH curInfo INTO recInfo;
14520
 
14521
	END LOOP;
14522
 
14523
	CLOSE curInfo;
14524
 
14525
 
14526
 
14527
 
14528
END DEPLOY_TO_RELEASE; 
4040 dpurdie 14529
 
1374 dpurdie 14530
/
1373 dpurdie 14531
 
4040 dpurdie 14532
/
14533
--------------------------------------------------------
14534
--  DDL for Procedure DEPRECATE_PACKAGE
14535
--------------------------------------------------------
14536
set define off;
14537
 
3959 dpurdie 14538
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14539
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
14540
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
14541
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
14542
											   nUserId IN NUMBER) IS
14543
ext VARCHAR2(50);
1373 dpurdie 14544
 
14545
 
14546
 
3959 dpurdie 14547
 
1373 dpurdie 14548
BEGIN
14549
 
3959 dpurdie 14550
	--Extract the package version extension
14551
	SELECT V_EXT into ext
14552
	FROM PACKAGE_VERSIONS
14553
	WHERE PV_ID = nPvId; 
14554
 
14555
    -- Deprecate Package
14556
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
14557
	VALUES (nRtagId, nPkgId, sComments, ext);
14558
 
14559
	IF ext IS NOT NULL THEN
14560
	   UPDATE RELEASE_CONTENT 
14561
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
14562
	   WHERE RTAG_ID = nRtagId
14563
	   AND PV_ID IN (SELECT PV.PV_ID 
14564
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
14565
				  	WHERE PKG.PKG_ID = PV.PKG_ID
14566
				  	AND PV.V_EXT = ext
14567
				  	AND PKG.PKG_ID = nPkgId
14568
				 	);						
14569
	ELSE
14570
	   UPDATE RELEASE_CONTENT 
14571
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
14572
	   WHERE RTAG_ID = nRtagId
14573
	   AND PV_ID IN (SELECT PV.PV_ID 
14574
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
14575
				  	WHERE PKG.PKG_ID = PV.PKG_ID
14576
				  	AND PV.V_EXT IS NULL
14577
				  	AND PKG.PKG_ID = nPkgId
14578
				 	);
14579
	END IF;
14580
 
14581
	UPDATE RELEASE_CONTENT
14582
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
14583
	WHERE RTAG_ID = nRtagId
14584
	AND PV_ID IN (		   SELECT DISTINCT
14585
 	 		  	 		   qry.PV_ID
14586
						        FROM (
14587
								 	  SELECT dep.*,
14588
									  LEVEL AS LEVEL_NUM
14589
									  FROM PACKAGE_DEPENDENCIES dep 
14590
 								START WITH dep.DPV_ID IN ( nPvId ) 
14591
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
14592
 								) qry,
14593
								PACKAGES pkg,
14594
								PACKAGE_VERSIONS pv,
14595
								RELEASE_CONTENT rc
14596
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
14597
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
14598
							 AND rc.DEPRECATED_STATE IS NULL
14599
				 );			 
1373 dpurdie 14600
 
14601
    /* LOG ACTION */
3959 dpurdie 14602
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
14603
 
1373 dpurdie 14604
 
3959 dpurdie 14605
END Deprecate_Package;
4040 dpurdie 14606
 
1374 dpurdie 14607
/
1373 dpurdie 14608
 
4040 dpurdie 14609
/
14610
--------------------------------------------------------
14611
--  DDL for Procedure DT_DROPUSEROBJECTBYID
14612
--------------------------------------------------------
14613
set define off;
14614
 
1373 dpurdie 14615
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4040 dpurdie 14616
 
1374 dpurdie 14617
/
1373 dpurdie 14618
 
4040 dpurdie 14619
/
14620
--------------------------------------------------------
14621
--  DDL for Procedure DT_SETPROPERTYBYID
14622
--------------------------------------------------------
14623
set define off;
14624
 
3959 dpurdie 14625
  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 14626
 
3959 dpurdie 14627
/
14628
 
4040 dpurdie 14629
/
14630
--------------------------------------------------------
14631
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
14632
--------------------------------------------------------
14633
set define off;
14634
 
3959 dpurdie 14635
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
14636
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
14637
                                                         sIgnoreIdList IN VARCHAR2,
14638
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
14639
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
14640
/* ---------------------------------------------------------------------------
14641
    Updates the ignore warnings table - this is really two functions in one.
14642
 
14643
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
14644
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
14645
       the ignore warnings checkboxes and submits the form.
14646
       This can (at time of writing this) only be done within releases that are not build
14647
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
14648
       of in an ideal world.
14649
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
14650
       do so in this stored procedure, thereby making this stored procedure much more precise in
14651
       that it only updates the ignore_warnings table (action log table too although that is just
14652
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
14653
       about website presentation layer states, etc.
14654
 
14655
    2) The other function updates the table for out of sync dependencies that have in fact
14656
       been satisfied by patches made to some other product in the release.
14657
       This seems to be a seldom used feature in current projects.
14658
       It is probably the most often taken path through this function given that it occurs when
14659
       this function is called from Rebuild_Environment, and that is called in many circumstances
14660
       from the RM website whenever the seems to be a possibility that the state of a package
14661
       in a release might have changed and therefore affects the state of other packages in
14662
       that same release.
14663
 
14664
    Parameter Usage:
14665
                        when called from    | when called from
14666
                        Rebuild_Environment | SetIgnoreWarnings()
14667
                        stored procedure.   | in the Website
14668
      --------------------------------------+----------------------------
14669
      nRtagId           RTAG_ID             | RTAG_ID
14670
      nPvId             NULL                | PV_ID
14671
      sIgnoreIdList     NULL                | list of dependent PV_ID's
14672
      bDoPatchIgnore    TRUE                | FALSE
14673
      nUserId           NULL                | current user ID
14674
   --------------------------------------------------------------------------- */
14675
 
14676
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
14677
ReleaseLocation VARCHAR2(4000);
14678
ActionTypeId NUMBER;
14679
 
1373 dpurdie 14680
BEGIN
14681
 
3959 dpurdie 14682
   IF (NOT bDoPatchIgnore) THEN
14683
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
14684
      */
14685
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
1373 dpurdie 14686
 
14687
 
3959 dpurdie 14688
      /* Log Action */
14689
      -- Get Release Location
14690
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14691
        FROM PROJECTS proj,
14692
             RELEASE_TAGS rt
14693
       WHERE rt.PROJ_ID = proj.PROJ_ID
14694
         AND rt.RTAG_ID = nRtagId;
1373 dpurdie 14695
 
3959 dpurdie 14696
      -- Get Action Type Id for IGNORE_ON
14697
      SELECT act.ACTTYPE_ID INTO ActionTypeId
14698
        FROM ACTION_TYPE act
14699
       WHERE act.NAME = 'ignore_on';
14700
 
14701
      -- Get Ignored (Current MINUS Old)
14702
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14703
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
14704
        FROM (
14705
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
14706
                FROM PACKAGE_VERSIONS pv
14707
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
14708
              MINUS
14709
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
14710
                FROM IGNORE_WARNINGS igw
14711
               WHERE igw.RTAG_ID = nRtagId
14712
                 AND igw.PV_ID = nPvId
14713
             ) qry,
14714
             PACKAGE_VERSIONS pv,
14715
             PACKAGES pkg,
14716
             RELEASE_CONTENT rc,
14717
             PACKAGE_VERSIONS rpv
14718
       WHERE pv.PKG_ID = pkg.PKG_ID
14719
         AND rc.RTAG_ID = nRtagId
14720
         AND rc.PV_ID = rpv.PV_ID
14721
         AND rpv.PKG_ID = pv.PKG_ID
14722
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
14723
         AND qry.DPV_ID = pv.PV_ID;
14724
 
14725
 
14726
      -- Get Action Type Id for IGNORE_OFF
14727
      SELECT act.ACTTYPE_ID INTO ActionTypeId
14728
        FROM ACTION_TYPE act
14729
       WHERE act.NAME = 'ignore_off';
14730
 
14731
      -- Get UnIgnored (Old MINUS Current)
14732
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14733
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
14734
        FROM (
14735
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
14736
                FROM IGNORE_WARNINGS igw
14737
               WHERE igw.RTAG_ID = nRtagId
14738
                 AND igw.PV_ID = nPvId
14739
              MINUS
14740
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
14741
                FROM PACKAGE_VERSIONS pv
14742
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
14743
             ) qry,
14744
             PACKAGE_VERSIONS pv,
14745
             PACKAGES pkg,
14746
             RELEASE_CONTENT rc,
14747
             PACKAGE_VERSIONS rpv
14748
       WHERE pv.PKG_ID = pkg.PKG_ID
14749
         AND rc.RTAG_ID = nRtagId
14750
         AND rc.PV_ID = rpv.PV_ID
14751
         AND rpv.PKG_ID = pv.PKG_ID
14752
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
14753
         AND qry.DPV_ID = pv.PV_ID;
14754
 
14755
 
14756
      -- Delete Current Ignore Warnings
14757
      DELETE
14758
        FROM IGNORE_WARNINGS igw
14759
       WHERE igw.RTAG_ID = nRtagId
14760
         AND igw.PV_ID = nPvId
14761
         AND igw.IS_PATCH_IGNORE IS NULL;
14762
 
14763
 
14764
      IF (oIgnoreIdCollector.COUNT > 0) THEN
14765
         -- Insert Ignore Warnings
14766
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
14767
         SELECT nRtagId,
14768
                nPvId,
14769
                pv.PV_ID AS DPV_ID
14770
           FROM PACKAGE_VERSIONS pv
14771
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
14772
      END IF;
14773
 
14774
   ELSE
14775
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
14776
 
14777
      -- Delete Current Patch Ignore Warnings
14778
      DELETE
14779
        FROM IGNORE_WARNINGS igw
14780
       WHERE igw.RTAG_ID = nRtagId
14781
         AND igw.IS_PATCH_IGNORE = 'Y';
14782
 
14783
 
14784
      -- Delete Manual Ignores that need to be Patch Ignores
14785
      DELETE
14786
        FROM IGNORE_WARNINGS igw
14787
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
14788
             (
14789
              SELECT DISTINCT
14790
                     nRtagId,
14791
                     err.PV_ID,
14792
                     err.ERR_DPV AS DPV_ID
14793
               FROM  (
14794
                      /* Full Release Contents used for reference*/
14795
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14796
                        FROM release_content rel, package_versions rpv
14797
                       WHERE rel.pv_id = rpv.pv_id
14798
                         AND rtag_id = nRtagId
14799
                     ) frc,
14800
                     (
14801
                      /* DPV_IDs not fount in release*/
14802
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
14803
                        FROM package_dependencies dep
14804
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14805
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14806
                     ) err,
14807
                     (
14808
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14809
                        FROM PACKAGE_PATCHES pp,
14810
                             PACKAGE_DEPENDENCIES dep,
14811
                             RELEASE_CONTENT rc
14812
                       WHERE rc.RTAG_ID = nRtagId
14813
                         AND rc.PV_ID = pp.PV_ID
14814
                         AND dep.PV_ID = pp.PATCH_ID
14815
                     ) pp,
14816
                     package_versions errpkg,
14817
                     package_versions errpv
14818
               WHERE err.err_dpv = errpv.pv_id
14819
                 AND errpv.pkg_id = frc.pkg_id(+)
14820
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14821
                 AND err.pv_id = errpkg.pv_id
14822
                 AND err.PV_ID = pp.PV_ID
14823
                 AND frc.PV_ID = pp.DPV_ID
14824
             );
14825
 
14826
      /*
14827
      ---------------------------------------------------
14828
      --  Make sure that select statement above and below are same
14829
      ---------------------------------------------------
14830
      */
14831
 
14832
      -- Insert Patch Ignores
14833
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
14834
      SELECT DISTINCT
14835
             nRtagId,
14836
             err.PV_ID,
14837
             err.ERR_DPV AS DPV_ID,
14838
             'Y'
14839
        FROM (
14840
              /* Full Release Contents used for reference*/
14841
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14842
                FROM release_content rel, package_versions rpv
14843
               WHERE rel.pv_id = rpv.pv_id
14844
                 AND rtag_id = nRtagId
14845
             ) frc,
14846
             (
14847
               /* DPV_IDs not fount in release*/
14848
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
14849
                 FROM package_dependencies dep
14850
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14851
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14852
             ) err,
14853
             (
14854
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14855
                FROM PACKAGE_PATCHES pp,
14856
                     PACKAGE_DEPENDENCIES dep,
14857
                     RELEASE_CONTENT rc
14858
               WHERE rc.RTAG_ID = nRtagId
14859
                 AND rc.PV_ID = pp.PV_ID
14860
                 AND dep.PV_ID = pp.PATCH_ID
14861
             ) pp,
14862
             package_versions errpkg,
14863
             package_versions errpv
14864
       WHERE err.err_dpv = errpv.pv_id
14865
         AND errpv.pkg_id = frc.pkg_id(+)
14866
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14867
         AND err.pv_id = errpkg.pv_id
14868
         AND err.PV_ID = pp.PV_ID
14869
         AND frc.PV_ID = pp.DPV_ID;
14870
 
14871
    END IF;
14872
 
14873
END Ignore_Dependency_Warnings;
4040 dpurdie 14874
 
1374 dpurdie 14875
/
1373 dpurdie 14876
 
4040 dpurdie 14877
/
14878
--------------------------------------------------------
14879
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
14880
--------------------------------------------------------
14881
set define off;
14882
 
3959 dpurdie 14883
  CREATE OR REPLACE PROCEDURE "INSERT_INTO_PACKAGE_BUILD_INFO" IS
1373 dpurdie 14884
 
14885
/******************************************************************************
3959 dpurdie 14886
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
1373 dpurdie 14887
   PURPOSE:    
14888
 
14889
   REVISIONS:
14890
   Ver        Date        Author           Description
14891
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14892
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14893
 
14894
   NOTES:
14895
 
14896
   Automatically available Auto Replace Keywords:
3959 dpurdie 14897
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
14898
      Sysdate:         6/12/2006
14899
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
1373 dpurdie 14900
      Username:         (set in TOAD Options, Procedure Editor)
14901
      Table Name:       (set in the "New PL/SQL Object" dialog)
14902
 
14903
******************************************************************************/
14904
 
14905
	CURSOR curInfo IS
3959 dpurdie 14906
    SELECT PV_ID
14907
	FROM PACKAGE_BUILD_ENV
14908
	WHERE BE_ID IN (11, 12);
1373 dpurdie 14909
    recInfo curInfo%ROWTYPE;
14910
 
14911
 
14912
BEGIN
14913
 
14914
	OPEN curInfo;
14915
    FETCH curInfo INTO recInfo;
14916
 
14917
	WHILE curInfo%FOUND
14918
	LOOP
14919
 
3959 dpurdie 14920
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
14921
		VALUES( recInfo.PV_ID, 2, 5);
14922
 
14923
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
14924
 
1373 dpurdie 14925
		FETCH curInfo INTO recInfo;
3959 dpurdie 14926
 
1373 dpurdie 14927
	END LOOP;
14928
 
14929
	CLOSE curInfo;
14930
 
14931
 
14932
 
14933
 
3959 dpurdie 14934
END INSERT_INTO_PACKAGE_BUILD_INFO;
4040 dpurdie 14935
 
1374 dpurdie 14936
/
1373 dpurdie 14937
 
4040 dpurdie 14938
/
14939
--------------------------------------------------------
14940
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
14941
--------------------------------------------------------
14942
set define off;
14943
 
3959 dpurdie 14944
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
1373 dpurdie 14945
 
3959 dpurdie 14946
/******************************************************************************
14947
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
14948
   PURPOSE:    
1373 dpurdie 14949
 
3959 dpurdie 14950
   REVISIONS:
14951
   Ver        Date        Author           Description
14952
   ---------  ----------  ---------------  ------------------------------------
14953
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14954
 
3959 dpurdie 14955
   NOTES:
1373 dpurdie 14956
 
3959 dpurdie 14957
   Automatically available Auto Replace Keywords:
14958
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
14959
      Sysdate:         6/12/2006
14960
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
14961
      Username:         (set in TOAD Options, Procedure Editor)
14962
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 14963
 
3959 dpurdie 14964
******************************************************************************/
1373 dpurdie 14965
 
3959 dpurdie 14966
	CURSOR curInfo IS
14967
    SELECT PV_ID
14968
	FROM PACKAGE_BUILD_ENV
14969
	WHERE BE_ID IN (11, 12);
14970
    recInfo curInfo%ROWTYPE;
14971
 
14972
 
1373 dpurdie 14973
BEGIN
14974
 
3959 dpurdie 14975
	OPEN curInfo;
14976
    FETCH curInfo INTO recInfo;
14977
 
14978
	WHILE curInfo%FOUND
14979
	LOOP
1373 dpurdie 14980
 
3959 dpurdie 14981
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
14982
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
14983
 
14984
		FETCH curInfo INTO recInfo;
14985
 
14986
	END LOOP;
1373 dpurdie 14987
 
3959 dpurdie 14988
	CLOSE curInfo;
1373 dpurdie 14989
 
14990
 
14991
 
14992
 
3959 dpurdie 14993
END INSERT_MULTIPLE_STICKY_NOTES;
4040 dpurdie 14994
 
1374 dpurdie 14995
/
1373 dpurdie 14996
 
4040 dpurdie 14997
/
14998
--------------------------------------------------------
14999
--  DDL for Procedure LEVEL_N_CONFLICTS
15000
--------------------------------------------------------
15001
set define off;
15002
 
3959 dpurdie 15003
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
15004
   nnrtag_id       IN       NUMBER,
15005
   nnsession_num   IN       NUMBER,
15006
   nnrowcnt        OUT      NUMBER,
15007
   nniteration     IN       NUMBER
15008
)
15009
IS
1373 dpurdie 15010
/* ---------------------------------------------------------------------------
3959 dpurdie 15011
    Version: 3.0.1
1373 dpurdie 15012
   --------------------------------------------------------------------------- */
3959 dpurdie 15013
   previteration   NUMBER := nniteration - 1;
1373 dpurdie 15014
BEGIN
3959 dpurdie 15015
   /* ---------  LEVEL 1 CONFILCTS -----------
15016
   || Following states are used:
15017
   || 0 -> NOT FOUND
15018
   || 1 -> MAJOR
15019
   || 2 -> MINOR MINOR
15020
   */
15021
   INSERT INTO temp_env_states
15022
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
15023
                      pv.pv_id, pv.pkg_id, pv.v_ext,
15024
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
15025
                 FROM package_dependencies dep,
15026
                      package_versions dpv,
15027
                      package_versions pv,
15028
                      release_content rel,
15029
                      temp_env_states tes
15030
                WHERE rel.pv_id = dep.pv_id
15031
                  AND rel.rtag_id = nnrtag_id
15032
                  AND dep.pv_id = pv.pv_id
15033
                  AND dep.dpv_id = dpv.pv_id
15034
                  AND dpv.pkg_id = tes.pkg_id
15035
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
15036
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
15037
                  AND tes.session_num = nnsession_num
15038
                  AND tes.level_num = previteration
15039
                  AND (dep.pv_id, dep.dpv_id) IN 
15040
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
15041
                                                 || packages already stored in Temp Table.
15042
                                                 */
15043
                      (
15044
                         SELECT pd.pv_id, pd.dpv_id
15045
                           FROM package_dependencies pd, release_content rc
15046
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
15047
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
15048
                         MINUS
15049
                         SELECT igw.pv_id, igw.dpv_id
15050
                           FROM ignore_warnings igw
15051
                          WHERE igw.rtag_id = nnrtag_id);
1373 dpurdie 15052
 
3959 dpurdie 15053
   nnrowcnt := SQL%ROWCOUNT;
15054
END level_n_conflicts;
4040 dpurdie 15055
 
1374 dpurdie 15056
/
1373 dpurdie 15057
 
4040 dpurdie 15058
/
15059
--------------------------------------------------------
15060
--  DDL for Procedure LEVEL_ONE_CONFLICTS
15061
--------------------------------------------------------
15062
set define off;
15063
 
1373 dpurdie 15064
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
15065
   nnrtag_id       IN   NUMBER,
15066
   nnsession_num   IN   NUMBER
15067
)
15068
IS
15069
BEGIN
15070
   /* ---------  LEVEL 1 CONFILCTS -----------
15071
   || Following states are used:
15072
   || 0 -> NOT FOUND
15073
   || 1 -> MAJOR
15074
   || 2 -> MINOR MINOR
15075
   */
15076
   INSERT INTO temp_env_states
15077
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
15078
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
15079
                      DECODE (frc.v_nmm,
15080
                              NULL, 0,
15081
                              errpv.v_nmm, DECODE (frc.v_mm,
15082
                                                   errpv.v_mm, NULL,
15083
                                                   2
15084
                                                  ),
15085
                              1
15086
                             ) AS MESSAGE
15087
                 FROM (
15088
                       /* Full Release Contents used for reference*/
15089
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
15090
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
15091
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
15092
                                (SELECT COUNT(*)
15093
                                   FROM ADVISORY_RIPPLE avr
15094
                                  WHERE avr.rtag_id = rel.rtag_id
15095
                                    AND avr.pv_id = rel.pv_id
15096
                                ) AS IsAvr
15097
                          FROM release_content rel,
15098
                                package_versions rpv
15099
                          WHERE rel.pv_id = rpv.pv_id
15100
                             AND rtag_id = nnrtag_id
15101
                      ) frc,
15102
 
15103
                      (
15104
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
15105
                          necessarily be satisfied in the release) */
15106
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
15107
                         FROM package_dependencies dep,
15108
                              package_versions dep_dpv
15109
                        WHERE dep.dpv_id = dep_dpv.pv_id
15110
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
15111
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
15112
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
15113
                       MINUS
15114
                       /* MINUS Dependencies to be ignored */
15115
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
15116
                         FROM ignore_warnings igw,
15117
                              package_versions igw_dpv
15118
                        WHERE igw.dpv_id = igw_dpv.pv_id
15119
                          AND igw.rtag_id = nnrtag_id
15120
                      ) err,
15121
                      package_versions errpkg,
15122
                      package_versions errpv
15123
                WHERE err.err_dpv = errpv.pv_id
15124
                  AND errpv.pkg_id = frc.pkg_id(+)
15125
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
15126
                  AND err.pv_id = errpkg.pv_id
15127
                  AND frc.IsAvr = 0;
15128
END level_one_conflicts;
4040 dpurdie 15129
 
1374 dpurdie 15130
/
1373 dpurdie 15131
 
4040 dpurdie 15132
/
15133
--------------------------------------------------------
15134
--  DDL for Procedure LOCK_PACKAGE
15135
--------------------------------------------------------
15136
set define off;
15137
 
1373 dpurdie 15138
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15139
											 nUserId IN NUMBER ) IS
15140
/* ---------------------------------------------------------------------------
15141
    Version: 4.0
15142
   --------------------------------------------------------------------------- */
15143
 
15144
BEGIN
15145
 
15146
    -- Lock Package
15147
    UPDATE PACKAGE_VERSIONS pv SET
15148
    	pv.DLOCKED = 'Y'
15149
    WHERE pv.PV_ID = nPvId;
15150
 
15151
    /* LOG ACTION */
15152
   	Log_Action ( nPvId, 'lock_package', nUserId );
15153
 
15154
END Lock_Package;
4040 dpurdie 15155
 
1374 dpurdie 15156
/
1373 dpurdie 15157
 
4040 dpurdie 15158
/
15159
--------------------------------------------------------
15160
--  DDL for Procedure LOG_ACTION
15161
--------------------------------------------------------
15162
set define off;
15163
 
3959 dpurdie 15164
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15165
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
15166
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
15167
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 15168
/* ---------------------------------------------------------------------------
15169
    Version: 3.0
15170
   --------------------------------------------------------------------------- */
15171
 
3959 dpurdie 15172
    ActionTypeId NUMBER;
1373 dpurdie 15173
 
15174
BEGIN
15175
 
3959 dpurdie 15176
    -- Get Action Type FK
15177
    SELECT act.ACTTYPE_ID INTO ActionTypeId
15178
      FROM ACTION_TYPE act
15179
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 15180
 
15181
 
3959 dpurdie 15182
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
15183
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
1373 dpurdie 15184
 
15185
 
3959 dpurdie 15186
END Log_Action;
4040 dpurdie 15187
 
1374 dpurdie 15188
/
1373 dpurdie 15189
 
4040 dpurdie 15190
/
15191
--------------------------------------------------------
15192
--  DDL for Procedure LOG_ACTION_BULK
15193
--------------------------------------------------------
15194
set define off;
15195
 
3959 dpurdie 15196
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
15197
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
15198
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
15199
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 15200
/* ---------------------------------------------------------------------------
3959 dpurdie 15201
    Version: 3.0
1373 dpurdie 15202
   --------------------------------------------------------------------------- */
15203
 
3959 dpurdie 15204
    ActionTypeId NUMBER;
15205
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 15206
 
15207
BEGIN
15208
 
3959 dpurdie 15209
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
1373 dpurdie 15210
 
3959 dpurdie 15211
    -- Get Action Type FK
15212
    SELECT act.ACTTYPE_ID INTO ActionTypeId
15213
      FROM ACTION_TYPE act
15214
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 15215
 
3959 dpurdie 15216
    -- Log Action
15217
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
15218
    SELECT nUserId,
15219
    	   ORA_SYSDATETIME,
15220
           pv.PV_ID,
15221
           sAdditionalComments,
15222
           ActionTypeId
15223
      FROM PACKAGE_VERSIONS pv
15224
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 15225
 
15226
 
3959 dpurdie 15227
END Log_Action_Bulk;
4040 dpurdie 15228
 
1374 dpurdie 15229
/
1373 dpurdie 15230
 
4040 dpurdie 15231
/
15232
--------------------------------------------------------
15233
--  DDL for Procedure LOG_DAEMON_ACTION
15234
--------------------------------------------------------
15235
set define off;
15236
 
3959 dpurdie 15237
  CREATE OR REPLACE PROCEDURE "LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
15238
												 enumActionTypeName IN VARCHAR2,
15239
		                                         nUserId IN NUMBER,
15240
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
15241
/* ---------------------------------------------------------------------------
15242
    Version: 3.0
15243
   --------------------------------------------------------------------------- */
1373 dpurdie 15244
 
3959 dpurdie 15245
    ActionTypeId NUMBER;
1373 dpurdie 15246
 
15247
BEGIN
15248
 
3959 dpurdie 15249
    -- Get Action Type FK
15250
    SELECT act.ACTTYPE_ID INTO ActionTypeId
15251
      FROM ACTION_TYPE act
15252
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 15253
 
15254
 
3959 dpurdie 15255
    INSERT INTO DAEMON_ACTION_LOG
15256
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
1373 dpurdie 15257
 
15258
 
3959 dpurdie 15259
END Log_Daemon_Action;
4040 dpurdie 15260
 
1374 dpurdie 15261
/
1373 dpurdie 15262
 
4040 dpurdie 15263
/
15264
--------------------------------------------------------
15265
--  DDL for Procedure LOG_PROJECT_ACTION
15266
--------------------------------------------------------
15267
set define off;
15268
 
3959 dpurdie 15269
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
15270
												 enumActionTypeName IN VARCHAR2,
15271
		                                         nUserId IN NUMBER,
15272
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
15273
												 nRtagId IN NUMBER  ) IS
1373 dpurdie 15274
/* ---------------------------------------------------------------------------
3959 dpurdie 15275
    Version: 3.0
1373 dpurdie 15276
   --------------------------------------------------------------------------- */
15277
 
3959 dpurdie 15278
    ActionTypeId NUMBER;
1373 dpurdie 15279
 
15280
BEGIN
15281
 
3959 dpurdie 15282
    -- Get Action Type FK
15283
    SELECT act.ACTTYPE_ID INTO ActionTypeId
15284
      FROM ACTION_TYPE act
15285
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 15286
 
15287
 
3959 dpurdie 15288
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
15289
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
1373 dpurdie 15290
 
15291
 
3959 dpurdie 15292
END Log_Project_Action;
4040 dpurdie 15293
 
1374 dpurdie 15294
/
1373 dpurdie 15295
 
4040 dpurdie 15296
/
15297
--------------------------------------------------------
15298
--  DDL for Procedure NEW_ADDITIONAL_NOTE
15299
--------------------------------------------------------
15300
set define off;
15301
 
3959 dpurdie 15302
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
15303
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
15304
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
15305
                                                  pnUser_id IN NUMBER,
15306
                                                  outErrCode OUT NUMBER
15307
                                                 ) IS
1373 dpurdie 15308
/* ---------------------------------------------------------------------------
3959 dpurdie 15309
    Version: 3.0.0
1373 dpurdie 15310
   --------------------------------------------------------------------------- */
15311
 
15312
    newID NUMBER;
15313
 
15314
	CURSOR an_duplicate_cur IS
3959 dpurdie 15315
        SELECT note_id
1373 dpurdie 15316
          FROM ADDITIONAL_NOTES
15317
         WHERE pv_id = pnPv_id
15318
           AND note_title = psNote_title;
15319
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
15320
 
15321
BEGIN
15322
	outErrCode := -1;		-- Set default return error code to ERROR state
15323
 
15324
	OPEN an_duplicate_cur;
15325
    FETCH an_duplicate_cur INTO an_duplicate_rec;
15326
 
3959 dpurdie 15327
    IF an_duplicate_cur%NOTFOUND
1373 dpurdie 15328
    THEN
3959 dpurdie 15329
		/* No duplicate titles */
15330
		-- Get new ID --
15331
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
15332
 
15333
		--- Add Additional Note ---
15334
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
15335
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
1373 dpurdie 15336
		outErrCode := 0;		-- Set return to SUCCESS
15337
	END IF;
15338
 
15339
	CLOSE an_duplicate_cur;
3959 dpurdie 15340
END New_Additional_Note;
4040 dpurdie 15341
 
1374 dpurdie 15342
/
1373 dpurdie 15343
 
4040 dpurdie 15344
/
15345
--------------------------------------------------------
15346
--  DDL for Procedure NEW_PACKAGE_NAME
15347
--------------------------------------------------------
15348
set define off;
15349
 
3959 dpurdie 15350
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
15351
                                               retPKG_ID OUT NUMBER ) IS
1373 dpurdie 15352
/* ---------------------------------------------------------------------------
3959 dpurdie 15353
    Version: 3.0.0
1373 dpurdie 15354
   --------------------------------------------------------------------------- */
15355
 
3959 dpurdie 15356
    CURSOR packages_cur IS
15357
        SELECT pkg.pkg_id
15358
          FROM packages pkg
15359
         WHERE pkg.pkg_name = SSpkg_name;
15360
    packages_rec packages_cur%ROWTYPE;
1373 dpurdie 15361
 
15362
 
15363
BEGIN
15364
 
3959 dpurdie 15365
    /* ---------------------------------------------------- */
15366
    /* Find if package name exists                          */
15367
    /* ---------------------------------------------------- */
1373 dpurdie 15368
 
3959 dpurdie 15369
    OPEN packages_cur;
15370
    FETCH packages_cur INTO packages_rec;
1373 dpurdie 15371
 
3959 dpurdie 15372
    IF packages_cur%NOTFOUND
15373
    THEN
15374
        -- Create new pkg_name --
15375
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
1373 dpurdie 15376
 
3959 dpurdie 15377
        INSERT INTO packages ( pkg_id, pkg_name )
15378
        VALUES ( retPKG_ID, SSpkg_name );
1373 dpurdie 15379
 
3959 dpurdie 15380
    ELSE
15381
        retPKG_ID := packages_rec.pkg_id;
1373 dpurdie 15382
 
3959 dpurdie 15383
    END IF;
1373 dpurdie 15384
 
15385
 
3959 dpurdie 15386
    CLOSE packages_cur;
1373 dpurdie 15387
 
3959 dpurdie 15388
END New_Package_Name;
4040 dpurdie 15389
 
1374 dpurdie 15390
/
1373 dpurdie 15391
 
4040 dpurdie 15392
/
15393
--------------------------------------------------------
15394
--  DDL for Procedure NEW_PATCH
15395
--------------------------------------------------------
15396
set define off;
15397
 
1373 dpurdie 15398
  CREATE OR REPLACE PROCEDURE "NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15399
 	   	  		  					  	NNparent_id IN NUMBER,
15400
                                        sPatchIdList IN VARCHAR2,
15401
										NNuser_id IN NUMBER ) IS
15402
/* ---------------------------------------------------------------------------
15403
    Version: 3.5
15404
   --------------------------------------------------------------------------- */
15405
 
15406
    patchPv_id    NUMBER;
15407
	parPkg_id	  NUMBER;
15408
    LastInstallOrder NUMBER;
15409
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
15410
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15411
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15412
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15413
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15414
 
15415
	CURSOR parent_cur IS
15416
        SELECT pv.*, pkg.pkg_name
15417
          FROM package_versions pv,
15418
		       packages pkg
15419
         WHERE pv.pv_id = NNparent_id
15420
		   AND pv.pkg_id = pkg.pkg_id;
15421
    parent_rec parent_cur%ROWTYPE;
15422
 
15423
    CURSOR patch_cur IS
15424
        SELECT pv.*, pg.pkg_name
15425
          FROM package_versions pv,
15426
		       packages pg
15427
         WHERE pv.pkg_id = parPkg_id
15428
		   AND pv.pkg_version = SSpatch_version
15429
		   AND pv.pkg_id = pg.pkg_id;
15430
    patch_rec patch_cur%ROWTYPE;
15431
 
15432
	CURSOR releases_cur IS
15433
        SELECT rc.pv_id
15434
		  FROM release_content rc
15435
		 WHERE rc.pv_id = patch_rec.pv_id;
15436
    releases_rec releases_cur%ROWTYPE;
15437
 
15438
 
15439
BEGIN
15440
 
15441
	-- Get Last Install Order
15442
    SELECT Count(*) INTO LastInstallOrder
15443
	  FROM PACKAGE_PATCHES pp
15444
	 WHERE pp.PV_ID = NNparent_id;
15445
 
15446
 
15447
    -- Get parent details
15448
	OPEN parent_cur;
15449
    FETCH parent_cur INTO parent_rec;
15450
	parPkg_id := parent_rec.pkg_id;
15451
 
15452
 
15453
	-- Find if patch exists in database
15454
    OPEN patch_cur;
15455
    FETCH patch_cur INTO patch_rec;
15456
 
15457
 
15458
    -- Parent must be official
15459
    IF parent_rec.dlocked = 'Y' THEN
15460
 
15461
	    IF patch_cur%NOTFOUND
15462
	    THEN
15463
        	isPatchDlocked := 'N';
15464
 
15465
	        -- Create new patch version --
15466
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
15467
 
15468
 
15469
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
15470
 
15471
	        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 )
15472
				   VALUES (
15473
						   patchPv_id,
15474
	                       parPkg_id,
15475
	                       SSpatch_version,
15476
	                       isPatchDlocked,
15477
	                       ORA_SYSDATE,
15478
	                       NNuser_id,
15479
	                       ORA_SYSDATETIME,
15480
	                       NNuser_id,
15481
	                       SSV_MM,
15482
	                       SSV_NMM,
15483
	                       SSV_EXT,
15484
	                       parent_rec.src_path,
15485
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
15486
	                       NNuser_id,
15487
						   'Y',
15488
                           patchPv_id,
15489
						   parent_rec.bs_id,
15490
						   parent_rec.is_autobuildable,
15491
						   parent_rec.ripple_field
15492
 
15493
						   );
15494
 
15495
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
15496
		    	   ( SELECT NNparent_id AS pv_id,
15497
				            pv.pv_id AS patch_id,
15498
	                        LastInstallOrder + 1 AS INSTALL_ORDER
15499
				       FROM package_versions pv
15500
					  WHERE pv.pv_id = patchPv_id
15501
					    AND pv.is_patch = 'Y' );
15502
 
15503
	        /* LOG ACTION */
15504
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
15505
        			     'Patch version created: '|| SSpatch_version );
15506
 
15507
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
15508
        			     'New patch created and attached: '|| SSpatch_version );
15509
 
15510
 
15511
	    ELSE
15512
 
15513
		    patchPv_id := patch_rec.pv_id;
15514
	    	isPatchDlocked := patch_rec.dlocked;
15515
 
15516
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
15517
		    OPEN releases_cur;
15518
		    FETCH releases_cur INTO releases_rec;
15519
 
15520
			IF releases_cur%NOTFOUND
15521
	   		THEN
15522
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
15523
				UPDATE package_versions SET
15524
					   is_patch = 'Y'
15525
					   WHERE pv_id = patchPv_id;
15526
 
15527
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
15528
			    	   ( SELECT NNparent_id AS pv_id,
15529
					            pv.pv_id AS patch_id,
15530
	                            LastInstallOrder + 1 AS INSTALL_ORDER
15531
					       FROM package_versions pv
15532
						  WHERE pv.pv_id = patchPv_id
15533
						    AND pv.is_patch = 'Y' );
15534
 
15535
			END IF;
15536
 
15537
			CLOSE releases_cur;
15538
 
15539
            /* LOG ACTION */
15540
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
15541
        			     'Patch version was found and attached: '|| SSpatch_version );
15542
 
15543
	    END IF;
15544
 
15545
 
15546
 
15547
 
15548
    END IF;
15549
 
15550
 
15551
 
15552
    /* Create Patch Dependencies */
15553
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
15554
 
15555
 
15556
    -- Make sure patch is unofficial before altering its dependencies
15557
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
15558
    	-- Delete Existing Dependencies
15559
        DELETE
15560
          FROM PACKAGE_DEPENDENCIES dep
15561
         WHERE dep.PV_ID = patchPv_id;
15562
 
15563
 
15564
        -- Insert new dependencies
15565
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
15566
        SELECT patchPv_id AS PV_ID,
15567
        	   pv.PV_ID AS DPV_ID,
15568
               parPkg_id AS PKG_ID,
15569
               pv.PKG_ID AS DPKG_ID,
15570
               'L' AS BUILD_TYPE
15571
          FROM PACKAGE_VERSIONS pv
15572
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
15573
 
15574
 
15575
    END IF;
15576
 
15577
 
15578
    CLOSE parent_cur;
15579
    CLOSE patch_cur;
15580
END New_Patch;
4040 dpurdie 15581
 
1374 dpurdie 15582
/
1373 dpurdie 15583
 
4040 dpurdie 15584
/
15585
--------------------------------------------------------
15586
--  DDL for Procedure NEW_UNIT_TEST
15587
--------------------------------------------------------
15588
set define off;
15589
 
3959 dpurdie 15590
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
15591
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
15592
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
15593
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
15594
                                            sDpkg_path IN VARCHAR2,
15595
                                            sResults IN VARCHAR2,
15596
                                            sCompletion_date IN VARCHAR2,
15597
                                            nCompleted_by IN NUMBER,
15598
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
15599
											enumTEST_TYPE_NOT_DONE IN NUMBER,
15600
											outFileName OUT VARCHAR2
15601
                                           ) IS
15602
/* ---------------------------------------------------------------------------
15603
    Version: 3.2.0
15604
   --------------------------------------------------------------------------- */
1373 dpurdie 15605
 
3959 dpurdie 15606
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 15607
 
3959 dpurdie 15608
    newID NUMBER;
15609
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
15610
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 15611
 
3959 dpurdie 15612
BEGIN
1373 dpurdie 15613
 
3959 dpurdie 15614
	-- Get new ID --
15615
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
1373 dpurdie 15616
 
3959 dpurdie 15617
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
15618
       	ResultsURL := sResults;
15619
       ELSE
15620
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
15621
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
15622
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
15623
           END IF;
15624
       END IF;
1373 dpurdie 15625
 
3959 dpurdie 15626
	-- Remove NOT_DONE entry if exists
15627
	DELETE FROM UNIT_TESTS
15628
	 WHERE pv_id = nPv_id
15629
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
1373 dpurdie 15630
 
3959 dpurdie 15631
	--- Add Additional Note ---
15632
    INSERT INTO UNIT_TESTS ( TEST_ID,
15633
								PV_ID,
15634
								TEST_TYPES_FK,
15635
								TEST_SUMMARY,
15636
								COMPLETION_DATE,
15637
								COMPLETED_BY,
15638
								RESULTS_URL,
15639
								RESULTS_ATTACHMENT_NAME,
15640
								NUMOF_TEST )
15641
    VALUES (
15642
       	newID,
15643
           nPv_id,
15644
           nTestTypeId,
15645
           sTest_summary,
15646
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
15647
           nCompleted_by,
15648
           ResultsURL,
15649
           ResultsAttachment,
15650
		   sNumOfTest );
1373 dpurdie 15651
 
3959 dpurdie 15652
END New_Unit_Test;
4040 dpurdie 15653
 
1374 dpurdie 15654
/
1373 dpurdie 15655
 
1374 dpurdie 15656
/
4040 dpurdie 15657
--------------------------------------------------------
15658
--  DDL for Procedure OLE
15659
--------------------------------------------------------
15660
set define off;
1373 dpurdie 15661
 
3959 dpurdie 15662
  CREATE OR REPLACE PROCEDURE "OLE" 
15663
IS retval VARCHAR2(40);   
15664
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
15665
DBMS_OUTPUT.PUT_LINE(retval);
4040 dpurdie 15666
 
3959 dpurdie 15667
/
1373 dpurdie 15668
 
4040 dpurdie 15669
/
15670
--------------------------------------------------------
15671
--  DDL for Procedure PAOLO_BUILD_TREE
15672
--------------------------------------------------------
15673
set define off;
15674
 
3959 dpurdie 15675
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
1373 dpurdie 15676
 
3959 dpurdie 15677
    sessionNumber NUMBER := 0;
15678
    iteration NUMBER := 1; 
15679
    rowCnt NUMBER := 0;
15680
    maxIterations 	NUMBER := 50;
15681
 
1373 dpurdie 15682
BEGIN
3959 dpurdie 15683
 
15684
 
15685
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
15686
    SELECT sessionNumber, iteration, rc.PV_ID
15687
      FROM RELEASE_CONTENT rc
15688
     WHERE rc.RTAG_ID = nRtag_id;
15689
 
15690
    iteration := iteration + 1;
15691
    LOOP
15692
 
15693
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
15694
		SELECT sessionNumber,     
15695
               iteration,
15696
               dep.DPV_ID
15697
          FROM TEMP_TREE_BROWSE ttb,
15698
               PACKAGE_DEPENDENCIES dep
15699
         WHERE dep.PV_ID = ttb.PV_ID 
15700
           AND ttb.LEVEL_NUM = iteration - 1 
15701
 
15702
         MINUS  
15703
 
15704
        SELECT sessionNumber, iteration, ttb.PV_ID
15705
          FROM TEMP_TREE_BROWSE ttb;   
15706
 
15707
 
15708
 
15709
 
15710
		rowCnt := SQL%ROWCOUNT;
15711
		IF rowCnt > 0 THEN
15712
           iteration := iteration + 1;
15713
		END IF;
15714
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
15715
    END LOOP; 
15716
 
15717
END PAOLO_Build_Tree;
4040 dpurdie 15718
 
1374 dpurdie 15719
/
1373 dpurdie 15720
 
4040 dpurdie 15721
/
15722
--------------------------------------------------------
15723
--  DDL for Procedure REBUILD_ENVIRONMENT
15724
--------------------------------------------------------
15725
set define off;
15726
 
1373 dpurdie 15727
  CREATE OR REPLACE PROCEDURE "REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
15728
 
15729
/* ---------------------------------------------------------------------------
15730
    Version: 3.3
15731
   --------------------------------------------------------------------------- */
15732
    rowCnt NUMBER := 0;
15733
    iteration NUMBER := 2;          -- Iterations counter
15734
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
15735
                                    -- This will prevent infinite loops if cyrcular dependencies are found
15736
    sessionNum NUMBER;
15737
BEGIN
15738
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
15739
 
15740
 
15741
    -- Redo Patch Ignore warnings
15742
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
15743
 
15744
 
15745
    Level_One_Conflicts ( NNrtag_id, sessionNum );
15746
 
15747
    LOOP
15748
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
15749
        iteration := iteration + 1;
15750
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
15751
    END LOOP;
15752
 
15753
    Update_Package_States ( NNrtag_id, sessionNum );
15754
 
15755
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
15756
 
15757
    -- Flag Packages with New Patches Available
15758
    Check_New_Patches ( NNrtag_id );
15759
 
15760
	Clean_Do_Not_Ripple( NNrtag_id );
15761
 
15762
 
15763
	/* Circular Dependency Flag */
15764
    /*
15765
	IF iteration > maxIterations
15766
	THEN
15767
		UPDATE release_tags SET
15768
		   	   circular_dependency = 'Y'
15769
		 WHERE rtag_id = NNrtag_id;
15770
	ELSE
15771
		UPDATE release_tags SET
15772
		   	   circular_dependency = NULL
15773
		 WHERE rtag_id = NNrtag_id;
15774
	END IF;
15775
    */
15776
END Rebuild_Environment;
4040 dpurdie 15777
 
1374 dpurdie 15778
/
1373 dpurdie 15779
 
4040 dpurdie 15780
/
15781
--------------------------------------------------------
15782
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
15783
--------------------------------------------------------
15784
set define off;
15785
 
3959 dpurdie 15786
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
15787
  sender      IN VARCHAR2,
15788
  recipient   IN VARCHAR2,
15789
  ccrecipient IN VARCHAR2,
15790
  subject     IN VARCHAR2,
15791
  message     IN VARCHAR2
15792
  ) IS
15793
 
15794
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
15795
  connection utl_smtp.connection;
15796
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
15797
  header VARCHAR2(1000);
15798
 
15799
BEGIN
15800
 
15801
  --
15802
  -- Start the connection.
15803
  --
15804
  connection := utl_smtp.open_connection(mailhost,25);
15805
 
15806
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
15807
     'From: '||sender||''||crlf||
15808
  'Subject: '||subject||crlf||
15809
       'To: '||recipient||crlf||
15810
       'CC: '||ccrecipient;
15811
 
15812
  --
15813
  -- Handshake with the SMTP server
15814
  --
15815
  utl_smtp.helo(connection, mailhost);
15816
  utl_smtp.mail(connection, sender);
15817
  utl_smtp.rcpt(connection, recipient);
15818
  utl_smtp.rcpt(connection, ccrecipient);
15819
  utl_smtp.open_data(connection);
15820
  --
15821
  -- Write the header
15822
  --
15823
  utl_smtp.write_data(connection, header);
15824
  --
15825
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
15826
  --
15827
  utl_smtp.write_data(connection, crlf ||message);
15828
  utl_smtp.close_data(connection);
15829
  utl_smtp.quit(connection);
15830
 
15831
EXCEPTION
15832
  WHEN UTL_SMTP.INVALID_OPERATION THEN
15833
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
15834
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
15835
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
15836
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
15837
    dbms_output.put_line(' Errors in code for SMTP transaction.');
15838
 
15839
END RELEASE_MANAGER_MAILOUT;
4040 dpurdie 15840
 
3959 dpurdie 15841
/
15842
 
4040 dpurdie 15843
/
15844
--------------------------------------------------------
15845
--  DDL for Procedure REMOVE_COMPONENTS
15846
--------------------------------------------------------
15847
set define off;
15848
 
3959 dpurdie 15849
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
15850
/* ---------------------------------------------------------------------------
15851
    Version: 3.0.0
15852
   --------------------------------------------------------------------------- */
15853
 
15854
 
15855
BEGIN
15856
 
15857
	 --- Delete From RELEASE_COMPONENTS
15858
	 DELETE FROM RELEASE_COMPONENTS
15859
	 WHERE PV_ID = nPvId;
15860
 
15861
END Remove_Components;
4040 dpurdie 15862
 
3959 dpurdie 15863
/
15864
 
4040 dpurdie 15865
/
15866
--------------------------------------------------------
15867
--  DDL for Procedure REMOVE_DOCUMENT
15868
--------------------------------------------------------
15869
set define off;
15870
 
3959 dpurdie 15871
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15872
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
15873
                                              nUserId IN NUMBER ) IS
15874
/* ---------------------------------------------------------------------------
15875
    Version: 3.0
15876
   --------------------------------------------------------------------------- */
15877
 
15878
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
15879
 
15880
BEGIN
15881
 
15882
	-- Get Doc Num
15883
    SELECT pd.DOC_NUM INTO DocNumber
15884
      FROM PACKAGE_DOCUMENTS pd
15885
     WHERE pd.PV_ID = nPvId
15886
       AND pd.DOC_ID = nDocId;
15887
 
15888
 
15889
	-- Delete Document
15890
    DELETE
15891
      FROM PACKAGE_DOCUMENTS pd
15892
     WHERE pd.PV_ID = nPvId
15893
       AND pd.DOC_ID = nDocId;
15894
 
15895
 
15896
    /* LOG ACTION */
15897
   	Log_Action ( nPvId, 'document_remove', nUserId,
15898
   			     'Document number: '|| DocNumber );
15899
 
15900
 
15901
END Remove_Document;
4040 dpurdie 15902
 
3959 dpurdie 15903
/
15904
 
4040 dpurdie 15905
/
15906
--------------------------------------------------------
15907
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
15908
--------------------------------------------------------
15909
set define off;
15910
 
3959 dpurdie 15911
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
15912
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
15913
												  	nUserId IN NUMBER
15914
	   	  		  									) IS
15915
 
1373 dpurdie 15916
/******************************************************************************
3959 dpurdie 15917
   NAME:       REMOVE_PACKAGE_INTEREST
15918
   PURPOSE:    To remove interest in a given package per project
1373 dpurdie 15919
 
15920
   REVISIONS:
15921
   Ver        Date        Author           Description
15922
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15923
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
1373 dpurdie 15924
 
15925
   NOTES:
15926
 
15927
   Automatically available Auto Replace Keywords:
3959 dpurdie 15928
      Object Name:     REMOVE_PACKAGE_INTEREST
15929
      Sysdate:         12/05/2006
15930
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
1373 dpurdie 15931
      Username:         (set in TOAD Options, Procedure Editor)
15932
      Table Name:       (set in the "New PL/SQL Object" dialog)
15933
 
15934
******************************************************************************/
15935
BEGIN
15936
 
3959 dpurdie 15937
	 --Delete from PACKAGE_INTEREST
15938
	 DELETE FROM PACKAGE_INTEREST
15939
	 WHERE PROJ_ID = nProjId
15940
	 AND PKG_ID = nPkgId
15941
	 AND USER_ID = nUserId;
15942
 
15943
END REMOVE_PACKAGE_INTEREST;
4040 dpurdie 15944
 
1374 dpurdie 15945
/
1373 dpurdie 15946
 
4040 dpurdie 15947
/
15948
--------------------------------------------------------
15949
--  DDL for Procedure REMOVE_PATCH
15950
--------------------------------------------------------
15951
set define off;
15952
 
3959 dpurdie 15953
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
15954
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
15955
                                           nUserId IN NUMBER ) IS
1373 dpurdie 15956
/* ---------------------------------------------------------------------------
3959 dpurdie 15957
    Version: 4.0
1373 dpurdie 15958
   --------------------------------------------------------------------------- */
15959
 
3959 dpurdie 15960
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
1373 dpurdie 15961
 
3959 dpurdie 15962
CURSOR curPatch IS
15963
	SELECT pp.PV_ID,
15964
		   pp.PATCH_ID,
15965
	       ROWNUM AS NEW_INSTALL_ORDER
15966
	  FROM PACKAGE_PATCHES pp
15967
	 WHERE pp.PV_ID = nPvId
15968
	ORDER BY pp.INSTALL_ORDER;
15969
recPatch curPatch%ROWTYPE;
15970
 
1373 dpurdie 15971
BEGIN
15972
 
3959 dpurdie 15973
	 -- Delete Patch
15974
     DELETE
15975
       FROM PACKAGE_PATCHES pp
15976
      WHERE pp.PV_ID = nPvId
15977
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 15978
 
15979
 
3959 dpurdie 15980
	-- Redo Install Order
15981
    OPEN curPatch;
15982
	FETCH curPatch INTO recPatch;
15983
 
15984
	WHILE curPatch%FOUND
15985
	LOOP
15986
 
15987
		UPDATE PACKAGE_PATCHES pp SET
15988
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
15989
		WHERE pp.PV_ID = nPvId
15990
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
15991
 
15992
		FETCH curPatch INTO recPatch;
15993
	END LOOP;
15994
 
15995
	CLOSE curPatch;
15996
 
15997
 
15998
 
15999
 
16000
    /* LOG ACTION */
16001
    SELECT pv.PKG_VERSION INTO PatchVersion
1373 dpurdie 16002
      FROM PACKAGE_VERSIONS pv
3959 dpurdie 16003
     WHERE pv.PV_ID = nPatchId;
1373 dpurdie 16004
 
3959 dpurdie 16005
   	Log_Action ( nPvId, 'patch_remove', nUserId,
16006
   			     'Version: '|| PatchVersion );
1373 dpurdie 16007
 
3959 dpurdie 16008
END Remove_Patch;
4040 dpurdie 16009
 
1374 dpurdie 16010
/
1373 dpurdie 16011
 
4040 dpurdie 16012
/
16013
--------------------------------------------------------
16014
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
16015
--------------------------------------------------------
16016
set define off;
16017
 
3959 dpurdie 16018
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
16019
	   	  		  						 			  nViewId IN NUMBER,
16020
										 			  sUserIdList IN VARCHAR2,
16021
										 			  nUserId IN NUMBER ) IS
1373 dpurdie 16022
 
3959 dpurdie 16023
GroupId NUMBER;													  
16024
 
16025
 
16026
 
1373 dpurdie 16027
/******************************************************************************
3959 dpurdie 16028
   NAME:       UPDATE_VIEW
16029
   PURPOSE:    
1373 dpurdie 16030
 
16031
   REVISIONS:
3959 dpurdie 16032
   Ver        Date        Author           		Description
1373 dpurdie 16033
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16034
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
1373 dpurdie 16035
 
16036
   NOTES:
16037
 
16038
   Automatically available Auto Replace Keywords:
3959 dpurdie 16039
      Object Name:     UPDATE_VIEW
16040
      Sysdate:         10/04/2006
16041
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
1373 dpurdie 16042
      Username:         (set in TOAD Options, Procedure Editor)
16043
      Table Name:       (set in the "New PL/SQL Object" dialog)
16044
 
16045
******************************************************************************/
16046
 
16047
BEGIN
3959 dpurdie 16048
	 SELECT GROUP_EMAIL_ID into GroupId
16049
	 FROM AUTOBUILD_FAILURE
16050
	 WHERE PROJ_ID = nProjId
16051
	 AND VIEW_ID = nViewId;
16052
 
16053
	 DELETE FROM MEMBERS_GROUP
16054
	 WHERE GROUP_EMAIL_ID = GroupId
16055
	 AND USER_ID IN (
16056
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
16057
	 );
16058
 
1373 dpurdie 16059
 
3959 dpurdie 16060
 
16061
END REMOVE_PROJECT_VIEW_OWNER;
4040 dpurdie 16062
 
3959 dpurdie 16063
/
1373 dpurdie 16064
 
4040 dpurdie 16065
/
16066
--------------------------------------------------------
16067
--  DDL for Procedure REMOVE_RELEASE_CONTENT
16068
--------------------------------------------------------
16069
set define off;
16070
 
3959 dpurdie 16071
  CREATE OR REPLACE PROCEDURE "REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
16072
													 sNotPvIdList IN VARCHAR2,
16073
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
16074
/* ---------------------------------------------------------------------------
16075
    Version: 3.0
16076
   --------------------------------------------------------------------------- */
1373 dpurdie 16077
 
3959 dpurdie 16078
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16079
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 16080
 
3959 dpurdie 16081
BEGIN
16082
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
16083
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
16084
 
16085
    -- Delete From Release Content
16086
    DELETE
16087
      FROM RELEASE_CONTENT
16088
	 WHERE rtag_id = nRTagId
16089
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
16090
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
16091
 
16092
 
16093
 
16094
END Remove_Release_Content;
4040 dpurdie 16095
 
1374 dpurdie 16096
/
3959 dpurdie 16097
 
4040 dpurdie 16098
/
16099
--------------------------------------------------------
16100
--  DDL for Procedure REMOVE_RUNTIME
16101
--------------------------------------------------------
16102
set define off;
16103
 
3959 dpurdie 16104
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16105
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
16106
                                             nUserId IN NUMBER ) IS
16107
/* ---------------------------------------------------------------------------
16108
    Version: 3.0
16109
   --------------------------------------------------------------------------- */
16110
 
16111
   RuntimeDependency VARCHAR2(4000);
16112
 
16113
BEGIN
16114
 
16115
	-- Get Runtime dependency
16116
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
16117
	  FROM RUNTIME_DEPENDENCIES rtd,
16118
	  	   PACKAGES pkg,
16119
	       PACKAGE_VERSIONS pv
16120
	 WHERE rtd.PV_ID = nPvId
16121
	   AND pv.PKG_ID = pkg.PKG_ID
16122
	   AND rtd.RTD_ID = pv.PV_ID
16123
	   AND rtd.RTD_ID = nRuntimeId;
16124
 
16125
 
16126
	-- Delete Document
16127
    DELETE
16128
      FROM RUNTIME_DEPENDENCIES rtd
16129
     WHERE rtd.PV_ID = nPvId
16130
       AND rtd.RTD_ID = nRuntimeId;
16131
 
16132
 
16133
    /* LOG ACTION */
16134
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
16135
   			     'Runtime package: '|| RuntimeDependency );
16136
 
16137
 
16138
END Remove_Runtime;
4040 dpurdie 16139
 
3959 dpurdie 16140
/
16141
 
4040 dpurdie 16142
/
16143
--------------------------------------------------------
16144
--  DDL for Procedure RENAME_PACKAGE_VERSION
16145
--------------------------------------------------------
16146
set define off;
16147
 
3959 dpurdie 16148
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
4211 dpurdie 16149
                                  SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16150
                                  cBuildType IN CHAR,
16151
                                  cChangeType IN CHAR,
16152
                                  NNuser_id IN NUMBER,
16153
                                  errMessage OUT VARCHAR2 ) IS
3959 dpurdie 16154
/* ---------------------------------------------------------------------------
16155
    Version: 3.2
16156
   --------------------------------------------------------------------------- */
16157
 
16158
    sPackageVersion VARCHAR2(4000);
4211 dpurdie 16159
    sLabel VARCHAR2(4000) := NULL;
16160
    sChangeType VARCHAR2(100) := NULL;
16161
    uChangeType CHAR := cChangeType;
3959 dpurdie 16162
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
16163
 
16164
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16165
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16166
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
16167
 
16168
    CURSOR package_versions_cur IS
16169
        SELECT pv_id
4211 dpurdie 16170
          FROM package_versions
16171
         WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
16172
           AND pkg_version = SSpkg_version;
3959 dpurdie 16173
    package_versions_rec package_versions_cur%ROWTYPE;
16174
 
16175
 
16176
BEGIN
16177
 
16178
    /* ---------------------------------------------------- */
16179
    /* Find if package_version exists                       */
16180
    /* ---------------------------------------------------- */
16181
 
4211 dpurdie 16182
    errMessage := NULL;
3959 dpurdie 16183
 
4211 dpurdie 16184
    -- Get previous version
16185
    SELECT pv.PKG_VERSION INTO OldPkgVersion
3959 dpurdie 16186
      FROM PACKAGE_VERSIONS pv
16187
     WHERE pv.PV_ID = NNpv_id;
16188
 
4211 dpurdie 16189
    sPackageVersion := SSpkg_version;
3959 dpurdie 16190
 
4211 dpurdie 16191
    IF OldPkgVersion != sPackageVersion THEN
3959 dpurdie 16192
 
4211 dpurdie 16193
        OPEN package_versions_cur;
16194
        FETCH package_versions_cur INTO package_versions_rec;
3959 dpurdie 16195
 
4211 dpurdie 16196
        IF package_versions_cur%NOTFOUND
16197
        THEN
3959 dpurdie 16198
 
4211 dpurdie 16199
            -- Split current version in parts
16200
            Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
3959 dpurdie 16201
 
16202
 
4211 dpurdie 16203
                -- Automated built config
16204
                IF ( cBuildType = 'M' ) THEN
16205
                    uChangeType := 'F';
16206
                END IF;  
16207
 
16208
                -- Automated version numbering
16209
                -- Make sure that version is still unique
16210
                IF (uChangeType != 'F') THEN
16211
                    sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;
16212
                END IF;
3959 dpurdie 16213
 
4211 dpurdie 16214
                -- Packge version not found, hence rename it.
16215
                UPDATE package_versions
16216
                   SET pkg_version = sPackageVersion,
16217
                       v_mm = SSV_MM,
16218
                       v_nmm = SSV_NMM,
16219
                       v_ext = SSV_EXT,
16220
                       modified_stamp = ORA_SYSDATETIME,
16221
                       modifier_id = NNuser_id,
16222
                       build_type = cBuildType,
16223
                       change_type = uChangeType,
16224
                       pkg_label = NULL
16225
                 WHERE pv_id = NNpv_id;
16226
 
16227
                sLabel := GET_AUTOMATED_LABEL( NNpv_id );
16228
                UPDATE PACKAGE_VERSIONS pv SET
16229
                    pv.PKG_LABEL = sLabel
16230
                WHERE pv_id = NNpv_id;
3959 dpurdie 16231
 
16232
 
4211 dpurdie 16233
              /* LOG ACTION */
16234
              IF (cChangeType = 'F') THEN
16235
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion );
16236
              ELSE 
16237
 
16238
                  IF cChangeType = 'M' THEN
16239
                    sChangeType := 'Major Change';
16240
                  ELSIF cChangeType = 'N' THEN 
16241
                    sChangeType := 'Minor Change';
16242
                  ELSIF cChangeType = 'P' THEN 
16243
                    sChangeType := 'Patch Change';
16244
                  ELSE
16245
                    sChangeType := 'Unknown Change';
16246
                  END IF;
3959 dpurdie 16247
 
4211 dpurdie 16248
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion || ',' || sChangeType );
16249
              END IF;
3959 dpurdie 16250
 
4211 dpurdie 16251
        ELSE
16252
            -- Package version exists. Cannot proceed.
16253
            errMessage := 'enum_MSG_VERSION_EXISTS';
3959 dpurdie 16254
 
4211 dpurdie 16255
        END IF;
3959 dpurdie 16256
 
4211 dpurdie 16257
        CLOSE package_versions_cur;
3959 dpurdie 16258
 
4211 dpurdie 16259
    END IF;
3959 dpurdie 16260
 
16261
END Rename_Package_Version;
4040 dpurdie 16262
 
3959 dpurdie 16263
/
16264
 
4040 dpurdie 16265
/
16266
--------------------------------------------------------
16267
--  DDL for Procedure RESET_IGNORE_WARNINGS
16268
--------------------------------------------------------
16269
set define off;
16270
 
3959 dpurdie 16271
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
16272
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
16273
/* ---------------------------------------------------------------------------
16274
    Version: 5.0
16275
   --------------------------------------------------------------------------- */
16276
 
16277
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16278
 
16279
BEGIN
16280
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
16281
 
16282
    -- Remove Ignore Warnings
16283
     DELETE
16284
       FROM ignore_warnings
16285
	  WHERE (rtag_id, pv_id, dpv_id) IN
16286
	     (
16287
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
16288
	        FROM ignore_warnings igw,
16289
	             package_versions dpv,
16290
	             package_versions pv
16291
	       WHERE igw.dpv_id = dpv.pv_id
16292
	         AND igw.rtag_id = nRTagId
16293
	         AND dpv.pkg_id = pv.pkg_id
16294
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
16295
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
16296
         );
16297
 
16298
END Reset_Ignore_Warnings;
4040 dpurdie 16299
 
3959 dpurdie 16300
/
16301
 
4040 dpurdie 16302
/
16303
--------------------------------------------------------
16304
--  DDL for Procedure RIPPLE_PACKAGE
16305
--------------------------------------------------------
16306
set define off;
16307
 
3959 dpurdie 16308
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
16309
        sPvIdList IN VARCHAR2,
16310
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16311
        nUserId IN NUMBER
16312
    ) IS
16313
/* ---------------------------------------------------------------------------
16314
    Version: 4.1
16315
   --------------------------------------------------------------------------- */
16316
 
16317
BEGIN
16318
 
16319
    IF (sPvIdList IS NULL) THEN
16320
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16321
    END IF;
16322
 
16323
    -- Ripple Package
16324
    DELETE FROM DO_NOT_RIPPLE
16325
    WHERE RTAG_ID = nRtagId
16326
    AND PV_ID IN (
16327
        SELECT *
16328
        FROM THE (
16329
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
16330
            AS RELMGR_NUMBER_TAB_t )
16331
            FROM DUAL
16332
        )
16333
    );
16334
 
16335
    /* LOG ACTION */
16336
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
16337
 
16338
END Ripple_Package;
4040 dpurdie 16339
 
3959 dpurdie 16340
/
16341
 
4040 dpurdie 16342
/
16343
--------------------------------------------------------
16344
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
16345
--------------------------------------------------------
16346
set define off;
16347
 
16348
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
4585 dpurdie 16349
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16350
                                          NNuser_id IN NUMBER,
16351
                                          retPV_ID OUT NUMBER,
16352
                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
16353
                                          nBuildType IN CHAR DEFAULT 'M',
16354
                                          nChangeType IN CHAR DEFAULT 'F') IS
3959 dpurdie 16355
/* ---------------------------------------------------------------------------
16356
    Version: 4.0
16357
   --------------------------------------------------------------------------- */
16358
 
16359
    parPkg_id   NUMBER;
16360
    parPv_id    NUMBER;
16361
    cloneFrom_pv_id NUMBER;
16362
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16363
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16364
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
16365
    spackageversion VARCHAR2 (4000);
4211 dpurdie 16366
    slabel VARCHAR2 (4000) := NULL;
3959 dpurdie 16367
 
16368
    CURSOR packages_cur IS
16369
        SELECT pkg_id FROM PACKAGES
16370
        WHERE pkg_name = SSpkg_name;
16371
    packages_rec packages_cur%ROWTYPE;
16372
 
16373
    CURSOR package_versions_cur IS
16374
        SELECT pv_id FROM PACKAGE_VERSIONS
16375
        WHERE pkg_id = parPkg_id
16376
        AND pkg_version = SSpkg_version;
16377
    package_versions_rec package_versions_cur%ROWTYPE;
16378
 
16379
    CURSOR clone_package_versions_cur IS
16380
        SELECT MAX(pv_id) AS pv_id
16381
          FROM PACKAGE_VERSIONS
16382
         WHERE pkg_id = parPkg_id
16383
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
16384
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
16385
 
16386
BEGIN
16387
    /* -------------------------------------------- */
16388
    /* Find if pkg_name exists and seed if required */
16389
    /* -------------------------------------------- */
16390
    OPEN packages_cur;
16391
    FETCH packages_cur INTO packages_rec;
16392
 
16393
    IF packages_cur%NOTFOUND
16394
    THEN
16395
        /* INSERT into packages table */
16396
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
16397
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
16398
 
16399
    ELSE
16400
        parPkg_id := packages_rec.pkg_id;
16401
 
16402
    END IF;
16403
 
16404
    CLOSE packages_cur;
16405
 
16406
 
16407
    /* ---------------------------------------------------- */
16408
    /* Find if package_version exists and seed if required  */
16409
    /* ---------------------------------------------------- */
16410
    OPEN package_versions_cur;
16411
    FETCH package_versions_cur INTO package_versions_rec;
16412
 
16413
    IF package_versions_cur%NOTFOUND
16414
    THEN
16415
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
16416
 
16417
        /* Generate automated version Number */
16418
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
16419
        spackageversion := SSpkg_version;
16420
 
4211 dpurdie 16421
        IF ( nChangeType <> 'F' )
3959 dpurdie 16422
        THEN
16423
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
16424
        END If;
16425
 
16426
        /* LOG ACTION */
16427
        Log_Action ( parPv_id, 'new_version', NNuser_id,
16428
                     'New package version: '|| spackageversion );
16429
 
16430
 
4585 dpurdie 16431
        /*  Determine clone source for new package-version
16432
            Use nCloneFromPvId - iff provided
16433
            Use most recently created pkgName/pkgExtension - if it exists
16434
            Else create a brand new package-version
16435
        */
3959 dpurdie 16436
 
4585 dpurdie 16437
        IF ( NOT nCloneFromPvId IS NULL) THEN
16438
            cloneFrom_pv_id := nCloneFromPvId;
16439
        ELSE
16440
            /* Find similar pkg_name + ext to clone from */
16441
            OPEN clone_package_versions_cur;
16442
            FETCH clone_package_versions_cur INTO clone_package_versions_rec;
16443
            CLOSE clone_package_versions_cur;
3959 dpurdie 16444
 
4585 dpurdie 16445
            IF ( NOT clone_package_versions_rec.pv_id IS NULL) THEN
16446
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
3959 dpurdie 16447
            ELSE
4585 dpurdie 16448
                cloneFrom_pv_id := NULL;
3959 dpurdie 16449
            END IF;
16450
 
4585 dpurdie 16451
        END IF;
16452
 
16453
        IF NOT cloneFrom_pv_id IS NULL
16454
        THEN
3959 dpurdie 16455
            -- Clone Package Version Details --
16456
            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,
16457
                                           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  )
16458
                SELECT parPv_id         AS pv_id,
16459
                       parPkg_id        AS pkg_id,
16460
                       spackageversion  AS pkg_version,
16461
                       'N'              AS dlocked,
16462
                       Ora_Sysdate      AS created_stamp,
16463
                       NNuser_id        AS creator_id,
16464
                       Ora_Sysdatetime  AS modified_stamp,
16465
                       NNuser_id        AS modifier_id,
16466
                       SSV_MM           AS V_MM,
16467
                       SSV_NMM          AS V_NMM,
16468
                       SSV_EXT          AS V_EXT,
16469
                       pv.src_path,
16470
                       pv.pv_description,
16471
                       pv.PV_OVERVIEW,
16472
                       cloneFrom_pv_id  AS LAST_PV_ID,
16473
                       pv.owner_id,
16474
                       nBuildType       AS BUILD_TYPE,
16475
                       pv.IS_BUILD_ENV_REQUIRED,
16476
                       pv.BS_ID,
16477
                       pv.is_autobuildable,
16478
                       pv.IS_DEPLOYABLE, 
16479
                       pv.ripple_field,
16480
                       nChangeType       AS change_type
16481
                  FROM PACKAGE_VERSIONS pv
16482
                 WHERE pv.pv_id = cloneFrom_pv_id;
16483
 
16484
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
16485
 
16486
        ELSE
16487
            /* BRAND NEW version + ext */
16488
            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 )
16489
            VALUES (
16490
                    parPv_id,
16491
                    parPkg_id,
16492
                    spackageversion,
16493
                    'N',
16494
                    Ora_Sysdate,
16495
                    NNuser_id,
16496
                    Ora_Sysdatetime,
16497
                    NNuser_id,
16498
                    SSV_MM,
16499
                    SSV_NMM,
16500
                    SSV_EXT,
16501
                    NNuser_id,
16502
                    parPv_id,
16503
                    nBuildType,
16504
                    'b',
16505
                    nChangeType
16506
                   );
16507
        END IF;
16508
 
4211 dpurdie 16509
        /* Insert initial package label */
16510
        slabel := get_automated_label (parPv_id);
16511
        UPDATE package_versions pv
16512
        SET pv.pkg_label = slabel
16513
        WHERE pv.pv_id = parPv_id;
16514
 
3959 dpurdie 16515
        retPV_ID := parPv_id;
16516
 
16517
    ELSE
16518
        retPV_ID := package_versions_rec.pv_id;
16519
 
16520
    END IF;
16521
 
16522
    CLOSE package_versions_cur;
16523
 
16524
END Seed_Package_Names_Versions;
4040 dpurdie 16525
 
3959 dpurdie 16526
/
16527
 
4040 dpurdie 16528
/
16529
--------------------------------------------------------
16530
--  DDL for Procedure SET_ADVISORY_RIPPLE
16531
--------------------------------------------------------
16532
set define off;
16533
 
3959 dpurdie 16534
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
1373 dpurdie 16535
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16536
											 nUserId IN NUMBER ) IS
16537
/* ---------------------------------------------------------------------------
16538
    Version: 4.0
16539
   --------------------------------------------------------------------------- */
16540
 
16541
BEGIN
16542
 
3959 dpurdie 16543
    -- Set Advisory Ripple Package
16544
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
16545
	VALUES (nRtagId, nPvId);
1373 dpurdie 16546
 
16547
    /* LOG ACTION */
3959 dpurdie 16548
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
1373 dpurdie 16549
 
16550
	/*Rebuild_Environment(nRtagId);*/
16551
 
3959 dpurdie 16552
END Set_Advisory_Ripple;
4040 dpurdie 16553
 
1374 dpurdie 16554
/
1373 dpurdie 16555
 
4040 dpurdie 16556
/
16557
--------------------------------------------------------
16558
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
16559
--------------------------------------------------------
16560
set define off;
16561
 
3959 dpurdie 16562
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
16563
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
1373 dpurdie 16564
/* ---------------------------------------------------------------------------
3959 dpurdie 16565
    Last Modified: Rupesh Solanki
16566
	Version: 3.0.1
1373 dpurdie 16567
   --------------------------------------------------------------------------- */
16568
 
16569
 
16570
BEGIN
16571
 
3959 dpurdie 16572
   -- Delete Current Build Env settings
16573
   DELETE FROM PACKAGE_BUILD_ENV
16574
   WHERE pv_id = nPvId;
16575
 
16576
   -- Delet Current Package Build Info Settings
16577
   DELETE FROM PACKAGE_BUILD_INFO
16578
   WHERE pv_id = nPvId;
1373 dpurdie 16579
 
3959 dpurdie 16580
   -- Reset flag to N
16581
   UPDATE PACKAGE_VERSIONS SET
16582
	   IS_BUILD_ENV_REQUIRED = 'N'
16583
   WHERE PV_ID = nPvId;
1373 dpurdie 16584
 
16585
 
3959 dpurdie 16586
   -- Set new Build Env
16587
   IF NOT sBuildEnvIdList IS NULL THEN
16588
   	  -- Insert into PACKAGE_BUILD_ENV
16589
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16590
	  SELECT nPvId AS PV_ID,
16591
	  		 be.BE_ID
16592
	    FROM BUILD_ENVIRONMENTS be
16593
	   WHERE be.BE_ID IN (
16594
	   		 		  	   SELECT *
16595
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
16596
	   		 		  	 );
16597
 
16598
   	  -- Insert into PACKAGE_BUILD_INFO
16599
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16600
	  SELECT nPvId AS PV_ID,
16601
	  		 be.BM_ID
16602
	    FROM BUILD_MACHINES be
16603
	   WHERE be.BM_ID IN (
16604
	   		 		  	   SELECT *
16605
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
16606
	   		 		  	 );						 
1373 dpurdie 16607
 
3959 dpurdie 16608
	   -- Set flag to Y
16609
	   UPDATE PACKAGE_VERSIONS SET
16610
		   IS_BUILD_ENV_REQUIRED = 'Y'
16611
	   WHERE PV_ID = nPvId;
1373 dpurdie 16612
 
3959 dpurdie 16613
   END IF;
1373 dpurdie 16614
 
16615
 
3959 dpurdie 16616
END Set_Package_Build_Env;
4040 dpurdie 16617
 
1374 dpurdie 16618
/
1373 dpurdie 16619
 
4040 dpurdie 16620
/
16621
--------------------------------------------------------
16622
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
16623
--------------------------------------------------------
16624
set define off;
16625
 
1373 dpurdie 16626
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
16627
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
16628
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
16629
														 ) IS
16630
/* ---------------------------------------------------------------------------
16631
    Last Modified: Rupesh Solanki
16632
	Version: 3.0.1
16633
   --------------------------------------------------------------------------- */
16634
 
16635
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
16636
   BsId NUMBER;
16637
   HackBsId NUMBER;
16638
 
16639
 
16640
BEGIN
16641
 
16642
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
16643
 
16644
   -- Delete Current Build Env settings
16645
   DELETE FROM PACKAGE_BUILD_ENV
16646
   WHERE pv_id = nPvId;
16647
 
16648
   -- Delet Current Package Build Info Settings
16649
   DELETE FROM PACKAGE_BUILD_INFO
16650
   WHERE pv_id = nPvId;
16651
 
16652
   -- Reset flag to N
16653
   UPDATE PACKAGE_VERSIONS SET
16654
	   IS_BUILD_ENV_REQUIRED = 'N'
16655
   WHERE PV_ID = nPvId;
16656
 
16657
 
16658
   -- Set new Build Env
16659
   IF NOT sBuildEnvIdList IS NULL THEN
16660
	FOR i IN 1..nBsCollector.COUNT
16661
	LOOP   
16662
 
16663
	BsId := nBsCollector(i);
16664
 
16665
	IF nBuildStandard = 2 THEN
16666
	   IF BsId = 1 THEN
16667
	   	  HackBsId := 11;
16668
	   ELSE
16669
	   	  HackBsId := 12;
16670
	   END IF;
16671
 
16672
   	  -- Insert into PACKAGE_BUILD_ENV
16673
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16674
	  SELECT nPvId AS PV_ID,
16675
	  		 be.BE_ID
16676
	    FROM BUILD_ENVIRONMENTS be
16677
	   WHERE be.BE_ID IN ( HackBsId );
16678
 
16679
   	  -- Insert into PACKAGE_BUILD_INFO
16680
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16681
	  SELECT nPvId AS PV_ID,
16682
	  		 be.BM_ID
16683
	    FROM BUILD_MACHINES be
16684
	   WHERE be.BM_ID IN ( BsId );						 
16685
 
16686
	   -- Set flag to Y
16687
	   UPDATE PACKAGE_VERSIONS SET
16688
		   IS_BUILD_ENV_REQUIRED = 'Y'
16689
	   WHERE PV_ID = nPvId;	
16690
 
16691
 
16692
	ELSE
16693
 
16694
   	  -- Insert into PACKAGE_BUILD_ENV
16695
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16696
	  SELECT nPvId AS PV_ID,
16697
	  		 be.BE_ID
16698
	    FROM BUILD_ENVIRONMENTS be
16699
	   WHERE be.BE_ID IN ( BsId );
16700
 
16701
   	  -- Insert into PACKAGE_BUILD_INFO
16702
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16703
	  SELECT nPvId AS PV_ID,
16704
	  		 be.BM_ID
16705
	    FROM BUILD_MACHINES be
16706
	   WHERE be.BM_ID IN ( BsId );						 
16707
 
16708
	   -- Set flag to Y
16709
	   UPDATE PACKAGE_VERSIONS SET
16710
		   IS_BUILD_ENV_REQUIRED = 'Y'
16711
	   WHERE PV_ID = nPvId;
16712
 
16713
	END IF;  
16714
 
16715
 
16716
	END LOOP;	   
16717
 
16718
   END IF;
16719
 
16720
 
16721
END Set_Package_Build_Env_Temp;
4040 dpurdie 16722
 
1374 dpurdie 16723
/
1373 dpurdie 16724
 
4040 dpurdie 16725
/
16726
--------------------------------------------------------
16727
--  DDL for Procedure SET_TO_AUTOBUILDABLE
16728
--------------------------------------------------------
16729
set define off;
16730
 
3959 dpurdie 16731
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
16732
   nrtagid     IN   NUMBER,
16733
   spvidlist   IN   VARCHAR2
16734
)
16735
IS
16736
/******************************************************************************
16737
   NAME:       SET_TO_AUTOBUILDABLE
16738
   PURPOSE:
1373 dpurdie 16739
 
3959 dpurdie 16740
   REVISIONS:
16741
   Ver        Date        Author           Description
16742
   ---------  ----------  ---------------  ------------------------------------
16743
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16744
 
3959 dpurdie 16745
   NOTES:
1373 dpurdie 16746
 
3959 dpurdie 16747
   Automatically available Auto Replace Keywords:
16748
      Object Name:     SET_TO_AUTOBUILDABLE
16749
      Sysdate:         15/12/2006
16750
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
16751
      Username:         (set in TOAD Options, Procedure Editor)
16752
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16753
 
3959 dpurdie 16754
******************************************************************************/
16755
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
16756
   PvId NUMBER;
1373 dpurdie 16757
BEGIN
16758
 
3959 dpurdie 16759
   npvidcollector := in_list_number2 (spvidlist);
16760
 
16761
   UPDATE package_versions
16762
      SET is_autobuildable = 'N'
16763
    WHERE pv_id IN (SELECT pv_id
16764
                      FROM release_content
16765
                     WHERE rtag_id = nrtagid);
1373 dpurdie 16766
 
3959 dpurdie 16767
 
16768
 
16769
   	FOR i IN 1..npvidcollector.COUNT
16770
	LOOP
16771
		PvId := npvidcollector(i);
1373 dpurdie 16772
 
3959 dpurdie 16773
		UPDATE package_versions
16774
		set is_autobuildable = 'Y'
16775
		where pv_id = PvId;
1373 dpurdie 16776
 
3959 dpurdie 16777
	END LOOP;
16778
 
16779
 
16780
END set_to_autobuildable;
4040 dpurdie 16781
 
3959 dpurdie 16782
/
1373 dpurdie 16783
 
4040 dpurdie 16784
/
16785
--------------------------------------------------------
16786
--  DDL for Procedure SHIFT_INSTALL_ORDER
16787
--------------------------------------------------------
16788
set define off;
16789
 
3959 dpurdie 16790
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
16791
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
16792
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
16793
/* ---------------------------------------------------------------------------
16794
    Version: 3.0
16795
   --------------------------------------------------------------------------- */
1373 dpurdie 16796
 
3959 dpurdie 16797
currInstallOrder NUMBER;
16798
FromInstallOrder NUMBER;
1373 dpurdie 16799
 
3959 dpurdie 16800
BEGIN
1373 dpurdie 16801
 
3959 dpurdie 16802
	 -- Get Current Install Order
16803
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
16804
       FROM PACKAGE_PATCHES pp
16805
      WHERE pp.PV_ID = nPvId
16806
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16807
 
16808
 
3959 dpurdie 16809
	 IF currInstallOrder > nToInstallOrder
16810
	 THEN
1373 dpurdie 16811
 
3959 dpurdie 16812
		FromInstallOrder := nToInstallOrder;
1373 dpurdie 16813
 
3959 dpurdie 16814
	    -- Shift others Up
16815
		UPDATE PACKAGE_PATCHES pp SET
16816
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
16817
		 WHERE pp.PV_ID = nPvId
16818
           AND pp.PATCH_ID != nPatchId
16819
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
1373 dpurdie 16820
 
16821
 
3959 dpurdie 16822
	 ELSIF currInstallOrder < nToInstallOrder
16823
	 THEN
1373 dpurdie 16824
 
3959 dpurdie 16825
		FromInstallOrder := currInstallOrder + 1;
1373 dpurdie 16826
 
3959 dpurdie 16827
		-- Shift others Down
16828
        UPDATE PACKAGE_PATCHES pp SET
16829
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
16830
		 WHERE pp.PV_ID = nPvId
16831
           AND pp.PATCH_ID != nPatchId
16832
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
1373 dpurdie 16833
 
3959 dpurdie 16834
	 END IF;
1373 dpurdie 16835
 
16836
 
3959 dpurdie 16837
	 -- Move Patch to new install order
16838
     UPDATE PACKAGE_PATCHES pp SET
16839
		    pp.INSTALL_ORDER = nToInstallOrder
16840
	  WHERE pp.PV_ID = nPvId
16841
	    AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16842
 
16843
 
3959 dpurdie 16844
END Shift_Install_Order;
4040 dpurdie 16845
 
1374 dpurdie 16846
/
1373 dpurdie 16847
 
4040 dpurdie 16848
/
16849
--------------------------------------------------------
16850
--  DDL for Procedure SPLIT_VERSION
16851
--------------------------------------------------------
16852
set define off;
16853
 
3959 dpurdie 16854
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16855
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
16856
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
16857
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
1373 dpurdie 16858
/* ---------------------------------------------------------------------------
3959 dpurdie 16859
    Version: 3.0.0
1373 dpurdie 16860
   --------------------------------------------------------------------------- */
16861
 
3959 dpurdie 16862
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
16863
        INDEX BY BINARY_INTEGER;
1373 dpurdie 16864
 
3959 dpurdie 16865
    version_components VERSION_COMPONENTS_TYPE;
16866
    lastDot NUMBER := 0;
16867
    currDot NUMBER := 0;
1373 dpurdie 16868
 
16869
BEGIN
3959 dpurdie 16870
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
1373 dpurdie 16871
 
3959 dpurdie 16872
    IF ( currDot > 0 )
1373 dpurdie 16873
    THEN
3959 dpurdie 16874
        -- YES dot separator found --
16875
        SSV_EXT := GET_V_EXT( SSpkg_version );
1373 dpurdie 16876
 
3959 dpurdie 16877
        IF NOT SSV_EXT IS NULL
1373 dpurdie 16878
        THEN
3959 dpurdie 16879
            lastDot := currDot;
16880
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
1373 dpurdie 16881
 
3959 dpurdie 16882
            IF ( currDot > 0 )
16883
            THEN
16884
                -- XXXX.M.E
16885
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
16886
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
16887
            ELSE
16888
                -- XXXX.E
16889
                SSV_MM := NULL;
16890
                SSV_NMM := SSpkg_version;
16891
            END IF;
1373 dpurdie 16892
 
16893
        ELSE
3959 dpurdie 16894
            -- XXXX.M
16895
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
16896
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
1373 dpurdie 16897
 
16898
        END IF;
16899
 
16900
    ELSE
3959 dpurdie 16901
        -- NO dot separator found --
16902
        -- XXXXXX
16903
        SSV_MM  := NULL;
16904
        SSV_NMM := SSpkg_version;
16905
        SSV_EXT := NULL;
1373 dpurdie 16906
 
16907
    END IF;
16908
 
3959 dpurdie 16909
END Split_Version;
4040 dpurdie 16910
 
1374 dpurdie 16911
/
1373 dpurdie 16912
 
4040 dpurdie 16913
/
16914
--------------------------------------------------------
16915
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
16916
--------------------------------------------------------
16917
set define off;
16918
 
3959 dpurdie 16919
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
16920
Auto CHAR;
16921
/******************************************************************************
16922
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
16923
   PURPOSE:    
1373 dpurdie 16924
 
3959 dpurdie 16925
   REVISIONS:
16926
   Ver        Date        Author           Description
16927
   ---------  ----------  ---------------  ------------------------------------
16928
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16929
 
3959 dpurdie 16930
   NOTES:
1373 dpurdie 16931
 
3959 dpurdie 16932
   Automatically available Auto Replace Keywords:
16933
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
16934
      Sysdate:         14/12/2006
16935
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
16936
      Username:         (set in TOAD Options, Procedure Editor)
16937
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16938
 
3959 dpurdie 16939
******************************************************************************/
1373 dpurdie 16940
BEGIN
16941
 
3959 dpurdie 16942
	 SELECT IS_AUTOBUILDABLE into Auto
16943
	 FROM PACKAGE_VERSIONS 
16944
	 WHERE PV_ID = nPvId;
1373 dpurdie 16945
 
3959 dpurdie 16946
	 IF Auto = 'N' Then
16947
 
16948
	 	UPDATE PACKAGE_VERSIONS
16949
	 	SET IS_AUTOBUILDABLE = 'Y'
16950
	 	WHERE PV_ID = nPvId;
16951
 
16952
 
16953
	 	/* LOG ACTION */
16954
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
16955
 
16956
	 Else
16957
 
16958
		 UPDATE PACKAGE_VERSIONS
16959
		 SET IS_AUTOBUILDABLE = 'N'
16960
		 WHERE PV_ID = nPvId;
16961
 
16962
 
16963
	 	 /* LOG ACTION */
16964
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
16965
 
16966
	 End If;
16967
 
16968
 
1373 dpurdie 16969
 
3959 dpurdie 16970
 
1373 dpurdie 16971
 
16972
 
16973
 
16974
 
3959 dpurdie 16975
END SWITCH_REPRODUCIBLE_PACKAGE;
4040 dpurdie 16976
 
1374 dpurdie 16977
/
1373 dpurdie 16978
 
4040 dpurdie 16979
/
16980
--------------------------------------------------------
16981
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
16982
--------------------------------------------------------
16983
set define off;
16984
 
3959 dpurdie 16985
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
16986
														  sSyncRtagsInList		IN VARCHAR2,
16987
				                                          nUser_id 				IN NUMBER ) IS
1373 dpurdie 16988
/* ---------------------------------------------------------------------------
16989
    Version: 3.0.0
16990
   --------------------------------------------------------------------------- */
16991
 
3959 dpurdie 16992
	CURSOR sync_rtags_cur IS
16993
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
16994
		  FROM release_content rc,
16995
		  	   package_versions pv,
16996
		       package_versions opv
16997
		 WHERE rc.pv_id = pv.pv_id
16998
		   AND opv.pkg_id = pv.pkg_id
16999
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
17000
		   AND opv.pv_id = nPv_id
17001
		   AND rtag_id IN ( SELECT *
17002
		   	   		   	      FROM THE (
17003
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
17004
					       		   	    FROM dual
17005
									   )
17006
						  );
17007
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
1373 dpurdie 17008
 
17009
BEGIN
17010
 
3959 dpurdie 17011
	OPEN sync_rtags_cur;
17012
	FETCH sync_rtags_cur INTO sync_rtags_rec;
1373 dpurdie 17013
 
3959 dpurdie 17014
	WHILE sync_rtags_cur%FOUND
17015
	LOOP
17016
		DELETE FROM RELEASE_CONTENT
17017
		 WHERE rtag_id = sync_rtags_rec.rtag_id
17018
	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 17019
 
3959 dpurdie 17020
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
17021
	   		   VALUES ( sync_rtags_rec.rtag_id,
17022
		       		  	nPv_id,
17023
						sync_rtags_rec.BASE_VIEW_ID,
17024
	           			Ora_Sysdate,
17025
	           			nUser_id,
17026
 
17027
	      	   		   );
1373 dpurdie 17028
 
3959 dpurdie 17029
-- 		UPDATE RELEASE_CONTENT
17030
-- 	       SET pv_id = nPv_id,
17031
-- 	           insert_stamp = Ora_Sysdate,
17032
-- 	           insertor_id = nUser_id
17033
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
17034
-- 	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 17035
 
3959 dpurdie 17036
		FETCH sync_rtags_cur INTO sync_rtags_rec;
17037
	END LOOP;
1373 dpurdie 17038
 
3959 dpurdie 17039
	CLOSE sync_rtags_cur;
17040
 
17041
END Sync_Projects_New_Version;
4040 dpurdie 17042
 
1374 dpurdie 17043
/
1373 dpurdie 17044
 
4040 dpurdie 17045
/
17046
--------------------------------------------------------
17047
--  DDL for Procedure TEST
17048
--------------------------------------------------------
17049
set define off;
17050
 
3959 dpurdie 17051
  CREATE OR REPLACE PROCEDURE "TEST" 
17052
IS
1373 dpurdie 17053
 
3959 dpurdie 17054
proc_id NUMBER;
17055
/******************************************************************************
17056
   NAME:       DELETE_DO_NOT_RIPPLE
17057
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17058
               IS RELEASED
1373 dpurdie 17059
 
3959 dpurdie 17060
   REVISIONS:
17061
   Ver        Date        Author           Description
17062
   ---------  ----------  ---------------  ------------------------------------
17063
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 17064
 
3959 dpurdie 17065
   NOTES:
17066
 
17067
   Automatically available Auto Replace Keywords:
17068
      Object Name:     DELETE_DO_NOT_RIPPLE
17069
      Sysdate:         21/04/2006
17070
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17071
      Username:         (set in TOAD Options, Procedure Editor)
17072
      Table Name:       (set in the "New PL/SQL Object" dialog)
17073
 
17074
******************************************************************************/
17075
   CURSOR ripple_cur
17076
   IS
17077
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
17078
 
17079
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 17080
BEGIN
3959 dpurdie 17081
   OPEN ripple_cur;
1373 dpurdie 17082
 
3959 dpurdie 17083
   FETCH ripple_cur
17084
    INTO ripple_rec;
1373 dpurdie 17085
 
3959 dpurdie 17086
   WHILE ripple_cur%FOUND
17087
   LOOP
17088
 
17089
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
17090
 
17091
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
17092
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 17093
 
3959 dpurdie 17094
      FETCH ripple_cur
17095
       INTO ripple_rec;
17096
   END LOOP;
17097
END test;
4040 dpurdie 17098
 
1374 dpurdie 17099
/
1373 dpurdie 17100
 
4040 dpurdie 17101
/
17102
--------------------------------------------------------
17103
--  DDL for Procedure TEST_MARCO
17104
--------------------------------------------------------
17105
set define off;
17106
 
3959 dpurdie 17107
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
1373 dpurdie 17108
/******************************************************************************
3959 dpurdie 17109
   NAME:       TEST_MARCO
1373 dpurdie 17110
   PURPOSE:    
17111
 
17112
   REVISIONS:
17113
   Ver        Date        Author           Description
17114
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 17115
   1.0        2/03/2007          1. Created this procedure.
1373 dpurdie 17116
 
17117
   NOTES:
17118
 
17119
   Automatically available Auto Replace Keywords:
3959 dpurdie 17120
      Object Name:     TEST_MARCO
17121
      Sysdate:         2/03/2007
17122
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
1373 dpurdie 17123
      Username:         (set in TOAD Options, Procedure Editor)
17124
      Table Name:       (set in the "New PL/SQL Object" dialog)
17125
 
17126
******************************************************************************/
17127
 
3959 dpurdie 17128
parPv_id    NUMBER;
17129
parPkg_id   NUMBER;
17130
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
17131
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
17132
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
1373 dpurdie 17133
BEGIN
17134
 
3959 dpurdie 17135
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
1373 dpurdie 17136
 
3959 dpurdie 17137
        /* LOG ACTION */
17138
        Log_Action ( parPv_id, 'new_version', 3764,
17139
        			 'New package version: '|| parPv_id || '.' );
17140
 
17141
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
1373 dpurdie 17142
 
3959 dpurdie 17143
     -- Clone Package Version Details --
17144
            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,
17145
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
17146
                SELECT parPv_id         AS pv_id,
17147
                       pv.pkg_id        AS pkg_id,
17148
                       parPv_id || '.'    AS pkg_version,
17149
                       'N'              AS dlocked,
17150
                       Ora_Sysdate      AS created_stamp,
17151
                       3764        AS creator_id,
17152
                       Ora_Sysdatetime  AS modified_stamp,
17153
                       3764        AS modifier_id,
17154
                       SSV_MM          AS V_MM,
17155
                       SSV_NMM         AS V_NMM,
17156
                       SSV_EXT          AS V_EXT,
17157
                       pv.src_path,
17158
                       pv.pv_description,
17159
                       pv.PV_OVERVIEW,
17160
                       112982 	AS LAST_PV_ID,
17161
                       pv.owner_id,
17162
					   pv.BUILD_TYPE,
17163
					   pv.IS_BUILD_ENV_REQUIRED,
17164
					   pv.bs_id,
17165
					   pv.is_autobuildable,
17166
					   pv.IS_DEPLOYABLE
17167
                  FROM PACKAGE_VERSIONS pv
17168
                 WHERE pv.pv_id = 112982;		
1373 dpurdie 17169
 
3959 dpurdie 17170
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
1373 dpurdie 17171
 
17172
 
3959 dpurdie 17173
END TEST_MARCO;
4040 dpurdie 17174
 
3959 dpurdie 17175
/
1373 dpurdie 17176
 
4040 dpurdie 17177
/
17178
--------------------------------------------------------
17179
--  DDL for Procedure TOUCH_RELEASE
17180
--------------------------------------------------------
17181
set define off;
17182
 
3959 dpurdie 17183
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
17184
/* ---------------------------------------------------------------------------
17185
    The purpose of this procedure is to flag in the database that the specified
17186
    release has changed to an extent that the procedure Rebuild_Environment
17187
    should be called at the next opportunity in order that the package state
17188
    icons are all re-evaluated.
17189
    The package state icons are controlled using the pkg_state column in the
17190
    release_content table, and Rebuild_Environment updates that column.
17191
    It will be through user action in the website that Rebuild_Environment will
17192
    be called, for example:
17193
      a) when setting/clearing ignore warnings checkboxes
17194
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
17195
      c) when someone opens the build order report form
17196
      d) when someone modifies dependencies of a package
17197
      + other scenarios (?)
17198
   --------------------------------------------------------------------------- */
17199
BEGIN
17200
   -- Touch Release for Rebuild
17201
   UPDATE RELEASE_TAGS rt SET
17202
          rt.REBUILD_ENV = 'Y',
17203
          rt.REBUILD_STAMP = 0
17204
    WHERE rt.RTAG_ID = nRtagId;
1373 dpurdie 17205
 
3959 dpurdie 17206
END Touch_Release;
4040 dpurdie 17207
 
1374 dpurdie 17208
/
1373 dpurdie 17209
 
4040 dpurdie 17210
/
17211
--------------------------------------------------------
17212
--  DDL for Procedure TOUCH_RELEASE_BULK
17213
--------------------------------------------------------
17214
set define off;
17215
 
1373 dpurdie 17216
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
17217
/* ---------------------------------------------------------------------------
17218
    Version: 3.0
17219
   --------------------------------------------------------------------------- */
17220
 
17221
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17222
 
17223
BEGIN
17224
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
17225
 
17226
	 -- Touch Release for Rebuild
17227
     UPDATE RELEASE_TAGS rt SET
17228
     	rt.REBUILD_ENV = 'Y',
17229
        rt.REBUILD_STAMP = 0
17230
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
17231
 
17232
 
17233
END Touch_Release_Bulk;
4040 dpurdie 17234
 
1374 dpurdie 17235
/
1373 dpurdie 17236
 
4040 dpurdie 17237
/
17238
--------------------------------------------------------
17239
--  DDL for Procedure TO_INSERT_VTREE_ID
17240
--------------------------------------------------------
17241
set define off;
17242
 
3959 dpurdie 17243
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
1373 dpurdie 17244
 
3959 dpurdie 17245
/******************************************************************************
17246
   NAME:       TO_INSERT_VTREE_ID
17247
   PURPOSE:    
1373 dpurdie 17248
 
3959 dpurdie 17249
   REVISIONS:
17250
   Ver        Date        Author           Description
17251
   ---------  ----------  ---------------  ------------------------------------
17252
   1.0        2/02/2007          1. Created this procedure.
1373 dpurdie 17253
 
3959 dpurdie 17254
   NOTES:
1373 dpurdie 17255
 
3959 dpurdie 17256
   Automatically available Auto Replace Keywords:
17257
      Object Name:     TO_INSERT_VTREE_ID
17258
      Sysdate:         2/02/2007
17259
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
17260
      Username:         (set in TOAD Options, Procedure Editor)
17261
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17262
 
3959 dpurdie 17263
******************************************************************************/
17264
VTreeId NUMBER;																			  																	   
1373 dpurdie 17265
 
17266
 
3959 dpurdie 17267
	CURSOR curInfo IS
17268
    SELECT RTAG_ID
17269
	FROM RELEASE_TAGS
17270
	WHERE VTREE_ID IS NULL;
17271
    recInfo curInfo%ROWTYPE;
17272
 
17273
 
1373 dpurdie 17274
BEGIN
17275
 
3959 dpurdie 17276
	OPEN curInfo;
17277
    FETCH curInfo INTO recInfo;
17278
 
17279
	WHILE curInfo%FOUND
17280
	LOOP
17281
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
1373 dpurdie 17282
 
3959 dpurdie 17283
		UPDATE RELEASE_TAGS
17284
		SET VTREE_ID = VTreeId
17285
		WHERE RTAG_ID = recInfo.RTAG_ID;
1373 dpurdie 17286
 
3959 dpurdie 17287
		FETCH curInfo INTO recInfo;
17288
	END LOOP;
1373 dpurdie 17289
 
3959 dpurdie 17290
	CLOSE curInfo;
1373 dpurdie 17291
 
3959 dpurdie 17292
END TO_INSERT_VTREE_ID;
4040 dpurdie 17293
 
1374 dpurdie 17294
/
1373 dpurdie 17295
 
4040 dpurdie 17296
/
17297
--------------------------------------------------------
17298
--  DDL for Procedure UNDEPRECATE_PACKAGE
17299
--------------------------------------------------------
17300
set define off;
17301
 
1373 dpurdie 17302
  CREATE OR REPLACE PROCEDURE "UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
17303
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
17304
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
17305
											   	 nUserId IN NUMBER) IS
17306
 
17307
ext VARCHAR2(50);
17308
PvIdList VARCHAR2(32767);
17309
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17310
PvId NUMBER;
17311
sComments VARCHAR2(32767);
17312
 
17313
BEGIN
17314
 
17315
 
17316
 
17317
	--Extract the package extension
17318
	SELECT V_EXT into ext 
17319
	FROM PACKAGE_VERSIONS 
17320
	WHERE PV_ID = nPvId;
17321
 
17322
	--SELECT COMMENTS into sComments 
17323
	--FROM DEPRECATED_PACKAGES
17324
	--WHERE RTAG_ID = nRtagId
17325
	--AND V_EXT = ext
17326
	--AND PKG_ID = nPkgId;
17327
 
17328
	--SELECT PV_ID into PvIdList FROM
17329
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
17330
	--AND PKG_STATE = 6
17331
	--AND PV_ID NOT IN nPvId;
17332
 
17333
 
17334
	IF ext IS NOT NULL THEN
17335
       -- Undeprecate Package
17336
       DELETE FROM DEPRECATED_PACKAGES 
17337
	   WHERE RTAG_ID = nRtagId 
17338
	   AND PKG_ID = nPkgId
17339
	   AND V_EXT = ext;	
17340
 
17341
		UPDATE RELEASE_CONTENT 
17342
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
17343
		WHERE RTAG_ID = nRtagId
17344
		AND PV_ID IN (SELECT PV.PV_ID 
17345
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
17346
					  WHERE PKG.PKG_ID = PV.PKG_ID
17347
					  AND PKG.PKG_ID = nPkgId
17348
					  AND PV.V_EXT = ext
17349
					  UNION
17350
					  SELECT DISTINCT
17351
	 	 		  	 		   qry.PV_ID
17352
							        FROM (
17353
									 	  SELECT dep.*,
17354
										  LEVEL AS LEVEL_NUM
17355
										  FROM PACKAGE_DEPENDENCIES dep
17356
	 								START WITH dep.DPV_ID IN ( nPvId )
17357
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
17358
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
17359
	 								) qry,
17360
									PACKAGES pkg,
17361
									PACKAGE_VERSIONS pv,
17362
									RELEASE_CONTENT rc
17363
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
17364
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
17365
 
17366
					 );	 
17367
 
17368
	ELSE
17369
       -- Undeprecate Package
17370
       DELETE FROM DEPRECATED_PACKAGES 
17371
	   WHERE RTAG_ID = nRtagId 
17372
	   AND PKG_ID = nPkgId
17373
	   AND V_EXT IS NULL;	
17374
 
17375
		UPDATE RELEASE_CONTENT 
17376
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
17377
		WHERE RTAG_ID = nRtagId
17378
		AND PV_ID IN (SELECT PV.PV_ID 
17379
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
17380
					  WHERE PKG.PKG_ID = PV.PKG_ID
17381
					  AND PKG.PKG_ID = nPkgId
17382
					  AND PV.V_EXT IS NULL
17383
					  UNION
17384
					  SELECT DISTINCT
17385
	 	 		  	 		   qry.PV_ID
17386
							        FROM (
17387
									 	  SELECT dep.*,
17388
										  LEVEL AS LEVEL_NUM
17389
										  FROM PACKAGE_DEPENDENCIES dep
17390
	 								START WITH dep.DPV_ID IN ( nPvId )
17391
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
17392
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
17393
	 								) qry,
17394
									PACKAGES pkg,
17395
									PACKAGE_VERSIONS pv,
17396
									RELEASE_CONTENT rc
17397
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
17398
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
17399
 
17400
					 );	 	   
17401
 
17402
	END IF;
17403
 
17404
	--IF PvIdList IS NOT NULL THEN
17405
 
17406
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
17407
 
17408
	 --  FOR i IN 1..nIdCollector.COUNT
17409
	 --  LOOP
17410
	--	   PvId := nIdCollector(i);
17411
 
17412
 
17413
 
17414
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
17415
	--		END LOOP;
17416
	--END IF;
17417
 
17418
	Rebuild_environment(nRtagId);			 
17419
 
17420
 
17421
 
17422
END Undeprecate_Package;
4040 dpurdie 17423
 
1374 dpurdie 17424
/
1373 dpurdie 17425
 
4040 dpurdie 17426
/
17427
--------------------------------------------------------
17428
--  DDL for Procedure UNLOCK_PACKAGE
17429
--------------------------------------------------------
17430
set define off;
17431
 
3959 dpurdie 17432
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
17433
											 nUserId IN NUMBER ) IS
17434
/* ---------------------------------------------------------------------------
17435
    Author: Rupesh Solanki
17436
 
17437
	Version: 4.0
17438
   --------------------------------------------------------------------------- */
17439
   STATE CHAR;
17440
 
17441
BEGIN
17442
 
17443
	SELECT DLOCKED INTO STATE
17444
	FROM PACKAGE_VERSIONS
17445
	WHERE PV_ID = nPvId; 
1373 dpurdie 17446
 
3959 dpurdie 17447
	IF STATE = 'A' THEN --It was made official for autobuilds
17448
		-- Unlock Package
17449
		UPDATE PACKAGE_VERSIONS pv SET
17450
		pv.DLOCKED = 'P'
17451
		WHERE pv.PV_ID = nPvId;	
17452
	ELSE
17453
		-- Unlock Package
17454
		UPDATE PACKAGE_VERSIONS pv SET
17455
		pv.DLOCKED = 'N'
17456
		WHERE pv.PV_ID = nPvId;	
17457
 
17458
	END IF;	   
17459
 
17460
    /* LOG ACTION */
17461
   	Log_Action ( nPvId, 'unlock_package', nUserId );
17462
 
17463
END Unlock_Package;
4040 dpurdie 17464
 
3959 dpurdie 17465
/
17466
 
4040 dpurdie 17467
/
17468
--------------------------------------------------------
17469
--  DDL for Procedure UNRIPPLE_PACKAGE
17470
--------------------------------------------------------
17471
set define off;
17472
 
3959 dpurdie 17473
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
17474
        sPvIdList IN VARCHAR2,
17475
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
17476
        nUserId IN NUMBER
17477
    ) IS
17478
/* ---------------------------------------------------------------------------
17479
    Version: 4.1
17480
   --------------------------------------------------------------------------- */
17481
 
17482
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17483
 
17484
BEGIN
17485
 
17486
    IF (sPvIdList IS NULL) THEN
17487
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
17488
    END IF;
17489
 
17490
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
17491
 
17492
    -- UnRipple Package
17493
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
17494
    SELECT nRtagId, pv.PV_ID
17495
    FROM PACKAGE_VERSIONS pv
17496
    WHERE pv.PV_ID IN (
17497
        SELECT *
17498
        FROM TABLE (
17499
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
17500
        )
17501
    );
17502
 
17503
    /* LOG ACTION */
17504
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
17505
 
17506
END UnRipple_Package;
4040 dpurdie 17507
 
3959 dpurdie 17508
/
17509
 
4040 dpurdie 17510
/
17511
--------------------------------------------------------
17512
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
17513
--------------------------------------------------------
17514
set define off;
17515
 
3959 dpurdie 17516
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
17517
        nPvId IN NUMBER,
17518
        nRtagId IN NUMBER,
17519
        nUserId IN NUMBER,
17520
        nrootCausePvId IN NUMBER,
17521
        srootCause IN VARCHAR2,
17522
        srootFile IN VARCHAR2
17523
    ) IS
17524
    ReleaseLocation VARCHAR2(4000);
17525
BEGIN
17526
 
17527
    -- UnRipple Package
17528
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
17529
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
17530
 
17531
    /* LOG ACTION */
17532
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
17533
              FROM PROJECTS proj,
17534
                   RELEASE_TAGS rt
17535
             WHERE rt.RTAG_ID = nRtagId
17536
               AND rt.PROJ_ID = proj.PROJ_ID;
17537
 
17538
    /* LOG ACTION */
17539
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
17540
 
17541
END UnRipple_Package_Indirect;
4040 dpurdie 17542
 
3959 dpurdie 17543
/
17544
 
4040 dpurdie 17545
/
17546
--------------------------------------------------------
17547
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
17548
--------------------------------------------------------
17549
set define off;
17550
 
3959 dpurdie 17551
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
17552
													 pnPv_id IN NUMBER,
17553
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
17554
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
17555
                                                     pnUser_id IN NUMBER,
17556
                                                     outErrCode OUT NUMBER
17557
                                                    ) IS
17558
/* ---------------------------------------------------------------------------
17559
    Version: 3.0.1
17560
   --------------------------------------------------------------------------- */
17561
 
17562
    newID NUMBER;
17563
 
17564
    /* Disallow duplicate Note Titles */
17565
	CURSOR an_duplicate_cur IS
17566
        SELECT COUNT(*) AS cnt_note
17567
          FROM ADDITIONAL_NOTES
17568
         WHERE pv_id = pnPv_id
17569
           AND note_id != pnNote_id
17570
           AND note_title = psNote_title;
17571
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
17572
 
17573
BEGIN
17574
	outErrCode := -1;		-- Set default return error code to ERROR state
17575
 
17576
	OPEN an_duplicate_cur;
17577
    FETCH an_duplicate_cur INTO an_duplicate_rec;
17578
 
17579
    IF an_duplicate_rec.cnt_note < 1
17580
    THEN
17581
		--- Update Additional Note ---
17582
	    UPDATE ADDITIONAL_NOTES SET
17583
		       note_title = psNote_title,
17584
		       note_body = psNote_body,
17585
		       mod_date = Ora_Sysdate,
17586
		       mod_user = pnUser_id
17587
         WHERE note_id = pnNote_id
17588
           AND pv_id = pnPv_id;
17589
		outErrCode := 0;		-- Set return to SUCCESS
17590
	END IF;
17591
 
17592
	CLOSE an_duplicate_cur;
17593
END Update_Additional_Note;
4040 dpurdie 17594
 
3959 dpurdie 17595
/
17596
 
4040 dpurdie 17597
/
17598
--------------------------------------------------------
17599
--  DDL for Procedure UPDATE_DEPRECATION_STATE
17600
--------------------------------------------------------
17601
set define off;
17602
 
3959 dpurdie 17603
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
17604
 
17605
recno NUMBER;
17606
 
17607
CURSOR deprecate_cur IS
17608
 
17609
SELECT rc.pv_id
17610
FROM release_content rc
17611
WHERE rtag_id = nnrtag_id
17612
 AND deprecated_state IN(7);
17613
 
17614
deprecate_rec deprecate_cur % rowtype;
17615
 
17616
BEGIN
17617
 
17618
  OPEN deprecate_cur;
17619
 
17620
  FETCH deprecate_cur
17621
  INTO deprecate_rec;
17622
 
17623
  WHILE deprecate_cur % FOUND
17624
  LOOP
17625
 
17626
    SELECT COUNT(*)
17627
    INTO recno
17628
    FROM package_dependencies pd,
17629
      release_content rc
17630
    WHERE pd.pv_id = deprecate_rec.pv_id
17631
     AND rc.pv_id = pd.dpv_id
17632
     AND rc.rtag_id = nnrtag_id
17633
     AND rc.deprecated_state IN(6,   7);
17634
 
17635
    IF recno = 0 THEN
17636
 
17637
      UPDATE release_content
17638
      SET pkg_id = NULL, deprecated_state = NULL
17639
      WHERE pv_id = deprecate_rec.pv_id
17640
       AND rtag_id = nnrtag_id;
17641
 
17642
    END IF;
17643
 
17644
    FETCH deprecate_cur
17645
    INTO deprecate_rec;
17646
  END LOOP;
17647
 
17648
END;
4040 dpurdie 17649
 
3959 dpurdie 17650
/
17651
 
4040 dpurdie 17652
/
17653
--------------------------------------------------------
17654
--  DDL for Procedure UPDATE_MISC_VIEW
17655
--------------------------------------------------------
17656
set define off;
17657
 
3959 dpurdie 17658
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
1373 dpurdie 17659
/******************************************************************************
3959 dpurdie 17660
   NAME:       UPDATE_MISC_VIEW
17661
   PURPOSE:    
1373 dpurdie 17662
 
17663
   REVISIONS:
17664
   Ver        Date        Author           Description
17665
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 17666
   1.0        16/03/2007          1. Created this procedure.
1373 dpurdie 17667
 
17668
   NOTES:
17669
 
17670
   Automatically available Auto Replace Keywords:
3959 dpurdie 17671
      Object Name:     UPDATE_MISC_VIEW
17672
      Sysdate:         16/03/2007
17673
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
1373 dpurdie 17674
      Username:         (set in TOAD Options, Procedure Editor)
17675
      Table Name:       (set in the "New PL/SQL Object" dialog)
17676
 
17677
******************************************************************************/
3959 dpurdie 17678
   CURSOR view_cur /*Create a record set to store the ripple data*/
17679
   IS
17680
   	 SELECT pkg.pkg_id, rc.base_view_id 
17681
	 FROM package_versions pv, packages pkg, release_content rc
17682
	 where rc.rtag_id = 2362
17683
	 and rc.pv_id = pv.pv_id
17684
	 and pv.pkg_id = pkg.pkg_id;
17685
   view_rec   view_cur%ROWTYPE;
17686
 
17687
 
17688
 
1373 dpurdie 17689
BEGIN
3959 dpurdie 17690
   OPEN view_cur;
1373 dpurdie 17691
 
3959 dpurdie 17692
   FETCH view_cur
17693
    INTO view_rec;
1373 dpurdie 17694
 
3959 dpurdie 17695
   WHILE view_cur%FOUND
17696
   LOOP
1373 dpurdie 17697
 
3959 dpurdie 17698
 
17699
	   update release_content
17700
	   set base_view_id = view_rec.base_view_id
17701
	   where rtag_id = 8027
17702
	   and pv_id IN 
17703
	   (
17704
	   	select pv.pv_id from release_content rc, package_versions pv
17705
		where rc.rtag_id = 8027
17706
		and pv.pv_id = rc.pv_id
17707
		and pv.pkg_id = view_rec.pkg_id 
17708
 
17709
	   );
17710
 
17711
 
1373 dpurdie 17712
 
3959 dpurdie 17713
 
17714
 
17715
 
17716
 
17717
 
1373 dpurdie 17718
 
3959 dpurdie 17719
   FETCH view_cur
17720
   		 INTO view_rec;
17721
   END LOOP;	 
1373 dpurdie 17722
 
17723
 
17724
 
17725
 
3959 dpurdie 17726
 
17727
END UPDATE_MISC_VIEW; 
4040 dpurdie 17728
 
1374 dpurdie 17729
/
1373 dpurdie 17730
 
4040 dpurdie 17731
/
17732
--------------------------------------------------------
17733
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
17734
--------------------------------------------------------
17735
set define off;
17736
 
3959 dpurdie 17737
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
17738
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
17739
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17740
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
17741
                                                        NNuser_id IN NUMBER,
17742
                                                        NNdelete_old_dependency IN NUMBER
17743
                                                       ) IS
1373 dpurdie 17744
/* ---------------------------------------------------------------------------
3959 dpurdie 17745
    Version: 3.3
1373 dpurdie 17746
   --------------------------------------------------------------------------- */
17747
 
3959 dpurdie 17748
    retPV_ID NUMBER;
17749
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
17750
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17751
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17752
    NNpkg_id NUMBER;
17753
    NNdpkg_id NUMBER;
1373 dpurdie 17754
 
17755
BEGIN
3959 dpurdie 17756
    --- Seed database with package_name and version if required ---
17757
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
1373 dpurdie 17758
 
3959 dpurdie 17759
    -- get v_ext,pkg_id of current dependency
17760
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
17761
      FROM PACKAGE_VERSIONS
17762
     WHERE pv_id = retPV_ID;
1373 dpurdie 17763
 
3959 dpurdie 17764
    -- get pkg_id of parent package
17765
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
17766
      FROM PACKAGE_VERSIONS
17767
     WHERE pv_id = NNpv_id;
1373 dpurdie 17768
 
17769
 
3959 dpurdie 17770
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
17771
    	( (PvIsPatch IS NOT NULL) )THEN
1373 dpurdie 17772
 
3959 dpurdie 17773
	    IF NNdelete_old_dependency = 1 THEN
17774
	        /* Used for CUSTOM dependency add/edit */
1373 dpurdie 17775
 
3959 dpurdie 17776
	        --- Remove old dependency ---
17777
            IF (PvIsPatch IS NULL) THEN
17778
            	-- Do it for Packages
17779
		        DELETE FROM PACKAGE_DEPENDENCIES
17780
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17781
		            (
17782
		            SELECT dep.*
17783
		              FROM PACKAGE_DEPENDENCIES dep,
17784
		                   PACKAGE_VERSIONS dpv,
17785
		                   PACKAGE_VERSIONS pv
17786
		             WHERE dep.dpv_id = dpv.pv_id
17787
		               AND dep.pv_id = NNpv_id
17788
		               AND pv.pv_id = retPV_ID
17789
		               AND dpv.pkg_id = pv.pkg_id
17790
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
17791
		            );
17792
            ELSE
17793
            	-- Do it for Patches
17794
                DELETE FROM PACKAGE_DEPENDENCIES
17795
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17796
		            (
17797
		            SELECT dep.*
17798
		              FROM PACKAGE_DEPENDENCIES dep
17799
		             WHERE dep.dpv_id = retPV_ID
17800
		               AND dep.pv_id = NNpv_id
17801
		            );
17802
			END IF;
1373 dpurdie 17803
 
3959 dpurdie 17804
	    END IF;
1373 dpurdie 17805
 
3959 dpurdie 17806
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
17807
 
17808
	    --- Add new dependency ---
17809
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
17810
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
17811
 
17812
	END IF;
17813
 
17814
END Update_Package_Dependency;
4040 dpurdie 17815
 
1374 dpurdie 17816
/
1373 dpurdie 17817
 
4040 dpurdie 17818
/
17819
--------------------------------------------------------
17820
--  DDL for Procedure UPDATE_PACKAGE_STATES
17821
--------------------------------------------------------
17822
set define off;
17823
 
3959 dpurdie 17824
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
17825
                                                    NNsession_num IN NUMBER ) IS
17826
/* =============  STATE RULES =================== */
17827
/*
17828
   MNR   MRR   MN   MR    |   pkg_state
17829
   ------------------------------------
17830
 
17831
 
17832
 
17833
 
17834
   ------------------------------------
17835
 
17836
 
17837
 
17838
 
17839
   ------------------------------------
17840
    1     0     0     0   |      MINOR_READY
17841
    1     0     0     1   |      MAJOR
17842
    1     0     1     0   |      MINOR
17843
    1     0     1     1   |      MAJOR
17844
   ------------------------------------
17845
    1     1     0     0   |      MAJOR_READY
17846
    1     1     0     1   |      MAJOR
17847
    1     1     1     0   |      MAJOR
17848
    1     1     1     1   |      MAJOR
17849
   ------------------------------------
17850
*/
17851
BEGIN
17852
    /*----------------------------------------------
17853
    ||              MINOR READY
17854
    */----------------------------------------------
1373 dpurdie 17855
 
3959 dpurdie 17856
    UPDATE release_content
17857
       SET pkg_state = 4
17858
     WHERE rtag_id = NNrtag_id
17859
       AND pv_id IN
17860
           (
17861
           SELECT DISTINCT pv_id
17862
           FROM temp_env_states
17863
           WHERE session_num = NNsession_num
17864
             AND level_num = 1
17865
             AND tes_state = 2
17866
           );
1373 dpurdie 17867
 
3959 dpurdie 17868
    /*----------------------------------------------
17869
    ||              MAJOR READY
17870
    */----------------------------------------------
17871
    UPDATE release_content
17872
       SET pkg_state = 3
17873
     WHERE rtag_id = NNrtag_id
17874
       AND pv_id IN
17875
           (
17876
           SELECT DISTINCT pv_id
17877
           FROM temp_env_states
17878
           WHERE session_num = NNsession_num
17879
             AND level_num = 1
17880
             AND tes_state IN (0,1)
17881
           );
1373 dpurdie 17882
 
3959 dpurdie 17883
    /*----------------------------------------------
17884
    ||                MINOR
17885
    */----------------------------------------------
17886
    UPDATE release_content
17887
       SET pkg_state = 2
17888
     WHERE rtag_id = NNrtag_id
17889
       AND pv_id IN
17890
           (
17891
           SELECT DISTINCT pv_id
17892
            FROM temp_env_states
17893
            WHERE session_num = NNsession_num
17894
              AND level_num >= 2
17895
              AND tes_state = 2
17896
            MINUS
17897
           SELECT pv_id
17898
             FROM release_content
17899
            WHERE rtag_id = NNrtag_id
17900
              AND pkg_state = 3
17901
           );
1373 dpurdie 17902
 
3959 dpurdie 17903
    /*----------------------------------------------
17904
    ||                MAJOR
17905
    */----------------------------------------------
17906
    UPDATE release_content
17907
       SET pkg_state = 1
17908
     WHERE rtag_id = NNrtag_id
17909
       AND pv_id IN
17910
           (
17911
           SELECT DISTINCT pv_id
17912
           FROM temp_env_states
17913
           WHERE session_num = NNsession_num
17914
             AND level_num >= 2
17915
             AND tes_state IN (0,1)
17916
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
17917
           UNION
17918
           SELECT DISTINCT tes.pv_id
17919
           FROM temp_env_states tes,
17920
                release_content rc
17921
           WHERE tes.session_num = NNsession_num
17922
             AND tes.level_num >= 2
17923
             AND tes.tes_state = 2
17924
             AND rtag_id = NNrtag_id
17925
             AND rc.pv_id = tes.pv_id
17926
             AND rc.pkg_state = 3
17927
           );
1373 dpurdie 17928
 
3959 dpurdie 17929
    /*----------------------------------------------
17930
    ||                 OK
17931
    */----------------------------------------------
17932
    UPDATE release_content
17933
       SET pkg_state = 0
17934
     WHERE rtag_id = NNrtag_id
17935
       AND pv_id IN
17936
           (
17937
           SELECT rc.pv_id
17938
             FROM release_content rc
17939
            WHERE rc.rtag_id = NNrtag_id
17940
              AND NOT rc.pv_id IN
17941
                    (
17942
                     SELECT DISTINCT pv_id
17943
                     FROM temp_env_states WHERE session_num = NNsession_num
17944
                    )
17945
           );
1373 dpurdie 17946
 
3959 dpurdie 17947
      Update_Deprecation_State (NNrtag_id);
1373 dpurdie 17948
 
3959 dpurdie 17949
    /*----------------------------------------------
17950
    ||              PEGGED VERSIONS DEPENDENT
17951
    */----------------------------------------------
17952
    UPDATE release_content
17953
       SET pkg_state = 10
17954
     WHERE rtag_id = NNrtag_id
17955
       AND pv_id IN
17956
           (
17957
           SELECT DISTINCT pv_id
17958
           FROM pegged_versions pegv
17959
           WHERE pegv.rtag_id = NNrtag_id
17960
           );
1373 dpurdie 17961
 
3959 dpurdie 17962
    /*----------------------------------------------
17963
    ||              ADVISORY RIPPLE
17964
    */----------------------------------------------
17965
    UPDATE release_content
17966
       SET pkg_state = 8
17967
     WHERE rtag_id = NNrtag_id
17968
       AND pv_id IN
17969
           (
17970
           SELECT DISTINCT pv_id
17971
           FROM advisory_ripple ar
17972
           WHERE ar.rtag_id = NNrtag_id
17973
           )
17974
       AND pv_id IN
17975
           (
17976
           SELECT DISTINCT pv_id
17977
           FROM release_content rc
17978
           WHERE rc.rtag_id = NNrtag_id
17979
           );
1373 dpurdie 17980
 
3959 dpurdie 17981
END Update_Package_States;
4040 dpurdie 17982
 
3959 dpurdie 17983
/
1373 dpurdie 17984
 
4040 dpurdie 17985
/
17986
--------------------------------------------------------
17987
--  DDL for Procedure UPDATE_PROCESSES
17988
--------------------------------------------------------
17989
set define off;
17990
 
3959 dpurdie 17991
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
17992
IS
1373 dpurdie 17993
 
3959 dpurdie 17994
proc_id NUMBER;
17995
/******************************************************************************
17996
   NAME:       DELETE_DO_NOT_RIPPLE
17997
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17998
               IS RELEASED
1373 dpurdie 17999
 
3959 dpurdie 18000
   REVISIONS:
18001
   Ver        Date        Author           Description
18002
   ---------  ----------  ---------------  ------------------------------------
18003
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 18004
 
3959 dpurdie 18005
   NOTES:
1373 dpurdie 18006
 
3959 dpurdie 18007
   Automatically available Auto Replace Keywords:
18008
      Object Name:     DELETE_DO_NOT_RIPPLE
18009
      Sysdate:         21/04/2006
18010
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
18011
      Username:         (set in TOAD Options, Procedure Editor)
18012
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 18013
 
3959 dpurdie 18014
******************************************************************************/
18015
   CURSOR ripple_cur
18016
   IS
18017
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
1373 dpurdie 18018
 
3959 dpurdie 18019
   ripple_rec   ripple_cur%ROWTYPE;
18020
BEGIN
18021
   OPEN ripple_cur;
18022
 
18023
   FETCH ripple_cur
18024
    INTO ripple_rec;
18025
 
18026
   WHILE ripple_cur%FOUND
18027
   LOOP
18028
 
18029
 
18030
update deployment_manager.processes_config 
18031
set proc_id = ripple_rec.proc_id
18032
where pkg_health_tag = ripple_rec.proc_name
18033
and cmd_interface IS NULL
18034
and pkg_owner IS NULL
18035
and is_interface IS NULL; 
18036
 
18037
 
18038
      FETCH ripple_cur
18039
       INTO ripple_rec;
18040
   END LOOP;
18041
END UPDATE_PROCESSES;
4040 dpurdie 18042
 
1374 dpurdie 18043
/
1373 dpurdie 18044
 
4040 dpurdie 18045
/
18046
--------------------------------------------------------
18047
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
18048
--------------------------------------------------------
18049
set define off;
18050
 
3959 dpurdie 18051
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
18052
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
18053
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
18054
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
18055
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
18056
													    NNuser_id IN NUMBER ) IS
1373 dpurdie 18057
/* ---------------------------------------------------------------------------
3959 dpurdie 18058
    Version: 3.0.1
1373 dpurdie 18059
   --------------------------------------------------------------------------- */
18060
 
3959 dpurdie 18061
    retRTD_ID	NUMBER;
18062
	CURSOR rtd_cur IS
18063
	    SELECT pv.pkg_version, pkg.pkg_name
18064
		  FROM runtime_dependencies rtd,
18065
		       package_versions pv,
18066
			   packages pkg
18067
		 WHERE rtd.rtd_id = pv.pv_id
18068
		   AND pv.pkg_id = pkg.pkg_id
18069
		   AND rtd.pv_id = NNpv_id
18070
		   AND rtd.rtd_id = NNrtd_id;
18071
	   rtd_rec rtd_cur%ROWTYPE;
1373 dpurdie 18072
 
3959 dpurdie 18073
	CURSOR old_rtd_cur IS
18074
	    SELECT pv.pv_id
18075
		  FROM package_versions pv
18076
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
18077
		 	   			 	    FROM package_versions rtdpv
18078
							   WHERE rtdpv.pv_id = NNrtd_id )
18079
		   AND pv.pkg_version = SSrtd_version;
18080
	old_rtd_rec old_rtd_cur%ROWTYPE;
1373 dpurdie 18081
 
3959 dpurdie 18082
 
1373 dpurdie 18083
BEGIN
18084
 
3959 dpurdie 18085
    -- Get current runtime dependency details
18086
	OPEN rtd_cur;
18087
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 18088
 
18089
 
18090
 
18091
 
3959 dpurdie 18092
	IF rtd_rec.pkg_version != SSrtd_version THEN
18093
           -- Version has changed, hence create new runtime dependency --
18094
	    /* NOTE: You must create new version as updating just a version will affect
18095
		        all packages using this runtime dependency and user does not expect that.
18096
		        It is safer to create new version */
18097
		OPEN old_rtd_cur;
18098
		FETCH old_rtd_cur INTO old_rtd_rec;
1373 dpurdie 18099
 
18100
 
3959 dpurdie 18101
		IF old_rtd_cur%NOTFOUND
18102
		THEN
18103
			-- Version not found, hence Create New version --
18104
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 18105
 
3959 dpurdie 18106
			-- Update runtime dependency table --
18107
			UPDATE runtime_dependencies SET
18108
				   rtd_id = retRTD_ID,
18109
				   rtd_url = SSrtd_url,
18110
				   rtd_comments = SSrtd_comments
18111
			 WHERE pv_id = NNpv_id
18112
			   AND rtd_id = NNrtd_id;
1373 dpurdie 18113
 
3959 dpurdie 18114
		ELSE
18115
			-- Update runtime dependency table --
18116
			UPDATE runtime_dependencies SET
18117
				   rtd_id = old_rtd_rec.pv_id,
18118
				   rtd_url = SSrtd_url,
18119
				   rtd_comments = SSrtd_comments
18120
			 WHERE pv_id = NNpv_id
18121
			   AND rtd_id = NNrtd_id;
18122
 
18123
		END IF;
18124
 
18125
 
18126
		CLOSE old_rtd_cur;
18127
 
18128
	ELSE
18129
		--  Version has not changed, hence update everithing except	version --
18130
		UPDATE runtime_dependencies SET
18131
			   rtd_url = SSrtd_url,
18132
			   rtd_comments = SSrtd_comments
18133
		 WHERE pv_id = NNpv_id
18134
		   AND rtd_id = NNrtd_id;
18135
 
18136
 
18137
 
18138
	END IF;
18139
 
18140
 
18141
	CLOSE rtd_cur;
18142
 
18143
END Update_Runtime_Dependency;
4040 dpurdie 18144
 
1374 dpurdie 18145
/
1373 dpurdie 18146
 
4040 dpurdie 18147
/
18148
--------------------------------------------------------
18149
--  DDL for Procedure UPDATE_UNIT_TEST
18150
--------------------------------------------------------
18151
set define off;
18152
 
3959 dpurdie 18153
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
18154
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
18155
											   nPv_id IN NUMBER,
18156
											   nUserId IN NUMBER,
18157
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
18158
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
18159
	                                           sCompletion_date IN VARCHAR2,
18160
											   sDpkg_path IN VARCHAR2,
18161
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
18162
											   sResults IN VARCHAR2,
18163
											   outFileName OUT VARCHAR2
18164
                                              ) IS
1373 dpurdie 18165
/* ---------------------------------------------------------------------------
3959 dpurdie 18166
    Version: 3.1.0
1373 dpurdie 18167
   --------------------------------------------------------------------------- */
3959 dpurdie 18168
 
18169
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 18170
 
3959 dpurdie 18171
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
18172
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 18173
 
3959 dpurdie 18174
 
1373 dpurdie 18175
BEGIN
18176
 
3959 dpurdie 18177
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
18178
       	ResultsURL := sResults;
18179
       ELSE
18180
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
18181
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
18182
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
18183
           END IF;
18184
       END IF;
1373 dpurdie 18185
 
3959 dpurdie 18186
	--- Update Unit Test ---
18187
    UPDATE UNIT_TESTS SET
18188
           TEST_SUMMARY = sTest_summary,
18189
		   NUMOF_TEST = sNumof_test,
18190
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
18191
		   COMPLETED_BY = nUserId,
18192
		   RESULTS_URL = ResultsURL,
18193
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
18194
     WHERE TEST_ID = nTest_id
18195
       AND PV_ID = nPv_id;
1373 dpurdie 18196
 
3959 dpurdie 18197
END Update_Unit_Test;
4040 dpurdie 18198
 
3959 dpurdie 18199
/
1373 dpurdie 18200
 
4040 dpurdie 18201
/
18202
--------------------------------------------------------
18203
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
18204
--------------------------------------------------------
18205
set define off;
18206
 
3959 dpurdie 18207
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
18208
														  pnPv_id IN NUMBER,
18209
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
18210
														  sAcceptanceDate IN VARCHAR2,
18211
														  sAcceptedBy IN NUMBER,
18212
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
18213
														  cUpdateAcceptedStateOnly IN CHAR
18214
					                                     ) IS
18215
/* ---------------------------------------------------------------------------
18216
    Version: 3.0.0
18217
   --------------------------------------------------------------------------- */
1373 dpurdie 18218
 
18219
 
18220
 
3959 dpurdie 18221
BEGIN
18222
	IF cUpdateAcceptedStateOnly = 'Y'
18223
	THEN
18224
		--- Update Accepted State Only ---
18225
		IF ( sAccepted IS NULL )
18226
		THEN
18227
			-- Clear alleptance
18228
			UPDATE UNIT_TESTS SET
18229
		           TEST_ACCEPTED = NULL,
18230
		           ACCEPTANCE_DATE = NULL,
18231
				   ACCEPTED_BY = NULL,
18232
				   REVIEW_COMMENTS = NULL
18233
		     WHERE TEST_ID = pnTest_id
18234
		       AND PV_ID = pnPv_id;
18235
 
18236
	    ELSE
18237
			UPDATE UNIT_TESTS SET
18238
		           TEST_ACCEPTED = sAccepted,
18239
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
18240
				   ACCEPTED_BY = sAcceptedBy
18241
		     WHERE TEST_ID = pnTest_id
18242
		       AND PV_ID = pnPv_id;
18243
 
18244
		END IF;
18245
 
18246
 
18247
	ELSE
18248
		--- Update Unit Test Acceptance ---
18249
	    UPDATE UNIT_TESTS SET
18250
	           TEST_ACCEPTED = sAccepted,
18251
			   REVIEW_COMMENTS = sReviewComments,
18252
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
18253
			   ACCEPTED_BY = sAcceptedBy
18254
	     WHERE TEST_ID = pnTest_id
18255
	       AND PV_ID = pnPv_id;
18256
 
18257
	END IF;
18258
 
18259
END Update_Unit_Test_Acceptance;
4040 dpurdie 18260
 
1374 dpurdie 18261
/
1373 dpurdie 18262
 
4040 dpurdie 18263
/
18264
--------------------------------------------------------
18265
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
18266
--------------------------------------------------------
18267
set define off;
18268
 
3959 dpurdie 18269
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
18270
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
18271
											   nPv_id IN NUMBER,
18272
											   nUserId IN NUMBER,
18273
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
18274
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
18275
	                                           sCompletion_date IN VARCHAR2,
18276
											   sDpkg_path IN VARCHAR2,
18277
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
18278
											   sResults IN VARCHAR2,
18279
											   outFileName OUT VARCHAR2
18280
                                              ) IS
1373 dpurdie 18281
/* ---------------------------------------------------------------------------
3959 dpurdie 18282
    Version: 3.1.0
1373 dpurdie 18283
   --------------------------------------------------------------------------- */
3959 dpurdie 18284
 
18285
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 18286
 
3959 dpurdie 18287
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
18288
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
18289
 
18290
 
1373 dpurdie 18291
BEGIN
18292
 
3959 dpurdie 18293
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
18294
       	ResultsURL := sResults;
18295
       ELSE
18296
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
18297
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
18298
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
18299
           END IF;
18300
       END IF;
1373 dpurdie 18301
 
3959 dpurdie 18302
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
18303
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
18304
    		sResults_url:= 'doc' || '/' || 
18305
			;
18306
        END IF;*/
18307
	--- Update Unit Test ---
18308
    UPDATE UNIT_TESTS SET
18309
           TEST_SUMMARY = sTest_summary,
18310
		   NUMOF_TEST = sNumof_test,
18311
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
18312
		   COMPLETED_BY = nUserId,
18313
		   RESULTS_URL = ResultsURL,
18314
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
18315
     WHERE TEST_ID = nTest_id
18316
       AND PV_ID = nPv_id;
1373 dpurdie 18317
 
3959 dpurdie 18318
END Update_Unit_Test_Test;
4040 dpurdie 18319
 
18320
/
18321
 
18322
/
18323
--------------------------------------------------------
18324
--  DDL for Synonymn APPLICATIONS
18325
--------------------------------------------------------
18326
 
18327
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
18328
/
18329
--------------------------------------------------------
18330
--  DDL for Synonymn APPLICATION_PAGES
18331
--------------------------------------------------------
18332
 
18333
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
18334
/
18335
--------------------------------------------------------
18336
--  DDL for Synonymn CONTROL_OBJECTS
18337
--------------------------------------------------------
18338
 
18339
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
18340
/
18341
--------------------------------------------------------
18342
--  DDL for Synonymn DATA_PERMISSIONS
18343
--------------------------------------------------------
18344
 
18345
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
18346
/
18347
--------------------------------------------------------
18348
--  DDL for Synonymn DATA_TABLES
18349
--------------------------------------------------------
18350
 
18351
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
18352
/
18353
--------------------------------------------------------
18354
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
18355
--------------------------------------------------------
18356
 
18357
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
18358
/
18359
--------------------------------------------------------
18360
--  DDL for Synonymn PERMISSION_TYPES
18361
--------------------------------------------------------
18362
 
18363
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
18364
/
18365
--------------------------------------------------------
18366
--  DDL for Synonymn PK_AMUTILS
18367
--------------------------------------------------------
18368
 
18369
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
18370
/
18371
--------------------------------------------------------
18372
--  DDL for Synonymn PK_SECURITY
18373
--------------------------------------------------------
18374
 
18375
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
18376
/
18377
--------------------------------------------------------
18378
--  DDL for Synonymn ROLES
18379
--------------------------------------------------------
18380
 
18381
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
18382
/
18383
--------------------------------------------------------
18384
--  DDL for Synonymn ROLE_PRIVILEGES
18385
--------------------------------------------------------
18386
 
18387
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
18388
/
18389
--------------------------------------------------------
18390
--  DDL for Synonymn USERS
18391
--------------------------------------------------------
18392
 
18393
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
18394
/
18395
--------------------------------------------------------
18396
--  DDL for Synonymn USER_APPLICATIONS
18397
--------------------------------------------------------
18398
 
18399
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
18400
/
18401
--------------------------------------------------------
18402
--  DDL for Synonymn USER_ROLES
18403
--------------------------------------------------------
18404
 
18405
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
18406
/