Subversion Repositories DevTools

Rev

Rev 53 | Rev 57 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
51 mhunt 1
CREATE OR REPLACE TYPE TDICTIONARY;
2
/
3
 
4
CREATE TABLE PACKAGE_BUILD_ENV
5
(
6
  PV_ID NUMBER NOT NULL,
7
  BE_ID NUMBER NOT NULL,
8
  BUILD_TYPE NUMBER
9
)
10
  TABLESPACE "USERS"
11
  LOGGING 
12
  PCTFREE 10
13
  PCTUSED 40
14
  INITRANS 1
15
  MAXTRANS 255
16
  STORAGE
17
  (
18
    INITIAL 128K
19
    MINEXTENTS 1
20
    MAXEXTENTS 2147483645
21
    FREELISTS 1
22
    FREELIST GROUPS 1
23
    BUFFER_POOL DEFAULT
24
  )
25
;
26
 
27
CREATE TABLE NOTIFICATION_HISTORY
28
(
29
  RTAG_ID NUMBER NOT NULL,
30
  PV_ID NUMBER NOT NULL,
31
  USER_ID NUMBER NOT NULL,
32
  DATE_TIME_STAMP DATE NOT NULL
33
, CONSTRAINT PK_NOTIFICATION_HISTORY PRIMARY KEY
34
  (
35
    RTAG_ID,
36
    PV_ID,
37
    USER_ID
38
  )
39
  ENABLE
40
)
41
  TABLESPACE "USERS"
42
  LOGGING 
43
  PCTFREE 10
44
  PCTUSED 40
45
  INITRANS 1
46
  MAXTRANS 255
47
  STORAGE
48
  (
49
    INITIAL 128K
50
    MINEXTENTS 1
51
    MAXEXTENTS 2147483645
52
    FREELISTS 1
53
    FREELIST GROUPS 1
54
    BUFFER_POOL DEFAULT
55
  )
56
;
57
 
58
CREATE TABLE TEMP_ENV_STATES
59
(
60
  SESSION_NUM NUMBER NOT NULL,
61
  LEVEL_NUM NUMBER NOT NULL,
62
  PV_ID NUMBER NOT NULL,
63
  PKG_ID NUMBER NOT NULL,
64
  V_EXT VARCHAR2(50 BYTE),
65
  TES_STATE NUMBER NOT NULL
66
)
67
  TABLESPACE "USERS"
68
  LOGGING 
69
  PCTFREE 10
70
  PCTUSED 40
71
  INITRANS 1
72
  MAXTRANS 255
73
  STORAGE
74
  (
75
    INITIAL 128K
76
    MINEXTENTS 1
77
    MAXEXTENTS 2147483645
78
    FREELISTS 1
79
    FREELIST GROUPS 1
80
    BUFFER_POOL DEFAULT
81
  )
82
;
83
 
84
CREATE TABLE TEMP_TREE_BROWSE
85
(
86
  SESSION_NUM NUMBER,
87
  LEVEL_NUM NUMBER,
88
  PV_ID NUMBER,
89
  PKG_ID NUMBER,
90
  V_EXT VARCHAR2(50 BYTE),
91
  DIRECTION NUMBER
92
)
93
  TABLESPACE "USERS"
94
  LOGGING 
95
  PCTFREE 10
96
  PCTUSED 40
97
  INITRANS 1
98
  MAXTRANS 255
99
  STORAGE
100
  (
101
    INITIAL 64K
102
    MINEXTENTS 1
103
    MAXEXTENTS 2147483645
104
    FREELISTS 1
105
    FREELIST GROUPS 1
106
    BUFFER_POOL DEFAULT
107
  )
108
;
109
 
110
CREATE TABLE IGNORE_WARNINGS
111
(
112
  RTAG_ID NUMBER NOT NULL,
113
  PV_ID NUMBER NOT NULL,
114
  DPV_ID NUMBER NOT NULL,
115
  IS_PATCH_IGNORE CHAR(1 BYTE)
116
)
117
  TABLESPACE "USERS"
118
  LOGGING 
119
  PCTFREE 10
120
  PCTUSED 40
121
  INITRANS 1
122
  MAXTRANS 255
123
  STORAGE
124
  (
125
    INITIAL 128K
126
    MINEXTENTS 1
127
    MAXEXTENTS 2147483645
128
    FREELISTS 1
129
    FREELIST GROUPS 1
130
    BUFFER_POOL DEFAULT
131
  )
132
;
133
 
134
CREATE TABLE DEPRECATED_PACKAGES
135
(
136
  RTAG_ID NUMBER NOT NULL,
137
  PKG_ID NUMBER NOT NULL,
138
  COMMENTS VARCHAR2(4000 BYTE) NOT NULL,
139
  V_EXT VARCHAR2(50 BYTE)
140
)
141
  TABLESPACE "USERS"
142
  LOGGING 
143
  PCTFREE 10
144
  PCTUSED 40
145
  INITRANS 1
146
  MAXTRANS 255
147
  STORAGE
148
  (
149
    INITIAL 64K
150
    MINEXTENTS 1
151
    MAXEXTENTS 2147483645
152
    FREELISTS 1
153
    FREELIST GROUPS 1
154
    BUFFER_POOL DEFAULT
155
  )
156
;
157
 
158
CREATE TABLE MICROSOFTDTPROPERTIES
159
(
160
  ID NUMBER NOT NULL,
161
  OBJECTID NUMBER,
162
  PROPERTY VARCHAR2(64 BYTE) NOT NULL,
163
  VALUE VARCHAR2(255 BYTE),
164
  LVALUE LONG RAW,
165
  VERSION NUMBER DEFAULT (0) NOT NULL
166
, CONSTRAINT MICROSOFT_PK_DTPROPERTIES PRIMARY KEY
167
  (
168
    ID,
169
    PROPERTY
170
  )
171
  ENABLE
172
)
173
  TABLESPACE "USERS"
174
  LOGGING 
175
  PCTFREE 10
176
  PCTUSED 40
177
  INITRANS 1
178
  MAXTRANS 255
179
  STORAGE
180
  (
181
    INITIAL 128K
182
    MINEXTENTS 1
183
    MAXEXTENTS 2147483645
184
    FREELISTS 1
185
    FREELIST GROUPS 1
186
    BUFFER_POOL DEFAULT
187
  )
188
;
189
 
190
CREATE TABLE PACKAGE_DOCUMENTS
191
(
192
  PV_ID NUMBER NOT NULL,
193
  TEST_ID NUMBER,
194
  DOC_ID NUMBER NOT NULL,
195
  DOC_NUM VARCHAR2(50 BYTE) NOT NULL,
196
  IS_LATEST CHAR(1 BYTE)
197
)
198
  TABLESPACE "USERS"
199
  LOGGING 
200
  PCTFREE 10
201
  PCTUSED 40
202
  INITRANS 1
203
  MAXTRANS 255
204
  STORAGE
205
  (
206
    INITIAL 128K
207
    MINEXTENTS 1
208
    MAXEXTENTS 2147483645
209
    FREELISTS 1
210
    FREELIST GROUPS 1
211
    BUFFER_POOL DEFAULT
212
  )
213
;
214
 
215
CREATE TABLE RELEASE_TAGS
216
(
217
  RTAG_ID NUMBER NOT NULL,
218
  VTREE_ID NUMBER,
219
  RTAG_NAME VARCHAR2(50 BYTE) NOT NULL,
220
  DESCRIPTION VARCHAR2(4000 BYTE),
221
  CREATED_STAMP DATE,
222
  CREATOR_ID NUMBER,
223
  OFFICIAL_STAMP DATE,
224
  RELEASOR_ID NUMBER,
225
  OFFICIAL CHAR(1 BYTE) NOT NULL,
226
  REBUILD_ENV CHAR(1 BYTE) NOT NULL,
227
  REBUILD_STAMP NUMBER NOT NULL,
228
  RTAG_VERSION VARCHAR2(4000 BYTE),
229
  RTAG_LIFE_CYCLE NUMBER,
230
  PARENT_RTAG_ID NUMBER NOT NULL,
231
  PROJ_ID NUMBER NOT NULL,
232
  DISPLAY_ORDER NUMBER,
233
  OWNER_EMAIL VARCHAR2(1000 BYTE),
234
  ASSOC_MASS_REF NUMBER,
235
  OWNER_PERSONAL_EMAIL VARCHAR2(1000 BYTE),
236
  CONFIG_SPEC_BRANCH VARCHAR2(4000 BYTE),
237
  PRODUCT_STATE_USED CHAR(1 BYTE)
238
, CONSTRAINT PK_RELEASE_TAGS PRIMARY KEY
239
  (
240
    RTAG_ID
241
  )
242
  ENABLE
243
)
244
  TABLESPACE "SYSTEM"
245
  LOGGING 
246
  PCTFREE 10
247
  PCTUSED 40
248
  INITRANS 1
249
  MAXTRANS 255
250
  STORAGE
251
  (
252
    INITIAL 64K
253
    NEXT 64K
254
    MINEXTENTS 1
255
    MAXEXTENTS 2147483645
256
    PCTINCREASE 0
257
    FREELISTS 1
258
    FREELIST GROUPS 1
259
    BUFFER_POOL DEFAULT
260
  )
261
;
262
 
263
CREATE TABLE BUILD_STANDARDS_ADDENDUM
264
(
265
  BSA_ID NUMBER NOT NULL,
266
  BSA_NAME VARCHAR2(4000 BYTE) NOT NULL,
267
  BS_ID NUMBER NOT NULL
268
, CONSTRAINT BUILD_STANDARDS_ADDENDUM_PK PRIMARY KEY
269
  (
270
    BSA_ID
271
  )
272
  ENABLE
273
)
274
  TABLESPACE "USERS"
275
  LOGGING 
276
  PCTFREE 10
277
  PCTUSED 40
278
  INITRANS 1
279
  MAXTRANS 255
280
  STORAGE
281
  (
282
    INITIAL 64K
283
    MINEXTENTS 1
284
    MAXEXTENTS 2147483645
285
    FREELISTS 1
286
    FREELIST GROUPS 1
287
    BUFFER_POOL DEFAULT
288
  )
289
;
290
 
291
CREATE TABLE UNIT_TESTS
292
(
293
  TEST_ID NUMBER NOT NULL,
294
  PV_ID NUMBER NOT NULL,
295
  TEST_TYPES_FK NUMBER NOT NULL,
296
  TEST_SUMMARY VARCHAR2(4000 BYTE),
297
  COMPLETION_DATE DATE,
298
  COMPLETED_BY NUMBER,
299
  RESULTS_URL VARCHAR2(2000 BYTE),
300
  RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE),
301
  TEST_ACCEPTED CHAR(1 BYTE),
302
  ACCEPTANCE_DATE DATE,
303
  ACCEPTED_BY NUMBER,
304
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
305
  NUMOF_TEST VARCHAR2(50 BYTE)
306
)
307
  TABLESPACE "USERS"
308
  LOGGING 
309
  PCTFREE 10
310
  PCTUSED 40
311
  INITRANS 1
312
  MAXTRANS 255
313
  STORAGE
314
  (
315
    INITIAL 128K
316
    MINEXTENTS 1
317
    MAXEXTENTS 2147483645
318
    FREELISTS 1
319
    FREELIST GROUPS 1
320
    BUFFER_POOL DEFAULT
321
  )
322
;
323
 
324
CREATE TABLE BUILD_ENVIRONMENTS
325
(
326
  BE_ID NUMBER NOT NULL,
327
  BE_NAME VARCHAR2(255 BYTE) NOT NULL
328
, CONSTRAINT PK_BUILD_ENVIRONMENTS PRIMARY KEY
329
  (
330
    BE_ID
331
  )
332
  ENABLE
333
)
334
  TABLESPACE "USERS"
335
  LOGGING 
336
  PCTFREE 10
337
  PCTUSED 40
338
  INITRANS 1
339
  MAXTRANS 255
340
  STORAGE
341
  (
342
    INITIAL 128K
343
    MINEXTENTS 1
344
    MAXEXTENTS 2147483645
345
    FREELISTS 1
346
    FREELIST GROUPS 1
347
    BUFFER_POOL DEFAULT
348
  )
349
;
350
 
351
CREATE TABLE RELEASE_COMPONENTS
352
(
353
  PV_ID NUMBER NOT NULL,
354
  FILE_NAME VARCHAR2(255 BYTE),
355
  FILE_PATH VARCHAR2(2000 BYTE),
356
  BYTE_SIZE NUMBER,
357
  CRC_CKSUM VARCHAR2(50 BYTE),
358
  CRC_MODCRC VARCHAR2(50 BYTE)
359
)
360
  TABLESPACE "USERS"
361
  LOGGING 
362
  PCTFREE 10
363
  PCTUSED 40
364
  INITRANS 1
365
  MAXTRANS 255
366
  STORAGE
367
  (
368
    INITIAL 128K
369
    MINEXTENTS 1
370
    MAXEXTENTS 2147483645
371
    FREELISTS 1
372
    FREELIST GROUPS 1
373
    BUFFER_POOL DEFAULT
374
  )
375
;
376
 
377
CREATE TABLE RIPPLE_FIELD_STATES
378
(
379
  STATE_ID NUMBER NOT NULL,
380
  STATE_ACRONYM CHAR(1 BYTE),
381
  STATE_NAME VARCHAR2(50 BYTE)
382
)
383
  TABLESPACE "USERS"
384
  LOGGING 
385
  PCTFREE 10
386
  PCTUSED 40
387
  INITRANS 1
388
  MAXTRANS 255
389
  STORAGE
390
  (
391
    INITIAL 64K
392
    MINEXTENTS 1
393
    MAXEXTENTS 2147483645
394
    FREELISTS 1
395
    FREELIST GROUPS 1
396
    BUFFER_POOL DEFAULT
397
  )
398
;
399
 
400
CREATE TABLE BUILD_ORDER
401
(
402
  RTAG_ID NUMBER NOT NULL,
403
  STEP_NUM NUMBER NOT NULL,
404
  PV_ID NUMBER NOT NULL,
405
  UNRESOLVED CHAR(1 BYTE)
406
)
407
  TABLESPACE "USERS"
408
  LOGGING 
409
  PCTFREE 10
410
  PCTUSED 40
411
  INITRANS 1
412
  MAXTRANS 255
413
  STORAGE
414
  (
415
    INITIAL 64K
416
    MINEXTENTS 1
417
    MAXEXTENTS 2147483645
418
    FREELISTS 1
419
    FREELIST GROUPS 1
420
    BUFFER_POOL DEFAULT
421
  )
422
;
423
 
424
CREATE TABLE PLANNED
425
(
426
  RTAG_ID NUMBER NOT NULL,
427
  PV_ID NUMBER NOT NULL,
53 mhunt 428
  VIEW_ID NUMBER NOT NULL,
429
  OPERATION CHAR(1 BYTE)
51 mhunt 430
)
431
  TABLESPACE "USERS"
432
  LOGGING 
433
  PCTFREE 10
434
  PCTUSED 40
435
  INITRANS 1
436
  MAXTRANS 255
437
  STORAGE
438
  (
439
    INITIAL 64K
440
    MINEXTENTS 1
441
    MAXEXTENTS 2147483645
442
    FREELISTS 1
443
    FREELIST GROUPS 1
444
    BUFFER_POOL DEFAULT
445
  )
446
;
447
 
448
CREATE TABLE PROJECT_ACTION_LOG
449
(
450
  USER_ID NUMBER NOT NULL,
451
  ACTION_DATETIME DATE NOT NULL,
452
  PROJ_ID NUMBER NOT NULL,
453
  DESCRIPTION VARCHAR2(4000 BYTE),
454
  ACTTYPE_ID NUMBER NOT NULL,
455
  RTAG_ID NUMBER
456
)
457
  TABLESPACE "USERS"
458
  LOGGING 
459
  PCTFREE 10
460
  PCTUSED 40
461
  INITRANS 1
462
  MAXTRANS 255
463
  STORAGE
464
  (
465
    INITIAL 64K
466
    MINEXTENTS 1
467
    MAXEXTENTS 2147483645
468
    FREELISTS 1
469
    FREELIST GROUPS 1
470
    BUFFER_POOL DEFAULT
471
  )
472
;
473
 
474
CREATE TABLE PACKAGE_METRICS
475
(
476
  PV_ID NUMBER NOT NULL,
477
  BRANCHES NUMBER,
478
  BRANCH_LIST VARCHAR2(4000 BYTE),
479
  CODE_FILES NUMBER,
480
  IGNORED_FILES NUMBER,
481
  DIRECTORIES NUMBER,
482
  DIRECTORY_DEPTH NUMBER,
483
  TOTAL_FILES NUMBER,
484
  MAKEFILES NUMBER,
485
  BLANK_LINES NUMBER,
486
  CODE_LINES NUMBER,
487
  COMMENT_LINES NUMBER,
488
  CREATED_STAMP DATE
489
)
490
  TABLESPACE "USERS"
491
  LOGGING 
492
  PCTFREE 10
493
  PCTUSED 40
494
  INITRANS 1
495
  MAXTRANS 255
496
  STORAGE
497
  (
498
    INITIAL 64K
499
    MINEXTENTS 1
500
    MAXEXTENTS 2147483645
501
    FREELISTS 1
502
    FREELIST GROUPS 1
503
    BUFFER_POOL DEFAULT
504
  )
505
;
506
 
507
CREATE TABLE ARCHIVE_DATA
508
(
509
  RTAG_ID NUMBER(*, 0) NOT NULL,
510
  PV_ID NUMBER(*, 0) NOT NULL
511
)
512
  TABLESPACE "USERS"
513
  LOGGING 
514
  PCTFREE 10
515
  PCTUSED 40
516
  INITRANS 1
517
  MAXTRANS 255
518
  STORAGE
519
  (
520
    INITIAL 64K
521
    MINEXTENTS 1
522
    MAXEXTENTS 2147483645
523
    FREELISTS 1
524
    FREELIST GROUPS 1
525
    BUFFER_POOL DEFAULT
526
  )
527
;
528
 
529
CREATE TABLE VIEW_SETTINGS
530
(
531
  USER_ID NUMBER NOT NULL,
532
  VIEW_ID NUMBER NOT NULL
533
)
534
  TABLESPACE "SYSTEM"
535
  LOGGING 
536
  PCTFREE 10
537
  PCTUSED 40
538
  INITRANS 1
539
  MAXTRANS 255
540
  STORAGE
541
  (
542
    INITIAL 64K
543
    NEXT 64K
544
    MINEXTENTS 1
545
    MAXEXTENTS 2147483645
546
    PCTINCREASE 0
547
    FREELISTS 1
548
    FREELIST GROUPS 1
549
    BUFFER_POOL DEFAULT
550
  )
551
;
552
 
553
CREATE TABLE ACTION_TYPE
554
(
555
  ACTTYPE_ID NUMBER NOT NULL,
556
  NAME VARCHAR2(255 BYTE) NOT NULL,
557
  DESCRIPTION VARCHAR2(4000 BYTE)
558
, CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY
559
  (
560
    ACTTYPE_ID
561
  )
562
  ENABLE
563
)
564
  TABLESPACE "USERS"
565
  LOGGING 
566
  PCTFREE 10
567
  PCTUSED 40
568
  INITRANS 1
569
  MAXTRANS 255
570
  STORAGE
571
  (
572
    INITIAL 128K
573
    MINEXTENTS 1
574
    MAXEXTENTS 2147483645
575
    FREELISTS 1
576
    FREELIST GROUPS 1
577
    BUFFER_POOL DEFAULT
578
  )
579
;
580
 
581
CREATE TABLE RUN_LEVEL_SCHEDULE
582
(
583
  SCHEDULED_ID NUMBER NOT NULL,
584
  SCHEDULED_PAUSE DATE,
585
  SCHEDULED_RESUME DATE,
586
  REPEAT CHAR(1 BYTE),
587
  INDEFINITE_PAUSE CHAR(1 BYTE)
588
, PRIMARY KEY
589
  (
590
    SCHEDULED_ID
591
  )
592
  ENABLE
593
)
594
  TABLESPACE "USERS"
595
  LOGGING 
596
  PCTFREE 10
597
  PCTUSED 40
598
  INITRANS 1
599
  MAXTRANS 255
600
  STORAGE
601
  (
602
    INITIAL 64K
603
    MINEXTENTS 1
604
    MAXEXTENTS 2147483645
605
    FREELISTS 1
606
    FREELIST GROUPS 1
607
    BUFFER_POOL DEFAULT
608
  )
609
;
610
 
611
CREATE TABLE VTREES
612
(
613
  VTREE_ID NUMBER NOT NULL,
614
  PROJ_ID NUMBER NOT NULL,
615
  VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,
616
  HIDE CHAR(1 BYTE) NOT NULL
617
, CONSTRAINT PK_VTREES PRIMARY KEY
618
  (
619
    VTREE_ID
620
  )
621
  ENABLE
622
)
623
  TABLESPACE "SYSTEM"
624
  LOGGING 
625
  PCTFREE 10
626
  PCTUSED 40
627
  INITRANS 1
628
  MAXTRANS 255
629
  STORAGE
630
  (
631
    INITIAL 64K
632
    NEXT 64K
633
    MINEXTENTS 1
634
    MAXEXTENTS 2147483645
635
    PCTINCREASE 0
636
    FREELISTS 1
637
    FREELIST GROUPS 1
638
    BUFFER_POOL DEFAULT
639
  )
640
;
641
 
642
CREATE TABLE BUILD_STANDARDS
643
(
644
  BS_ID NUMBER NOT NULL,
645
  BS_NAME VARCHAR2(20 BYTE) NOT NULL
646
, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY
647
  (
648
    BS_ID
649
  )
650
  ENABLE
651
)
652
  TABLESPACE "USERS"
653
  LOGGING 
654
  PCTFREE 10
655
  PCTUSED 40
656
  INITRANS 1
657
  MAXTRANS 255
658
  STORAGE
659
  (
660
    INITIAL 64K
661
    MINEXTENTS 1
662
    MAXEXTENTS 2147483645
663
    FREELISTS 1
664
    FREELIST GROUPS 1
665
    BUFFER_POOL DEFAULT
666
  )
667
;
668
 
669
CREATE TABLE TEMP_SASH
670
(
671
  RTAG_ID NUMBER,
672
  PROJ_ID NUMBER
673
)
674
  TABLESPACE "USERS"
675
  LOGGING 
676
  PCTFREE 10
677
  PCTUSED 40
678
  INITRANS 1
679
  MAXTRANS 255
680
  STORAGE
681
  (
682
    INITIAL 64K
683
    MINEXTENTS 1
684
    MAXEXTENTS 2147483645
685
    FREELISTS 1
686
    FREELIST GROUPS 1
687
    BUFFER_POOL DEFAULT
688
  )
689
;
690
 
691
CREATE TABLE BUILD_MACHINES
692
(
693
  BM_ID NUMBER NOT NULL,
694
  BM_NAME VARCHAR2(20 BYTE) NOT NULL
695
, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY
696
  (
697
    BM_ID
698
  )
699
  ENABLE
700
)
701
  TABLESPACE "USERS"
702
  LOGGING 
703
  PCTFREE 10
704
  PCTUSED 40
705
  INITRANS 1
706
  MAXTRANS 255
707
  STORAGE
708
  (
709
    INITIAL 64K
710
    MINEXTENTS 1
711
    MAXEXTENTS 2147483645
712
    FREELISTS 1
713
    FREELIST GROUPS 1
714
    BUFFER_POOL DEFAULT
715
  )
716
;
717
 
718
CREATE TABLE RELEASE_LINKS
719
(
720
  RTAG_ID NUMBER NOT NULL,
721
  REF_RTAG_ID NUMBER NOT NULL
722
)
723
  TABLESPACE "USERS"
724
  LOGGING 
725
  PCTFREE 10
726
  PCTUSED 40
727
  INITRANS 1
728
  MAXTRANS 255
729
  STORAGE
730
  (
731
    INITIAL 64K
732
    MINEXTENTS 1
733
    MAXEXTENTS 2147483645
734
    FREELISTS 1
735
    FREELIST GROUPS 1
736
    BUFFER_POOL DEFAULT
737
  )
738
;
739
 
740
CREATE TABLE BUILD_ENV_DOCUMENTS
741
(
742
  BE_ID NUMBER NOT NULL,
743
  DOC_NUM VARCHAR2(255 BYTE) NOT NULL
744
)
745
  TABLESPACE "USERS"
746
  LOGGING 
747
  PCTFREE 10
748
  PCTUSED 40
749
  INITRANS 1
750
  MAXTRANS 255
751
  STORAGE
752
  (
753
    INITIAL 128K
754
    MINEXTENTS 1
755
    MAXEXTENTS 2147483645
756
    FREELISTS 1
757
    FREELIST GROUPS 1
758
    BUFFER_POOL DEFAULT
759
  )
760
;
761
 
762
CREATE TABLE PRODUCT_STATES
763
(
764
  STATE_ID NUMBER NOT NULL,
765
  STATE VARCHAR2(4000 BYTE) NOT NULL
766
, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY
767
  (
768
    STATE_ID
769
  )
770
  ENABLE
771
)
772
  TABLESPACE "USERS"
773
  LOGGING 
774
  PCTFREE 10
775
  PCTUSED 40
776
  INITRANS 1
777
  MAXTRANS 255
778
  STORAGE
779
  (
780
    INITIAL 64K
781
    MINEXTENTS 1
782
    MAXEXTENTS 2147483645
783
    FREELISTS 1
784
    FREELIST GROUPS 1
785
    BUFFER_POOL DEFAULT
786
  )
787
;
788
 
789
CREATE TABLE WORLDS
790
(
791
  WORLD_ID NUMBER NOT NULL,
792
  WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,
793
  WORLD_DESC VARCHAR2(255 BYTE)
794
, CONSTRAINT PK_WORLDS PRIMARY KEY
795
  (
796
    WORLD_ID
797
  )
798
  ENABLE
799
)
800
  TABLESPACE "USERS"
801
  LOGGING 
802
  PCTFREE 10
803
  PCTUSED 40
804
  INITRANS 1
805
  MAXTRANS 255
806
  STORAGE
807
  (
808
    INITIAL 128K
809
    MINEXTENTS 1
810
    MAXEXTENTS 2147483645
811
    FREELISTS 1
812
    FREELIST GROUPS 1
813
    BUFFER_POOL DEFAULT
814
  )
815
;
816
 
817
CREATE TABLE ACTION_LOG
818
(
819
  USER_ID NUMBER NOT NULL,
820
  ACTION_DATETIME DATE NOT NULL,
821
  PV_ID NUMBER NOT NULL,
822
  DESCRIPTION VARCHAR2(4000 BYTE),
823
  ACTTYPE_ID NUMBER NOT NULL
824
)
825
  TABLESPACE "USERS"
826
  LOGGING 
827
  PCTFREE 10
828
  PCTUSED 40
829
  INITRANS 1
830
  MAXTRANS 255
831
  STORAGE
832
  (
833
    INITIAL 128K
834
    MINEXTENTS 1
835
    MAXEXTENTS 2147483645
836
    FREELISTS 1
837
    FREELIST GROUPS 1
838
    BUFFER_POOL DEFAULT
839
  )
840
;
841
 
842
CREATE TABLE PROJECT_EXTENTIONS
843
(
844
  PROJ_ID NUMBER NOT NULL,
845
  EXT_NAME VARCHAR2(10 BYTE) NOT NULL
846
)
847
  TABLESPACE "SYSTEM"
848
  LOGGING 
849
  PCTFREE 10
850
  PCTUSED 40
851
  INITRANS 1
852
  MAXTRANS 255
853
  STORAGE
854
  (
855
    INITIAL 64K
856
    NEXT 64K
857
    MINEXTENTS 1
858
    MAXEXTENTS 2147483645
859
    PCTINCREASE 0
860
    FREELISTS 1
861
    FREELIST GROUPS 1
862
    BUFFER_POOL DEFAULT
863
  )
864
;
865
 
866
CREATE TABLE ADDITIONAL_NOTES
867
(
868
  NOTE_ID NUMBER NOT NULL,
869
  PV_ID NUMBER NOT NULL,
870
  NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,
871
  NOTE_BODY VARCHAR2(4000 BYTE),
872
  MOD_DATE DATE NOT NULL,
873
  MOD_USER NUMBER NOT NULL
874
)
875
  TABLESPACE "USERS"
876
  LOGGING 
877
  PCTFREE 10
878
  PCTUSED 40
879
  INITRANS 1
880
  MAXTRANS 255
881
  STORAGE
882
  (
883
    INITIAL 128K
884
    MINEXTENTS 1
885
    MAXEXTENTS 2147483645
886
    FREELISTS 1
887
    FREELIST GROUPS 1
888
    BUFFER_POOL DEFAULT
889
  )
890
;
891
 
892
CREATE TABLE MESSAGE_BOARD
893
(
894
  MSG_ID NUMBER NOT NULL,
895
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
896
  SUBMITION_DATE DATE NOT NULL,
897
  EXPIRY_DATE DATE,
898
  DUE_DATE DATE
899
, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY
900
  (
901
    MSG_ID
902
  )
903
  ENABLE
904
)
905
  TABLESPACE "SYSTEM"
906
  LOGGING 
907
  PCTFREE 10
908
  PCTUSED 40
909
  INITRANS 1
910
  MAXTRANS 255
911
  STORAGE
912
  (
913
    INITIAL 64K
914
    NEXT 64K
915
    MINEXTENTS 1
916
    MAXEXTENTS 2147483645
917
    PCTINCREASE 0
918
    FREELISTS 1
919
    FREELIST GROUPS 1
920
    BUFFER_POOL DEFAULT
921
  )
922
;
923
 
924
CREATE TABLE VTREES_WORLD
925
(
926
  WORLD_ID NUMBER NOT NULL,
927
  VTREE_ID NUMBER NOT NULL
928
)
929
  TABLESPACE "USERS"
930
  LOGGING 
931
  PCTFREE 10
932
  PCTUSED 40
933
  INITRANS 1
934
  MAXTRANS 255
935
  STORAGE
936
  (
937
    INITIAL 128K
938
    MINEXTENTS 1
939
    MAXEXTENTS 2147483645
940
    FREELISTS 1
941
    FREELIST GROUPS 1
942
    BUFFER_POOL DEFAULT
943
  )
944
;
945
 
946
CREATE TABLE CODE_REVIEWS
947
(
948
  PV_ID NUMBER NOT NULL,
949
  DATE_OF_REVIEW DATE,
950
  TIME_SPENT FLOAT(126),
951
  REVIEW_REASON VARCHAR2(4000 BYTE),
952
  RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),
953
  RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),
954
  RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),
955
  RTEAM_AUTHOR VARCHAR2(4000 BYTE),
956
  FILES_REVIEWED VARCHAR2(4000 BYTE),
957
  REVIEW_RESULTS NUMBER,
958
  ISSUES_RAISED VARCHAR2(4000 BYTE),
959
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
960
  FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),
961
  FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),
962
  RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),
963
  RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),
964
  RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),
965
  RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),
966
  RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),
967
  RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),
968
  RBS_S_EXCEP_HANDING CHAR(1 BYTE),
969
  RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),
970
  RBS_S_RESOURCE_MNG CHAR(1 BYTE),
971
  RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),
972
  RBS_S_TRANS_COMPLET CHAR(1 BYTE),
973
  RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),
974
  RBS_S_THREADSAFETY CHAR(1 BYTE),
975
  RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),
976
  RBS_S_RET_VALS CHAR(1 BYTE),
977
  RBS_C_RET_VALS VARCHAR2(4000 BYTE),
978
  RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),
979
  RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),
980
  RBS_S_SQL_STD CHAR(1 BYTE),
981
  RBS_C_SQL_STD VARCHAR2(4000 BYTE),
982
  MNT_S_EXT_REF CHAR(1 BYTE),
983
  MNT_C_EXT_REF VARCHAR2(4000 BYTE),
984
  MNT_S_CLASS_SIZE CHAR(1 BYTE),
985
  MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),
986
  MNT_S_METHOD_SIZE CHAR(1 BYTE),
987
  MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),
988
  MNT_S_APPROP_COMM CHAR(1 BYTE),
989
  MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),
990
  MNT_S_IDENT_NAME_STD CHAR(1 BYTE),
991
  MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),
992
  MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),
993
  MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),
994
  MNT_S_NO_LIT_NUM CHAR(1 BYTE),
995
  MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),
996
  MNT_S_NO_DEAD_CODE CHAR(1 BYTE),
997
  MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),
998
  DEI_S_STD_DES_PATT CHAR(1 BYTE),
999
  DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),
1000
  DEI_S_APPROP_ALGOR CHAR(1 BYTE),
1001
  DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),
1002
  DEI_S_APPROP_OBJ CHAR(1 BYTE),
1003
  DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),
1004
  DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),
1005
  DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),
1006
  DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),
1007
  DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),
1008
  DEI_S_APPROP_LOGGING CHAR(1 BYTE),
1009
  DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE)
1010
)
1011
  TABLESPACE "USERS"
1012
  LOGGING 
1013
  PCTFREE 10
1014
  PCTUSED 40
1015
  INITRANS 1
1016
  MAXTRANS 255
1017
  STORAGE
1018
  (
1019
    INITIAL 128K
1020
    MINEXTENTS 1
1021
    MAXEXTENTS 2147483645
1022
    FREELISTS 1
1023
    FREELIST GROUPS 1
1024
    BUFFER_POOL DEFAULT
1025
  )
1026
;
1027
 
1028
CREATE TABLE PLANNED_VERSIONS
1029
(
1030
  PKG_ID NUMBER,
1031
  PKG_VERSION VARCHAR2(50 BYTE)
1032
)
1033
  TABLESPACE "USERS"
1034
  LOGGING 
1035
  PCTFREE 10
1036
  PCTUSED 40
1037
  INITRANS 1
1038
  MAXTRANS 255
1039
  STORAGE
1040
  (
1041
    INITIAL 64K
1042
    MINEXTENTS 1
1043
    MAXEXTENTS 2147483645
1044
    FREELISTS 1
1045
    FREELIST GROUPS 1
1046
    BUFFER_POOL DEFAULT
1047
  )
1048
;
1049
 
1050
CREATE TABLE VALIDATION_RULES
1051
(
1052
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1053
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1054
  IS_NUMERIC CHAR(1 BYTE),
1055
  MIN_NUMERIC_VALUE NUMBER,
1056
  MAX_NUMERIC_VALUE NUMBER,
1057
  IS_DATE CHAR(1 BYTE),
1058
  START_DATE DATE,
1059
  END_DATE DATE,
1060
  MIN_STRING_LENGTH NUMBER,
1061
  MAX_STRING_LENGTH NUMBER,
1062
  REGEXP VARCHAR2(4000 BYTE),
1063
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1064
)
1065
  TABLESPACE "USERS"
1066
  LOGGING 
1067
  PCTFREE 10
1068
  PCTUSED 40
1069
  INITRANS 1
1070
  MAXTRANS 255
1071
  STORAGE
1072
  (
1073
    INITIAL 128K
1074
    MINEXTENTS 1
1075
    MAXEXTENTS 2147483645
1076
    FREELISTS 1
1077
    FREELIST GROUPS 1
1078
    BUFFER_POOL DEFAULT
1079
  )
1080
;
1081
 
1082
CREATE TABLE DO_NOT_RIPPLE
1083
(
1084
  RTAG_ID NUMBER NOT NULL,
55 mhunt 1085
  PV_ID NUMBER NOT NULL,
1086
  ROOT_PV_ID NUMBER,
1087
  ROOT_CAUSE VARCHAR2(50 BYTE),
1088
  ROOT_FILE VARCHAR2(100 BYTE)
51 mhunt 1089
)
1090
  TABLESPACE "USERS"
1091
  LOGGING 
1092
  PCTFREE 10
1093
  PCTUSED 40
1094
  INITRANS 1
1095
  MAXTRANS 255
1096
  STORAGE
1097
  (
1098
    INITIAL 64K
1099
    MINEXTENTS 1
1100
    MAXEXTENTS 2147483645
1101
    FREELISTS 1
1102
    FREELIST GROUPS 1
1103
    BUFFER_POOL DEFAULT
1104
  )
1105
;
1106
 
1107
CREATE TABLE NOTE_MANAGER
1108
(
1109
  NID VARCHAR2(30 BYTE) NOT NULL,
1110
  LAST_USER VARCHAR2(20 BYTE),
1111
  LAST_DATE DATE,
1112
  DESCRIPTION VARCHAR2(4000 BYTE)
1113
, CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY
1114
  (
1115
    NID
1116
  )
1117
  ENABLE
1118
)
1119
  TABLESPACE "USERS"
1120
  LOGGING 
1121
  PCTFREE 10
1122
  PCTUSED 40
1123
  INITRANS 1
1124
  MAXTRANS 255
1125
  STORAGE
1126
  (
1127
    INITIAL 128K
1128
    MINEXTENTS 1
1129
    MAXEXTENTS 2147483645
1130
    FREELISTS 1
1131
    FREELIST GROUPS 1
1132
    BUFFER_POOL DEFAULT
1133
  )
1134
;
1135
 
1136
CREATE TABLE RELEASE_CONTENT
1137
(
1138
  RTAG_ID NUMBER NOT NULL,
1139
  PV_ID NUMBER NOT NULL,
1140
  BASE_VIEW_ID NUMBER NOT NULL,
1141
  INSERT_STAMP DATE NOT NULL,
1142
  INSERTOR_ID NUMBER NOT NULL,
1143
  PKG_STATE NUMBER NOT NULL,
1144
  PKG_ID NUMBER,
1145
  DEPRECATED_STATE NUMBER,
1146
  PRODUCT_STATE NUMBER
1147
)
1148
  TABLESPACE "SYSTEM"
1149
  LOGGING 
1150
  PCTFREE 10
1151
  PCTUSED 40
1152
  INITRANS 1
1153
  MAXTRANS 255
1154
  STORAGE
1155
  (
1156
    INITIAL 64K
1157
    NEXT 64K
1158
    MINEXTENTS 1
1159
    MAXEXTENTS 2147483645
1160
    PCTINCREASE 0
1161
    FREELISTS 1
1162
    FREELIST GROUPS 1
1163
    BUFFER_POOL DEFAULT
1164
  )
1165
;
1166
 
1167
CREATE TABLE PROCESSES
1168
(
1169
  PROC_ID NUMBER NOT NULL,
1170
  PROC_NAME VARCHAR2(255 BYTE) NOT NULL,
1171
  PROC_DESCRIPTION VARCHAR2(255 BYTE),
1172
  RUN_AS VARCHAR2(255 BYTE),
1173
  PKG_OWNER VARCHAR2(4000 BYTE),
1174
  IS_INTERFACE CHAR(1 BYTE)
1175
, CONSTRAINT PROCESSES_PK PRIMARY KEY
1176
  (
1177
    PROC_ID
1178
  )
1179
  ENABLE
1180
)
1181
  TABLESPACE "USERS"
1182
  LOGGING 
1183
  PCTFREE 10
1184
  PCTUSED 40
1185
  INITRANS 1
1186
  MAXTRANS 255
1187
  STORAGE
1188
  (
1189
    INITIAL 128K
1190
    MINEXTENTS 1
1191
    MAXEXTENTS 2147483645
1192
    FREELISTS 1
1193
    FREELIST GROUPS 1
1194
    BUFFER_POOL DEFAULT
1195
  )
1196
;
1197
 
1198
CREATE TABLE RM_PACKAGE_ISSUES
1199
(
1200
  PKG_ID NUMBER,
1201
  PKG_NAME VARCHAR2(50 BYTE),
1202
  PV_ID NUMBER,
1203
  PKG_VERSION VARCHAR2(50 BYTE),
1204
  DPV_ID NUMBER,
1205
  DPKG_NAME VARCHAR2(50 BYTE),
1206
  DPKG_VERSION VARCHAR2(50 BYTE),
1207
  ISS_DB NUMBER,
1208
  ISS_ID NUMBER
1209
)
1210
  TABLESPACE "USERS"
1211
  LOGGING 
1212
  PCTFREE 10
1213
  PCTUSED 40
1214
  INITRANS 1
1215
  MAXTRANS 255
1216
  STORAGE
1217
  (
1218
    INITIAL 64K
1219
    MINEXTENTS 1
1220
    MAXEXTENTS 2147483645
1221
    FREELISTS 1
1222
    FREELIST GROUPS 1
1223
    BUFFER_POOL DEFAULT
1224
  )
1225
;
1226
 
1227
CREATE TABLE PACKAGE_PROCESSES
1228
(
1229
  PV_ID NUMBER NOT NULL,
1230
  PROC_ID NUMBER NOT NULL
1231
)
1232
  TABLESPACE "USERS"
1233
  LOGGING 
1234
  PCTFREE 10
1235
  PCTUSED 40
1236
  INITRANS 1
1237
  MAXTRANS 255
1238
  STORAGE
1239
  (
1240
    INITIAL 64K
1241
    MINEXTENTS 1
1242
    MAXEXTENTS 2147483645
1243
    FREELISTS 1
1244
    FREELIST GROUPS 1
1245
    BUFFER_POOL DEFAULT
1246
  )
1247
;
1248
 
1249
CREATE TABLE ADVISORY_RIPPLE
1250
(
1251
  RTAG_ID NUMBER NOT NULL,
1252
  PV_ID NUMBER NOT NULL
1253
)
1254
  TABLESPACE "USERS"
1255
  LOGGING 
1256
  PCTFREE 10
1257
  PCTUSED 40
1258
  INITRANS 1
1259
  MAXTRANS 255
1260
  STORAGE
1261
  (
1262
    INITIAL 64K
1263
    MINEXTENTS 1
1264
    MAXEXTENTS 2147483645
1265
    FREELISTS 1
1266
    FREELIST GROUPS 1
1267
    BUFFER_POOL DEFAULT
1268
  )
1269
;
1270
 
1271
CREATE TABLE PACKAGE_PATCHES
1272
(
1273
  PV_ID NUMBER NOT NULL,
1274
  PATCH_ID NUMBER NOT NULL,
1275
  INSTALL_ORDER NUMBER NOT NULL,
1276
  PATCH_OBSOLETED_BY NUMBER
1277
)
1278
  TABLESPACE "USERS"
1279
  LOGGING 
1280
  PCTFREE 10
1281
  PCTUSED 40
1282
  INITRANS 1
1283
  MAXTRANS 255
1284
  STORAGE
1285
  (
1286
    INITIAL 128K
1287
    MINEXTENTS 1
1288
    MAXEXTENTS 2147483645
1289
    FREELISTS 1
1290
    FREELIST GROUPS 1
1291
    BUFFER_POOL DEFAULT
1292
  )
1293
;
1294
 
1295
CREATE TABLE PACKAGE_INTEREST
1296
(
1297
  PKG_ID NUMBER NOT NULL,
1298
  PROJ_ID NUMBER NOT NULL,
1299
  USER_ID NUMBER NOT NULL
1300
)
1301
  TABLESPACE "USERS"
1302
  LOGGING 
1303
  PCTFREE 10
1304
  PCTUSED 40
1305
  INITRANS 1
1306
  MAXTRANS 255
1307
  STORAGE
1308
  (
1309
    INITIAL 64K
1310
    MINEXTENTS 1
1311
    MAXEXTENTS 2147483645
1312
    FREELISTS 1
1313
    FREELIST GROUPS 1
1314
    BUFFER_POOL DEFAULT
1315
  )
1316
;
1317
 
1318
CREATE TABLE PLATFORMS
1319
(
1320
  CODE NUMBER NOT NULL,
1321
  NAME VARCHAR2(255 BYTE) NOT NULL
1322
)
1323
  TABLESPACE "USERS"
1324
  LOGGING 
1325
  PCTFREE 10
1326
  PCTUSED 40
1327
  INITRANS 1
1328
  MAXTRANS 255
1329
  STORAGE
1330
  (
1331
    INITIAL 64K
1332
    MINEXTENTS 1
1333
    MAXEXTENTS 2147483645
1334
    FREELISTS 1
1335
    FREELIST GROUPS 1
1336
    BUFFER_POOL DEFAULT
1337
  )
1338
;
1339
 
1340
CREATE TABLE RELEASE_CONFIG
1341
(
1342
  RCON_ID NUMBER NOT NULL,
1343
  RTAG_ID NUMBER NOT NULL,
1344
  GBE_ID NUMBER NOT NULL,
1345
  DAEMON_HOSTNAME VARCHAR2(50 BYTE),
1346
  DAEMON_MODE CHAR(1 CHAR),
1347
  GBE_BUILDFILTER VARCHAR2(255 BYTE)
1348
, PRIMARY KEY
1349
  (
1350
    RCON_ID
1351
  )
1352
  ENABLE
1353
)
1354
  TABLESPACE "USERS"
1355
  LOGGING 
1356
  PCTFREE 10
1357
  PCTUSED 40
1358
  INITRANS 1
1359
  MAXTRANS 255
1360
  STORAGE
1361
  (
1362
    INITIAL 64K
1363
    MINEXTENTS 1
1364
    MAXEXTENTS 2147483645
1365
    FREELISTS 1
1366
    FREELIST GROUPS 1
1367
    BUFFER_POOL DEFAULT
1368
  )
1369
;
1370
 
1371
CREATE TABLE GBE_MACHTYPE
1372
(
1373
  GBE_ID NUMBER NOT NULL,
1374
  GBE_VALUE VARCHAR2(20 BYTE) NOT NULL
1375
, PRIMARY KEY
1376
  (
1377
    GBE_ID
1378
  )
1379
  ENABLE
1380
)
1381
  TABLESPACE "USERS"
1382
  LOGGING 
1383
  PCTFREE 10
1384
  PCTUSED 40
1385
  INITRANS 1
1386
  MAXTRANS 255
1387
  STORAGE
1388
  (
1389
    INITIAL 64K
1390
    MINEXTENTS 1
1391
    MAXEXTENTS 2147483645
1392
    FREELISTS 1
1393
    FREELIST GROUPS 1
1394
    BUFFER_POOL DEFAULT
1395
  )
1396
;
1397
 
1398
CREATE TABLE ARCHIVE_ACTION_LOG
1399
(
1400
  USER_ID NUMBER NOT NULL,
1401
  DATE_TIME_STAMP DATE NOT NULL,
1402
  RTAG_ID NUMBER NOT NULL,
1403
  DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
1404
)
1405
  TABLESPACE "USERS"
1406
  LOGGING 
1407
  PCTFREE 10
1408
  PCTUSED 0
1409
  INITRANS 1
1410
  MAXTRANS 255
1411
  STORAGE
1412
  (
1413
    INITIAL 64K
1414
    MINEXTENTS 1
1415
    MAXEXTENTS 2147483645
1416
    FREELISTS 1
1417
    FREELIST GROUPS 1
1418
    BUFFER_POOL DEFAULT
1419
  )
1420
;
1421
 
1422
CREATE TABLE RELEASE_METRICS
1423
(
1424
  RTAG_ID NUMBER NOT NULL,
1425
  TOTAL_PACKAGES NUMBER,
1426
  AUTOBUILT NUMBER,
1427
  LINES_OF_CODE NUMBER,
1428
  UNIT_TESTED NUMBER,
1429
  AUTOTESTED NUMBER,
1430
  BRANCHES NUMBER,
1431
  LAST_BUILD_TIME DATE
1432
)
1433
  TABLESPACE "USERS"
1434
  LOGGING 
1435
  PCTFREE 10
1436
  PCTUSED 40
1437
  INITRANS 1
1438
  MAXTRANS 255
1439
  STORAGE
1440
  (
1441
    INITIAL 64K
1442
    MINEXTENTS 1
1443
    MAXEXTENTS 2147483645
1444
    FREELISTS 1
1445
    FREELIST GROUPS 1
1446
    BUFFER_POOL DEFAULT
1447
  )
1448
;
1449
 
1450
CREATE TABLE AUTOBUILD_FAILURE
1451
(
1452
  GROUP_EMAIL_ID NUMBER NOT NULL,
1453
  PROJ_ID NUMBER,
1454
  VIEW_ID NUMBER
1455
, PRIMARY KEY
1456
  (
1457
    GROUP_EMAIL_ID
1458
  )
1459
  ENABLE
1460
)
1461
  TABLESPACE "USERS"
1462
  LOGGING 
1463
  PCTFREE 10
1464
  PCTUSED 40
1465
  INITRANS 1
1466
  MAXTRANS 255
1467
  STORAGE
1468
  (
1469
    INITIAL 64K
1470
    MINEXTENTS 1
1471
    MAXEXTENTS 2147483645
1472
    FREELISTS 1
1473
    FREELIST GROUPS 1
1474
    BUFFER_POOL DEFAULT
1475
  )
1476
;
1477
 
1478
CREATE TABLE JIRA_ISSUES
1479
(
1480
  PV_ID NUMBER NOT NULL,
1481
  ISS_KEY VARCHAR2(4000 BYTE),
1482
  DATE_TIME_STAMP DATE
1483
)
1484
  TABLESPACE "SYSTEM"
1485
  LOGGING 
1486
  PCTFREE 10
1487
  PCTUSED 40
1488
  INITRANS 1
1489
  MAXTRANS 255
1490
  STORAGE
1491
  (
1492
    INITIAL 64K
1493
    NEXT 64K
1494
    MINEXTENTS 1
1495
    MAXEXTENTS 2147483645
1496
    PCTINCREASE 0
1497
    FREELISTS 1
1498
    FREELIST GROUPS 1
1499
    BUFFER_POOL DEFAULT
1500
  )
1501
;
1502
 
1503
CREATE TABLE VIEW_DEF
1504
(
1505
  VIEW_ID NUMBER NOT NULL,
1506
  PKG_ID NUMBER NOT NULL
1507
)
1508
  TABLESPACE "SYSTEM"
1509
  LOGGING 
1510
  PCTFREE 10
1511
  PCTUSED 40
1512
  INITRANS 1
1513
  MAXTRANS 255
1514
  STORAGE
1515
  (
1516
    INITIAL 64K
1517
    NEXT 64K
1518
    MINEXTENTS 1
1519
    MAXEXTENTS 2147483645
1520
    PCTINCREASE 0
1521
    FREELISTS 1
1522
    FREELIST GROUPS 1
1523
    BUFFER_POOL DEFAULT
1524
  )
1525
;
1526
 
1527
CREATE TABLE WORK_IN_PROGRESS
1528
(
1529
  RTAG_ID NUMBER NOT NULL,
1530
  PV_ID NUMBER NOT NULL,
1531
  VIEW_ID NUMBER NOT NULL
1532
)
1533
  TABLESPACE "USERS"
1534
  LOGGING 
1535
  PCTFREE 10
1536
  PCTUSED 40
1537
  INITRANS 1
1538
  MAXTRANS 255
1539
  STORAGE
1540
  (
1541
    INITIAL 64K
1542
    MINEXTENTS 1
1543
    MAXEXTENTS 2147483645
1544
    FREELISTS 1
1545
    FREELIST GROUPS 1
1546
    BUFFER_POOL DEFAULT
1547
  )
1548
;
1549
 
1550
CREATE TABLE RUN_LEVEL
1551
(
1552
  RCON_ID NUMBER,
1553
  CURRENT_BUILD_FILES CLOB,
1554
  CURRENT_RUN_LEVEL NUMBER,
1555
  PAUSE NUMBER,
1556
  CURRENT_PKG_ID_BEING_BUILT NUMBER
1557
)
1558
  TABLESPACE "USERS"
1559
  LOGGING 
1560
  PCTFREE 10
1561
  PCTUSED 40
1562
  INITRANS 1
1563
  MAXTRANS 255
1564
  STORAGE
1565
  (
1566
    INITIAL 64K
1567
    MINEXTENTS 1
1568
    MAXEXTENTS 2147483645
1569
    FREELISTS 1
1570
    FREELIST GROUPS 1
1571
    BUFFER_POOL DEFAULT
1572
  )
1573
    LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$
1574
    (
1575
      ENABLE STORAGE IN ROW
1576
      CHUNK 8192
1577
      PCTVERSION 10
1578
      NOCACHE LOGGING
1579
      TABLESPACE USERS
1580
      STORAGE
1581
      (
1582
        INITIAL 64K
1583
        MINEXTENTS 1
1584
        MAXEXTENTS 2147483645
1585
        FREELISTS 1
1586
        FREELIST GROUPS 1
1587
        BUFFER_POOL DEFAULT
1588
      )
1589
    )
1590
;
1591
 
1592
CREATE TABLE TEST_TYPES
1593
(
1594
  TEST_TYPE_ID NUMBER NOT NULL,
1595
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
1596
  DISPLAY_ORDER NUMBER
1597
, CONSTRAINT PK_TEST_TYPES PRIMARY KEY
1598
  (
1599
    TEST_TYPE_ID
1600
  )
1601
  ENABLE
1602
)
1603
  TABLESPACE "USERS"
1604
  LOGGING 
1605
  PCTFREE 10
1606
  PCTUSED 40
1607
  INITRANS 1
1608
  MAXTRANS 255
1609
  STORAGE
1610
  (
1611
    INITIAL 128K
1612
    MINEXTENTS 1
1613
    MAXEXTENTS 2147483645
1614
    FREELISTS 1
1615
    FREELIST GROUPS 1
1616
    BUFFER_POOL DEFAULT
1617
  )
1618
;
1619
 
1620
CREATE TABLE PACKAGE_DEPENDENCIES
1621
(
1622
  PV_ID NUMBER NOT NULL,
1623
  DPV_ID NUMBER NOT NULL,
1624
  PKG_ID NUMBER NOT NULL,
1625
  DPKG_ID NUMBER NOT NULL,
1626
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1627
  DISPLAY_ORDER NUMBER
1628
)
1629
  TABLESPACE "SYSTEM"
1630
  LOGGING 
1631
  PCTFREE 10
1632
  PCTUSED 40
1633
  INITRANS 1
1634
  MAXTRANS 255
1635
  STORAGE
1636
  (
1637
    INITIAL 320K
1638
    NEXT 64K
1639
    MINEXTENTS 1
1640
    MAXEXTENTS 2147483645
1641
    PCTINCREASE 0
1642
    FREELISTS 1
1643
    FREELIST GROUPS 1
1644
    BUFFER_POOL DEFAULT
1645
  )
1646
;
1647
 
1648
CREATE TABLE PRODUCT_COMPONENTS
1649
(
1650
  PV_ID NUMBER NOT NULL,
1651
  OS_ID NUMBER NOT NULL,
1652
  FILE_PATH VARCHAR2(4000 BYTE),
1653
  FILE_NAME VARCHAR2(4000 BYTE),
1654
  DESTINATION_PATH VARCHAR2(4000 BYTE),
1655
  BYTE_SIZE NUMBER,
1656
  CRC_CKSUM VARCHAR2(2000 BYTE)
1657
)
1658
  TABLESPACE "USERS"
1659
  LOGGING 
1660
  PCTFREE 10
1661
  PCTUSED 40
1662
  INITRANS 1
1663
  MAXTRANS 255
1664
  STORAGE
1665
  (
1666
    INITIAL 64K
1667
    MINEXTENTS 1
1668
    MAXEXTENTS 2147483645
1669
    FREELISTS 1
1670
    FREELIST GROUPS 1
1671
    BUFFER_POOL DEFAULT
1672
  )
1673
;
1674
 
1675
CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES
1676
(
1677
  PKG_ID NUMBER,
1678
  PKG_NAME VARCHAR2(50 BYTE),
1679
  PV_ID NUMBER,
1680
  PKG_VERSION VARCHAR2(50 BYTE),
1681
  DPV_ID NUMBER,
1682
  DPKG_NAME VARCHAR2(50 BYTE),
1683
  DPKG_VERSION VARCHAR2(50 BYTE),
1684
  ISS_DB NUMBER,
1685
  ISS_ID NUMBER
1686
)
1687
ON COMMIT PRESERVE ROWS
1688
;
1689
 
1690
CREATE TABLE PACKAGE_BUILD_INFO
1691
(
1692
  PV_ID NUMBER NOT NULL,
1693
  BM_ID NUMBER NOT NULL,
1694
  BSA_ID NUMBER
1695
)
1696
  TABLESPACE "USERS"
1697
  LOGGING 
1698
  PCTFREE 10
1699
  PCTUSED 40
1700
  INITRANS 1
1701
  MAXTRANS 255
1702
  STORAGE
1703
  (
1704
    INITIAL 64K
1705
    MINEXTENTS 1
1706
    MAXEXTENTS 2147483645
1707
    FREELISTS 1
1708
    FREELIST GROUPS 1
1709
    BUFFER_POOL DEFAULT
1710
  )
1711
;
1712
 
1713
CREATE TABLE PACKAGES
1714
(
1715
  PKG_ID NUMBER NOT NULL,
1716
  PKG_NAME VARCHAR2(255 BYTE) NOT NULL,
1717
  SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),
1718
  WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE)
1719
, CONSTRAINT PK_PACKAGES PRIMARY KEY
1720
  (
1721
    PKG_ID
1722
  )
1723
  ENABLE
1724
)
1725
  TABLESPACE "SYSTEM"
1726
  LOGGING 
1727
  PCTFREE 10
1728
  PCTUSED 40
1729
  INITRANS 1
1730
  MAXTRANS 255
1731
  STORAGE
1732
  (
1733
    INITIAL 64K
1734
    NEXT 64K
1735
    MINEXTENTS 1
1736
    MAXEXTENTS 2147483645
1737
    PCTINCREASE 0
1738
    FREELISTS 1
1739
    FREELIST GROUPS 1
1740
    BUFFER_POOL DEFAULT
1741
  )
1742
;
1743
 
1744
CREATE TABLE MEMBERS_GROUP
1745
(
1746
  GROUP_EMAIL_ID NUMBER NOT NULL,
1747
  USER_ID NUMBER
1748
)
1749
  TABLESPACE "USERS"
1750
  LOGGING 
1751
  PCTFREE 10
1752
  PCTUSED 40
1753
  INITRANS 1
1754
  MAXTRANS 255
1755
  STORAGE
1756
  (
1757
    INITIAL 64K
1758
    MINEXTENTS 1
1759
    MAXEXTENTS 2147483645
1760
    FREELISTS 1
1761
    FREELIST GROUPS 1
1762
    BUFFER_POOL DEFAULT
1763
  )
1764
;
1765
 
1766
CREATE TABLE BUILD_SERVICE_CONFIG
1767
(
1768
  SERVICE VARCHAR2(50 BYTE) NOT NULL,
1769
  CONFIG VARCHAR2(2000 BYTE) NOT NULL
1770
)
1771
  TABLESPACE "USERS"
1772
  LOGGING 
1773
  PCTFREE 10
1774
  PCTUSED 40
1775
  INITRANS 1
1776
  MAXTRANS 255
1777
  STORAGE
1778
  (
1779
    INITIAL 64K
1780
    MINEXTENTS 1
1781
    MAXEXTENTS 2147483645
1782
    FREELISTS 1
1783
    FREELIST GROUPS 1
1784
    BUFFER_POOL DEFAULT
1785
  )
1786
;
1787
 
1788
CREATE TABLE PROJECTS
1789
(
1790
  PROJ_ID NUMBER NOT NULL,
1791
  PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,
1792
  BASE_URL VARCHAR2(4000 BYTE)
1793
, CONSTRAINT PK_PROJECTS PRIMARY KEY
1794
  (
1795
    PROJ_ID
1796
  )
1797
  ENABLE
1798
)
1799
  TABLESPACE "SYSTEM"
1800
  LOGGING 
1801
  PCTFREE 10
1802
  PCTUSED 40
1803
  INITRANS 1
1804
  MAXTRANS 255
1805
  STORAGE
1806
  (
1807
    INITIAL 64K
1808
    NEXT 64K
1809
    MINEXTENTS 1
1810
    MAXEXTENTS 2147483645
1811
    PCTINCREASE 0
1812
    FREELISTS 1
1813
    FREELIST GROUPS 1
1814
    BUFFER_POOL DEFAULT
1815
  )
1816
;
1817
 
1818
CREATE TABLE VIEWS
1819
(
1820
  VIEW_ID NUMBER NOT NULL,
1821
  VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,
1822
  OWNER_ID NUMBER NOT NULL,
1823
  BASE_VIEW CHAR(1 BYTE) NOT NULL,
1824
  PUBLIC_READ CHAR(1 BYTE) NOT NULL
1825
, CONSTRAINT PK_VIEWS PRIMARY KEY
1826
  (
1827
    VIEW_ID
1828
  )
1829
  ENABLE
1830
)
1831
  TABLESPACE "SYSTEM"
1832
  LOGGING 
1833
  PCTFREE 10
1834
  PCTUSED 40
1835
  INITRANS 1
1836
  MAXTRANS 255
1837
  STORAGE
1838
  (
1839
    INITIAL 64K
1840
    NEXT 64K
1841
    MINEXTENTS 1
1842
    MAXEXTENTS 2147483645
1843
    PCTINCREASE 0
1844
    FREELISTS 1
1845
    FREELIST GROUPS 1
1846
    BUFFER_POOL DEFAULT
1847
  )
1848
;
1849
 
1850
CREATE TABLE DAEMON_ACTION_LOG
1851
(
1852
  USER_ID NUMBER NOT NULL,
1853
  ACTION_DATETIME DATE,
1854
  RCON_ID NUMBER NOT NULL,
1855
  DESCRIPTION VARCHAR2(4000 BYTE),
1856
  ACTTYPE_ID NUMBER
1857
)
1858
  TABLESPACE "USERS"
1859
  LOGGING 
1860
  PCTFREE 10
1861
  PCTUSED 40
1862
  INITRANS 1
1863
  MAXTRANS 255
1864
  STORAGE
1865
  (
1866
    INITIAL 64K
1867
    MINEXTENTS 1
1868
    MAXEXTENTS 2147483645
1869
    FREELISTS 1
1870
    FREELIST GROUPS 1
1871
    BUFFER_POOL DEFAULT
1872
  )
1873
;
1874
 
1875
CREATE TABLE DASH_BOARD
1876
(
1877
  PROJ_ID NUMBER NOT NULL,
1878
  RTAG_ID NUMBER NOT NULL,
1879
  LAST_BUILD_TIME DATE NOT NULL,
1880
  AUTOMATED_PACKAGES NUMBER NOT NULL,
1881
  TOTAL_PACKAGES NUMBER NOT NULL
1882
)
1883
  TABLESPACE "USERS"
1884
  LOGGING 
1885
  PCTFREE 10
1886
  PCTUSED 40
1887
  INITRANS 1
1888
  MAXTRANS 255
1889
  STORAGE
1890
  (
1891
    INITIAL 64K
1892
    MINEXTENTS 1
1893
    MAXEXTENTS 2147483645
1894
    FREELISTS 1
1895
    FREELIST GROUPS 1
1896
    BUFFER_POOL DEFAULT
1897
  )
1898
;
1899
 
1900
CREATE TABLE ABT_ACTION_LOG
1901
(
1902
  RCON_ID NUMBER NOT NULL,
1903
  ACTION_DATETIME DATE,
1904
  ACTION VARCHAR2(4000 BYTE)
1905
)
1906
  TABLESPACE "USERS"
1907
  LOGGING 
1908
  PCTFREE 10
1909
  PCTUSED 40
1910
  INITRANS 1
1911
  MAXTRANS 255
1912
  STORAGE
1913
  (
1914
    INITIAL 64K
1915
    MINEXTENTS 1
1916
    MAXEXTENTS 2147483645
1917
    FREELISTS 1
1918
    FREELIST GROUPS 1
1919
    BUFFER_POOL DEFAULT
1920
  )
1921
;
1922
 
1923
CREATE TABLE RUNTIME_DEPENDENCIES
1924
(
1925
  PV_ID NUMBER NOT NULL,
1926
  RTD_ID NUMBER,
1927
  RTD_COMMENTS VARCHAR2(2000 BYTE),
1928
  RTD_URL VARCHAR2(2000 BYTE),
1929
  MOD_DATE DATE NOT NULL,
1930
  MOD_USER NUMBER NOT NULL
1931
)
1932
  TABLESPACE "USERS"
1933
  LOGGING 
1934
  PCTFREE 10
1935
  PCTUSED 40
1936
  INITRANS 1
1937
  MAXTRANS 255
1938
  STORAGE
1939
  (
1940
    INITIAL 128K
1941
    MINEXTENTS 1
1942
    MAXEXTENTS 2147483645
1943
    FREELISTS 1
1944
    FREELIST GROUPS 1
1945
    BUFFER_POOL DEFAULT
1946
  )
1947
;
1948
 
1949
CREATE TABLE PACKAGE_VERSIONS
1950
(
1951
  PV_ID NUMBER NOT NULL,
1952
  PKG_ID NUMBER NOT NULL,
1953
  PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,
1954
  DLOCKED CHAR(1 BYTE) NOT NULL,
1955
  RELEASED_AT NUMBER,
1956
  MODIFIED_STAMP DATE,
1957
  MODIFIER_ID NUMBER NOT NULL,
1958
  CREATED_STAMP DATE,
1959
  CREATOR_ID NUMBER NOT NULL,
1960
  COMMENTS VARCHAR2(4000 BYTE),
1961
  V_MM VARCHAR2(50 BYTE),
1962
  V_NMM VARCHAR2(50 BYTE),
1963
  V_EXT VARCHAR2(50 BYTE),
1964
  PKG_LABEL VARCHAR2(60 BYTE),
1965
  SRC_PATH VARCHAR2(2000 BYTE),
1966
  PV_DESCRIPTION VARCHAR2(4000 BYTE),
1967
  OWNER_ID NUMBER NOT NULL,
1968
  PV_OVERVIEW VARCHAR2(4000 BYTE),
1969
  IS_PATCH CHAR(1 BYTE),
1970
  LAST_PV_ID NUMBER NOT NULL,
1971
  RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),
1972
  IS_DEPLOYABLE CHAR(1 BYTE),
1973
  IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),
1974
  IS_OBSOLETE CHAR(1 BYTE),
1975
  OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),
1976
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1977
  CHANGE_TYPE CHAR(1 BYTE),
1978
  LINK VARCHAR2(4000 BYTE),
1979
  PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),
1980
  BS_ID NUMBER,
1981
  IS_AUTOBUILDABLE CHAR(1 BYTE),
1982
  SBOM_PRIORITY CHAR(1 BYTE),
1983
  RIPPLE_FIELD CHAR(1 CHAR),
1984
  MAXIMUM_BUILD_TIME NUMBER,
1985
  ESTIMATED_COMPLETION_TIME DATE
1986
, CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY
1987
  (
1988
    PV_ID
1989
  )
1990
  ENABLE
1991
)
1992
  TABLESPACE "SYSTEM"
1993
  LOGGING 
1994
  PCTFREE 10
1995
  PCTUSED 40
1996
  INITRANS 1
1997
  MAXTRANS 255
1998
  STORAGE
1999
  (
2000
    INITIAL 192K
2001
    NEXT 64K
2002
    MINEXTENTS 1
2003
    MAXEXTENTS 2147483645
2004
    PCTINCREASE 0
2005
    FREELISTS 1
2006
    FREELIST GROUPS 1
2007
    BUFFER_POOL DEFAULT
2008
  )
2009
;
2010
 
2011
CREATE TABLE REPEAT_SCHEDULE
2012
(
2013
  RPT_ID NUMBER NOT NULL,
2014
  REPEAT CHAR(1 BYTE)
2015
, PRIMARY KEY
2016
  (
2017
    RPT_ID
2018
  )
2019
  ENABLE
2020
)
2021
  TABLESPACE "USERS"
2022
  LOGGING 
2023
  PCTFREE 10
2024
  PCTUSED 40
2025
  INITRANS 1
2026
  MAXTRANS 255
2027
  STORAGE
2028
  (
2029
    INITIAL 64K
2030
    MINEXTENTS 1
2031
    MAXEXTENTS 2147483645
2032
    FREELISTS 1
2033
    FREELIST GROUPS 1
2034
    BUFFER_POOL DEFAULT
2035
  )
2036
;
2037
 
2038
CREATE TABLE CODE_REVIEW_URL
2039
(
2040
  CR_ID NUMBER NOT NULL,
2041
  PV_ID NUMBER NOT NULL,
2042
  PROJ_ID NUMBER NOT NULL,
2043
  URL VARCHAR2(4000 BYTE) NOT NULL,
2044
  REASON VARCHAR2(4000 BYTE),
2045
  DATE_OF_REVIEW DATE NOT NULL,
2046
  LAST_MODIFIED DATE
2047
, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY
2048
  (
2049
    CR_ID
2050
  )
2051
  ENABLE
2052
)
2053
  TABLESPACE "USERS"
2054
  LOGGING 
2055
  PCTFREE 10
2056
  PCTUSED 40
2057
  INITRANS 1
2058
  MAXTRANS 255
2059
  STORAGE
2060
  (
2061
    INITIAL 64K
2062
    MINEXTENTS 1
2063
    MAXEXTENTS 2147483645
2064
    FREELISTS 1
2065
    FREELIST GROUPS 1
2066
    BUFFER_POOL DEFAULT
2067
  )
2068
;
2069
 
2070
CREATE TABLE DEF_ACTION_BUTTONS
2071
(
2072
  ABTN_ID NUMBER NOT NULL,
2073
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
2074
  TEXT VARCHAR2(50 BYTE),
2075
  ACTION_LINK VARCHAR2(4000 BYTE),
2076
  EVENT_HANDLER VARCHAR2(4000 BYTE),
2077
  IMG_ENABLED VARCHAR2(1000 BYTE),
2078
  IMG_DISABLED VARCHAR2(1000 BYTE),
2079
  HINT VARCHAR2(255 BYTE),
2080
  VISIBLE CHAR(1 BYTE) NOT NULL,
2081
  ACTIVE CHAR(1 BYTE) NOT NULL,
2082
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
2083
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
2084
  (
2085
    ABTN_ID
2086
  )
2087
  ENABLE
2088
)
2089
  TABLESPACE "USERS"
2090
  LOGGING 
2091
  PCTFREE 10
2092
  PCTUSED 40
2093
  INITRANS 1
2094
  MAXTRANS 255
2095
  STORAGE
2096
  (
2097
    INITIAL 64K
2098
    MINEXTENTS 1
2099
    MAXEXTENTS 2147483645
2100
    FREELISTS 1
2101
    FREELIST GROUPS 1
2102
    BUFFER_POOL DEFAULT
2103
  )
2104
;
2105
 
2106
CREATE TABLE CQ_ISSUES
2107
(
2108
  PV_ID NUMBER NOT NULL,
2109
  ISS_DB NUMBER NOT NULL,
2110
  ISS_ID NUMBER NOT NULL,
2111
  ISS_STATE NUMBER NOT NULL,
2112
  MOD_DATE DATE NOT NULL,
2113
  NOTES VARCHAR2(255 BYTE)
2114
)
2115
  TABLESPACE "SYSTEM"
2116
  LOGGING 
2117
  PCTFREE 10
2118
  PCTUSED 40
2119
  INITRANS 1
2120
  MAXTRANS 255
2121
  STORAGE
2122
  (
2123
    INITIAL 64K
2124
    NEXT 64K
2125
    MINEXTENTS 1
2126
    MAXEXTENTS 2147483645
2127
    PCTINCREASE 0
2128
    FREELISTS 1
2129
    FREELIST GROUPS 1
2130
    BUFFER_POOL DEFAULT
2131
  )
2132
;
2133
 
2134
ALTER TABLE PLANNED
2135
ADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE
2136
(
2137
  PV_ID,
2138
  RTAG_ID
2139
)
2140
 ENABLE
2141
;
2142
 
2143
ALTER TABLE PACKAGE_METRICS
2144
ADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE
2145
(
2146
  PV_ID
2147
)
2148
 ENABLE
2149
;
2150
 
2151
ALTER TABLE RELEASE_METRICS
2152
ADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE
2153
(
2154
  RTAG_ID
2155
)
2156
 ENABLE
2157
;
2158
 
2159
ALTER TABLE PACKAGE_BUILD_ENV
2160
ADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY
2161
(
2162
  BE_ID
2163
)
2164
REFERENCES BUILD_ENVIRONMENTS
2165
(
2166
BE_ID
2167
) ENABLE
2168
;
2169
 
2170
ALTER TABLE PACKAGE_BUILD_ENV
2171
ADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY
2172
(
2173
  PV_ID
2174
)
2175
REFERENCES PACKAGE_VERSIONS
2176
(
2177
PV_ID
2178
) ENABLE
2179
;
2180
 
2181
ALTER TABLE NOTIFICATION_HISTORY
2182
ADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY
2183
(
2184
  PV_ID
2185
)
2186
REFERENCES PACKAGE_VERSIONS
2187
(
2188
PV_ID
2189
) DISABLE
2190
;
2191
 
2192
ALTER TABLE NOTIFICATION_HISTORY
2193
ADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY
2194
(
2195
  RTAG_ID
2196
)
2197
REFERENCES RELEASE_TAGS
2198
(
2199
RTAG_ID
2200
) ENABLE
2201
;
2202
 
2203
ALTER TABLE IGNORE_WARNINGS
2204
ADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY
2205
(
2206
  RTAG_ID
2207
)
2208
REFERENCES RELEASE_TAGS
2209
(
2210
RTAG_ID
2211
) ENABLE
2212
;
2213
 
2214
ALTER TABLE IGNORE_WARNINGS
2215
ADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY
2216
(
2217
  DPV_ID
2218
)
2219
REFERENCES PACKAGE_VERSIONS
2220
(
2221
PV_ID
2222
) ENABLE
2223
;
2224
 
2225
ALTER TABLE IGNORE_WARNINGS
2226
ADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY
2227
(
2228
  PV_ID
2229
)
2230
REFERENCES PACKAGE_VERSIONS
2231
(
2232
PV_ID
2233
) ENABLE
2234
;
2235
 
2236
ALTER TABLE PACKAGE_DOCUMENTS
2237
ADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY
2238
(
2239
  PV_ID
2240
)
2241
REFERENCES PACKAGE_VERSIONS
2242
(
2243
PV_ID
2244
) ENABLE
2245
;
2246
 
2247
ALTER TABLE BUILD_STANDARDS_ADDENDUM
2248
ADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY
2249
(
2250
  BS_ID
2251
)
2252
REFERENCES BUILD_STANDARDS
2253
(
2254
BS_ID
2255
) ENABLE
2256
;
2257
 
2258
ALTER TABLE UNIT_TESTS
2259
ADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY
2260
(
2261
  TEST_TYPES_FK
2262
)
2263
REFERENCES TEST_TYPES
2264
(
2265
TEST_TYPE_ID
2266
) ENABLE
2267
;
2268
 
2269
ALTER TABLE UNIT_TESTS
2270
ADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY
2271
(
2272
  PV_ID
2273
)
2274
REFERENCES PACKAGE_VERSIONS
2275
(
2276
PV_ID
2277
) ENABLE
2278
;
2279
 
2280
ALTER TABLE RELEASE_COMPONENTS
2281
ADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY
2282
(
2283
  PV_ID
2284
)
2285
REFERENCES PACKAGE_VERSIONS
2286
(
2287
PV_ID
2288
) ENABLE
2289
;
2290
 
2291
ALTER TABLE BUILD_ORDER
2292
ADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY
2293
(
2294
  PV_ID
2295
)
2296
REFERENCES PACKAGE_VERSIONS
2297
(
2298
PV_ID
2299
) DISABLE
2300
;
2301
 
2302
ALTER TABLE BUILD_ORDER
2303
ADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY
2304
(
2305
  RTAG_ID
2306
)
2307
REFERENCES RELEASE_TAGS
2308
(
2309
RTAG_ID
2310
) ENABLE
2311
;
2312
 
2313
ALTER TABLE PLANNED
53 mhunt 2314
ADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY
51 mhunt 2315
(
53 mhunt 2316
  RTAG_ID
51 mhunt 2317
)
53 mhunt 2318
REFERENCES RELEASE_TAGS
51 mhunt 2319
(
53 mhunt 2320
RTAG_ID
51 mhunt 2321
) ENABLE
2322
;
2323
 
2324
ALTER TABLE PLANNED
53 mhunt 2325
ADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY
51 mhunt 2326
(
53 mhunt 2327
  PV_ID
51 mhunt 2328
)
53 mhunt 2329
REFERENCES PACKAGE_VERSIONS
51 mhunt 2330
(
53 mhunt 2331
PV_ID
51 mhunt 2332
) ENABLE
2333
;
2334
 
2335
ALTER TABLE PLANNED
2336
ADD CONSTRAINT REFVIEWS55 FOREIGN KEY
2337
(
2338
  VIEW_ID
2339
)
2340
REFERENCES VIEWS
2341
(
2342
VIEW_ID
2343
) ENABLE
2344
;
2345
 
2346
ALTER TABLE PROJECT_ACTION_LOG
2347
ADD FOREIGN KEY
2348
(
2349
  RTAG_ID
2350
)
2351
REFERENCES RELEASE_TAGS
2352
(
2353
RTAG_ID
2354
) DISABLE
2355
;
2356
 
2357
ALTER TABLE PROJECT_ACTION_LOG
2358
ADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY
2359
(
2360
  ACTTYPE_ID
2361
)
2362
REFERENCES ACTION_TYPE
2363
(
2364
ACTTYPE_ID
2365
) ENABLE
2366
;
2367
 
2368
ALTER TABLE PACKAGE_METRICS
2369
ADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY
2370
(
2371
  PV_ID
2372
)
2373
REFERENCES PACKAGE_VERSIONS
2374
(
2375
PV_ID
2376
) ENABLE
2377
;
2378
 
2379
ALTER TABLE RELEASE_LINKS
2380
ADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY
2381
(
2382
  REF_RTAG_ID
2383
)
2384
REFERENCES RELEASE_TAGS
2385
(
2386
RTAG_ID
2387
) ENABLE
2388
;
2389
 
2390
ALTER TABLE RELEASE_LINKS
2391
ADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY
2392
(
2393
  RTAG_ID
2394
)
2395
REFERENCES RELEASE_TAGS
2396
(
2397
RTAG_ID
2398
) ENABLE
2399
;
2400
 
2401
ALTER TABLE BUILD_ENV_DOCUMENTS
2402
ADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY
2403
(
2404
  BE_ID
2405
)
2406
REFERENCES BUILD_ENVIRONMENTS
2407
(
2408
BE_ID
2409
) ENABLE
2410
;
2411
 
2412
ALTER TABLE ACTION_LOG
2413
ADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY
2414
(
2415
  ACTTYPE_ID
2416
)
2417
REFERENCES ACTION_TYPE
2418
(
2419
ACTTYPE_ID
2420
) ENABLE
2421
;
2422
 
2423
ALTER TABLE ADDITIONAL_NOTES
2424
ADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY
2425
(
2426
  PV_ID
2427
)
2428
REFERENCES PACKAGE_VERSIONS
2429
(
2430
PV_ID
2431
) ENABLE
2432
;
2433
 
2434
ALTER TABLE VTREES_WORLD
2435
ADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY
2436
(
2437
  VTREE_ID
2438
)
2439
REFERENCES VTREES
2440
(
2441
VTREE_ID
2442
) ENABLE
2443
;
2444
 
2445
ALTER TABLE VTREES_WORLD
2446
ADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY
2447
(
2448
  WORLD_ID
2449
)
2450
REFERENCES WORLDS
2451
(
2452
WORLD_ID
2453
) ENABLE
2454
;
2455
 
2456
ALTER TABLE CODE_REVIEWS
2457
ADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY
2458
(
2459
  PV_ID
2460
)
2461
REFERENCES PACKAGE_VERSIONS
2462
(
2463
PV_ID
2464
) ENABLE
2465
;
2466
 
2467
ALTER TABLE PLANNED_VERSIONS
2468
ADD FOREIGN KEY
2469
(
2470
  PKG_ID
2471
)
2472
REFERENCES PACKAGES
2473
(
2474
PKG_ID
2475
) ENABLE
2476
;
2477
 
2478
ALTER TABLE DO_NOT_RIPPLE
2479
ADD FOREIGN KEY
2480
(
2481
  PV_ID
2482
)
2483
REFERENCES PACKAGE_VERSIONS
2484
(
2485
PV_ID
2486
) ENABLE
2487
;
2488
 
2489
ALTER TABLE DO_NOT_RIPPLE
2490
ADD FOREIGN KEY
2491
(
2492
  RTAG_ID
2493
)
2494
REFERENCES RELEASE_TAGS
2495
(
2496
RTAG_ID
2497
) ENABLE
2498
;
2499
 
2500
ALTER TABLE RELEASE_CONTENT
2501
ADD FOREIGN KEY
2502
(
2503
  PKG_ID
2504
)
2505
REFERENCES PACKAGES
2506
(
2507
PKG_ID
2508
) ENABLE
2509
;
2510
 
2511
ALTER TABLE RELEASE_CONTENT
2512
ADD FOREIGN KEY
2513
(
2514
  PRODUCT_STATE
2515
)
2516
REFERENCES PRODUCT_STATES
2517
(
2518
STATE_ID
2519
) ENABLE
2520
;
2521
 
2522
ALTER TABLE PACKAGE_PROCESSES
2523
ADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY
2524
(
2525
  PROC_ID
2526
)
2527
REFERENCES PROCESSES
2528
(
2529
PROC_ID
2530
) ENABLE
2531
;
2532
 
2533
ALTER TABLE PACKAGE_PROCESSES
2534
ADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY
2535
(
2536
  PV_ID
2537
)
2538
REFERENCES PACKAGE_VERSIONS
2539
(
2540
PV_ID
2541
) ENABLE
2542
;
2543
 
2544
ALTER TABLE ADVISORY_RIPPLE
2545
ADD FOREIGN KEY
2546
(
2547
  RTAG_ID
2548
)
2549
REFERENCES RELEASE_TAGS
2550
(
2551
RTAG_ID
2552
) ENABLE
2553
;
2554
 
2555
ALTER TABLE ADVISORY_RIPPLE
2556
ADD FOREIGN KEY
2557
(
2558
  PV_ID
2559
)
2560
REFERENCES PACKAGE_VERSIONS
2561
(
2562
PV_ID
2563
) ENABLE
2564
;
2565
 
2566
ALTER TABLE PACKAGE_PATCHES
2567
ADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY
2568
(
2569
  PATCH_ID
2570
)
2571
REFERENCES PACKAGE_VERSIONS
2572
(
2573
PV_ID
2574
) ENABLE
2575
;
2576
 
2577
ALTER TABLE PACKAGE_PATCHES
2578
ADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY
2579
(
2580
  PV_ID
2581
)
2582
REFERENCES PACKAGE_VERSIONS
2583
(
2584
PV_ID
2585
) ENABLE
2586
;
2587
 
2588
ALTER TABLE PACKAGE_INTEREST
2589
ADD FOREIGN KEY
2590
(
2591
  PROJ_ID
2592
)
2593
REFERENCES PROJECTS
2594
(
2595
PROJ_ID
2596
) ENABLE
2597
;
2598
 
2599
ALTER TABLE RELEASE_CONFIG
2600
ADD FOREIGN KEY
2601
(
2602
  RTAG_ID
2603
)
2604
REFERENCES RELEASE_TAGS
2605
(
2606
RTAG_ID
2607
) ENABLE
2608
;
2609
 
2610
ALTER TABLE RELEASE_CONFIG
2611
ADD FOREIGN KEY
2612
(
2613
  GBE_ID
2614
)
2615
REFERENCES GBE_MACHTYPE
2616
(
2617
GBE_ID
2618
) ENABLE
2619
;
2620
 
2621
ALTER TABLE RELEASE_METRICS
2622
ADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY
2623
(
2624
  RTAG_ID
2625
)
2626
REFERENCES RELEASE_TAGS
2627
(
2628
RTAG_ID
2629
) ENABLE
2630
;
2631
 
2632
ALTER TABLE AUTOBUILD_FAILURE
2633
ADD FOREIGN KEY
2634
(
2635
  VIEW_ID
2636
)
2637
REFERENCES VIEWS
2638
(
2639
VIEW_ID
2640
) ENABLE
2641
;
2642
 
2643
ALTER TABLE AUTOBUILD_FAILURE
2644
ADD FOREIGN KEY
2645
(
2646
  PROJ_ID
2647
)
2648
REFERENCES PROJECTS
2649
(
2650
PROJ_ID
2651
) ENABLE
2652
;
2653
 
2654
ALTER TABLE JIRA_ISSUES
2655
ADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY
2656
(
2657
  PV_ID
2658
)
2659
REFERENCES PACKAGE_VERSIONS
2660
(
2661
PV_ID
2662
) ENABLE
2663
;
2664
 
2665
ALTER TABLE WORK_IN_PROGRESS
2666
ADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY
2667
(
2668
  PV_ID
2669
)
2670
REFERENCES PACKAGE_VERSIONS
2671
(
2672
PV_ID
2673
) ENABLE
2674
;
2675
 
2676
ALTER TABLE WORK_IN_PROGRESS
2677
ADD CONSTRAINT REFVIEWS52 FOREIGN KEY
2678
(
2679
  VIEW_ID
2680
)
2681
REFERENCES VIEWS
2682
(
2683
VIEW_ID
2684
) ENABLE
2685
;
2686
 
2687
ALTER TABLE WORK_IN_PROGRESS
2688
ADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY
2689
(
2690
  RTAG_ID
2691
)
2692
REFERENCES RELEASE_TAGS
2693
(
2694
RTAG_ID
2695
) ENABLE
2696
;
2697
 
2698
ALTER TABLE RUN_LEVEL
2699
ADD FOREIGN KEY
2700
(
2701
  RCON_ID
2702
)
2703
REFERENCES RELEASE_CONFIG
2704
(
2705
RCON_ID
2706
) ENABLE
2707
;
2708
 
2709
ALTER TABLE RUN_LEVEL
2710
ADD FOREIGN KEY
2711
(
2712
  CURRENT_PKG_ID_BEING_BUILT
2713
)
2714
REFERENCES PACKAGES
2715
(
2716
PKG_ID
2717
) ENABLE
2718
;
2719
 
2720
ALTER TABLE PRODUCT_COMPONENTS
2721
ADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY
2722
(
2723
  PV_ID
2724
)
2725
REFERENCES PACKAGE_VERSIONS
2726
(
2727
PV_ID
2728
) ENABLE
2729
;
2730
 
2731
ALTER TABLE PACKAGE_BUILD_INFO
2732
ADD FOREIGN KEY
2733
(
2734
  PV_ID
2735
)
2736
REFERENCES PACKAGE_VERSIONS
2737
(
2738
PV_ID
2739
) ENABLE
2740
;
2741
 
2742
ALTER TABLE PACKAGE_BUILD_INFO
2743
ADD FOREIGN KEY
2744
(
2745
  BM_ID
2746
)
2747
REFERENCES BUILD_MACHINES
2748
(
2749
BM_ID
2750
) ENABLE
2751
;
2752
 
2753
ALTER TABLE MEMBERS_GROUP
2754
ADD FOREIGN KEY
2755
(
2756
  GROUP_EMAIL_ID
2757
)
2758
REFERENCES AUTOBUILD_FAILURE
2759
(
2760
GROUP_EMAIL_ID
2761
) ENABLE
2762
;
2763
 
2764
ALTER TABLE DAEMON_ACTION_LOG
2765
ADD FOREIGN KEY
2766
(
2767
  ACTTYPE_ID
2768
)
2769
REFERENCES ACTION_TYPE
2770
(
2771
ACTTYPE_ID
2772
) ENABLE
2773
;
2774
 
2775
ALTER TABLE DAEMON_ACTION_LOG
2776
ADD FOREIGN KEY
2777
(
2778
  RCON_ID
2779
)
2780
REFERENCES RELEASE_CONFIG
2781
(
2782
RCON_ID
2783
) ENABLE
2784
;
2785
 
2786
ALTER TABLE DASH_BOARD
2787
ADD FOREIGN KEY
2788
(
2789
  PROJ_ID
2790
)
2791
REFERENCES PROJECTS
2792
(
2793
PROJ_ID
2794
) ENABLE
2795
;
2796
 
2797
ALTER TABLE DASH_BOARD
2798
ADD FOREIGN KEY
2799
(
2800
  RTAG_ID
2801
)
2802
REFERENCES RELEASE_TAGS
2803
(
2804
RTAG_ID
2805
) ENABLE
2806
;
2807
 
2808
ALTER TABLE ABT_ACTION_LOG
2809
ADD FOREIGN KEY
2810
(
2811
  RCON_ID
2812
)
2813
REFERENCES RELEASE_CONFIG
2814
(
2815
RCON_ID
2816
) ENABLE
2817
;
2818
 
2819
ALTER TABLE RUNTIME_DEPENDENCIES
2820
ADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY
2821
(
2822
  RTD_ID
2823
)
2824
REFERENCES PACKAGE_VERSIONS
2825
(
2826
PV_ID
2827
) ENABLE
2828
;
2829
 
2830
ALTER TABLE RUNTIME_DEPENDENCIES
2831
ADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY
2832
(
2833
  PV_ID
2834
)
2835
REFERENCES PACKAGE_VERSIONS
2836
(
2837
PV_ID
2838
) ENABLE
2839
;
2840
 
2841
ALTER TABLE PACKAGE_VERSIONS
2842
ADD FOREIGN KEY
2843
(
2844
  BS_ID
2845
)
2846
REFERENCES BUILD_STANDARDS
2847
(
2848
BS_ID
2849
) ENABLE
2850
;
2851
 
2852
ALTER TABLE CODE_REVIEW_URL
2853
ADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY
2854
(
2855
  PROJ_ID
2856
)
2857
REFERENCES PROJECTS
2858
(
2859
PROJ_ID
2860
) ENABLE
2861
;
2862
 
2863
ALTER TABLE CODE_REVIEW_URL
2864
ADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY
2865
(
2866
  PV_ID
2867
)
2868
REFERENCES PACKAGE_VERSIONS
2869
(
2870
PV_ID
2871
) ENABLE
2872
;
2873
 
2874
ALTER TABLE CQ_ISSUES
2875
ADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY
2876
(
2877
  PV_ID
2878
)
2879
REFERENCES PACKAGE_VERSIONS
2880
(
2881
PV_ID
2882
) ENABLE
2883
;
2884
 
2885
ALTER TABLE MICROSOFTDTPROPERTIES
2886
ADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK
2887
("PROPERTY" IS NOT NULL)
2888
 ENABLE
2889
;
2890
 
2891
ALTER TABLE MICROSOFTDTPROPERTIES
2892
ADD CONSTRAINT MICROSOFT_NN_ID CHECK
2893
("ID" IS NOT NULL)
2894
 ENABLE
2895
;
2896
 
2897
ALTER TABLE MICROSOFTDTPROPERTIES
2898
ADD CONSTRAINT MICROSOFT_NN_VERSION CHECK
2899
("VERSION" IS NOT NULL)
2900
 ENABLE
2901
;
2902
 
2903
ALTER TABLE RIPPLE_FIELD_STATES
2904
ADD CHECK
2905
("STATE_ACRONYM" IS NOT NULL)
2906
 DISABLE
2907
;
2908
 
2909
CREATE OR REPLACE VIEW RM_PKG_ISSUES_ID AS SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL;
2910
 
2911
CREATE OR REPLACE VIEW ENVIRONMENT_VIEW AS SELECT 2 AS ENV_AREA,
2912
    rc.PV_ID,
2913
    rc.RTAG_ID,
2914
    rc.BASE_VIEW_ID AS VIEW_ID,
2915
    rc.PKG_STATE,
2916
 rc.DEPRECATED_STATE,
2917
    rc.INSERTOR_ID,
53 mhunt 2918
    rc.INSERT_STAMP,
2919
    ' ' AS OPERATION
51 mhunt 2920
  FROM RELEASE_CONTENT rc
2921
UNION
2922
SELECT 0 AS ENV_AREA,
2923
    wip.PV_ID,
2924
    wip.RTAG_ID,
2925
    wip.VIEW_ID,
2926
    NULL AS PKG_STATE,
2927
 NULL AS DEPRECATED_STATE,
2928
    NULL AS INSERTOR_ID,
53 mhunt 2929
    NULL AS INSERT_STAMP,
2930
    ' ' AS OPERATION
2931
  FROM WORK_IN_PROGRESS wip
2932
UNION
51 mhunt 2933
SELECT 1 AS ENV_AREA,
2934
    pl.PV_ID,
2935
    pl.RTAG_ID,
2936
    pl.VIEW_ID,
2937
    NULL AS PKG_STATE,
2938
 NULL AS DEPRECATED_STATE,
2939
    NULL AS INSERTOR_ID,
53 mhunt 2940
    NULL AS INSERT_STAMP,
2941
    pl.operation
2942
FROM PLANNED pl;
51 mhunt 2943
 
2944
CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC)  TABLESPACE "USERS"
2945
  LOGGING 
2946
  PCTFREE 10
2947
  INITRANS 2
2948
  MAXTRANS 255
2949
  STORAGE
2950
  (
2951
    INITIAL 128K
2952
    MINEXTENTS 1
2953
    MAXEXTENTS 2147483645
2954
    FREELISTS 1
2955
    FREELIST GROUPS 1
2956
    BUFFER_POOL DEFAULT
2957
  )
2958
;
2959
 
2960
CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
2961
  NOLOGGING 
2962
  PCTFREE 10
2963
  INITRANS 2
2964
  MAXTRANS 255
2965
  STORAGE
2966
  (
2967
    INITIAL 128K
2968
    MINEXTENTS 1
2969
    MAXEXTENTS 2147483645
2970
    FREELISTS 1
2971
    FREELIST GROUPS 1
2972
    BUFFER_POOL DEFAULT
2973
  )
2974
;
2975
 
2976
CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC)  TABLESPACE "USERS"
2977
  NOLOGGING 
2978
  PCTFREE 10
2979
  INITRANS 2
2980
  MAXTRANS 255
2981
  STORAGE
2982
  (
2983
    INITIAL 128K
2984
    MINEXTENTS 1
2985
    MAXEXTENTS 2147483645
2986
    FREELISTS 1
2987
    FREELIST GROUPS 1
2988
    BUFFER_POOL DEFAULT
2989
  )
2990
;
2991
 
2992
CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC)  TABLESPACE "USERS"
2993
  NOLOGGING 
2994
  PCTFREE 10
2995
  INITRANS 2
2996
  MAXTRANS 255
2997
  STORAGE
2998
  (
2999
    INITIAL 128K
3000
    MINEXTENTS 1
3001
    MAXEXTENTS 2147483645
3002
    FREELISTS 1
3003
    FREELIST GROUPS 1
3004
    BUFFER_POOL DEFAULT
3005
  )
3006
;
3007
 
3008
CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC)  TABLESPACE "USERS"
3009
  LOGGING 
3010
  PCTFREE 10
3011
  INITRANS 2
3012
  MAXTRANS 255
3013
  STORAGE
3014
  (
3015
    INITIAL 64K
3016
    MINEXTENTS 1
3017
    MAXEXTENTS 2147483645
3018
    FREELISTS 1
3019
    FREELIST GROUPS 1
3020
    BUFFER_POOL DEFAULT
3021
  )
3022
;
3023
 
3024
CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3025
  LOGGING 
3026
  PCTFREE 10
3027
  INITRANS 2
3028
  MAXTRANS 255
3029
  STORAGE
3030
  (
3031
    INITIAL 64K
3032
    MINEXTENTS 1
3033
    MAXEXTENTS 2147483645
3034
    FREELISTS 1
3035
    FREELIST GROUPS 1
3036
    BUFFER_POOL DEFAULT
3037
  )
3038
;
3039
 
3040
CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC)  TABLESPACE "USERS"
3041
  LOGGING 
3042
  PCTFREE 10
3043
  INITRANS 2
3044
  MAXTRANS 255
3045
  STORAGE
3046
  (
3047
    INITIAL 64K
3048
    MINEXTENTS 1
3049
    MAXEXTENTS 2147483645
3050
    FREELISTS 1
3051
    FREELIST GROUPS 1
3052
    BUFFER_POOL DEFAULT
3053
  )
3054
;
3055
 
3056
CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC)  TABLESPACE "USERS"
3057
  LOGGING 
3058
  PCTFREE 10
3059
  INITRANS 2
3060
  MAXTRANS 255
3061
  STORAGE
3062
  (
3063
    INITIAL 128K
3064
    MINEXTENTS 1
3065
    MAXEXTENTS 2147483645
3066
    FREELISTS 1
3067
    FREELIST GROUPS 1
3068
    BUFFER_POOL DEFAULT
3069
  )
3070
;
3071
 
3072
CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
3073
  LOGGING 
3074
  PCTFREE 10
3075
  INITRANS 2
3076
  MAXTRANS 255
3077
  STORAGE
3078
  (
3079
    INITIAL 128K
3080
    MINEXTENTS 1
3081
    MAXEXTENTS 2147483645
3082
    FREELISTS 1
3083
    FREELIST GROUPS 1
3084
    BUFFER_POOL DEFAULT
3085
  )
3086
;
3087
 
3088
CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC)  TABLESPACE "USERS"
3089
  LOGGING 
3090
  PCTFREE 10
3091
  INITRANS 2
3092
  MAXTRANS 255
3093
  STORAGE
3094
  (
3095
    INITIAL 128K
3096
    MINEXTENTS 1
3097
    MAXEXTENTS 2147483645
3098
    FREELISTS 1
3099
    FREELIST GROUPS 1
3100
    BUFFER_POOL DEFAULT
3101
  )
3102
;
3103
 
3104
CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3105
  LOGGING 
3106
  PCTFREE 10
3107
  INITRANS 2
3108
  MAXTRANS 255
3109
  STORAGE
3110
  (
3111
    INITIAL 128K
3112
    MINEXTENTS 1
3113
    MAXEXTENTS 2147483645
3114
    FREELISTS 1
3115
    FREELIST GROUPS 1
3116
    BUFFER_POOL DEFAULT
3117
  )
3118
;
3119
 
3120
CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3121
  LOGGING 
3122
  PCTFREE 10
3123
  INITRANS 2
3124
  MAXTRANS 255
3125
  STORAGE
3126
  (
3127
    INITIAL 128K
3128
    MINEXTENTS 1
3129
    MAXEXTENTS 2147483645
3130
    FREELISTS 1
3131
    FREELIST GROUPS 1
3132
    BUFFER_POOL DEFAULT
3133
  )
3134
;
3135
 
3136
CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC)  TABLESPACE "USERS"
3137
  LOGGING 
3138
  PCTFREE 10
3139
  INITRANS 2
3140
  MAXTRANS 255
3141
  STORAGE
3142
  (
3143
    INITIAL 64K
3144
    MINEXTENTS 1
3145
    MAXEXTENTS 2147483645
3146
    FREELISTS 1
3147
    FREELIST GROUPS 1
3148
    BUFFER_POOL DEFAULT
3149
  )
3150
;
3151
 
3152
CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC)  TABLESPACE "USERS"
3153
  LOGGING 
3154
  PCTFREE 10
3155
  INITRANS 2
3156
  MAXTRANS 255
3157
  STORAGE
3158
  (
3159
    INITIAL 128K
3160
    MINEXTENTS 1
3161
    MAXEXTENTS 2147483645
3162
    FREELISTS 1
3163
    FREELIST GROUPS 1
3164
    BUFFER_POOL DEFAULT
3165
  )
3166
;
3167
 
3168
CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC)  TABLESPACE "USERS"
3169
  LOGGING 
3170
  PCTFREE 10
3171
  INITRANS 2
3172
  MAXTRANS 255
3173
  STORAGE
3174
  (
3175
    INITIAL 128K
3176
    MINEXTENTS 1
3177
    MAXEXTENTS 2147483645
3178
    FREELISTS 1
3179
    FREELIST GROUPS 1
3180
    BUFFER_POOL DEFAULT
3181
  )
3182
;
3183
 
3184
CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3185
  LOGGING 
3186
  PCTFREE 10
3187
  INITRANS 2
3188
  MAXTRANS 255
3189
  STORAGE
3190
  (
3191
    INITIAL 128K
3192
    MINEXTENTS 1
3193
    MAXEXTENTS 2147483645
3194
    FREELISTS 1
3195
    FREELIST GROUPS 1
3196
    BUFFER_POOL DEFAULT
3197
  )
3198
;
3199
 
3200
CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC)  TABLESPACE "USERS"
3201
  LOGGING 
3202
  PCTFREE 10
3203
  INITRANS 2
3204
  MAXTRANS 255
3205
  STORAGE
3206
  (
3207
    INITIAL 128K
3208
    MINEXTENTS 1
3209
    MAXEXTENTS 2147483645
3210
    FREELISTS 1
3211
    FREELIST GROUPS 1
3212
    BUFFER_POOL DEFAULT
3213
  )
3214
;
3215
 
3216
CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3217
  LOGGING 
3218
  PCTFREE 10
3219
  INITRANS 2
3220
  MAXTRANS 255
3221
  STORAGE
3222
  (
3223
    INITIAL 64K
3224
    MINEXTENTS 1
3225
    MAXEXTENTS 2147483645
3226
    FREELISTS 1
3227
    FREELIST GROUPS 1
3228
    BUFFER_POOL DEFAULT
3229
  )
3230
;
3231
 
3232
CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3233
  LOGGING 
3234
  PCTFREE 10
3235
  INITRANS 2
3236
  MAXTRANS 255
3237
  STORAGE
3238
  (
3239
    INITIAL 64K
3240
    MINEXTENTS 1
3241
    MAXEXTENTS 2147483645
3242
    FREELISTS 1
3243
    FREELIST GROUPS 1
3244
    BUFFER_POOL DEFAULT
3245
  )
3246
;
3247
 
3248
CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC)  TABLESPACE "USERS"
3249
  LOGGING 
3250
  PCTFREE 10
3251
  INITRANS 2
3252
  MAXTRANS 255
3253
  STORAGE
3254
  (
3255
    INITIAL 128K
3256
    MINEXTENTS 1
3257
    MAXEXTENTS 2147483645
3258
    FREELISTS 1
3259
    FREELIST GROUPS 1
3260
    BUFFER_POOL DEFAULT
3261
  )
3262
;
3263
 
3264
CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC)  TABLESPACE "USERS"
3265
  LOGGING 
3266
  PCTFREE 10
3267
  INITRANS 2
3268
  MAXTRANS 255
3269
  STORAGE
3270
  (
3271
    INITIAL 64K
3272
    MINEXTENTS 1
3273
    MAXEXTENTS 2147483645
3274
    FREELISTS 1
3275
    FREELIST GROUPS 1
3276
    BUFFER_POOL DEFAULT
3277
  )
3278
;
3279
 
3280
CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3281
  LOGGING 
3282
  PCTFREE 10
3283
  INITRANS 2
3284
  MAXTRANS 255
3285
  STORAGE
3286
  (
3287
    INITIAL 64K
3288
    MINEXTENTS 1
3289
    MAXEXTENTS 2147483645
3290
    FREELISTS 1
3291
    FREELIST GROUPS 1
3292
    BUFFER_POOL DEFAULT
3293
  )
3294
;
3295
 
3296
CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3297
  LOGGING 
3298
  PCTFREE 10
3299
  INITRANS 2
3300
  MAXTRANS 255
3301
  STORAGE
3302
  (
3303
    INITIAL 64K
3304
    MINEXTENTS 1
3305
    MAXEXTENTS 2147483645
3306
    FREELISTS 1
3307
    FREELIST GROUPS 1
3308
    BUFFER_POOL DEFAULT
3309
  )
3310
;
3311
 
3312
CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC)  TABLESPACE "USERS"
3313
  LOGGING 
3314
  PCTFREE 10
3315
  INITRANS 2
3316
  MAXTRANS 255
3317
  STORAGE
3318
  (
3319
    INITIAL 64K
3320
    MINEXTENTS 1
3321
    MAXEXTENTS 2147483645
3322
    FREELISTS 1
3323
    FREELIST GROUPS 1
3324
    BUFFER_POOL DEFAULT
3325
  )
3326
;
3327
 
3328
CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC)  TABLESPACE "SYSTEM"
3329
  LOGGING 
3330
  PCTFREE 10
3331
  INITRANS 2
3332
  MAXTRANS 255
3333
  STORAGE
3334
  (
3335
    INITIAL 64K
3336
    NEXT 64K
3337
    MINEXTENTS 1
3338
    MAXEXTENTS 2147483645
3339
    PCTINCREASE 0
3340
    FREELISTS 1
3341
    FREELIST GROUPS 1
3342
    BUFFER_POOL DEFAULT
3343
  )
3344
;
3345
 
3346
CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC)  TABLESPACE "SYSTEM"
3347
  LOGGING 
3348
  PCTFREE 10
3349
  INITRANS 2
3350
  MAXTRANS 255
3351
  STORAGE
3352
  (
3353
    INITIAL 64K
3354
    NEXT 64K
3355
    MINEXTENTS 1
3356
    MAXEXTENTS 2147483645
3357
    PCTINCREASE 0
3358
    FREELISTS 1
3359
    FREELIST GROUPS 1
3360
    BUFFER_POOL DEFAULT
3361
  )
3362
;
3363
 
3364
CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC)  TABLESPACE "USERS"
3365
  LOGGING 
3366
  PCTFREE 10
3367
  INITRANS 2
3368
  MAXTRANS 255
3369
  STORAGE
3370
  (
3371
    INITIAL 64K
3372
    MINEXTENTS 1
3373
    MAXEXTENTS 2147483645
3374
    FREELISTS 1
3375
    FREELIST GROUPS 1
3376
    BUFFER_POOL DEFAULT
3377
  )
3378
;
3379
 
3380
CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC)  TABLESPACE "USERS"
3381
  LOGGING 
3382
  PCTFREE 10
3383
  INITRANS 2
3384
  MAXTRANS 255
3385
  STORAGE
3386
  (
3387
    INITIAL 64K
3388
    MINEXTENTS 1
3389
    MAXEXTENTS 2147483645
3390
    FREELISTS 1
3391
    FREELIST GROUPS 1
3392
    BUFFER_POOL DEFAULT
3393
  )
3394
;
3395
 
3396
CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC)  TABLESPACE "USERS"
3397
  LOGGING 
3398
  PCTFREE 10
3399
  INITRANS 2
3400
  MAXTRANS 255
3401
  STORAGE
3402
  (
3403
    INITIAL 64K
3404
    MINEXTENTS 1
3405
    MAXEXTENTS 2147483645
3406
    FREELISTS 1
3407
    FREELIST GROUPS 1
3408
    BUFFER_POOL DEFAULT
3409
  )
3410
;
3411
 
3412
CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3413
  LOGGING 
3414
  PCTFREE 10
3415
  INITRANS 2
3416
  MAXTRANS 255
3417
  STORAGE
3418
  (
3419
    INITIAL 128K
3420
    MINEXTENTS 1
3421
    MAXEXTENTS 2147483645
3422
    FREELISTS 1
3423
    FREELIST GROUPS 1
3424
    BUFFER_POOL DEFAULT
3425
  )
3426
;
3427
 
3428
CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3429
  LOGGING 
3430
  PCTFREE 10
3431
  INITRANS 2
3432
  MAXTRANS 255
3433
  STORAGE
3434
  (
3435
    INITIAL 128K
3436
    MINEXTENTS 1
3437
    MAXEXTENTS 2147483645
3438
    FREELISTS 1
3439
    FREELIST GROUPS 1
3440
    BUFFER_POOL DEFAULT
3441
  )
3442
;
3443
 
3444
CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC)  TABLESPACE "USERS"
3445
  LOGGING 
3446
  PCTFREE 10
3447
  INITRANS 2
3448
  MAXTRANS 255
3449
  STORAGE
3450
  (
3451
    INITIAL 128K
3452
    MINEXTENTS 1
3453
    MAXEXTENTS 2147483645
3454
    FREELISTS 1
3455
    FREELIST GROUPS 1
3456
    BUFFER_POOL DEFAULT
3457
  )
3458
;
3459
 
3460
CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC)  TABLESPACE "SYSTEM"
3461
  LOGGING 
3462
  PCTFREE 10
3463
  INITRANS 2
3464
  MAXTRANS 255
3465
  STORAGE
3466
  (
3467
    INITIAL 64K
3468
    NEXT 64K
3469
    MINEXTENTS 1
3470
    MAXEXTENTS 2147483645
3471
    PCTINCREASE 0
3472
    FREELISTS 1
3473
    FREELIST GROUPS 1
3474
    BUFFER_POOL DEFAULT
3475
  )
3476
;
3477
 
3478
CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC)  TABLESPACE "USERS"
3479
  LOGGING 
3480
  PCTFREE 10
3481
  INITRANS 2
3482
  MAXTRANS 255
3483
  STORAGE
3484
  (
3485
    INITIAL 128K
3486
    MINEXTENTS 1
3487
    MAXEXTENTS 2147483645
3488
    FREELISTS 1
3489
    FREELIST GROUPS 1
3490
    BUFFER_POOL DEFAULT
3491
  )
3492
;
3493
 
3494
CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC)  TABLESPACE "USERS"
3495
  LOGGING 
3496
  PCTFREE 10
3497
  INITRANS 2
3498
  MAXTRANS 255
3499
  STORAGE
3500
  (
3501
    INITIAL 128K
3502
    MINEXTENTS 1
3503
    MAXEXTENTS 2147483645
3504
    FREELISTS 1
3505
    FREELIST GROUPS 1
3506
    BUFFER_POOL DEFAULT
3507
  )
3508
;
3509
 
3510
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "SYSTEM"
3511
  LOGGING 
3512
  PCTFREE 10
3513
  INITRANS 2
3514
  MAXTRANS 255
3515
  STORAGE
3516
  (
3517
    INITIAL 64K
3518
    NEXT 64K
3519
    MINEXTENTS 1
3520
    MAXEXTENTS 2147483645
3521
    PCTINCREASE 0
3522
    FREELISTS 1
3523
    FREELIST GROUPS 1
3524
    BUFFER_POOL DEFAULT
3525
  )
3526
;
3527
 
3528
CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID ASC)  TABLESPACE "USERS"
3529
  LOGGING 
3530
  PCTFREE 10
3531
  INITRANS 2
3532
  MAXTRANS 255
3533
  STORAGE
3534
  (
3535
    INITIAL 128K
3536
    MINEXTENTS 1
3537
    MAXEXTENTS 2147483645
3538
    FREELISTS 1
3539
    FREELIST GROUPS 1
3540
    BUFFER_POOL DEFAULT
3541
  )
3542
;
3543
 
3544
CREATE UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC)  TABLESPACE "USERS"
3545
  LOGGING 
3546
  PCTFREE 10
3547
  INITRANS 2
3548
  MAXTRANS 255
3549
  STORAGE
3550
  (
3551
    INITIAL 128K
3552
    MINEXTENTS 1
3553
    MAXEXTENTS 2147483645
3554
    FREELISTS 1
3555
    FREELIST GROUPS 1
3556
    BUFFER_POOL DEFAULT
3557
  )
3558
;
3559
 
3560
CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
3561
  LOGGING 
3562
  PCTFREE 10
3563
  INITRANS 2
3564
  MAXTRANS 255
3565
  STORAGE
3566
  (
3567
    INITIAL 128K
3568
    MINEXTENTS 1
3569
    MAXEXTENTS 2147483645
3570
    FREELISTS 1
3571
    FREELIST GROUPS 1
3572
    BUFFER_POOL DEFAULT
3573
  )
3574
;
3575
 
3576
CREATE INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_ID ASC)  TABLESPACE "USERS"
3577
  NOLOGGING 
3578
  PCTFREE 10
3579
  INITRANS 2
3580
  MAXTRANS 255
3581
  STORAGE
3582
  (
3583
    INITIAL 128K
3584
    MINEXTENTS 1
3585
    MAXEXTENTS 2147483645
3586
    FREELISTS 1
3587
    FREELIST GROUPS 1
3588
    BUFFER_POOL DEFAULT
3589
  )
3590
;
3591
 
3592
CREATE INDEX INX_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC)  TABLESPACE "USERS"
3593
  NOLOGGING 
3594
  PCTFREE 10
3595
  INITRANS 2
3596
  MAXTRANS 255
3597
  STORAGE
3598
  (
3599
    INITIAL 128K
3600
    MINEXTENTS 1
3601
    MAXEXTENTS 2147483645
3602
    FREELISTS 1
3603
    FREELIST GROUPS 1
3604
    BUFFER_POOL DEFAULT
3605
  )
3606
;
3607
 
3608
CREATE UNIQUE INDEX UNQ_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3609
  NOLOGGING 
3610
  PCTFREE 10
3611
  INITRANS 2
3612
  MAXTRANS 255
3613
  STORAGE
3614
  (
3615
    INITIAL 128K
3616
    MINEXTENTS 1
3617
    MAXEXTENTS 2147483645
3618
    FREELISTS 1
3619
    FREELIST GROUPS 1
3620
    BUFFER_POOL DEFAULT
3621
  )
3622
;
3623
 
3624
CREATE INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC)  TABLESPACE "USERS"
3625
  LOGGING 
3626
  PCTFREE 10
3627
  INITRANS 2
3628
  MAXTRANS 255
3629
  STORAGE
3630
  (
3631
    INITIAL 128K
3632
    MINEXTENTS 1
3633
    MAXEXTENTS 2147483645
3634
    FREELISTS 1
3635
    FREELIST GROUPS 1
3636
    BUFFER_POOL DEFAULT
3637
  )
3638
;
3639
 
3640
CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC)  TABLESPACE "USERS"
3641
  NOLOGGING 
3642
  PCTFREE 10
3643
  INITRANS 2
3644
  MAXTRANS 255
3645
  STORAGE
3646
  (
3647
    INITIAL 128K
3648
    MINEXTENTS 1
3649
    MAXEXTENTS 2147483645
3650
    FREELISTS 1
3651
    FREELIST GROUPS 1
3652
    BUFFER_POOL DEFAULT
3653
  )
3654
;
3655
 
3656
CREATE UNIQUE INDEX UNQ_PLATFORM ON PLATFORMS (NAME ASC)  TABLESPACE "USERS"
3657
  LOGGING 
3658
  PCTFREE 10
3659
  INITRANS 2
3660
  MAXTRANS 255
3661
  STORAGE
3662
  (
3663
    INITIAL 64K
3664
    MINEXTENTS 1
3665
    MAXEXTENTS 2147483645
3666
    FREELISTS 1
3667
    FREELIST GROUPS 1
3668
    BUFFER_POOL DEFAULT
3669
  )
3670
;
3671
 
3672
CREATE UNIQUE INDEX UNQ_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC)  TABLESPACE "SYSTEM"
3673
  LOGGING 
3674
  PCTFREE 10
3675
  INITRANS 2
3676
  MAXTRANS 255
3677
  STORAGE
3678
  (
3679
    INITIAL 64K
3680
    NEXT 64K
3681
    MINEXTENTS 1
3682
    MAXEXTENTS 2147483645
3683
    PCTINCREASE 0
3684
    FREELISTS 1
3685
    FREELIST GROUPS 1
3686
    BUFFER_POOL DEFAULT
3687
  )
3688
;
3689
 
3690
CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3691
  LOGGING 
3692
  PCTFREE 10
3693
  INITRANS 2
3694
  MAXTRANS 255
3695
  STORAGE
3696
  (
3697
    INITIAL 64K
3698
    MINEXTENTS 1
3699
    MAXEXTENTS 2147483645
3700
    FREELISTS 1
3701
    FREELIST GROUPS 1
3702
    BUFFER_POOL DEFAULT
3703
  )
3704
;
3705
 
3706
CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC)  TABLESPACE "USERS"
3707
  LOGGING 
3708
  PCTFREE 10
3709
  INITRANS 2
3710
  MAXTRANS 255
3711
  STORAGE
3712
  (
3713
    INITIAL 128K
3714
    MINEXTENTS 1
3715
    MAXEXTENTS 2147483645
3716
    FREELISTS 1
3717
    FREELIST GROUPS 1
3718
    BUFFER_POOL DEFAULT
3719
  )
3720
;
3721
 
3722
CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC)  TABLESPACE "USERS"
3723
  NOLOGGING 
3724
  PCTFREE 10
3725
  INITRANS 2
3726
  MAXTRANS 255
3727
  STORAGE
3728
  (
3729
    INITIAL 256K
3730
    MINEXTENTS 1
3731
    MAXEXTENTS 2147483645
3732
    FREELISTS 1
3733
    FREELIST GROUPS 1
3734
    BUFFER_POOL DEFAULT
3735
  )
3736
;
3737
 
3738
CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC)  TABLESPACE "USERS"
3739
  NOLOGGING 
3740
  PCTFREE 10
3741
  INITRANS 2
3742
  MAXTRANS 255
3743
  STORAGE
3744
  (
3745
    INITIAL 384K
3746
    MINEXTENTS 1
3747
    MAXEXTENTS 2147483645
3748
    FREELISTS 1
3749
    FREELIST GROUPS 1
3750
    BUFFER_POOL DEFAULT
3751
  )
3752
;
3753
 
3754
CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC)  TABLESPACE "USERS"
3755
  NOLOGGING 
3756
  PCTFREE 10
3757
  INITRANS 2
3758
  MAXTRANS 255
3759
  STORAGE
3760
  (
3761
    INITIAL 256K
3762
    MINEXTENTS 1
3763
    MAXEXTENTS 2147483645
3764
    FREELISTS 1
3765
    FREELIST GROUPS 1
3766
    BUFFER_POOL DEFAULT
3767
  )
3768
;
3769
 
3770
CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC)  TABLESPACE "USERS"
3771
  NOLOGGING 
3772
  PCTFREE 10
3773
  INITRANS 2
3774
  MAXTRANS 255
3775
  STORAGE
3776
  (
3777
    INITIAL 384K
3778
    MINEXTENTS 1
3779
    MAXEXTENTS 2147483645
3780
    FREELISTS 1
3781
    FREELIST GROUPS 1
3782
    BUFFER_POOL DEFAULT
3783
  )
3784
;
3785
 
3786
CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC)  TABLESPACE "SYSTEM"
3787
  LOGGING 
3788
  PCTFREE 10
3789
  INITRANS 2
3790
  MAXTRANS 255
3791
  STORAGE
3792
  (
3793
    INITIAL 384K
3794
    NEXT 64K
3795
    MINEXTENTS 1
3796
    MAXEXTENTS 2147483645
3797
    PCTINCREASE 0
3798
    FREELISTS 1
3799
    FREELIST GROUPS 1
3800
    BUFFER_POOL DEFAULT
3801
  )
3802
;
3803
 
3804
CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3805
  LOGGING 
3806
  PCTFREE 10
3807
  INITRANS 2
3808
  MAXTRANS 255
3809
  STORAGE
3810
  (
3811
    INITIAL 64K
3812
    MINEXTENTS 1
3813
    MAXEXTENTS 2147483645
3814
    FREELISTS 1
3815
    FREELIST GROUPS 1
3816
    BUFFER_POOL DEFAULT
3817
  )
3818
;
3819
 
3820
CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3821
  LOGGING 
3822
  PCTFREE 10
3823
  INITRANS 2
3824
  MAXTRANS 255
3825
  STORAGE
3826
  (
3827
    INITIAL 64K
3828
    MINEXTENTS 1
3829
    MAXEXTENTS 2147483645
3830
    FREELISTS 1
3831
    FREELIST GROUPS 1
3832
    BUFFER_POOL DEFAULT
3833
  )
3834
;
3835
 
3836
CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC)  TABLESPACE "SYSTEM"
3837
  LOGGING 
3838
  PCTFREE 10
3839
  INITRANS 2
3840
  MAXTRANS 255
3841
  STORAGE
3842
  (
3843
    INITIAL 64K
3844
    NEXT 64K
3845
    MINEXTENTS 1
3846
    MAXEXTENTS 2147483645
3847
    PCTINCREASE 0
3848
    FREELISTS 1
3849
    FREELIST GROUPS 1
3850
    BUFFER_POOL DEFAULT
3851
  )
3852
;
3853
 
3854
CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC)  TABLESPACE "SYSTEM"
3855
  LOGGING 
3856
  PCTFREE 10
3857
  INITRANS 2
3858
  MAXTRANS 255
3859
  STORAGE
3860
  (
3861
    INITIAL 64K
3862
    NEXT 64K
3863
    MINEXTENTS 1
3864
    MAXEXTENTS 2147483645
3865
    PCTINCREASE 0
3866
    FREELISTS 1
3867
    FREELIST GROUPS 1
3868
    BUFFER_POOL DEFAULT
3869
  )
3870
;
3871
 
3872
CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC)  TABLESPACE "SYSTEM"
3873
  LOGGING 
3874
  PCTFREE 10
3875
  INITRANS 2
3876
  MAXTRANS 255
3877
  STORAGE
3878
  (
3879
    INITIAL 64K
3880
    NEXT 64K
3881
    MINEXTENTS 1
3882
    MAXEXTENTS 2147483645
3883
    PCTINCREASE 0
3884
    FREELISTS 1
3885
    FREELIST GROUPS 1
3886
    BUFFER_POOL DEFAULT
3887
  )
3888
;
3889
 
3890
CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC)  TABLESPACE "USERS"
3891
  LOGGING 
3892
  PCTFREE 10
3893
  INITRANS 2
3894
  MAXTRANS 255
3895
  STORAGE
3896
  (
3897
    INITIAL 128K
3898
    MINEXTENTS 1
3899
    MAXEXTENTS 2147483645
3900
    FREELISTS 1
3901
    FREELIST GROUPS 1
3902
    BUFFER_POOL DEFAULT
3903
  )
3904
;
3905
 
3906
CREATE INDEX INX_PACKAGES_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID ASC)  TABLESPACE "USERS"
3907
  NOLOGGING 
3908
  PCTFREE 10
3909
  INITRANS 2
3910
  MAXTRANS 255
3911
  STORAGE
3912
  (
3913
    INITIAL 128K
3914
    MINEXTENTS 1
3915
    MAXEXTENTS 2147483645
3916
    FREELISTS 1
3917
    FREELIST GROUPS 1
3918
    BUFFER_POOL DEFAULT
3919
  )
3920
;
3921
 
3922
CREATE INDEX INX_PACKAGES_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION ASC)  TABLESPACE "USERS"
3923
  NOLOGGING 
3924
  PCTFREE 10
3925
  INITRANS 2
3926
  MAXTRANS 255
3927
  STORAGE
3928
  (
3929
    INITIAL 128K
3930
    MINEXTENTS 1
3931
    MAXEXTENTS 2147483645
3932
    FREELISTS 1
3933
    FREELIST GROUPS 1
3934
    BUFFER_POOL DEFAULT
3935
  )
3936
;
3937
 
3938
CREATE INDEX INX_PACKAGES_V_EXT ON PACKAGE_VERSIONS (V_EXT ASC)  TABLESPACE "USERS"
3939
  NOLOGGING 
3940
  PCTFREE 10
3941
  INITRANS 2
3942
  MAXTRANS 255
3943
  STORAGE
3944
  (
3945
    INITIAL 128K
3946
    MINEXTENTS 1
3947
    MAXEXTENTS 2147483645
3948
    FREELISTS 1
3949
    FREELIST GROUPS 1
3950
    BUFFER_POOL DEFAULT
3951
  )
3952
;
3953
 
3954
CREATE INDEX INX_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC)  TABLESPACE "USERS"
3955
  NOLOGGING 
3956
  PCTFREE 10
3957
  INITRANS 2
3958
  MAXTRANS 255
3959
  STORAGE
3960
  (
3961
    INITIAL 128K
3962
    MINEXTENTS 1
3963
    MAXEXTENTS 2147483645
3964
    FREELISTS 1
3965
    FREELIST GROUPS 1
3966
    BUFFER_POOL DEFAULT
3967
  )
3968
;
3969
 
3970
CREATE INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC)  TABLESPACE "USERS"
3971
  NOLOGGING 
3972
  PCTFREE 10
3973
  INITRANS 2
3974
  MAXTRANS 255
3975
  STORAGE
3976
  (
3977
    INITIAL 128K
3978
    MINEXTENTS 1
3979
    MAXEXTENTS 2147483645
3980
    FREELISTS 1
3981
    FREELIST GROUPS 1
3982
    BUFFER_POOL DEFAULT
3983
  )
3984
;
3985
 
3986
CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC)  TABLESPACE "USERS"
3987
  LOGGING 
3988
  PCTFREE 10
3989
  INITRANS 2
3990
  MAXTRANS 255
3991
  STORAGE
3992
  (
3993
    INITIAL 128K
3994
    MINEXTENTS 1
3995
    MAXEXTENTS 2147483645
3996
    FREELISTS 1
3997
    FREELIST GROUPS 1
3998
    BUFFER_POOL DEFAULT
3999
  )
4000
;
4001
 
4002
CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC)  TABLESPACE "SYSTEM"
4003
  LOGGING 
4004
  PCTFREE 10
4005
  INITRANS 2
4006
  MAXTRANS 255
4007
  STORAGE
4008
  (
4009
    INITIAL 128K
4010
    NEXT 64K
4011
    MINEXTENTS 1
4012
    MAXEXTENTS 2147483645
4013
    PCTINCREASE 0
4014
    FREELISTS 1
4015
    FREELIST GROUPS 1
4016
    BUFFER_POOL DEFAULT
4017
  )
4018
;
4019
 
4020
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
4021
  LOGGING 
4022
  PCTFREE 10
4023
  INITRANS 2
4024
  MAXTRANS 255
4025
  STORAGE
4026
  (
4027
    INITIAL 64K
4028
    MINEXTENTS 1
4029
    MAXEXTENTS 2147483645
4030
    FREELISTS 1
4031
    FREELIST GROUPS 1
4032
    BUFFER_POOL DEFAULT
4033
  )
4034
;
4035
 
4036
CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC)  TABLESPACE "USERS"
4037
  LOGGING 
4038
  PCTFREE 10
4039
  INITRANS 2
4040
  MAXTRANS 255
4041
  STORAGE
4042
  (
4043
    INITIAL 128K
4044
    MINEXTENTS 1
4045
    MAXEXTENTS 2147483645
4046
    FREELISTS 1
4047
    FREELIST GROUPS 1
4048
    BUFFER_POOL DEFAULT
4049
  )
4050
;
4051
 
4052
CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4053
 
4054
CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4055
 
4056
CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4057
 
4058
CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4059
 
4060
CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4061
 
4062
CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;
4063
 
4064
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4065
 
4066
CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4067
 
4068
CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;
4069
 
4070
CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4071
 
4072
CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4073
 
4074
CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4075
 
4076
CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;
4077
 
4078
CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4079
 
4080
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4081
 
4082
CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4083
 
4084
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4085
 
4086
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
4087
 
4088
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
4089
 
4090
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
4091
 
4092
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
4093
 
4094
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
4095
 
4096
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
4097
 
4098
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
4099
 
4100
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
4101
 
4102
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
4103
 
4104
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
4105
 
4106
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
4107
 
4108
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
4109
 
4110
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
4111
 
4112
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
4113
 
4114
CREATE OR REPLACE PROCEDURE                 update_deprecation_state(nnrtag_id IN NUMBER) AS
4115
 
4116
recno NUMBER;
4117
 
4118
CURSOR deprecate_cur IS
4119
 
4120
SELECT rc.pv_id
4121
FROM release_content rc
4122
WHERE rtag_id = nnrtag_id
4123
 AND deprecated_state IN(7);
4124
 
4125
deprecate_rec deprecate_cur % rowtype;
4126
 
4127
BEGIN
4128
 
4129
  OPEN deprecate_cur;
4130
 
4131
  FETCH deprecate_cur
4132
  INTO deprecate_rec;
4133
 
4134
  WHILE deprecate_cur % FOUND
4135
  LOOP
4136
 
4137
    SELECT COUNT(*)
4138
    INTO recno
4139
    FROM package_dependencies pd,
4140
      release_content rc
4141
    WHERE pd.pv_id = deprecate_rec.pv_id
4142
     AND rc.pv_id = pd.dpv_id
4143
     AND rc.rtag_id = nnrtag_id
4144
     AND rc.deprecated_state IN(6,   7);
4145
 
4146
    IF recno = 0 THEN
4147
 
4148
      UPDATE release_content
4149
      SET pkg_id = NULL, deprecated_state = NULL
4150
      WHERE pv_id = deprecate_rec.pv_id
4151
       AND rtag_id = nnrtag_id;
4152
 
4153
    END IF;
4154
 
4155
    FETCH deprecate_cur
4156
    INTO deprecate_rec;
4157
  END LOOP;
4158
 
4159
END;
4160
/
4161
 
4162
CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
4163
 
4164
/******************************************************************************
4165
   NAME:       ADD_VIEW_MEMBERS
4166
   PURPOSE:    
4167
 
4168
   REVISIONS:
4169
   Ver        Date        Author           Description
4170
   ---------  ----------  ---------------  ------------------------------------
4171
   1.0        11/04/2006          1. Created this procedure.
4172
 
4173
   NOTES:
4174
 
4175
   Automatically available Auto Replace Keywords:
4176
      Object Name:     ADD_VIEW_MEMBERS
4177
      Sysdate:         11/04/2006
4178
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
4179
      Username:         (set in TOAD Options, Procedure Editor)
4180
      Table Name:       (set in the "New PL/SQL Object" dialog)
4181
 
4182
******************************************************************************/
4183
CURSOR user_cur IS
4184
	SELECT u.USER_ID
4185
	  FROM USERS u
4186
	 WHERE u.USER_ID IN (
4187
	 	   			   	SELECT * 
4188
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
4189
						);
4190
user_rec user_cur%ROWTYPE;
4191
 
4192
 
4193
BEGIN
4194
 
4195
	 OPEN user_cur;
4196
	 FETCH user_cur INTO user_rec;
4197
 
4198
	 WHILE user_cur%FOUND
4199
	 LOOP
4200
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
4201
	 	 VALUES ( nGroupId, user_rec.USER_ID);
4202
 
4203
	 	 FETCH user_cur INTO user_rec;	 
4204
	 END LOOP;	 
4205
 
4206
 
4207
 
4208
END ADD_VIEW_MEMBERS;
4209
/
4210
 
4211
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4212
	   	  		  								  nPkgIdList IN VARCHAR2,
4213
												  nUserId IN NUMBER
4214
	   	  		  								  ) IS
4215
 
4216
/******************************************************************************
4217
   NAME:       ADD_PACKAGE_INTEREST
4218
   PURPOSE:    
4219
 
4220
   REVISIONS:
4221
   Ver        Date        Author           Description
4222
   ---------  ----------  ---------------  ------------------------------------
4223
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4224
 
4225
   NOTES:
4226
 
4227
   Automatically available Auto Replace Keywords:
4228
      Object Name:     ADD_PACKAGE_INTEREST
4229
      Sysdate:         12/05/2006
4230
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4231
      Username:         (set in TOAD Options, Procedure Editor)
4232
      Table Name:       (set in the "New PL/SQL Object" dialog)
4233
 
4234
******************************************************************************/
4235
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4236
   nPkgId NUMBER;
4237
BEGIN
4238
 
4239
	 npkgidcollector := in_list_number2 (nPkgIdList);
4240
 
4241
	FOR i IN 1..npkgidcollector.COUNT
4242
	LOOP
4243
		nPkgId := npkgidcollector(i);
4244
 
4245
	 --- Insert into PACKAGE_INTEREST TABLE
4246
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4247
	 VALUES(nProjId, nPkgId, nUserId);
4248
	END LOOP;	 
4249
 
4250
 
4251
END ADD_PACKAGE_INTEREST_TEST;
4252
/
4253
 
4254
CREATE OR REPLACE PROCEDURE level_n_conflicts (
4255
   nnrtag_id       IN       NUMBER,
4256
   nnsession_num   IN       NUMBER,
4257
   nnrowcnt        OUT      NUMBER,
4258
   nniteration     IN       NUMBER
4259
)
4260
IS
4261
/* ---------------------------------------------------------------------------
4262
    Version: 3.0.1
4263
   --------------------------------------------------------------------------- */
4264
   previteration   NUMBER := nniteration - 1;
4265
BEGIN
4266
   /* ---------  LEVEL 1 CONFILCTS -----------
4267
   || Following states are used:
4268
   || 0 -> NOT FOUND
4269
   || 1 -> MAJOR
4270
   || 2 -> MINOR MINOR
4271
   */
4272
   INSERT INTO temp_env_states
4273
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4274
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4275
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4276
                 FROM package_dependencies dep,
4277
                      package_versions dpv,
4278
                      package_versions pv,
4279
                      release_content rel,
4280
                      temp_env_states tes
4281
                WHERE rel.pv_id = dep.pv_id
4282
                  AND rel.rtag_id = nnrtag_id
4283
                  AND dep.pv_id = pv.pv_id
4284
                  AND dep.dpv_id = dpv.pv_id
4285
                  AND dpv.pkg_id = tes.pkg_id
4286
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4287
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4288
                  AND tes.session_num = nnsession_num
4289
                  AND tes.level_num = previteration
4290
                  AND (dep.pv_id, dep.dpv_id) IN 
4291
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4292
                                                 || packages already stored in Temp Table.
4293
                                                 */
4294
                      (
4295
                         SELECT pd.pv_id, pd.dpv_id
4296
                           FROM package_dependencies pd, release_content rc
4297
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4298
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4299
                         MINUS
4300
                         SELECT igw.pv_id, igw.dpv_id
4301
                           FROM ignore_warnings igw
4302
                          WHERE igw.rtag_id = nnrtag_id);
4303
 
4304
   nnrowcnt := SQL%ROWCOUNT;
4305
END level_n_conflicts;
4306
/
4307
 
4308
CREATE OR REPLACE PROCEDURE Remove_Release_Content ( sPvIdList IN VARCHAR2,
4309
													 sNotPvIdList IN VARCHAR2,
4310
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
4311
/* ---------------------------------------------------------------------------
4312
    Version: 3.0
4313
   --------------------------------------------------------------------------- */
4314
 
4315
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4316
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4317
 
4318
BEGIN
4319
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
4320
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
4321
 
4322
    -- Delete From Release Content
4323
    DELETE
4324
      FROM RELEASE_CONTENT
4325
	 WHERE rtag_id = nRTagId
4326
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4327
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4328
 
4329
 
4330
 
4331
END Remove_Release_Content;
4332
/
4333
 
4334
CREATE OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
4335
 
4336
/* ---------------------------------------------------------------------------
4337
    Version: 3.0.0
4338
   --------------------------------------------------------------------------- */
4339
 
4340
	sPkgName VARCHAR2(4000);
4341
	sVext VARCHAR2(4000);
4342
 
4343
BEGIN
4344
 
4345
	-- Get package details
4346
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
4347
	  FROM PACKAGE_VERSIONS pv,
4348
	  	   PACKAGES pkg
4349
	 WHERE pv.PKG_ID = pkg.PKG_ID
4350
	   AND pv.PV_ID = nPvId;
4351
 
4352
 
4353
	-- Generate Label for automated build
4354
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
4355
 
4356
END GET_AUTOMATED_LABEL;
4357
/
4358
 
55 mhunt 4359
CREATE OR REPLACE PROCEDURE UnRipple_Package_Indirect (
4360
        nPvId IN NUMBER,
4361
        nRtagId IN NUMBER,
4362
        nUserId IN NUMBER,
4363
        nrootCausePvId IN NUMBER,
4364
        srootCause IN VARCHAR2,
4365
        srootFile IN VARCHAR2
4366
    ) IS
4367
    ReleaseLocation VARCHAR2(4000);
4368
BEGIN
4369
 
4370
    -- UnRipple Package
4371
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
4372
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
4373
 
4374
    /* LOG ACTION */
4375
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
4376
              FROM PROJECTS proj,
4377
                   RELEASE_TAGS rt
4378
             WHERE rt.RTAG_ID = nRtagId
4379
               AND rt.PROJ_ID = proj.PROJ_ID;
4380
 
4381
    /* LOG ACTION */
4382
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
4383
 
4384
END UnRipple_Package_Indirect;
4385
/
4386
 
51 mhunt 4387
CREATE OR REPLACE PACKAGE pk_package
4388
IS
4389
/*
4390
------------------------------
4391
||  Last Modified:  Jeremy Tweddle
4392
||  Modified Date:  24/08/2007
4393
||
4394
------------------------------
4395
*/
4396
   TYPE typecur IS REF CURSOR;
4397
 
4398
/*================================================================================================*/
4399
   PROCEDURE new_version (
4400
      nlastpvid                   IN       NUMBER,
4401
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4402
      cbuildtype                  IN       CHAR,
4403
      nsettopvid                  IN       NUMBER DEFAULT NULL,
4404
      nrtagid                     IN       NUMBER,
4405
      nuserid                     IN       NUMBER,
4406
      enumissues_state_imported   IN       NUMBER,
4407
      returnpvid                  OUT      NUMBER
4408
   );
4409
 
4410
   PROCEDURE change_state (
4411
      pvid       IN   NUMBER,
4412
      newstate   IN   package_versions.dlocked%TYPE,
4413
      userid     IN   NUMBER
4414
   );
4415
 
4416
   PROCEDURE new_patch (
4417
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
4418
      nparentpvid        IN       NUMBER,
4419
      spatchidlist       IN       VARCHAR2,
4420
      nuserid            IN       NUMBER,
4421
      returnpatchid      OUT      NUMBER
4422
   );
4423
 
4424
   PROCEDURE obsolete_patch (
4425
      patchid            IN   NUMBER,
4426
      isobsolete         IN   CHAR,
4427
      obsoletecomments   IN   VARCHAR2,
4428
      userid             IN   NUMBER
4429
   );
4430
 
4431
   PROCEDURE obsolete_patches (
4432
      spatchidlist       IN   VARCHAR2,
4433
      isobsolete         IN   CHAR,
4434
      obsoletecomments   IN   VARCHAR2,
4435
      userid             IN   NUMBER
4436
   );
4437
 
4438
   PROCEDURE destroy_package (
4439
      pvid               IN       NUMBER,
4440
      overridewarnings   IN       CHAR DEFAULT 'N',
4441
      problemstring      OUT      VARCHAR2
4442
   );
4443
 
4444
   PROCEDURE add_process (
4445
      nprocid         IN   processes.proc_id%TYPE,
4446
      shealthtag      IN   processes.proc_name%TYPE,
4447
      sprocdesc       IN   processes.proc_description%TYPE,
4448
      scmdinterface   IN   processes.run_as%TYPE,
4449
      spkgowner       IN   processes.pkg_owner%TYPE,
4450
      sisinterface    IN   processes.is_interface%TYPE,
4451
      npvid           IN   package_processes.pv_id%TYPE,
4452
      nuserid         IN   NUMBER
4453
   );
4454
 
4455
   PROCEDURE add_package_process (
4456
      nprocidlist   IN   VARCHAR2,
4457
      npvid         IN   package_processes.pv_id%TYPE,
4458
      nuserid       IN   NUMBER
4459
   );
4460
 
4461
 
4462
 
4463
   PROCEDURE remove_process (
4464
      nprocid   IN   package_processes.proc_id%TYPE,
4465
      npvid     IN   package_processes.pv_id%TYPE,
4466
      nuserid   IN   NUMBER
4467
   );
4468
 
4469
   PROCEDURE move_package (
4470
   	  npvid  			  IN package_versions.pv_id%TYPE,
4471
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4472
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4473
	  nuserid			  IN NUMBER		 
4474
   ); 
4475
 
4476
   PROCEDURE modify_product_state (
4477
   	  npvid IN package_versions.pv_id%TYPE,
4478
	  nrtagid IN release_tags.rtag_id%TYPE,
4479
	  nstateid IN product_states.state_id%TYPE,
4480
	  nuserid IN NUMBER
4481
   );
4482
 
4483
   PROCEDURE add_code_review_url (
4484
        npvid           IN    NUMBER,
4485
        nprojid         IN    NUMBER,
4486
        surl            IN    VARCHAR2,
4487
        sreason         IN    VARCHAR2,
4488
        ddateofreview   IN    DATE
4489
   );
4490
 
4491
   PROCEDURE update_code_review_url (
4492
        ncrid           IN    NUMBER,
4493
        nprojid         IN    NUMBER,
4494
        surl            IN    VARCHAR2,
4495
        sreason         IN    VARCHAR2
4496
   );
4497
 
4498
   PROCEDURE remove_code_review_url (
4499
        ncrid           IN    NUMBER
4500
   );
4501
/*================================================================================================*/
4502
END pk_package;
4503
/
4504
 
4505
CREATE OR REPLACE PROCEDURE Add_Runtime_Dependency ( NNpv_id IN NUMBER,
4506
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
4507
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4508
                                                     NNuser_id IN NUMBER
4509
                                                    ) IS
4510
/* ---------------------------------------------------------------------------
4511
    Version: 3.1
4512
   --------------------------------------------------------------------------- */
4513
 
4514
    retRTD_ID NUMBER;
4515
 
4516
	CURSOR rtd_cur IS
4517
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
4518
    rtd_rec rtd_cur%ROWTYPE;
4519
 
4520
BEGIN
4521
    --- Seed database with package_name and version if required ---
4522
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
4523
 
4524
	OPEN rtd_cur;
4525
    FETCH rtd_cur INTO rtd_rec;
4526
 
4527
    IF rtd_cur%NOTFOUND
4528
    THEN
4529
		/* Make sure it does not exists already as runtime dependency */
4530
 
4531
		--- Add new Runtime Dependency ---
4532
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
4533
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
4534
 
4535
    	/* LOG ACTION */
4536
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
4537
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
4538
 
4539
	END IF;
4540
 
4541
 
4542
END Add_Runtime_Dependency;
4543
/
4544
 
4545
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4546
	   	  		  								  nPkgIdList IN VARCHAR2,
4547
												  nUserId IN NUMBER
4548
	   	  		  								  ) IS
4549
 
4550
/******************************************************************************
4551
   NAME:       ADD_PACKAGE_INTEREST
4552
   PURPOSE:    
4553
 
4554
   REVISIONS:
4555
   Ver        Date        Author           Description
4556
   ---------  ----------  ---------------  ------------------------------------
4557
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4558
 
4559
   NOTES:
4560
 
4561
   Automatically available Auto Replace Keywords:
4562
      Object Name:     ADD_PACKAGE_INTEREST
4563
      Sysdate:         12/05/2006
4564
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4565
      Username:         (set in TOAD Options, Procedure Editor)
4566
      Table Name:       (set in the "New PL/SQL Object" dialog)
4567
 
4568
******************************************************************************/
4569
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4570
   nPkgId NUMBER;
4571
BEGIN
4572
 
4573
	 npkgidcollector := in_list_number2 (nPkgIdList);
4574
 
4575
	FOR i IN 1..npkgidcollector.COUNT
4576
	LOOP
4577
		nPkgId := npkgidcollector(i);
4578
 
4579
	 --- Insert into PACKAGE_INTEREST TABLE
4580
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4581
	 VALUES(nProjId, nPkgId, nUserId);
4582
	END LOOP;	 
4583
 
4584
 
4585
END ADD_PACKAGE_INTEREST;
4586
/
4587
 
4588
CREATE OR REPLACE FUNCTION CAN_EDIT_PKG_IN_PROJECT ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
4589
 
4590
/* ---------------------------------------------------------------------------
4591
    Version: 3.0.0
4592
   --------------------------------------------------------------------------- */
4593
 
4594
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
4595
	ProjId NUMBER;
4596
	RowCount NUMBER;
4597
	cReleaseMode CHAR(1);
4598
 
4599
BEGIN
4600
 
4601
	--RETURN 1;
4602
 
4603
 
4604
	/*--------------- Business Rules Here -------------------*/
4605
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
4606
		RETURN 0;
4607
	END IF;
4608
	/*-------------------------------------------------------*/
4609
 
4610
 
4611
 
4612
 
4613
 
4614
 
4615
	/*-- First Check. See if package is used through release reference --*/
4616
	SELECT COUNT(rc.PV_ID) INTO RowCount
4617
	  FROM (
4618
	  		SELECT rl.REF_RTAG_ID
4619
			  FROM RELEASE_LINKS rl
4620
			 WHERE rl.RTAG_ID = nRtagId
4621
	  		) rl,
4622
			RELEASE_CONTENT rc
4623
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
4624
	    AND rc.PV_ID = nPvId;			
4625
 
4626
 
4627
	-- Decide if package can be edited  
4628
	IF RowCount > 0 THEN
4629
		-- Package is referenced from other release, hence cannot be edited
4630
		RETURN 0;	
4631
 
4632
	ELSE
4633
 
4634
		-- Check is only done for releases in restrictive mode
4635
		SELECT rt.OFFICIAL INTO cReleaseMode
4636
		  FROM RELEASE_TAGS rt
4637
		 WHERE rt.RTAG_ID = nRtagId;
4638
 
4639
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
4640
			-- Do not do any firther checking,
4641
			-- Package is editable here
4642
			RETURN 1;
4643
		END IF;	
4644
 
4645
	END IF;
4646
 
4647
 
4648
 
4649
 
4650
	/*-- Further checking --*/
4651
	-- Get proj_id
4652
	SELECT rt.PROJ_ID  INTO  ProjId
4653
	  FROM RELEASE_TAGS rt
4654
	 WHERE rt.RTAG_ID = nRtagId;
4655
 
4656
 
4657
 
4658
	BEGIN
4659
 
4660
		-- Get v_ext
4661
		SELECT pv.V_EXT  INTO  Vext
4662
		  FROM PACKAGE_VERSIONS pv
4663
		 WHERE pv.PV_ID = nPvId;  
4664
 
4665
		EXCEPTION
4666
	    	WHEN NO_DATA_FOUND THEN
4667
	       		Vext := NULL;
4668
 
4669
	END;	 
4670
 
4671
 
4672
	--Temp Hack for Step Project
4673
	IF ProjId != 281 THEN
4674
		-- Find if package can be edited in this project
4675
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
4676
	 		FROM PROJECT_EXTENTIONS pe
4677
			WHERE pe.PROJ_ID != ProjId  
4678
	  		AND pe.EXT_NAME = VExt;
4679
	END IF;		
4680
 
4681
 
4682
	-- Decide if package can be edited  
4683
	IF RowCount > 0 THEN
4684
		-- Package extension is found in other projects, hece NOT EDITABLE
4685
		RETURN 0;
4686
	ELSE
4687
		RETURN 1;	
4688
	END IF;
4689
 
4690
 
4691
END CAN_EDIT_PKG_IN_PROJECT;
4692
/
4693
 
4694
CREATE OR REPLACE PACKAGE pk_archive
4695
IS
4696
/*
4697
------------------------------
4698
||  Author:  Rupesh Solanki
4699
||  Date:    26 October 2006
4700
||  Version:   1.0
4701
------------------------------
4702
*/
4703
 
4704
   /*================================================================================================*/
4705
   PROCEDURE populate_packages_table;
4706
 
4707
   PROCEDURE populate_archive_data_table (
4708
      nrtagid   IN   release_tags.rtag_id%TYPE
4709
   );
4710
 
4711
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
4712
 
4713
   PROCEDURE migrate_rtag_to_archive_schema (
4714
      nrtagid   IN   release_tags.rtag_id%TYPE
4715
   );
4716
 
4717
   PROCEDURE clean_up_archive_data_table (
4718
      nrtagid   IN   release_tags.rtag_id%TYPE
4719
   );
4720
 
4721
   PROCEDURE write_action_log (
4722
      nuserid   IN   NUMBER,
4723
      nrtagid   IN   release_tags.rtag_id%TYPE
4724
   );
4725
/*================================================================================================*/
4726
END pk_archive;
4727
/
4728
 
4729
CREATE OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS
4730
 
4731
/* ---------------------------------------------------------------------------
4732
    Version: 3.3
4733
   --------------------------------------------------------------------------- */
4734
    rowCnt NUMBER := 0;
4735
    iteration NUMBER := 2;          -- Iterations counter
4736
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
4737
                                    -- This will prevent infinite loops if cyrcular dependencies are found
4738
    sessionNum NUMBER;
4739
BEGIN
4740
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
4741
 
4742
 
4743
    -- Redo Patch Ignore warnings
4744
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
4745
 
4746
 
4747
    Level_One_Conflicts ( NNrtag_id, sessionNum );
4748
 
4749
    LOOP
4750
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
4751
        iteration := iteration + 1;
4752
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
4753
    END LOOP;
4754
 
4755
    Update_Package_States ( NNrtag_id, sessionNum );
4756
 
4757
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
4758
 
4759
    -- Flag Packages with New Patches Available
4760
    Check_New_Patches ( NNrtag_id );
4761
 
4762
	Clean_Do_Not_Ripple( NNrtag_id );
4763
 
4764
 
4765
	/* Circular Dependency Flag */
4766
    /*
4767
	IF iteration > maxIterations
4768
	THEN
4769
		UPDATE release_tags SET
4770
		   	   circular_dependency = 'Y'
4771
		 WHERE rtag_id = NNrtag_id;
4772
	ELSE
4773
		UPDATE release_tags SET
4774
		   	   circular_dependency = NULL
4775
		 WHERE rtag_id = NNrtag_id;
4776
	END IF;
4777
    */
4778
END Rebuild_Environment;
4779
/
4780
 
4781
CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS
4782
 
4783
/******************************************************************************
4784
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4785
   PURPOSE:    
4786
 
4787
   REVISIONS:
4788
   Ver        Date        Author           Description
4789
   ---------  ----------  ---------------  ------------------------------------
4790
   1.0        6/12/2006          1. Created this procedure.
4791
 
4792
   NOTES:
4793
 
4794
   Automatically available Auto Replace Keywords:
4795
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4796
      Sysdate:         6/12/2006
4797
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4798
      Username:         (set in TOAD Options, Procedure Editor)
4799
      Table Name:       (set in the "New PL/SQL Object" dialog)
4800
 
4801
******************************************************************************/
4802
 
4803
	CURSOR curInfo IS
4804
    SELECT PV_ID
4805
	FROM PACKAGE_BUILD_ENV
4806
	WHERE BE_ID IN (11, 12);
4807
    recInfo curInfo%ROWTYPE;
4808
 
4809
 
4810
BEGIN
4811
 
4812
	OPEN curInfo;
4813
    FETCH curInfo INTO recInfo;
4814
 
4815
	WHILE curInfo%FOUND
4816
	LOOP
4817
 
4818
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4819
		VALUES( recInfo.PV_ID, 2, 5);
4820
 
4821
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4822
 
4823
		FETCH curInfo INTO recInfo;
4824
 
4825
	END LOOP;
4826
 
4827
	CLOSE curInfo;
4828
 
4829
 
4830
 
4831
 
4832
END INSERT_INTO_PACKAGE_BUILD_INFO;
4833
/
4834
 
4835
CREATE OR REPLACE PROCEDURE check_new_patches (
4836
   nrtagid   IN   release_content.rtag_id%TYPE
4837
)
4838
IS
4839
/* ---------------------------------------------------------------------------
4840
    Version: 3.0
4841
   --------------------------------------------------------------------------- */
4842
BEGIN
4843
   /*--------------- Business Rules Here -------------------*/
4844
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
4845
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
4846
   END IF
4847
 
4848
   /*-------------------------------------------------------*/
4849
   UPDATE release_content rc
4850
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
4851
    WHERE rc.pv_id IN (
4852
             SELECT prod.pv_id
4853
               FROM (SELECT   pp.pv_id AS orig_parent_id,
4854
                              COUNT (*) AS num_of_patches
4855
                         FROM release_content rc, package_patches pp
4856
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4857
                     GROUP BY pp.pv_id) orig,
4858
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
4859
                              COUNT (*) AS num_of_patches
4860
                         FROM release_content rc,
4861
                              package_patches pp,
4862
                              package_dependencies dep,
4863
                              package_versions pv,
4864
                              package_patches prodpp
4865
                        WHERE rc.pv_id = pp.pv_id
4866
                          AND rc.rtag_id = nrtagid
4867
                          AND pp.patch_id = dep.dpv_id
4868
                          AND dep.pv_id = pv.pv_id
4869
                          AND pv.is_patch = 'Y'
4870
                          AND pv.dlocked = 'Y'
4871
                          AND prodpp.patch_id = dep.pv_id
4872
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
4873
                    release_content rc
4874
              WHERE orig.orig_parent_id = prod.pv_id
4875
                AND orig.num_of_patches != prod.num_of_patches
4876
                AND rc.rtag_id = nrtagid
4877
                AND rc.pv_id = prod.pv_id
4878
                AND rc.pkg_state = 0
4879
             UNION
4880
             SELECT   prodpp.pv_id
4881
                 FROM release_content rc,
4882
                      package_patches pp,
4883
                      package_dependencies dep,
4884
                      package_versions pv,
4885
                      package_patches prodpp
4886
                WHERE rc.pv_id = pp.pv_id
4887
                  AND rc.rtag_id = nrtagid
4888
                  AND pp.patch_id = dep.dpv_id
4889
                  AND dep.pv_id = pv.pv_id
4890
                  AND pv.is_patch = 'Y'
4891
                  AND pv.dlocked = 'Y'
4892
                  AND prodpp.patch_id = dep.pv_id
4893
             GROUP BY prodpp.pv_id, pp.pv_id
4894
             MINUS
4895
             SELECT   pp.pv_id
4896
                 FROM release_content rc, package_patches pp
4897
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4898
             GROUP BY pp.pv_id);
4899
END check_new_patches;
4900
/
4901
 
4902
CREATE OR REPLACE PROCEDURE Update_Package_Dependency ( NNpv_id IN NUMBER,
4903
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
4904
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4905
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
4906
                                                        NNuser_id IN NUMBER,
4907
                                                        NNdelete_old_dependency IN NUMBER
4908
                                                       ) IS
4909
/* ---------------------------------------------------------------------------
4910
    Version: 3.3
4911
   --------------------------------------------------------------------------- */
4912
 
4913
    retPV_ID NUMBER;
4914
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
4915
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4916
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4917
    NNpkg_id NUMBER;
4918
    NNdpkg_id NUMBER;
4919
 
4920
BEGIN
4921
    --- Seed database with package_name and version if required ---
4922
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
4923
 
4924
    -- get v_ext,pkg_id of current dependency
4925
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
4926
      FROM PACKAGE_VERSIONS
4927
     WHERE pv_id = retPV_ID;
4928
 
4929
    -- get pkg_id of parent package
4930
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
4931
      FROM PACKAGE_VERSIONS
4932
     WHERE pv_id = NNpv_id;
4933
 
4934
 
4935
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
4936
    	( (PvIsPatch IS NOT NULL) )THEN
4937
 
4938
	    IF NNdelete_old_dependency = 1 THEN
4939
	        /* Used for CUSTOM dependency add/edit */
4940
 
4941
	        --- Remove old dependency ---
4942
            IF (PvIsPatch IS NULL) THEN
4943
            	-- Do it for Packages
4944
		        DELETE FROM PACKAGE_DEPENDENCIES
4945
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4946
		            (
4947
		            SELECT dep.*
4948
		              FROM PACKAGE_DEPENDENCIES dep,
4949
		                   PACKAGE_VERSIONS dpv,
4950
		                   PACKAGE_VERSIONS pv
4951
		             WHERE dep.dpv_id = dpv.pv_id
4952
		               AND dep.pv_id = NNpv_id
4953
		               AND pv.pv_id = retPV_ID
4954
		               AND dpv.pkg_id = pv.pkg_id
4955
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
4956
		            );
4957
            ELSE
4958
            	-- Do it for Patches
4959
                DELETE FROM PACKAGE_DEPENDENCIES
4960
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4961
		            (
4962
		            SELECT dep.*
4963
		              FROM PACKAGE_DEPENDENCIES dep
4964
		             WHERE dep.dpv_id = retPV_ID
4965
		               AND dep.pv_id = NNpv_id
4966
		            );
4967
			END IF;
4968
 
4969
	    END IF;
4970
 
4971
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
4972
 
4973
	    --- Add new dependency ---
4974
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
4975
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
4976
 
4977
	END IF;
4978
 
4979
END Update_Package_Dependency;
4980
/
4981
 
4982
CREATE OR REPLACE PACKAGE PK_RMAPI_test IS
4983
/*
4984
------------------------------
4985
||  Last Modified:  S.Vukovic
4986
||  Modified Date:  19/May/2005
4987
||  Spec Version:   2.0
4988
------------------------------
4989
*/
4990
 
4991
	TYPE typeCur IS REF CURSOR;
4992
 
4993
    /*================================================================================================*/
4994
 
4995
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
4996
 
4997
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
4998
 
4999
 
5000
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
5001
							 PkgName IN VARCHAR2, 
5002
							 VExt IN VARCHAR2,
5003
							 NewPkgVersion IN VARCHAR2, 
5004
							 Label IN VARCHAR2,
5005
							 DependenciesImportList IN VARCHAR2,
5006
							 IsRippled IN NUMBER,
5007
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
5008
 
5009
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
5010
 
5011
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
5012
 
5013
	PROCEDURE CQ_TEST;
5014
 
5015
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
5016
	/*================================================================================================*/
5017
 
5018
END PK_RMAPI_test;
5019
/
5020
 
5021
CREATE OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2
5022
IS
5023
/* ---------------------------------------------------------------------------
5024
    Version: 1.0.0
5025
   --------------------------------------------------------------------------- */
5026
BEGIN
5027
    IF is_number(s_version) AND LENGTH(s_version) > 3
5028
    THEN
5029
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
5030
    ELSE
5031
        RETURN s_version;
5032
    END IF;
5033
END get_patch_version;
5034
/
5035
 
5036
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;
5037
/
5038
 
5039
CREATE OR REPLACE PACKAGE PK_APP_UTILS IS
5040
/*
5041
------------------------------
5042
||  Last Modified:  S.Vukovic
5043
||  Modified Date:  26/Apr/2005
5044
||  Spec Version:   1.0
5045
------------------------------
5046
*/
5047
 
5048
	TYPE typeCur IS REF CURSOR;
5049
 
5050
    /*================================================================================================*/
5051
 
5052
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
5053
 
5054
	/*================================================================================================*/
5055
 
5056
END PK_APP_UTILS;
5057
/
5058
 
5059
CREATE OR REPLACE PROCEDURE Log_Project_Action ( nProjId IN NUMBER,
5060
												 enumActionTypeName IN VARCHAR2,
5061
		                                         nUserId IN NUMBER,
5062
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
5063
												 nRtagId IN NUMBER  ) IS
5064
/* ---------------------------------------------------------------------------
5065
    Version: 3.0
5066
   --------------------------------------------------------------------------- */
5067
 
5068
    ActionTypeId NUMBER;
5069
 
5070
BEGIN
5071
 
5072
    -- Get Action Type FK
5073
    SELECT act.ACTTYPE_ID INTO ActionTypeId
5074
      FROM ACTION_TYPE act
5075
     WHERE act.NAME = enumActionTypeName;
5076
 
5077
 
5078
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
5079
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
5080
 
5081
 
5082
END Log_Project_Action;
5083
/
5084
 
5085
CREATE OR REPLACE FUNCTION IN_LIST_VARCHAR2 ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
5086
 
5087
/* ---------------------------------------------------------------------------
5088
    Version: 3.1
5089
   --------------------------------------------------------------------------- */
5090
 
5091
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
5092
	pos				   NUMBER;
5093
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
5094
	val				   VARCHAR2(4000);
5095
 
5096
BEGIN
5097
 
5098
	IF NOT sInList IS NULL
5099
	THEN
5100
		LOOP
5101
	        EXIT WHEN in_list IS NULL;
5102
	        pos := INSTR ( in_list, cSeparator );
5103
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
5104
 
5105
			IF (NOT val IS NULL) THEN
5106
		        cItemCollection.extend;
5107
		        cItemCollection(cItemCollection.count) := val;
5108
			END IF;
5109
 
5110
	        in_list := SUBSTR ( in_list, pos+1 );
5111
		END LOOP;
5112
	END IF;
5113
 
5114
	RETURN cItemCollection;
5115
END IN_LIST_VARCHAR2;
5116
/
5117
 
5118
CREATE OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5119
                                               retPKG_ID OUT NUMBER ) IS
5120
/* ---------------------------------------------------------------------------
5121
    Version: 3.0.0
5122
   --------------------------------------------------------------------------- */
5123
 
5124
    CURSOR packages_cur IS
5125
        SELECT pkg.pkg_id
5126
          FROM packages pkg
5127
         WHERE pkg.pkg_name = SSpkg_name;
5128
    packages_rec packages_cur%ROWTYPE;
5129
 
5130
 
5131
BEGIN
5132
 
5133
    /* ---------------------------------------------------- */
5134
    /* Find if package name exists                          */
5135
    /* ---------------------------------------------------- */
5136
 
5137
    OPEN packages_cur;
5138
    FETCH packages_cur INTO packages_rec;
5139
 
5140
    IF packages_cur%NOTFOUND
5141
    THEN
5142
        -- Create new pkg_name --
5143
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
5144
 
5145
        INSERT INTO packages ( pkg_id, pkg_name )
5146
        VALUES ( retPKG_ID, SSpkg_name );
5147
 
5148
    ELSE
5149
        retPKG_ID := packages_rec.pkg_id;
5150
 
5151
    END IF;
5152
 
5153
 
5154
    CLOSE packages_cur;
5155
 
5156
END New_Package_Name;
5157
/
5158
 
5159
CREATE OR REPLACE PROCEDURE UPDATE_PROCESSES
5160
IS
5161
 
5162
proc_id NUMBER;
5163
/******************************************************************************
5164
   NAME:       DELETE_DO_NOT_RIPPLE
5165
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
5166
               IS RELEASED
5167
 
5168
   REVISIONS:
5169
   Ver        Date        Author           Description
5170
   ---------  ----------  ---------------  ------------------------------------
5171
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
5172
 
5173
   NOTES:
5174
 
5175
   Automatically available Auto Replace Keywords:
5176
      Object Name:     DELETE_DO_NOT_RIPPLE
5177
      Sysdate:         21/04/2006
5178
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
5179
      Username:         (set in TOAD Options, Procedure Editor)
5180
      Table Name:       (set in the "New PL/SQL Object" dialog)
5181
 
5182
******************************************************************************/
5183
   CURSOR ripple_cur
5184
   IS
5185
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
5186
 
5187
   ripple_rec   ripple_cur%ROWTYPE;
5188
BEGIN
5189
   OPEN ripple_cur;
5190
 
5191
   FETCH ripple_cur
5192
    INTO ripple_rec;
5193
 
5194
   WHILE ripple_cur%FOUND
5195
   LOOP
5196
 
5197
 
5198
update deployment_manager.processes_config 
5199
set proc_id = ripple_rec.proc_id
5200
where pkg_health_tag = ripple_rec.proc_name
5201
and cmd_interface IS NULL
5202
and pkg_owner IS NULL
5203
and is_interface IS NULL; 
5204
 
5205
 
5206
      FETCH ripple_cur
5207
       INTO ripple_rec;
5208
   END LOOP;
5209
END UPDATE_PROCESSES;
5210
/
5211
 
5212
CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS
5213
 
5214
/******************************************************************************
5215
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
5216
   PURPOSE:    
5217
 
5218
   REVISIONS:
5219
   Ver        Date        Author           Description
5220
   ---------  ----------  ---------------  ------------------------------------
5221
   1.0        6/12/2006          1. Created this procedure.
5222
 
5223
   NOTES:
5224
 
5225
   Automatically available Auto Replace Keywords:
5226
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
5227
      Sysdate:         6/12/2006
5228
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
5229
      Username:         (set in TOAD Options, Procedure Editor)
5230
      Table Name:       (set in the "New PL/SQL Object" dialog)
5231
 
5232
******************************************************************************/
5233
 
5234
	CURSOR curInfo IS
5235
    SELECT PV_ID
5236
	FROM PACKAGE_BUILD_ENV
5237
	WHERE BE_ID IN (11, 12);
5238
    recInfo curInfo%ROWTYPE;
5239
 
5240
 
5241
BEGIN
5242
 
5243
	OPEN curInfo;
5244
    FETCH curInfo INTO recInfo;
5245
 
5246
	WHILE curInfo%FOUND
5247
	LOOP
5248
 
5249
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
5250
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
5251
 
5252
		FETCH curInfo INTO recInfo;
5253
 
5254
	END LOOP;
5255
 
5256
	CLOSE curInfo;
5257
 
5258
 
5259
 
5260
 
5261
END INSERT_MULTIPLE_STICKY_NOTES;
5262
/
5263
 
5264
CREATE OR REPLACE PACKAGE PK_RELEASE_TEST IS
5265
/*
5266
------------------------------
5267
||  Last Modified:  S.Vukovic
5268
||  Modified Date:  12/Sep/2005
5269
||  Body Version:   3.0
5270
------------------------------
5271
*/
5272
 
5273
	TYPE typeCur IS REF CURSOR;
5274
 
5275
    /*================================================================================================*/
5276
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5277
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
5278
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5279
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5280
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5281
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5282
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5283
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5284
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5285
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5286
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5287
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5288
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5289
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5290
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5291
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5292
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5293
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5294
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5295
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5296
	/*================================================================================================*/
5297
 
5298
END PK_RELEASE_TEST;
5299
/
5300
 
5301
CREATE OR REPLACE FUNCTION ORA_SYSDATETIME
5302
RETURN DATE
5303
IS
5304
/* ---------------------------------------------------------------------------
5305
    Version: 3.0.0
5306
   --------------------------------------------------------------------------- */
5307
BEGIN
5308
 
5309
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
5310
END ORA_SYSDATETIME;
5311
/
5312
 
5313
CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2
5314
IS
5315
/* ---------------------------------------------------------------------------
5316
    Version: 1.0.0
5317
   --------------------------------------------------------------------------- */
5318
BEGIN
5319
    IF is_number(s_version) AND LENGTH(s_version) > 3
5320
    THEN
5321
        RETURN MOD(TO_NUMBER(s_version), 1000);
5322
    ELSE
5323
        RETURN 0;
5324
    END IF;
5325
END get_build_number;
5326
/
5327
 
5328
CREATE OR REPLACE PACKAGE PK_RELEASE IS
5329
/*
5330
------------------------------
5331
||  Last Modified:  S.Vukovic
5332
||  Modified Date:  12/Sep/2005
5333
||  Body Version:   3.0
5334
------------------------------
5335
*/
5336
 
5337
	TYPE typeCur IS REF CURSOR;
5338
 
5339
    /*================================================================================================*/
5340
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5341
	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 );
5342
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5343
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5344
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5345
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5346
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5347
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5348
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5349
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5350
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
5351
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5352
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5353
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5354
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5355
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5356
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5357
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5358
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5359
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5360
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5361
 
5362
	/*================================================================================================*/
5363
 
5364
END PK_RELEASE;
5365
/
5366
 
5367
CREATE OR REPLACE PROCEDURE New_Additional_Note ( pnPv_id IN NUMBER,
5368
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
5369
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
5370
                                                  pnUser_id IN NUMBER,
5371
                                                  outErrCode OUT NUMBER
5372
                                                 ) IS
5373
/* ---------------------------------------------------------------------------
5374
    Version: 3.0.0
5375
   --------------------------------------------------------------------------- */
5376
 
5377
    newID NUMBER;
5378
 
5379
	CURSOR an_duplicate_cur IS
5380
        SELECT note_id
5381
          FROM ADDITIONAL_NOTES
5382
         WHERE pv_id = pnPv_id
5383
           AND note_title = psNote_title;
5384
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
5385
 
5386
BEGIN
5387
	outErrCode := -1;		-- Set default return error code to ERROR state
5388
 
5389
	OPEN an_duplicate_cur;
5390
    FETCH an_duplicate_cur INTO an_duplicate_rec;
5391
 
5392
    IF an_duplicate_cur%NOTFOUND
5393
    THEN
5394
		/* No duplicate titles */
5395
		-- Get new ID --
5396
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
5397
 
5398
		--- Add Additional Note ---
5399
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
5400
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
5401
		outErrCode := 0;		-- Set return to SUCCESS
5402
	END IF;
5403
 
5404
	CLOSE an_duplicate_cur;
5405
END New_Additional_Note;
5406
/
5407
 
5408
CREATE OR REPLACE PROCEDURE                 DEPLOY_TO_RELEASE IS
5409
 
5410
/******************************************************************************
5411
 
5412
 
5413
******************************************************************************/
5414
 
5415
	CURSOR curInfo IS
5416
    SELECT DISTINCT
5417
        qry.DPV_ID
5418
     FROM (
5419
             SELECT dep.*,
5420
                    LEVEL AS LEVEL_NUM
5421
               FROM PACKAGE_DEPENDENCIES dep
5422
             START WITH dep.PV_ID IN ( 
5423
 
5424
                        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,
5425
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
5426
 
5427
                        ) 
5428
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
5429
 		) qry,
5430
 		PACKAGES pkg,
5431
		PACKAGE_VERSIONS pv
5432
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
5433
         and (pv.is_patch is null or pv.is_patch = 'N');
5434
    recInfo curInfo%ROWTYPE;
5435
 
5436
 
5437
BEGIN
5438
 
5439
	OPEN curInfo;
5440
    FETCH curInfo INTO recInfo;
5441
 
5442
	WHILE curInfo%FOUND
5443
	LOOP
5444
 
5445
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
5446
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
5447
 
5448
    FETCH curInfo INTO recInfo;
5449
 
5450
	END LOOP;
5451
 
5452
	CLOSE curInfo;
5453
 
5454
 
5455
 
5456
 
5457
END DEPLOY_TO_RELEASE;
5458
/
5459
 
5460
CREATE OR REPLACE PROCEDURE New_Patch ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5461
 	   	  		  					  	NNparent_id IN NUMBER,
5462
                                        sPatchIdList IN VARCHAR2,
5463
										NNuser_id IN NUMBER ) IS
5464
/* ---------------------------------------------------------------------------
5465
    Version: 3.5
5466
   --------------------------------------------------------------------------- */
5467
 
5468
    patchPv_id    NUMBER;
5469
	parPkg_id	  NUMBER;
5470
    LastInstallOrder NUMBER;
5471
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
5472
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5473
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5474
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5475
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5476
 
5477
	CURSOR parent_cur IS
5478
        SELECT pv.*, pkg.pkg_name
5479
          FROM package_versions pv,
5480
		       packages pkg
5481
         WHERE pv.pv_id = NNparent_id
5482
		   AND pv.pkg_id = pkg.pkg_id;
5483
    parent_rec parent_cur%ROWTYPE;
5484
 
5485
    CURSOR patch_cur IS
5486
        SELECT pv.*, pg.pkg_name
5487
          FROM package_versions pv,
5488
		       packages pg
5489
         WHERE pv.pkg_id = parPkg_id
5490
		   AND pv.pkg_version = SSpatch_version
5491
		   AND pv.pkg_id = pg.pkg_id;
5492
    patch_rec patch_cur%ROWTYPE;
5493
 
5494
	CURSOR releases_cur IS
5495
        SELECT rc.pv_id
5496
		  FROM release_content rc
5497
		 WHERE rc.pv_id = patch_rec.pv_id;
5498
    releases_rec releases_cur%ROWTYPE;
5499
 
5500
 
5501
BEGIN
5502
 
5503
	-- Get Last Install Order
5504
    SELECT Count(*) INTO LastInstallOrder
5505
	  FROM PACKAGE_PATCHES pp
5506
	 WHERE pp.PV_ID = NNparent_id;
5507
 
5508
 
5509
    -- Get parent details
5510
	OPEN parent_cur;
5511
    FETCH parent_cur INTO parent_rec;
5512
	parPkg_id := parent_rec.pkg_id;
5513
 
5514
 
5515
	-- Find if patch exists in database
5516
    OPEN patch_cur;
5517
    FETCH patch_cur INTO patch_rec;
5518
 
5519
 
5520
    -- Parent must be official
5521
    IF parent_rec.dlocked = 'Y' THEN
5522
 
5523
	    IF patch_cur%NOTFOUND
5524
	    THEN
5525
        	isPatchDlocked := 'N';
5526
 
5527
	        -- Create new patch version --
5528
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5529
 
5530
 
5531
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5532
 
5533
	        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 )
5534
				   VALUES (
5535
						   patchPv_id,
5536
	                       parPkg_id,
5537
	                       SSpatch_version,
5538
	                       isPatchDlocked,
5539
	                       ORA_SYSDATE,
5540
	                       NNuser_id,
5541
	                       ORA_SYSDATETIME,
5542
	                       NNuser_id,
5543
	                       SSV_MM,
5544
	                       SSV_NMM,
5545
	                       SSV_EXT,
5546
	                       parent_rec.src_path,
5547
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5548
	                       NNuser_id,
5549
						   'Y',
5550
                           patchPv_id,
5551
						   parent_rec.bs_id,
5552
						   parent_rec.is_autobuildable,
5553
						   parent_rec.ripple_field
5554
 
5555
						   );
5556
 
5557
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5558
		    	   ( SELECT NNparent_id AS pv_id,
5559
				            pv.pv_id AS patch_id,
5560
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5561
				       FROM package_versions pv
5562
					  WHERE pv.pv_id = patchPv_id
5563
					    AND pv.is_patch = 'Y' );
5564
 
5565
	        /* LOG ACTION */
5566
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5567
        			     'Patch version created: '|| SSpatch_version );
5568
 
5569
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5570
        			     'New patch created and attached: '|| SSpatch_version );
5571
 
5572
 
5573
	    ELSE
5574
 
5575
		    patchPv_id := patch_rec.pv_id;
5576
	    	isPatchDlocked := patch_rec.dlocked;
5577
 
5578
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5579
		    OPEN releases_cur;
5580
		    FETCH releases_cur INTO releases_rec;
5581
 
5582
			IF releases_cur%NOTFOUND
5583
	   		THEN
5584
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5585
				UPDATE package_versions SET
5586
					   is_patch = 'Y'
5587
					   WHERE pv_id = patchPv_id;
5588
 
5589
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5590
			    	   ( SELECT NNparent_id AS pv_id,
5591
					            pv.pv_id AS patch_id,
5592
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5593
					       FROM package_versions pv
5594
						  WHERE pv.pv_id = patchPv_id
5595
						    AND pv.is_patch = 'Y' );
5596
 
5597
			END IF;
5598
 
5599
			CLOSE releases_cur;
5600
 
5601
            /* LOG ACTION */
5602
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5603
        			     'Patch version was found and attached: '|| SSpatch_version );
5604
 
5605
	    END IF;
5606
 
5607
 
5608
 
5609
 
5610
    END IF;
5611
 
5612
 
5613
 
5614
    /* Create Patch Dependencies */
5615
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5616
 
5617
 
5618
    -- Make sure patch is unofficial before altering its dependencies
5619
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5620
    	-- Delete Existing Dependencies
5621
        DELETE
5622
          FROM PACKAGE_DEPENDENCIES dep
5623
         WHERE dep.PV_ID = patchPv_id;
5624
 
5625
 
5626
        -- Insert new dependencies
5627
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5628
        SELECT patchPv_id AS PV_ID,
5629
        	   pv.PV_ID AS DPV_ID,
5630
               parPkg_id AS PKG_ID,
5631
               pv.PKG_ID AS DPKG_ID,
5632
               'L' AS BUILD_TYPE
5633
          FROM PACKAGE_VERSIONS pv
5634
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5635
 
5636
 
5637
    END IF;
5638
 
5639
 
5640
    CLOSE parent_cur;
5641
    CLOSE patch_cur;
5642
END New_Patch;
5643
/
5644
 
5645
CREATE OR REPLACE PROCEDURE Ignore_Dependency_Warnings ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
5646
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
5647
                                                         sIgnoreIdList IN VARCHAR2,
5648
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5649
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
5650
/* ---------------------------------------------------------------------------
5651
    Version: 5.0
5652
   --------------------------------------------------------------------------- */
5653
 
5654
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5655
ReleaseLocation VARCHAR2(4000);
5656
ActionTypeId NUMBER;
5657
 
5658
BEGIN
5659
 
5660
 
5661
   	IF (NOT bDoPatchIgnore) THEN
5662
    	/* Manual Ignore Warnings */
5663
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
5664
 
5665
 
5666
        /* Log Action */
5667
        -- Get Release Location
5668
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5669
		  FROM PROJECTS proj,
5670
		  	   RELEASE_TAGS rt
5671
		 WHERE rt.PROJ_ID = proj.PROJ_ID
5672
		   AND rt.RTAG_ID = nRtagId;
5673
 
5674
        -- Get Action Type Id for IGNORE_ON
5675
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5676
	      FROM ACTION_TYPE act
5677
	     WHERE act.NAME = 'ignore_on';
5678
 
5679
        -- Get Ignored (Current MINUS Old)
5680
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5681
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5682
		  FROM (
5683
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5684
		        FROM PACKAGE_VERSIONS pv
5685
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5686
		      MINUS
5687
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5688
		        FROM IGNORE_WARNINGS igw
5689
		       WHERE igw.RTAG_ID = nRtagId
5690
		         AND igw.PV_ID = nPvId
5691
		       ) qry,
5692
		       PACKAGE_VERSIONS pv,
5693
		       PACKAGES pkg,
5694
		       RELEASE_CONTENT rc,
5695
		       PACKAGE_VERSIONS rpv
5696
		 WHERE pv.PKG_ID = pkg.PKG_ID
5697
		   AND rc.RTAG_ID = nRtagId
5698
		   AND rc.PV_ID = rpv.PV_ID
5699
		   AND rpv.PKG_ID = pv.PKG_ID
5700
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5701
		   AND qry.DPV_ID = pv.PV_ID;
5702
 
5703
 
5704
        -- Get Action Type Id for IGNORE_OFF
5705
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5706
	      FROM ACTION_TYPE act
5707
	     WHERE act.NAME = 'ignore_off';
5708
 
5709
        -- Get UnIgnored (Old MINUS Current)
5710
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5711
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5712
		  FROM (
5713
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5714
		          FROM IGNORE_WARNINGS igw
5715
		         WHERE igw.RTAG_ID = nRtagId
5716
		           AND igw.PV_ID = nPvId
5717
                MINUS
5718
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5719
		          FROM PACKAGE_VERSIONS pv
5720
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5721
		       ) qry,
5722
		       PACKAGE_VERSIONS pv,
5723
		       PACKAGES pkg,
5724
		       RELEASE_CONTENT rc,
5725
		       PACKAGE_VERSIONS rpv
5726
		 WHERE pv.PKG_ID = pkg.PKG_ID
5727
		   AND rc.RTAG_ID = nRtagId
5728
		   AND rc.PV_ID = rpv.PV_ID
5729
		   AND rpv.PKG_ID = pv.PKG_ID
5730
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5731
		   AND qry.DPV_ID = pv.PV_ID;
5732
 
5733
 
5734
 
5735
       	-- Delete Current Ignore Warnings
5736
	    DELETE
5737
	      FROM IGNORE_WARNINGS igw
5738
	     WHERE igw.RTAG_ID = nRtagId
5739
	       AND igw.PV_ID = nPvId
5740
	       AND igw.IS_PATCH_IGNORE IS NULL;
5741
 
5742
 
5743
        IF (oIgnoreIdCollector.COUNT > 0) THEN
5744
		    -- Insert Ignore Warnings
5745
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
5746
		    SELECT nRtagId,
5747
	        	   nPvId,
5748
	               pv.PV_ID AS DPV_ID
5749
	          FROM PACKAGE_VERSIONS pv
5750
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5751
        END IF;
5752
 
5753
 
5754
		-- Touch Release if package is in Release Area
5755
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
5756
			Touch_Release (nRtagId);
5757
		END IF;
5758
 
5759
	ELSE
5760
       	/* Patch Ignore Warnings */
5761
 
5762
        -- Delete Current Patch Ignore Warnings
5763
	    DELETE
5764
	      FROM IGNORE_WARNINGS igw
5765
	     WHERE igw.RTAG_ID = nRtagId
5766
	       AND igw.IS_PATCH_IGNORE = 'Y';
5767
 
5768
 
5769
        -- Delete Manual Ignores that need to be Patch Ignores
5770
	    DELETE
5771
	      FROM IGNORE_WARNINGS igw
5772
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
5773
         	(
5774
				SELECT DISTINCT
5775
                       nRtagId,
5776
					   err.PV_ID,
5777
                       err.ERR_DPV AS DPV_ID
5778
				  FROM
5779
				       (
5780
				       /* Full Release Contents used for reference*/
5781
				       SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mm
5782
				         FROM release_content rel, package_versions rpv
5783
				        WHERE rel.pv_id = rpv.pv_id
5784
				          AND rtag_id = nRtagId
5785
				       ) frc,
5786
				       (
5787
				        /* DPV_IDs not fount in release*/
5788
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5789
				          FROM package_dependencies dep
5790
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5791
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5792
				       ) err,
5793
				       (
5794
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5795
				          FROM PACKAGE_PATCHES pp,
5796
				          	   PACKAGE_DEPENDENCIES dep,
5797
				          	   RELEASE_CONTENT rc
5798
				         WHERE rc.RTAG_ID = nRtagId
5799
				           AND rc.PV_ID = pp.PV_ID
5800
				           AND dep.PV_ID = pp.PATCH_ID
5801
				       ) pp,
5802
				       package_versions errpkg,
5803
				       package_versions errpv
5804
				 WHERE err.err_dpv = errpv.pv_id
5805
				   AND errpv.pkg_id = frc.pkg_id(+)
5806
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5807
				   AND err.pv_id = errpkg.pv_id
5808
				   AND err.PV_ID = pp.PV_ID
5809
				   AND frc.PV_ID = pp.DPV_ID
5810
			);
5811
 
5812
        /*
5813
        ---------------------------------------------------
5814
        --  Make sure that select statement above and below are same
5815
        ---------------------------------------------------
5816
        */
5817
 
5818
 
5819
		-- Insert Patch Ignores
5820
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
5821
		SELECT DISTINCT
5822
			   nRtagId,
5823
		       err.PV_ID,
5824
		       err.ERR_DPV AS DPV_ID,
5825
		       'Y'
5826
		  FROM
5827
		       (
5828
		       /* Full Release Contents used for reference*/
5829
		       SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mm
5830
		         FROM release_content rel, package_versions rpv
5831
		        WHERE rel.pv_id = rpv.pv_id
5832
		          AND rtag_id = nRtagId
5833
		       ) frc,
5834
		       (
5835
		        /* DPV_IDs not fount in release*/
5836
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5837
		          FROM package_dependencies dep
5838
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5839
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5840
		       ) err,
5841
		       (
5842
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5843
		          FROM PACKAGE_PATCHES pp,
5844
		          	   PACKAGE_DEPENDENCIES dep,
5845
		          	   RELEASE_CONTENT rc
5846
		         WHERE rc.RTAG_ID = nRtagId
5847
		           AND rc.PV_ID = pp.PV_ID
5848
		           AND dep.PV_ID = pp.PATCH_ID
5849
		       ) pp,
5850
		       package_versions errpkg,
5851
		       package_versions errpv
5852
		 WHERE err.err_dpv = errpv.pv_id
5853
		   AND errpv.pkg_id = frc.pkg_id(+)
5854
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5855
		   AND err.pv_id = errpkg.pv_id
5856
		   AND err.PV_ID = pp.PV_ID
5857
		   AND frc.PV_ID = pp.DPV_ID;
5858
 
5859
 
5860
    END IF;
5861
 
5862
 
5863
END Ignore_Dependency_Warnings;
5864
/
5865
 
5866
CREATE OR REPLACE PROCEDURE UnRipple_Package (
5867
        sPvIdList IN VARCHAR2,
5868
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5869
        nUserId IN NUMBER
5870
    ) IS
5871
/* ---------------------------------------------------------------------------
5872
    Version: 4.1
5873
   --------------------------------------------------------------------------- */
5874
 
5875
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5876
 
5877
BEGIN
5878
 
5879
    IF (sPvIdList IS NULL) THEN
5880
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5881
    END IF;
5882
 
5883
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5884
 
5885
    -- UnRipple Package
5886
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
5887
    SELECT nRtagId, pv.PV_ID
5888
    FROM PACKAGE_VERSIONS pv
5889
    WHERE pv.PV_ID IN (
5890
        SELECT *
5891
        FROM TABLE (
5892
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
5893
        )
5894
    );
5895
 
5896
    /* LOG ACTION */
5897
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
5898
 
5899
END UnRipple_Package;
5900
/
5901
 
5902
CREATE OR REPLACE PROCEDURE set_to_autobuildable (
5903
   nrtagid     IN   NUMBER,
5904
   spvidlist   IN   VARCHAR2
5905
)
5906
IS
5907
/******************************************************************************
5908
   NAME:       SET_TO_AUTOBUILDABLE
5909
   PURPOSE:
5910
 
5911
   REVISIONS:
5912
   Ver        Date        Author           Description
5913
   ---------  ----------  ---------------  ------------------------------------
5914
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
5915
 
5916
   NOTES:
5917
 
5918
   Automatically available Auto Replace Keywords:
5919
      Object Name:     SET_TO_AUTOBUILDABLE
5920
      Sysdate:         15/12/2006
5921
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
5922
      Username:         (set in TOAD Options, Procedure Editor)
5923
      Table Name:       (set in the "New PL/SQL Object" dialog)
5924
 
5925
******************************************************************************/
5926
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
5927
   PvId NUMBER;
5928
BEGIN
5929
 
5930
   npvidcollector := in_list_number2 (spvidlist);
5931
 
5932
   UPDATE package_versions
5933
      SET is_autobuildable = 'N'
5934
    WHERE pv_id IN (SELECT pv_id
5935
                      FROM release_content
5936
                     WHERE rtag_id = nrtagid);
5937
 
5938
 
5939
 
5940
   	FOR i IN 1..npvidcollector.COUNT
5941
	LOOP
5942
		PvId := npvidcollector(i);
5943
 
5944
		UPDATE package_versions
5945
		set is_autobuildable = 'Y'
5946
		where pv_id = PvId;
5947
 
5948
	END LOOP;
5949
 
5950
 
5951
END set_to_autobuildable;
5952
/
5953
 
5954
CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS
5955
/* ---------------------------------------------------------------------------
5956
    Version: 3.0
5957
   --------------------------------------------------------------------------- */
5958
 
5959
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5960
 
5961
BEGIN
5962
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
5963
 
5964
	 -- Touch Release for Rebuild
5965
     UPDATE RELEASE_TAGS rt SET
5966
     	rt.REBUILD_ENV = 'Y',
5967
        rt.REBUILD_STAMP = 0
5968
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5969
 
5970
 
5971
END Touch_Release_Bulk;
5972
/
5973
 
5974
CREATE OR REPLACE PROCEDURE TEST_MARCO IS
5975
/******************************************************************************
5976
   NAME:       TEST_MARCO
5977
   PURPOSE:    
5978
 
5979
   REVISIONS:
5980
   Ver        Date        Author           Description
5981
   ---------  ----------  ---------------  ------------------------------------
5982
   1.0        2/03/2007          1. Created this procedure.
5983
 
5984
   NOTES:
5985
 
5986
   Automatically available Auto Replace Keywords:
5987
      Object Name:     TEST_MARCO
5988
      Sysdate:         2/03/2007
5989
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
5990
      Username:         (set in TOAD Options, Procedure Editor)
5991
      Table Name:       (set in the "New PL/SQL Object" dialog)
5992
 
5993
******************************************************************************/
5994
 
5995
parPv_id    NUMBER;
5996
parPkg_id   NUMBER;
5997
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5998
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5999
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6000
BEGIN
6001
 
6002
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6003
 
6004
        /* LOG ACTION */
6005
        Log_Action ( parPv_id, 'new_version', 3764,
6006
        			 'New package version: '|| parPv_id || '.' );
6007
 
6008
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
6009
 
6010
     -- Clone Package Version Details --
6011
            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,
6012
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
6013
                SELECT parPv_id         AS pv_id,
6014
                       pv.pkg_id        AS pkg_id,
6015
                       parPv_id || '.'    AS pkg_version,
6016
                       'N'              AS dlocked,
6017
                       Ora_Sysdate      AS created_stamp,
6018
                       3764        AS creator_id,
6019
                       Ora_Sysdatetime  AS modified_stamp,
6020
                       3764        AS modifier_id,
6021
                       SSV_MM          AS V_MM,
6022
                       SSV_NMM         AS V_NMM,
6023
                       SSV_EXT          AS V_EXT,
6024
                       pv.src_path,
6025
                       pv.pv_description,
6026
                       pv.PV_OVERVIEW,
6027
                       112982 	AS LAST_PV_ID,
6028
                       pv.owner_id,
6029
					   pv.BUILD_TYPE,
6030
					   pv.IS_BUILD_ENV_REQUIRED,
6031
					   pv.bs_id,
6032
					   pv.is_autobuildable,
6033
					   pv.IS_DEPLOYABLE
6034
                  FROM PACKAGE_VERSIONS pv
6035
                 WHERE pv.pv_id = 112982;		
6036
 
6037
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6038
 
6039
 
6040
END TEST_MARCO;
6041
/
6042
 
6043
CREATE OR REPLACE PACKAGE PK_BUILDAPI_TEST IS
6044
/*
6045
------------------------------
6046
||  Last Modified:  S.Vukovic
6047
||  Modified Date:  30/Mar/2005
6048
||  Spec Version:   1.0
6049
------------------------------
6050
*/
6051
 
6052
	/*================================================================================================*/
6053
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
6054
								  sOsName IN VARCHAR2,
6055
								  sOrigFilePath IN VARCHAR2,
6056
								  sFileName IN VARCHAR2,
6057
								  sDestFilePath IN VARCHAR2,
6058
								  nByteSize IN NUMBER,
6059
								  sCRCcksum IN VARCHAR2 );
6060
 
6061
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
6062
    /*================================================================================================*/
6063
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
6064
	/*================================================================================================*/
6065
 
6066
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
6067
			  					   	 sWebServer IN VARCHAR2,
6068
									 sMailServer IN VARCHAR2,
6069
									 sMailSender IN VARCHAR2);
6070
	/*================================================================================================*/
6071
 
6072
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
6073
	/*================================================================================================*/
6074
 
6075
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
6076
	/*================================================================================================*/
6077
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
6078
	/*================================================================================================*/	        
6079
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
6080
	/*================================================================================================*/	
6081
 
6082
END PK_BUILDAPI_TEST;
6083
/
6084
 
6085
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
6086
 
6087
/* ---------------------------------------------------------------------------
6088
    Version: 3.0.0
6089
   --------------------------------------------------------------------------- */
6090
 
6091
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6092
	pos				   NUMBER;
6093
	in_list			   VARCHAR2(4000) := sInList || ',';
6094
 
6095
BEGIN
6096
 
6097
	IF NOT sInList IS NULL
6098
	THEN
6099
		LOOP
6100
	        EXIT WHEN in_list IS NULL;
6101
	        pos := INSTR ( in_list, ',' );
6102
	        sync_rtags.extend;
6103
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
6104
	        in_list := SUBSTR ( in_list, pos+1 );
6105
		END LOOP;
6106
	END IF;
6107
 
6108
	RETURN sync_rtags;
6109
END IN_LIST_NUMBER;
6110
/
6111
 
6112
CREATE OR REPLACE PROCEDURE delete_autobuild_failure_info
6113
IS
6114
/******************************************************************************
6115
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
6116
   PURPOSE:
6117
 
6118
   REVISIONS:
6119
   Ver        Date        Author           Description
6120
   ---------  ----------  ---------------  ------------------------------------
6121
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
6122
 
6123
   NOTES:
6124
 
6125
   Automatically available Auto Replace Keywords:
6126
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
6127
      Sysdate:         2/06/2006
6128
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
6129
      Username:         (set in TOAD Options, Procedure Editor)
6130
      Table Name:       (set in the "New PL/SQL Object" dialog)
6131
 
6132
******************************************************************************/
6133
BEGIN
6134
   DELETE FROM autobuild_failure
6135
         WHERE group_email_id NOT IN (SELECT group_email_id
6136
                                        FROM members_group);
6137
END delete_autobuild_failure_info;
6138
/
6139
 
53 mhunt 6140
CREATE OR REPLACE PACKAGE                   "PK_ENVIRONMENT" IS
51 mhunt 6141
/*
6142
------------------------------
53 mhunt 6143
||  Last Modified:  G.Huddy
6144
||  Modified Date:  28/May/2008
6145
||  Spec Version:   1.2
51 mhunt 6146
------------------------------
6147
*/
6148
 
6149
	TYPE typeCur IS REF CURSOR;
6150
 
53 mhunt 6151
	/*================================================================================================*/
51 mhunt 6152
 
6153
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
6154
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6155
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6156
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6157
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6158
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6159
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
53 mhunt 6160
 
51 mhunt 6161
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6162
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6163
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6164
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6165
 
53 mhunt 6166
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
6167
 
51 mhunt 6168
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 6169
 
6170
 
51 mhunt 6171
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6172
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6173
 
6174
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6175
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6176
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
53 mhunt 6177
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6178
 
51 mhunt 6179
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 6180
 
51 mhunt 6181
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
6182
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
53 mhunt 6183
 
6184
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
6185
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
51 mhunt 6186
							 CloneFromPvId IN NUMBER );
53 mhunt 6187
 
51 mhunt 6188
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
53 mhunt 6189
 
6190
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6191
 
51 mhunt 6192
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6193
 
53 mhunt 6194
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6195
 
6196
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
51 mhunt 6197
	/*================================================================================================*/
6198
 
6199
END PK_ENVIRONMENT;
6200
/
6201
 
6202
CREATE OR REPLACE PROCEDURE Clear_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6203
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6204
											 nUserId IN NUMBER ) IS
6205
/* ---------------------------------------------------------------------------
6206
    Version: 4.0
6207
   --------------------------------------------------------------------------- */
6208
 
6209
BEGIN
6210
 
6211
    -- Clear Advisory Ripple Package
6212
    DELETE FROM ADVISORY_RIPPLE
6213
	WHERE PV_ID = nPvId
6214
	AND RTAG_ID = nRtagId;
6215
 
6216
    /* LOG ACTION */
6217
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
6218
 
6219
	/*Rebuild_Environment(nRtagId);*/
6220
 
6221
END Clear_Advisory_Ripple;
6222
/
6223
 
6224
CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6225
											 nUserId IN NUMBER ) IS
6226
/* ---------------------------------------------------------------------------
6227
    Version: 4.0
6228
   --------------------------------------------------------------------------- */
6229
 
6230
BEGIN
6231
 
6232
    -- Lock Package
6233
    UPDATE PACKAGE_VERSIONS pv SET
6234
    	pv.DLOCKED = 'Y'
6235
    WHERE pv.PV_ID = nPvId;
6236
 
6237
    /* LOG ACTION */
6238
   	Log_Action ( nPvId, 'lock_package', nUserId );
6239
 
6240
END Lock_Package;
6241
/
6242
 
6243
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env_Temp ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6244
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6245
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6246
														 ) IS
6247
/* ---------------------------------------------------------------------------
6248
    Last Modified: Rupesh Solanki
6249
	Version: 3.0.1
6250
   --------------------------------------------------------------------------- */
6251
 
6252
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6253
   BsId NUMBER;
6254
   HackBsId NUMBER;
6255
 
6256
 
6257
BEGIN
6258
 
6259
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6260
 
6261
   -- Delete Current Build Env settings
6262
   DELETE FROM PACKAGE_BUILD_ENV
6263
   WHERE pv_id = nPvId;
6264
 
6265
   -- Delet Current Package Build Info Settings
6266
   DELETE FROM PACKAGE_BUILD_INFO
6267
   WHERE pv_id = nPvId;
6268
 
6269
   -- Reset flag to N
6270
   UPDATE PACKAGE_VERSIONS SET
6271
	   IS_BUILD_ENV_REQUIRED = 'N'
6272
   WHERE PV_ID = nPvId;
6273
 
6274
 
6275
   -- Set new Build Env
6276
   IF NOT sBuildEnvIdList IS NULL THEN
6277
	FOR i IN 1..nBsCollector.COUNT
6278
	LOOP   
6279
 
6280
	BsId := nBsCollector(i);
6281
 
6282
	IF nBuildStandard = 2 THEN
6283
	   IF BsId = 1 THEN
6284
	   	  HackBsId := 11;
6285
	   ELSE
6286
	   	  HackBsId := 12;
6287
	   END IF;
6288
 
6289
   	  -- Insert into PACKAGE_BUILD_ENV
6290
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6291
	  SELECT nPvId AS PV_ID,
6292
	  		 be.BE_ID
6293
	    FROM BUILD_ENVIRONMENTS be
6294
	   WHERE be.BE_ID IN ( HackBsId );
6295
 
6296
   	  -- Insert into PACKAGE_BUILD_INFO
6297
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6298
	  SELECT nPvId AS PV_ID,
6299
	  		 be.BM_ID
6300
	    FROM BUILD_MACHINES be
6301
	   WHERE be.BM_ID IN ( BsId );						 
6302
 
6303
	   -- Set flag to Y
6304
	   UPDATE PACKAGE_VERSIONS SET
6305
		   IS_BUILD_ENV_REQUIRED = 'Y'
6306
	   WHERE PV_ID = nPvId;	
6307
 
6308
 
6309
	ELSE
6310
 
6311
   	  -- Insert into PACKAGE_BUILD_ENV
6312
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6313
	  SELECT nPvId AS PV_ID,
6314
	  		 be.BE_ID
6315
	    FROM BUILD_ENVIRONMENTS be
6316
	   WHERE be.BE_ID IN ( BsId );
6317
 
6318
   	  -- Insert into PACKAGE_BUILD_INFO
6319
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6320
	  SELECT nPvId AS PV_ID,
6321
	  		 be.BM_ID
6322
	    FROM BUILD_MACHINES be
6323
	   WHERE be.BM_ID IN ( BsId );						 
6324
 
6325
	   -- Set flag to Y
6326
	   UPDATE PACKAGE_VERSIONS SET
6327
		   IS_BUILD_ENV_REQUIRED = 'Y'
6328
	   WHERE PV_ID = nPvId;
6329
 
6330
	END IF;  
6331
 
6332
 
6333
	END LOOP;	   
6334
 
6335
   END IF;
6336
 
6337
 
6338
END Set_Package_Build_Env_Temp;
6339
/
6340
 
6341
CREATE OR REPLACE PROCEDURE Rename_Package_Version ( NNpv_id IN NUMBER,
6342
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6343
													 cBuildType IN CHAR,
6344
                                                     NNuser_id IN NUMBER,
6345
                                                     errMessage OUT VARCHAR2 ) IS
6346
/* ---------------------------------------------------------------------------
6347
    Version: 3.2
6348
   --------------------------------------------------------------------------- */
6349
 
6350
    sPackageVersion VARCHAR2(4000);
6351
	sLabel VARCHAR2(4000) := NULL;
6352
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
6353
 
6354
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6355
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6356
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6357
 
6358
    CURSOR package_versions_cur IS
6359
        SELECT pv_id
6360
     	  FROM package_versions
6361
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
6362
     	   AND pkg_version = SSpkg_version;
6363
    package_versions_rec package_versions_cur%ROWTYPE;
6364
 
6365
 
6366
BEGIN
6367
 
6368
    /* ---------------------------------------------------- */
6369
    /* Find if package_version exists                       */
6370
    /* ---------------------------------------------------- */
6371
 
6372
	errMessage := NULL;
6373
 
6374
 
6375
	-- Get previous version
6376
	SELECT pv.PKG_VERSION INTO OldPkgVersion
6377
      FROM PACKAGE_VERSIONS pv
6378
     WHERE pv.PV_ID = NNpv_id;
6379
 
6380
 
6381
	sPackageVersion := SSpkg_version;
6382
 
6383
 
6384
	IF OldPkgVersion != sPackageVersion THEN
6385
 
6386
	    OPEN package_versions_cur;
6387
	    FETCH package_versions_cur INTO package_versions_rec;
6388
 
6389
	    IF package_versions_cur%NOTFOUND
6390
	    THEN
6391
 
6392
			-- Split current version in parts
6393
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6394
 
6395
 
6396
		    -- Automated built config
6397
			IF (cBuildType = 'A') THEN
6398
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
6399
			END IF;
6400
 
6401
 
6402
	        -- Packge version not found, hence rename it.
6403
	        UPDATE package_versions
6404
	           SET pkg_version = sPackageVersion,
6405
	               v_mm = SSV_MM,
6406
	               v_nmm = SSV_NMM,
6407
	               v_ext = SSV_EXT,
6408
	               modified_stamp = ORA_SYSDATETIME,
6409
	               modifier_id = NNuser_id,
6410
				   build_type = cBuildType,
6411
				   pkg_label = NULL
6412
	         WHERE pv_id = NNpv_id;
6413
 
6414
 
6415
			IF (cBuildType = 'A') THEN
6416
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
6417
				UPDATE PACKAGE_VERSIONS pv SET
6418
					pv.PKG_LABEL = sLabel
6419
		         WHERE pv_id = NNpv_id;
6420
			END IF;
6421
 
6422
			/* LOG ACTION */
6423
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
6424
 
6425
	    ELSE
6426
	        -- Package version exists. Cannot proceed.
6427
	        errMessage := 'enum_MSG_VERSION_EXISTS';
6428
 
6429
	    END IF;
6430
 
6431
	    CLOSE package_versions_cur;
6432
 
6433
	END IF;
6434
 
6435
 
6436
 
6437
 
6438
END Rename_Package_Version;
6439
/
6440
 
6441
CREATE OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
6442
IS
6443
/* ---------------------------------------------------------------------------
6444
    Version: 3.0.0
6445
   --------------------------------------------------------------------------- */
6446
 
6447
BEGIN
6448
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
6449
    THEN
6450
        RETURN FALSE;
6451
    ELSE
6452
        RETURN TRUE;
6453
    END IF;
6454
 
6455
END IS_VERSION_EXTENSION;
6456
/
6457
 
6458
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6459
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6460
                                                          NNuser_id IN NUMBER,
6461
                                                          retPV_ID OUT NUMBER,
6462
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6463
/* ---------------------------------------------------------------------------
6464
    Version: 4.0
6465
   --------------------------------------------------------------------------- */
6466
 
6467
    parPkg_id   NUMBER;
6468
    parPv_id    NUMBER;
6469
    cloneFrom_pv_id NUMBER;
6470
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6471
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6472
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6473
 
6474
    CURSOR packages_cur IS
6475
        SELECT pkg_id FROM PACKAGES
6476
        WHERE pkg_name = SSpkg_name;
6477
    packages_rec packages_cur%ROWTYPE;
6478
 
6479
    CURSOR package_versions_cur IS
6480
        SELECT pv_id FROM PACKAGE_VERSIONS
6481
        WHERE pkg_id = parPkg_id
6482
        AND pkg_version = SSpkg_version;
6483
    package_versions_rec package_versions_cur%ROWTYPE;
6484
 
6485
    CURSOR clone_package_versions_cur IS
6486
        SELECT MAX(pv_id) AS pv_id
6487
          FROM PACKAGE_VERSIONS
6488
         WHERE pkg_id = parPkg_id
6489
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6490
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6491
 
6492
BEGIN
6493
    /* -------------------------------------------- */
6494
    /* Find if pkg_name exists and seed if required */
6495
    /* -------------------------------------------- */
6496
    OPEN packages_cur;
6497
    FETCH packages_cur INTO packages_rec;
6498
 
6499
    IF packages_cur%NOTFOUND
6500
    THEN
6501
        /* INSERT into packages table */
6502
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6503
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6504
 
6505
    ELSE
6506
        parPkg_id := packages_rec.pkg_id;
6507
 
6508
    END IF;
6509
 
6510
    CLOSE packages_cur;
6511
 
6512
 
6513
 
6514
    /* ---------------------------------------------------- */
6515
    /* Find if package_version exists and seed if required  */
6516
    /* ---------------------------------------------------- */
6517
    OPEN package_versions_cur;
6518
    FETCH package_versions_cur INTO package_versions_rec;
6519
 
6520
    IF package_versions_cur%NOTFOUND
6521
    THEN
6522
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6523
 
6524
        /* LOG ACTION */
6525
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6526
        			 'New package version: '|| SSpkg_version );
6527
 
6528
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6529
 
6530
        /* Find similar pkg_name + ext to clone from */
6531
        OPEN clone_package_versions_cur;
6532
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6533
 
6534
 
6535
        IF NOT clone_package_versions_rec.pv_id IS NULL
6536
        THEN
6537
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6538
			IF ( NOT nCloneFromPvId IS NULL) THEN
6539
            	cloneFrom_pv_id := nCloneFromPvId;
6540
			ELSE
6541
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6542
			END IF;
6543
 
6544
            -- Clone Package Version Details --
6545
            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,
6546
                                           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  )
6547
                SELECT parPv_id         AS pv_id,
6548
                       parPkg_id        AS pkg_id,
6549
                       SSpkg_version    AS pkg_version,
6550
                       'N'              AS dlocked,
6551
                       Ora_Sysdate      AS created_stamp,
6552
                       NNuser_id        AS creator_id,
6553
                       Ora_Sysdatetime  AS modified_stamp,
6554
                       NNuser_id        AS modifier_id,
6555
                       SSV_MM           AS V_MM,
6556
                       SSV_NMM          AS V_NMM,
6557
                       SSV_EXT          AS V_EXT,
6558
                       pv.src_path,
6559
                       pv.pv_description,
6560
                       pv.PV_OVERVIEW,
6561
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6562
                       pv.owner_id,
6563
					   pv.BUILD_TYPE,
6564
					   pv.IS_BUILD_ENV_REQUIRED,
6565
					   pv.BS_ID,
6566
					   pv.is_autobuildable,
6567
					   pv.IS_DEPLOYABLE, 
6568
					   pv.ripple_field
6569
                  FROM PACKAGE_VERSIONS pv
6570
                 WHERE pv.pv_id = cloneFrom_pv_id;
6571
 
6572
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6573
 
6574
        ELSE
6575
            /* BRAND NEW version + ext */
6576
            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 )
6577
        	VALUES (
6578
                    parPv_id,
6579
                    parPkg_id,
6580
                    SSpkg_version,
6581
                    'N',
6582
                    Ora_Sysdate,
6583
                    NNuser_id,
6584
                    Ora_Sysdatetime,
6585
                    NNuser_id,
6586
                    SSV_MM,
6587
                    SSV_NMM,
6588
                    SSV_EXT,
6589
                    NNuser_id,
6590
                    parPv_id,
6591
					'M',
6592
					'b'
6593
                   );
6594
 
6595
        END IF;
6596
 
6597
        CLOSE clone_package_versions_cur;
6598
        retPV_ID := parPv_id;
6599
 
6600
    ELSE
6601
        retPV_ID := package_versions_rec.pv_id;
6602
 
6603
    END IF;
6604
 
6605
    CLOSE package_versions_cur;
6606
 
6607
 
6608
 
6609
 
6610
END Seed_Package_Names_Versions;
6611
/
6612
 
6613
CREATE OR REPLACE PROCEDURE Remove_Runtime ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6614
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
6615
                                             nUserId IN NUMBER ) IS
6616
/* ---------------------------------------------------------------------------
6617
    Version: 3.0
6618
   --------------------------------------------------------------------------- */
6619
 
6620
   RuntimeDependency VARCHAR2(4000);
6621
 
6622
BEGIN
6623
 
6624
	-- Get Runtime dependency
6625
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
6626
	  FROM RUNTIME_DEPENDENCIES rtd,
6627
	  	   PACKAGES pkg,
6628
	       PACKAGE_VERSIONS pv
6629
	 WHERE rtd.PV_ID = nPvId
6630
	   AND pv.PKG_ID = pkg.PKG_ID
6631
	   AND rtd.RTD_ID = pv.PV_ID
6632
	   AND rtd.RTD_ID = nRuntimeId;
6633
 
6634
 
6635
	-- Delete Document
6636
    DELETE
6637
      FROM RUNTIME_DEPENDENCIES rtd
6638
     WHERE rtd.PV_ID = nPvId
6639
       AND rtd.RTD_ID = nRuntimeId;
6640
 
6641
 
6642
    /* LOG ACTION */
6643
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
6644
   			     'Runtime package: '|| RuntimeDependency );
6645
 
6646
 
6647
END Remove_Runtime;
6648
/
6649
 
6650
CREATE OR REPLACE PROCEDURE Deprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6651
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6652
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6653
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
6654
											   nUserId IN NUMBER) IS
6655
ext VARCHAR2(50);
6656
 
6657
 
6658
 
6659
 
6660
BEGIN
6661
 
6662
	--Extract the package version extension
6663
	SELECT V_EXT into ext
6664
	FROM PACKAGE_VERSIONS
6665
	WHERE PV_ID = nPvId; 
6666
 
6667
    -- Deprecate Package
6668
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
6669
	VALUES (nRtagId, nPkgId, sComments, ext);
6670
 
6671
	IF ext IS NOT NULL THEN
6672
	   UPDATE RELEASE_CONTENT 
6673
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6674
	   WHERE RTAG_ID = nRtagId
6675
	   AND PV_ID IN (SELECT PV.PV_ID 
6676
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6677
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6678
				  	AND PV.V_EXT = ext
6679
				  	AND PKG.PKG_ID = nPkgId
6680
				 	);						
6681
	ELSE
6682
	   UPDATE RELEASE_CONTENT 
6683
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6684
	   WHERE RTAG_ID = nRtagId
6685
	   AND PV_ID IN (SELECT PV.PV_ID 
6686
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6687
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6688
				  	AND PV.V_EXT IS NULL
6689
				  	AND PKG.PKG_ID = nPkgId
6690
				 	);
6691
	END IF;
6692
 
6693
	UPDATE RELEASE_CONTENT
6694
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
6695
	WHERE RTAG_ID = nRtagId
6696
	AND PV_ID IN (		   SELECT DISTINCT
6697
 	 		  	 		   qry.PV_ID
6698
						        FROM (
6699
								 	  SELECT dep.*,
6700
									  LEVEL AS LEVEL_NUM
6701
									  FROM PACKAGE_DEPENDENCIES dep 
6702
 								START WITH dep.DPV_ID IN ( nPvId ) 
6703
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6704
 								) qry,
6705
								PACKAGES pkg,
6706
								PACKAGE_VERSIONS pv,
6707
								RELEASE_CONTENT rc
6708
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6709
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6710
							 AND rc.DEPRECATED_STATE IS NULL
6711
				 );			 
6712
 
6713
    /* LOG ACTION */
6714
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
6715
 
6716
 
6717
END Deprecate_Package;
6718
/
6719
 
6720
CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (
6721
   nprojid     IN   NUMBER,
6722
   nviewid     IN   NUMBER,
6723
   suserlist   IN   VARCHAR2
6724
)
6725
IS
6726
   groupid   NUMBER;
6727
/******************************************************************************
6728
   NAME:       ADD_AUTOBUILD_FAILURE
6729
   PURPOSE:
6730
 
6731
   REVISIONS:
6732
   Ver        Date        Author           Description
6733
   ---------  ----------  ---------------  ------------------------------------
6734
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
6735
 
6736
   NOTES:
6737
 
6738
   Automatically available Auto Replace Keywords:
6739
      Object Name:     ADD_AUTOBUILD_FAILURE
6740
      Sysdate:         11/04/2006
6741
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
6742
      Username:         (set in TOAD Options, Procedure Editor)
6743
      Table Name:       (set in the "New PL/SQL Object" dialog)
6744
 
6745
******************************************************************************/
6746
BEGIN
6747
   BEGIN
6748
      SELECT group_email_id
6749
        INTO groupid
6750
        FROM autobuild_failure
6751
       WHERE proj_id = nprojid AND view_id = nviewid;
6752
   EXCEPTION
6753
      WHEN NO_DATA_FOUND
6754
      THEN
6755
         --  Create Next Sequence Id ---
6756
         SELECT seq_group_email_id.NEXTVAL
6757
           INTO groupid
6758
           FROM DUAL;
6759
 
6760
         INSERT INTO autobuild_failure
6761
                     (group_email_id, proj_id, view_id
6762
                     )
6763
              VALUES (groupid, nprojid, nviewid
6764
                     );
6765
   END;
6766
 
6767
   add_view_members (groupid, suserlist);
6768
END add_autobuild_failure_info;
6769
/
6770
 
6771
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;
6772
/
6773
 
6774
CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"
6775
as TABLE of VARCHAR2(4000)
6776
/
6777
 
6778
CREATE OR REPLACE PROCEDURE CHANGE_RELEASE_MODE ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
6779
/* ---------------------------------------------------------------------------
6780
    Version: 3.0.0
6781
   --------------------------------------------------------------------------- */
6782
 
6783
	cMode CHAR(1) := NULL;  
6784
	nProjId NUMBER; 
6785
 
6786
BEGIN
6787
 
6788
 
6789
	/*
6790
	Author: Rupesh Solanki
6791
	Modified: 24th October 2006
6792
	Reason: Added the archive mode state into Release Manager 
6793
	||	1 - Open Mode
6794
	||	2 - Restrictive Mode
6795
	||	3 - Closed Mode
6796
	||	4 - CCB Mode
6797
	||	5 - Archive Mode
6798
	*/	
6799
	-- Get project Id
6800
	SELECT rt.PROJ_ID INTO nProjId
6801
	  FROM RELEASE_TAGS rt
6802
	 WHERE rt.RTAG_ID = nRtagId; 
6803
 
6804
	IF nModeCode = 1 THEN
6805
		-- Open Mode
6806
		cMode := 'N';
6807
 
6808
		/* LOG ACTION */
6809
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
6810
 
6811
	ELSIF nModeCode = 2 THEN
6812
		-- Restrictive Mode
6813
		cMode := 'R';
6814
 
6815
		/* LOG ACTION */
6816
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
6817
 
6818
	ELSIF nModeCode = 3 THEN
6819
		-- Closed Mode
6820
		cMode := 'Y';
6821
 
6822
		/* LOG ACTION */
6823
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
6824
 
6825
	ELSIF nModeCode = 4 THEN
6826
		-- CCB Mode
6827
		cMode := 'C';
6828
 
6829
		/* LOG ACTION */
6830
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
6831
 
6832
	ELSIF nModeCode = 5 THEN
6833
		-- Archive Mode
6834
		cMode := 'A';
6835
 
6836
		/* LOG ACTION */
6837
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
6838
 
6839
 
6840
	END IF;
6841
 
6842
 
6843
 
6844
	-- Now update table
6845
	IF NOT cMode IS NULL THEN
6846
		UPDATE RELEASE_TAGS rt SET
6847
		rt.OFFICIAL = cMode
6848
		WHERE rt.RTAG_ID = nRtagId;
6849
 
6850
	END IF;
6851
 
6852
 
6853
END CHANGE_RELEASE_MODE;
6854
/
6855
 
6856
CREATE OR REPLACE PROCEDURE Remove_Document ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6857
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
6858
                                              nUserId IN NUMBER ) IS
6859
/* ---------------------------------------------------------------------------
6860
    Version: 3.0
6861
   --------------------------------------------------------------------------- */
6862
 
6863
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
6864
 
6865
BEGIN
6866
 
6867
	-- Get Doc Num
6868
    SELECT pd.DOC_NUM INTO DocNumber
6869
      FROM PACKAGE_DOCUMENTS pd
6870
     WHERE pd.PV_ID = nPvId
6871
       AND pd.DOC_ID = nDocId;
6872
 
6873
 
6874
	-- Delete Document
6875
    DELETE
6876
      FROM PACKAGE_DOCUMENTS pd
6877
     WHERE pd.PV_ID = nPvId
6878
       AND pd.DOC_ID = nDocId;
6879
 
6880
 
6881
    /* LOG ACTION */
6882
   	Log_Action ( nPvId, 'document_remove', nUserId,
6883
   			     'Document number: '|| DocNumber );
6884
 
6885
 
6886
END Remove_Document;
6887
/
6888
 
6889
CREATE OR REPLACE PROCEDURE Update_Unit_Test ( nTest_id IN NUMBER,
6890
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6891
											   nPv_id IN NUMBER,
6892
											   nUserId IN NUMBER,
6893
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6894
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6895
	                                           sCompletion_date IN VARCHAR2,
6896
											   sDpkg_path IN VARCHAR2,
6897
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6898
											   sResults IN VARCHAR2,
6899
											   outFileName OUT VARCHAR2
6900
                                              ) IS
6901
/* ---------------------------------------------------------------------------
6902
    Version: 3.1.0
6903
   --------------------------------------------------------------------------- */
6904
 
6905
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6906
 
6907
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6908
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6909
 
6910
 
6911
BEGIN
6912
 
6913
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6914
       	ResultsURL := sResults;
6915
       ELSE
6916
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6917
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6918
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6919
           END IF;
6920
       END IF;
6921
 
6922
	--- Update Unit Test ---
6923
    UPDATE UNIT_TESTS SET
6924
           TEST_SUMMARY = sTest_summary,
6925
		   NUMOF_TEST = sNumof_test,
6926
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6927
		   COMPLETED_BY = nUserId,
6928
		   RESULTS_URL = ResultsURL,
6929
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6930
     WHERE TEST_ID = nTest_id
6931
       AND PV_ID = nPv_id;
6932
 
6933
END Update_Unit_Test;
6934
/
6935
 
6936
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Test ( nTest_id IN NUMBER,
6937
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6938
											   nPv_id IN NUMBER,
6939
											   nUserId IN NUMBER,
6940
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6941
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6942
	                                           sCompletion_date IN VARCHAR2,
6943
											   sDpkg_path IN VARCHAR2,
6944
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6945
											   sResults IN VARCHAR2,
6946
											   outFileName OUT VARCHAR2
6947
                                              ) IS
6948
/* ---------------------------------------------------------------------------
6949
    Version: 3.1.0
6950
   --------------------------------------------------------------------------- */
6951
 
6952
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6953
 
6954
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6955
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6956
 
6957
 
6958
BEGIN
6959
 
6960
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6961
       	ResultsURL := sResults;
6962
       ELSE
6963
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6964
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6965
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6966
           END IF;
6967
       END IF;
6968
 
6969
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6970
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
6971
    		sResults_url:= 'doc' || '/' || 
6972
			;
6973
        END IF;*/
6974
	--- Update Unit Test ---
6975
    UPDATE UNIT_TESTS SET
6976
           TEST_SUMMARY = sTest_summary,
6977
		   NUMOF_TEST = sNumof_test,
6978
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6979
		   COMPLETED_BY = nUserId,
6980
		   RESULTS_URL = ResultsURL,
6981
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6982
     WHERE TEST_ID = nTest_id
6983
       AND PV_ID = nPv_id;
6984
 
6985
END Update_Unit_Test_Test;
6986
/
6987
 
6988
CREATE OR REPLACE PROCEDURE Update_Additional_Note ( pnNote_id IN NUMBER,
6989
													 pnPv_id IN NUMBER,
6990
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
6991
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
6992
                                                     pnUser_id IN NUMBER,
6993
                                                     outErrCode OUT NUMBER
6994
                                                    ) IS
6995
/* ---------------------------------------------------------------------------
6996
    Version: 3.0.1
6997
   --------------------------------------------------------------------------- */
6998
 
6999
    newID NUMBER;
7000
 
7001
    /* Disallow duplicate Note Titles */
7002
	CURSOR an_duplicate_cur IS
7003
        SELECT COUNT(*) AS cnt_note
7004
          FROM ADDITIONAL_NOTES
7005
         WHERE pv_id = pnPv_id
7006
           AND note_id != pnNote_id
7007
           AND note_title = psNote_title;
7008
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
7009
 
7010
BEGIN
7011
	outErrCode := -1;		-- Set default return error code to ERROR state
7012
 
7013
	OPEN an_duplicate_cur;
7014
    FETCH an_duplicate_cur INTO an_duplicate_rec;
7015
 
7016
    IF an_duplicate_rec.cnt_note < 1
7017
    THEN
7018
		--- Update Additional Note ---
7019
	    UPDATE ADDITIONAL_NOTES SET
7020
		       note_title = psNote_title,
7021
		       note_body = psNote_body,
7022
		       mod_date = Ora_Sysdate,
7023
		       mod_user = pnUser_id
7024
         WHERE note_id = pnNote_id
7025
           AND pv_id = pnPv_id;
7026
		outErrCode := 0;		-- Set return to SUCCESS
7027
	END IF;
7028
 
7029
	CLOSE an_duplicate_cur;
7030
END Update_Additional_Note;
7031
/
7032
 
7033
CREATE OR REPLACE FUNCTION GET_V_EXT (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
7034
 
7035
/* ---------------------------------------------------------------------------
7036
    Version: 3.0.0
7037
   --------------------------------------------------------------------------- */
7038
 
7039
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
7040
    lastDot NUMBER;
7041
 
7042
BEGIN
7043
    lastDot := INSTR (SSpkg_version, '.', -1);
7044
 
7045
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
7046
    THEN
7047
        -- YES dot separator found --
7048
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
7049
 
7050
        IF IS_VERSION_EXTENSION ( SSV_EXT )
7051
        THEN
7052
            RETURN SSV_EXT;
7053
        ELSE
7054
            RETURN NULL;
7055
        END IF;
7056
 
7057
    ELSE
7058
        -- NO dot separator found --
7059
        RETURN NULL;
7060
    END IF;
7061
 
7062
END GET_V_EXT;
7063
/
7064
 
7065
CREATE OR REPLACE PROCEDURE Update_Runtime_Dependency ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7066
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7067
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7068
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7069
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7070
													    NNuser_id IN NUMBER ) IS
7071
/* ---------------------------------------------------------------------------
7072
    Version: 3.0.1
7073
   --------------------------------------------------------------------------- */
7074
 
7075
    retRTD_ID	NUMBER;
7076
	CURSOR rtd_cur IS
7077
	    SELECT pv.pkg_version, pkg.pkg_name
7078
		  FROM runtime_dependencies rtd,
7079
		       package_versions pv,
7080
			   packages pkg
7081
		 WHERE rtd.rtd_id = pv.pv_id
7082
		   AND pv.pkg_id = pkg.pkg_id
7083
		   AND rtd.pv_id = NNpv_id
7084
		   AND rtd.rtd_id = NNrtd_id;
7085
	   rtd_rec rtd_cur%ROWTYPE;
7086
 
7087
	CURSOR old_rtd_cur IS
7088
	    SELECT pv.pv_id
7089
		  FROM package_versions pv
7090
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7091
		 	   			 	    FROM package_versions rtdpv
7092
							   WHERE rtdpv.pv_id = NNrtd_id )
7093
		   AND pv.pkg_version = SSrtd_version;
7094
	old_rtd_rec old_rtd_cur%ROWTYPE;
7095
 
7096
 
7097
BEGIN
7098
 
7099
    -- Get current runtime dependency details
7100
	OPEN rtd_cur;
7101
    FETCH rtd_cur INTO rtd_rec;
7102
 
7103
 
7104
 
7105
 
7106
	IF rtd_rec.pkg_version != SSrtd_version THEN
7107
           -- Version has changed, hence create new runtime dependency --
7108
	    /* NOTE: You must create new version as updating just a version will affect
7109
		        all packages using this runtime dependency and user does not expect that.
7110
		        It is safer to create new version */
7111
		OPEN old_rtd_cur;
7112
		FETCH old_rtd_cur INTO old_rtd_rec;
7113
 
7114
 
7115
		IF old_rtd_cur%NOTFOUND
7116
		THEN
7117
			-- Version not found, hence Create New version --
7118
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7119
 
7120
			-- Update runtime dependency table --
7121
			UPDATE runtime_dependencies SET
7122
				   rtd_id = retRTD_ID,
7123
				   rtd_url = SSrtd_url,
7124
				   rtd_comments = SSrtd_comments
7125
			 WHERE pv_id = NNpv_id
7126
			   AND rtd_id = NNrtd_id;
7127
 
7128
		ELSE
7129
			-- Update runtime dependency table --
7130
			UPDATE runtime_dependencies SET
7131
				   rtd_id = old_rtd_rec.pv_id,
7132
				   rtd_url = SSrtd_url,
7133
				   rtd_comments = SSrtd_comments
7134
			 WHERE pv_id = NNpv_id
7135
			   AND rtd_id = NNrtd_id;
7136
 
7137
		END IF;
7138
 
7139
 
7140
		CLOSE old_rtd_cur;
7141
 
7142
	ELSE
7143
		--  Version has not changed, hence update everithing except	version --
7144
		UPDATE runtime_dependencies SET
7145
			   rtd_url = SSrtd_url,
7146
			   rtd_comments = SSrtd_comments
7147
		 WHERE pv_id = NNpv_id
7148
		   AND rtd_id = NNrtd_id;
7149
 
7150
 
7151
 
7152
	END IF;
7153
 
7154
 
7155
	CLOSE rtd_cur;
7156
 
7157
END Update_Runtime_Dependency;
7158
/
7159
 
7160
CREATE OR REPLACE PROCEDURE                 UPDATE_MISC_VIEW IS
7161
/******************************************************************************
7162
   NAME:       UPDATE_MISC_VIEW
7163
   PURPOSE:    
7164
 
7165
   REVISIONS:
7166
   Ver        Date        Author           Description
7167
   ---------  ----------  ---------------  ------------------------------------
7168
   1.0        16/03/2007          1. Created this procedure.
7169
 
7170
   NOTES:
7171
 
7172
   Automatically available Auto Replace Keywords:
7173
      Object Name:     UPDATE_MISC_VIEW
7174
      Sysdate:         16/03/2007
7175
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7176
      Username:         (set in TOAD Options, Procedure Editor)
7177
      Table Name:       (set in the "New PL/SQL Object" dialog)
7178
 
7179
******************************************************************************/
7180
   CURSOR view_cur /*Create a record set to store the ripple data*/
7181
   IS
7182
   	 SELECT pkg.pkg_id, rc.base_view_id 
7183
	 FROM package_versions pv, packages pkg, release_content rc
7184
	 where rc.rtag_id = 2362
7185
	 and rc.pv_id = pv.pv_id
7186
	 and pv.pkg_id = pkg.pkg_id;
7187
   view_rec   view_cur%ROWTYPE;
7188
 
7189
 
7190
 
7191
BEGIN
7192
   OPEN view_cur;
7193
 
7194
   FETCH view_cur
7195
    INTO view_rec;
7196
 
7197
   WHILE view_cur%FOUND
7198
   LOOP
7199
 
7200
 
7201
	   update release_content
7202
	   set base_view_id = view_rec.base_view_id
7203
	   where rtag_id = 8027
7204
	   and pv_id IN 
7205
	   (
7206
	   	select pv.pv_id from release_content rc, package_versions pv
7207
		where rc.rtag_id = 8027
7208
		and pv.pv_id = rc.pv_id
7209
		and pv.pkg_id = view_rec.pkg_id 
7210
 
7211
	   );
7212
 
7213
 
7214
 
7215
 
7216
 
7217
 
7218
 
7219
 
7220
 
7221
   FETCH view_cur
7222
   		 INTO view_rec;
7223
   END LOOP;	 
7224
 
7225
 
7226
 
7227
 
7228
 
7229
END UPDATE_MISC_VIEW;
7230
/
7231
 
7232
CREATE OR REPLACE PACKAGE PK_WORK_IN_PROGRESS IS
7233
/*
7234
------------------------------
7235
||  Last Modified:  S.Vukovic
7236
||  Modified Date:  2/May/2005
7237
||  Spec Version:   1.0
7238
------------------------------
7239
*/
7240
 
7241
	TYPE typeCur IS REF CURSOR;
7242
 
7243
    /*================================================================================================*/
7244
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7245
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7246
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
7247
 
7248
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
7249
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
7250
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
7251
	/*================================================================================================*/
7252
 
7253
END PK_WORK_IN_PROGRESS;
7254
/
7255
 
7256
CREATE OR REPLACE PROCEDURE level_one_conflicts (
7257
   nnrtag_id       IN   NUMBER,
7258
   nnsession_num   IN   NUMBER
7259
)
7260
IS
7261
/* ---------------------------------------------------------------------------
7262
    Version: 3.0.0
7263
   --------------------------------------------------------------------------- */
7264
BEGIN
7265
   /* ---------  LEVEL 1 CONFILCTS -----------
7266
   || Following states are used:
7267
   || 0 -> NOT FOUND
7268
   || 1 -> MAJOR
7269
   || 2 -> MINOR MINOR
7270
   */
7271
   INSERT INTO temp_env_states
7272
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
7273
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
7274
                      DECODE (frc.v_nmm,
7275
                              NULL, 0,
7276
                              errpv.v_nmm, DECODE (frc.v_mm,
7277
                                                   errpv.v_mm, NULL,
7278
                                                   2
7279
                                                  ),
7280
                              1
7281
                             ) AS MESSAGE
7282
                 FROM (
7283
                       /* Full Release Contents used for reference*/
7284
                       SELECT rpv.pkg_id,
7285
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
7286
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
7287
                         FROM release_content rel, package_versions rpv
7288
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
7289
                      (
7290
                       /* DPV_IDs not fount in release*/
7291
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
7292
                         FROM package_dependencies dep
7293
                        WHERE dep.pv_id IN (SELECT pv_id
7294
                                              FROM release_content
7295
                                             WHERE rtag_id = nnrtag_id)
7296
                          AND NOT dep.dpv_id IN (SELECT pv_id
7297
                                                   FROM release_content
7298
                                                  WHERE rtag_id = nnrtag_id)
7299
                       MINUS
7300
                       /* MINUS Dependencies to be ignored */
7301
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
7302
                         FROM ignore_warnings igw
7303
                        WHERE rtag_id = nnrtag_id) err,
7304
                      package_versions errpkg,
7305
                      package_versions errpv
7306
                WHERE err.err_dpv = errpv.pv_id
7307
                  AND errpv.pkg_id = frc.pkg_id(+)
7308
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
7309
                  AND err.pv_id = errpkg.pv_id;
7310
END level_one_conflicts;
7311
/
7312
 
7313
CREATE OR REPLACE PROCEDURE CLONED_PROCESSES
7314
IS
7315
 
7316
proc_id NUMBER;
7317
/******************************************************************************
7318
   NAME:       DELETE_DO_NOT_RIPPLE
7319
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7320
               IS RELEASED
7321
 
7322
   REVISIONS:
7323
   Ver        Date        Author           Description
7324
   ---------  ----------  ---------------  ------------------------------------
7325
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7326
 
7327
   NOTES:
7328
 
7329
   Automatically available Auto Replace Keywords:
7330
      Object Name:     DELETE_DO_NOT_RIPPLE
7331
      Sysdate:         21/04/2006
7332
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7333
      Username:         (set in TOAD Options, Procedure Editor)
7334
      Table Name:       (set in the "New PL/SQL Object" dialog)
7335
 
7336
******************************************************************************/
7337
   CURSOR ripple_cur
7338
   IS
7339
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
7340
 
7341
   ripple_rec   ripple_cur%ROWTYPE;
7342
BEGIN
7343
   OPEN ripple_cur;
7344
 
7345
   FETCH ripple_cur
7346
    INTO ripple_rec;
7347
 
7348
   WHILE ripple_cur%FOUND
7349
   LOOP
7350
 
7351
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
7352
 
7353
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
7354
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
7355
 
7356
      FETCH ripple_cur
7357
       INTO ripple_rec;
7358
   END LOOP;
7359
END CLONED_PROCESSES;
7360
/
7361
 
7362
CREATE OR REPLACE PACKAGE pk_package_Test
7363
IS
7364
/*
7365
------------------------------
7366
||  Last Modified:  Rupesh Solanki
7367
||  Modified Date:  18/05/2006
7368
||
7369
------------------------------
7370
*/
7371
   TYPE typecur IS REF CURSOR;
7372
 
7373
/*================================================================================================*/
7374
   PROCEDURE new_version (
7375
      nlastpvid                   IN       NUMBER,
7376
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7377
      cbuildtype                  IN       CHAR,
7378
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7379
      nrtagid                     IN       NUMBER,
7380
      nuserid                     IN       NUMBER,
7381
      enumissues_state_imported   IN       NUMBER,
7382
      returnpvid                  OUT      NUMBER
7383
   );
7384
 
7385
   PROCEDURE change_state (
7386
      pvid       IN   NUMBER,
7387
      newstate   IN   package_versions.dlocked%TYPE,
7388
      userid     IN   NUMBER
7389
   );
7390
 
7391
   PROCEDURE new_patch (
7392
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
7393
      nparentpvid        IN       NUMBER,
7394
      spatchidlist       IN       VARCHAR2,
7395
      nuserid            IN       NUMBER,
7396
      returnpatchid      OUT      NUMBER
7397
   );
7398
 
7399
   PROCEDURE obsolete_patch (
7400
      patchid            IN   NUMBER,
7401
      isobsolete         IN   CHAR,
7402
      obsoletecomments   IN   VARCHAR2,
7403
      userid             IN   NUMBER
7404
   );
7405
 
7406
   PROCEDURE obsolete_patches (
7407
      spatchidlist       IN   VARCHAR2,
7408
      isobsolete         IN   CHAR,
7409
      obsoletecomments   IN   VARCHAR2,
7410
      userid             IN   NUMBER
7411
   );
7412
 
7413
   PROCEDURE destroy_package (
7414
      pvid               IN       NUMBER,
7415
      overridewarnings   IN       CHAR DEFAULT 'N',
7416
      problemstring      OUT      VARCHAR2
7417
   );
7418
 
7419
   PROCEDURE add_process (
7420
      nprocid         IN   processes.proc_id%TYPE,
7421
      shealthtag      IN   processes.proc_name%TYPE,
7422
      sprocdesc       IN   processes.proc_description%TYPE,
7423
      scmdinterface   IN   processes.run_as%TYPE,
7424
      spkgowner       IN   processes.pkg_owner%TYPE,
7425
      sisinterface    IN   processes.is_interface%TYPE,
7426
      npvid           IN   package_processes.pv_id%TYPE,
7427
      nuserid         IN   NUMBER
7428
   );
7429
 
7430
   PROCEDURE add_package_process (
7431
      nprocidlist   IN   VARCHAR2,
7432
      npvid         IN   package_processes.pv_id%TYPE,
7433
      nuserid       IN   NUMBER
7434
   );
7435
 
7436
 
7437
 
7438
   PROCEDURE remove_process (
7439
      nprocid   IN   package_processes.proc_id%TYPE,
7440
      npvid     IN   package_processes.pv_id%TYPE,
7441
      nuserid   IN   NUMBER
7442
   );
7443
 
7444
   PROCEDURE move_package (
7445
   	  npvid  			  IN package_versions.pv_id%TYPE,
7446
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
7447
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
7448
	  nuserid			  IN NUMBER		 
7449
   ); 
7450
 
7451
PROCEDURE modify_product_state (
7452
   	  npvid IN package_versions.pv_id%TYPE,
7453
	  nstateid IN product_states.state_id%TYPE,
7454
	  nuserid IN NUMBER
7455
   );
7456
/*================================================================================================*/
7457
END pk_package_Test;
7458
/
7459
 
7460
CREATE OR REPLACE PROCEDURE Shift_Install_Order ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
7461
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
7462
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
7463
/* ---------------------------------------------------------------------------
7464
    Version: 3.0
7465
   --------------------------------------------------------------------------- */
7466
 
7467
currInstallOrder NUMBER;
7468
FromInstallOrder NUMBER;
7469
 
7470
BEGIN
7471
 
7472
	 -- Get Current Install Order
7473
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
7474
       FROM PACKAGE_PATCHES pp
7475
      WHERE pp.PV_ID = nPvId
7476
        AND pp.PATCH_ID = nPatchId;
7477
 
7478
 
7479
	 IF currInstallOrder > nToInstallOrder
7480
	 THEN
7481
 
7482
		FromInstallOrder := nToInstallOrder;
7483
 
7484
	    -- Shift others Up
7485
		UPDATE PACKAGE_PATCHES pp SET
7486
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
7487
		 WHERE pp.PV_ID = nPvId
7488
           AND pp.PATCH_ID != nPatchId
7489
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
7490
 
7491
 
7492
	 ELSIF currInstallOrder < nToInstallOrder
7493
	 THEN
7494
 
7495
		FromInstallOrder := currInstallOrder + 1;
7496
 
7497
		-- Shift others Down
7498
        UPDATE PACKAGE_PATCHES pp SET
7499
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
7500
		 WHERE pp.PV_ID = nPvId
7501
           AND pp.PATCH_ID != nPatchId
7502
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
7503
 
7504
	 END IF;
7505
 
7506
 
7507
	 -- Move Patch to new install order
7508
     UPDATE PACKAGE_PATCHES pp SET
7509
		    pp.INSTALL_ORDER = nToInstallOrder
7510
	  WHERE pp.PV_ID = nPvId
7511
	    AND pp.PATCH_ID = nPatchId;
7512
 
7513
 
7514
END Shift_Install_Order;
7515
/
7516
 
7517
CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEAN
7518
IS
7519
   temp_num NUMBER;
7520
/* ---------------------------------------------------------------------------
7521
    Version: 1.0.0
7522
   --------------------------------------------------------------------------- */
7523
BEGIN
7524
   temp_num := TO_NUMBER(p_val);
7525
   RETURN true;
7526
EXCEPTION WHEN VALUE_ERROR THEN
7527
   RETURN false;
7528
END IS_NUMBER;
7529
/
7530
 
7531
CREATE OR REPLACE PROCEDURE Basic_Clone ( nFROMpv_id IN NUMBER,
7532
										  nTOpv_id IN NUMBER,
7533
                                          nRtag_id IN NUMBER,
7534
                                          nUser_id IN NUMBER,
7535
                                          nTOpkg_id IN NUMBER DEFAULT NULL,
7536
                                          enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
7537
/* ---------------------------------------------------------------------------
7538
    Version: 3.5
7539
   --------------------------------------------------------------------------- */
7540
 
7541
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
7542
 
7543
BEGIN
7544
 
7545
------------------------------------- Clone Dependencies ---------------------------------------------------
7546
	IF NOT nRtag_id IS NULL
7547
    THEN
7548
		-- Auto Update Dependencies --
7549
		INSERT INTO PACKAGE_DEPENDENCIES
7550
		    SELECT nTOpv_id AS pv_id,
7551
		           DECODE(nUser_id,
7552
		                  frc.modifier_id,
7553
		                  frc.pv_id,
7554
		                  DECODE(frc.dlocked,
7555
		                         'Y',
7556
		                         frc.pv_id,
7557
		                         dep.dpv_id)
7558
		                  ) AS dpv_id,
7559
		           nTOpkg_id AS pkg_id,
7560
		           dep.dpkg_id,
7561
		           dep.build_type,
7562
				   dep.display_order
7563
		      FROM PACKAGE_DEPENDENCIES dep,
7564
		           PACKAGE_VERSIONS pv,
7565
		           (
7566
		           /* Full Release Contents used for reference*/
7567
		           SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
7568
		           FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
7569
		           WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
7570
		           ) frc
7571
		     WHERE dep.pv_id = nFROMpv_id
7572
		       AND dep.dpv_id = pv.pv_id
7573
		       AND pv.pkg_id = frc.pkg_id(+)
7574
		       AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
7575
 
7576
	ELSE
7577
		-- Clone Dependencies --
7578
		INSERT INTO PACKAGE_DEPENDENCIES
7579
		    SELECT nTOpv_id         AS pv_id,
7580
		           dep.dpv_id,
7581
		           nTOpkg_id        AS pkg_id,
7582
		           dep.dpkg_id,
7583
		           dep.build_type,
7584
				   dep.display_order
7585
		      FROM PACKAGE_DEPENDENCIES dep
7586
		     WHERE dep.pv_id = nFROMpv_id;
7587
 
7588
	END IF;
7589
 
7590
----------------------------------------- Clone Issues -------------------------------------------------------
7591
	IF enumISSUES_STATE_IMPORTED IS NULL
7592
	THEN
7593
        /* All Issues */
7594
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7595
	         SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7596
	           FROM CQ_ISSUES
7597
              WHERE pv_id = nFROMpv_id;
7598
	ELSE
7599
    	/* Outstanding Issues Only */
7600
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7601
	        SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7602
	          FROM CQ_ISSUES
7603
             WHERE pv_id = nFROMpv_id
7604
               AND iss_state = enumISSUES_STATE_IMPORTED;
7605
	END IF;
7606
 
7607
 
7608
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
7609
	INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
7610
	    SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
7611
	    FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
7612
 
7613
 
7614
--------------------------------------- Clone Additional Notes ------------------------------------------------
7615
	INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
7616
    	 SELECT an.NOTE_ID,
7617
                nTOpv_id AS PV_ID,
7618
                an.NOTE_TITLE,
7619
                an.NOTE_BODY,
7620
                an.MOD_DATE,
7621
                an.MOD_USER
7622
           FROM ADDITIONAL_NOTES an
7623
          WHERE an.PV_ID = nFROMpv_id;
7624
 
7625
 
7626
-------------------------------------------- Clone Unit Tests -------------------------------------------------
7627
	-- Clone only Automatic unit tests --
7628
	INSERT INTO UNIT_TESTS (
7629
							TEST_ID,
7630
							PV_ID,
7631
							TEST_TYPES_FK,
7632
							TEST_SUMMARY,
7633
							COMPLETION_DATE,
7634
							COMPLETED_BY,
7635
							RESULTS_URL,
7636
							RESULTS_ATTACHMENT_NAME,
7637
							NUMOF_TEST
7638
							)
7639
    	 SELECT ut.TEST_ID,
7640
                nTOpv_id AS PV_ID,
7641
                ut.TEST_TYPES_FK,
7642
                ut.TEST_SUMMARY,
7643
                Ora_Sysdate AS COMPLETION_DATE,
7644
                nUser_id AS COMPLETED_BY,
7645
                ut.RESULTS_URL,
7646
				ut.RESULTS_ATTACHMENT_NAME,
7647
				ut.NUMOF_TEST
7648
           FROM UNIT_TESTS ut
7649
          WHERE ut.PV_ID = nFROMpv_id
7650
            AND ut.TEST_TYPES_FK IN ( 5, 7 );
7651
 
7652
	-- Clone only Interactive Unit Tests --
7653
	INSERT INTO UNIT_TESTS (
7654
		   				    TEST_ID, 
7655
							PV_ID,
7656
							TEST_TYPES_FK,
7657
							TEST_SUMMARY
7658
							)
7659
		SELECT ut.TEST_ID, 
7660
			   nTOpv_id AS PV_ID,
7661
			   ut.TEST_TYPES_FK,
7662
			   ut.TEST_SUMMARY
7663
		  FROM UNIT_TESTS ut
7664
		 WHERE ut.PV_ID = nFROMpv_id
7665
		   AND ut.TEST_TYPES_FK IN (6);
7666
 
7667
 
7668
-------------------------------------------- Clone Package Documents ------------------------------------------
7669
	INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
7670
    	 SELECT nTOpv_id AS PV_ID,
7671
		 		pd.test_id,
7672
				pd.doc_num,
7673
				pd.doc_id,
7674
                pd.IS_LATEST
7675
           FROM PACKAGE_DOCUMENTS pd
7676
          WHERE pd.PV_ID = nFROMpv_id;
7677
 
7678
-------------------------------------------- Clone Build Environments -----------------------------------------
7679
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
7680
	SELECT nTOpv_id AS PV_ID,
7681
		   pkgbe.BE_ID,
7682
		   pkgbe.BUILD_TYPE
7683
	  FROM PACKAGE_BUILD_ENV pkgbe
7684
	 WHERE pkgbe.PV_ID = nFROMpv_id;
7685
---------------------------------------------Clone Package Build Info------------------------------------------
7686
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
7687
	SELECT nTOpv_id AS PV_ID, 
7688
		   pkgbinfo.BM_ID,
7689
		   pkgbinfo.BSA_ID
7690
	  FROM PACKAGE_BUILD_INFO pkgbinfo
7691
	 WHERE pkgbinfo.PV_ID = nFROMpv_id;
7692
---------------------------------------------Clone Package Version Processes-----------------------------------
7693
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
7694
	SELECT nTOpv_id AS PV_ID,
7695
		   pp.PROC_ID
7696
	  FROM PACKAGE_PROCESSES pp
7697
	  WHERE pp.PV_ID = nFROMpv_id;		   
7698
---------------------------------------------------------------------------------------------------------------
7699
 
7700
	/* LOG ACTION */
7701
    SELECT pv.PKG_VERSION INTO FromVersion
7702
      FROM PACKAGE_VERSIONS pv
7703
     WHERE pv.PV_ID = nFROMpv_id;
7704
 
7705
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
7706
    			 'Details cloned from: '|| FromVersion );
7707
 
7708
---------------------------------------------------------------------------------------------------------------
7709
 
7710
END Basic_Clone;
7711
/
7712
 
7713
CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
7714
/* ---------------------------------------------------------------------------
7715
    Version: 3.0.0
7716
   --------------------------------------------------------------------------- */
7717
 
7718
 
7719
BEGIN
7720
 
7721
	 --- Delete From RELEASE_COMPONENTS
7722
	 DELETE FROM RELEASE_COMPONENTS
7723
	 WHERE PV_ID = nPvId;
7724
 
7725
END Remove_Components;
7726
/
7727
 
7728
CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version   ( nPv_id 				IN NUMBER,
7729
														  sSyncRtagsInList		IN VARCHAR2,
7730
				                                          nUser_id 				IN NUMBER ) IS
7731
/* ---------------------------------------------------------------------------
7732
    Version: 3.0.0
7733
   --------------------------------------------------------------------------- */
7734
 
7735
	CURSOR sync_rtags_cur IS
7736
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
7737
		  FROM release_content rc,
7738
		  	   package_versions pv,
7739
		       package_versions opv
7740
		 WHERE rc.pv_id = pv.pv_id
7741
		   AND opv.pkg_id = pv.pkg_id
7742
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
7743
		   AND opv.pv_id = nPv_id
7744
		   AND rtag_id IN ( SELECT *
7745
		   	   		   	      FROM THE (
7746
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
7747
					       		   	    FROM dual
7748
									   )
7749
						  );
7750
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
7751
 
7752
BEGIN
7753
 
7754
	OPEN sync_rtags_cur;
7755
	FETCH sync_rtags_cur INTO sync_rtags_rec;
7756
 
7757
	WHILE sync_rtags_cur%FOUND
7758
	LOOP
7759
		DELETE FROM RELEASE_CONTENT
7760
		 WHERE rtag_id = sync_rtags_rec.rtag_id
7761
	       AND pv_id = sync_rtags_rec.pv_id;
7762
 
7763
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
7764
	   		   VALUES ( sync_rtags_rec.rtag_id,
7765
		       		  	nPv_id,
7766
						sync_rtags_rec.BASE_VIEW_ID,
7767
	           			Ora_Sysdate,
7768
	           			nUser_id,
7769
 
7770
	      	   		   );
7771
 
7772
-- 		UPDATE RELEASE_CONTENT
7773
-- 	       SET pv_id = nPv_id,
7774
-- 	           insert_stamp = Ora_Sysdate,
7775
-- 	           insertor_id = nUser_id
7776
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
7777
-- 	       AND pv_id = sync_rtags_rec.pv_id;
7778
 
7779
		FETCH sync_rtags_cur INTO sync_rtags_rec;
7780
	END LOOP;
7781
 
7782
	CLOSE sync_rtags_cur;
7783
 
7784
END Sync_Projects_New_Version;
7785
/
7786
 
7787
CREATE OR REPLACE PROCEDURE Set_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7788
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7789
											 nUserId IN NUMBER ) IS
7790
/* ---------------------------------------------------------------------------
7791
    Version: 4.0
7792
   --------------------------------------------------------------------------- */
7793
 
7794
BEGIN
7795
 
7796
    -- Set Advisory Ripple Package
7797
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
7798
	VALUES (nRtagId, nPvId);
7799
 
7800
    /* LOG ACTION */
7801
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
7802
 
7803
	/*Rebuild_Environment(nRtagId);*/
7804
 
7805
END Set_Advisory_Ripple;
7806
/
7807
 
7808
CREATE OR REPLACE PACKAGE pk_project IS
7809
/*
7810
------------------------------
7811
||  Last Modified:  J.Tweddle
7812
||  Modified Date:  23/Aug/2007
7813
||  Spec Version:   1.0
7814
------------------------------
7815
*/
7816
 
7817
    TYPE typecur IS REF CURSOR;
7818
 
7819
    /*------------------------------------------------------------------------*/
7820
    PROCEDURE update_base_url (
7821
        nprojid   IN  projects.proj_id%TYPE,
7822
        sbaseurl  IN  VARCHAR2
7823
    );
7824
    /*------------------------------------------------------------------------*/
7825
 
7826
END pk_project;
7827
/
7828
 
7829
CREATE OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT  (
7830
  sender      IN VARCHAR2,
7831
  recipient   IN VARCHAR2,
7832
  ccrecipient IN VARCHAR2,
7833
  subject     IN VARCHAR2,
7834
  message     IN VARCHAR2
7835
  ) IS
7836
 
7837
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
7838
  connection utl_smtp.connection;
7839
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
7840
  header VARCHAR2(1000);
7841
 
7842
BEGIN
7843
 
7844
  --
7845
  -- Start the connection.
7846
  --
7847
  connection := utl_smtp.open_connection(mailhost,25);
7848
 
7849
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
7850
     'From: '||sender||''||crlf||
7851
  'Subject: '||subject||crlf||
7852
       'To: '||recipient||crlf||
7853
       'CC: '||ccrecipient;
7854
 
7855
  --
7856
  -- Handshake with the SMTP server
7857
  --
7858
  utl_smtp.helo(connection, mailhost);
7859
  utl_smtp.mail(connection, sender);
7860
  utl_smtp.rcpt(connection, recipient);
7861
  utl_smtp.rcpt(connection, ccrecipient);
7862
  utl_smtp.open_data(connection);
7863
  --
7864
  -- Write the header
7865
  --
7866
  utl_smtp.write_data(connection, header);
7867
  --
7868
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
7869
  --
7870
  utl_smtp.write_data(connection, crlf ||message);
7871
  utl_smtp.close_data(connection);
7872
  utl_smtp.quit(connection);
7873
 
7874
EXCEPTION
7875
  WHEN UTL_SMTP.INVALID_OPERATION THEN
7876
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
7877
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
7878
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
7879
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
7880
    dbms_output.put_line(' Errors in code for SMTP transaction.');
7881
 
7882
END RELEASE_MANAGER_MAILOUT;
7883
/
7884
 
7885
CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,
7886
	   	  		  					     retSessionNum OUT NUMBER ) IS
7887
 
7888
/* ---------------------------------------------------------------------------
7889
    Version: 3.0.0
7890
   --------------------------------------------------------------------------- */
7891
    rowCnt 			NUMBER := 0;						-- Iterations counter
7892
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
7893
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
7894
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
7895
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
7896
    sessionNum 		NUMBER;
7897
	levelNum		NUMBER;
7898
 
7899
BEGIN
7900
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
7901
 
7902
	/*
7903
	||	   Start UP THE TREE
7904
	*/
7905
 
7906
 
7907
	/* Packages with no dependencies */    
7908
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7909
		SELECT sessionNum AS SESSION_NUM,
7910
			   iteration AS LEVEL_NUM,
7911
			   UP_THE_TREE AS DIRECTION,
7912
			   rc.pv_id, pv.pkg_id, pv.v_ext
7913
		  FROM release_content rc,
7914
		  	   package_versions pv
7915
		 WHERE rc.rtag_id = nRtag_id
7916
		   AND rc.pv_id = pv.pv_id
7917
		 MINUS
7918
		SELECT sessionNum AS SESSION_NUM, 
7919
			   iteration AS LEVEL_NUM,
7920
			   UP_THE_TREE AS DIRECTION,
7921
			   dep.pv_id, pv.pkg_id, pv.v_ext
7922
		  FROM package_dependencies dep,
7923
		  	   package_versions pv
7924
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
7925
		   AND dep.pv_id = pv.pv_id;
7926
 
7927
 
7928
	/* Browse UP the build tree */	   
7929
	iteration := iteration + 1;
7930
    LOOP
7931
 
7932
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7933
			SELECT DISTINCT 
7934
			       sessionNum AS SESSION_NUM,
7935
			       iteration AS LEVEL_NUM,
7936
				   UP_THE_TREE AS DIRECTION, 
7937
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7938
			  FROM (  
7939
			        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
7940
			          FROM package_dependencies dep,
7941
			               release_content rc,
7942
						   package_versions pv,
7943
						   package_versions dpv
7944
			         WHERE dep.pv_id = rc.pv_id
7945
			           AND rc.rtag_id = nRtag_id
7946
					   AND dep.pv_id = pv.pv_id
7947
					   AND dep.dpv_id = dpv.pv_id
7948
					) rdep,
7949
					temp_tree_browse ttb
7950
			 WHERE rdep.dpkg_id  = ttb.pkg_id
7951
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
7952
			   AND ttb.SESSION_NUM = sessionNum
7953
			   AND ttb.LEVEL_NUM = iteration - 1	
7954
			MINUS
7955
			/* Packages with all depencencies NOT matched */  
7956
			SELECT DISTINCT 
7957
			       sessionNum AS SESSION_NUM,
7958
			       iteration AS LEVEL_NUM, 
7959
				   UP_THE_TREE AS DIRECTION,
7960
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7961
			  FROM (  
7962
			        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
7963
			          FROM package_dependencies dep,
7964
			               release_content rc,
7965
						   package_versions pv,
7966
						   package_versions dpv
7967
			         WHERE dep.pv_id = rc.pv_id
7968
			           AND rc.rtag_id = nRtag_id
7969
					   AND dep.pv_id = pv.pv_id
7970
					   AND dep.dpv_id = dpv.pv_id
7971
					) rdep,
7972
					(
7973
					 SELECT tb.*
7974
					   FROM temp_tree_browse tb
7975
					  WHERE tb.SESSION_NUM = sessionNum
7976
					) ttb
7977
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
7978
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
7979
			   AND ttb.SESSION_NUM IS NULL;
7980
 
7981
		rowCnt := SQL%ROWCOUNT;
7982
		IF rowCnt > 0 THEN
7983
           iteration := iteration + 1;
7984
		END IF;
7985
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
7986
    END LOOP;
7987
 
7988
	/*---------------------------------------------------------------------------------------------------------------------*/
7989
 
7990
	/*     Check for unresolved dependencies
7991
	||  
7992
	*/
7993
	/* UNRESOLVED */
7994
	 SELECT COUNT(*) INTO rowCnt
7995
	   FROM (
7996
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
7997
			  FROM release_content rc,
7998
			  	   package_versions pv
7999
			 WHERE rc.rtag_id = nRtag_id
8000
			   AND rc.pv_id = pv.pv_id	   
8001
			MINUS
8002
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8003
			  FROM temp_tree_browse ttb
8004
			 WHERE ttb.session_num = sessionNum
8005
			);
8006
 
8007
 
8008
 
8009
	 IF rowCnt > 0 
8010
	 THEN
8011
	 	 /*     Circular dependencies detected.
8012
		 ||     Try to resolve build order from the top now.
8013
		 ||		Start DOWN THE TREE
8014
		 */
8015
 
8016
		iteration := 0; 
8017
		 /* Top Level packages */	
8018
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
8019
			SELECT sessionNum AS SESSION_NUM,
8020
			       iteration AS LEVEL_NUM,
8021
				   DOWN_THE_TREE AS DIRECTION,
8022
				   pv.pv_id, pv.pkg_id, pv.v_ext
8023
			  FROM (		   
8024
					/* Packages no one depends on ( Top level packages )*/
8025
					( 
8026
					/* All parents*/ 
8027
					SELECT pv.pkg_id, pv.v_ext
8028
			          FROM package_dependencies dep,
8029
			               release_content rc,
8030
						   package_versions pv
8031
			         WHERE dep.pv_id = rc.pv_id
8032
			           AND rc.rtag_id = nRtag_id
8033
					   AND dep.pv_id = pv.pv_id
8034
					 MINUS
8035
					 /* All children */
8036
					SELECT dpv.pkg_id, dpv.v_ext
8037
			          FROM package_dependencies dep,
8038
			               release_content rc,
8039
						   package_versions dpv
8040
			         WHERE dep.pv_id = rc.pv_id
8041
			           AND rc.rtag_id = nRtag_id
8042
					   AND dep.dpv_id = dpv.pv_id
8043
					 ) 
8044
					 MINUS
8045
					/* Packages with resolved dependencies from UP THE TREE */ 
8046
					SELECT ttb.pkg_id, ttb.v_ext
8047
					  FROM temp_tree_browse ttb
8048
					 WHERE ttb.session_num = sessionNum
8049
				  ) tpkg,
8050
				  package_versions pv,
8051
				  release_content rc
8052
			WHERE rc.rtag_id = nRtag_id
8053
			  AND rc.pv_id = pv.pv_id
8054
			  AND tpkg.pkg_id = pv.pkg_id
8055
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8056
 
8057
 
8058
		 /* Keep taking packages which no one depende on */			  
8059
		 iteration := iteration - 1;  
8060
		 LOOP	  
8061
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8062
					SELECT sessionNum AS SESSION_NUM,
8063
					       iteration AS LEVEL_NUM,
8064
					       DOWN_THE_TREE AS DIRECTION,
8065
					       pv.pv_id, pv.pkg_id, pv.v_ext
8066
					  FROM (		   
8067
					 	/* All Unresolved */
8068
					 	(
8069
					 	SELECT pv.pkg_id, pv.v_ext
8070
					 	  FROM release_content rc,
8071
					 	  	   package_versions pv
8072
					 	 WHERE rc.rtag_id = nRtag_id
8073
					 	   AND rc.pv_id = pv.pv_id	   
8074
					 	MINUS
8075
					 	SELECT ttb.pkg_id, ttb.v_ext
8076
					 	  FROM temp_tree_browse ttb
8077
					 	 WHERE ttb.session_num = sessionNum
8078
					 	)
8079
					 	 MINUS
8080
					 	(  
8081
					 	 /* Children of Unresolved */  
8082
					 	SELECT dpv.pkg_id, dpv.V_EXT
8083
					 	  FROM (
8084
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8085
					 			  FROM release_content rc,
8086
					 			  	   package_versions pv
8087
					 			 WHERE rc.rtag_id = nRtag_id
8088
					 			   AND rc.pv_id = pv.pv_id	   
8089
					 			MINUS
8090
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8091
					 			  FROM temp_tree_browse ttb
8092
					 			 WHERE ttb.session_num = sessionNum
8093
					 		   ) unr,
8094
					 		   package_dependencies dep,
8095
					 		   package_versions dpv
8096
					 	 WHERE unr.pv_id = dep.pv_id
8097
					 	   AND dep.dpv_id = dpv.pv_id
8098
					 	 )  
8099
					   ) tpkg,
8100
					   package_versions pv,
8101
					   release_content rc
8102
					WHERE rc.rtag_id = nRtag_id
8103
					  AND rc.pv_id = pv.pv_id
8104
					  AND tpkg.pkg_id = pv.pkg_id
8105
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8106
 
8107
            rowCnt := SQL%ROWCOUNT;
8108
        	IF rowCnt > 0 THEN
8109
	           iteration := iteration - 1;
8110
			END IF;
8111
            EXIT WHEN (rowCnt < 1);
8112
     	END LOOP;
8113
 
8114
	 END IF;
8115
 
8116
 
8117
	/*---------------------------------------------------------------------------------------------------------------------*/
8118
 
8119
	/* 
8120
	|| 	 Save results from temp table
8121
	*/	
8122
	/* Clean up build_order table */
8123
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
8124
 
8125
	/* Save UP THE TREE */
8126
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8127
		SELECT nRtag_id AS rtag_id,
8128
			   ttb.level_num AS step_num, 
8129
			   ttb.PV_ID
8130
		  FROM temp_tree_browse ttb
8131
		 WHERE ttb.session_num = sessionNum
8132
		   AND ttb.direction = UP_THE_TREE;	
8133
 
8134
	/*Get last step_num */
8135
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
8136
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
8137
 
8138
	/* UNRESOLVED */
8139
	 SELECT COUNT(*) INTO rowCnt
8140
	   FROM (
8141
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8142
			  FROM release_content rc,
8143
			  	   package_versions pv
8144
			 WHERE rc.rtag_id = nRtag_id
8145
			   AND rc.pv_id = pv.pv_id	   
8146
			MINUS
8147
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8148
			  FROM temp_tree_browse ttb
8149
			 WHERE ttb.session_num = sessionNum
8150
			);
8151
 
8152
 
8153
	IF rowCnt > 0
8154
	THEN
8155
		/* Save unresolved packages */
8156
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
8157
		    SELECT  nRtag_id AS rtag_id,
8158
				    levelNum AS step_num, 
8159
				    upv.PV_ID,
8160
					'Y' AS UNRESOLVED
8161
			   FROM (
8162
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8163
					  FROM release_content rc,
8164
					  	   package_versions pv
8165
					 WHERE rc.rtag_id = nRtag_id
8166
					   AND rc.pv_id = pv.pv_id	   
8167
					MINUS
8168
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8169
					  FROM temp_tree_browse ttb
8170
					 WHERE ttb.session_num = sessionNum
8171
					) upv;
8172
	END IF;	
8173
 
8174
	/* Save DOWN THE TREE */
8175
	levelNum := 1000;
8176
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8177
		SELECT nRtag_id AS rtag_id,
8178
			   levelNum + ttb.level_num  AS step_num, 
8179
			   ttb.PV_ID
8180
		  FROM temp_tree_browse ttb
8181
		 WHERE ttb.session_num = sessionNum
8182
		   AND ttb.direction = DOWN_THE_TREE;
8183
 
8184
 
8185
	/*---------------------------------------------------------------------------------------------------------------------*/
8186
 
8187
	/* Clean up temp table */
8188
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
8189
 
8190
	retSessionNum := sessionNum;
8191
END Build_Tree;
8192
/
8193
 
8194
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER2 ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
8195
 
8196
/* ---------------------------------------------------------------------------
8197
    Version: 3.0.0
8198
   --------------------------------------------------------------------------- */
8199
 
8200
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
8201
	pos				   NUMBER;
8202
	in_list			   VARCHAR2(32767) := sInList || ',';
8203
 
8204
BEGIN
8205
 
8206
	IF NOT sInList IS NULL
8207
	THEN
8208
		LOOP
8209
	        EXIT WHEN in_list IS NULL;
8210
	        pos := INSTR ( in_list, ',' );
8211
	        sync_rtags.extend;
8212
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
8213
	        in_list := SUBSTR ( in_list, pos+1 );
8214
		END LOOP;
8215
	END IF;
8216
 
8217
	RETURN sync_rtags;
8218
END IN_LIST_NUMBER2;
8219
/
8220
 
8221
CREATE OR REPLACE PACKAGE pk_buildapi
8222
IS
8223
/*
8224
------------------------------
8225
||  Last Modified:  Rupesh Solanki
8226
||  Modified Date:  26/Jun/2007
8227
||  Spec Version:   3.0
8228
------------------------------
8229
*/
8230
 
8231
   /*================================================================================================*/
8232
   PROCEDURE add_product_component (
8233
      npvid           IN   NUMBER,
8234
      sosname         IN   VARCHAR2,
8235
      sorigfilepath   IN   VARCHAR2,
8236
      sfilename       IN   VARCHAR2,
8237
      sdestfilepath   IN   VARCHAR2,
8238
      nbytesize       IN   NUMBER,
8239
      scrccksum       IN   VARCHAR2
8240
   );
8241
 
8242
   PROCEDURE remove_all_product_components (
8243
      npvid     IN   NUMBER,
8244
      sosname   IN   VARCHAR2
8245
   );
8246
 
8247
/*================================================================================================*/
8248
   FUNCTION get_osid (sosname IN VARCHAR2)
8249
      RETURN NUMBER;
8250
 
8251
/*================================================================================================*/
8252
   PROCEDURE update_build_service (
8253
      sdatabaseserver   IN   VARCHAR2,
8254
      swebserver        IN   VARCHAR2,
8255
      smailserver       IN   VARCHAR2,
8256
      smailsender       IN   VARCHAR2,
8257
      sdiskspace        IN   VARCHAR2,
8258
      ssbommanagement   IN   VARCHAR2
8259
   );
8260
 
8261
/*================================================================================================*/
8262
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
8263
 
8264
/*================================================================================================*/
8265
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
8266
 
8267
/*================================================================================================*/
8268
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
8269
 
8270
/*================================================================================================*/
8271
   PROCEDURE add_daemon (
8272
      sdaemonhostname   IN   VARCHAR2,
8273
      nrtagid           IN   NUMBER,
8274
      ngbeid            IN   NUMBER,
8275
      sgbebuildfilter   IN   VARCHAR2
8276
   );
8277
 
8278
/*================================================================================================*/
8279
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
8280
 
8281
/*================================================================================================*/
8282
   PROCEDURE update_daemon (
8283
      sdaemonhostname   IN   VARCHAR2,
8284
      nrconid           IN   NUMBER,
8285
      ngbeid            IN   NUMBER,
8286
      sgbebuildfilter   IN   VARCHAR2
8287
   );
8288
 
8289
/*================================================================================================*/
8290
   PROCEDURE insert_schedule_info (
8291
      dschedulepause     IN   DATE,
8292
      dscheduleresume    IN   DATE,
8293
      crepeat            IN   VARCHAR2,
8294
      cindefinitepause   IN   VARCHAR2
8295
   );
8296
 
8297
/*================================================================================================*/
8298
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
8299
 
8300
/*================================================================================================*/
8301
   PROCEDURE set_infinite_pause;
8302
 
8303
/*================================================================================================*/
8304
   PROCEDURE set_resume;
8305
 
8306
/*================================================================================================*/
8307
   PROCEDURE delete_out_of_date_schedule;
8308
 
8309
/*================================================================================================*/
8310
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
8311
 
8312
/*================================================================================================*/
8313
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
8314
/*================================================================================================*/
8315
END pk_buildapi;
8316
/
8317
 
8318
CREATE OR REPLACE PROCEDURE Remove_Patch ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
8319
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
8320
                                           nUserId IN NUMBER ) IS
8321
/* ---------------------------------------------------------------------------
8322
    Version: 4.0
8323
   --------------------------------------------------------------------------- */
8324
 
8325
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
8326
 
8327
CURSOR curPatch IS
8328
	SELECT pp.PV_ID,
8329
		   pp.PATCH_ID,
8330
	       ROWNUM AS NEW_INSTALL_ORDER
8331
	  FROM PACKAGE_PATCHES pp
8332
	 WHERE pp.PV_ID = nPvId
8333
	ORDER BY pp.INSTALL_ORDER;
8334
recPatch curPatch%ROWTYPE;
8335
 
8336
BEGIN
8337
 
8338
	 -- Delete Patch
8339
     DELETE
8340
       FROM PACKAGE_PATCHES pp
8341
      WHERE pp.PV_ID = nPvId
8342
        AND pp.PATCH_ID = nPatchId;
8343
 
8344
 
8345
	-- Redo Install Order
8346
    OPEN curPatch;
8347
	FETCH curPatch INTO recPatch;
8348
 
8349
	WHILE curPatch%FOUND
8350
	LOOP
8351
 
8352
		UPDATE PACKAGE_PATCHES pp SET
8353
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
8354
		WHERE pp.PV_ID = nPvId
8355
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
8356
 
8357
		FETCH curPatch INTO recPatch;
8358
	END LOOP;
8359
 
8360
	CLOSE curPatch;
8361
 
8362
 
8363
 
8364
 
8365
    /* LOG ACTION */
8366
    SELECT pv.PKG_VERSION INTO PatchVersion
8367
      FROM PACKAGE_VERSIONS pv
8368
     WHERE pv.PV_ID = nPatchId;
8369
 
8370
   	Log_Action ( nPvId, 'patch_remove', nUserId,
8371
   			     'Version: '|| PatchVersion );
8372
 
8373
END Remove_Patch;
8374
/
8375
 
8376
CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
8377
/
8378
 
8379
CREATE OR REPLACE PROCEDURE Add_Component ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
8380
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
8381
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
8382
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
8383
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
8384
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
8385
                                           ) IS
8386
/* ---------------------------------------------------------------------------
8387
    Version: 3.0.0
8388
   --------------------------------------------------------------------------- */
8389
 
8390
 
8391
BEGIN
8392
 
8393
	 --- Insert into RELEASE_COMPONENTS
8394
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
8395
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
8396
 
8397
 
8398
 
8399
 
8400
END Add_Component;
8401
/
8402
 
8403
CREATE OR REPLACE PROCEDURE ole
8404
IS retval VARCHAR2(40);   
8405
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
8406
DBMS_OUTPUT.PUT_LINE(retval);
8407
/
8408
 
8409
CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,
8410
	   	  		  						 			  nViewId IN NUMBER,
8411
										 			  sUserIdList IN VARCHAR2,
8412
										 			  nUserId IN NUMBER ) IS
8413
 
8414
GroupId NUMBER;													  
8415
 
8416
 
8417
 
8418
/******************************************************************************
8419
   NAME:       UPDATE_VIEW
8420
   PURPOSE:    
8421
 
8422
   REVISIONS:
8423
   Ver        Date        Author           		Description
8424
   ---------  ----------  ---------------  ------------------------------------
8425
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
8426
 
8427
   NOTES:
8428
 
8429
   Automatically available Auto Replace Keywords:
8430
      Object Name:     UPDATE_VIEW
8431
      Sysdate:         10/04/2006
8432
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
8433
      Username:         (set in TOAD Options, Procedure Editor)
8434
      Table Name:       (set in the "New PL/SQL Object" dialog)
8435
 
8436
******************************************************************************/
8437
 
8438
BEGIN
8439
	 SELECT GROUP_EMAIL_ID into GroupId
8440
	 FROM AUTOBUILD_FAILURE
8441
	 WHERE PROJ_ID = nProjId
8442
	 AND VIEW_ID = nViewId;
8443
 
8444
	 DELETE FROM MEMBERS_GROUP
8445
	 WHERE GROUP_EMAIL_ID = GroupId
8446
	 AND USER_ID IN (
8447
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
8448
	 );
8449
 
8450
 
8451
 
8452
END REMOVE_PROJECT_VIEW_OWNER;
8453
/
8454
 
8455
CREATE OR REPLACE PROCEDURE test
8456
IS
8457
 
8458
proc_id NUMBER;
8459
/******************************************************************************
8460
   NAME:       DELETE_DO_NOT_RIPPLE
8461
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8462
               IS RELEASED
8463
 
8464
   REVISIONS:
8465
   Ver        Date        Author           Description
8466
   ---------  ----------  ---------------  ------------------------------------
8467
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8468
 
8469
   NOTES:
8470
 
8471
   Automatically available Auto Replace Keywords:
8472
      Object Name:     DELETE_DO_NOT_RIPPLE
8473
      Sysdate:         21/04/2006
8474
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8475
      Username:         (set in TOAD Options, Procedure Editor)
8476
      Table Name:       (set in the "New PL/SQL Object" dialog)
8477
 
8478
******************************************************************************/
8479
   CURSOR ripple_cur
8480
   IS
8481
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
8482
 
8483
   ripple_rec   ripple_cur%ROWTYPE;
8484
BEGIN
8485
   OPEN ripple_cur;
8486
 
8487
   FETCH ripple_cur
8488
    INTO ripple_rec;
8489
 
8490
   WHILE ripple_cur%FOUND
8491
   LOOP
8492
 
8493
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
8494
 
8495
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
8496
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
8497
 
8498
      FETCH ripple_cur
8499
       INTO ripple_rec;
8500
   END LOOP;
8501
END test;
8502
/
8503
 
8504
CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8505
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
8506
/* ---------------------------------------------------------------------------
8507
    Version: 4.0
8508
   --------------------------------------------------------------------------- */
8509
 
8510
BEGIN
8511
 
8512
    -- Unlock Package
8513
    UPDATE RELEASE_CONTENT rc SET
8514
    	rc.PKG_STATE = 0
8515
    WHERE rc.PV_ID = nPvId
8516
	AND rc.RTAG_ID = nRtagId;
8517
 
8518
    /* LOG ACTION */
8519
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
8520
 
8521
END Change_Package_State;
8522
/
8523
 
8524
CREATE OR REPLACE PACKAGE Rm_Issues AS
8525
 
8526
	TYPE T_Cur IS REF CURSOR;
8527
 
8528
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8529
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
8530
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8531
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
8532
 
8533
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8534
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8535
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
8536
 
8537
END Rm_Issues;
8538
/
8539
 
8540
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
8541
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
8542
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
8543
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
8544
                                            sDpkg_path IN VARCHAR2,
8545
                                            sResults IN VARCHAR2,
8546
                                            sCompletion_date IN VARCHAR2,
8547
                                            nCompleted_by IN NUMBER,
8548
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
8549
											enumTEST_TYPE_NOT_DONE IN NUMBER,
8550
											outFileName OUT VARCHAR2
8551
                                           ) IS
8552
/* ---------------------------------------------------------------------------
8553
    Version: 3.2.0
8554
   --------------------------------------------------------------------------- */
8555
 
8556
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
8557
 
8558
    newID NUMBER;
8559
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
8560
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
8561
 
8562
BEGIN
8563
 
8564
	-- Get new ID --
8565
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
8566
 
8567
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
8568
       	ResultsURL := sResults;
8569
       ELSE
8570
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
8571
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
8572
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
8573
           END IF;
8574
       END IF;
8575
 
8576
	-- Remove NOT_DONE entry if exists
8577
	DELETE FROM UNIT_TESTS
8578
	 WHERE pv_id = nPv_id
8579
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
8580
 
8581
	--- Add Additional Note ---
8582
    INSERT INTO UNIT_TESTS ( TEST_ID,
8583
								PV_ID,
8584
								TEST_TYPES_FK,
8585
								TEST_SUMMARY,
8586
								COMPLETION_DATE,
8587
								COMPLETED_BY,
8588
								RESULTS_URL,
8589
								RESULTS_ATTACHMENT_NAME,
8590
								NUMOF_TEST )
8591
    VALUES (
8592
       	newID,
8593
           nPv_id,
8594
           nTestTypeId,
8595
           sTest_summary,
8596
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
8597
           nCompleted_by,
8598
           ResultsURL,
8599
           ResultsAttachment,
8600
		   sNumOfTest );
8601
 
8602
END New_Unit_Test;
8603
/
8604
 
8605
CREATE OR REPLACE PROCEDURE Ripple_Package (
8606
        sPvIdList IN VARCHAR2,
8607
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
8608
        nUserId IN NUMBER
8609
    ) IS
8610
/* ---------------------------------------------------------------------------
8611
    Version: 4.1
8612
   --------------------------------------------------------------------------- */
8613
 
8614
BEGIN
8615
 
8616
    IF (sPvIdList IS NULL) THEN
8617
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
8618
    END IF;
8619
 
8620
    -- Ripple Package
8621
    DELETE FROM DO_NOT_RIPPLE
8622
    WHERE RTAG_ID = nRtagId
8623
    AND PV_ID IN (
8624
        SELECT *
8625
        FROM THE (
8626
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
8627
            AS RELMGR_NUMBER_TAB_t )
8628
            FROM DUAL
8629
        )
8630
    );
8631
 
8632
    /* LOG ACTION */
8633
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
8634
 
8635
END Ripple_Package;
8636
/
8637
 
8638
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
8639
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
8640
/* ---------------------------------------------------------------------------
8641
    Last Modified: Rupesh Solanki
8642
	Version: 3.0.1
8643
   --------------------------------------------------------------------------- */
8644
 
8645
 
8646
BEGIN
8647
 
8648
   -- Delete Current Build Env settings
8649
   DELETE FROM PACKAGE_BUILD_ENV
8650
   WHERE pv_id = nPvId;
8651
 
8652
   -- Delet Current Package Build Info Settings
8653
   DELETE FROM PACKAGE_BUILD_INFO
8654
   WHERE pv_id = nPvId;
8655
 
8656
   -- Reset flag to N
8657
   UPDATE PACKAGE_VERSIONS SET
8658
	   IS_BUILD_ENV_REQUIRED = 'N'
8659
   WHERE PV_ID = nPvId;
8660
 
8661
 
8662
   -- Set new Build Env
8663
   IF NOT sBuildEnvIdList IS NULL THEN
8664
   	  -- Insert into PACKAGE_BUILD_ENV
8665
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
8666
	  SELECT nPvId AS PV_ID,
8667
	  		 be.BE_ID
8668
	    FROM BUILD_ENVIRONMENTS be
8669
	   WHERE be.BE_ID IN (
8670
	   		 		  	   SELECT *
8671
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8672
	   		 		  	 );
8673
 
8674
   	  -- Insert into PACKAGE_BUILD_INFO
8675
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
8676
	  SELECT nPvId AS PV_ID,
8677
	  		 be.BM_ID
8678
	    FROM BUILD_MACHINES be
8679
	   WHERE be.BM_ID IN (
8680
	   		 		  	   SELECT *
8681
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8682
	   		 		  	 );						 
8683
 
8684
	   -- Set flag to Y
8685
	   UPDATE PACKAGE_VERSIONS SET
8686
		   IS_BUILD_ENV_REQUIRED = 'Y'
8687
	   WHERE PV_ID = nPvId;
8688
 
8689
   END IF;
8690
 
8691
 
8692
END Set_Package_Build_Env;
8693
/
8694
 
8695
CREATE OR REPLACE PROCEDURE Split_Version ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8696
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
8697
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
8698
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
8699
/* ---------------------------------------------------------------------------
8700
    Version: 3.0.0
8701
   --------------------------------------------------------------------------- */
8702
 
8703
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
8704
        INDEX BY BINARY_INTEGER;
8705
 
8706
    version_components VERSION_COMPONENTS_TYPE;
8707
    lastDot NUMBER := 0;
8708
    currDot NUMBER := 0;
8709
 
8710
BEGIN
8711
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
8712
 
8713
    IF ( currDot > 0 )
8714
    THEN
8715
        -- YES dot separator found --
8716
        SSV_EXT := GET_V_EXT( SSpkg_version );
8717
 
8718
        IF NOT SSV_EXT IS NULL
8719
        THEN
8720
            lastDot := currDot;
8721
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
8722
 
8723
            IF ( currDot > 0 )
8724
            THEN
8725
                -- XXXX.M.E
8726
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
8727
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
8728
            ELSE
8729
                -- XXXX.E
8730
                SSV_MM := NULL;
8731
                SSV_NMM := SSpkg_version;
8732
            END IF;
8733
 
8734
        ELSE
8735
            -- XXXX.M
8736
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
8737
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
8738
 
8739
        END IF;
8740
 
8741
    ELSE
8742
        -- NO dot separator found --
8743
        -- XXXXXX
8744
        SSV_MM  := NULL;
8745
        SSV_NMM := SSpkg_version;
8746
        SSV_EXT := NULL;
8747
 
8748
    END IF;
8749
 
8750
END Split_Version;
8751
/
8752
 
8753
CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS
8754
 
8755
/* ---------------------------------------------------------------------------
8756
    Version: 3.0.0
8757
   --------------------------------------------------------------------------- */
8758
 
8759
   returnValue CHAR(1);
8760
 
8761
BEGIN
8762
 
8763
    /*--------------- Business Rules Here -------------------*/
8764
	/*-------------------------------------------------------*/
8765
 
8766
	-- Get release mode
8767
	SELECT rt.OFFICIAL INTO returnValue
8768
	  FROM RELEASE_TAGS rt
8769
	 WHERE rt.RTAG_ID = nRtagId;
8770
 
8771
	RETURN returnValue;
8772
 
8773
END RELEASE_MODE;
8774
/
8775
 
8776
CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
8777
/
8778
 
8779
CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8780
											 nUserId IN NUMBER ) IS
8781
/* ---------------------------------------------------------------------------
8782
    Author: Rupesh Solanki
8783
 
8784
	Version: 4.0
8785
   --------------------------------------------------------------------------- */
8786
   STATE CHAR;
8787
 
8788
BEGIN
8789
 
8790
	SELECT DLOCKED INTO STATE
8791
	FROM PACKAGE_VERSIONS
8792
	WHERE PV_ID = nPvId; 
8793
 
8794
	IF STATE = 'A' THEN --It was made official for autobuilds
8795
		-- Unlock Package
8796
		UPDATE PACKAGE_VERSIONS pv SET
8797
		pv.DLOCKED = 'P'
8798
		WHERE pv.PV_ID = nPvId;	
8799
	ELSE
8800
		-- Unlock Package
8801
		UPDATE PACKAGE_VERSIONS pv SET
8802
		pv.DLOCKED = 'N'
8803
		WHERE pv.PV_ID = nPvId;	
8804
 
8805
	END IF;	   
8806
 
8807
    /* LOG ACTION */
8808
   	Log_Action ( nPvId, 'unlock_package', nUserId );
8809
 
8810
END Unlock_Package;
8811
/
8812
 
53 mhunt 8813
CREATE OR REPLACE PACKAGE                   "PK_PLANNED" IS
51 mhunt 8814
/*
8815
------------------------------
53 mhunt 8816
||  Last Modified:  G.Huddy
8817
||  Modified Date:  28/May/2008
8818
||  Spec Version:   1.1
51 mhunt 8819
------------------------------
8820
*/
8821
 
8822
	TYPE typeCur IS REF CURSOR;
8823
 
8824
    /*================================================================================================*/
8825
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8826
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8827
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 8828
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
51 mhunt 8829
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 8830
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
51 mhunt 8831
	/*================================================================================================*/
8832
 
8833
END PK_PLANNED;
8834
/
8835
 
8836
CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8837
											 nUserId IN NUMBER ) IS
8838
/* ---------------------------------------------------------------------------
8839
    Version: 4.0
8840
   --------------------------------------------------------------------------- */
8841
 
8842
BEGIN
8843
 
8844
    -- Lock Package
8845
    UPDATE PACKAGE_VERSIONS pv SET
8846
    	pv.DLOCKED = 'A'
8847
    WHERE pv.PV_ID = nPvId;
8848
 
8849
    /* LOG ACTION */
8850
   	Log_Action ( nPvId, 'lock_package', nUserId );
8851
END Pending_Package;
8852
/
8853
 
8854
CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)
8855
IS
8856
/******************************************************************************
8857
   NAME:       DELETE_DO_NOT_RIPPLE
8858
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8859
               IS RELEASED
8860
 
8861
   REVISIONS:
8862
   Ver        Date        Author           Description
8863
   ---------  ----------  ---------------  ------------------------------------
8864
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8865
 
8866
   NOTES:
8867
 
8868
   Automatically available Auto Replace Keywords:
8869
      Object Name:     DELETE_DO_NOT_RIPPLE
8870
      Sysdate:         21/04/2006
8871
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8872
      Username:         (set in TOAD Options, Procedure Editor)
8873
      Table Name:       (set in the "New PL/SQL Object" dialog)
8874
 
8875
******************************************************************************/
8876
BEGIN
8877
   DELETE FROM do_not_ripple
8878
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
8879
                                                     FROM release_content
8880
                                                    WHERE rtag_id = nrtagid);
8881
END clean_do_not_ripple;
8882
/
8883
 
8884
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions2 ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
8885
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8886
                                                          NNuser_id IN NUMBER,
8887
                                                          retPV_ID OUT NUMBER,
8888
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
8889
/* ---------------------------------------------------------------------------
8890
    Version: 4.0
8891
   --------------------------------------------------------------------------- */
8892
 
8893
    parPkg_id   NUMBER;
8894
    parPv_id    NUMBER;
8895
    cloneFrom_pv_id NUMBER;
8896
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
8897
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
8898
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
8899
 
8900
    CURSOR packages_cur IS
8901
        SELECT pkg_id FROM PACKAGES
8902
        WHERE pkg_name = SSpkg_name;
8903
    packages_rec packages_cur%ROWTYPE;
8904
 
8905
    CURSOR package_versions_cur IS
8906
        SELECT pv_id FROM PACKAGE_VERSIONS
8907
        WHERE pkg_id = parPkg_id
8908
        AND pkg_version = SSpkg_version;
8909
    package_versions_rec package_versions_cur%ROWTYPE;
8910
 
8911
    CURSOR clone_package_versions_cur IS
8912
        SELECT MAX(pv_id) AS pv_id
8913
          FROM PACKAGE_VERSIONS
8914
         WHERE pkg_id = parPkg_id
8915
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
8916
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
8917
 
8918
BEGIN
8919
    /* -------------------------------------------- */
8920
    /* Find if pkg_name exists and seed if required */
8921
    /* -------------------------------------------- */
8922
    OPEN packages_cur;
8923
    FETCH packages_cur INTO packages_rec;
8924
 
8925
    IF packages_cur%NOTFOUND
8926
    THEN
8927
        /* INSERT into packages table */
8928
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
8929
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
8930
 
8931
    ELSE
8932
        parPkg_id := packages_rec.pkg_id;
8933
 
8934
    END IF;
8935
 
8936
    CLOSE packages_cur;
8937
 
8938
 
8939
 
8940
    /* ---------------------------------------------------- */
8941
    /* Find if package_version exists and seed if required  */
8942
    /* ---------------------------------------------------- */
8943
    OPEN package_versions_cur;
8944
    FETCH package_versions_cur INTO package_versions_rec;
8945
 
8946
    IF package_versions_cur%NOTFOUND
8947
    THEN
8948
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
8949
 
8950
        /* LOG ACTION */
8951
        Log_Action ( parPv_id, 'new_version', NNuser_id,
8952
        			 'New package version: '|| SSpkg_version );
8953
 
8954
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
8955
 
8956
 
8957
 
8958
 
8959
 
8960
            /* CLONE details from similar version  OR  from nCloneFromPvId */
8961
			IF ( NOT nCloneFromPvId IS NULL) THEN
8962
            	cloneFrom_pv_id := nCloneFromPvId;
8963
			ELSE
8964
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
8965
			END IF;
8966
 
8967
            -- Clone Package Version Details --
8968
            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,
8969
                                           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 )
8970
                SELECT parPv_id         AS pv_id,
8971
                       parPkg_id        AS pkg_id,
8972
                       SSpkg_version    AS pkg_version,
8973
                       'N'              AS dlocked,
8974
                       Ora_Sysdate      AS created_stamp,
8975
                       NNuser_id        AS creator_id,
8976
                       Ora_Sysdatetime  AS modified_stamp,
8977
                       NNuser_id        AS modifier_id,
8978
                       SSV_MM           AS V_MM,
8979
                       SSV_NMM          AS V_NMM,
8980
                       SSV_EXT          AS V_EXT,
8981
                       pv.src_path,
8982
                       pv.pv_description,
8983
                       pv.PV_OVERVIEW,
8984
                       cloneFrom_pv_id 	AS LAST_PV_ID,
8985
                       pv.owner_id,
8986
					   pv.BUILD_TYPE,
8987
					   pv.IS_BUILD_ENV_REQUIRED,
8988
					   pv.bs_id,
8989
					   pv.is_autobuildable,
8990
					   pv.IS_DEPLOYABLE,
8991
					   pv.ripple_field
8992
                  FROM PACKAGE_VERSIONS pv
8993
                 WHERE pv.pv_id = cloneFrom_pv_id;
8994
 
8995
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
8996
 
8997
        retPV_ID := parPv_id;
8998
 
8999
    ELSE
9000
        retPV_ID := package_versions_rec.pv_id;
9001
 
9002
    END IF;
9003
 
9004
    CLOSE package_versions_cur;
9005
 
9006
 
9007
 
9008
 
9009
END Seed_Package_Names_Versions2;
9010
/
9011
 
9012
CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) IS
9013
 
9014
    sessionNumber NUMBER := 0;
9015
    iteration NUMBER := 1; 
9016
    rowCnt NUMBER := 0;
9017
    maxIterations 	NUMBER := 50;
9018
 
9019
BEGIN
9020
 
9021
 
9022
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9023
    SELECT sessionNumber, iteration, rc.PV_ID
9024
      FROM RELEASE_CONTENT rc
9025
     WHERE rc.RTAG_ID = nRtag_id;
9026
 
9027
    iteration := iteration + 1;
9028
    LOOP
9029
 
9030
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9031
		SELECT sessionNumber,     
9032
               iteration,
9033
               dep.DPV_ID
9034
          FROM TEMP_TREE_BROWSE ttb,
9035
               PACKAGE_DEPENDENCIES dep
9036
         WHERE dep.PV_ID = ttb.PV_ID 
9037
           AND ttb.LEVEL_NUM = iteration - 1 
9038
 
9039
         MINUS  
9040
 
9041
        SELECT sessionNumber, iteration, ttb.PV_ID
9042
          FROM TEMP_TREE_BROWSE ttb;   
9043
 
9044
 
9045
 
9046
 
9047
		rowCnt := SQL%ROWCOUNT;
9048
		IF rowCnt > 0 THEN
9049
           iteration := iteration + 1;
9050
		END IF;
9051
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
9052
    END LOOP; 
9053
 
9054
END PAOLO_Build_Tree;
9055
/
9056
 
9057
CREATE OR REPLACE PROCEDURE Log_Action_Bulk ( nPvIdList IN VARCHAR2,
9058
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9059
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
9060
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9061
/* ---------------------------------------------------------------------------
9062
    Version: 3.0
9063
   --------------------------------------------------------------------------- */
9064
 
9065
    ActionTypeId NUMBER;
9066
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9067
 
9068
BEGIN
9069
 
9070
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
9071
 
9072
    -- Get Action Type FK
9073
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9074
      FROM ACTION_TYPE act
9075
     WHERE act.NAME = enumActionTypeName;
9076
 
9077
    -- Log Action
9078
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9079
    SELECT nUserId,
9080
    	   ORA_SYSDATETIME,
9081
           pv.PV_ID,
9082
           sAdditionalComments,
9083
           ActionTypeId
9084
      FROM PACKAGE_VERSIONS pv
9085
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
9086
 
9087
 
9088
END Log_Action_Bulk;
9089
/
9090
 
9091
CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSES
9092
IS
9093
 
9094
proc_id NUMBER;
9095
/******************************************************************************
9096
   NAME:       DELETE_DO_NOT_RIPPLE
9097
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
9098
               IS RELEASED
9099
 
9100
   REVISIONS:
9101
   Ver        Date        Author           Description
9102
   ---------  ----------  ---------------  ------------------------------------
9103
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
9104
 
9105
   NOTES:
9106
 
9107
   Automatically available Auto Replace Keywords:
9108
      Object Name:     DELETE_DO_NOT_RIPPLE
9109
      Sysdate:         21/04/2006
9110
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
9111
      Username:         (set in TOAD Options, Procedure Editor)
9112
      Table Name:       (set in the "New PL/SQL Object" dialog)
9113
 
9114
******************************************************************************/
9115
   CURSOR ripple_cur
9116
   IS
9117
      select distinct proc_id, prod_id from deployment_manager.processes_config;
9118
 
9119
   ripple_rec   ripple_cur%ROWTYPE;
9120
BEGIN
9121
   OPEN ripple_cur;
9122
 
9123
   FETCH ripple_cur
9124
    INTO ripple_rec;
9125
 
9126
   WHILE ripple_cur%FOUND
9127
   LOOP
9128
 
9129
 
9130
 
9131
insert into package_processes (PROC_ID, PV_ID) 
9132
values( ripple_rec.proc_id, ripple_rec.prod_id);
9133
 
9134
      FETCH ripple_cur
9135
       INTO ripple_rec;
9136
   END LOOP;
9137
END CLONED_PACKAGE_PROCESSES;
9138
/
9139
 
9140
CREATE OR REPLACE PACKAGE                 pk_rmapi
9141
IS
9142
/*
9143
------------------------------
9144
||  Last Modified:  Jeremy Tweddle
9145
||  Modified Date:  08/Feb/2008
9146
||  Body Version:   3.3
9147
------------------------------
9148
*/
9149
   TYPE typecur IS REF CURSOR;
9150
 
9151
/*================================================================================================*/
9152
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
9153
      RETURN typecur;
9154
 
9155
   FUNCTION wip_iteration_package (
9156
      projname        VARCHAR2,
9157
      iterationname   VARCHAR2,
9158
      pkgname         VARCHAR2
9159
   )
9160
      RETURN typecur;
9161
 
9162
   FUNCTION auto_make_release (
9163
      rtagid                   IN   NUMBER,
9164
      pkgname                  IN   VARCHAR2,
9165
      vext                     IN   VARCHAR2,
9166
      newpkgversion            IN   VARCHAR2,
9167
      label                    IN   VARCHAR2,
9168
      dependenciesimportlist   IN   VARCHAR2,
9169
      isrippled                IN   NUMBER,
9170
      username                 IN   VARCHAR2
9171
   )
9172
      RETURN NUMBER;
9173
 
9174
   PROCEDURE import_dependencies (
9175
      pvid                     IN   NUMBER,
9176
      dependenciesimportlist   IN   VARCHAR2,
9177
      userid                   IN   NUMBER
9178
   );
9179
 
9180
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
9181
      RETURN VARCHAR2;
9182
 
9183
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
9184
      RETURN VARCHAR2;
9185
 
9186
   PROCEDURE update_dash_board (rtagid IN NUMBER);
9187
 
9188
   FUNCTION exclude_from_build (
9189
      pvid          IN   NUMBER,
9190
      spkgversion   IN   VARCHAR2,
9191
      rtagid        IN   NUMBER,
9192
      username      IN   VARCHAR2
9193
   )
9194
      RETURN NUMBER;
9195
 
55 mhunt 9196
   FUNCTION exclude_indirect_from_build (
9197
      pvid          IN   NUMBER,
9198
      spkgversion   IN   VARCHAR2,
9199
      rtagid        IN   NUMBER,
9200
      username      IN   VARCHAR2,
9201
      rootpvid      IN   NUMBER,
9202
      rootcause     IN   VARCHAR2,
9203
      rootfile      IN   VARCHAR2
9204
   )
9205
      RETURN NUMBER;
51 mhunt 9206
/*================================================================================================*/
9207
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
9208
 
9209
   FUNCTION insert_package_metrics (
9210
      rtagid IN NUMBER,
9211
      pkgname IN VARCHAR2,
9212
      vext IN VARCHAR2,
9213
      metricstring IN VARCHAR2
9214
   )
9215
      RETURN NUMBER;
9216
 
9217
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
9218
 
9219
END pk_rmapi;
9220
/
9221
 
9222
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;
9223
/
9224
 
9225
CREATE OR REPLACE PROCEDURE Log_Daemon_Action ( nRconId IN NUMBER,
9226
												 enumActionTypeName IN VARCHAR2,
9227
		                                         nUserId IN NUMBER,
9228
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
9229
/* ---------------------------------------------------------------------------
9230
    Version: 3.0
9231
   --------------------------------------------------------------------------- */
9232
 
9233
    ActionTypeId NUMBER;
9234
 
9235
BEGIN
9236
 
9237
    -- Get Action Type FK
9238
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9239
      FROM ACTION_TYPE act
9240
     WHERE act.NAME = enumActionTypeName;
9241
 
9242
 
9243
    INSERT INTO DAEMON_ACTION_LOG
9244
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
9245
 
9246
 
9247
END Log_Daemon_Action;
9248
/
9249
 
9250
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT_test IS
9251
/*
9252
------------------------------
9253
||  Last Modified:  Rupesh Solanki
9254
||  Modified Date:  29/Jan/2007
9255
||  Spec Version:   1.1
9256
------------------------------
9257
*/
9258
 
9259
	TYPE typeCur IS REF CURSOR;
9260
 
9261
    /*================================================================================================*/
9262
 
9263
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
9264
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9265
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9266
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9267
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9268
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9269
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
9270
 
9271
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9272
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9273
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9274
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9275
 
9276
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
9277
 
9278
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9279
 
9280
 
9281
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9282
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9283
 
9284
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9285
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9286
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9287
 
9288
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
9289
 
9290
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
9291
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
9292
 
9293
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
9294
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
9295
							 CloneFromPvId IN NUMBER );
9296
 
9297
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9298
 
9299
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
9300
 
9301
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9302
 
9303
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
9304
 
9305
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
9306
	/*================================================================================================*/
9307
 
9308
END PK_ENVIRONMENT_test;
9309
/
9310
 
9311
CREATE OR REPLACE PROCEDURE Update_Package_States ( NNrtag_id IN NUMBER,
9312
                                                    NNsession_num IN NUMBER ) IS
9313
/* ---------------------------------------------------------------------------
9314
    Version: 3.0.0
9315
   --------------------------------------------------------------------------- */
9316
 
9317
/* =============  STATE RULES =================== */
9318
/*
9319
   MNR   MRR   MN   MR    |   pkg_state
9320
   ------------------------------------
9321
 
9322
 
9323
 
9324
 
9325
   ------------------------------------
9326
 
9327
 
9328
 
9329
 
9330
   ------------------------------------
9331
    1     0     0     0   |      MINOR_READY
9332
    1     0     0     1   |      MAJOR
9333
    1     0     1     0   |      MINOR
9334
    1     0     1     1   |      MAJOR
9335
   ------------------------------------
9336
    1     1     0     0   |      MAJOR_READY
9337
    1     1     0     1   |      MAJOR
9338
    1     1     1     0   |      MAJOR
9339
    1     1     1     1   |      MAJOR
9340
   ------------------------------------
9341
*/
9342
 
9343
BEGIN
9344
    /*----------------------------------------------
9345
    ||              MINOR READY
9346
    */----------------------------------------------
9347
 
9348
    UPDATE release_content
9349
       SET pkg_state = 4
9350
     WHERE rtag_id = NNrtag_id
9351
       AND pv_id IN
9352
           (
9353
           SELECT DISTINCT pv_id
9354
           FROM temp_env_states
9355
           WHERE session_num = NNsession_num
9356
             AND level_num = 1
9357
             AND tes_state = 2
9358
           );
9359
 
9360
    /*----------------------------------------------
9361
    ||              MAJOR READY
9362
    */----------------------------------------------
9363
    UPDATE release_content
9364
       SET pkg_state = 3
9365
     WHERE rtag_id = NNrtag_id
9366
       AND pv_id IN
9367
           (
9368
           SELECT DISTINCT pv_id
9369
           FROM temp_env_states
9370
           WHERE session_num = NNsession_num
9371
             AND level_num = 1
9372
             AND tes_state IN (0,1)
9373
           );
9374
 
9375
    /*----------------------------------------------
9376
    ||                MINOR
9377
    */----------------------------------------------
9378
    UPDATE release_content
9379
       SET pkg_state = 2
9380
     WHERE rtag_id = NNrtag_id
9381
       AND pv_id IN
9382
           (
9383
           SELECT DISTINCT pv_id
9384
            FROM temp_env_states
9385
            WHERE session_num = NNsession_num
9386
              AND level_num >= 2
9387
              AND tes_state = 2
9388
            MINUS
9389
           SELECT pv_id
9390
             FROM release_content
9391
            WHERE rtag_id = NNrtag_id
9392
              AND pkg_state = 3
9393
           );
9394
 
9395
    /*----------------------------------------------
9396
    ||                MAJOR
9397
    */----------------------------------------------
9398
    UPDATE release_content
9399
       SET pkg_state = 1
9400
     WHERE rtag_id = NNrtag_id
9401
       AND pv_id IN
9402
           (
9403
           SELECT DISTINCT pv_id
9404
           FROM temp_env_states
9405
           WHERE session_num = NNsession_num
9406
             AND level_num >= 2
9407
             AND tes_state IN (0,1)
9408
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
9409
           UNION
9410
           SELECT DISTINCT tes.pv_id
9411
           FROM temp_env_states tes,
9412
                release_content rc
9413
           WHERE tes.session_num = NNsession_num
9414
             AND tes.level_num >= 2
9415
             AND tes.tes_state = 2
9416
             AND rtag_id = NNrtag_id
9417
             AND rc.pv_id = tes.pv_id
9418
             AND rc.pkg_state = 3
9419
           );
9420
 
9421
    /*----------------------------------------------
9422
    ||                 OK
9423
    */----------------------------------------------
9424
    UPDATE release_content
9425
       SET pkg_state = 0
9426
     WHERE rtag_id = NNrtag_id
9427
       AND pv_id IN
9428
           (
9429
           SELECT rc.pv_id
9430
             FROM release_content rc
9431
            WHERE rc.rtag_id = NNrtag_id
9432
              AND NOT rc.pv_id IN
9433
                    (
9434
                     SELECT DISTINCT pv_id
9435
                     FROM temp_env_states WHERE session_num = NNsession_num
9436
                    )
9437
           );
9438
 
9439
 
9440
    /*----------------------------------------------
9441
    ||              ADVISORY RIPPLE - NEW STUFF
9442
    */----------------------------------------------
9443
 /*   UPDATE release_content
9444
       SET pkg_state = 8
9445
     WHERE rtag_id = NNrtag_id
9446
       AND pv_id IN
9447
           (
9448
           SELECT DISTINCT pv_id
9449
           FROM temp_env_states
9450
           WHERE session_num = NNsession_num
9451
             AND level_num = 1
9452
             AND tes_state = 3
9453
           );	*/
9454
 
9455
 
9456
 
9457
    /*----------------------------------------------
9458
    ||              ADVISORY RIPPLE DEPENDANT
9459
    */----------------------------------------------			   
9460
  /*  UPDATE release_content
9461
       SET pkg_state = 9
9462
     WHERE rtag_id = NNrtag_id
9463
       AND pv_id IN
9464
           (
9465
           SELECT DISTINCT pv_id
9466
           FROM temp_env_states
9467
           WHERE session_num = NNsession_num
9468
             AND level_num >= 2
9469
             AND tes_state = 3
9470
           );		*/	   
9471
 
9472
      Update_Deprecation_State (NNrtag_id);
9473
 
9474
END Update_Package_States;
9475
/
9476
 
9477
CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS
9478
 
9479
/******************************************************************************
9480
   NAME:       TO_INSERT_VTREE_ID
9481
   PURPOSE:    
9482
 
9483
   REVISIONS:
9484
   Ver        Date        Author           Description
9485
   ---------  ----------  ---------------  ------------------------------------
9486
   1.0        2/02/2007          1. Created this procedure.
9487
 
9488
   NOTES:
9489
 
9490
   Automatically available Auto Replace Keywords:
9491
      Object Name:     TO_INSERT_VTREE_ID
9492
      Sysdate:         2/02/2007
9493
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
9494
      Username:         (set in TOAD Options, Procedure Editor)
9495
      Table Name:       (set in the "New PL/SQL Object" dialog)
9496
 
9497
******************************************************************************/
9498
VTreeId NUMBER;																			  																	   
9499
 
9500
 
9501
	CURSOR curInfo IS
9502
    SELECT RTAG_ID
9503
	FROM RELEASE_TAGS
9504
	WHERE VTREE_ID IS NULL;
9505
    recInfo curInfo%ROWTYPE;
9506
 
9507
 
9508
BEGIN
9509
 
9510
	OPEN curInfo;
9511
    FETCH curInfo INTO recInfo;
9512
 
9513
	WHILE curInfo%FOUND
9514
	LOOP
9515
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
9516
 
9517
		UPDATE RELEASE_TAGS
9518
		SET VTREE_ID = VTreeId
9519
		WHERE RTAG_ID = recInfo.RTAG_ID;
9520
 
9521
		FETCH curInfo INTO recInfo;
9522
	END LOOP;
9523
 
9524
	CLOSE curInfo;
9525
 
9526
END TO_INSERT_VTREE_ID;
9527
/
9528
 
9529
CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
9530
/
9531
 
9532
CREATE OR REPLACE FUNCTION ORA_SYSDATE
9533
RETURN DATE
9534
IS
9535
/* ---------------------------------------------------------------------------
9536
    Version: 3.0.0
9537
   --------------------------------------------------------------------------- */
9538
BEGIN
9539
 
9540
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
9541
END ORA_SYSDATE;
9542
/
9543
 
9544
CREATE OR REPLACE PROCEDURE Undeprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9545
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9546
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9547
											   	 nUserId IN NUMBER) IS
9548
 
9549
ext VARCHAR2(50);
9550
PvIdList VARCHAR2(32767);
9551
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9552
PvId NUMBER;
9553
sComments VARCHAR2(32767);
9554
 
9555
BEGIN
9556
 
9557
 
9558
 
9559
	--Extract the package extension
9560
	SELECT V_EXT into ext 
9561
	FROM PACKAGE_VERSIONS 
9562
	WHERE PV_ID = nPvId;
9563
 
9564
	--SELECT COMMENTS into sComments 
9565
	--FROM DEPRECATED_PACKAGES
9566
	--WHERE RTAG_ID = nRtagId
9567
	--AND V_EXT = ext
9568
	--AND PKG_ID = nPkgId;
9569
 
9570
	--SELECT PV_ID into PvIdList FROM
9571
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
9572
	--AND PKG_STATE = 6
9573
	--AND PV_ID NOT IN nPvId;
9574
 
9575
 
9576
	IF ext IS NOT NULL THEN
9577
       -- Undeprecate Package
9578
       DELETE FROM DEPRECATED_PACKAGES 
9579
	   WHERE RTAG_ID = nRtagId 
9580
	   AND PKG_ID = nPkgId
9581
	   AND V_EXT = ext;	
9582
 
9583
		UPDATE RELEASE_CONTENT 
9584
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9585
		WHERE RTAG_ID = nRtagId
9586
		AND PV_ID IN (SELECT PV.PV_ID 
9587
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9588
					  WHERE PKG.PKG_ID = PV.PKG_ID
9589
					  AND PKG.PKG_ID = nPkgId
9590
					  AND PV.V_EXT = ext
9591
					  UNION
9592
					  SELECT DISTINCT
9593
	 	 		  	 		   qry.PV_ID
9594
							        FROM (
9595
									 	  SELECT dep.*,
9596
										  LEVEL AS LEVEL_NUM
9597
										  FROM PACKAGE_DEPENDENCIES dep
9598
	 								START WITH dep.DPV_ID IN ( nPvId )
9599
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9600
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9601
	 								) qry,
9602
									PACKAGES pkg,
9603
									PACKAGE_VERSIONS pv,
9604
									RELEASE_CONTENT rc
9605
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9606
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9607
 
9608
					 );	 
9609
 
9610
	ELSE
9611
       -- Undeprecate Package
9612
       DELETE FROM DEPRECATED_PACKAGES 
9613
	   WHERE RTAG_ID = nRtagId 
9614
	   AND PKG_ID = nPkgId
9615
	   AND V_EXT IS NULL;	
9616
 
9617
		UPDATE RELEASE_CONTENT 
9618
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9619
		WHERE RTAG_ID = nRtagId
9620
		AND PV_ID IN (SELECT PV.PV_ID 
9621
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9622
					  WHERE PKG.PKG_ID = PV.PKG_ID
9623
					  AND PKG.PKG_ID = nPkgId
9624
					  AND PV.V_EXT IS NULL
9625
					  UNION
9626
					  SELECT DISTINCT
9627
	 	 		  	 		   qry.PV_ID
9628
							        FROM (
9629
									 	  SELECT dep.*,
9630
										  LEVEL AS LEVEL_NUM
9631
										  FROM PACKAGE_DEPENDENCIES dep
9632
	 								START WITH dep.DPV_ID IN ( nPvId )
9633
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9634
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9635
	 								) qry,
9636
									PACKAGES pkg,
9637
									PACKAGE_VERSIONS pv,
9638
									RELEASE_CONTENT rc
9639
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9640
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9641
 
9642
					 );	 	   
9643
 
9644
	END IF;
9645
 
9646
	--IF PvIdList IS NOT NULL THEN
9647
 
9648
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
9649
 
9650
	 --  FOR i IN 1..nIdCollector.COUNT
9651
	 --  LOOP
9652
	--	   PvId := nIdCollector(i);
9653
 
9654
 
9655
 
9656
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
9657
	--		END LOOP;
9658
	--END IF;
9659
 
9660
	Rebuild_environment(nRtagId);			 
9661
 
9662
 
9663
 
9664
END Undeprecate_Package;
9665
/
9666
 
9667
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Acceptance ( pnTest_id IN NUMBER,
9668
														  pnPv_id IN NUMBER,
9669
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
9670
														  sAcceptanceDate IN VARCHAR2,
9671
														  sAcceptedBy IN NUMBER,
9672
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
9673
														  cUpdateAcceptedStateOnly IN CHAR
9674
					                                     ) IS
9675
/* ---------------------------------------------------------------------------
9676
    Version: 3.0.0
9677
   --------------------------------------------------------------------------- */
9678
 
9679
 
9680
 
9681
BEGIN
9682
	IF cUpdateAcceptedStateOnly = 'Y'
9683
	THEN
9684
		--- Update Accepted State Only ---
9685
		IF ( sAccepted IS NULL )
9686
		THEN
9687
			-- Clear alleptance
9688
			UPDATE UNIT_TESTS SET
9689
		           TEST_ACCEPTED = NULL,
9690
		           ACCEPTANCE_DATE = NULL,
9691
				   ACCEPTED_BY = NULL,
9692
				   REVIEW_COMMENTS = NULL
9693
		     WHERE TEST_ID = pnTest_id
9694
		       AND PV_ID = pnPv_id;
9695
 
9696
	    ELSE
9697
			UPDATE UNIT_TESTS SET
9698
		           TEST_ACCEPTED = sAccepted,
9699
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9700
				   ACCEPTED_BY = sAcceptedBy
9701
		     WHERE TEST_ID = pnTest_id
9702
		       AND PV_ID = pnPv_id;
9703
 
9704
		END IF;
9705
 
9706
 
9707
	ELSE
9708
		--- Update Unit Test Acceptance ---
9709
	    UPDATE UNIT_TESTS SET
9710
	           TEST_ACCEPTED = sAccepted,
9711
			   REVIEW_COMMENTS = sReviewComments,
9712
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9713
			   ACCEPTED_BY = sAcceptedBy
9714
	     WHERE TEST_ID = pnTest_id
9715
	       AND PV_ID = pnPv_id;
9716
 
9717
	END IF;
9718
 
9719
END Update_Unit_Test_Acceptance;
9720
/
9721
 
9722
CREATE OR REPLACE PROCEDURE New_Version ( NNorig_pv_id IN NUMBER,
9723
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
9724
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
9725
                                          NNrtag_id IN NUMBER,
9726
                                          NNuser_id IN NUMBER,
9727
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
9728
                                          retPv_id OUT NUMBER ) IS
9729
 
9730
 
9731
  TO BE REMOVED   !!!										  
9732
 
9733
 
9734
 
9735
 
9736
/* ---------------------------------------------------------------------------
9737
    Version: 3.3
9738
   --------------------------------------------------------------------------- */
9739
 
9740
    ReleaseLocation VARCHAR2(4000);
9741
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
9742
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
9743
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
9744
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
9745
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
9746
    nIssuesTypes NUMBER;
9747
 
9748
    CURSOR package_versions_cur IS
9749
        SELECT pv.pv_id, pv.is_patch
9750
          FROM PACKAGE_VERSIONS pv
9751
         WHERE pv.pkg_version = SSpkg_version
9752
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
9753
    package_versions_rec package_versions_cur%ROWTYPE;
9754
 
9755
    CURSOR clone_package_versions_cur IS
9756
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
9757
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
9758
 
9759
BEGIN
9760
	IF NNsetto_pv_id IS NULL
9761
    THEN
9762
		-- SetToPv_id is not supplied, hence proceed.
9763
 
9764
	    /* ---------------------------------------------------- */
9765
	    /* Find id package_version exists                       */
9766
	    /* ---------------------------------------------------- */
9767
 
9768
	    OPEN package_versions_cur;
9769
	    FETCH package_versions_cur INTO package_versions_rec;
9770
 
9771
	    IF package_versions_cur%NOTFOUND
9772
	    THEN
9773
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
9774
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9775
 
9776
	        OPEN clone_package_versions_cur;
9777
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
9778
	        origPkg_id := clone_package_versions_rec.pkg_id;
9779
	        origDlocked := clone_package_versions_rec.dlocked;
9780
	        CLOSE clone_package_versions_cur;
9781
 
9782
	        -- Clone Package Version Details --
9783
	        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,
9784
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
9785
	            SELECT retPv_id         AS pv_id,
9786
	                   origPkg_id       AS pkg_id,
9787
	                   SSpkg_version    AS pkg_version,
9788
	                   'N'              AS dlocked,
9789
	                   Ora_Sysdate      AS created_stamp,
9790
	                   NNuser_id        AS creator_id,
9791
	                   Ora_Sysdatetime  AS modified_stamp,
9792
	                   NNuser_id        AS modifier_id,
9793
	                   SSV_MM           AS V_MM,
9794
	                   SSV_NMM          AS V_NMM,
9795
	                   SSV_EXT          AS V_EXT,
9796
	                   pv.src_path,
9797
	                   pv.pv_description,
9798
                       pv.PV_OVERVIEW,
9799
                       NNorig_pv_id 	AS LAST_PV_ID,
9800
	                   pv.owner_id,
9801
					   pv.IS_DEPLOYABLE,
9802
					   pv.IS_BUILD_ENV_REQUIRED
9803
	              FROM PACKAGE_VERSIONS pv
9804
	             WHERE pv.pv_id = NNorig_pv_id;
9805
 
9806
 
9807
	        -- Set Issues Type for cloning ---
9808
	        IF origDlocked = 'Y'
9809
	        THEN
9810
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
9811
	        ELSE
9812
            	nIssuesTypes := NULL;
9813
	        END IF;
9814
 
9815
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
9816
 
9817
 
9818
 
9819
	    ELSE
9820
	        retPv_id := package_versions_rec.pv_id;
9821
 
9822
	    END IF;
9823
 
9824
        CLOSE package_versions_cur;
9825
 
9826
	ELSE
9827
    	retPv_id := NNsetto_pv_id;
9828
    END IF;
9829
 
9830
 
9831
    /* ---------------------------------------------------- */
9832
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
9833
    /* ---------------------------------------------------- */
9834
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
9835
	    UPDATE RELEASE_CONTENT
9836
	       SET pv_id = retPv_id,
9837
	           insert_stamp = Ora_Sysdate,
9838
	           insertor_id = NNuser_id
9839
	     WHERE rtag_id = NNrtag_id
9840
	       AND pv_id = NNorig_pv_id;
9841
 
9842
        /* LOG ACTION */
9843
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9844
		  FROM PROJECTS proj,
9845
		  	   VTREES vt,
9846
		       RELEASE_TAGS rt
9847
		 WHERE rt.VTREE_ID = vt.VTREE_ID
9848
		   AND vt.PROJ_ID = proj.PROJ_ID
9849
		   AND rt.RTAG_ID = NNrtag_id;
9850
 
9851
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
9852
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
9853
 
9854
	END IF;
9855
 
9856
 
9857
END New_Version;
9858
/
9859
 
9860
CREATE OR REPLACE PROCEDURE Reset_Ignore_Warnings ( sPvIdList IN VARCHAR2,
9861
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
9862
/* ---------------------------------------------------------------------------
9863
    Version: 5.0
9864
   --------------------------------------------------------------------------- */
9865
 
9866
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9867
 
9868
BEGIN
9869
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
9870
 
9871
    -- Remove Ignore Warnings
9872
     DELETE
9873
       FROM ignore_warnings
9874
	  WHERE (rtag_id, pv_id, dpv_id) IN
9875
	     (
9876
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
9877
	        FROM ignore_warnings igw,
9878
	             package_versions dpv,
9879
	             package_versions pv
9880
	       WHERE igw.dpv_id = dpv.pv_id
9881
	         AND igw.rtag_id = nRTagId
9882
	         AND dpv.pkg_id = pv.pkg_id
9883
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
9884
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
9885
         );
9886
 
9887
END Reset_Ignore_Warnings;
9888
/
9889
 
9890
CREATE OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)IS
9891
Auto CHAR;
9892
/******************************************************************************
9893
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
9894
   PURPOSE:    
9895
 
9896
   REVISIONS:
9897
   Ver        Date        Author           Description
9898
   ---------  ----------  ---------------  ------------------------------------
9899
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
9900
 
9901
   NOTES:
9902
 
9903
   Automatically available Auto Replace Keywords:
9904
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
9905
      Sysdate:         14/12/2006
9906
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
9907
      Username:         (set in TOAD Options, Procedure Editor)
9908
      Table Name:       (set in the "New PL/SQL Object" dialog)
9909
 
9910
******************************************************************************/
9911
BEGIN
9912
 
9913
	 SELECT IS_AUTOBUILDABLE into Auto
9914
	 FROM PACKAGE_VERSIONS 
9915
	 WHERE PV_ID = nPvId;
9916
 
9917
	 IF Auto = 'N' Then
9918
 
9919
	 	UPDATE PACKAGE_VERSIONS
9920
	 	SET IS_AUTOBUILDABLE = 'Y'
9921
	 	WHERE PV_ID = nPvId;
9922
 
9923
 
9924
	 	/* LOG ACTION */
9925
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
9926
 
9927
	 Else
9928
 
9929
		 UPDATE PACKAGE_VERSIONS
9930
		 SET IS_AUTOBUILDABLE = 'N'
9931
		 WHERE PV_ID = nPvId;
9932
 
9933
 
9934
	 	 /* LOG ACTION */
9935
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
9936
 
9937
	 End If;
9938
 
9939
 
9940
 
9941
 
9942
 
9943
 
9944
 
9945
 
9946
END SWITCH_REPRODUCIBLE_PACKAGE;
9947
/
9948
 
9949
CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,
9950
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
9951
												  	nUserId IN NUMBER
9952
	   	  		  									) IS
9953
 
9954
/******************************************************************************
9955
   NAME:       REMOVE_PACKAGE_INTEREST
9956
   PURPOSE:    To remove interest in a given package per project
9957
 
9958
   REVISIONS:
9959
   Ver        Date        Author           Description
9960
   ---------  ----------  ---------------  ------------------------------------
9961
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
9962
 
9963
   NOTES:
9964
 
9965
   Automatically available Auto Replace Keywords:
9966
      Object Name:     REMOVE_PACKAGE_INTEREST
9967
      Sysdate:         12/05/2006
9968
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
9969
      Username:         (set in TOAD Options, Procedure Editor)
9970
      Table Name:       (set in the "New PL/SQL Object" dialog)
9971
 
9972
******************************************************************************/
9973
BEGIN
9974
 
9975
	 --Delete from PACKAGE_INTEREST
9976
	 DELETE FROM PACKAGE_INTEREST
9977
	 WHERE PROJ_ID = nProjId
9978
	 AND PKG_ID = nPkgId
9979
	 AND USER_ID = nUserId;
9980
 
9981
END REMOVE_PACKAGE_INTEREST;
9982
/
9983
 
9984
CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
9985
/* ---------------------------------------------------------------------------
9986
    Version: 3.0
9987
   --------------------------------------------------------------------------- */
9988
 
9989
 
9990
BEGIN
9991
 
9992
	 -- Touch Release for Rebuild
9993
     UPDATE RELEASE_TAGS rt SET
9994
     	rt.REBUILD_ENV = 'Y',
9995
        rt.REBUILD_STAMP = 0
9996
      WHERE rt.RTAG_ID = nRtagId;
9997
 
9998
	COMMIT;	  
9999
 
10000
END Touch_Release;
10001
/
10002
 
10003
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
10004
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
10005
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
10006
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
10007
/* ---------------------------------------------------------------------------
10008
    Version: 3.0
10009
   --------------------------------------------------------------------------- */
10010
 
10011
    ActionTypeId NUMBER;
10012
 
10013
BEGIN
10014
 
10015
    -- Get Action Type FK
10016
    SELECT act.ACTTYPE_ID INTO ActionTypeId
10017
      FROM ACTION_TYPE act
10018
     WHERE act.NAME = enumActionTypeName;
10019
 
10020
 
10021
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
10022
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
10023
 
10024
 
10025
END Log_Action;
10026
/
10027
 
10028
CREATE OR REPLACE PACKAGE BODY pk_package
10029
IS
10030
/*
10031
------------------------------
10032
||  Last Modified:  J. Tweddle
10033
||  Modified Date:  24/08/2007
10034
||  Body Version:   1.8
10035
------------------------------
10036
*/
10037
 
10038
   /*-------------------------------------------------------------------------------------------------------*/
10039
   PROCEDURE new_version (
10040
      nlastpvid                   IN       NUMBER,
10041
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
10042
      cbuildtype                  IN       CHAR,
10043
      nsettopvid                  IN       NUMBER DEFAULT NULL,
10044
      nrtagid                     IN       NUMBER,
10045
      nuserid                     IN       NUMBER,
10046
      enumissues_state_imported   IN       NUMBER,
10047
      returnpvid                  OUT      NUMBER
10048
   )
10049
   IS
10050
      origpkg_id                   package_versions.pkg_id%TYPE;
10051
      origdlocked                  package_versions.dlocked%TYPE;
10052
      ssv_mm                       package_versions.v_mm%TYPE;
10053
      ssv_nmm                      package_versions.v_nmm%TYPE;
10054
      ssv_ext                      package_versions.v_ext%TYPE;
10055
      spackageversion              VARCHAR2 (4000);
10056
      nissuestypes                 NUMBER;
10057
      nviewid                      NUMBER;
10058
      reccount                     NUMBER;
10059
      isreleased                   package_versions.dlocked%TYPE       := 'N';
10060
      slabel                       VARCHAR2 (4000)                    := NULL;
10061
 
10062
      CURSOR package_versions_cur
10063
      IS
10064
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
10065
           FROM package_versions pv
10066
          WHERE pv.pkg_version = snewpkgversion
10067
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
10068
                                         FROM package_versions origpv
10069
                                        WHERE origpv.pv_id = nlastpvid);
10070
 
10071
      package_versions_rec         package_versions_cur%ROWTYPE;
10072
 
10073
      CURSOR clone_package_versions_cur
10074
      IS
10075
         SELECT DISTINCT pkg_id, dlocked
10076
                    FROM package_versions
10077
                   WHERE pv_id = nlastpvid;
10078
 
10079
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
10080
   BEGIN
10081
      spackageversion := snewpkgversion;
10082
 
10083
      IF nsettopvid IS NULL
10084
      THEN
10085
         -- SetToPv_id is not supplied, hence proceed.
10086
 
10087
         /* ---------------------------------------------------- */
10088
/* Find id package_version exists                       */
10089
/* ---------------------------------------------------- */
10090
         OPEN package_versions_cur;
10091
 
10092
         FETCH package_versions_cur
10093
          INTO package_versions_rec;
10094
 
10095
         IF package_versions_cur%NOTFOUND
10096
         THEN
10097
            ---  Create brand new package ---
10098
            SELECT seq_pv_id.NEXTVAL
10099
              INTO returnpvid
10100
              FROM DUAL;
10101
 
10102
            -- Split Version to get extention + other
10103
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
10104
 
10105
            -- Get previous package to clone from
10106
            OPEN clone_package_versions_cur;
10107
 
10108
            FETCH clone_package_versions_cur
10109
             INTO clone_package_versions_rec;
10110
 
10111
            origpkg_id := clone_package_versions_rec.pkg_id;
10112
            origdlocked := clone_package_versions_rec.dlocked;
10113
 
10114
            CLOSE clone_package_versions_cur;
10115
 
10116
            -- Automated built config
10117
            IF (cbuildtype = 'A')
10118
            THEN
10119
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
10120
                                    -- Make sure that version is still unique
10121
            END IF;
10122
 
10123
            -- Clone Package Version Details --
10124
            INSERT INTO package_versions
10125
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
10126
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
10127
                         v_ext, src_path, pv_description, pv_overview,
10128
                         last_pv_id, owner_id, is_deployable,
10129
                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
10130
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
10131
                      spackageversion AS pkg_version, 'N' AS dlocked,
10132
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
10133
                      ora_sysdatetime AS modified_stamp,
10134
                      nuserid AS modifier_id, ssv_mm AS v_mm,
10135
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
10136
                      pv.pv_description, pv.pv_overview,
10137
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
10138
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
10139
                 FROM package_versions pv
10140
                WHERE pv.pv_id = nlastpvid;
10141
 
10142
            -- Set Issues Type for cloning ---
10143
            IF origdlocked = 'Y'
10144
            THEN
10145
               nissuestypes := enumissues_state_imported;
10146
            ELSE
10147
               nissuestypes := NULL;
10148
            END IF;
10149
 
10150
            -- Update Label for automated built
10151
            IF (cbuildtype = 'A')
10152
            THEN
10153
               slabel := get_automated_label (returnpvid);
10154
 
10155
               UPDATE package_versions pv
10156
                  SET pv.pkg_label = slabel
10157
                WHERE pv.pv_id = returnpvid;
10158
            END IF;
10159
 
10160
            basic_clone (nlastpvid,
10161
                         returnpvid,
10162
                         nrtagid,
10163
                         nuserid,
10164
                         origpkg_id,
10165
                         nissuestypes
10166
                        );
10167
         ELSE
10168
            --- Package already exists, hence reuse ---
10169
            returnpvid := package_versions_rec.pv_id;
10170
            isreleased := package_versions_rec.dlocked;
10171
         END IF;
10172
 
10173
         CLOSE package_versions_cur;
10174
      ELSE
10175
         returnpvid := nsettopvid;
10176
      END IF;
10177
   END new_version;
10178
 
10179
/*-------------------------------------------------------------------------------------------------------*/
10180
   PROCEDURE change_state (
10181
      pvid       IN   NUMBER,
10182
      newstate   IN   package_versions.dlocked%TYPE,
10183
      userid     IN   NUMBER
10184
   )
10185
   IS
10186
   BEGIN
10187
      -- Set package in Released mode
10188
      UPDATE package_versions pv
10189
         SET pv.dlocked = newstate,
10190
             pv.modified_stamp = ora_sysdatetime,
10191
             pv.modifier_id = userid
10192
       WHERE pv.pv_id = pvid;
10193
 
10194
      -- Log action --
10195
      IF newstate = 'Y'
10196
      THEN
10197
         -- RELEASED --
10198
         log_action (pvid,
10199
                     'makeofficial',
10200
                     userid,
10201
                     'Package state change to: Released'
10202
                    );
10203
      ELSIF newstate = 'N'
10204
      THEN
10205
         -- UNLOCKED --
10206
         log_action (pvid,
10207
                     'makeunofficial',
10208
                     userid,
10209
                     'Package state change to: Ulocked'
10210
                    );
10211
      ELSIF newstate = 'P'
10212
      THEN
10213
         -- PENDING APPROVAL --
10214
         log_action (pvid,
10215
                     'add_to_planned',
10216
                     userid,
10217
                     'Package state change to: Pending Approval'
10218
                    );
10219
      ELSIF newstate = 'R'
10220
      THEN
10221
         -- REJECTED --
10222
         log_action (pvid,
10223
                     'reject_package',
10224
                     userid,
10225
                     'Package state change to: Rejected'
10226
                    );
10227
      ELSIF newstate = 'A'
10228
      THEN
10229
         -- APPROVED --
10230
         log_action (pvid,
10231
                     'approve_package',
10232
                     userid,
10233
                     'Package state change to: Approved'
10234
                    );
10235
      END IF;
10236
   END;
10237
 
10238
/*-------------------------------------------------------------------------------------------------------*/
10239
   PROCEDURE destroy_package (
10240
      pvid               IN       NUMBER,
10241
      overridewarnings   IN       CHAR DEFAULT 'N',
10242
      problemstring      OUT      VARCHAR2
10243
   )
10244
   IS
10245
      LOCKED     CHAR;
10246
      pkgid      NUMBER;
10247
      ROWCOUNT   NUMBER;
10248
   BEGIN
10249
      /*
10250
      || This will destroy all package details from database.
10251
      || It will only be used to remove unwanted work in progress packages,
10252
      || or mestaken versions
10253
      */
10254
 
10255
      /*--------------- Business Rules Here -------------------*/
10256
      problemstring := NULL;
10257
 
10258
      IF overridewarnings = 'N'
10259
      THEN
10260
         -- Package must not be official
10261
         SELECT pv.dlocked
10262
           INTO LOCKED
10263
           FROM package_versions pv
10264
          WHERE pv.pv_id = pvid;
10265
 
10266
         IF LOCKED = 'Y'
10267
         THEN
10268
            problemstring :=
10269
                  problemstring
10270
               || '- Package is locked and released.'
10271
               || UTL_TCP.crlf;
10272
         END IF;
10273
 
10274
         -- Cannot remove if used in BOMs
10275
         SELECT COUNT (osc.prod_id)
10276
           INTO ROWCOUNT
10277
           FROM deployment_manager.os_contents osc
10278
          WHERE osc.prod_id = pvid;
10279
 
10280
         IF ROWCOUNT > 0
10281
         THEN
10282
            problemstring :=
10283
                  problemstring
10284
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
10285
               || UTL_TCP.crlf;
10286
         END IF;
10287
 
10288
         -- Cannot remove if Referenced as build dependency
10289
         SELECT COUNT (dep.pv_id)
10290
           INTO ROWCOUNT
10291
           FROM package_dependencies dep
10292
          WHERE dep.dpv_id = pvid;
10293
 
10294
         IF ROWCOUNT > 0
10295
         THEN
10296
            problemstring :=
10297
                  problemstring
10298
               || '- Package is referenced by other package as build dependency.'
10299
               || UTL_TCP.crlf;
10300
         END IF;
10301
 
10302
         -- Cannot remove if Referenced as runtime dependency
10303
         SELECT COUNT (rd.pv_id)
10304
           INTO ROWCOUNT
10305
           FROM runtime_dependencies rd
10306
          WHERE rd.rtd_id = pvid;
10307
 
10308
         IF ROWCOUNT > 0
10309
         THEN
10310
            problemstring :=
10311
                  problemstring
10312
               || '- Package is referenced by other package as runtime dependency.'
10313
               || UTL_TCP.crlf;
10314
         END IF;
10315
 
10316
         -- Cannot remove if Referenced as patch
10317
         SELECT COUNT (pp.pv_id)
10318
           INTO ROWCOUNT
10319
           FROM package_patches pp
10320
          WHERE pp.patch_id = pvid;
10321
 
10322
         IF ROWCOUNT > 0
10323
         THEN
10324
            problemstring :=
10325
                  problemstring
10326
               || '- Package is used as patch by other package.'
10327
               || UTL_TCP.crlf;
10328
         END IF;
10329
      END IF;
10330
 
10331
/*-------------------------------------------------------*/
10332
      IF (problemstring IS NULL)
10333
      THEN
10334
         --- Remove From Work in Progress
10335
         DELETE FROM work_in_progress wip
10336
               WHERE wip.pv_id = pvid;
10337
 
10338
         --- Remove From Pending
10339
         DELETE FROM planned pl
10340
               WHERE pl.pv_id = pvid;
10341
 
10342
         --- Remove From Released area
10343
         DELETE FROM release_content rc
10344
               WHERE rc.pv_id = pvid;
10345
 
10346
         ---Remove From Package Processes
10347
         DELETE FROM package_processes pp
10348
               WHERE pp.pv_id = pvid;
10349
 
10350
         --- Remove Dependencies
10351
         DELETE FROM package_dependencies dep
10352
               WHERE dep.pv_id = pvid;
10353
 
10354
         DELETE FROM package_dependencies dep
10355
               WHERE dep.dpv_id = pvid;
10356
 
10357
         --- Remove Runtime dependencies
10358
         DELETE FROM runtime_dependencies rtd
10359
               WHERE rtd.pv_id = pvid;
10360
 
10361
         DELETE FROM runtime_dependencies rtd
10362
               WHERE rtd.rtd_id = pvid;
10363
 
10364
         --- Remove components
10365
         DELETE FROM product_components pc
10366
               WHERE pc.pv_id = pvid;
10367
 
10368
         DELETE FROM release_components rc
10369
               WHERE rc.pv_id = pvid;
10370
 
10371
         --- Remove From Notification History
10372
         DELETE FROM notification_history nh
10373
               WHERE nh.pv_id = pvid;
10374
 
10375
         --- Remove From Ignore Warnings
10376
         DELETE FROM ignore_warnings iw
10377
               WHERE iw.pv_id = pvid;
10378
 
10379
         --- Remove From Additional Notes
10380
         DELETE FROM additional_notes an
10381
               WHERE an.pv_id = pvid;
10382
 
10383
         --- Remove From CQ Issues
10384
         DELETE FROM cq_issues cq
10385
               WHERE cq.pv_id = pvid;
10386
 
10387
         --- Remove from Package Patches
10388
         DELETE FROM package_patches pp
10389
               WHERE pp.pv_id = pvid;
10390
 
10391
         DELETE FROM package_patches pp
10392
               WHERE pp.patch_id = pvid;
10393
 
10394
         --- Remove From Package Documents
10395
         DELETE FROM package_documents pd
10396
               WHERE pd.pv_id = pvid;
10397
 
10398
         --- Remove from Code Review
10399
         DELETE FROM code_reviews cr
10400
               WHERE cr.pv_id = pvid;
10401
 
10402
         --- Remove from Code Review URL
10403
         DELETE FROM code_review_url cru
10404
               WHERE cru.pv_id = pvid;
10405
 
10406
         --- Remove from Unit Tests
10407
         DELETE FROM unit_tests ut
10408
               WHERE ut.pv_id = pvid;
10409
 
10410
         --- Remove from Package BuildEnv
10411
         DELETE FROM package_build_env pbe
10412
               WHERE pbe.pv_id = pvid;
10413
 
10414
		 --- Remove from Package Build Info
10415
		 DELETE FROM package_build_info pbi
10416
		 	   WHERE pbi.pv_id = pvid;    
10417
 
10418
 
10419
         --- Remove from Build Order
10420
         DELETE FROM build_order bo
10421
               WHERE bo.pv_id = pvid;
10422
 
10423
         --- Remove from Note Manager
10424
         DELETE FROM note_manager nm
10425
               WHERE nm.nid = pvid;
10426
 
10427
         --- Remove from Action log
10428
         DELETE FROM action_log al
10429
               WHERE al.pv_id = pvid;
10430
 
10431
		 --- Remove from Do Not Ripple 
10432
		 DELETE FROM DO_NOT_RIPPLE dnr
10433
		 	   WHERE dnr.PV_ID = pvid;
10434
 
10435
		 --- Remove from Advisory Ripple 
10436
		 DELETE FROM ADVISORY_RIPPLE ar
10437
		 	   WHERE ar.PV_ID = pvid;			   
10438
 
10439
		 --- Remove from Jira Issues 
10440
		 DELETE FROM JIRA_ISSUES jira
10441
		 	   WHERE jira.PV_ID = pvid;
53 mhunt 10442
 
10443
         --- Remove from Package Metrics
10444
         DELETE FROM package_metrics pm
10445
              WHERE pm.pv_id = pvid;
10446
 
51 mhunt 10447
         --- Finally Remove From Package Versions
10448
         --- Get Package name
10449
         SELECT pv.pkg_id
10450
           INTO pkgid
10451
           FROM package_versions pv
10452
          WHERE pv.pv_id = pvid;
10453
 
10454
         DELETE FROM package_versions pv
10455
               WHERE pv.pv_id = pvid;
10456
 
10457
         --- Remove package name if not used any more
10458
         SELECT COUNT (pv.pv_id)
10459
           INTO ROWCOUNT
10460
           FROM package_versions pv
10461
          WHERE pv.pkg_id = pkgid;
10462
 
10463
         IF ROWCOUNT < 1
10464
         THEN
10465
            DELETE FROM PACKAGES pkg
10466
                  WHERE pkg.pkg_id = pkgid;
10467
         END IF;
10468
      END IF;
10469
   END;
10470
 
10471
/*-------------------------------------------------------------------------------------------------------*/
10472
   PROCEDURE new_patch (
10473
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
10474
      nparentpvid        IN       NUMBER,
10475
      spatchidlist       IN       VARCHAR2,
10476
      nuserid            IN       NUMBER,
10477
      returnpatchid      OUT      NUMBER
10478
   )
10479
   IS
10480
      patchpv_id           NUMBER;
10481
      parpkg_id            NUMBER;
10482
      lastinstallorder     NUMBER;
10483
      ispatchdlocked       package_versions.dlocked%TYPE;
10484
      ssv_mm               package_versions.v_mm%TYPE;
10485
      ssv_nmm              package_versions.v_nmm%TYPE;
10486
      ssv_ext              package_versions.v_ext%TYPE;
10487
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
10488
                                                                          ();
10489
 
10490
      CURSOR parent_cur
10491
      IS
10492
         SELECT pv.*, pkg.pkg_name
10493
           FROM package_versions pv, PACKAGES pkg
10494
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
10495
 
10496
      parent_rec           parent_cur%ROWTYPE;
10497
 
10498
      CURSOR patch_cur
10499
      IS
10500
         SELECT pv.*, pg.pkg_name
10501
           FROM package_versions pv, PACKAGES pg
10502
          WHERE pv.pkg_id = parpkg_id
10503
            AND pv.pkg_version = snewpatchversion
10504
            AND pv.pkg_id = pg.pkg_id;
10505
 
10506
      patch_rec            patch_cur%ROWTYPE;
10507
 
10508
      CURSOR releases_cur
10509
      IS
10510
         SELECT rc.pv_id
10511
           FROM release_content rc
10512
          WHERE rc.pv_id = patch_rec.pv_id;
10513
 
10514
      releases_rec         releases_cur%ROWTYPE;
10515
   BEGIN
10516
      -- Get Last Install Order
10517
      SELECT COUNT (*)
10518
        INTO lastinstallorder
10519
        FROM package_patches pp
10520
       WHERE pp.pv_id = nparentpvid;
10521
 
10522
      -- Get parent details
10523
      OPEN parent_cur;
10524
 
10525
      FETCH parent_cur
10526
       INTO parent_rec;
10527
 
10528
      parpkg_id := parent_rec.pkg_id;
10529
 
10530
      -- Find if patch exists in database
10531
      OPEN patch_cur;
10532
 
10533
      FETCH patch_cur
10534
       INTO patch_rec;
10535
 
10536
      -- Parent must be official
10537
      IF parent_rec.dlocked = 'Y'
10538
      THEN
10539
         IF patch_cur%NOTFOUND
10540
         THEN
10541
            ispatchdlocked := 'N';
10542
 
10543
            -- Create new patch version --
10544
            SELECT seq_pv_id.NEXTVAL
10545
              INTO patchpv_id
10546
              FROM DUAL;
10547
 
10548
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
10549
 
10550
            INSERT INTO package_versions
10551
                        (pv_id, pkg_id, pkg_version,
10552
                         dlocked, created_stamp, creator_id,
10553
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
10554
                         src_path,
10555
                         pv_description,
10556
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
10557
						 is_autobuildable, ripple_field
10558
                        )
10559
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
10560
                         ispatchdlocked, ora_sysdate, nuserid,
10561
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
10562
                         parent_rec.src_path,
10563
                            'This is a patch to '
10564
                         || parent_rec.pkg_name
10565
                         || ' '
10566
                         || parent_rec.pkg_version,
10567
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
10568
                        );
10569
 
10570
            INSERT INTO package_patches
10571
                        (pv_id, patch_id, install_order)
10572
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10573
                       lastinstallorder + 1 AS install_order
10574
                  FROM package_versions pv
10575
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10576
 
10577
            /* LOG ACTION */
10578
            log_action (patchpv_id,
10579
                        'new_version',
10580
                        nuserid,
10581
                        'Patch version created: ' || snewpatchversion
10582
                       );
10583
            log_action (nparentpvid,
10584
                        'patch_add',
10585
                        nuserid,
10586
                        'New patch created and attached: ' || snewpatchversion
10587
                       );
10588
         ELSE
10589
            patchpv_id := patch_rec.pv_id;
10590
            ispatchdlocked := patch_rec.dlocked;
10591
 
10592
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
10593
            OPEN releases_cur;
10594
 
10595
            FETCH releases_cur
10596
             INTO releases_rec;
10597
 
10598
            IF releases_cur%NOTFOUND
10599
            THEN
10600
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
10601
               UPDATE package_versions
10602
                  SET is_patch = 'Y'
10603
                WHERE pv_id = patchpv_id;
10604
 
10605
               INSERT INTO package_patches
10606
                           (pv_id, patch_id, install_order)
10607
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10608
                          lastinstallorder + 1 AS install_order
10609
                     FROM package_versions pv
10610
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10611
            END IF;
10612
 
10613
            CLOSE releases_cur;
10614
 
10615
            /* LOG ACTION */
10616
            log_action (nparentpvid,
10617
                        'patch_add',
10618
                        nuserid,
10619
                           'Patch version was found and attached: '
10620
                        || snewpatchversion
10621
                       );
10622
         END IF;
10623
      END IF;
10624
 
10625
      /* Create Patch Dependencies */
10626
      opatchdepcollector := in_list_number (spatchidlist);
10627
 
10628
      -- Make sure patch is unofficial before altering its dependencies
10629
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
10630
      THEN
10631
         -- Delete Existing Dependencies
10632
         DELETE FROM package_dependencies dep
10633
               WHERE dep.pv_id = patchpv_id;
10634
 
10635
         -- Insert new dependencies
10636
         INSERT INTO package_dependencies
10637
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
10638
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
10639
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
10640
                   'L' AS build_type
10641
              FROM package_versions pv
10642
             WHERE pv.pv_id IN (
10643
                      SELECT *
10644
                        FROM TABLE
10645
                                (CAST
10646
                                    (opatchdepcollector AS relmgr_number_tab_t)
10647
                                ));
10648
      END IF;
10649
 
10650
      -- Return patch_id
10651
      returnpatchid := patchpv_id;
10652
 
10653
      CLOSE parent_cur;
10654
 
10655
      CLOSE patch_cur;
10656
   EXCEPTION
10657
      WHEN DUP_VAL_ON_INDEX
10658
      THEN
10659
         raise_application_error (-20000,
10660
                                     'Patch version '
10661
                                  || snewpatchversion
10662
                                  || ' already exist.'
10663
                                 );
10664
   END;
10665
 
10666
/*-------------------------------------------------------------------------------------------------------*/
10667
   PROCEDURE obsolete_patch (
10668
      patchid            IN   NUMBER,
10669
      isobsolete         IN   CHAR,
10670
      obsoletecomments   IN   VARCHAR2,
10671
      userid             IN   NUMBER
10672
   )
10673
   IS
10674
   BEGIN
10675
      -- Update patch
10676
      UPDATE package_versions pv
10677
         SET pv.is_obsolete = isobsolete,
10678
             pv.obsolete_comments = obsoletecomments
10679
       WHERE pv.pv_id = patchid;
10680
 
10681
      /*
10682
      -- Update patch children
10683
      UPDATE PACKAGE_VERSIONS pv SET
10684
      pv.IS_OBSOLETE = IsObsolete,
10685
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10686
      WHERE pv.PV_ID IN (
10687
                     SELECT DISTINCT dep.DPV_ID
10688
                       FROM PACKAGE_DEPENDENCIES dep
10689
                      WHERE dep.PV_ID = PatchId
10690
                     );
10691
 
10692
 
10693
      -- Update patch parent
10694
      UPDATE PACKAGE_VERSIONS pv SET
10695
      pv.IS_OBSOLETE = IsObsolete,
10696
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10697
      WHERE pv.PV_ID IN (
10698
                     SELECT DISTINCT dep.PV_ID
10699
                       FROM PACKAGE_DEPENDENCIES dep
10700
                      WHERE dep.DPV_ID = PatchId
10701
                     );
10702
 
10703
         */
10704
 
10705
      /* LOG ACTION */
10706
      IF isobsolete IS NOT NULL
10707
      THEN
10708
         log_action (patchid,
10709
                     'patch_obsolete',
10710
                     userid,
10711
                     'Obsolete patch. ' || obsoletecomments
10712
                    );
10713
      ELSE
10714
         log_action (patchid,
10715
                     'patch_obsolete',
10716
                     userid,
10717
                     'Undo patch obsolete.'
10718
                    );
10719
      END IF;
10720
   END;
10721
 
10722
/*-------------------------------------------------------------------------------------------------------*/
10723
   PROCEDURE obsolete_patches (
10724
      spatchidlist       IN   VARCHAR2,
10725
      isobsolete         IN   CHAR,
10726
      obsoletecomments   IN   VARCHAR2,
10727
      userid             IN   NUMBER
10728
   )
10729
   IS
10730
   BEGIN
10731
      /*--------------- Business Rules Here -------------------*/
10732
      IF spatchidlist IS NULL
10733
      THEN
10734
         raise_application_error (-20000,
10735
                                  'Please select one or more Patches.'
10736
                                 );
10737
      END IF;
10738
 
10739
/*-------------------------------------------------------*/
10740
 
10741
      -- Update patch
10742
      UPDATE package_versions pv
10743
         SET pv.is_obsolete = isobsolete,
10744
             pv.obsolete_comments = obsoletecomments
10745
       WHERE pv.pv_id IN (
10746
                SELECT *
10747
                  FROM THE
10748
                          (SELECT CAST
10749
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
10750
                                     )
10751
                             FROM DUAL
10752
                          ));
10753
   /*
10754
   -- Update patch children
10755
   UPDATE PACKAGE_VERSIONS pv SET
10756
   pv.IS_OBSOLETE = IsObsolete,
10757
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10758
   WHERE pv.PV_ID IN (
10759
                  SELECT DISTINCT dep.DPV_ID
10760
                    FROM PACKAGE_DEPENDENCIES dep
10761
                   WHERE dep.PV_ID = PatchId
10762
                  );
10763
 
10764
 
10765
   -- Update patch parent
10766
   UPDATE PACKAGE_VERSIONS pv SET
10767
   pv.IS_OBSOLETE = IsObsolete,
10768
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10769
   WHERE pv.PV_ID IN (
10770
                  SELECT DISTINCT dep.PV_ID
10771
                    FROM PACKAGE_DEPENDENCIES dep
10772
                   WHERE dep.DPV_ID = PatchId
10773
                  );
10774
 
10775
      */
10776
 
10777
   /* LOG ACTION
10778
   IF IsObsolete IS NOT NULL THEN
10779
         Log_Action ( PatchId, 'patch_obsolete', UserId,
10780
                  'Obsolete patch. '|| ObsoleteComments );
10781
   ELSE
10782
      Log_Action ( PatchId, 'patch_obsolete', UserId,
10783
                  'Undo patch obsolete.' );
10784
   END IF;  */
10785
   END;
10786
 
10787
/*-------------------------------------------------------------------------------------------------------*/
10788
   PROCEDURE add_process (
10789
      nprocid         IN   processes.proc_id%TYPE,
10790
      shealthtag      IN   processes.proc_name%TYPE,
10791
      sprocdesc       IN   processes.proc_description%TYPE,
10792
      scmdinterface   IN   processes.run_as%TYPE,
10793
      spkgowner       IN   processes.pkg_owner%TYPE,
10794
      sisinterface    IN   processes.is_interface%TYPE,
10795
      npvid           IN   package_processes.pv_id%TYPE,
10796
      nuserid         IN   NUMBER
10797
   )
10798
   IS
10799
      pkgname   VARCHAR2 (100);
10800
/*Rupesh Release on 17/05/2006*/
10801
   BEGIN
10802
      INSERT INTO processes
10803
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
10804
                   is_interface
10805
                  )
10806
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
10807
                   sisinterface
10808
                  );
10809
 
10810
      pk_package.add_package_process (nprocid, npvid, nuserid);
10811
   END;
10812
 
10813
/*-------------------------------------------------------------------------------------------------------*/
10814
   PROCEDURE add_package_process (
10815
      nprocidlist   IN   VARCHAR2,
10816
      npvid         IN   package_processes.pv_id%TYPE,
10817
      nuserid       IN   NUMBER
10818
   )
10819
   IS
10820
      processname   VARCHAR2 (4000);
10821
 
10822
/*Rupesh Release on 17/05/2006*/
10823
      CURSOR proc_cur
10824
      IS
10825
         SELECT prc.proc_id
10826
           FROM processes prc
10827
          WHERE prc.proc_id IN (
10828
                   SELECT *
10829
                     FROM THE
10830
                             (SELECT CAST
10831
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
10832
                                        )
10833
                                FROM DUAL
10834
                             ));
10835
 
10836
      proc_rec      proc_cur%ROWTYPE;
10837
   BEGIN
10838
      OPEN proc_cur;
10839
 
10840
      FETCH proc_cur
10841
       INTO proc_rec;
10842
 
10843
      WHILE proc_cur%FOUND
10844
      LOOP
10845
         INSERT INTO package_processes
10846
                     (proc_id, pv_id
10847
                     )
10848
              VALUES (proc_rec.proc_id, npvid
10849
                     );
10850
 
10851
         SELECT prc.proc_name
10852
           INTO processname
10853
           FROM processes prc
10854
          WHERE prc.proc_id = proc_rec.proc_id;
10855
 
10856
         -- Log Action --
10857
         log_action (npvid,
10858
                     'process_add',
10859
                     nuserid,
10860
                     'Added process with health tag ' || processname
10861
                    );
10862
 
10863
         FETCH proc_cur
10864
          INTO proc_rec;
10865
      END LOOP;
10866
   END;
10867
 
10868
/*-------------------------------------------------------------------------------------------------------*/
10869
   PROCEDURE remove_process (
10870
      nprocid   IN   package_processes.proc_id%TYPE,
10871
      npvid     IN   package_processes.pv_id%TYPE,
10872
      nuserid   IN   NUMBER
10873
   )
10874
   IS
10875
      processname   VARCHAR2 (4000);
10876
/* Rupesh Release on 17/05/2006*/
10877
   BEGIN
10878
      SELECT prc.proc_name
10879
        INTO processname
10880
        FROM processes prc
10881
       WHERE prc.proc_id = nprocid;
10882
 
10883
      DELETE FROM package_processes
10884
            WHERE proc_id = nprocid AND pv_id = npvid;
10885
 
10886
      -- Log Action --
10887
      log_action (npvid,
10888
                  'process_remove',
10889
                  nuserid,
10890
                  'Removed process with health tag ' || processname
10891
                 );
10892
   END;
10893
/*-------------------------------------------------------------------------------------------------------*/
10894
  /* 
10895
  Author: Rupesh Solanki
10896
  Purpose: To move package versions from one release to another
10897
  Release: 4th September 2006 
10898
 
10899
  */
10900
  PROCEDURE move_package (
10901
   	  npvid  			  IN package_versions.pv_id%TYPE,
10902
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
10903
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
10904
	  nuserid			  IN NUMBER	
10905
  )	
10906
  IS	
10907
 
10908
  oldrtag_name VARCHAR2(4000);
10909
  newrtag_name VARCHAR2(4000);
10910
 
10911
 
10912
 
10913
  BEGIN
10914
 
10915
 
10916
  SELECT rtag_name into oldrtag_name
10917
  FROM RELEASE_TAGS
10918
  WHERE rtag_id = nrtagid;
10919
 
10920
  SELECT rtag_name into newrtag_name
10921
  FROM RELEASE_TAGS
10922
  WHERE rtag_id = nnewrtagid;
10923
 
10924
  /* Table Work In Progress*/
10925
  	   UPDATE WORK_IN_PROGRESS
10926
	   SET RTAG_ID = nnewrtagid
10927
	   WHERE RTAG_ID = nrtagid
10928
	   AND PV_ID = npvid;
10929
 
10930
  /* Table PLANNED*/	
10931
  	   UPDATE PLANNED
10932
	   SET RTAG_ID = nnewrtagid
10933
	   WHERE RTAG_ID = nrtagid
10934
	   AND PV_ID = npvid;   
10935
 
10936
      -- Log Action --
10937
      log_action (npvid,
10938
                  'move_package_version',
10939
                  nuserid,
10940
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
10941
                 );  	   	     
10942
 
10943
 
10944
  END;
10945
 
10946
/*-------------------------------------------------------------------------------------------------------*/
10947
PROCEDURE modify_product_state (
10948
   	  npvid IN package_versions.pv_id%TYPE,
10949
	  nrtagid IN release_tags.rtag_id%TYPE,
10950
	  nstateid IN product_states.state_id%TYPE,
10951
	  nuserid IN NUMBER
10952
   ) IS
10953
 
10954
   sStateName VARCHAR2(4000);
10955
   sRtagName VARCHAR2(4000);
10956
 
10957
  /* 
10958
  Author: Rupesh Solanki
10959
  Purpose: To modify the product state from integration to test to deployment
10960
  Release: 25th January 2006 
10961
  */   
10962
 
10963
  BEGIN
10964
 
10965
  UPDATE RELEASE_CONTENT
10966
  SET PRODUCT_STATE = nstateid
10967
  WHERE PV_ID = npvid
10968
  AND RTAG_ID = nrtagid;
10969
 
10970
 
10971
  SELECT STATE INTO sStateName
10972
  FROM PRODUCT_STATES 
10973
  WHERE STATE_ID = nstateid;
10974
 
10975
  SELECT RTAG_NAME into sRtagName
10976
  FROM RELEASE_TAGS
10977
  WHERE RTAG_ID = nrtagid;
10978
 
10979
 
10980
  -- Log Action --
10981
  log_action (npvid,
10982
              'modify_product_state',
10983
               nuserid,
10984
               sStateName || ' in '|| sRtagName
10985
              );  
10986
 
10987
 
10988
  END;			  	   	     
10989
/*-------------------------------------------------------------------------------------------------------*/
10990
  PROCEDURE add_code_review_url (
10991
        npvid           IN    NUMBER,
10992
        nprojid         IN    NUMBER,
10993
        surl            IN    VARCHAR2,
10994
        sreason         IN    VARCHAR2,
10995
        ddateofreview   IN    DATE
10996
  ) IS
10997
 
10998
  ncrid NUMBER;
10999
 
11000
  /* 
11001
  Author: Jeremy Tweddle
11002
  Date: 24/Aug/2007 
11003
  */   
11004
 
11005
  BEGIN
11006
 
11007
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
11008
 
11009
 
11010
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
11011
                                    last_modified )
11012
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
11013
 
11014
  END;
11015
/*-------------------------------------------------------------------------------------------------------*/
11016
  PROCEDURE update_code_review_url (
11017
        ncrid           IN    NUMBER,
11018
        nprojid         IN    NUMBER,
11019
        surl            IN    VARCHAR2,
11020
        sreason         IN    VARCHAR2
11021
  ) IS
11022
 
11023
  /* 
11024
  Author: Jeremy Tweddle
11025
  Date: 22/Aug/2007 
11026
  */ 
11027
 
11028
  BEGIN
11029
 
11030
      UPDATE code_review_url
11031
      SET url = surl,
11032
          proj_id = nprojid,
11033
          reason = sreason,
11034
          last_modified = ora_sysdate
11035
      WHERE cr_id = ncrid;
11036
 
11037
  END;
11038
/*-------------------------------------------------------------------------------------------------------*/
11039
  PROCEDURE remove_code_review_url (
11040
        ncrid           IN    NUMBER
11041
  ) IS
11042
 
11043
  /* 
11044
  Author: Jeremy Tweddle
11045
  Date: 22/Aug/2007 
11046
  */
11047
 
11048
  BEGIN
11049
 
11050
      DELETE FROM code_review_url
11051
      WHERE cr_id = ncrid;
11052
 
11053
  END;
11054
/*-------------------------------------------------------------------------------------------------------*/
11055
END pk_package;
11056
/
11057
 
11058
CREATE OR REPLACE PACKAGE BODY                 pk_archive
11059
IS
11060
/*
11061
------------------------------
11062
||  Author:  Rupesh Solanki
11063
||  Date:    26 October 2006
11064
||  Version:   1.0
11065
------------------------------
11066
*/
11067
/*---------------------------*/
11068
PROCEDURE populate_packages_table IS
11069
 
11070
BEGIN
11071
		  INSERT INTO archive_manager.PACKAGES
11072
		  (
11073
		  select * from packages where pkg_id not in 
11074
		  		  (select pkg_id from archive_manager.packages)
11075
		  );
11076
 
11077
          INSERT INTO archive_manager.PROCESSES
11078
          (
11079
          select * from processes where proc_id not in 
11080
            (select proc_id from archive_manager.processes)
11081
          );
11082
 
11083
 
11084
 
11085
END;
11086
/*-------------------------------------------------------------------------------------------------------*/
11087
   PROCEDURE populate_archive_data_table (
11088
      nrtagid   IN   release_tags.rtag_id%TYPE
11089
   )
11090
   IS
11091
/*
11092
Reason: To populate the archive_data table with information regarding the
11093
         number of package versions that exist in other releases.
11094
*/
11095
      numcount      NUMBER;
11096
      numusedby     NUMBER;
11097
      numruntime    NUMBER;
11098
 
11099
      /* Get all the package versions in the release */
11100
      CURSOR archive_cur
11101
      IS
11102
         SELECT pv_id
11103
           FROM release_content
11104
          WHERE rtag_id = nrtagid;
11105
 
11106
      archive_rec   archive_cur%ROWTYPE;
11107
   BEGIN
11108
/*--------------- Business Rules Here -------------------*/
11109
/*-------------------------------------------------------*/
11110
      OPEN archive_cur;
11111
 
11112
      FETCH archive_cur
11113
       INTO archive_rec;
11114
 
11115
      WHILE archive_cur%FOUND
11116
      LOOP
11117
        /* How many packages depend on this package version? */
11118
         SELECT COUNT (*)
11119
           INTO numusedby
11120
           FROM package_dependencies
11121
          WHERE dpv_id = archive_rec.pv_id;
11122
 
11123
        /* How many project releases use this package version?  */
11124
         SELECT COUNT (*)
11125
           INTO numcount
11126
           FROM release_content
11127
          WHERE pv_id = archive_rec.pv_id;
11128
 
11129
        /* How many packages have this package version as runtime
11130
        dependency? */
11131
         SELECT COUNT (*)
11132
           INTO numruntime
11133
           FROM runtime_dependencies
11134
          WHERE rtd_id = archive_rec.pv_id;
11135
 
11136
        /* Insert into the archive_data table if they are not runtime dependant
11137
        and package dependant and they exist in that particular release only*/
11138
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
11139
         THEN
11140
            INSERT INTO archive_data
11141
                        (rtag_id, pv_id
11142
                        )
11143
                 VALUES (nrtagid, archive_rec.pv_id
11144
                        );
11145
         END IF;
11146
 
11147
         FETCH archive_cur
11148
          INTO archive_rec;
11149
      END LOOP;
11150
   END;
11151
 
11152
/*-------------------------------------------------------------------------------------------------------*/
11153
   PROCEDURE migrate_pv_to_archive_schema (
11154
      nrtagid   IN   release_tags.rtag_id%TYPE
11155
   )
11156
   IS
11157
   BEGIN
11158
 
11159
      /* MIGRATION - PACKAGE_VERSIONS */
11160
      INSERT INTO archive_manager.package_versions
11161
         SELECT *
11162
           FROM package_versions
11163
          WHERE pv_id IN (SELECT pv_id
11164
                            FROM archive_data);
11165
 
11166
      /* MIGRATION - PACKAGE_BUILD_ENV */
11167
      INSERT INTO archive_manager.package_build_env
11168
         SELECT *
11169
           FROM package_build_env
11170
          WHERE pv_id IN (SELECT pv_id
11171
                            FROM archive_data);
11172
 
11173
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
11174
      DELETE FROM package_build_env
11175
            WHERE pv_id IN (SELECT pv_id
11176
                              FROM archive_data);
11177
 
11178
      /* MIGRATION - PACKAGE_BUILD_INFO */
11179
      INSERT INTO archive_manager.package_build_info
11180
         SELECT *
11181
           FROM package_build_info
11182
          WHERE pv_id IN (SELECT pv_id
11183
                            FROM archive_data);
11184
 
11185
      /* PURGE DATA FROM PACKAGE_BUILD_info */
11186
      DELETE FROM package_build_info
11187
            WHERE pv_id IN (SELECT pv_id
11188
                              FROM archive_data);							  
11189
 
11190
      /* MIGRATION - UNIT_TESTS  */
11191
      INSERT INTO archive_manager.unit_tests
11192
         SELECT *
11193
           FROM unit_tests
11194
          WHERE pv_id IN (SELECT pv_id
11195
                            FROM archive_data);
11196
 
11197
      /* PURGE DATA FROM UNIT_TESTS*/
11198
      DELETE FROM unit_tests
11199
            WHERE pv_id IN (SELECT pv_id
11200
                              FROM archive_data);
11201
 
11202
      /* MIGRATION - PACKAGE_PROCESSES */
11203
      INSERT INTO archive_manager.package_processes
11204
         SELECT *
11205
           FROM package_processes
11206
          WHERE pv_id IN (SELECT pv_id
11207
                            FROM archive_data);
11208
 
11209
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
11210
      DELETE FROM package_processes
11211
            WHERE pv_id IN (SELECT pv_id
11212
                              FROM archive_data);
11213
 
11214
      /* MIGRATION - PACKAGE_DEPENDENCIES */
11215
      INSERT INTO archive_manager.package_dependencies
11216
         SELECT *
11217
           FROM package_dependencies
11218
          WHERE pv_id IN (SELECT pv_id
11219
                            FROM archive_data);
11220
 
11221
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
11222
      DELETE FROM package_dependencies
11223
            WHERE pv_id IN (SELECT pv_id
11224
                              FROM archive_data);
11225
 
11226
      /* MIGRATION - CODE_REVIEWS */
11227
      INSERT INTO archive_manager.code_reviews
11228
         SELECT *
11229
           FROM code_reviews
11230
          WHERE pv_id IN (SELECT pv_id
11231
                            FROM archive_data);
11232
 
11233
      /* PURGE DATA FROM CODE_REVIEWS*/
11234
      DELETE FROM code_reviews
11235
            WHERE pv_id IN (SELECT pv_id
11236
                              FROM archive_data);
11237
 
11238
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
11239
      INSERT INTO archive_manager.runtime_dependencies
11240
         SELECT *
11241
           FROM runtime_dependencies
11242
          WHERE pv_id IN (SELECT pv_id
11243
                            FROM archive_data);
11244
 
11245
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
11246
      DELETE FROM runtime_dependencies
11247
            WHERE pv_id IN (SELECT pv_id
11248
                              FROM archive_data);
11249
 
11250
      /* MIGRATION - PACKAGE_DOCUMENTS */
11251
      INSERT INTO archive_manager.package_documents
11252
         SELECT *
11253
           FROM package_documents
11254
          WHERE pv_id IN (SELECT pv_id
11255
                            FROM archive_data);
11256
 
11257
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
11258
      DELETE FROM package_documents
11259
            WHERE pv_id IN (SELECT pv_id
11260
                              FROM archive_data);
11261
 
11262
      /* MIGRATION - PACKAGE_PATCHES */
11263
      INSERT INTO archive_manager.package_patches
11264
         SELECT *
11265
           FROM package_patches
11266
          WHERE pv_id IN (SELECT pv_id
11267
                            FROM archive_data);
11268
 
11269
      /* PURGE DATA FROM PACKAGE_PATCHES*/
11270
      DELETE FROM package_patches
11271
            WHERE pv_id IN (SELECT pv_id
11272
                              FROM archive_data);
11273
 
11274
      /* MIGRATION - CQ_ISSUES */
11275
      INSERT INTO archive_manager.cq_issues
11276
         SELECT *
11277
           FROM cq_issues
11278
          WHERE pv_id IN (SELECT pv_id
11279
                            FROM archive_data);
11280
 
11281
      /* PURGE DATA FROM CQ_ISSUES*/
11282
      DELETE FROM cq_issues
11283
            WHERE pv_id IN (SELECT pv_id
11284
                              FROM archive_data);
11285
 
11286
      /* MIGRATION - ADDITIONAL_NOTES */
11287
      INSERT INTO archive_manager.additional_notes
11288
         SELECT *
11289
           FROM additional_notes
11290
          WHERE pv_id IN (SELECT pv_id
11291
                            FROM archive_data);
11292
 
11293
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
11294
      DELETE FROM additional_notes
11295
            WHERE pv_id IN (SELECT pv_id
11296
                              FROM archive_data);
11297
 
11298
      /* MIGRATION - RELEASE_COMPONENTS */
11299
      INSERT INTO archive_manager.release_components
11300
         SELECT *
11301
           FROM release_components
11302
          WHERE pv_id IN (SELECT pv_id
11303
                            FROM archive_data);
11304
 
11305
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
11306
      DELETE FROM release_components
11307
            WHERE pv_id IN (SELECT pv_id
11308
                              FROM archive_data);
11309
 
11310
      /* MIGRATION - IGNORE_WARNINGS */
11311
      INSERT INTO archive_manager.ignore_warnings
11312
         SELECT *
11313
           FROM ignore_warnings
11314
          WHERE pv_id IN (SELECT pv_id
11315
                            FROM archive_data);
11316
 
11317
      /* PURGE DATA FROM IGNORE_WARNINGS*/
11318
      DELETE FROM ignore_warnings
11319
            WHERE pv_id IN (SELECT pv_id
11320
                              FROM archive_data);
11321
 
11322
      /* PURGE DATA FROM WORK_IN_PROGRESS */
11323
      DELETE FROM work_in_progress
11324
            WHERE rtag_id = nrtagid;
11325
 
11326
      /* PURGE DATA FROM PLANNED */
11327
      DELETE FROM planned
11328
            WHERE rtag_id = nrtagid;
11329
 
11330
      /* MIGRATION - JIRA_ISSUES */
11331
      INSERT INTO archive_manager.jira_issues
11332
         SELECT *
11333
           FROM jira_issues
11334
          WHERE pv_id IN (SELECT pv_id
11335
                            FROM archive_data);
11336
 
11337
      /* PURGE DATA FROM JIRA_ISSUES*/
11338
      DELETE FROM jira_issues
11339
            WHERE pv_id IN (SELECT pv_id
11340
                              FROM archive_data);
11341
 
11342
      /* MIGRATION - PRODUCT_COMPONENTS */
11343
      INSERT INTO archive_manager.product_components
11344
         SELECT *
11345
           FROM product_components
11346
          WHERE pv_id IN (SELECT pv_id
11347
                            FROM archive_data);
11348
 
11349
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11350
      DELETE FROM product_components
11351
            WHERE pv_id IN (SELECT pv_id
11352
                              FROM archive_data);
11353
 
11354
      /* MIGRATION - ACTION_LOG */
11355
      INSERT INTO archive_manager.action_log
11356
         SELECT *
11357
           FROM action_log
11358
          WHERE pv_id IN (SELECT pv_id
11359
                            FROM archive_data);
11360
 
11361
      /* PURGE DATA FROM ACTION_LOG*/
11362
      DELETE FROM action_log
11363
            WHERE pv_id IN (SELECT pv_id
11364
                              FROM archive_data);
11365
 
11366
 
11367
   END;
11368
 
11369
/*-------------------------------------------------------------------------------------------------------*/
11370
   PROCEDURE migrate_rtag_to_archive_schema (
11371
      nrtagid   IN   release_tags.rtag_id%TYPE
11372
   )
11373
   IS
11374
   BEGIN
11375
      /* MIGRATION - DO_NOT_RIPPLE */
11376
      INSERT INTO archive_manager.do_not_ripple
11377
         SELECT *
11378
           FROM do_not_ripple dnp
11379
          WHERE rtag_id = nrtagid;
11380
 
11381
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11382
      DELETE FROM do_not_ripple
11383
            WHERE rtag_id = nrtagid;
11384
 
11385
      /* MIGRATION - ADVISORY_RIPPLES*/
11386
      INSERT INTO archive_manager.advisory_ripples
11387
         SELECT *
11388
           FROM advisory_ripple dnp
11389
          WHERE rtag_id = nrtagid;
11390
 
11391
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11392
      DELETE FROM advisory_ripple
11393
            WHERE rtag_id = nrtagid;			
11394
 
11395
      /* MIGRATION - RELEASE_CONTENT */
11396
      INSERT INTO archive_manager.release_content
11397
         SELECT *
11398
           FROM release_content
11399
          WHERE rtag_id = nrtagid;
11400
 
11401
      /* PURGE DATA FROM RELEASE_CONTENT*/
11402
      DELETE FROM release_content
11403
            WHERE rtag_id = nrtagid;
11404
 
11405
      /* MIGRATION - NOTIFICATION_HISTORY */
11406
      INSERT INTO archive_manager.notification_history
11407
         SELECT *
11408
           FROM notification_history
11409
          WHERE rtag_id = nrtagid;
11410
 
11411
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11412
      DELETE FROM notification_history
11413
            WHERE rtag_id = nrtagid;
11414
 
11415
      /* MIGRATION - BUILD_ORDER   */
11416
      INSERT INTO archive_manager.build_order
11417
         SELECT *
11418
           FROM build_order
11419
          WHERE rtag_id = nrtagid;
11420
 
11421
      /* PURGE DATA FROM BUILD_ORDER*/
11422
      DELETE FROM build_order
11423
            WHERE rtag_id = nrtagid;
11424
 
11425
      /* MIGRATION - PROJECT_ACTION_LOG */
11426
      INSERT INTO archive_manager.project_action_log
11427
         SELECT *
11428
           FROM project_action_log
11429
          WHERE rtag_id = nrtagid;
11430
 
11431
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11432
      DELETE FROM project_action_log
11433
            WHERE rtag_id = nrtagid;
11434
 
11435
      /* MIGRATION - DEPRECATED_PACKAGES */
11436
      INSERT INTO archive_manager.deprecated_packages
11437
         SELECT *
11438
           FROM deprecated_packages
11439
          WHERE rtag_id = nrtagid;
11440
 
11441
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11442
      DELETE FROM deprecated_packages
11443
            WHERE rtag_id = nrtagid;
11444
 
11445
      /* MIGRATION - RELEASE_TAGS */
11446
      INSERT INTO archive_manager.release_tags
11447
         SELECT *
11448
           FROM release_tags
11449
          WHERE rtag_id = nrtagid;
11450
 
11451
 
11452
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11453
      DELETE FROM package_versions
11454
            WHERE pv_id IN (SELECT pv_id
11455
                              FROM archive_data);
11456
 
11457
 
11458
   END;
11459
 
11460
/*-------------------------------------------------------------------------------------------------------*/
11461
   PROCEDURE clean_up_archive_data_table (
11462
      nrtagid   IN   release_tags.rtag_id%TYPE
11463
   )
11464
   IS
11465
   BEGIN
11466
      /* Cleaning Up The Archive_Data Table */
11467
      DELETE FROM archive_data
11468
            WHERE rtag_id = nrtagid;
11469
   END;
11470
 
11471
/*-------------------------------------------------------------------------------------------------------*/
11472
   PROCEDURE write_action_log (
11473
      nuserid   IN   NUMBER,
11474
      nrtagid   IN   release_tags.rtag_id%TYPE
11475
   )
11476
   IS
11477
   BEGIN
11478
      /* Write Into Archive_Action_Log Table */
11479
      INSERT INTO archive_action_log
11480
                  (user_id, date_time_stamp, rtag_id,
11481
                   description
11482
                  )
11483
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11484
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11485
                  );
11486
   END;
11487
/*-------------------------------------------------------------------------------------------------------*/
11488
END pk_archive;
11489
/
11490
 
11491
CREATE OR REPLACE PACKAGE BODY pk_rmapi_test
11492
IS
11493
/*
11494
------------------------------
11495
||  Last Modified:  Rupesh Solanki
11496
||  Modified Date:  11 September 2006
11497
||  Body Version:   2.0
11498
------------------------------
11499
*/
11500
 
11501
   /*-------------------------------------------------------------------------------------------------------*/
11502
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11503
      RETURN typecur
11504
   IS
11505
      npvid     NUMBER  := 0;
11506
      RECORDS   typecur;
11507
   BEGIN
11508
      BEGIN
11509
         -- Get PV_ID --
11510
         SELECT pv.pv_id
11511
           INTO npvid
11512
           FROM PACKAGES pkg, package_versions pv
11513
          WHERE pv.pkg_id = pkg.pkg_id
11514
            AND pkg.pkg_name = pkgname
11515
            AND pv.pkg_version = pkgversion;
11516
      EXCEPTION
11517
         WHEN NO_DATA_FOUND
11518
         THEN
11519
            raise_application_error (-20000, 'Package Not Found!');
11520
            --WHEN OTHERS THEN
11521
                  -- Consider logging the error and then re-raise
11522
            RAISE;
11523
      END;
11524
 
11525
      -- Finally get package dependencies --
11526
      OPEN RECORDS FOR
11527
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11528
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11529
          WHERE dep.pv_id = npvid
11530
            AND dpv.pkg_id = dpkg.pkg_id
11531
            AND dpv.pv_id = dep.dpv_id;
11532
 
11533
      RETURN RECORDS;
11534
   END;
11535
 
11536
/*-------------------------------------------------------------------------------------------------------*/
11537
   FUNCTION wip_iteration_package (
11538
      projname        VARCHAR2,
11539
      iterationname   VARCHAR2,
11540
      pkgname         VARCHAR2
11541
   )
11542
      RETURN typecur
11543
   IS
11544
      nrtagid   NUMBER  := 0;
11545
      RECORDS   typecur;
11546
   BEGIN
11547
      BEGIN
11548
         -- Get latest rtag_id --
11549
         SELECT rt.rtag_id
11550
           INTO nrtagid
11551
           FROM projects proj, release_tags rt
11552
          WHERE rt.proj_id = proj.proj_id
11553
            AND UPPER (proj.proj_name) = UPPER (projname)
11554
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
11555
 
11556
         IF (nrtagid IS NULL)
11557
         THEN
11558
            raise_application_error (-20000,
11559
                                     'Work In Progress is Not Found!');
11560
         END IF;
11561
      EXCEPTION
11562
         WHEN NO_DATA_FOUND
11563
         THEN
11564
            raise_application_error (-20000,
11565
                                     'Work In Progress is Not Found!');
11566
            RAISE;
11567
      END;
11568
 
11569
      -- Finally get package dependencies --
11570
      OPEN RECORDS FOR
11571
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
11572
                pv.src_path
11573
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
11574
          WHERE pv.pkg_id = pkg.pkg_id
11575
            AND wip.pv_id = pv.pv_id
11576
            AND wip.rtag_id = nrtagid
11577
            AND pkg.pkg_name = pkgname;
11578
 
11579
      RETURN RECORDS;
11580
   END;
11581
 
11582
/*-------------------------------------------------------------------------------------------------------*/
11583
   FUNCTION auto_make_release (
11584
      rtagid                   IN   NUMBER,
11585
      pkgname                  IN   VARCHAR2,
11586
      vext                     IN   VARCHAR2,
11587
      newpkgversion            IN   VARCHAR2,
11588
      label                    IN   VARCHAR2,
11589
      dependenciesimportlist   IN   VARCHAR2,
11590
      isrippled                IN   NUMBER,
11591
      username                 IN   VARCHAR2
11592
   )
11593
      RETURN NUMBER
11594
   IS
11595
      pvid                            NUMBER                        := 0;
11596
      userid                          NUMBER;
11597
      dlocked                         VARCHAR2 (20)                 := NULL;
11598
      clonefrompvid                   NUMBER;
11599
      ssv_mm                          package_versions.v_mm%TYPE;
11600
      ssv_nmm                         package_versions.v_nmm%TYPE;
11601
      ssv_ext                         package_versions.v_ext%TYPE;
11602
      return_package_not_found        NUMBER                        := -1;
11603
      return_package_already_exists   NUMBER                        := -2;
11604
      return_not_approved             NUMBER                        := -3;
11605
   BEGIN
11606
      /*--------------- Business Rules Here -------------------*/
11607
      IF (rtagid IS NULL)
11608
      THEN
11609
         raise_application_error (-20000, 'RtagId must be supplied.');
11610
      END IF;
11611
 
11612
      IF (pkgname IS NULL)
11613
      THEN
11614
         raise_application_error (-20000, 'PkgName must be supplied.');
11615
      END IF;
11616
 
11617
      IF (newpkgversion IS NULL)
11618
      THEN
11619
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11620
      END IF;
11621
 
11622
      IF (label IS NULL)
11623
      THEN
11624
         raise_application_error (-20000, 'Label must be supplied.');
11625
      END IF;
11626
 
11627
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11628
      THEN
11629
         raise_application_error
11630
            (-20000,
11631
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
11632
            );
11633
      END IF;
11634
 
11635
      IF (username IS NULL)
11636
      THEN
11637
         raise_application_error (-20000, 'UserName must be supplied.');
11638
      END IF;
11639
 
11640
      -- Get user_id
11641
      BEGIN
11642
         SELECT usr.user_id
11643
           INTO userid
11644
           FROM users usr
11645
          WHERE UPPER (usr.user_name) = UPPER (username)
11646
            AND usr.is_disabled IS NULL;
11647
      EXCEPTION
11648
         WHEN NO_DATA_FOUND
11649
         THEN
11650
            raise_application_error (-20000,
11651
                                        'UserName '
11652
                                     || username
11653
                                     || ' is not valid or disabled.'
11654
                                    );
11655
      END;
11656
 
11657
/*-------------------------------------------------------*/
11658
 
11659
      -- Create package if necessary
11660
      IF isrippled = 1
11661
      THEN
11662
         /* Ripple Build */
11663
         BEGIN
11664
            -- Make sure that package does not exist
11665
            SELECT pv.pv_id
11666
              INTO pvid
11667
              FROM package_versions pv, PACKAGES pkg
11668
             WHERE pv.pkg_id = pkg.pkg_id
11669
               AND pkg.pkg_name = pkgname
11670
               AND pv.pkg_version = newpkgversion;
11671
         EXCEPTION
11672
            WHEN NO_DATA_FOUND
11673
            THEN
11674
               pvid := 0;
11675
         END;
11676
 
11677
         IF (pvid = 0)
11678
         THEN
11679
            -- Split current version in parts
11680
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11681
 
11682
            BEGIN
11683
               -- Find package to be replaced with thie ripple package
11684
               IF vext = ssv_ext
11685
               THEN
11686
                  SELECT pv.pv_id
11687
                    INTO clonefrompvid
11688
                    FROM PACKAGES pkg, package_versions pv,
11689
                         release_content rc
11690
                   WHERE rc.pv_id = pv.pv_id
11691
                     AND pv.pkg_id = pkg.pkg_id
11692
                     AND rc.rtag_id = rtagid
11693
                     AND pkg.pkg_name = pkgname
11694
                     AND pv.v_ext = ssv_ext;
11695
               ELSE
11696
                  SELECT pv.pv_id
11697
                    INTO clonefrompvid
11698
                    FROM PACKAGES pkg, package_versions pv,
11699
                         release_content rc
11700
                   WHERE rc.pv_id = pv.pv_id
11701
                     AND pv.pkg_id = pkg.pkg_id
11702
                     AND rc.rtag_id = rtagid
11703
                     AND pkg.pkg_name = pkgname
11704
                     AND pv.v_ext = vext;
11705
               END IF;
11706
            EXCEPTION
11707
               WHEN NO_DATA_FOUND
11708
               THEN
11709
                  raise_application_error
11710
                                        (-20000,
11711
                                            'Cannot get CloneFromPvId. VExt='
11712
                                         || vext
11713
                                         || ', RtagId='
11714
                                         || rtagid
11715
                                         || ', PkgName='
11716
                                         || pkgname
11717
                                         || ', SSV_EXT='
11718
                                         || ssv_ext
11719
                                        );
11720
            END;
11721
 
11722
            IF vext = ssv_ext
11723
            THEN
11724
               -- Create package
11725
               seed_package_names_versions (pkgname,
11726
                                            newpkgversion,
11727
                                            userid,
11728
                                            pvid,
11729
                                            clonefrompvid
11730
                                           );
11731
            ELSE
11732
               -- Create package
11733
               seed_package_names_versions2 (pkgname,
11734
                                             newpkgversion,
11735
                                             userid,
11736
                                             pvid,
11737
                                             clonefrompvid
11738
                                            );
11739
            END IF;
11740
 
11741
            -- Update Package reason for release
11742
            UPDATE package_versions pv
11743
               SET pv.comments = 'Rippled Build.',
11744
                   pv.build_type = 'Y'
11745
             WHERE pv.pv_id = pvid;
11746
         ELSE
11747
            -- Package already exists, hence cannot be used for ripple build
11748
            RETURN return_package_already_exists;
11749
         END IF;
11750
      ELSE
11751
         /* Auto build from Pending area */
11752
 
11753
         -- Find package in pending area
11754
         BEGIN
11755
            SELECT pv.pv_id, pv.dlocked
11756
              INTO pvid, dlocked
11757
              FROM planned pl, package_versions pv, PACKAGES pkg
11758
             WHERE pl.pv_id = pv.pv_id
11759
               AND pv.pkg_id = pkg.pkg_id
11760
               AND pl.rtag_id = rtagid
11761
               AND pkg.pkg_name = pkgname
11762
               AND pv.dlocked = 'A'
11763
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11764
                                                   NVL (vext, '|LINK_A_NULL|');
11765
         EXCEPTION
11766
            WHEN NO_DATA_FOUND
11767
            THEN
11768
               pvid := 0;
11769
         END;
11770
 
11771
         IF (pvid = 0)
11772
         THEN
11773
            -- Package does not exist in pending area, hence report it
11774
            RETURN return_package_not_found;
11775
         ELSIF (dlocked != 'A')
11776
         THEN
11777
            -- Package is not approved for autobuild
11778
            RETURN return_not_approved;
11779
         END IF;
11780
      END IF;
11781
 
11782
      BEGIN
11783
         -- Import Dependencies
11784
         import_dependencies (pvid, dependenciesimportlist, userid);
11785
      END;
11786
 
11787
      BEGIN
11788
         -- Split current version in parts
11789
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11790
 
11791
         -- Update Package Details
11792
         UPDATE package_versions pv
11793
            SET pv.pkg_version = newpkgversion,
11794
                pv.v_ext = ssv_ext,
11795
                pv.v_mm = ssv_mm,
11796
                pv.v_nmm = ssv_nmm,
11797
                pv.pkg_label = label
11798
          WHERE pv.pv_id = pvid;
11799
      EXCEPTION
11800
         WHEN DUP_VAL_ON_INDEX
11801
         THEN
11802
            -- Package already exists, hence cannot be used for ripple build
11803
            RETURN return_package_already_exists;
11804
      END;
11805
 
11806
	  -- Update the is_autobuildable
11807
	  update package_versions 
11808
	  set is_autobuildable = 'Y'
11809
	  where pv_id = pvid;	  
11810
 
11811
      -- Now release package
11812
      pk_environment.auto_make_release (pvid,
11813
                                        rtagid,
11814
                                        userid,
11815
                                        vext,
11816
                                        ssv_ext,
11817
                                        clonefrompvid
11818
                                       );
11819
 
11820
 
11821
      RETURN pvid;
11822
   END;
11823
 
11824
/*-------------------------------------------------------------------------------------------------------*/
11825
   PROCEDURE import_dependencies (
11826
      pvid                     IN   NUMBER,
11827
      dependenciesimportlist   IN   VARCHAR2,
11828
      userid                   IN   NUMBER
11829
   )
11830
   IS
11831
/*
11832
|| DependenciesImportList Format:
11833
|| "pkgA","1.0.0";"pkgB","2.0.0";
11834
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11835
*/
11836
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11837
         INDEX BY VARCHAR2 (4000);
11838
 
11839
      seperator         VARCHAR2 (2)           := '||';
11840
      pkgname           VARCHAR2 (4000);
11841
      pkgversion        VARCHAR2 (4000);
11842
      buildtype         VARCHAR2 (50);
11843
      pkgid             NUMBER;
11844
      vext              VARCHAR2 (4000);
11845
      dpvid             NUMBER;
11846
      slist             VARCHAR2 (4000);
11847
      cbuildtypes       tdictionary;
11848
      dependencyrow     NUMBER;
11849
      sdependency       VARCHAR2 (4000);
11850
      first_pos         VARCHAR2 (4000);
11851
      second_pos        VARCHAR2 (4000);
11852
      third_pos         VARCHAR2 (4000);
11853
      forth_pos         VARCHAR2 (4000);
11854
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11855
 
11856
      CURSOR curbuildtype
11857
      IS
11858
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11859
                dep.build_type
11860
           FROM package_dependencies dep, package_versions dpv
11861
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11862
 
11863
      recbuildtype      curbuildtype%ROWTYPE;
11864
   BEGIN
11865
      slist := dependenciesimportlist;
11866
 
11867
      -- Preformat String
11868
      IF NOT slist IS NULL
11869
      THEN
11870
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11871
         slist := REPLACE (slist, UTL_TCP.crlf);
11872
                            -- Remove new line and carriage-return characters
11873
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
11874
      END IF;
11875
 
11876
      -- Get Current Dependencies
11877
      OPEN curbuildtype;
11878
 
11879
      FETCH curbuildtype
11880
       INTO recbuildtype;
11881
 
11882
      WHILE curbuildtype%FOUND
11883
      LOOP
11884
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
11885
 
11886
         FETCH curbuildtype
11887
          INTO recbuildtype;
11888
      END LOOP;
11889
 
11890
      CLOSE curbuildtype;
11891
 
11892
      -- Separate dependencies with ; separator
11893
      citemcollection := in_list_varchar2 (slist, ';');
11894
 
11895
      BEGIN
11896
         -- Remove old dependencies
11897
         DELETE FROM package_dependencies dep
11898
               WHERE dep.pv_id = pvid;
11899
 
11900
         -- Loop through dependencies
11901
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11902
         LOOP
11903
            -- Extract pkg_name and pkg_version
11904
            sdependency := citemcollection (dependencyrow);
11905
            first_pos := INSTR (sdependency, '"', 1, 1);
11906
            second_pos := INSTR (sdependency, '"', 1, 2);
11907
            third_pos := INSTR (sdependency, '"', 1, 3);
11908
            forth_pos := INSTR (sdependency, '"', 1, 4);
11909
            pkgname :=
11910
               SUBSTR (sdependency,
11911
                       (first_pos + 1),
11912
                       (second_pos - first_pos - 1)
11913
                      );
11914
            pkgversion :=
11915
               SUBSTR (sdependency,
11916
                       (third_pos + 1),
11917
                       (forth_pos - third_pos - 1)
11918
                      );
11919
 
11920
            -- Dependency must exits to be linked against
11921
            BEGIN
11922
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11923
                 INTO dpvid, pkgid, vext
11924
                 FROM package_versions pv, PACKAGES pkg
11925
                WHERE pv.pkg_id = pkg.pkg_id
11926
                  AND pkg.pkg_name = pkgname
11927
                  AND pv.pkg_version = pkgversion;
11928
            EXCEPTION
11929
               WHEN NO_DATA_FOUND
11930
               THEN
11931
                  raise_application_error
11932
                                  (-20000,
11933
                                      'Dependency ['
11934
                                   || pkgname
11935
                                   || ' '
11936
                                   || pkgversion
11937
                                   || '] does not exist yet and cannot be used!'
11938
                                  );
11939
            END;
11940
 
11941
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11942
            BEGIN
11943
               buildtype := cbuildtypes (pkgid || seperator || vext);
11944
 
11945
               IF buildtype IS NULL
11946
               THEN
11947
                  -- Set build type to LinkPackageArchive by default
11948
                  buildtype := 'L';
11949
               END IF;
11950
            EXCEPTION
11951
               WHEN NO_DATA_FOUND
11952
               THEN
11953
                  buildtype := 'L';
11954
            END;
11955
 
11956
            -- Insert Dependencies
11957
            update_package_dependency (pvid,
11958
                                       pkgname,
11959
                                       pkgversion,
11960
                                       buildtype,
11961
                                       userid,
11962
 
11963
                                      );
11964
         END LOOP;
11965
      END;
11966
   END;
11967
 
11968
/*-------------------------------------------------------------------------------------------------------*/
11969
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11970
      RETURN VARCHAR2
11971
   IS
11972
      pkgversion   VARCHAR2 (4000);
11973
   BEGIN
11974
      BEGIN
11975
         SELECT pv.pkg_version
11976
           INTO pkgversion
11977
           FROM PACKAGES pkg, release_content rc, package_versions pv
11978
          WHERE pv.pv_id = rc.pv_id
11979
            AND pkg.pkg_id = pv.pkg_id
11980
            AND pkg.pkg_name = pkgname
11981
            AND rc.rtag_id = rtagid;
11982
 
11983
         RETURN pkgversion;
11984
      END;
11985
   END;
11986
 
11987
/*-------------------------------------------------------------------------------------------------------*/
11988
PROCEDURE CQ_TEST IS
11989
 
11990
  INPUT NUMBER(8,2);
11991
  RESULT VARCHAR2(50);
11992
BEGIN
11993
  INPUT := 33558440;
11994
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
11995
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
11996
 
11997
 
11998
END;
11999
/*-------------------------------------------------------------------------------------------------------*/
12000
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
12001
 
12002
   projId NUMBER;
12003
   projIdDB NUMBER;
12004
   TOTAL NUMBER;
12005
   AUTO_TOTAL NUMBER;
12006
   rtagIdDB NUMBER;
12007
 
12008
   BEGIN
12009
   		SELECT count(*) INTO TOTAL 
12010
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12011
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
12012
 
12013
		SELECT count(*) INTO AUTO_TOTAL 
12014
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12015
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
12016
		and rc.rtag_id = RtagId;
12017
 
12018
		BEGIN
12019
			SELECT RTAG_ID INTO rtagIdDB
12020
			FROM DASH_BOARD
12021
			WHERE RTAG_ID = RtagId;
12022
 
12023
			SELECT PROJ_ID INTO projIdDB
12024
			FROM DASH_BOARD
12025
			WHERE RTAG_ID = RtagId;
12026
            EXCEPTION
12027
               WHEN NO_DATA_FOUND
12028
			   THEN	rtagIdDB := '';
12029
 
12030
		END; 			
12031
 
12032
		IF rtagIdDB IS NULL THEN
12033
			SELECT PROJ_ID INTO projId
12034
			FROM RELEASE_TAGS
12035
			WHERE RTAG_ID = RtagId;
12036
 
12037
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
12038
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
12039
		ELSE
12040
			UPDATE DASH_BOARD
12041
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
12042
				AUTOMATED_PACKAGES = AUTO_TOTAL,
12043
				TOTAL_PACKAGES = TOTAL
12044
			WHERE PROJ_ID = projIdDB
12045
			AND RTAG_ID = rtagIdDB; 	
12046
		END IF;
12047
 
12048
 
12049
 
12050
 
12051
 
12052
 
12053
   END;
12054
 
12055
 
12056
/*-------------------------------------------------------------------------------------------------------*/   
12057
END pk_rmapi_test;
12058
/
12059
 
12060
CREATE OR REPLACE PACKAGE BODY PK_APP_UTILS IS
12061
 
12062
/*
12063
------------------------------
12064
||  Last Modified:  S.Vukovic
12065
||  Modified Date:  26/Apr/2005
12066
||  Body Version:   1.0
12067
------------------------------
12068
*/
12069
 
12070
 
12071
/*-------------------------------------------------------------------------------------------------------*/
12072
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
12073
 
12074
 
12075
BEGIN
12076
 
12077
 
12078
	IF (NOT RtagId IS NULL) THEN
12079
		-- Case with RTAG_ID present
12080
		OPEN records FOR
12081
		SELECT rt.PROJ_ID,
12082
			   rt.RTAG_ID AS RTAG_ID
12083
		  FROM RELEASE_TAGS rt
12084
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
12085
 
12086
	ELSIF (NOT ProjId IS NULL) THEN
12087
		-- Case with PROJ_ID present
12088
		OPEN records FOR
12089
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
12090
			   -1 AS RTAG_ID
12091
		  FROM DUAL;
12092
 
12093
	ELSE
12094
		-- Case with none present
12095
		OPEN records FOR
12096
		SELECT -1 AS PROJ_ID,
12097
			   -1 AS RTAG_ID
12098
		  FROM DUAL;
12099
 
12100
	END IF;
12101
 
12102
 
12103
 
12104
 
12105
   	--RETURN records;
12106
 
12107
END;
12108
/*-------------------------------------------------------------------------------------------------------*/
12109
END PK_APP_UTILS;
12110
/
12111
 
12112
CREATE OR REPLACE PACKAGE BODY PK_RELEASE_TEST IS
12113
 
12114
 
12115
/*
12116
------------------------------
12117
||  Last Modified:  S.Vukovic
12118
||  Modified Date:  12/Sep/2005
12119
||  Body Version:   3.0
12120
------------------------------
12121
*/
12122
 
12123
 
12124
/*-------------------------------------------------------------------------------------------------------*/
12125
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
12126
 
12127
RtagId NUMBER;
12128
ParentRtagId NUMBER;
12129
RecCount NUMBER := 0;
12130
 
12131
 
12132
BEGIN
12133
	/*--------------- Business Rules Here -------------------*/
12134
	-- Check for missing parameters
12135
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
12136
	THEN
12137
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
12138
 
12139
	END IF;
12140
 
12141
 
12142
	-- Check for duplicate Release Names
12143
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12144
	  FROM RELEASE_TAGS rt
12145
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12146
	   AND rt.PROJ_ID = nProjId;
12147
 
12148
	IF (RecCount > 0) THEN
12149
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12150
	END IF;
12151
	/*-------------------------------------------------------*/
12152
 
12153
 
12154
	-- Get rtag_id
12155
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
12156
 
12157
 
12158
 
12159
	-- Get Parent RtagId
12160
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
12161
 
12162
 
12163
	-- Create new release
12164
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
12165
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
12166
							   PARENT_RTAG_ID, PROJ_ID )
12167
	VALUES ( RtagId, 
12168
			 sReleaseName, 
12169
			 sReleaseComments,
12170
			 ORA_SYSDATE,
12171
			 nUserId,
12172
			 'N',
12173
			 'N',
12174
			 0,
12175
			 ParentRtagId,
12176
			 nProjId );
12177
 
12178
	-- Update display Order
12179
	UPDATE_DISPLAY_ORDER ( nProjId );
12180
 
12181
	/* Log Project Action */
12182
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
12183
 
12184
 
12185
	-- Import Release Contents
12186
	IF (NOT nSourceRtagId IS NULL) THEN
12187
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
12188
 
12189
	END IF;
12190
 
12191
 
12192
 
12193
END;
12194
/*-------------------------------------------------------------------------------------------------------*/
12195
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
12196
 
12197
 
12198
BEGIN
12199
 
12200
 
12201
	/*--------------- Business Rules Here -------------------*/
12202
	/*-------------------------------------------------------*/
12203
 
12204
	UPDATE RELEASE_TAGS urt SET
12205
	urt.DISPLAY_ORDER = (
12206
						SELECT qry.REC_NUM
12207
						  FROM (	
12208
								SELECT rel.*, ROWNUM AS REC_NUM
12209
								  FROM (
12210
 
12211
								  		SELECT rt.RTAG_ID, 
12212
											   rt.DISPLAY_ORDER,
12213
										       DECODE( rt.PARENT_RTAG_ID, 
12214
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
12215
										  FROM RELEASE_TAGS rt
12216
										 WHERE rt.PROJ_ID = nProjId 
12217
 
12218
								  		) rel
12219
								START WITH rel.PARENT_RTAG_ID = 0
12220
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
12221
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
12222
								) qry
12223
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
12224
						)
12225
	WHERE urt.PROJ_ID = nProjId;
12226
 
12227
END;
12228
/*-------------------------------------------------------------------------------------------------------*/
12229
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
12230
 
12231
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
12232
	SeqNum NUMBER;
12233
 
12234
BEGIN
12235
 
12236
 
12237
	/*--------------- Business Rules Here -------------------*/
12238
	/*-------------------------------------------------------*/
12239
 
12240
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
12241
 
12242
	-- Set start sequence number
12243
	SeqNum := 1;
12244
 
12245
	FOR i IN 1..nIdCollector.COUNT
12246
	LOOP
12247
 
12248
		-- Update new display order
12249
		UPDATE RELEASE_TAGS rt SET
12250
			rt.DISPLAY_ORDER = SeqNum
12251
		 WHERE rt.PROJ_ID = nProjId
12252
		   AND rt.RTAG_ID = nIdCollector(i);
12253
 
12254
		SeqNum := SeqNum + 1;
12255
 
12256
	END LOOP;
12257
 
12258
END;
12259
/*-------------------------------------------------------------------------------------------------------*/
12260
PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER ) IS
12261
 
12262
RecCount NUMBER := 0;
12263
ProjId NUMBER;
12264
 
12265
BEGIN
12266
 
12267
 
12268
	/*--------------- Business Rules Here -------------------*/
12269
	-- Check for missing parameters
12270
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
12271
	THEN
12272
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
12273
 
12274
	END IF;
12275
 
12276
 
12277
	-- Check for duplicate Release Names
12278
	SELECT rt.PROJ_ID INTO ProjId
12279
	  FROM RELEASE_TAGS rt
12280
	 WHERE rt.RTAG_ID = nRtagId;
12281
 
12282
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12283
	  FROM RELEASE_TAGS rt
12284
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12285
	   AND rt.RTAG_ID != nRtagId
12286
	   AND rt.PROJ_ID = ProjId;
12287
 
12288
 
12289
	IF (RecCount > 0) THEN
12290
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12291
	END IF;
12292
	/*-------------------------------------------------------*/
12293
 
12294
 
12295
 
12296
	-- Update release details
12297
	UPDATE RELEASE_TAGS rt SET
12298
	rt.RTAG_NAME = sReleaseName,
12299
	rt.DESCRIPTION = sReleaseComments,
12300
	rt.PARENT_RTAG_ID = nParentRtagId,
12301
	rt.ASSOC_MASS_REF = nMASSRtagId,
12302
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
12303
	WHERE rt.RTAG_ID = nRtagId; 
12304
 
12305
	-- Update display Order
12306
	UPDATE_DISPLAY_ORDER ( ProjId );
12307
 
12308
	/* Log Project Action */
12309
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
12310
 
12311
 
12312
 
12313
 
12314
END;
12315
/*-------------------------------------------------------------------------------------------------------*/
12316
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12317
 
12318
	RecCount NUMBER := 0;
12319
	sReleaseId VARCHAR2(4000);
12320
	ProjId NUMBER;
12321
 
12322
BEGIN
12323
	/*--------------- Business Rules Here -------------------*/
12324
	IF (nRtagId IS NULL) 
12325
	THEN
12326
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12327
	END IF;
12328
 
12329
 
12330
 
12331
	-- Check for any kids
12332
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
12333
	  FROM RELEASE_TAGS rt
12334
	 WHERE rt.PARENT_RTAG_ID = nRtagId
12335
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
12336
 
12337
	IF (RecCount > 0) THEN
12338
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
12339
	END IF; 
12340
	/*-------------------------------------------------------*/
12341
 
12342
	-- Clear the release contents
12343
	Clean_Release_Contents ( nRtagId, nUserId );
12344
 
12345
	/* Log Project Action */
12346
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
12347
	  FROM RELEASE_TAGS rt
12348
	 WHERE rt.RTAG_ID = nRtagId;
12349
 
12350
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
12351
 
12352
 
12353
	-- Remove Release
12354
	DELETE 
12355
	  FROM RELEASE_TAGS rt
12356
	 WHERE rt.RTAG_ID = nRtagId;
12357
 
12358
 
12359
 
12360
END;
12361
/*-------------------------------------------------------------------------------------------------------*/
12362
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
12363
 
12364
	sSourceLocation VARCHAR2(4000);
12365
	sTargetLocation VARCHAR2(4000);
12366
	ProjId NUMBER;
12367
	cReleaseMode CHAR(1);
12368
 
12369
 
12370
BEGIN
12371
	/*--------------- Business Rules Here -------------------*/
12372
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
12373
	THEN
12374
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
12375
	END IF;
12376
 
12377
	IF (nSourceRtagId = nTargetRtagId) THEN
12378
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
12379
	END IF;
12380
 
12381
 
12382
	-- Check if Target release is in OPEN mode
12383
	SELECT rt.OFFICIAL  INTO  cReleaseMode
12384
	  FROM RELEASE_TAGS rt
12385
	 WHERE rt.RTAG_ID = nTargetRtagId;
12386
 
12387
	IF (cReleaseMode != 'N') THEN
12388
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
12389
	END IF;	 
12390
 
12391
	/*-------------------------------------------------------*/
12392
 
12393
	-- Clean target contents
12394
	Clean_Release_Contents ( nTargetRtagId, nUserId );
12395
 
12396
 
12397
	-- Import Released Area Contents
12398
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
12399
	SELECT nTargetRtagId AS RTAG_ID, 
12400
		   rc.PV_ID, 
12401
		   rc.BASE_VIEW_ID, 
12402
		   rc.INSERT_STAMP, 
12403
		   rc.INSERTOR_ID, 
12404
		   rc.PKG_STATE
12405
	  FROM RELEASE_CONTENT rc
12406
	 WHERE rc.RTAG_ID = nSourceRtagId;
12407
 
12408
 
12409
	-- Import Ignore Warning states
12410
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
12411
	SELECT nTargetRtagId AS RTAG_ID,
12412
	       igw.PV_ID,
12413
	       igw.DPV_ID
12414
	  FROM IGNORE_WARNINGS igw
12415
	 WHERE igw.rtag_id = nSourceRtagId;
12416
 
12417
 
12418
	/* Log Project Action */
12419
	-- Get Source Location
12420
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
12421
	  FROM RELEASE_TAGS rt,
12422
	  	   PROJECTS pr
12423
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12424
	   AND rt.RTAG_ID = nSourceRtagId;
12425
 
12426
	-- Get Target Location
12427
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
12428
	  FROM RELEASE_TAGS rt,
12429
	  	   PROJECTS pr
12430
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12431
	   AND rt.RTAG_ID = nTargetRtagId;	   
12432
 
12433
	-- Get project id   
12434
	SELECT rt.PROJ_ID  INTO  ProjId
12435
	  FROM RELEASE_TAGS rt
12436
	 WHERE rt.RTAG_ID = nTargetRtagId;   
12437
 
12438
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
12439
 
12440
 
12441
END;
12442
/*-------------------------------------------------------------------------------------------------------*/
12443
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12444
 
12445
	RecCount NUMBER;
12446
 
12447
BEGIN
12448
	/*--------------- Business Rules Here -------------------*/
12449
	IF (nRtagId IS NULL) 
12450
	THEN
12451
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12452
	END IF;
12453
 
12454
 
12455
	-- Check if other release references this release
12456
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
12457
	  FROM RELEASE_LINKS rl
12458
	 WHERE rl.REF_RTAG_ID = nRtagId;
12459
 
12460
	IF (RecCount > 0) THEN
12461
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
12462
	END IF; 	
12463
	/*-------------------------------------------------------*/
12464
 
12465
	-- Delete Release links
12466
	DELETE 
12467
	  FROM RELEASE_LINKS rl
12468
	 WHERE rl.RTAG_ID = nRtagId;
12469
 
12470
	-- Delete ignore warning
12471
	DELETE 
12472
	  FROM IGNORE_WARNINGS iw
12473
	 WHERE iw.RTAG_ID = nRtagId;
12474
 
12475
 
12476
	-- Delete Build Order cached calculations	  
12477
	DELETE
12478
	  FROM BUILD_ORDER bo
12479
	 WHERE bo.RTAG_ID = nRtagId;
12480
 
12481
 
12482
	-- Delete Notification History
12483
	DELETE
12484
	  FROM NOTIFICATION_HISTORY nh
12485
	 WHERE nh.RTAG_ID = nRtagId;
12486
 
12487
 
12488
	-- Delete Released Area Contents
12489
	DELETE
12490
	  FROM RELEASE_CONTENT rc
12491
	 WHERE rc.RTAG_ID = nRtagId;
12492
 
12493
 
12494
	-- Delete Work In Progress Area Contents
12495
	DELETE
12496
	  FROM WORK_IN_PROGRESS wip
12497
	 WHERE wip.RTAG_ID = nRtagId;
12498
 
12499
 
12500
	-- Delete Pending Area Contents
12501
	DELETE 
12502
	  FROM PLANNED pl
12503
	 WHERE pl.RTAG_ID = nRtagId;
12504
 
12505
 
12506
END;
12507
/*-------------------------------------------------------------------------------------------------------*/
12508
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
12509
 
12510
	nSourceParentRtagId NUMBER;
12511
 
12512
BEGIN
12513
	/*--------------- Business Rules Here -------------------*/
12514
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
12515
	THEN
12516
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
12517
	END IF;
12518
	/*-------------------------------------------------------*/
12519
 
12520
 
12521
	IF ( nSourceRtagId IS NULL ) THEN
12522
		-- Create new on main branch
12523
		RETURN nRtagId;
12524
 
12525
	ELSE
12526
		-- Create from source rtag_id
12527
 
12528
		-- Find parent of Source RtagId
12529
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
12530
		  FROM RELEASE_TAGS rt
12531
		 WHERE rt.RTAG_ID = nSourceRtagId;
12532
 
12533
		IF (UPPER(cIsBranch) = 'Y') THEN
12534
			RETURN nSourceRtagId;
12535
		ELSE
12536
			IF (nSourceRtagId = nSourceParentRtagId) THEN
12537
				RETURN nRtagId;
12538
			ELSE
12539
				RETURN nSourceParentRtagId;
12540
			END IF;
12541
		END IF;	
12542
 
12543
 
12544
	END IF;
12545
 
12546
 
12547
END;
12548
/*-------------------------------------------------------------------------------------------------------*/
12549
 
12550
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
12551
-- 							 sNextVersion OUT VARCHAR2,
12552
-- 							 nNextLifeCycle OUT NUMBER,
12553
-- 							 nParentRtagId OUT NUMBER,
12554
-- 							 nProjId IN NUMBER ) IS
12555
-- 							
12556
-- SourceBranchCount NUMBER;
12557
-- ProjRootVersion VARCHAR2(4000);
12558
-- LastLifeCycle NUMBER;
12559
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
12560
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
12561
-- 
12562
-- SourceProjId NUMBER; 
12563
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
12564
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
12565
-- 
12566
-- BEGIN
12567
-- 	/*--------------- Business Rules Here -------------------*/
12568
-- 	/*-------------------------------------------------------*/
12569
-- 	
12570
-- 	   
12571
-- 	BEGIN
12572
-- 		-- Get Project root version
12573
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
12574
-- 		  FROM RELEASE_TAGS rt
12575
-- 		 WHERE rt.PROJ_ID = nProjId
12576
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
12577
-- 	   
12578
-- 		EXCEPTION
12579
-- 		WHEN NO_DATA_FOUND THEN
12580
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
12581
-- 	END;		   
12582
-- 	
12583
-- 	
12584
-- 	
12585
-- 	 
12586
-- 	BEGIN
12587
-- 		-- Get info for source rtagid
12588
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
12589
-- 		  FROM RELEASE_TAGS rt
12590
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
12591
-- 	   
12592
-- 		EXCEPTION
12593
-- 		WHEN NO_DATA_FOUND THEN
12594
-- 		SourceProjId := NULL;
12595
-- 		SourceVersion := NULL;
12596
-- 		SourceLifeCycle := NULL;
12597
-- 	END;	  
12598
-- 	
12599
-- 	
12600
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
12601
-- 	
12602
-- 		/* Blank Release Required  OR  Release imported from other project */
12603
-- 		
12604
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
12605
-- 			/* No Releases found in the project, hence calculate next version available.  */
12606
-- 			
12607
-- 			-- Set parent rtag
12608
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
12609
-- 			
12610
-- 			
12611
-- 			BEGIN
12612
-- 				-- Get Next Available Global Root Version 
12613
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
12614
-- 				  FROM RELEASE_TAGS rt
12615
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
12616
-- 				
12617
-- 				-- Set Next Rtag Version
12618
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
12619
-- 				
12620
-- 				-- Restart Lifecycle
12621
-- 				nNextLifeCycle := 0;
12622
-- 				
12623
-- 				
12624
-- 				EXCEPTION
12625
-- 				WHEN NO_DATA_FOUND THEN
12626
-- 				-- Release Manager has no releases, hence start from 1
12627
-- 				sNextVersion := '1';
12628
-- 				nNextLifeCycle := 0;
12629
-- 				
12630
-- 			END;
12631
-- 			
12632
-- 			
12633
-- 					
12634
-- 		ELSE
12635
-- 			/* Releases found in this project. */
12636
-- 							   
12637
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
12638
-- 			  FROM (
12639
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
12640
-- 					  FROM RELEASE_TAGS rt
12641
-- 					 WHERE rt.PROJ_ID = nProjId
12642
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
12643
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
12644
-- 			  		) qry
12645
-- 			 WHERE ROWNUM = 1;		
12646
-- 
12647
-- 			
12648
-- 			-- Set same Rtag Version
12649
-- 			sNextVersion := ProjRootVersion;
12650
-- 			
12651
-- 			-- Increase Lifecycle
12652
-- 			nNextLifeCycle := LastLifeCycle + 1;
12653
-- 		
12654
-- 		END IF;
12655
-- 				
12656
-- 	
12657
-- 		
12658
-- 	ELSE
12659
-- 		/* Create Release From other release within this project */
12660
-- 		
12661
-- 		-- Set parent id
12662
-- 		nParentRtagId := nSourceRtagId;
12663
-- 		
12664
-- 		
12665
-- 		-- Get number of source branches
12666
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
12667
-- 		  FROM RELEASE_TAGS rt
12668
-- 		 WHERE rt.PROJ_ID = nProjId
12669
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
12670
-- 		   
12671
-- 		   
12672
-- 		IF SourceBranchCount = 0 THEN
12673
-- 			/* Release is Head (i.e. Tip on its branch ) */
12674
-- 			
12675
-- 			-- Set Next Rtag Version
12676
-- 			sNextVersion := SourceVersion;
12677
-- 			
12678
-- 			-- Increase Lifecycle
12679
-- 			nNextLifeCycle := SourceLifeCycle + 1;
12680
-- 			
12681
-- 			
12682
-- 		ELSIF SourceBranchCount = 1 THEN
12683
-- 			/* Release IS NOT Head, but can be branched */
12684
-- 			
12685
-- 			-- Set Next Rtag Version
12686
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
12687
-- 			
12688
-- 			-- Reset Lifecycle to 1
12689
-- 			nNextLifeCycle := 1;
12690
-- 			
12691
-- 			
12692
-- 		ELSE	
12693
-- 			-- Limit of two branches is reached
12694
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
12695
-- 			
12696
-- 		END IF;	
12697
-- 			
12698
-- 			
12699
-- 		
12700
-- 		
12701
-- 		
12702
-- 	
12703
-- 	END IF;
12704
-- 	
12705
-- 		
12706
-- END;
12707
 
12708
/*-------------------------------------------------------------------------------------------------------*/
12709
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12710
 
12711
	IsBaseView CHAR(1);
12712
 
12713
BEGIN
12714
 
12715
	-- Check if the view is BASE VIEW
12716
	SELECT vi.BASE_VIEW INTO IsBaseView
12717
	  FROM VIEWS vi
12718
	 WHERE vi.VIEW_ID = ViewId;
12719
 
12720
	IF (IsBaseView = 'Y') THEN 
12721
		-- Get Base view content
12722
		OPEN RecordSet FOR
12723
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12724
			   pv.pv_id, 
12725
			   pkg.pkg_name, 
12726
			   pv.pkg_version, 
12727
			   pv.dlocked, 
12728
			   pv.pv_description,
12729
			   pv.BUILD_TYPE
12730
		  FROM release_content rel,
12731
		       packages pkg,
12732
		       package_versions pv
12733
		 WHERE pv.pkg_id = pkg.pkg_id
12734
		   AND rel.pv_id = pv.pv_id
12735
		   AND rel.BASE_VIEW_ID = ViewId
12736
		   AND rel.RTAG_ID = RtagId
12737
		 ORDER BY UPPER(pkg.PKG_NAME);
12738
 
12739
	ELSE	 
12740
 
12741
	 	-- Get non base view content
12742
		OPEN RecordSet FOR
12743
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_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 release_content 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);		 
12760
 
12761
	END IF;	 	 
12762
 
12763
 
12764
 
12765
 
12766
END;
12767
/*-------------------------------------------------------------------------------------------------------*/
12768
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12769
 
12770
	ReleaseLocation VARCHAR2(4000);
12771
	sPkgVersion VARCHAR2(4000);
12772
	nPkgId NUMBER;
12773
	sVExt VARCHAR2(4000);
12774
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
12775
 
12776
	-- Find package for replacement
12777
	CURSOR curReplacePkg IS
12778
    SELECT pv.PV_ID
12779
	  FROM RELEASE_CONTENT rc,
12780
	  	   PACKAGE_VERSIONS pv
12781
	 WHERE rc.PV_ID = pv.PV_ID
12782
	   AND rc.RTAG_ID = RtagId
12783
	   AND pv.PKG_ID = nPkgId
12784
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
12785
    recReplacePkg curReplacePkg%ROWTYPE;
12786
 
12787
BEGIN
12788
 
12789
	-- Get is_patch, pkg_id and v_ext
12790
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
12791
	  FROM PACKAGE_VERSIONS pv
12792
	 WHERE pv.PV_ID = newPvId;
12793
 
12794
 
12795
	-- Never put patch in relesed area
12796
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
12797
 
12798
		-- Try to get a package to be replaced with this new one.
12799
		-- Use unique constraint of PKG_ID and V_EXT
12800
		OPEN curReplacePkg;
12801
	    FETCH curReplacePkg INTO recReplacePkg;
12802
 
12803
	    IF curReplacePkg%FOUND THEN
12804
			-- Replace package
12805
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
12806
 
12807
		ELSE
12808
			-- Add new package
12809
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
12810
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
12811
 
12812
 
12813
		    /* LOG ACTION */
12814
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12815
			  FROM PROJECTS proj,
12816
			  	   RELEASE_TAGS rt
12817
			 WHERE rt.PROJ_ID = proj.PROJ_ID
12818
			   AND rt.RTAG_ID = RtagId;
12819
 
12820
			SELECT pv.PKG_VERSION INTO sPkgVersion
12821
			  FROM PACKAGE_VERSIONS pv
12822
			 WHERE pv.PV_ID = newPvId;
12823
 
12824
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12825
 
12826
 
12827
		END IF;
12828
 
12829
		CLOSE curReplacePkg;
12830
 
12831
	END IF;
12832
 
12833
END;
12834
/*-------------------------------------------------------------------------------------------------------*/
12835
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12836
 
12837
	ReleaseLocation VARCHAR2(4000);
12838
	sPkgVersion VARCHAR2(4000);
12839
 
12840
BEGIN
12841
 
12842
	-- Replace Package
12843
    UPDATE RELEASE_CONTENT
12844
       SET pv_id = newPvId,
12845
           insert_stamp = Ora_Sysdate,
12846
           insertor_id = UserId
12847
     WHERE rtag_id = RtagId
12848
       AND pv_id = oldPvId;
12849
 
12850
 
12851
    /* LOG ACTION */
12852
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12853
	  FROM PROJECTS proj,
12854
	  	   RELEASE_TAGS rt
12855
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12856
	   AND rt.RTAG_ID = RtagId;
12857
 
12858
	SELECT pv.PKG_VERSION INTO sPkgVersion
12859
	  FROM PACKAGE_VERSIONS pv
12860
	 WHERE pv.PV_ID = newPvId;
12861
 
12862
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
12863
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12864
 
12865
END;
12866
/*-------------------------------------------------------------------------------------------------------*/
12867
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12868
	ReleaseLocation VARCHAR2(4000);
12869
 
12870
BEGIN
12871
 
12872
 
12873
	-- Delete old package
12874
	DELETE
12875
	  FROM RELEASE_CONTENT rc
12876
	 WHERE rc.PV_ID = PvId
12877
	   AND rc.RTAG_ID = RtagId;
12878
 
12879
 
12880
	/* LOG ACTION */
12881
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12882
	  FROM PROJECTS proj,
12883
	       RELEASE_TAGS rt
12884
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12885
	   AND rt.RTAG_ID = RtagId;
12886
 
12887
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12888
 
12889
 
12890
END;
12891
/*-------------------------------------------------------------------------------------------------------*/
12892
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12893
	ReleaseLocation VARCHAR2(4000);
12894
 
12895
	CURSOR curMatchingPackage IS
12896
    SELECT mpv.PV_ID
12897
	  FROM RELEASE_CONTENT rc,
12898
	  	   PACKAGE_VERSIONS mpv,
12899
		   PACKAGE_VERSIONS pv
12900
	 WHERE rc.PV_ID = mpv.PV_ID
12901
	   AND rc.RTAG_ID = RtagId
12902
	   AND pv.PV_ID = PvId
12903
	   AND pv.PKG_ID = mpv.PKG_ID
12904
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
12905
    recMatchingPackage curMatchingPackage%ROWTYPE;
12906
 
12907
BEGIN
12908
 
12909
	OPEN curMatchingPackage;
12910
    FETCH curMatchingPackage INTO recMatchingPackage;
12911
 
12912
    IF curMatchingPackage%FOUND THEN
12913
		-- Delete old package
12914
		DELETE
12915
		  FROM RELEASE_CONTENT rc
12916
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
12917
		   AND rc.RTAG_ID = RtagId;
12918
 
12919
 
12920
		/* LOG ACTION */
12921
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12922
		  FROM PROJECTS proj,
12923
		  	   RELEASE_TAGS rt
12924
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12925
		   AND rt.RTAG_ID = RtagId;
12926
 
12927
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12928
 
12929
	END IF;
12930
 
12931
 
12932
	CLOSE curMatchingPackage;
12933
 
12934
 
12935
 
12936
 
12937
END;
12938
/*-------------------------------------------------------------------------------------------------------*/
12939
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12940
 
12941
	ReturnValue NUMBER;
12942
 
12943
BEGIN
12944
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
12945
	  FROM RELEASE_CONTENT rc
12946
	 WHERE rc.RTAG_ID = RtagId
12947
	   AND rc.PV_ID = PvId;
12948
 
12949
	RETURN ReturnValue;
12950
END;
12951
/*-------------------------------------------------------------------------------------------------------*/
12952
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
12953
 
12954
BEGIN
12955
	-- Reset Ignore warnings up-the-tree
12956
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
12957
 
12958
	-- Refresh Package states
12959
	TOUCH_RELEASE ( RtagId );
12960
 
12961
END;
12962
/*-------------------------------------------------------------------------------------------------------*/
12963
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
12964
	CURSOR curReleases IS
12965
    SELECT rc.RTAG_ID
12966
	  FROM RELEASE_CONTENT rc
12967
	 WHERE rc.PV_ID = PvId;
12968
    recReleases curReleases%ROWTYPE;
12969
 
12970
BEGIN
12971
 
12972
	OPEN curReleases;
12973
    FETCH curReleases INTO recReleases;
12974
 
12975
	WHILE curReleases%FOUND
12976
	LOOP
12977
 
12978
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
12979
 
12980
		FETCH curReleases INTO recReleases;
12981
	END LOOP;
12982
 
12983
	CLOSE curReleases;	
12984
 
12985
END;
12986
/*-------------------------------------------------------------------------------------------------------*/
12987
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12988
 
12989
BEGIN
12990
 
12991
	UPDATE RELEASE_CONTENT rc SET
12992
	rc.BASE_VIEW_ID = NewViewId
12993
	WHERE rc.PV_ID = PvId
12994
	  AND rc.RTAG_ID = RtagId;
12995
 
12996
END;
12997
/*-------------------------------------------------------------------------------------------------------*/
12998
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
12999
 
13000
	RowCount NUMBER;
13001
 
13002
 
13003
	CURSOR curPackageClash IS
13004
	SELECT pkg.PKG_NAME,
13005
		   er.*
13006
	  FROM (
13007
 
13008
	  		/* Get existing referenced packages */
13009
			SELECT pv.PKG_ID,
13010
			       pv.V_EXT
13011
			  FROM RELEASE_LINKS rl,
13012
			  	   RELEASE_CONTENT rc,
13013
			  	   PACKAGE_VERSIONS pv
13014
			 WHERE rl.RTAG_ID = nRtagId
13015
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
13016
			   AND rc.PV_ID = pv.PV_ID
13017
 
13018
	  	    ) er,
13019
			(
13020
 
13021
			/* Get current reference packages */
13022
			SELECT pv.PKG_ID,
13023
			       pv.V_EXT
13024
			  FROM RELEASE_CONTENT rc,
13025
			  	   PACKAGE_VERSIONS pv
13026
			 WHERE rc.RTAG_ID = nRefRtagId
13027
			   AND rc.PV_ID = pv.PV_ID    
13028
 
13029
			) cr,
13030
			PACKAGES PKG
13031
	 WHERE er.PKG_ID = cr.PKG_ID
13032
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13033
	   AND er.PKG_ID = pkg.PKG_ID;
13034
 
13035
	recPackageClash curPackageClash%ROWTYPE;	   
13036
 
13037
BEGIN
13038
	/*--------------- Business Rules Here -------------------*/
13039
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13040
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13041
	END IF;
13042
 
13043
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13044
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13045
	END IF;
13046
	/*-------------------------------------------------------*/
13047
	ProblemString := NULL;
13048
 
13049
 
13050
	-- Check if release already has references
13051
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
13052
	  FROM RELEASE_LINKS rl
13053
	 WHERE rl.RTAG_ID = nRtagId;	
13054
 
13055
 
13056
	IF RowCount > 0 THEN
13057
		-- Found existing references
13058
 
13059
		-- Make sure there is no package clashes
13060
		OPEN curPackageClash;
13061
	    FETCH curPackageClash INTO recPackageClash;
13062
 
13063
		IF curPackageClash%FOUND THEN
13064
 
13065
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
13066
 
13067
			WHILE curPackageClash%FOUND
13068
			LOOP
13069
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
13070
 
13071
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
13072
 
13073
				FETCH curPackageClash INTO recPackageClash;
13074
			END LOOP;
13075
 
13076
		END IF;
13077
 
13078
		CLOSE curPackageClash;
13079
 
13080
 
13081
	ELSE
13082
		-- No references found, hence reference a release
13083
 
13084
 
13085
		-- Remove exising package from this release to be referenced
13086
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
13087
 
13088
 
13089
		-- Add new linked packages to release
13090
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13091
		SELECT nRtagId,
13092
			   rc.PV_ID,
13093
			   rc.BASE_VIEW_ID, 
13094
			   rc.INSERT_STAMP, 
13095
			   rc.INSERTOR_ID, 
13096
			   rc.PKG_STATE
13097
		  FROM RELEASE_CONTENT rc
13098
		 WHERE rc.RTAG_ID = nRefRtagId;
13099
 
13100
 
13101
 
13102
		-- Copy ignore warnings for referenced packages
13103
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
13104
		SELECT nRtagId, 
13105
			   iw.PV_ID, 
13106
			   iw.DPV_ID, 
13107
			   iw.IS_PATCH_IGNORE
13108
		  FROM IGNORE_WARNINGS iw,
13109
		  	   RELEASE_CONTENT rc
13110
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
13111
		   AND iw.PV_ID = rc.PV_ID
13112
		   AND rc.RTAG_ID = nRefRtagId;	 
13113
 
13114
 
13115
 
13116
		-- Reference release 
13117
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
13118
		VALUES ( nRtagId, nRefRtagId );		 
13119
 
13120
 
13121
		-- Refresh Package states
13122
		TOUCH_RELEASE ( nRtagId );
13123
 
13124
	END IF;	 
13125
 
13126
 
13127
END;
13128
/*-------------------------------------------------------------------------------------------------------*/
13129
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
13130
 
13131
 
13132
BEGIN
13133
	/*--------------- Business Rules Here -------------------*/
13134
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13135
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13136
	END IF;
13137
 
13138
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13139
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13140
	END IF;
13141
 
13142
	/*-------------------------------------------------------*/
13143
 
13144
 
13145
	-- Remove ignore warnings for those packages who use referenced packages
13146
	DELETE FROM IGNORE_WARNINGS iw
13147
	 WHERE iw.RTAG_ID = nRtagId
13148
	   AND iw.DPV_ID IN (
13149
	   						SELECT dep.DPV_ID
13150
							  FROM (
13151
 
13152
									/* Get referenced packages */
13153
									SELECT pv.PKG_ID,
13154
									       pv.V_EXT
13155
									  FROM RELEASE_CONTENT rc,
13156
									  	   PACKAGE_VERSIONS pv
13157
									 WHERE rc.RTAG_ID = nRefRtagId
13158
									   AND rc.PV_ID = pv.PV_ID    
13159
 
13160
									) cr,
13161
									(
13162
 
13163
									/* Get all dependencies for current release */
13164
									SELECT DISTINCT 
13165
										   pv.PKG_ID,
13166
										   pv.V_EXT,
13167
										   dep.DPV_ID
13168
									  FROM RELEASE_CONTENT rc,
13169
										   PACKAGE_DEPENDENCIES dep,
13170
										   PACKAGE_VERSIONS pv
13171
									 WHERE rc.RTAG_ID = nRtagId
13172
									   AND rc.PV_ID = dep.PV_ID		
13173
									   AND dep.PV_ID = pv.PV_ID	   
13174
 
13175
									) dep
13176
							 WHERE dep.PKG_ID = cr.PKG_ID
13177
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13178
	   					);  
13179
 
13180
 
13181
 
13182
 
13183
	-- Remove ignore warnings for those package which are going to be replaced with the reference
13184
	DELETE FROM IGNORE_WARNINGS iw
13185
	 WHERE iw.RTAG_ID = nRtagId
13186
	   AND iw.PV_ID IN (
13187
						SELECT pv.PV_ID
13188
						  FROM (
13189
 
13190
								/* Get referenced packages */
13191
								SELECT pv.PKG_ID,
13192
								       pv.V_EXT
13193
								  FROM RELEASE_CONTENT rc,
13194
								  	   PACKAGE_VERSIONS pv
13195
								 WHERE rc.RTAG_ID = nRefRtagId
13196
								   AND rc.PV_ID = pv.PV_ID    
13197
 
13198
								) cr,
13199
								RELEASE_CONTENT rc,
13200
								PACKAGE_VERSIONS pv
13201
						 WHERE pv.PKG_ID = cr.PKG_ID
13202
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13203
						   AND rc.RTAG_ID = nRtagId
13204
						   AND rc.PV_ID = pv.PV_ID
13205
						);			
13206
 
13207
 
13208
 
13209
 
13210
 
13211
	-- Remove matching packages from release
13212
	DELETE FROM RELEASE_CONTENT rc
13213
	 WHERE rc.RTAG_ID = nRtagId
13214
	   AND rc.PV_ID IN (
13215
						SELECT pv.PV_ID
13216
						  FROM (
13217
 
13218
								/* Get referenced packages */
13219
								SELECT pv.PKG_ID,
13220
								       pv.V_EXT
13221
								  FROM RELEASE_CONTENT rc,
13222
								  	   PACKAGE_VERSIONS pv
13223
								 WHERE rc.RTAG_ID = nRefRtagId
13224
								   AND rc.PV_ID = pv.PV_ID    
13225
 
13226
								) cr,
13227
								RELEASE_CONTENT rc,
13228
								PACKAGE_VERSIONS pv
13229
						 WHERE pv.PKG_ID = cr.PKG_ID
13230
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13231
						   AND rc.RTAG_ID = nRtagId
13232
						   AND rc.PV_ID = pv.PV_ID
13233
						);	
13234
 
13235
 
13236
 
13237
 
13238
 
13239
	-- Remove Reference release 
13240
	DELETE 
13241
	  FROM RELEASE_LINKS rl
13242
	 WHERE rl.RTAG_ID = nRtagId
13243
	   AND rl.REF_RTAG_ID = nRefRtagId;
13244
 
13245
 
13246
	-- Refresh Package states
13247
	TOUCH_RELEASE ( nRtagId );
13248
 
13249
 
13250
END;
13251
/*-------------------------------------------------------------------------------------------------------*/
13252
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
13253
 
13254
	cReleaseMode CHAR(1);
13255
	cPvMode CHAR(1);
13256
 
13257
BEGIN
13258
 
13259
	-- Get Release Mode
13260
	SELECT rt.OFFICIAL INTO cReleaseMode
13261
	  FROM RELEASE_TAGS rt
13262
	 WHERE rt.RTAG_ID = RtagId;
13263
 
13264
 
13265
	-- Get Package Mode
13266
	SELECT pv.DLOCKED INTO cPvMode
13267
	  FROM PACKAGE_VERSIONS pv
13268
	 WHERE pv.PV_ID = PvId;	 
13269
 
13270
	-- Only check if package is locked 
13271
	IF (cPvMode = 'Y') THEN
13272
 
13273
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
13274
		THEN
13275
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
13276
 
13277
		END IF;
13278
 
13279
	END IF;	
13280
 
13281
 
13282
END;
13283
/*-------------------------------------------------------------------------------------------------------*/
13284
END PK_RELEASE_TEST;
13285
/
13286
 
13287
CREATE OR REPLACE PACKAGE BODY PK_RELEASE IS
13288
 
13289
 
13290
/*
13291
------------------------------
13292
||  Last Modified:  S.Vukovic
13293
||  Modified Date:  12/Sep/2005
13294
||  Body Version:   3.0
13295
------------------------------
13296
*/
13297
 
13298
 
13299
/*-------------------------------------------------------------------------------------------------------*/
13300
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
13301
 
13302
RtagId NUMBER;
13303
ParentRtagId NUMBER;
13304
RecCount NUMBER := 0;
13305
VtreeId NUMBER;
13306
 
13307
 
13308
BEGIN
13309
	/*--------------- Business Rules Here -------------------*/
13310
	-- Check for missing parameters
13311
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
13312
	THEN
13313
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
13314
 
13315
	END IF;
13316
 
13317
 
13318
	-- Check for duplicate Release Names
13319
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13320
	  FROM RELEASE_TAGS rt
13321
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13322
	   AND rt.PROJ_ID = nProjId;
13323
 
13324
	IF (RecCount > 0) THEN
13325
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13326
	END IF;
13327
	/*-------------------------------------------------------*/
13328
 
13329
 
13330
	-- Get rtag_id
13331
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
13332
 
13333
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
13334
 
13335
 
13336
 
13337
	-- Get Parent RtagId
13338
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
13339
 
13340
 
13341
	-- Create new release
13342
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
13343
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
13344
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
13345
	VALUES ( RtagId, 
13346
			 sReleaseName, 
13347
			 sReleaseComments,
13348
			 ORA_SYSDATE,
13349
			 nUserId,
13350
			 'N',
13351
			 'N',
13352
			 0,
13353
			 ParentRtagId,
13354
			 nProjId,
13355
			 VtreeId );
13356
 
13357
	-- Update display Order
13358
	UPDATE_DISPLAY_ORDER ( nProjId );
13359
 
13360
	/* Log Project Action */
13361
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
13362
 
13363
 
13364
	-- Import Release Contents
13365
	IF (NOT nSourceRtagId IS NULL) THEN
13366
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
13367
 
13368
	END IF;
13369
 
13370
 
13371
 
13372
END;
13373
/*-------------------------------------------------------------------------------------------------------*/
13374
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
13375
 
13376
 
13377
BEGIN
13378
 
13379
 
13380
	/*--------------- Business Rules Here -------------------*/
13381
	/*-------------------------------------------------------*/
13382
 
13383
	UPDATE RELEASE_TAGS urt SET
13384
	urt.DISPLAY_ORDER = (
13385
						SELECT qry.REC_NUM
13386
						  FROM (	
13387
								SELECT rel.*, ROWNUM AS REC_NUM
13388
								  FROM (
13389
 
13390
								  		SELECT rt.RTAG_ID, 
13391
											   rt.DISPLAY_ORDER,
13392
										       DECODE( rt.PARENT_RTAG_ID, 
13393
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
13394
										  FROM RELEASE_TAGS rt
13395
										 WHERE rt.PROJ_ID = nProjId 
13396
 
13397
								  		) rel
13398
								START WITH rel.PARENT_RTAG_ID = 0
13399
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
13400
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
13401
								) qry
13402
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
13403
						)
13404
	WHERE urt.PROJ_ID = nProjId;
13405
 
13406
END;
13407
/*-------------------------------------------------------------------------------------------------------*/
13408
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
13409
 
13410
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
13411
	SeqNum NUMBER;
13412
 
13413
BEGIN
13414
 
13415
 
13416
	/*--------------- Business Rules Here -------------------*/
13417
	/*-------------------------------------------------------*/
13418
 
13419
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
13420
 
13421
	-- Set start sequence number
13422
	SeqNum := 1;
13423
 
13424
	FOR i IN 1..nIdCollector.COUNT
13425
	LOOP
13426
 
13427
		-- Update new display order
13428
		UPDATE RELEASE_TAGS rt SET
13429
			rt.DISPLAY_ORDER = SeqNum
13430
		 WHERE rt.PROJ_ID = nProjId
13431
		   AND rt.RTAG_ID = nIdCollector(i);
13432
 
13433
		SeqNum := SeqNum + 1;
13434
 
13435
	END LOOP;
13436
 
13437
END;
13438
/*-------------------------------------------------------------------------------------------------------*/
13439
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
13440
 
13441
RecCount NUMBER := 0;
13442
ProjId NUMBER;
13443
 
13444
BEGIN
13445
 
13446
 
13447
	/*--------------- Business Rules Here -------------------*/
13448
	-- Check for missing parameters
13449
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
13450
	THEN
13451
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
13452
 
13453
	END IF;
13454
 
13455
 
13456
	-- Check for duplicate Release Names
13457
	SELECT rt.PROJ_ID INTO ProjId
13458
	  FROM RELEASE_TAGS rt
13459
	 WHERE rt.RTAG_ID = nRtagId;
13460
 
13461
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13462
	  FROM RELEASE_TAGS rt
13463
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13464
	   AND rt.RTAG_ID != nRtagId
13465
	   AND rt.PROJ_ID = ProjId;
13466
 
13467
 
13468
	IF (RecCount > 0) THEN
13469
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13470
	END IF;
13471
	/*-------------------------------------------------------*/
13472
 
13473
 
13474
 
13475
	-- Update release details
13476
	UPDATE RELEASE_TAGS rt SET
13477
	rt.RTAG_NAME = sReleaseName,
13478
	rt.DESCRIPTION = sReleaseComments,
13479
	rt.PARENT_RTAG_ID = nParentRtagId,
13480
	rt.ASSOC_MASS_REF = nMASSRtagId,
13481
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
13482
	rt.OWNER_EMAIL = sOwnerEmail,
13483
	rt.PRODUCT_STATE_USED = cState
13484
	WHERE rt.RTAG_ID = nRtagId; 
13485
 
13486
	-- Update display Order
13487
	UPDATE_DISPLAY_ORDER ( ProjId );
13488
 
13489
	/* Log Project Action */
13490
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
13491
 
13492
 
13493
 
13494
 
13495
END;
13496
/*-------------------------------------------------------------------------------------------------------*/
13497
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13498
 
13499
	RecCount NUMBER := 0;
13500
	sReleaseId VARCHAR2(4000);
13501
	ProjId NUMBER;
13502
 
13503
BEGIN
13504
	/*--------------- Business Rules Here -------------------*/
13505
	IF (nRtagId IS NULL) 
13506
	THEN
13507
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13508
	END IF;
13509
 
13510
 
13511
 
13512
	-- Check for any kids
13513
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
13514
	  FROM RELEASE_TAGS rt
13515
	 WHERE rt.PARENT_RTAG_ID = nRtagId
13516
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
13517
 
13518
	IF (RecCount > 0) THEN
13519
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
13520
	END IF; 
13521
	/*-------------------------------------------------------*/
13522
 
13523
	-- Clear the release contents
13524
	Clean_Release_Contents ( nRtagId, nUserId );
13525
 
13526
	/* Log Project Action */
13527
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
13528
	  FROM RELEASE_TAGS rt
13529
	 WHERE rt.RTAG_ID = nRtagId;
13530
 
13531
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
13532
 
13533
 
13534
	-- Remove Release
13535
	DELETE 
13536
	  FROM RELEASE_TAGS rt
13537
	 WHERE rt.RTAG_ID = nRtagId;
13538
 
13539
 
13540
 
13541
END;
13542
/*-------------------------------------------------------------------------------------------------------*/
13543
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
13544
 
13545
	sSourceLocation VARCHAR2(4000);
13546
	sTargetLocation VARCHAR2(4000);
13547
	ProjId NUMBER;
13548
	cReleaseMode CHAR(1);
13549
	RconId NUMBER;
13550
 
13551
 
13552
	CURSOR curReleaseConfigs IS
13553
    SELECT *
13554
	  FROM RELEASE_CONFIG rc
13555
	 WHERE rc.RTAG_ID = nSourceRtagId;
13556
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
13557
 
13558
 
13559
BEGIN
13560
	/*--------------- Business Rules Here -------------------*/
13561
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
13562
	THEN
13563
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
13564
	END IF;
13565
 
13566
	IF (nSourceRtagId = nTargetRtagId) THEN
13567
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
13568
	END IF;
13569
 
13570
 
13571
	-- Check if Target release is in OPEN mode
13572
	SELECT rt.OFFICIAL  INTO  cReleaseMode
13573
	  FROM RELEASE_TAGS rt
13574
	 WHERE rt.RTAG_ID = nTargetRtagId;
13575
 
13576
	IF (cReleaseMode != 'N') THEN
13577
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
13578
	END IF;	 
13579
 
13580
	/*-------------------------------------------------------*/
13581
 
13582
	-- Clean target contents
13583
	Clean_Release_Contents ( nTargetRtagId, nUserId );
13584
 
13585
 
13586
	-- Import Released Area Contents
13587
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
13588
	SELECT nTargetRtagId AS RTAG_ID, 
13589
		   rc.PV_ID, 
13590
		   rc.BASE_VIEW_ID, 
13591
		   rc.INSERT_STAMP, 
13592
		   rc.INSERTOR_ID, 
13593
		   rc.PKG_STATE,
13594
		   rc.PKG_ID,
13595
		   rc.DEPRECATED_STATE
13596
	  FROM RELEASE_CONTENT rc
13597
	 WHERE rc.RTAG_ID = nSourceRtagId;
13598
 
13599
 
13600
	--Import Release Configuration Information
13601
	OPEN curReleaseConfigs;
13602
    FETCH curReleaseConfigs INTO recReleaseConfigs;
13603
 
13604
	WHILE curReleaseConfigs%FOUND
13605
	LOOP
13606
 
13607
		-- Get the next rcon id
13608
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
13609
 
13610
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
13611
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
13612
 
13613
		FETCH curReleaseConfigs INTO recReleaseConfigs;
13614
	END LOOP;
13615
 
13616
	CLOSE curReleaseConfigs;		
13617
 
13618
 
13619
 
13620
	-- Import Ignore Warning states
13621
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
13622
	SELECT nTargetRtagId AS RTAG_ID,
13623
	       igw.PV_ID,
13624
	       igw.DPV_ID
13625
	  FROM IGNORE_WARNINGS igw
13626
	 WHERE igw.rtag_id = nSourceRtagId;
13627
 
13628
 
13629
	/* Log Project Action */
13630
	-- Get Source Location
13631
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
13632
	  FROM RELEASE_TAGS rt,
13633
	  	   PROJECTS pr
13634
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13635
	   AND rt.RTAG_ID = nSourceRtagId;
13636
 
13637
	-- Get Target Location
13638
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
13639
	  FROM RELEASE_TAGS rt,
13640
	  	   PROJECTS pr
13641
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13642
	   AND rt.RTAG_ID = nTargetRtagId;	   
13643
 
13644
	-- Get project id   
13645
	SELECT rt.PROJ_ID  INTO  ProjId
13646
	  FROM RELEASE_TAGS rt
13647
	 WHERE rt.RTAG_ID = nTargetRtagId;   
13648
 
13649
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
13650
 
13651
 
13652
END;
13653
/*-------------------------------------------------------------------------------------------------------*/
13654
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13655
 
13656
	RecCount NUMBER;
13657
        rconIdList VARCHAR2(4000);
13658
 
13659
BEGIN
13660
	/*--------------- Business Rules Here -------------------*/
13661
	IF (nRtagId IS NULL) 
13662
	THEN
13663
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13664
	END IF;
13665
 
13666
 
13667
	-- Check if other release references this release
13668
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
13669
	  FROM RELEASE_LINKS rl
13670
	 WHERE rl.REF_RTAG_ID = nRtagId;
13671
 
13672
	IF (RecCount > 0) THEN
13673
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
13674
	END IF; 	
13675
	/*-------------------------------------------------------*/
13676
 
13677
	-- Delete Release links
13678
	DELETE 
13679
	  FROM RELEASE_LINKS rl
13680
	 WHERE rl.RTAG_ID = nRtagId;
13681
 
13682
	-- Delete ignore warning
13683
	DELETE 
13684
	  FROM IGNORE_WARNINGS iw
13685
	 WHERE iw.RTAG_ID = nRtagId;
13686
 
13687
 
13688
	-- Delete Build Order cached calculations	  
13689
	DELETE
13690
	  FROM BUILD_ORDER bo
13691
	 WHERE bo.RTAG_ID = nRtagId;
13692
 
13693
 
13694
	-- Delete Notification History
13695
	DELETE
13696
	  FROM NOTIFICATION_HISTORY nh
13697
	 WHERE nh.RTAG_ID = nRtagId;
13698
 
13699
 
13700
	-- Delete Released Area Contents
13701
	DELETE
13702
	  FROM RELEASE_CONTENT rc
13703
	 WHERE rc.RTAG_ID = nRtagId;
13704
 
13705
 
13706
	-- Delete Work In Progress Area Contents
13707
	DELETE
13708
	  FROM WORK_IN_PROGRESS wip
13709
	 WHERE wip.RTAG_ID = nRtagId;
13710
 
13711
 
13712
	-- Delete Pending Area Contents
13713
	DELETE 
13714
	  FROM PLANNED pl
13715
	 WHERE pl.RTAG_ID = nRtagId;
13716
 
13717
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
13718
	DELETE
13719
	  FROM DEPRECATED_PACKAGES dp
13720
	 WHERE dp.RTAG_ID = nRtagId; 
13721
 
13722
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
13723
	DELETE
13724
	  FROM PROJECT_ACTION_LOG pal
13725
	 WHERE pal.RTAG_ID = nRtagId;
13726
 
13727
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
13728
	DELETE
13729
	  FROM DO_NOT_RIPPLE dnr
13730
	 WHERE dnr.RTAG_ID = nRtagId; 
13731
 
13732
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
13733
	DELETE
13734
	  FROM DASH_BOARD db
13735
	 WHERE db.RTAG_ID = nRtagId;
13736
 
13737
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
13738
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
13739
        LOOP
13740
          rconIdList := rconIdList || rcon.RCON_ID || ',';
13741
        END LOOP;
13742
 
13743
        pk_buildapi.DELETE_DAEMON(rconIdList);
13744
 
13745
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
13746
        DELETE
13747
          FROM RELEASE_METRICS rm
13748
         WHERE rm.RTAG_ID = nRtagId;
13749
 
13750
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
13751
	DELETE
13752
	  FROM RELEASE_CONFIG rc
13753
	 WHERE rc.RTAG_ID = nRtagId;
13754
 
13755
 
13756
 
13757
END;
13758
/*-------------------------------------------------------------------------------------------------------*/
13759
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
13760
 
13761
	nSourceParentRtagId NUMBER;
13762
 
13763
BEGIN
13764
	/*--------------- Business Rules Here -------------------*/
13765
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
13766
	THEN
13767
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
13768
	END IF;
13769
	/*-------------------------------------------------------*/
13770
 
13771
 
13772
	IF ( nSourceRtagId IS NULL ) THEN
13773
		-- Create new on main branch
13774
		RETURN nRtagId;
13775
 
13776
	ELSE
13777
		-- Create from source rtag_id
13778
 
13779
		-- Find parent of Source RtagId
13780
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
13781
		  FROM RELEASE_TAGS rt
13782
		 WHERE rt.RTAG_ID = nSourceRtagId;
13783
 
13784
		IF (UPPER(cIsBranch) = 'Y') THEN
13785
			RETURN nSourceRtagId;
13786
		ELSE
13787
			IF (nSourceRtagId = nSourceParentRtagId) THEN
13788
				RETURN nRtagId;
13789
			ELSE
13790
				RETURN nSourceParentRtagId;
13791
			END IF;
13792
		END IF;	
13793
 
13794
 
13795
	END IF;
13796
 
13797
 
13798
END;
13799
/*-------------------------------------------------------------------------------------------------------*/
13800
 
13801
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
13802
-- 							 sNextVersion OUT VARCHAR2,
13803
-- 							 nNextLifeCycle OUT NUMBER,
13804
-- 							 nParentRtagId OUT NUMBER,
13805
-- 							 nProjId IN NUMBER ) IS
13806
-- 							
13807
-- SourceBranchCount NUMBER;
13808
-- ProjRootVersion VARCHAR2(4000);
13809
-- LastLifeCycle NUMBER;
13810
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
13811
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
13812
-- 
13813
-- SourceProjId NUMBER; 
13814
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
13815
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
13816
-- 
13817
-- BEGIN
13818
-- 	/*--------------- Business Rules Here -------------------*/
13819
-- 	/*-------------------------------------------------------*/
13820
-- 	
13821
-- 	   
13822
-- 	BEGIN
13823
-- 		-- Get Project root version
13824
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
13825
-- 		  FROM RELEASE_TAGS rt
13826
-- 		 WHERE rt.PROJ_ID = nProjId
13827
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
13828
-- 	   
13829
-- 		EXCEPTION
13830
-- 		WHEN NO_DATA_FOUND THEN
13831
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
13832
-- 	END;		   
13833
-- 	
13834
-- 	
13835
-- 	
13836
-- 	 
13837
-- 	BEGIN
13838
-- 		-- Get info for source rtagid
13839
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
13840
-- 		  FROM RELEASE_TAGS rt
13841
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
13842
-- 	   
13843
-- 		EXCEPTION
13844
-- 		WHEN NO_DATA_FOUND THEN
13845
-- 		SourceProjId := NULL;
13846
-- 		SourceVersion := NULL;
13847
-- 		SourceLifeCycle := NULL;
13848
-- 	END;	  
13849
-- 	
13850
-- 	
13851
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
13852
-- 	
13853
-- 		/* Blank Release Required  OR  Release imported from other project */
13854
-- 		
13855
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
13856
-- 			/* No Releases found in the project, hence calculate next version available.  */
13857
-- 			
13858
-- 			-- Set parent rtag
13859
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
13860
-- 			
13861
-- 			
13862
-- 			BEGIN
13863
-- 				-- Get Next Available Global Root Version 
13864
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
13865
-- 				  FROM RELEASE_TAGS rt
13866
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
13867
-- 				
13868
-- 				-- Set Next Rtag Version
13869
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
13870
-- 				
13871
-- 				-- Restart Lifecycle
13872
-- 				nNextLifeCycle := 0;
13873
-- 				
13874
-- 				
13875
-- 				EXCEPTION
13876
-- 				WHEN NO_DATA_FOUND THEN
13877
-- 				-- Release Manager has no releases, hence start from 1
13878
-- 				sNextVersion := '1';
13879
-- 				nNextLifeCycle := 0;
13880
-- 				
13881
-- 			END;
13882
-- 			
13883
-- 			
13884
-- 					
13885
-- 		ELSE
13886
-- 			/* Releases found in this project. */
13887
-- 							   
13888
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
13889
-- 			  FROM (
13890
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
13891
-- 					  FROM RELEASE_TAGS rt
13892
-- 					 WHERE rt.PROJ_ID = nProjId
13893
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
13894
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
13895
-- 			  		) qry
13896
-- 			 WHERE ROWNUM = 1;		
13897
-- 
13898
-- 			
13899
-- 			-- Set same Rtag Version
13900
-- 			sNextVersion := ProjRootVersion;
13901
-- 			
13902
-- 			-- Increase Lifecycle
13903
-- 			nNextLifeCycle := LastLifeCycle + 1;
13904
-- 		
13905
-- 		END IF;
13906
-- 				
13907
-- 	
13908
-- 		
13909
-- 	ELSE
13910
-- 		/* Create Release From other release within this project */
13911
-- 		
13912
-- 		-- Set parent id
13913
-- 		nParentRtagId := nSourceRtagId;
13914
-- 		
13915
-- 		
13916
-- 		-- Get number of source branches
13917
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
13918
-- 		  FROM RELEASE_TAGS rt
13919
-- 		 WHERE rt.PROJ_ID = nProjId
13920
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
13921
-- 		   
13922
-- 		   
13923
-- 		IF SourceBranchCount = 0 THEN
13924
-- 			/* Release is Head (i.e. Tip on its branch ) */
13925
-- 			
13926
-- 			-- Set Next Rtag Version
13927
-- 			sNextVersion := SourceVersion;
13928
-- 			
13929
-- 			-- Increase Lifecycle
13930
-- 			nNextLifeCycle := SourceLifeCycle + 1;
13931
-- 			
13932
-- 			
13933
-- 		ELSIF SourceBranchCount = 1 THEN
13934
-- 			/* Release IS NOT Head, but can be branched */
13935
-- 			
13936
-- 			-- Set Next Rtag Version
13937
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
13938
-- 			
13939
-- 			-- Reset Lifecycle to 1
13940
-- 			nNextLifeCycle := 1;
13941
-- 			
13942
-- 			
13943
-- 		ELSE	
13944
-- 			-- Limit of two branches is reached
13945
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
13946
-- 			
13947
-- 		END IF;	
13948
-- 			
13949
-- 			
13950
-- 		
13951
-- 		
13952
-- 		
13953
-- 	
13954
-- 	END IF;
13955
-- 	
13956
-- 		
13957
-- END;
13958
 
13959
/*-------------------------------------------------------------------------------------------------------*/
13960
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
13961
 
13962
	IsBaseView CHAR(1);
13963
 
13964
BEGIN
13965
 
13966
	-- Check if the view is BASE VIEW
13967
	SELECT vi.BASE_VIEW INTO IsBaseView
13968
	  FROM VIEWS vi
13969
	 WHERE vi.VIEW_ID = ViewId;
13970
 
13971
	IF (IsBaseView = 'Y') THEN 
13972
		-- Get Base view content
13973
		OPEN RecordSet FOR
13974
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13975
			   rel.deprecated_state,
13976
			   pv.pv_id, 
13977
			   pkg.pkg_name, 
13978
			   pv.pkg_version, 
13979
			   pv.dlocked, 
13980
			   pv.pv_description,
13981
			   pv.BUILD_TYPE
13982
		  FROM release_content rel,
13983
		       packages pkg,
13984
		       package_versions pv
13985
		 WHERE pv.pkg_id = pkg.pkg_id
13986
		   AND rel.pv_id = pv.pv_id
13987
		   AND rel.BASE_VIEW_ID = ViewId
13988
		   AND rel.RTAG_ID = RtagId
13989
		 ORDER BY UPPER(pkg.PKG_NAME);
13990
 
13991
	ELSE	 
13992
 
13993
	 	-- Get non base view content
13994
		OPEN RecordSet FOR
13995
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13996
			   rel.deprecated_state,
13997
			   pv.pv_id, 
13998
			   pkg.pkg_name, 
13999
			   pv.pkg_version, 
14000
			   pv.dlocked, 
14001
			   pv.pv_description,
14002
			   pv.BUILD_TYPE
14003
		  FROM release_content rel,
14004
		       packages pkg,
14005
		       package_versions pv,
14006
			   VIEW_DEF vd
14007
		 WHERE pv.pkg_id = pkg.pkg_id
14008
		   AND rel.pv_id = pv.pv_id
14009
		   AND vd.VIEW_ID = ViewId
14010
		   AND vd.PKG_ID = pv.PKG_ID
14011
		   AND rel.RTAG_ID = RtagId
14012
		 ORDER BY UPPER(pkg.PKG_NAME);		 
14013
 
14014
	END IF;	 	 
14015
 
14016
 
14017
 
14018
 
14019
END;
14020
/*-------------------------------------------------------------------------------------------------------*/
14021
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14022
 
14023
	ReleaseLocation VARCHAR2(4000);
14024
	sPkgVersion VARCHAR2(4000);
14025
	nPkgId NUMBER;
14026
	sVExt VARCHAR2(4000);
14027
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
14028
 
14029
	-- Find package for replacement
14030
	CURSOR curReplacePkg IS
14031
    SELECT pv.PV_ID
14032
	  FROM RELEASE_CONTENT rc,
14033
	  	   PACKAGE_VERSIONS pv
14034
	 WHERE rc.PV_ID = pv.PV_ID
14035
	   AND rc.RTAG_ID = RtagId
14036
	   AND pv.PKG_ID = nPkgId
14037
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
14038
    recReplacePkg curReplacePkg%ROWTYPE;
14039
 
14040
BEGIN
14041
 
14042
	-- Get is_patch, pkg_id and v_ext
14043
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
14044
	  FROM PACKAGE_VERSIONS pv
14045
	 WHERE pv.PV_ID = newPvId;
14046
 
14047
 
14048
	-- Never put patch in relesed area
14049
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
14050
 
14051
		-- Try to get a package to be replaced with this new one.
14052
		-- Use unique constraint of PKG_ID and V_EXT
14053
		OPEN curReplacePkg;
14054
	    FETCH curReplacePkg INTO recReplacePkg;
14055
 
14056
	    IF curReplacePkg%FOUND THEN
14057
			-- Replace package
14058
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
14059
 
14060
		ELSE
14061
			-- Add new package
14062
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
14063
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
14064
 
14065
 
14066
		    /* LOG ACTION */
14067
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14068
			  FROM PROJECTS proj,
14069
			  	   RELEASE_TAGS rt
14070
			 WHERE rt.PROJ_ID = proj.PROJ_ID
14071
			   AND rt.RTAG_ID = RtagId;
14072
 
14073
			SELECT pv.PKG_VERSION INTO sPkgVersion
14074
			  FROM PACKAGE_VERSIONS pv
14075
			 WHERE pv.PV_ID = newPvId;
14076
 
14077
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14078
 
14079
 
14080
		END IF;
14081
 
14082
		CLOSE curReplacePkg;
14083
 
14084
	END IF;
14085
 
14086
END;
14087
/*-------------------------------------------------------------------------------------------------------*/
14088
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14089
 
14090
	ReleaseLocation VARCHAR2(4000);
14091
	sPkgVersion VARCHAR2(4000);
14092
 
14093
BEGIN
14094
 
14095
	-- Replace Package
14096
    UPDATE RELEASE_CONTENT
14097
       SET pv_id = newPvId,
14098
           insert_stamp = Ora_Sysdate,
14099
           insertor_id = UserId,
14100
		   product_state = NULL
14101
     WHERE rtag_id = RtagId
14102
       AND pv_id = oldPvId;  
14103
 
14104
 
14105
    /* LOG ACTION */
14106
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14107
	  FROM PROJECTS proj,
14108
	  	   RELEASE_TAGS rt
14109
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14110
	   AND rt.RTAG_ID = RtagId;
14111
 
14112
	SELECT pv.PKG_VERSION INTO sPkgVersion
14113
	  FROM PACKAGE_VERSIONS pv
14114
	 WHERE pv.PV_ID = newPvId;
14115
 
14116
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
14117
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14118
 
14119
END;
14120
/*-------------------------------------------------------------------------------------------------------*/
14121
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14122
	ReleaseLocation VARCHAR2(4000);
14123
 
14124
BEGIN
14125
 
14126
 
14127
	-- Delete old package
14128
	DELETE
14129
	  FROM RELEASE_CONTENT rc
14130
	 WHERE rc.PV_ID = PvId
14131
	   AND rc.RTAG_ID = RtagId;
14132
 
14133
 
14134
	/* LOG ACTION */
14135
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14136
	  FROM PROJECTS proj,
14137
	       RELEASE_TAGS rt
14138
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14139
	   AND rt.RTAG_ID = RtagId;
14140
 
14141
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14142
 
14143
 
14144
END;
14145
/*-------------------------------------------------------------------------------------------------------*/
14146
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14147
	ReleaseLocation VARCHAR2(4000);
14148
 
14149
	CURSOR curMatchingPackage IS
14150
    SELECT mpv.PV_ID
14151
	  FROM RELEASE_CONTENT rc,
14152
	  	   PACKAGE_VERSIONS mpv,
14153
		   PACKAGE_VERSIONS pv
14154
	 WHERE rc.PV_ID = mpv.PV_ID
14155
	   AND rc.RTAG_ID = RtagId
14156
	   AND pv.PV_ID = PvId
14157
	   AND pv.PKG_ID = mpv.PKG_ID
14158
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
14159
    recMatchingPackage curMatchingPackage%ROWTYPE;
14160
 
14161
BEGIN
14162
 
14163
	OPEN curMatchingPackage;
14164
    FETCH curMatchingPackage INTO recMatchingPackage;
14165
 
14166
    IF curMatchingPackage%FOUND THEN
14167
		-- Delete old package
14168
		DELETE
14169
		  FROM RELEASE_CONTENT rc
14170
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
14171
		   AND rc.RTAG_ID = RtagId;
14172
 
14173
 
14174
		/* LOG ACTION */
14175
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14176
		  FROM PROJECTS proj,
14177
		  	   RELEASE_TAGS rt
14178
		 WHERE rt.PROJ_ID = proj.PROJ_ID
14179
		   AND rt.RTAG_ID = RtagId;
14180
 
14181
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14182
 
14183
	END IF;
14184
 
14185
 
14186
	CLOSE curMatchingPackage;
14187
 
14188
 
14189
 
14190
 
14191
END;
14192
/*-------------------------------------------------------------------------------------------------------*/
14193
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
14194
 
14195
	ReturnValue NUMBER;
14196
 
14197
BEGIN
14198
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
14199
	  FROM RELEASE_CONTENT rc
14200
	 WHERE rc.RTAG_ID = RtagId
14201
	   AND rc.PV_ID = PvId;
14202
 
14203
	RETURN ReturnValue;
14204
END;
14205
/*-------------------------------------------------------------------------------------------------------*/
14206
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
14207
 
14208
BEGIN
14209
	-- Reset Ignore warnings up-the-tree
14210
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
14211
 
14212
	-- Refresh Package states
14213
	TOUCH_RELEASE ( RtagId );
14214
 
14215
END;
14216
/*-------------------------------------------------------------------------------------------------------*/
14217
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
14218
	CURSOR curReleases IS
14219
    SELECT rc.RTAG_ID
14220
	  FROM RELEASE_CONTENT rc
14221
	 WHERE rc.PV_ID = PvId;
14222
    recReleases curReleases%ROWTYPE;
14223
 
14224
BEGIN
14225
 
14226
	OPEN curReleases;
14227
    FETCH curReleases INTO recReleases;
14228
 
14229
	WHILE curReleases%FOUND
14230
	LOOP
14231
 
14232
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
14233
 
14234
		FETCH curReleases INTO recReleases;
14235
	END LOOP;
14236
 
14237
	CLOSE curReleases;	
14238
 
14239
END;
14240
/*-------------------------------------------------------------------------------------------------------*/
14241
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
14242
 
14243
BEGIN
14244
 
14245
	UPDATE RELEASE_CONTENT rc SET
14246
	rc.BASE_VIEW_ID = NewViewId
14247
	WHERE rc.PV_ID = PvId
14248
	  AND rc.RTAG_ID = RtagId;
14249
 
14250
END;
14251
/*-------------------------------------------------------------------------------------------------------*/
14252
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
14253
 
14254
	RowCount NUMBER;
14255
 
14256
 
14257
	CURSOR curPackageClash IS
14258
	SELECT pkg.PKG_NAME,
14259
		   er.*
14260
	  FROM (
14261
 
14262
	  		/* Get existing referenced packages */
14263
			SELECT pv.PKG_ID,
14264
			       pv.V_EXT
14265
			  FROM RELEASE_LINKS rl,
14266
			  	   RELEASE_CONTENT rc,
14267
			  	   PACKAGE_VERSIONS pv
14268
			 WHERE rl.RTAG_ID = nRtagId
14269
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
14270
			   AND rc.PV_ID = pv.PV_ID
14271
 
14272
	  	    ) er,
14273
			(
14274
 
14275
			/* Get current reference packages */
14276
			SELECT pv.PKG_ID,
14277
			       pv.V_EXT
14278
			  FROM RELEASE_CONTENT rc,
14279
			  	   PACKAGE_VERSIONS pv
14280
			 WHERE rc.RTAG_ID = nRefRtagId
14281
			   AND rc.PV_ID = pv.PV_ID    
14282
 
14283
			) cr,
14284
			PACKAGES PKG
14285
	 WHERE er.PKG_ID = cr.PKG_ID
14286
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14287
	   AND er.PKG_ID = pkg.PKG_ID;
14288
 
14289
	recPackageClash curPackageClash%ROWTYPE;	   
14290
 
14291
BEGIN
14292
	/*--------------- Business Rules Here -------------------*/
14293
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14294
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14295
	END IF;
14296
 
14297
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14298
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14299
	END IF;
14300
	/*-------------------------------------------------------*/
14301
	ProblemString := NULL;
14302
 
14303
 
14304
	-- Check if release already has references
14305
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
14306
	  FROM RELEASE_LINKS rl
14307
	 WHERE rl.RTAG_ID = nRtagId;	
14308
 
14309
 
14310
	IF RowCount > 0 THEN
14311
		-- Found existing references
14312
 
14313
		-- Make sure there is no package clashes
14314
		OPEN curPackageClash;
14315
	    FETCH curPackageClash INTO recPackageClash;
14316
 
14317
		IF curPackageClash%FOUND THEN
14318
 
14319
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
14320
 
14321
			WHILE curPackageClash%FOUND
14322
			LOOP
14323
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
14324
 
14325
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
14326
 
14327
				FETCH curPackageClash INTO recPackageClash;
14328
			END LOOP;
14329
 
14330
		END IF;
14331
 
14332
		CLOSE curPackageClash;
14333
 
14334
 
14335
	ELSE
14336
		-- No references found, hence reference a release
14337
 
14338
 
14339
		-- Remove exising package from this release to be referenced
14340
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
14341
 
14342
 
14343
		-- Add new linked packages to release
14344
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14345
		SELECT nRtagId,
14346
			   rc.PV_ID,
14347
			   rc.BASE_VIEW_ID, 
14348
			   rc.INSERT_STAMP, 
14349
			   rc.INSERTOR_ID, 
14350
			   rc.PKG_STATE
14351
		  FROM RELEASE_CONTENT rc
14352
		 WHERE rc.RTAG_ID = nRefRtagId;
14353
 
14354
 
14355
 
14356
		-- Copy ignore warnings for referenced packages
14357
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
14358
		SELECT nRtagId, 
14359
			   iw.PV_ID, 
14360
			   iw.DPV_ID, 
14361
			   iw.IS_PATCH_IGNORE
14362
		  FROM IGNORE_WARNINGS iw,
14363
		  	   RELEASE_CONTENT rc
14364
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
14365
		   AND iw.PV_ID = rc.PV_ID
14366
		   AND rc.RTAG_ID = nRefRtagId;	 
14367
 
14368
 
14369
 
14370
		-- Reference release 
14371
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
14372
		VALUES ( nRtagId, nRefRtagId );		 
14373
 
14374
 
14375
		-- Refresh Package states
14376
		TOUCH_RELEASE ( nRtagId );
14377
 
14378
	END IF;	 
14379
 
14380
 
14381
END;
14382
/*-------------------------------------------------------------------------------------------------------*/
14383
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
14384
 
14385
 
14386
BEGIN
14387
	/*--------------- Business Rules Here -------------------*/
14388
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14389
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14390
	END IF;
14391
 
14392
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14393
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14394
	END IF;
14395
 
14396
	/*-------------------------------------------------------*/
14397
 
14398
 
14399
	-- Remove ignore warnings for those packages who use referenced packages
14400
	DELETE FROM IGNORE_WARNINGS iw
14401
	 WHERE iw.RTAG_ID = nRtagId
14402
	   AND iw.DPV_ID IN (
14403
	   						SELECT dep.DPV_ID
14404
							  FROM (
14405
 
14406
									/* Get referenced packages */
14407
									SELECT pv.PKG_ID,
14408
									       pv.V_EXT
14409
									  FROM RELEASE_CONTENT rc,
14410
									  	   PACKAGE_VERSIONS pv
14411
									 WHERE rc.RTAG_ID = nRefRtagId
14412
									   AND rc.PV_ID = pv.PV_ID    
14413
 
14414
									) cr,
14415
									(
14416
 
14417
									/* Get all dependencies for current release */
14418
									SELECT DISTINCT 
14419
										   pv.PKG_ID,
14420
										   pv.V_EXT,
14421
										   dep.DPV_ID
14422
									  FROM RELEASE_CONTENT rc,
14423
										   PACKAGE_DEPENDENCIES dep,
14424
										   PACKAGE_VERSIONS pv
14425
									 WHERE rc.RTAG_ID = nRtagId
14426
									   AND rc.PV_ID = dep.PV_ID		
14427
									   AND dep.PV_ID = pv.PV_ID	   
14428
 
14429
									) dep
14430
							 WHERE dep.PKG_ID = cr.PKG_ID
14431
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14432
	   					);  
14433
 
14434
 
14435
 
14436
 
14437
	-- Remove ignore warnings for those package which are going to be replaced with the reference
14438
	DELETE FROM IGNORE_WARNINGS iw
14439
	 WHERE iw.RTAG_ID = nRtagId
14440
	   AND iw.PV_ID IN (
14441
						SELECT pv.PV_ID
14442
						  FROM (
14443
 
14444
								/* Get referenced packages */
14445
								SELECT pv.PKG_ID,
14446
								       pv.V_EXT
14447
								  FROM RELEASE_CONTENT rc,
14448
								  	   PACKAGE_VERSIONS pv
14449
								 WHERE rc.RTAG_ID = nRefRtagId
14450
								   AND rc.PV_ID = pv.PV_ID    
14451
 
14452
								) cr,
14453
								RELEASE_CONTENT rc,
14454
								PACKAGE_VERSIONS pv
14455
						 WHERE pv.PKG_ID = cr.PKG_ID
14456
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14457
						   AND rc.RTAG_ID = nRtagId
14458
						   AND rc.PV_ID = pv.PV_ID
14459
						);			
14460
 
14461
 
14462
 
14463
 
14464
 
14465
	-- Remove matching packages from release
14466
	DELETE FROM RELEASE_CONTENT rc
14467
	 WHERE rc.RTAG_ID = nRtagId
14468
	   AND rc.PV_ID IN (
14469
						SELECT pv.PV_ID
14470
						  FROM (
14471
 
14472
								/* Get referenced packages */
14473
								SELECT pv.PKG_ID,
14474
								       pv.V_EXT
14475
								  FROM RELEASE_CONTENT rc,
14476
								  	   PACKAGE_VERSIONS pv
14477
								 WHERE rc.RTAG_ID = nRefRtagId
14478
								   AND rc.PV_ID = pv.PV_ID    
14479
 
14480
								) cr,
14481
								RELEASE_CONTENT rc,
14482
								PACKAGE_VERSIONS pv
14483
						 WHERE pv.PKG_ID = cr.PKG_ID
14484
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14485
						   AND rc.RTAG_ID = nRtagId
14486
						   AND rc.PV_ID = pv.PV_ID
14487
						);	
14488
 
14489
 
14490
 
14491
 
14492
 
14493
	-- Remove Reference release 
14494
	DELETE 
14495
	  FROM RELEASE_LINKS rl
14496
	 WHERE rl.RTAG_ID = nRtagId
14497
	   AND rl.REF_RTAG_ID = nRefRtagId;
14498
 
14499
 
14500
	-- Refresh Package states
14501
	TOUCH_RELEASE ( nRtagId );
14502
 
14503
 
14504
END;
14505
/*-------------------------------------------------------------------------------------------------------*/
14506
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
14507
 
14508
	cReleaseMode CHAR(1);
14509
	cPvMode CHAR(1);
14510
 
14511
BEGIN
14512
 
14513
	-- Get Release Mode
14514
	SELECT rt.OFFICIAL INTO cReleaseMode
14515
	  FROM RELEASE_TAGS rt
14516
	 WHERE rt.RTAG_ID = RtagId;
14517
 
14518
 
14519
	-- Get Package Mode
14520
	SELECT pv.DLOCKED INTO cPvMode
14521
	  FROM PACKAGE_VERSIONS pv
14522
	 WHERE pv.PV_ID = PvId;	 
14523
 
14524
	-- Only check if package is locked 
14525
	IF (cPvMode = 'Y') THEN
14526
 
14527
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
14528
		THEN
14529
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
14530
 
14531
		END IF;
14532
 
14533
	END IF;	
14534
 
14535
 
14536
END;
14537
 
14538
/*-------------------------------------------------------------------------------------------------------*/
14539
END PK_RELEASE;
14540
/
14541
 
14542
CREATE OR REPLACE PACKAGE BODY PK_BUILDAPI_TEST IS
14543
 
14544
/*
14545
------------------------------
14546
||  Last Modified:  S.Vukovic
14547
||  Modified Date:  30/Mar/2005
14548
||  Body Version:   1.0
14549
------------------------------
14550
*/
14551
 
14552
 
14553
/*-------------------------------------------------------------------------------------------------------*/
14554
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14555
								  sOsName IN VARCHAR2,
14556
								  sOrigFilePath IN VARCHAR2,
14557
								  sFileName IN VARCHAR2,
14558
								  sDestFilePath IN VARCHAR2,
14559
								  nByteSize IN NUMBER,
14560
								  sCRCcksum IN VARCHAR2 ) IS
14561
 
14562
	nOsId NUMBER;
14563
 
14564
BEGIN
14565
	/*--------------- Business Rules Here -------------------*/
14566
	-- OS Name Requirements --
14567
	IF (sOsName IS NULL) THEN
14568
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14569
	END IF;
14570
 
14571
 
14572
	-- File Requirements --
14573
	IF (NOT sFileName IS NULL) THEN
14574
 
14575
		IF (nByteSize IS NULL) THEN
14576
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14577
 
14578
		ELSIF (sCRCcksum IS NULL) THEN
14579
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14580
 
14581
		END IF;
14582
 
14583
	END IF;
14584
 
14585
 
14586
	-- Folder Requirements --
14587
	-- No requirements for now.
14588
 
14589
	/*-------------------------------------------------------*/
14590
 
14591
	-- Get OsId
14592
	nOsId := Get_OsId ( sOsName );
14593
 
14594
 
14595
	-- Insert component entry
14596
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14597
    VALUES (
14598
			  nPvId,
14599
			  nOsId,
14600
			  sOrigFilePath,
14601
			  sFileName,
14602
			  sDestFilePath,
14603
			  nByteSize,
14604
			  sCRCcksum
14605
			);
14606
 
14607
 
14608
	EXCEPTION
14609
    WHEN DUP_VAL_ON_INDEX
14610
	THEN
14611
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14612
 
14613
END;
14614
/*-------------------------------------------------------------------------------------------------------*/
14615
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14616
 
14617
	nOsId NUMBER;
14618
 
14619
BEGIN
14620
	/*--------------- Business Rules Here -------------------*/
14621
	/*-------------------------------------------------------*/
14622
 
14623
	-- Get OsId
14624
	nOsId := Get_OsId ( sOsName );
14625
 
14626
 
14627
	-- Delete component entry
14628
	DELETE
14629
	  FROM PRODUCT_COMPONENTS pc
14630
	 WHERE pc.PV_ID = nPvId
14631
	   AND pc.OS_ID = nOsId;
14632
 
14633
 
14634
END;
14635
/*-------------------------------------------------------------------------------------------------------*/
14636
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14637
	Code NUMBER;
14638
 
14639
BEGIN
14640
 
14641
	-- Get Platform Code --
14642
	SELECT pf.CODE INTO Code
14643
	  FROM PLATFORMS pf
14644
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14645
 
14646
 
14647
	RETURN Code;	   
14648
 
14649
	EXCEPTION
14650
    	WHEN NO_DATA_FOUND THEN
14651
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14652
   	RAISE;
14653
END;
14654
/*-------------------------------------------------------------------------------------------------------*/
14655
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14656
			  					 sWebServer IN VARCHAR2,
14657
								 sMailServer IN VARCHAR2,
14658
								 sMailSender IN VARCHAR2) IS
14659
 
14660
BEGIN
14661
 
14662
 
14663
	 UPDATE BUILD_SERVICE_CONFIG
14664
	 SET CONFIG = sDatabaseServer
14665
	 WHERE SERVICE = 'DATABASE SERVER'; 
14666
 
14667
	 UPDATE BUILD_SERVICE_CONFIG
14668
	 SET CONFIG = sWebServer
14669
	 WHERE SERVICE = 'WEB SERVER'; 
14670
 
14671
	 UPDATE BUILD_SERVICE_CONFIG
14672
	 SET CONFIG = sMailServer
14673
	 WHERE SERVICE = 'MAIL SERVER'; 
14674
 
14675
	 UPDATE BUILD_SERVICE_CONFIG
14676
	 SET CONFIG = sMailSender
14677
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14678
 
14679
 
14680
 
14681
END;
14682
/*-------------------------------------------------------------------------------------------------------*/
14683
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14684
 
14685
GBE_ID NUMBER;
14686
 
14687
BEGIN
14688
 
14689
	-- Get GBE_ID
14690
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14691
 
14692
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14693
	VALUES( GBE_ID, sGBEValue);
14694
 
14695
 
14696
END;
14697
/*-------------------------------------------------------------------------------------------------------*/
14698
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14699
 
14700
BEGIN
14701
 
14702
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14703
 
14704
END;
14705
/*-------------------------------------------------------------------------------------------------------*/
14706
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14707
 
14708
BEGIN
14709
 
14710
	 UPDATE GBE_MACHTYPE
14711
	 SET GBE_VALUE = sGBEValue 
14712
	 WHERE GBE_ID = nGBE_ID;
14713
 
14714
 
14715
END;
14716
/*-------------------------------------------------------------------------------------------------------*/
14717
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14718
 
14719
nRecordNumber NUMBER;
14720
nRconId NUMBER;
14721
BEGIN
14722
	-- Get RCON_ID
14723
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14724
 
14725
        SELECT count(*) INTO nRecordNumber 
14726
        FROM RELEASE_CONFIG
14727
        WHERE RTAG_ID = nRtagId;
14728
 
14729
        IF nRecordNumber = 0 THEN
14730
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14731
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14732
        ELSE
14733
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14734
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14735
        END IF;
14736
 
14737
 
14738
 
14739
END;
14740
/*-------------------------------------------------------------------------------------------------------*/        
14741
END PK_BUILDAPI_TEST;
14742
/
14743
 
53 mhunt 14744
CREATE OR REPLACE PACKAGE BODY                   "PK_ENVIRONMENT"
51 mhunt 14745
IS
14746
/*
14747
------------------------------
53 mhunt 14748
||  Last Modified:  G.Huddy
14749
||  Modified Date:  28/May/2008
14750
||  Body Version:   1.3
51 mhunt 14751
------------------------------
14752
*/
14753
 
14754
   /*-------------------------------------------------------------------------------------------------------*/
14755
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
53 mhunt 14756
	  RETURN NUMBER
51 mhunt 14757
   IS
14758
   BEGIN
53 mhunt 14759
	   /*
14760
	  || N - unlocked
14761
	  || Y - release and locked
14762
	  || P - penging approval
14763
	  || A - approved package ready for auto-build
14764
	  */
14765
	  IF cdlock = 'N' OR cdlock = 'R'
14766
	  THEN
14767
		 -- WORK IN PROGRESS --
14768
		 RETURN 0;
14769
	  ELSIF cdlock = 'P' OR cdlock = 'A'
14770
	  THEN
14771
		 -- PENDING --
14772
		 RETURN 1;
14773
	  ELSIF cdlock = 'Y'
14774
	  THEN
14775
		 -- RELEASED --
14776
		 RETURN 2;
14777
	  ELSE
14778
		 -- NOT FOUND --
14779
		 raise_application_error
14780
						 (-20000,
14781
							 'Cannot decide where to place package. [cDlock='
14782
						  || cdlock
14783
						  || ']'
14784
						 );
14785
	  END IF;
51 mhunt 14786
   END;
14787
 
14788
/*-------------------------------------------------------------------------------------------------------*/
14789
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14790
	  RETURN NUMBER
51 mhunt 14791
   IS
53 mhunt 14792
	  envtab	NUMBER			:= -1;
51 mhunt 14793
 
53 mhunt 14794
	  CURSOR curarea
14795
	  IS
14796
		 SELECT 2 AS envtab
14797
		   FROM release_content rc
14798
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14799
		 UNION
14800
		 SELECT 0 AS envtab
14801
		   FROM work_in_progress wip
14802
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14803
		 UNION
14804
		 SELECT 1 AS envtab
14805
		   FROM planned pl
14806
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14807
 
53 mhunt 14808
	  recarea   curarea%ROWTYPE;
51 mhunt 14809
   BEGIN
53 mhunt 14810
	  OPEN curarea;
51 mhunt 14811
 
53 mhunt 14812
	  FETCH curarea
14813
	   INTO recarea;
51 mhunt 14814
 
53 mhunt 14815
	  IF curarea%FOUND
14816
	  THEN
14817
		 envtab := recarea.envtab;
14818
	  END IF;
51 mhunt 14819
 
53 mhunt 14820
	  CLOSE curarea;
51 mhunt 14821
 
53 mhunt 14822
	  RETURN envtab;
51 mhunt 14823
   END;
14824
 
14825
/*-------------------------------------------------------------------------------------------------------*/
14826
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14827
	  RETURN NUMBER
51 mhunt 14828
   IS
53 mhunt 14829
	  ispatch   package_versions.dlocked%TYPE;
14830
	  viewid	NUMBER						  := -1;
51 mhunt 14831
 
53 mhunt 14832
	  CURSOR curview
14833
	  IS
14834
		 SELECT rc.base_view_id AS view_id
14835
		   FROM release_content rc
14836
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14837
		 UNION
14838
		 SELECT wip.view_id AS view_id
14839
		   FROM work_in_progress wip
14840
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14841
		 UNION
14842
		 SELECT pl.view_id AS view_id
14843
		   FROM planned pl
14844
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14845
 
53 mhunt 14846
	  recview   curview%ROWTYPE;
51 mhunt 14847
   BEGIN
53 mhunt 14848
	  -- Get dlock state
14849
	  SELECT pv.is_patch
14850
		INTO ispatch
14851
		FROM package_versions pv
14852
	   WHERE pv.pv_id = pvid;
51 mhunt 14853
 
53 mhunt 14854
	  -- Decide which view id should package go under.
14855
	  IF (ispatch != 'Y') OR (ispatch IS NULL)
14856
	  THEN
14857
		 -- Get VIEW ID of Package
14858
		 OPEN curview;
51 mhunt 14859
 
53 mhunt 14860
		 FETCH curview
14861
		  INTO recview;
51 mhunt 14862
 
53 mhunt 14863
		 IF curview%FOUND
14864
		 THEN
14865
			viewid := recview.view_id;
14866
		 ELSE
14867
			raise_application_error
14868
			   (-20000,
14869
				   'Cannot find view_id to proceed. [PvId='
14870
				|| pvid
14871
				|| ']. The current version may not exist in the release anymore.'
14872
			   );
14873
		 END IF;
51 mhunt 14874
 
53 mhunt 14875
		 CLOSE curview;
14876
	  ELSE
14877
		 -- Get VIEW ID of Patch (view id of parent package)
14878
		 SELECT rc.base_view_id
14879
		   INTO viewid
14880
		   FROM release_content rc, package_patches ppv
14881
		  WHERE rc.rtag_id = rtagid
14882
			AND rc.pv_id = ppv.pv_id
14883
			AND ppv.patch_id = pvid;
14884
	  END IF;
51 mhunt 14885
 
53 mhunt 14886
	  RETURN viewid;
51 mhunt 14887
   END;
14888
 
14889
/*-------------------------------------------------------------------------------------------------------*/
14890
   PROCEDURE add_package (
53 mhunt 14891
	  pvid	 IN   NUMBER,
14892
	  viewid   IN   NUMBER,
14893
	  rtagid   IN   NUMBER,
14894
	  userid   IN   NUMBER
51 mhunt 14895
   )
14896
   IS
53 mhunt 14897
	  dlocked   package_versions.dlocked%TYPE;
14898
	  envtab	NUMBER;
51 mhunt 14899
   BEGIN
53 mhunt 14900
	  IF can_edit_pkg_in_project (pvid, rtagid) = 1
14901
	  THEN
14902
		 -- Get dlock state
14903
		 SELECT pv.dlocked
14904
		   INTO dlocked
14905
		   FROM package_versions pv
14906
		  WHERE pv.pv_id = pvid;
51 mhunt 14907
 
53 mhunt 14908
		 -- Get which area should go under
14909
		 envtab := select_environment_area (dlocked);
14910
		 -- Log
14911
		 log_action (pvid, 'action', userid, 'Start of Package Add...');
51 mhunt 14912
 
53 mhunt 14913
		 -- Remove Package
14914
		 IF envtab = 0
14915
		 THEN
14916
			-- WORK IN PROGRESS --
14917
			pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
14918
		 ELSIF envtab = 1
14919
		 THEN
14920
			-- PENDING --
14921
			pk_planned.add_package (pvid, viewid, rtagid, userid);
14922
		 ELSIF envtab = 2
14923
		 THEN
14924
			-- RELEASED --
14925
			-- NOTE: this package will be replaced with matching package
14926
			pk_release.add_package (pvid, viewid, rtagid, userid);
14927
			-- Now do post Release Actions
14928
			pk_release.run_post_actions (pvid, rtagid);
14929
		 END IF;
51 mhunt 14930
 
53 mhunt 14931
		 -- Log
14932
		 log_action (pvid, 'action', userid, 'End of Package Add...');
14933
	  END IF;
51 mhunt 14934
   END;
14935
 
14936
/*-------------------------------------------------------------------------------------------------------*/
14937
   PROCEDURE add_package_bulk (
53 mhunt 14938
	  pvidlist   IN   VARCHAR2,
14939
	  viewid	 IN   NUMBER,
14940
	  rtagid	 IN   NUMBER,
14941
	  userid	 IN   NUMBER
51 mhunt 14942
   )
14943
   IS
53 mhunt 14944
	  nidcollector   relmgr_number_tab_t			:= relmgr_number_tab_t
14945
																		  ();
14946
	  dlocked		package_versions.dlocked%TYPE;
14947
	  pvid		   NUMBER;
14948
	  envtab		 NUMBER;
51 mhunt 14949
   BEGIN
53 mhunt 14950
	  /*--------------- Business Rules Here -------------------*/
14951
	  IF (pvidlist IS NULL)
14952
	  THEN
14953
		 raise_application_error (-20000,
14954
								  'Please select at least one package.'
14955
								 );
14956
	  END IF;
51 mhunt 14957
 
14958
/*-------------------------------------------------------*/
53 mhunt 14959
	  nidcollector := in_list_number (pvidlist);
51 mhunt 14960
 
53 mhunt 14961
	  FOR i IN 1 .. nidcollector.COUNT
14962
	  LOOP
14963
		 pvid := nidcollector (i);
14964
		 add_package (pvid, viewid, rtagid, userid);
14965
	  END LOOP;
51 mhunt 14966
   END;
14967
 
14968
/*-------------------------------------------------------------------------------------------------------*/
14969
   PROCEDURE replace_package (
53 mhunt 14970
	  newpvid   IN   NUMBER,
14971
	  oldpvid   IN   NUMBER,
14972
	  rtagid	IN   NUMBER,
14973
	  userid	IN   NUMBER
51 mhunt 14974
   )
14975
   IS
53 mhunt 14976
	  dlocked		package_versions.dlocked%TYPE;
14977
	  viewid		 NUMBER;
14978
	  envtab		 NUMBER;
14979
	  ROWCOUNT	   NUMBER;
14980
	  creleasemode   CHAR (1);
14981
	  npkgid		 NUMBER;
51 mhunt 14982
   BEGIN
53 mhunt 14983
	  /*--------------- Business Rules Here -------------------*/
14984
	  -- Check if oldPvId exists. It could have been removed
14985
	  SELECT COUNT (pv.pv_id)
14986
		INTO ROWCOUNT
14987
		FROM package_versions pv
14988
	   WHERE pv.pv_id = oldpvid;
51 mhunt 14989
 
14990
/*-------------------------------------------------------*/
14991
 
53 mhunt 14992
	  /* This procedure is usually used by "History" option in Release Manager */
51 mhunt 14993
 
53 mhunt 14994
	  -- Get dlock state
14995
	  SELECT pv.dlocked
14996
		INTO dlocked
14997
		FROM package_versions pv
14998
	   WHERE pv.pv_id = newpvid;
51 mhunt 14999
 
53 mhunt 15000
	  -- Get VIEW_ID ---
15001
	  IF ROWCOUNT = 1
15002
	  THEN
15003
		 viewid := get_view_location (oldpvid, rtagid);
15004
	  ELSE
15005
		 -- Set ViewID to default
15006
		 viewid := 7;
15007
	  END IF;
51 mhunt 15008
 
53 mhunt 15009
	  -- Get which area should go under
15010
	  envtab := select_environment_area (dlocked);
15011
	  -- Log
15012
	  log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
51 mhunt 15013
 
53 mhunt 15014
	  -- Replace package
15015
	  IF envtab = 0
15016
	  THEN
15017
		 -- WORK IN PROGRESS --
51 mhunt 15018
 
53 mhunt 15019
		 -- Delete old package
15020
		 pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
15021
		 -- Add new package
15022
		 pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
15023
	  ELSIF envtab = 1
15024
	  THEN
15025
		 -- PENDING --
51 mhunt 15026
 
53 mhunt 15027
		 -- Delete old package
15028
		 pk_planned.remove_package (oldpvid, rtagid, userid);
15029
		 -- Add new package
15030
		 pk_planned.add_package (newpvid, viewid, rtagid, userid);
15031
	  ELSIF envtab = 2
15032
	  THEN
15033
		 -- RELEASED --
51 mhunt 15034
 
53 mhunt 15035
		 -- Delete old package
15036
		 pk_release.remove_package (oldpvid, rtagid, userid);
15037
		 -- Add new package
15038
		 pk_release.add_package (newpvid, viewid, rtagid, userid);
15039
		 -- Now do post Release Actions
15040
		 pk_release.run_post_actions (newpvid, rtagid);
15041
	  END IF;
51 mhunt 15042
 
53 mhunt 15043
	  -- Log
15044
	  log_action (oldpvid, 'action', userid, 'End of Package Replace...');
51 mhunt 15045
   END;
15046
 
15047
/*-------------------------------------------------------------------------------------------------------*/
15048
   FUNCTION remove_package (
53 mhunt 15049
	  pvid		  IN   NUMBER,
15050
	  rtagid		IN   NUMBER,
15051
	  userid		IN   NUMBER,
15052
	  forceremove   IN   CHAR
51 mhunt 15053
   )
53 mhunt 15054
	  RETURN NUMBER
51 mhunt 15055
   IS
53 mhunt 15056
	  envtab		NUMBER;
15057
	  isused		BOOLEAN;
15058
	  recordcount   NUMBER;
51 mhunt 15059
   BEGIN
15060
/*--------------- Business Rules Here -------------------*/
15061
/*-------------------------------------------------------*/
15062
 
53 mhunt 15063
	  -- Find location of package
15064
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15065
 
53 mhunt 15066
	  -- Remove Package
15067
	  IF envtab = 0
15068
	  THEN
15069
		 -- WORK IN PROGRESS --
15070
		 -- Delete package
15071
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
15072
		 RETURN 0;
15073
	  ELSIF envtab = 1
15074
	  THEN
15075
		 -- PENDING --
15076
		 -- Delete package
15077
		 pk_planned.remove_package (pvid, rtagid, userid);
15078
		 RETURN 0;
15079
	  ELSIF envtab = 2
15080
	  THEN
15081
		 -- RELEASED --
51 mhunt 15082
 
53 mhunt 15083
		 -- Check if is used by other packages
15084
		 isused := TRUE;
51 mhunt 15085
 
53 mhunt 15086
		 IF forceremove = 'N'
15087
		 THEN
15088
			SELECT COUNT (pv.pv_id)
15089
			  INTO recordcount
15090
			  FROM (SELECT dpv.pkg_id, dpv.v_ext
15091
					  FROM release_content rc,
15092
						   package_dependencies dep,
15093
						   package_versions dpv
15094
					 WHERE rc.rtag_id = rtagid
15095
					   AND rc.pv_id = dep.pv_id
15096
					   AND dep.dpv_id = dpv.pv_id) rdep,
15097
				   package_versions pv
15098
			 WHERE pv.pkg_id = rdep.pkg_id
15099
			   AND NVL (pv.v_ext, '|LINK_A_NULL|') =
15100
											 NVL (rdep.v_ext, '|LINK_A_NULL|')
15101
			   AND pv.pv_id = pvid;
51 mhunt 15102
 
53 mhunt 15103
			IF recordcount > 0
15104
			THEN
15105
			   RETURN 1;					-- Return 1 as package being used
15106
			ELSE
15107
			   isused := FALSE;
15108
			END IF;
15109
		 END IF;
51 mhunt 15110
 
53 mhunt 15111
		 IF forceremove = 'Y' OR NOT isused
15112
		 THEN
15113
			-- Delete old package
15114
			pk_release.remove_package (pvid, rtagid, userid);
15115
			-- Now do post Release Actions
15116
			pk_release.run_post_actions (pvid, rtagid);
15117
			RETURN 0;
15118
		 END IF;
15119
	  END IF;
51 mhunt 15120
   END;
15121
 
15122
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15123
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15124
 
51 mhunt 15125
   PROCEDURE get_environment_items (
53 mhunt 15126
	  viewtype		   IN	   NUMBER,
15127
	  userid			 IN	   NUMBER,
15128
	  rtagid			 IN	   NUMBER,
15129
	  sviewidshowlist	IN	   VARCHAR2,
15130
	  ntruerecordcount   OUT	  NUMBER,
15131
	  recordset		  OUT	  typecur
51 mhunt 15132
   )
15133
   IS
15134
   BEGIN
53 mhunt 15135
	  -- Get true record count because views can give false count
15136
	  SELECT COUNT (pl.pv_id)
15137
		INTO ntruerecordcount
15138
		FROM environment_view pl
15139
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15140
 
53 mhunt 15141
	  IF viewtype = 1
15142
	  THEN
15143
		 /*--- GUEST VIEW ---*/
15144
		 OPEN recordset FOR
15145
			SELECT   *
15146
				FROM (
15147
					  /* Base Views collapsed */
15148
					  SELECT DISTINCT vi.view_id, vi.view_name,
15149
									  TO_NUMBER (NULL) AS pkg_state,
15150
									  TO_NUMBER (NULL) AS deprecated_state,
15151
									  TO_NUMBER (NULL) AS pv_id,
15152
									  NULL AS pkg_name, NULL AS pkg_version,
15153
									  NULL AS dlocked, NULL AS pv_description,
15154
									  rel.operation
15155
								 FROM environment_view rel, views vi
15156
								WHERE rel.view_id = vi.view_id
15157
								  AND rtag_id = rtagid
15158
								  AND rel.view_id NOT IN (
15159
										 SELECT *
15160
										   FROM THE
15161
												   (SELECT CAST
15162
															  (in_list_number
15163
																  (sviewidshowlist
15164
																  ) AS relmgr_number_tab_t
15165
															  )
15166
													  FROM DUAL
15167
												   ))
15168
					  UNION
15169
					  /* Base Views expanded */
15170
					  SELECT vi.view_id, vi.view_name,
15171
							 DECODE (rel.pkg_state,
15172
									 NULL, 0,
15173
									 rel.pkg_state
15174
									) AS pkg_state,
15175
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15176
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15177
							 rel.operation
15178
						FROM environment_view rel,
15179
							 PACKAGES pkg,
15180
							 package_versions pv,
15181
							 views vi
15182
					   WHERE pv.pkg_id = pkg.pkg_id
15183
						 AND rel.pv_id = pv.pv_id
15184
						 AND rel.view_id = vi.view_id
15185
						 AND rel.view_id IN (
15186
								SELECT *
15187
								  FROM THE
15188
										  (SELECT CAST
15189
													 (in_list_number
15190
															  (sviewidshowlist) AS relmgr_number_tab_t
15191
													 )
15192
											 FROM DUAL
15193
										  ))
15194
						 AND rtag_id = rtagid) ord
15195
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15196
	  ELSIF viewtype = 2
15197
	  THEN
15198
		 /*--- PERSONAL VIEW ---*/
15199
		 OPEN recordset FOR
15200
			SELECT   *
15201
				FROM (
15202
					  /* Base Views collapsed */
15203
					  SELECT DISTINCT vi.view_id, vi.view_name,
15204
									  TO_NUMBER (NULL) AS pkg_state,
15205
									  TO_NUMBER (NULL) AS deprecated_state,
15206
									  TO_NUMBER (NULL) AS pv_id,
15207
									  NULL AS pkg_name, NULL AS pkg_version,
15208
									  NULL AS dlocked, NULL AS pv_description,
15209
									  rel.operation
15210
								 FROM environment_view rel,
15211
									  view_settings vs,
15212
									  views vi
15213
								WHERE rel.view_id = vi.view_id
15214
								  AND vs.view_id = rel.view_id
15215
								  AND vs.user_id = userid
15216
								  AND rtag_id = rtagid
15217
								  AND rel.view_id NOT IN (
15218
										 SELECT *
15219
										   FROM THE
15220
												   (SELECT CAST
15221
															  (in_list_number
15222
																  (sviewidshowlist
15223
																  ) AS relmgr_number_tab_t
15224
															  )
15225
													  FROM DUAL
15226
												   ))
15227
					  UNION
15228
					  /* Base Views expanded */
15229
					  SELECT vi.view_id, vi.view_name,
15230
							 DECODE (rel.pkg_state,
15231
									 NULL, 0,
15232
									 rel.pkg_state
15233
									) AS pkg_state,
15234
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15235
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15236
							 rel.operation
15237
						FROM environment_view rel,
15238
							 PACKAGES pkg,
15239
							 package_versions pv,
15240
							 views vi,
15241
							 view_settings vs
15242
					   WHERE pv.pkg_id = pkg.pkg_id
15243
						 AND rel.pv_id = pv.pv_id
15244
						 AND rel.view_id = vi.view_id
15245
						 AND vs.view_id = vi.view_id
15246
						 AND vs.user_id = userid
15247
						 AND rel.view_id IN (
15248
								SELECT *
15249
								  FROM THE
15250
										  (SELECT CAST
15251
													 (in_list_number
15252
															  (sviewidshowlist) AS relmgr_number_tab_t
15253
													 )
15254
											 FROM DUAL
15255
										  ))
15256
						 AND rtag_id = rtagid
15257
					  UNION
15258
					  /* Private Views collapsed */
15259
					  SELECT vi.view_id, vi.view_name,
15260
							 TO_NUMBER (NULL) AS pkg_state,
15261
							 TO_NUMBER (NULL) AS deprecated_state,
15262
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15263
							 NULL AS pkg_version, NULL AS dlocked,
15264
							 NULL AS pv_description,
15265
							 rel.operation
15266
						FROM view_settings vs,
15267
							 view_def vd,
15268
							 views vi,
15269
							 environment_view rel,
15270
							 package_versions pv
15271
					   WHERE vs.view_id = vi.view_id
15272
						 AND rel.pv_id = pv.pv_id
15273
						 AND vd.pkg_id = pv.pkg_id
15274
						 AND vd.view_id = vi.view_id
15275
						 AND vi.base_view = 'N'
15276
						 AND rel.rtag_id = rtagid
15277
						 AND vs.user_id = userid
15278
						 AND vi.view_id NOT IN (
15279
								SELECT *
15280
								  FROM THE
15281
										  (SELECT CAST
15282
													 (in_list_number
15283
															  (sviewidshowlist) AS relmgr_number_tab_t
15284
													 )
15285
											 FROM DUAL
15286
										  ))
15287
					  UNION
15288
					  /* Private Views expanded */
15289
					  SELECT vi.view_id, vi.view_name,
15290
							 DECODE (rel.pkg_state,
15291
									 NULL, 0,
15292
									 rel.pkg_state
15293
									) AS pkg_state,
15294
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15295
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15296
							 rel.operation
15297
						FROM users usr,
15298
							 view_settings vs,
15299
							 view_def vd,
15300
							 views vi,
15301
							 environment_view rel,
15302
							 PACKAGES pkg,
15303
							 package_versions pv
15304
					   WHERE vs.user_id = usr.user_id
15305
						 AND vs.view_id = vi.view_id
15306
						 AND vd.view_id = vi.view_id
15307
						 AND pv.pkg_id = pkg.pkg_id
15308
						 AND rel.pv_id = pv.pv_id
15309
						 AND rel.rtag_id = rtagid
15310
						 AND vd.pkg_id = pkg.pkg_id
15311
						 AND vi.base_view = 'N'
15312
						 AND vi.view_id IN (
15313
								SELECT *
15314
								  FROM THE
15315
										  (SELECT CAST
15316
													 (in_list_number
15317
															  (sviewidshowlist) AS relmgr_number_tab_t
15318
													 )
15319
											 FROM DUAL
15320
										  ))
15321
						 AND usr.user_id = userid) ord
15322
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15323
	  END IF;
51 mhunt 15324
   END;
15325
 
15326
/*-------------------------------------------------------------------------------------------------------*/
15327
   PROCEDURE get_released_items (
53 mhunt 15328
	  viewtype		   IN	   NUMBER,
15329
	  userid			 IN	   NUMBER,
15330
	  rtagid			 IN	   NUMBER,
15331
	  sviewidshowlist	IN	   VARCHAR2,
15332
	  ntruerecordcount   OUT	  NUMBER,
15333
	  recordset		  OUT	  typecur
51 mhunt 15334
   )
15335
   IS
15336
   BEGIN
53 mhunt 15337
	  -- Get true record count because views can give false count
15338
	  SELECT COUNT (rc.pv_id)
15339
		INTO ntruerecordcount
15340
		FROM release_content rc
15341
	   WHERE rc.rtag_id = rtagid;
51 mhunt 15342
 
53 mhunt 15343
	  IF viewtype = 1
15344
	  THEN
15345
		 /*--- GUEST VIEW ---*/
15346
		 OPEN recordset FOR
15347
			SELECT   *
15348
				FROM (
15349
					  /* Base Views collapsed */
15350
					  SELECT DISTINCT vi.view_id, vi.view_name,
15351
									  TO_NUMBER (NULL) AS pkg_state,
15352
									  TO_NUMBER (NULL) AS deprecated_state,
15353
									  TO_NUMBER (NULL) AS pv_id,
15354
									  NULL AS pkg_name, NULL AS pkg_version,
15355
									  NULL AS dlocked, NULL AS pv_description
15356
								 FROM release_content rel, views vi
15357
								WHERE rel.base_view_id = vi.view_id
15358
								  AND rtag_id = rtagid
15359
								  AND rel.base_view_id NOT IN (
15360
										 SELECT *
15361
										   FROM THE
15362
												   (SELECT CAST
15363
															  (in_list_number
15364
																  (sviewidshowlist
15365
																  ) AS relmgr_number_tab_t
15366
															  )
15367
													  FROM DUAL
15368
												   ))
15369
					  UNION
15370
					  /* Base Views expanded */
15371
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15372
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15373
							 pv.pkg_version, pv.dlocked, pv.pv_description
15374
						FROM release_content rel,
15375
							 PACKAGES pkg,
15376
							 package_versions pv,
15377
							 views vi
15378
					   WHERE pv.pkg_id = pkg.pkg_id
15379
						 AND rel.pv_id = pv.pv_id
15380
						 AND rel.base_view_id = vi.view_id
15381
						 AND rel.base_view_id IN (
15382
								SELECT *
15383
								  FROM THE
15384
										  (SELECT CAST
15385
													 (in_list_number
15386
															  (sviewidshowlist) AS relmgr_number_tab_t
15387
													 )
15388
											 FROM DUAL
15389
										  ))
15390
						 AND rtag_id = rtagid) ord
15391
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15392
	  ELSIF viewtype = 2
15393
	  THEN
15394
		 /*--- PERSONAL VIEW ---*/
15395
		 OPEN recordset FOR
15396
			SELECT   *
15397
				FROM (
15398
					  /* Base Views collapsed */
15399
					  SELECT DISTINCT vi.view_id, vi.view_name,
15400
									  TO_NUMBER (NULL) AS pkg_state,
15401
									  TO_NUMBER (NULL) AS deprecated_state,
15402
									  TO_NUMBER (NULL) AS pv_id,
15403
									  NULL AS pkg_name, NULL AS pkg_version,
15404
									  NULL AS dlocked, NULL AS pv_description
15405
								 FROM release_content rel,
15406
									  view_settings vs,
15407
									  views vi
15408
								WHERE rel.base_view_id = vi.view_id
15409
								  AND vs.view_id = rel.base_view_id
15410
								  AND vs.user_id = userid
15411
								  AND rtag_id = rtagid
15412
								  AND rel.base_view_id NOT IN (
15413
										 SELECT *
15414
										   FROM THE
15415
												   (SELECT CAST
15416
															  (in_list_number
15417
																  (sviewidshowlist
15418
																  ) AS relmgr_number_tab_t
15419
															  )
15420
													  FROM DUAL
15421
												   ))
15422
					  UNION
15423
					  /* Base Views expanded */
15424
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15425
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15426
							 pv.pkg_version, pv.dlocked, pv.pv_description
15427
						FROM release_content rel,
15428
							 PACKAGES pkg,
15429
							 package_versions pv,
15430
							 views vi,
15431
							 view_settings vs
15432
					   WHERE pv.pkg_id = pkg.pkg_id
15433
						 AND rel.pv_id = pv.pv_id
15434
						 AND rel.base_view_id = vi.view_id
15435
						 AND vs.view_id = vi.view_id
15436
						 AND vs.user_id = userid
15437
						 AND rel.base_view_id IN (
15438
								SELECT *
15439
								  FROM THE
15440
										  (SELECT CAST
15441
													 (in_list_number
15442
															  (sviewidshowlist) AS relmgr_number_tab_t
15443
													 )
15444
											 FROM DUAL
15445
										  ))
15446
						 AND rtag_id = rtagid
15447
					  UNION
15448
					  /* Private Views collapsed */
15449
					  SELECT vi.view_id, vi.view_name,
15450
							 TO_NUMBER (NULL) AS pkg_state,
15451
							 TO_NUMBER (NULL) AS deprecated_state,
15452
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15453
							 NULL AS pkg_version, NULL AS dlocked,
15454
							 NULL AS pv_description
15455
						FROM view_settings vs,
15456
							 view_def vd,
15457
							 views vi,
15458
							 release_content rel,
15459
							 package_versions pv
15460
					   WHERE vs.view_id = vi.view_id
15461
						 AND rel.pv_id = pv.pv_id
15462
						 AND vd.pkg_id = pv.pkg_id
15463
						 AND vd.view_id = vi.view_id
15464
						 AND vi.base_view = 'N'
15465
						 AND rel.rtag_id = rtagid
15466
						 AND vs.user_id = userid
15467
						 AND vi.view_id NOT IN (
15468
								SELECT *
15469
								  FROM THE
15470
										  (SELECT CAST
15471
													 (in_list_number
15472
															  (sviewidshowlist) AS relmgr_number_tab_t
15473
													 )
15474
											 FROM DUAL
15475
										  ))
15476
					  UNION
15477
					  /* Private Views expanded */
15478
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15479
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15480
							 pv.pkg_version, pv.dlocked, pv.pv_description
15481
						FROM users usr,
15482
							 view_settings vs,
15483
							 view_def vd,
15484
							 views vi,
15485
							 release_content rel,
15486
							 PACKAGES pkg,
15487
							 package_versions pv
15488
					   WHERE vs.user_id = usr.user_id
15489
						 AND vs.view_id = vi.view_id
15490
						 AND vd.view_id = vi.view_id
15491
						 AND pv.pkg_id = pkg.pkg_id
15492
						 AND rel.pv_id = pv.pv_id
15493
						 AND rel.rtag_id = rtagid
15494
						 AND vd.pkg_id = pkg.pkg_id
15495
						 AND vi.base_view = 'N'
15496
						 AND vi.view_id IN (
15497
								SELECT *
15498
								  FROM THE
15499
										  (SELECT CAST
15500
													 (in_list_number
15501
															  (sviewidshowlist) AS relmgr_number_tab_t
15502
													 )
15503
											 FROM DUAL
15504
										  ))
15505
						 AND usr.user_id = userid) ord
15506
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15507
	  END IF;
51 mhunt 15508
   END;
15509
 
15510
/*-------------------------------------------------------------------------------------------------------*/
15511
   PROCEDURE get_work_in_progress_items (
53 mhunt 15512
	  viewtype		   IN	   NUMBER,
15513
	  userid			 IN	   NUMBER,
15514
	  rtagid			 IN	   NUMBER,
15515
	  sviewidshowlist	IN	   VARCHAR2,
15516
	  ntruerecordcount   OUT	  NUMBER,
15517
	  recordset		  OUT	  typecur
51 mhunt 15518
   )
15519
   IS
15520
   BEGIN
53 mhunt 15521
	  -- Get true record count because views can give false count
15522
	  SELECT COUNT (wip.pv_id)
15523
		INTO ntruerecordcount
15524
		FROM work_in_progress wip
15525
	   WHERE wip.rtag_id = rtagid;
51 mhunt 15526
 
53 mhunt 15527
	  IF viewtype = 1
15528
	  THEN
15529
		 /*--- GUEST VIEW ---*/
15530
		 OPEN recordset FOR
15531
			SELECT   *
15532
				FROM (
15533
					  /* Base Views collapsed */
15534
					  SELECT DISTINCT vi.view_id, vi.view_name,
15535
									  TO_NUMBER (NULL) AS pkg_state,
15536
									  TO_NUMBER (NULL) AS deprecated_state,
15537
									  TO_NUMBER (NULL) AS pv_id,
15538
									  NULL AS pkg_name, NULL AS pkg_version,
15539
									  NULL AS dlocked, NULL AS pv_description
15540
								 FROM work_in_progress rel, views vi
15541
								WHERE rel.view_id = vi.view_id
15542
								  AND rtag_id = rtagid
15543
								  AND rel.view_id NOT IN (
15544
										 SELECT *
15545
										   FROM THE
15546
												   (SELECT CAST
15547
															  (in_list_number
15548
																  (sviewidshowlist
15549
																  ) AS relmgr_number_tab_t
15550
															  )
15551
													  FROM DUAL
15552
												   ))
15553
					  UNION
15554
					  /* Base Views expanded */
15555
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15556
 
15557
							 --rel.pkg_state,
15558
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15559
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15560
							 pv.pv_description
15561
						FROM work_in_progress rel,
15562
							 PACKAGES pkg,
15563
							 package_versions pv,
15564
							 views vi
15565
					   WHERE pv.pkg_id = pkg.pkg_id
15566
						 AND rel.pv_id = pv.pv_id
15567
						 AND rel.view_id = vi.view_id
15568
						 AND rel.view_id IN (
15569
								SELECT *
15570
								  FROM THE
15571
										  (SELECT CAST
15572
													 (in_list_number
15573
															  (sviewidshowlist) AS relmgr_number_tab_t
15574
													 )
15575
											 FROM DUAL
15576
										  ))
15577
						 AND rtag_id = rtagid) ord
15578
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15579
	  ELSIF viewtype = 2
15580
	  THEN
15581
		 /*--- PERSONAL VIEW ---*/
15582
		 OPEN recordset FOR
15583
			SELECT   *
15584
				FROM (
15585
					  /* Base Views collapsed */
15586
					  SELECT DISTINCT vi.view_id, vi.view_name,
15587
									  TO_NUMBER (NULL) AS pkg_state,
15588
									  TO_NUMBER (NULL) AS deprecated_state,
15589
									  TO_NUMBER (NULL) AS pv_id,
15590
									  NULL AS pkg_name, NULL AS pkg_version,
15591
									  NULL AS dlocked, NULL AS pv_description
15592
								 FROM work_in_progress rel,
15593
									  view_settings vs,
15594
									  views vi
15595
								WHERE rel.view_id = vi.view_id
15596
								  AND vs.view_id = rel.view_id
15597
								  AND vs.user_id = userid
15598
								  AND rtag_id = rtagid
15599
								  AND rel.view_id NOT IN (
15600
										 SELECT *
15601
										   FROM THE
15602
												   (SELECT CAST
15603
															  (in_list_number
15604
																  (sviewidshowlist
15605
																  ) AS relmgr_number_tab_t
15606
															  )
15607
													  FROM DUAL
15608
												   ))
15609
					  UNION
15610
					  /* Base Views expanded */
15611
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15612
 
15613
							 --rel.pkg_state,
15614
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15615
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15616
							 pv.pv_description
15617
						FROM work_in_progress rel,
15618
							 PACKAGES pkg,
15619
							 package_versions pv,
15620
							 views vi,
15621
							 view_settings vs
15622
					   WHERE pv.pkg_id = pkg.pkg_id
15623
						 AND rel.pv_id = pv.pv_id
15624
						 AND rel.view_id = vi.view_id
15625
						 AND vs.view_id = vi.view_id
15626
						 AND vs.user_id = userid
15627
						 AND rel.view_id IN (
15628
								SELECT *
15629
								  FROM THE
15630
										  (SELECT CAST
15631
													 (in_list_number
15632
															  (sviewidshowlist) AS relmgr_number_tab_t
15633
													 )
15634
											 FROM DUAL
15635
										  ))
15636
						 AND rtag_id = rtagid
15637
					  UNION
15638
					  /* Private Views collapsed */
15639
					  SELECT vi.view_id, vi.view_name,
15640
							 TO_NUMBER (NULL) AS pkg_state,
15641
							 TO_NUMBER (NULL) AS deprecated_state,
15642
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15643
							 NULL AS pkg_version, NULL AS dlocked,
15644
							 NULL AS pv_description
15645
						FROM view_settings vs,
15646
							 view_def vd,
15647
							 views vi,
15648
							 work_in_progress rel,
15649
							 package_versions pv
15650
					   WHERE vs.view_id = vi.view_id
15651
						 AND rel.pv_id = pv.pv_id
15652
						 AND vd.pkg_id = pv.pkg_id
15653
						 AND vd.view_id = vi.view_id
15654
						 AND vi.base_view = 'N'
15655
						 AND rel.rtag_id = rtagid
15656
						 AND vs.user_id = userid
15657
						 AND vi.view_id NOT IN (
15658
								SELECT *
15659
								  FROM THE
15660
										  (SELECT CAST
15661
													 (in_list_number
15662
															  (sviewidshowlist) AS relmgr_number_tab_t
15663
													 )
15664
											 FROM DUAL
15665
										  ))
15666
					  UNION
15667
					  /* Private Views expanded */
15668
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15669
 
15670
							 --rel.pkg_state,
15671
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15672
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15673
							 pv.pv_description
15674
						FROM users usr,
15675
							 view_settings vs,
15676
							 view_def vd,
15677
							 views vi,
15678
							 work_in_progress rel,
15679
							 PACKAGES pkg,
15680
							 package_versions pv
15681
					   WHERE vs.user_id = usr.user_id
15682
						 AND vs.view_id = vi.view_id
15683
						 AND vd.view_id = vi.view_id
15684
						 AND pv.pkg_id = pkg.pkg_id
15685
						 AND rel.pv_id = pv.pv_id
15686
						 AND rel.rtag_id = rtagid
15687
						 AND vd.pkg_id = pkg.pkg_id
15688
						 AND vi.base_view = 'N'
15689
						 AND vi.view_id IN (
15690
								SELECT *
15691
								  FROM THE
15692
										  (SELECT CAST
15693
													 (in_list_number
15694
															  (sviewidshowlist) AS relmgr_number_tab_t
15695
													 )
15696
											 FROM DUAL
15697
										  ))
15698
						 AND usr.user_id = userid) ord
15699
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15700
	  END IF;
51 mhunt 15701
   END;
15702
 
15703
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15704
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15705
 
51 mhunt 15706
   PROCEDURE get_pending_items (
53 mhunt 15707
	  viewtype		   IN	   NUMBER,
15708
	  userid			 IN	   NUMBER,
15709
	  rtagid			 IN	   NUMBER,
15710
	  sviewidshowlist	IN	   VARCHAR2,
15711
	  ntruerecordcount   OUT	  NUMBER,
15712
	  recordset		  OUT	  typecur
51 mhunt 15713
   )
15714
   IS
15715
   BEGIN
53 mhunt 15716
	  -- Get true record count because views can give false count
15717
	  SELECT COUNT (pl.pv_id)
15718
		INTO ntruerecordcount
15719
		FROM planned pl
15720
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15721
 
53 mhunt 15722
	  IF viewtype = 1
15723
	  THEN
15724
		 /*--- GUEST VIEW ---*/
15725
		 OPEN recordset FOR
15726
			SELECT   *
15727
				FROM (
15728
					  /* Base Views collapsed */
15729
					  SELECT DISTINCT vi.view_id, vi.view_name,
15730
									  TO_NUMBER (NULL) AS pkg_state,
15731
									  TO_NUMBER (NULL) AS deprecated_state,
15732
									  TO_NUMBER (NULL) AS pv_id,
15733
									  NULL AS pkg_name, NULL AS pkg_version,
15734
									  NULL AS dlocked, NULL AS pv_description,
15735
									  rel.operation
15736
								 FROM planned rel, views vi
15737
								WHERE rel.view_id = vi.view_id
15738
								  AND rtag_id = rtagid
15739
								  AND rel.view_id NOT IN (
15740
										 SELECT *
15741
										   FROM THE
15742
												   (SELECT CAST
15743
															  (in_list_number
15744
																  (sviewidshowlist
15745
																  ) AS relmgr_number_tab_t
15746
															  )
15747
													  FROM DUAL
15748
												   ))
15749
					  UNION
15750
					  /* Base Views expanded */
15751
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15752
 
15753
							 --rel.pkg_state,
15754
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15755
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15756
							 pv.pv_description,
15757
							 rel.operation
15758
						FROM planned rel,
15759
							 PACKAGES pkg,
15760
							 package_versions pv,
15761
							 views vi
15762
					   WHERE pv.pkg_id = pkg.pkg_id
15763
						 AND rel.pv_id = pv.pv_id
15764
						 AND rel.view_id = vi.view_id
15765
						 AND rel.view_id IN (
15766
								SELECT *
15767
								  FROM THE
15768
										  (SELECT CAST
15769
													 (in_list_number
15770
															  (sviewidshowlist) AS relmgr_number_tab_t
15771
													 )
15772
											 FROM DUAL
15773
										  ))
15774
						 AND rtag_id = rtagid) ord
15775
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15776
	  ELSIF viewtype = 2
15777
	  THEN
15778
		 /*--- PERSONAL VIEW ---*/
15779
		 OPEN recordset FOR
15780
			SELECT   *
15781
				FROM (
15782
					  /* Base Views collapsed */
15783
					  SELECT DISTINCT vi.view_id, vi.view_name,
15784
									  TO_NUMBER (NULL) AS pkg_state,
15785
									  TO_NUMBER (NULL) AS deprecated_state,
15786
									  TO_NUMBER (NULL) AS pv_id,
15787
									  NULL AS pkg_name, NULL AS pkg_version,
15788
									  NULL AS dlocked, NULL AS pv_description,
15789
									  rel.operation
15790
								 FROM planned rel, view_settings vs, views vi
15791
								WHERE rel.view_id = vi.view_id
15792
								  AND vs.view_id = rel.view_id
15793
								  AND vs.user_id = userid
15794
								  AND rtag_id = rtagid
15795
								  AND rel.view_id NOT IN (
15796
										 SELECT *
15797
										   FROM THE
15798
												   (SELECT CAST
15799
															  (in_list_number
15800
																  (sviewidshowlist
15801
																  ) AS relmgr_number_tab_t
15802
															  )
15803
													  FROM DUAL
15804
												   ))
15805
					  UNION
15806
					  /* Base Views expanded */
15807
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15808
 
15809
							 --rel.pkg_state,
15810
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15811
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15812
							 pv.pv_description,
15813
							 rel.operation
15814
						FROM planned rel,
15815
							 PACKAGES pkg,
15816
							 package_versions pv,
15817
							 views vi,
15818
							 view_settings vs
15819
					   WHERE pv.pkg_id = pkg.pkg_id
15820
						 AND rel.pv_id = pv.pv_id
15821
						 AND rel.view_id = vi.view_id
15822
						 AND vs.view_id = vi.view_id
15823
						 AND vs.user_id = userid
15824
						 AND rel.view_id IN (
15825
								SELECT *
15826
								  FROM THE
15827
										  (SELECT CAST
15828
													 (in_list_number
15829
															  (sviewidshowlist) AS relmgr_number_tab_t
15830
													 )
15831
											 FROM DUAL
15832
										  ))
15833
						 AND rtag_id = rtagid
15834
					  UNION
15835
					  /* Private Views collapsed */
15836
					  SELECT vi.view_id, vi.view_name,
15837
							 TO_NUMBER (NULL) AS pkg_state,
15838
							 TO_NUMBER (NULL) AS deprecated_state,
15839
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15840
							 NULL AS pkg_version, NULL AS dlocked,
15841
							 NULL AS pv_description,
15842
							 rel.operation
15843
						FROM view_settings vs,
15844
							 view_def vd,
15845
							 views vi,
15846
							 planned rel,
15847
							 package_versions pv
15848
					   WHERE vs.view_id = vi.view_id
15849
						 AND rel.pv_id = pv.pv_id
15850
						 AND vd.pkg_id = pv.pkg_id
15851
						 AND vd.view_id = vi.view_id
15852
						 AND vi.base_view = 'N'
15853
						 AND rel.rtag_id = rtagid
15854
						 AND vs.user_id = userid
15855
						 AND vi.view_id NOT IN (
15856
								SELECT *
15857
								  FROM THE
15858
										  (SELECT CAST
15859
													 (in_list_number
15860
															  (sviewidshowlist) AS relmgr_number_tab_t
15861
													 )
15862
											 FROM DUAL
15863
										  ))
15864
					  UNION
15865
					  /* Private Views expanded */
15866
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15867
 
15868
							 --rel.pkg_state,
15869
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15870
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15871
							 pv.pv_description,
15872
							 rel.operation
15873
						FROM users usr,
15874
							 view_settings vs,
15875
							 view_def vd,
15876
							 views vi,
15877
							 planned rel,
15878
							 PACKAGES pkg,
15879
							 package_versions pv
15880
					   WHERE vs.user_id = usr.user_id
15881
						 AND vs.view_id = vi.view_id
15882
						 AND vd.view_id = vi.view_id
15883
						 AND pv.pkg_id = pkg.pkg_id
15884
						 AND rel.pv_id = pv.pv_id
15885
						 AND rel.rtag_id = rtagid
15886
						 AND vd.pkg_id = pkg.pkg_id
15887
						 AND vi.base_view = 'N'
15888
						 AND vi.view_id IN (
15889
								SELECT *
15890
								  FROM THE
15891
										  (SELECT CAST
15892
													 (in_list_number
15893
															  (sviewidshowlist) AS relmgr_number_tab_t
15894
													 )
15895
											 FROM DUAL
15896
										  ))
15897
						 AND usr.user_id = userid) ord
15898
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15899
	  END IF;
51 mhunt 15900
   END;
15901
 
15902
/*-------------------------------------------------------------------------------------------------------*/
15903
   PROCEDURE get_view_content (
53 mhunt 15904
	  rtagid	  IN	   NUMBER,
15905
	  viewid	  IN	   NUMBER,
15906
	  recordset   OUT	  typecur
51 mhunt 15907
   )
15908
   IS
53 mhunt 15909
	  isbaseview   CHAR (1);
51 mhunt 15910
   BEGIN
53 mhunt 15911
	  -- Check if the view is BASE VIEW
15912
	  SELECT vi.base_view
15913
		INTO isbaseview
15914
		FROM views vi
15915
	   WHERE vi.view_id = viewid;
51 mhunt 15916
 
53 mhunt 15917
	  IF (isbaseview = 'Y')
15918
	  THEN
15919
		 -- Get Base view content
15920
		 OPEN recordset FOR
15921
			SELECT   DECODE (rel.pkg_state,
15922
							 NULL, 0,
15923
							 rel.pkg_state
15924
							) AS pkg_state,
15925
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15926
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15927
					 pv.build_type,
15928
					 rel.operation
15929
				FROM environment_view rel, PACKAGES pkg, package_versions pv
15930
			   WHERE pv.pkg_id = pkg.pkg_id
15931
				 AND rel.pv_id = pv.pv_id
15932
				 AND rel.view_id = viewid
15933
				 AND rel.rtag_id = rtagid
15934
			ORDER BY UPPER (pkg.pkg_name);
15935
	  ELSE
15936
		 -- Get non base view content
15937
		 OPEN recordset FOR
15938
			SELECT   DECODE (rel.pkg_state,
15939
							 NULL, 0,
15940
							 rel.pkg_state
15941
							) AS pkg_state,
15942
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15943
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15944
					 pv.build_type,
15945
					 rel.operation
15946
				FROM environment_view rel,
15947
					 PACKAGES pkg,
15948
					 package_versions pv,
15949
					 view_def vd
15950
			   WHERE pv.pkg_id = pkg.pkg_id
15951
				 AND rel.pv_id = pv.pv_id
15952
				 AND rel.rtag_id = rtagid
15953
				 AND vd.view_id = viewid
15954
				 AND vd.pkg_id = pv.pkg_id
15955
			ORDER BY UPPER (pkg.pkg_name);
15956
	  END IF;
51 mhunt 15957
   END;
15958
 
15959
/*-------------------------------------------------------------------------------------------------------*/
15960
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 15961
	  RETURN NUMBER
51 mhunt 15962
   IS
53 mhunt 15963
	  envtab			 NUMBER;
15964
	  returnvalue		NUMBER;
15965
	  return_not_found   NUMBER := -1;
51 mhunt 15966
   BEGIN
53 mhunt 15967
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15968
 
53 mhunt 15969
	  IF envtab = 0
15970
	  THEN
15971
		 -- WORK IN PROGRESS --
15972
		 returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
15973
	  ELSIF envtab = 1
15974
	  THEN
15975
		 -- PENDING --
15976
		 returnvalue := pk_planned.get_package_view (pvid, rtagid);
15977
	  ELSIF envtab = 2
15978
	  THEN
15979
		 -- RELEASED --
15980
		 returnvalue := pk_release.get_package_view (pvid, rtagid);
15981
	  ELSE
15982
		 -- This may be a Patch not located anywhere but unlocked
15983
		 returnvalue := return_not_found;
15984
	  END IF;
51 mhunt 15985
 
53 mhunt 15986
	  RETURN returnvalue;
51 mhunt 15987
   END;
15988
 
15989
/*-------------------------------------------------------------------------------------------------------*/
15990
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
15991
   IS
53 mhunt 15992
	  viewid		  NUMBER;
15993
	  envtab		  NUMBER;
15994
	  ispatch		 CHAR (1) := NULL;
15995
	  buildtype	   CHAR (1) := NULL;
15996
	  lastversionid   NUMBER;
51 mhunt 15997
   BEGIN
53 mhunt 15998
	  -- Check if package is patch
15999
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16000
		INTO ispatch, buildtype, lastversionid
16001
		FROM package_versions pv
16002
	   WHERE pv.pv_id = pvid;
51 mhunt 16003
 
53 mhunt 16004
	  -- Get ViewId
16005
	  viewid := get_package_view (pvid, rtagid);
16006
	  -- Remove from current area
16007
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16008
 
53 mhunt 16009
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16010
	  -- Exclude patches, ripple builds
16011
	  IF (envtab < 0)
16012
	  THEN
16013
		 -- Not found in work-in-progress or pending
16014
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16015
		 THEN
16016
			raise_application_error (-20000,
16017
									 'This package cannot be released here.'
16018
									);
16019
		 END IF;
16020
	  END IF;
51 mhunt 16021
 
53 mhunt 16022
	  -- Log
16023
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16024
 
53 mhunt 16025
	  IF envtab = 0
16026
	  THEN
16027
		 -- WORK IN PROGRESS --
16028
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16029
	  ELSIF envtab = 1
16030
	  THEN
16031
		 -- PENDING --
16032
		 pk_planned.remove_package (pvid, rtagid, userid);
16033
	  END IF;
51 mhunt 16034
 
53 mhunt 16035
	  -- Change package state
16036
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16037
 
53 mhunt 16038
	  -- Make sure it is valid BASE VIEW
16039
	  IF viewid < 1
16040
	  THEN
16041
		 viewid := 7;							-- This is default base view
16042
	  END IF;
51 mhunt 16043
 
53 mhunt 16044
	  IF (ispatch IS NULL)
16045
	  THEN
16046
		 -- Add package to new area
16047
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16048
	  END IF;
51 mhunt 16049
 
53 mhunt 16050
	  -- Now do post Release Actions
16051
	  pk_release.run_post_actions (pvid, rtagid);
51 mhunt 16052
 
53 mhunt 16053
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16054
	  DELETE FROM do_not_ripple
16055
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16056
 
53 mhunt 16057
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16058
	  DELETE FROM advisory_ripple
16059
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16060
 
53 mhunt 16061
	  -- Log
16062
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16063
   END;
16064
 
16065
/*-------------------------------------------------------------------------------------------------------*/
16066
   PROCEDURE auto_make_release (
53 mhunt 16067
	  pvid			IN   NUMBER,
16068
	  rtagid		  IN   NUMBER,
16069
	  userid		  IN   NUMBER,
16070
	  vext			IN   package_versions.v_ext%TYPE,
16071
	  ssv_ext		 IN   package_versions.v_ext%TYPE,
16072
	  clonefrompvid   IN   NUMBER
51 mhunt 16073
   )
16074
   IS
53 mhunt 16075
	  viewid		  NUMBER;
16076
	  envtab		  NUMBER;
16077
	  ispatch		 CHAR (1) := NULL;
16078
	  buildtype	   CHAR (1) := NULL;
16079
	  lastversionid   NUMBER;
51 mhunt 16080
   BEGIN
53 mhunt 16081
	  -- Check if package is patch
16082
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16083
		INTO ispatch, buildtype, lastversionid
16084
		FROM package_versions pv
16085
	   WHERE pv.pv_id = pvid;
51 mhunt 16086
 
53 mhunt 16087
	  IF vext <> ssv_ext
16088
	  THEN
16089
		 -- Get ViewId
16090
		 viewid := get_package_view (clonefrompvid, rtagid);
16091
		 -- Remove from current area
16092
		 envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
16093
	  ELSE
16094
		 -- Get ViewId
16095
		 viewid := get_package_view (pvid, rtagid);
16096
		 -- Remove from current area
16097
		 envtab := pk_environment.get_package_area (pvid, rtagid);
16098
	  END IF;
51 mhunt 16099
 
53 mhunt 16100
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16101
	  -- Exclude patches, ripple builds
16102
	  IF (envtab < 0)
16103
	  THEN
16104
		 -- Not found in work-in-progress or pending
16105
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16106
		 THEN
16107
			raise_application_error (-20000,
16108
									 'This package cannot be released here.'
16109
									);
16110
		 END IF;
16111
	  END IF;
51 mhunt 16112
 
53 mhunt 16113
	  -- Log
16114
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16115
 
53 mhunt 16116
	  IF vext <> ssv_ext
16117
	  THEN
16118
		 IF envtab = 0
16119
		 THEN
16120
			-- WORK IN PROGRESS --
16121
			pk_work_in_progress.remove_package (clonefrompvid, rtagid,
16122
												userid);
16123
		 ELSIF envtab = 1
16124
		 THEN
16125
			-- PENDING --
16126
			pk_planned.remove_package (clonefrompvid, rtagid, userid);
16127
		 ELSIF envtab = 2
16128
		 THEN
16129
			-- RELEASED --
16130
			pk_release.remove_package (clonefrompvid, rtagid, userid);
16131
		 END IF;
16132
	  ELSE
16133
		 IF envtab = 0
16134
		 THEN
16135
			-- WORK IN PROGRESS --
16136
			pk_work_in_progress.remove_package (pvid, rtagid, userid);
16137
		 ELSIF envtab = 1
16138
		 THEN
16139
			-- PENDING --
16140
			pk_planned.remove_package (pvid, rtagid, userid);
16141
		 END IF;
16142
	  END IF;
51 mhunt 16143
 
53 mhunt 16144
	  -- Change package state
16145
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16146
 
53 mhunt 16147
	  -- Make sure it is valid BASE VIEW
16148
	  IF viewid < 1
16149
	  THEN
16150
		 viewid := 7;							-- This is default base view
16151
	  END IF;
51 mhunt 16152
 
53 mhunt 16153
	  IF (ispatch IS NULL)
16154
	  THEN
16155
		 -- Add package to new area
16156
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16157
	  END IF;
51 mhunt 16158
 
53 mhunt 16159
	  -- Now do post Release Actions
16160
	  pk_release.run_post_actions (pvid, rtagid);
16161
	  -- Now update the Dash_Board Table (DEPRECATED)
16162
	  pk_rmapi.update_dash_board (rtagid);
51 mhunt 16163
 
53 mhunt 16164
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16165
	  DELETE FROM do_not_ripple
16166
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16167
 
53 mhunt 16168
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16169
	  DELETE FROM advisory_ripple
16170
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16171
 
53 mhunt 16172
	  -- Log
16173
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16174
   END;
16175
 
16176
/*-------------------------------------------------------------------------------------------------------*/
16177
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16178
   IS
53 mhunt 16179
	  viewid   NUMBER;
16180
	  envtab   NUMBER;
51 mhunt 16181
   BEGIN
53 mhunt 16182
	  -- Get ViewId
16183
	  --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
16184
	  viewid := get_package_view (pvid, rtagid);
16185
	  -- Remove from current area
16186
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16187
	  -- Log
16188
	  log_action (pvid,
16189
				  'action',
16190
				  userid,
16191
				  'Start of Make Package UnRelease...'
16192
				 );
51 mhunt 16193
 
53 mhunt 16194
	  IF envtab = 2
16195
	  THEN
16196
		 -- RELEASE AREA --
16197
		 pk_release.remove_package (pvid, rtagid, userid);
16198
	  ELSIF envtab = 1
16199
	  THEN
16200
		 -- PENDING --
16201
		 pk_planned.remove_package (pvid, rtagid, userid);
16202
	  END IF;
51 mhunt 16203
 
53 mhunt 16204
	  -- Change package state
16205
	  pk_package.change_state (pvid, 'N', userid);
51 mhunt 16206
 
53 mhunt 16207
	  -- Make sure it is valid BASE VIEW
16208
	  IF viewid < 1
16209
	  THEN
16210
		 viewid := 7;							-- This is default base view
16211
	  END IF;
51 mhunt 16212
 
53 mhunt 16213
	  -- Add package to new area
16214
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16215
	  -- Now do post Release Actions
16216
	  pk_release.run_post_actions (pvid, rtagid);
16217
	  -- Log
16218
	  log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
51 mhunt 16219
   END;
16220
 
16221
/*-------------------------------------------------------------------------------------------------------*/
16222
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16223
   IS
53 mhunt 16224
	  viewid	  NUMBER;
16225
	  ispatch	 CHAR (1) := NULL;
16226
	  buildtype   CHAR (1) := NULL;
51 mhunt 16227
   BEGIN
53 mhunt 16228
	  -- Check if package is patch
16229
	  SELECT pv.is_patch, pv.build_type
16230
		INTO ispatch, buildtype
16231
		FROM package_versions pv
16232
	   WHERE pv.pv_id = pvid;
51 mhunt 16233
 
53 mhunt 16234
	  -- Get ViewId
16235
	  viewid := get_package_view (pvid, rtagid);
16236
	  --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16237
 
53 mhunt 16238
	  -- Log
16239
	  log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
51 mhunt 16240
 
53 mhunt 16241
	  IF (ispatch IS NULL)
16242
	  THEN
16243
		 -- Remove from current area
16244
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16245
		 -- Change package state
16246
		 pk_package.change_state (pvid, 'P', userid);
16247
		 -- Add package to new area
16248
		 pk_planned.add_package (pvid, viewid, rtagid, userid);
16249
	  END IF;
51 mhunt 16250
 
53 mhunt 16251
	  -- Log
16252
	  log_action (pvid, 'action', userid, 'End of Make Package Pending...');
51 mhunt 16253
   END;
16254
 
16255
/*-------------------------------------------------------------------------------------------------------*/
16256
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16257
   IS
16258
   BEGIN
53 mhunt 16259
	  -- Log
16260
	  log_action (pvid,
16261
				  'action',
16262
				  userid,
16263
				  'Start of Package Pending Approval...'
16264
				 );
16265
	  -- Change package state
16266
	  pk_package.change_state (pvid, 'A', userid);
16267
	  -- Log
16268
	  log_action (pvid, 'action', userid,
16269
				  'End of Package Pending Approval...');
51 mhunt 16270
   END;
16271
 
16272
/*-------------------------------------------------------------------------------------------------------*/
16273
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16274
   IS
53 mhunt 16275
	  viewid   NUMBER;
16276
	  operation CHAR;
51 mhunt 16277
   BEGIN
53 mhunt 16278
	  -- Get ViewId
16279
	  viewid := get_package_view (pvid, rtagid);
16280
	  -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16281
 
53 mhunt 16282
	  -- DEVI-45275
16283
	  -- If the package version is an official version that is to be rejected from a merge operation
16284
	  -- then find out in order to prevent it being added back to work-in-progress table . This will
16285
	  -- be denoted by the operation field in the planned table being A or S
16286
	  operation := ' ';
16287
	  SELECT
16288
	  (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
16289
	  FROM planned pl
16290
	  WHERE pl.PV_ID = pvid
16291
	  AND pl.RTAG_ID = rtagid;
16292
 
16293
	  -- Log
16294
	  log_action (pvid, 'action', userid, 'Start of Reject Package...');
16295
	  -- Remove from current area
16296
	  pk_planned.remove_package (pvid, rtagid, userid);
16297
 
16298
	  -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
16299
	  IF operation <> 'A' AND operation <> 'S'
16300
	  THEN
16301
	  -- Change package state
16302
	  pk_package.change_state (pvid, 'R', userid);
16303
	  -- Add package to new area
16304
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16305
	  ELSE
16306
		log_action (pvid, 'action', userid, 'Rejected Package Merge');
16307
	  END IF;
16308
	  -- Log
16309
	  log_action (pvid, 'action', userid, 'End of Reject Package...');
51 mhunt 16310
   END;
16311
 
16312
/*-------------------------------------------------------------------------------------------------------*/
16313
   PROCEDURE change_package_view (
53 mhunt 16314
	  pvid		IN   NUMBER,
16315
	  rtagid	  IN   NUMBER,
16316
	  newviewid   IN   NUMBER
51 mhunt 16317
   )
16318
   IS
53 mhunt 16319
	  envtab   NUMBER;
51 mhunt 16320
   BEGIN
53 mhunt 16321
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16322
 
53 mhunt 16323
	  IF envtab = 0
16324
	  THEN
16325
		 -- WORK IN PROGRESS --
16326
		 pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
16327
	  ELSIF envtab = 1
16328
	  THEN
16329
		 -- PENDING --
16330
		 pk_planned.change_package_view (pvid, rtagid, newviewid);
16331
	  ELSIF envtab = 2
16332
	  THEN
16333
		 -- RELEASED --
16334
		 pk_release.change_package_view (pvid, rtagid, newviewid);
16335
	  END IF;
51 mhunt 16336
   END;
16337
 
16338
/*-------------------------------------------------------------------------------------------------------*/
16339
   PROCEDURE find_package (
53 mhunt 16340
	  skeyword	  IN	   VARCHAR2,
16341
	  nrtagid	   IN	   NUMBER,
16342
	  nsearcharea   IN	   NUMBER,
16343
	  recordset	 OUT	  typecur
51 mhunt 16344
   )
16345
   IS
16346
   BEGIN
53 mhunt 16347
	  IF nsearcharea = 0
16348
	  THEN
16349
		 /* Search Work In Progress */
16350
		 OPEN recordset FOR
16351
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16352
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16353
					 pv.modified_stamp, usr.full_name, usr.user_email
16354
				FROM views vi,
16355
					 work_in_progress rc,
16356
					 PACKAGES pkg,
16357
					 package_versions pv,
16358
					 users usr
16359
			   WHERE rc.view_id = vi.view_id
16360
				 AND rc.pv_id = pv.pv_id
16361
				 AND pkg.pkg_id = pv.pkg_id
16362
				 AND pv.modifier_id = usr.user_id
16363
				 AND rc.rtag_id = nrtagid
16364
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16365
			ORDER BY UPPER (pkg.pkg_name);
16366
	  ELSIF nsearcharea = 1
16367
	  THEN
16368
		 /* Search Pending */
16369
		 OPEN recordset FOR
16370
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16371
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16372
					 pv.modified_stamp, usr.full_name, usr.user_email
16373
				FROM views vi,
16374
					 planned rc,
16375
					 PACKAGES pkg,
16376
					 package_versions pv,
16377
					 users usr
16378
			   WHERE rc.view_id = vi.view_id
16379
				 AND rc.pv_id = pv.pv_id
16380
				 AND pkg.pkg_id = pv.pkg_id
16381
				 AND pv.modifier_id = usr.user_id
16382
				 AND rc.rtag_id = nrtagid
16383
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16384
			ORDER BY UPPER (pkg.pkg_name);
16385
	  ELSIF nsearcharea = 2
16386
	  THEN
16387
		 /* Search Released */
16388
		 OPEN recordset FOR
16389
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16390
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16391
					 pv.modified_stamp, usr.full_name, usr.user_email
16392
				FROM views vi,
16393
					 release_content rc,
16394
					 PACKAGES pkg,
16395
					 package_versions pv,
16396
					 users usr
16397
			   WHERE rc.base_view_id = vi.view_id
16398
				 AND rc.pv_id = pv.pv_id
16399
				 AND pkg.pkg_id = pv.pkg_id
16400
				 AND pv.modifier_id = usr.user_id
16401
				 AND rc.rtag_id = nrtagid
16402
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16403
			ORDER BY UPPER (pkg.pkg_name);
16404
	  ELSIF nsearcharea = 3
16405
	  THEN
16406
		 /* Search ALL */
16407
		 OPEN recordset FOR
16408
			SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
16409
					 pv.pv_id, pv.pkg_version, pv.comments,
16410
					 pv.modified_stamp, usr.full_name, usr.user_email
16411
				FROM views vi,
16412
					 environment_view rc,
16413
					 PACKAGES pkg,
16414
					 package_versions pv,
16415
					 users usr
16416
			   WHERE rc.view_id = vi.view_id
16417
				 AND rc.pv_id = pv.pv_id
16418
				 AND pkg.pkg_id = pv.pkg_id
16419
				 AND pv.modifier_id = usr.user_id
16420
				 AND rc.rtag_id = nrtagid
16421
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16422
			ORDER BY UPPER (pkg.pkg_name);
16423
	  END IF;
51 mhunt 16424
   END;
16425
 
16426
/*-------------------------------------------------------------------------------------------------------*/
16427
   PROCEDURE find_file (
53 mhunt 16428
	  skeyword	  IN	   VARCHAR2,
16429
	  nrtagid	   IN	   NUMBER,
16430
	  nsearcharea   IN	   NUMBER,
16431
	  npagesize	 IN	   NUMBER,
16432
	  recordset	 OUT	  typecur
51 mhunt 16433
   )
16434
   IS
16435
   BEGIN
53 mhunt 16436
	  IF nsearcharea = 0
16437
	  THEN
16438
		 /* Search Work In Progress */
16439
		 OPEN recordset FOR
16440
			SELECT   qry.*
16441
				FROM (
16442
					  /* File search on Packages */
16443
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16444
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16445
						FROM work_in_progress rc,
16446
							 PACKAGES pkg,
16447
							 package_versions pv,
16448
							 release_components art
16449
					   WHERE rc.pv_id = art.pv_id
16450
						 AND pv.pkg_id = pkg.pkg_id
16451
						 AND rc.pv_id = pv.pv_id
16452
						 AND rc.rtag_id = nrtagid
16453
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16454
					  UNION ALL
16455
					  /* File search on Products */
16456
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16457
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16458
						FROM work_in_progress rc,
16459
							 PACKAGES pkg,
16460
							 package_versions pv,
16461
							 product_components art
16462
					   WHERE rc.pv_id = art.pv_id
16463
						 AND pv.pkg_id = pkg.pkg_id
16464
						 AND rc.pv_id = pv.pv_id
16465
						 AND rc.rtag_id = nrtagid
16466
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16467
			   WHERE ROWNUM <= npagesize
16468
			ORDER BY UPPER (qry.pkg_name);
16469
	  ELSIF nsearcharea = 1
16470
	  THEN
16471
		 /* Search Pending */
16472
		 OPEN recordset FOR
16473
			SELECT   qry.*
16474
				FROM (
16475
					  /* File search on Packages */
16476
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16477
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16478
						FROM planned rc,
16479
							 PACKAGES pkg,
16480
							 package_versions pv,
16481
							 release_components art
16482
					   WHERE rc.pv_id = art.pv_id
16483
						 AND pv.pkg_id = pkg.pkg_id
16484
						 AND rc.pv_id = pv.pv_id
16485
						 AND rc.rtag_id = nrtagid
16486
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16487
					  UNION ALL
16488
					  /* File search on Products */
16489
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16490
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16491
						FROM planned rc,
16492
							 PACKAGES pkg,
16493
							 package_versions pv,
16494
							 product_components art
16495
					   WHERE rc.pv_id = art.pv_id
16496
						 AND pv.pkg_id = pkg.pkg_id
16497
						 AND rc.pv_id = pv.pv_id
16498
						 AND rc.rtag_id = nrtagid
16499
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16500
			   WHERE ROWNUM <= npagesize
16501
			ORDER BY UPPER (qry.pkg_name);
16502
	  ELSIF nsearcharea = 2
16503
	  THEN
16504
		 /* Search Released */
16505
		 OPEN recordset FOR
16506
			SELECT   qry.*
16507
				FROM (
16508
					  /* File search on Packages */
16509
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16510
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16511
							 NULL AS patch_id
16512
						FROM release_content rc,
16513
							 PACKAGES pkg,
16514
							 package_versions pv,
16515
							 release_components art
16516
					   WHERE rc.pv_id = art.pv_id
16517
						 AND pv.pkg_id = pkg.pkg_id
16518
						 AND rc.pv_id = pv.pv_id
16519
						 AND rc.rtag_id = nrtagid
16520
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16521
					  UNION ALL
16522
					  /* File search on Products */
16523
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16524
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16525
							 NULL AS patch_id
16526
						FROM release_content rc,
16527
							 PACKAGES pkg,
16528
							 package_versions pv,
16529
							 product_components art
16530
					   WHERE rc.pv_id = art.pv_id
16531
						 AND pv.pkg_id = pkg.pkg_id
16532
						 AND rc.pv_id = pv.pv_id
16533
						 AND rc.rtag_id = nrtagid
16534
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16535
					  UNION ALL
16536
					  /* File search on Patches */
16537
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16538
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16539
							 DECODE (art.file_path,
16540
									 NULL, pp.patch_id,
16541
									 NULL
16542
									) AS patch_id
16543
						FROM release_content rc,
16544
							 PACKAGES pkg,
16545
							 package_versions pv,
16546
							 release_components art,
16547
							 package_patches pp
16548
					   WHERE pv.pv_id = pp.pv_id
16549
						 AND pv.pkg_id = pkg.pkg_id
16550
						 AND rc.rtag_id = nrtagid
16551
						 AND art.pv_id = pp.patch_id
16552
						 AND rc.pv_id = pp.pv_id
16553
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16554
			   WHERE ROWNUM <= npagesize
16555
			ORDER BY UPPER (qry.pkg_name);
16556
	  ELSIF nsearcharea = 3
16557
	  THEN
16558
		 /* Search ALL */
16559
		 OPEN recordset FOR
16560
			SELECT   qry.*
16561
				FROM (
16562
					  /* File search on Packages */
16563
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16564
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16565
							 NULL AS patch_id
16566
						FROM environment_view rc,
16567
							 PACKAGES pkg,
16568
							 package_versions pv,
16569
							 release_components art
16570
					   WHERE rc.pv_id = art.pv_id
16571
						 AND pv.pkg_id = pkg.pkg_id
16572
						 AND rc.pv_id = pv.pv_id
16573
						 AND rc.rtag_id = nrtagid
16574
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16575
					  UNION ALL
16576
					  /* File search on Products */
16577
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16578
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16579
							 NULL AS patch_id
16580
						FROM environment_view rc,
16581
							 PACKAGES pkg,
16582
							 package_versions pv,
16583
							 product_components art
16584
					   WHERE rc.pv_id = art.pv_id
16585
						 AND pv.pkg_id = pkg.pkg_id
16586
						 AND rc.pv_id = pv.pv_id
16587
						 AND rc.rtag_id = nrtagid
16588
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16589
					  UNION ALL
16590
					  /* File search on Patches */
16591
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16592
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16593
							 DECODE (art.file_path,
16594
									 NULL, pp.patch_id,
16595
									 NULL
16596
									) AS patch_id
16597
						FROM release_content rc,
16598
							 PACKAGES pkg,
16599
							 package_versions pv,
16600
							 release_components art,
16601
							 package_patches pp
16602
					   WHERE pv.pv_id = pp.pv_id
16603
						 AND pv.pkg_id = pkg.pkg_id
16604
						 AND rc.rtag_id = nrtagid
16605
						 AND art.pv_id = pp.patch_id
16606
						 AND rc.pv_id = pp.pv_id
16607
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16608
			   WHERE ROWNUM <= npagesize
16609
			ORDER BY UPPER (qry.pkg_name);
16610
	  END IF;
51 mhunt 16611
   END;
16612
 
16613
/*-------------------------------------------------------------------------------------------------------*/
16614
   PROCEDURE get_prodrelease_items (
53 mhunt 16615
	  rtagid			 IN	   NUMBER,
16616
	  ntruerecordcount   OUT	  NUMBER,
16617
	  recordset		  OUT	  typecur
51 mhunt 16618
   )
16619
   IS
16620
   BEGIN
53 mhunt 16621
	  -- Get true record count n the number of integration products
16622
	  SELECT COUNT (rc.pv_id)
16623
		INTO ntruerecordcount
16624
		FROM release_content rc
16625
	   WHERE rc.rtag_id = rtagid;
51 mhunt 16626
 
53 mhunt 16627
	  OPEN recordset FOR
16628
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,	--rel.pkg_state,
16629
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16630
				  pv.pkg_version, pv.dlocked, pv.pv_description
16631
			 FROM release_content rel,
16632
				  PACKAGES pkg,
16633
				  package_versions pv,
16634
				  views vi
16635
			WHERE pv.pkg_id = pkg.pkg_id
16636
			  AND rel.pv_id = pv.pv_id
16637
			  AND rel.base_view_id = vi.view_id
16638
			  AND pv.is_deployable = 'Y'
16639
			  AND rtag_id = rtagid
16640
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16641
											  FROM deployment_manager.os_contents)
16642
			  AND rel.product_state IS NULL
16643
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16644
   END;
16645
 
16646
/*-------------------------------------------------------------------------------------------------------*/
16647
   PROCEDURE get_integration_items (
53 mhunt 16648
	  rtagid			 IN	   NUMBER,
16649
	  ntruerecordcount   OUT	  NUMBER,
16650
	  recordset		  OUT	  typecur
51 mhunt 16651
   )
16652
   IS
16653
   BEGIN
53 mhunt 16654
	  -- Get true record count n the number of integration products
16655
	  SELECT COUNT (rc.pv_id)
16656
		INTO ntruerecordcount
16657
		FROM release_content rc
16658
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
51 mhunt 16659
 
53 mhunt 16660
	  OPEN recordset FOR
16661
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16662
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16663
				  pv.pkg_version, pv.dlocked, pv.pv_description
16664
			 FROM release_content rel,
16665
				  PACKAGES pkg,
16666
				  package_versions pv,
16667
				  views vi
16668
			WHERE pv.pkg_id = pkg.pkg_id
16669
			  AND rel.pv_id = pv.pv_id
16670
			  AND rel.base_view_id = vi.view_id
16671
			  AND pv.is_deployable = 'Y'
16672
			  AND rtag_id = rtagid
16673
			  AND rel.product_state IN (1, 5)
16674
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16675
   END;
16676
 
16677
/*-------------------------------------------------------------------------------------------------------*/
16678
   PROCEDURE get_test_items (
53 mhunt 16679
	  rtagid			 IN	   NUMBER,
16680
	  ntruerecordcount   OUT	  NUMBER,
16681
	  recordset		  OUT	  typecur
51 mhunt 16682
   )
16683
   IS
16684
   BEGIN
53 mhunt 16685
	  -- Get true record count n the number of test products
16686
	  SELECT COUNT (rc.pv_id)
16687
		INTO ntruerecordcount
16688
		FROM release_content rc
16689
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
51 mhunt 16690
 
53 mhunt 16691
	  OPEN recordset FOR
16692
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16693
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16694
				  pv.pkg_version, pv.dlocked, pv.pv_description
16695
			 FROM release_content rel,
16696
				  PACKAGES pkg,
16697
				  package_versions pv,
16698
				  views vi
16699
			WHERE pv.pkg_id = pkg.pkg_id
16700
			  AND rel.pv_id = pv.pv_id
16701
			  AND rel.base_view_id = vi.view_id
16702
			  AND pv.is_deployable = 'Y'
16703
			  AND rtag_id = rtagid
16704
			  AND rel.product_state = 2
16705
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16706
   END;
16707
 
16708
/*-------------------------------------------------------------------------------------------------------*/
16709
   PROCEDURE get_deploy_items (
53 mhunt 16710
	  rtagid			 IN	   NUMBER,
16711
	  ntruerecordcount   OUT	  NUMBER,
16712
	  recordset		  OUT	  typecur
51 mhunt 16713
   )
16714
   IS
16715
   BEGIN
53 mhunt 16716
	  -- Get true record count n the number of deploy products
16717
	  SELECT COUNT (rc.pv_id)
16718
		INTO ntruerecordcount
16719
		FROM release_content rc
16720
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
51 mhunt 16721
 
53 mhunt 16722
	  OPEN recordset FOR
16723
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16724
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16725
				  pv.pkg_version, pv.dlocked, pv.pv_description
16726
			 FROM release_content rel,
16727
				  PACKAGES pkg,
16728
				  package_versions pv,
16729
				  views vi
16730
			WHERE pv.pkg_id = pkg.pkg_id
16731
			  AND rel.pv_id = pv.pv_id
16732
			  AND rel.base_view_id = vi.view_id
16733
			  AND pv.is_deployable = 'Y'
16734
			  AND rtag_id = rtagid
16735
			  AND rel.product_state IN (3, 5)
16736
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16737
											  FROM deployment_manager.os_contents)
16738
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16739
   END;
16740
 
16741
/*-------------------------------------------------------------------------------------------------------*/
16742
   PROCEDURE get_reject_items (
53 mhunt 16743
	  rtagid			 IN	   NUMBER,
16744
	  ntruerecordcount   OUT	  NUMBER,
16745
	  recordset		  OUT	  typecur
51 mhunt 16746
   )
16747
   IS
16748
   BEGIN
53 mhunt 16749
	  -- Get true record count n the number of reject products
16750
	  SELECT COUNT (rc.pv_id)
16751
		INTO ntruerecordcount
16752
		FROM release_content rc
16753
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
51 mhunt 16754
 
53 mhunt 16755
	  OPEN recordset FOR
16756
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16757
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16758
				  pv.pkg_version, pv.dlocked, pv.pv_description
16759
			 FROM release_content rel,
16760
				  PACKAGES pkg,
16761
				  package_versions pv,
16762
				  views vi
16763
			WHERE pv.pkg_id = pkg.pkg_id
16764
			  AND rel.pv_id = pv.pv_id
16765
			  AND rel.base_view_id = vi.view_id
16766
			  AND pv.is_deployable = 'Y'
16767
			  AND rtag_id = rtagid
16768
			  AND rel.product_state = 4
16769
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16770
   END;
16771
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 16772
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
16773
   -- to the release_content table.
16774
 
16775
  PROCEDURE approve_merge (
16776
	PvId	IN NUMBER,
16777
	RtagId  IN NUMBER,
16778
	UserId  IN NUMBER
16779
  )
16780
  IS
16781
	viewid		  NUMBER;
16782
	envtab		  NUMBER;
16783
	oper			CHAR;
16784
  BEGIN
16785
	   -- Get ViewId
16786
	  viewid := get_package_view (pvid, rtagid);
16787
 
16788
	  -- Get the view tab
16789
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16790
 
16791
	  -- Make sure that package was in pending before merging it to released
16792
	  IF (envtab <> 1)
16793
	  THEN
16794
		 -- Not found in pending
16795
		 raise_application_error (-20000,
16796
								  'This package cannot be released here.'
16797
								 );
16798
	  END IF;
16799
 
16800
	  -- Log
16801
	  log_action (pvid, 'action', userid, 'Start of Package Merge...');
16802
 
16803
	  -- Get the planned operation type A=Add, S=Subtract
16804
	  SELECT ev.operation INTO oper
16805
	  FROM environment_view ev
16806
	  WHERE ev.rtag_id = RtagId
16807
	  AND ev.pv_id = PvId
16808
	  AND (ev.operation = 'A' OR ev.operation = 'S');
16809
 
16810
	  -- Remove from Pending
16811
	  pk_planned.remove_package (PvId, RtagId, UserId);
16812
 
16813
	  -- Either add to the release, or remove from the release as the operation commands
16814
	  IF oper = 'A'
16815
	  THEN
16816
		pk_release.add_package(PvId, viewId, RtagId, UserId);
16817
	  ELSIF oper = 'S'
16818
	  THEN
16819
		  pk_release.remove_package(PvId, RtagId, UserId);
16820
	  END IF;
16821
 
16822
	  touch_release(RtagId);
16823
 
16824
	  -- Log
16825
	  log_action (pvid, 'action', userid, 'End of Package Merge...');
16826
  END;
16827
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 16828
END pk_environment;
16829
/
16830
 
16831
CREATE OR REPLACE PACKAGE BODY PK_WORK_IN_PROGRESS IS
16832
 
16833
/*
16834
------------------------------
16835
||  Last Modified:  S.Vukovic
16836
||  Modified Date:  2/May/2005
16837
||  Body Version:   1.0
16838
------------------------------
16839
*/
16840
 
16841
 
16842
/*-------------------------------------------------------------------------------------------------------*/
16843
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16844
 
16845
	oldPvId NUMBER;
16846
	ReleaseLocation VARCHAR2(4000);
16847
	sLocation VARCHAR2(4000) := NULL;
16848
 
16849
 
16850
BEGIN
16851
	/*--------------- Business Rules Here -------------------*/
16852
	/*-------------------------------------------------------*/
16853
 
16854
	BEGIN
16855
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
16856
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
16857
		  FROM WORK_IN_PROGRESS wip,
16858
		  	   RELEASE_TAGS rt,
16859
			   PROJECTS proj
16860
		 WHERE wip.PV_ID = newPvId
16861
		   AND wip.RTAG_ID = rt.RTAG_ID
16862
		   AND rt.OFFICIAL != 'Y'
16863
		   AND rt.PROJ_ID = proj.PROJ_ID;
16864
 
16865
		EXCEPTION
16866
	    	WHEN NO_DATA_FOUND THEN
16867
	       		sLocation := NULL;
16868
 
16869
	END;	   	   
16870
 
16871
 
16872
 
16873
	IF (sLocation IS NULL)  THEN
16874
 
16875
		-- Add to "Work in progress"
16876
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
16877
		VALUES( RtagId, newPvId, ViewId );
16878
 
16879
 
16880
	    /* LOG ACTION */
16881
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16882
		  FROM PROJECTS proj,
16883
		  	   RELEASE_TAGS rt
16884
		 WHERE rt.PROJ_ID = proj.PROJ_ID
16885
		   AND rt.RTAG_ID = RtagId;
16886
 
16887
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16888
 
16889
	ELSE
16890
 
16891
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
16892
 
16893
	END IF;
16894
 
16895
END;
16896
/*-------------------------------------------------------------------------------------------------------*/
16897
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16898
 
16899
	ReleaseLocation VARCHAR2(4000);
16900
 
16901
BEGIN
16902
 
16903
	/*--------------- Business Rules Here -------------------*/
16904
	/*-------------------------------------------------------*/
16905
 
16906
 
16907
	-- Get release location for logging pusposes
16908
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16909
	  FROM PROJECTS proj,
16910
	  	   RELEASE_TAGS rt
16911
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16912
	   AND rt.RTAG_ID = RtagId;
16913
 
16914
 
16915
	-- Delete from Work In Progress
16916
	DELETE
16917
	  FROM WORK_IN_PROGRESS wip
16918
	 WHERE wip.RTAG_ID = RtagId
16919
	   AND wip.PV_ID = PvId;
16920
 
16921
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
16922
 
16923
 
16924
 
16925
 
16926
END;
16927
/*-------------------------------------------------------------------------------------------------------*/
16928
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
16929
 
16930
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16931
	ReleaseLocation VARCHAR2(4000);
16932
	PvId NUMBER;
16933
 
16934
BEGIN
16935
 
16936
	/*--------------- Business Rules Here -------------------*/
16937
	IF (PvIdList IS NULL)
16938
	THEN
16939
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16940
	END IF;
16941
	/*-------------------------------------------------------*/
16942
 
16943
 
16944
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
16945
 
16946
 
16947
	-- Get release location for logging pusposes
16948
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16949
	  FROM PROJECTS proj,
16950
	  	   RELEASE_TAGS rt
16951
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16952
	   AND rt.RTAG_ID = RtagId;
16953
 
16954
 
16955
	FOR i IN 1..nIdCollector.COUNT
16956
	LOOP
16957
		PvId := nIdCollector(i);
16958
 
16959
		-- Delete from Work In Progress
16960
		DELETE
16961
		  FROM WORK_IN_PROGRESS wip
16962
		 WHERE wip.RTAG_ID = RtagId
16963
		   AND wip.PV_ID = PvId;
16964
 
16965
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16966
 
16967
	END LOOP;
16968
 
16969
 
16970
END;
16971
/*-------------------------------------------------------------------------------------------------------*/
16972
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
16973
 
16974
	ReturnValue NUMBER;
16975
 
16976
BEGIN
16977
	SELECT wip.VIEW_ID INTO ReturnValue
16978
	  FROM WORK_IN_PROGRESS wip
16979
	 WHERE wip.RTAG_ID = RtagId
16980
	   AND wip.PV_ID = PvId;
16981
 
16982
	RETURN ReturnValue;
16983
END;
16984
/*-------------------------------------------------------------------------------------------------------*/
16985
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
16986
 
16987
	IsBaseView CHAR(1);
16988
 
16989
BEGIN
16990
 
16991
	-- Check if the view is BASE VIEW
16992
	SELECT vi.BASE_VIEW INTO IsBaseView
16993
	  FROM VIEWS vi
16994
	 WHERE vi.VIEW_ID = ViewId;
16995
 
16996
	IF (IsBaseView = 'Y') THEN 
16997
		-- Get Base view content
16998
		OPEN RecordSet FOR
16999
		SELECT 0 AS PKG_STATE,
17000
			   NULL AS DEPRECATED_STATE,
17001
			   pv.pv_id, 
17002
			   pkg.pkg_name, 
17003
			   pv.pkg_version, 
17004
			   pv.dlocked, 
17005
			   pv.pv_description,
17006
			   pv.BUILD_TYPE
17007
		  FROM WORK_IN_PROGRESS rel,
17008
		       packages pkg,
17009
		       package_versions pv
17010
		 WHERE pv.pkg_id = pkg.pkg_id
17011
		   AND rel.pv_id = pv.pv_id
17012
		   AND rel.VIEW_ID = ViewId
17013
		   AND rel.RTAG_ID = RtagId
17014
		 ORDER BY UPPER(pkg.PKG_NAME);
17015
 
17016
 
17017
	ELSE	 
17018
 
17019
	 	-- Get non base view content
17020
		OPEN RecordSet FOR
17021
		SELECT 0 AS PKG_STATE,
17022
			   NULL AS DEPRECATED_STATE,
17023
			   pv.pv_id, 
17024
			   pkg.pkg_name, 
17025
			   pv.pkg_version, 
17026
			   pv.dlocked, 
17027
			   pv.pv_description,
17028
			   pv.BUILD_TYPE
17029
		  FROM WORK_IN_PROGRESS rel,
17030
		       packages pkg,
17031
		       package_versions pv,
17032
			   VIEW_DEF vd
17033
		 WHERE pv.pkg_id = pkg.pkg_id
17034
		   AND rel.pv_id = pv.pv_id
17035
		   AND vd.VIEW_ID = ViewId
17036
		   AND vd.PKG_ID = pv.PKG_ID
17037
		   AND rel.RTAG_ID = RtagId
17038
		 ORDER BY UPPER(pkg.PKG_NAME);
17039
 
17040
 
17041
	END IF;	 	
17042
 
17043
 
17044
END;
17045
/*-------------------------------------------------------------------------------------------------------*/
17046
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
17047
 
17048
BEGIN
17049
 
17050
	UPDATE WORK_IN_PROGRESS wip SET
17051
	wip.VIEW_ID = NewViewId
17052
	WHERE wip.PV_ID = PvId
17053
	  AND wip.RTAG_ID = RtagId;
17054
 
17055
END;
17056
/*-------------------------------------------------------------------------------------------------------*/
17057
END PK_WORK_IN_PROGRESS;
17058
/
17059
 
17060
CREATE OR REPLACE PACKAGE BODY pk_package_Test
17061
IS
17062
/*
17063
------------------------------
17064
||  Last Modified:  R. Solanki
17065
||  Modified Date:  09/03/2006
17066
||  Body Version:   1.7
17067
------------------------------
17068
*/
17069
 
17070
   /*-------------------------------------------------------------------------------------------------------*/
17071
   PROCEDURE new_version (
17072
      nlastpvid                   IN       NUMBER,
17073
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
17074
      cbuildtype                  IN       CHAR,
17075
      nsettopvid                  IN       NUMBER DEFAULT NULL,
17076
      nrtagid                     IN       NUMBER,
17077
      nuserid                     IN       NUMBER,
17078
      enumissues_state_imported   IN       NUMBER,
17079
      returnpvid                  OUT      NUMBER
17080
   )
17081
   IS
17082
      origpkg_id                   package_versions.pkg_id%TYPE;
17083
      origdlocked                  package_versions.dlocked%TYPE;
17084
      ssv_mm                       package_versions.v_mm%TYPE;
17085
      ssv_nmm                      package_versions.v_nmm%TYPE;
17086
      ssv_ext                      package_versions.v_ext%TYPE;
17087
      spackageversion              VARCHAR2 (4000);
17088
      nissuestypes                 NUMBER;
17089
      nviewid                      NUMBER;
17090
      reccount                     NUMBER;
17091
      isreleased                   package_versions.dlocked%TYPE       := 'N';
17092
      slabel                       VARCHAR2 (4000)                    := NULL;
17093
 
17094
      CURSOR package_versions_cur
17095
      IS
17096
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
17097
           FROM package_versions pv
17098
          WHERE pv.pkg_version = snewpkgversion
17099
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
17100
                                         FROM package_versions origpv
17101
                                        WHERE origpv.pv_id = nlastpvid);
17102
 
17103
      package_versions_rec         package_versions_cur%ROWTYPE;
17104
 
17105
      CURSOR clone_package_versions_cur
17106
      IS
17107
         SELECT DISTINCT pkg_id, dlocked
17108
                    FROM package_versions
17109
                   WHERE pv_id = nlastpvid;
17110
 
17111
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
17112
   BEGIN
17113
      spackageversion := snewpkgversion;
17114
 
17115
      IF nsettopvid IS NULL
17116
      THEN
17117
         -- SetToPv_id is not supplied, hence proceed.
17118
 
17119
         /* ---------------------------------------------------- */
17120
/* Find id package_version exists                       */
17121
/* ---------------------------------------------------- */
17122
         OPEN package_versions_cur;
17123
 
17124
         FETCH package_versions_cur
17125
          INTO package_versions_rec;
17126
 
17127
         IF package_versions_cur%NOTFOUND
17128
         THEN
17129
            ---  Create brand new package ---
17130
            SELECT seq_pv_id.NEXTVAL
17131
              INTO returnpvid
17132
              FROM DUAL;
17133
 
17134
            -- Split Version to get extention + other
17135
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
17136
 
17137
            -- Get previous package to clone from
17138
            OPEN clone_package_versions_cur;
17139
 
17140
            FETCH clone_package_versions_cur
17141
             INTO clone_package_versions_rec;
17142
 
17143
            origpkg_id := clone_package_versions_rec.pkg_id;
17144
            origdlocked := clone_package_versions_rec.dlocked;
17145
 
17146
            CLOSE clone_package_versions_cur;
17147
 
17148
            -- Automated built config
17149
            IF (cbuildtype = 'A')
17150
            THEN
17151
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
17152
                                    -- Make sure that version is still unique
17153
            END IF;
17154
 
17155
            -- Clone Package Version Details --
17156
            INSERT INTO package_versions
17157
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
17158
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
17159
                         v_ext, src_path, pv_description, pv_overview,
17160
                         last_pv_id, owner_id, is_deployable,
17161
                         is_build_env_required, build_type, bs_id, is_autobuildable)
17162
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
17163
                      spackageversion AS pkg_version, 'N' AS dlocked,
17164
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
17165
                      ora_sysdatetime AS modified_stamp,
17166
                      nuserid AS modifier_id, ssv_mm AS v_mm,
17167
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
17168
                      pv.pv_description, pv.pv_overview,
17169
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
17170
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
17171
                 FROM package_versions pv
17172
                WHERE pv.pv_id = nlastpvid;
17173
 
17174
            -- Set Issues Type for cloning ---
17175
            IF origdlocked = 'Y'
17176
            THEN
17177
               nissuestypes := enumissues_state_imported;
17178
            ELSE
17179
               nissuestypes := NULL;
17180
            END IF;
17181
 
17182
            -- Update Label for automated built
17183
            IF (cbuildtype = 'A')
17184
            THEN
17185
               slabel := get_automated_label (returnpvid);
17186
 
17187
               UPDATE package_versions pv
17188
                  SET pv.pkg_label = slabel
17189
                WHERE pv.pv_id = returnpvid;
17190
            END IF;
17191
 
17192
            basic_clone (nlastpvid,
17193
                         returnpvid,
17194
                         nrtagid,
17195
                         nuserid,
17196
                         origpkg_id,
17197
                         nissuestypes
17198
                        );
17199
         ELSE
17200
            --- Package already exists, hence reuse ---
17201
            returnpvid := package_versions_rec.pv_id;
17202
            isreleased := package_versions_rec.dlocked;
17203
         END IF;
17204
 
17205
         CLOSE package_versions_cur;
17206
      ELSE
17207
         returnpvid := nsettopvid;
17208
      END IF;
17209
   END new_version;
17210
 
17211
/*-------------------------------------------------------------------------------------------------------*/
17212
   PROCEDURE change_state (
17213
      pvid       IN   NUMBER,
17214
      newstate   IN   package_versions.dlocked%TYPE,
17215
      userid     IN   NUMBER
17216
   )
17217
   IS
17218
   BEGIN
17219
      -- Set package in Released mode
17220
      UPDATE package_versions pv
17221
         SET pv.dlocked = newstate,
17222
             pv.modified_stamp = ora_sysdatetime,
17223
             pv.modifier_id = userid
17224
       WHERE pv.pv_id = pvid;
17225
 
17226
      -- Log action --
17227
      IF newstate = 'Y'
17228
      THEN
17229
         -- RELEASED --
17230
         log_action (pvid,
17231
                     'makeofficial',
17232
                     userid,
17233
                     'Package state change to: Released'
17234
                    );
17235
      ELSIF newstate = 'N'
17236
      THEN
17237
         -- UNLOCKED --
17238
         log_action (pvid,
17239
                     'makeunofficial',
17240
                     userid,
17241
                     'Package state change to: Ulocked'
17242
                    );
17243
      ELSIF newstate = 'P'
17244
      THEN
17245
         -- PENDING APPROVAL --
17246
         log_action (pvid,
17247
                     'add_to_planned',
17248
                     userid,
17249
                     'Package state change to: Pending Approval'
17250
                    );
17251
      ELSIF newstate = 'R'
17252
      THEN
17253
         -- REJECTED --
17254
         log_action (pvid,
17255
                     'reject_package',
17256
                     userid,
17257
                     'Package state change to: Rejected'
17258
                    );
17259
      ELSIF newstate = 'A'
17260
      THEN
17261
         -- APPROVED --
17262
         log_action (pvid,
17263
                     'approve_package',
17264
                     userid,
17265
                     'Package state change to: Approved'
17266
                    );
17267
      END IF;
17268
   END;
17269
 
17270
/*-------------------------------------------------------------------------------------------------------*/
17271
   PROCEDURE destroy_package (
17272
      pvid               IN       NUMBER,
17273
      overridewarnings   IN       CHAR DEFAULT 'N',
17274
      problemstring      OUT      VARCHAR2
17275
   )
17276
   IS
17277
      LOCKED     CHAR;
17278
      pkgid      NUMBER;
17279
      ROWCOUNT   NUMBER;
17280
   BEGIN
17281
      /*
17282
      || This will destroy all package details from database.
17283
      || It will only be used to remove unwanted work in progress packages,
17284
      || or mestaken versions
17285
      */
17286
 
17287
      /*--------------- Business Rules Here -------------------*/
17288
      problemstring := NULL;
17289
 
17290
      IF overridewarnings = 'N'
17291
      THEN
17292
         -- Package must not be official
17293
         SELECT pv.dlocked
17294
           INTO LOCKED
17295
           FROM package_versions pv
17296
          WHERE pv.pv_id = pvid;
17297
 
17298
         IF LOCKED = 'Y'
17299
         THEN
17300
            problemstring :=
17301
                  problemstring
17302
               || '- Package is locked and released.'
17303
               || UTL_TCP.crlf;
17304
         END IF;
17305
 
17306
         -- Cannot remove if used in BOMs
17307
         SELECT COUNT (osc.prod_id)
17308
           INTO ROWCOUNT
17309
           FROM deployment_manager.os_contents osc
17310
          WHERE osc.prod_id = pvid;
17311
 
17312
         IF ROWCOUNT > 0
17313
         THEN
17314
            problemstring :=
17315
                  problemstring
17316
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
17317
               || UTL_TCP.crlf;
17318
         END IF;
17319
 
17320
         -- Cannot remove if Referenced as build dependency
17321
         SELECT COUNT (dep.pv_id)
17322
           INTO ROWCOUNT
17323
           FROM package_dependencies dep
17324
          WHERE dep.dpv_id = pvid;
17325
 
17326
         IF ROWCOUNT > 0
17327
         THEN
17328
            problemstring :=
17329
                  problemstring
17330
               || '- Package is referenced by other package as build dependency.'
17331
               || UTL_TCP.crlf;
17332
         END IF;
17333
 
17334
         -- Cannot remove if Referenced as runtime dependency
17335
         SELECT COUNT (rd.pv_id)
17336
           INTO ROWCOUNT
17337
           FROM runtime_dependencies rd
17338
          WHERE rd.rtd_id = pvid;
17339
 
17340
         IF ROWCOUNT > 0
17341
         THEN
17342
            problemstring :=
17343
                  problemstring
17344
               || '- Package is referenced by other package as runtime dependency.'
17345
               || UTL_TCP.crlf;
17346
         END IF;
17347
 
17348
         -- Cannot remove if Referenced as patch
17349
         SELECT COUNT (pp.pv_id)
17350
           INTO ROWCOUNT
17351
           FROM package_patches pp
17352
          WHERE pp.patch_id = pvid;
17353
 
17354
         IF ROWCOUNT > 0
17355
         THEN
17356
            problemstring :=
17357
                  problemstring
17358
               || '- Package is used as patch by other package.'
17359
               || UTL_TCP.crlf;
17360
         END IF;
17361
      END IF;
17362
 
17363
/*-------------------------------------------------------*/
17364
      IF (problemstring IS NULL)
17365
      THEN
17366
         --- Remove From Work in Progress
17367
         DELETE FROM work_in_progress wip
17368
               WHERE wip.pv_id = pvid;
17369
 
17370
         --- Remove From Pending
17371
         DELETE FROM planned pl
17372
               WHERE pl.pv_id = pvid;
17373
 
17374
         --- Remove From Released area
17375
         DELETE FROM release_content rc
17376
               WHERE rc.pv_id = pvid;
17377
 
17378
         ---Remove From Package Processes
17379
         DELETE FROM package_processes pp
17380
               WHERE pp.pv_id = pvid;
17381
 
17382
         --- Remove Dependencies
17383
         DELETE FROM package_dependencies dep
17384
               WHERE dep.pv_id = pvid;
17385
 
17386
         DELETE FROM package_dependencies dep
17387
               WHERE dep.dpv_id = pvid;
17388
 
17389
         --- Remove Runtime dependencies
17390
         DELETE FROM runtime_dependencies rtd
17391
               WHERE rtd.pv_id = pvid;
17392
 
17393
         DELETE FROM runtime_dependencies rtd
17394
               WHERE rtd.rtd_id = pvid;
17395
 
17396
         --- Remove components
17397
         DELETE FROM product_components pc
17398
               WHERE pc.pv_id = pvid;
17399
 
17400
         DELETE FROM release_components rc
17401
               WHERE rc.pv_id = pvid;
17402
 
17403
         --- Remove From Notification History
17404
         DELETE FROM notification_history nh
17405
               WHERE nh.pv_id = pvid;
17406
 
17407
         --- Remove From Ignore Warnings
17408
         DELETE FROM ignore_warnings iw
17409
               WHERE iw.pv_id = pvid;
17410
 
17411
         --- Remove From Additional Notes
17412
         DELETE FROM additional_notes an
17413
               WHERE an.pv_id = pvid;
17414
 
17415
         --- Remove From CQ Issues
17416
         DELETE FROM cq_issues cq
17417
               WHERE cq.pv_id = pvid;
17418
 
17419
         --- Remove from Package Patches
17420
         DELETE FROM package_patches pp
17421
               WHERE pp.pv_id = pvid;
17422
 
17423
         DELETE FROM package_patches pp
17424
               WHERE pp.patch_id = pvid;
17425
 
17426
         --- Remove From Package Documents
17427
         DELETE FROM package_documents pd
17428
               WHERE pd.pv_id = pvid;
17429
 
17430
         --- Remove from Code Review
17431
         DELETE FROM code_reviews cr
17432
               WHERE cr.pv_id = pvid;
17433
 
17434
         --- Remove from Unit Tests
17435
         DELETE FROM unit_tests ut
17436
               WHERE ut.pv_id = pvid;
17437
 
17438
         --- Remove from Package BuildEnv
17439
         DELETE FROM package_build_env pbe
17440
               WHERE pbe.pv_id = pvid;
17441
 
17442
		 --- Remove from Package Build Info
17443
		 DELETE FROM package_build_info pbi
17444
		 	   WHERE pbi.pv_id = pvid;    
17445
 
17446
 
17447
         --- Remove from Build Order
17448
         DELETE FROM build_order bo
17449
               WHERE bo.pv_id = pvid;
17450
 
17451
         --- Remove from Note Manager
17452
         DELETE FROM note_manager nm
17453
               WHERE nm.nid = pvid;
17454
 
17455
         --- Remove from Action log
17456
         DELETE FROM action_log al
17457
               WHERE al.pv_id = pvid;
17458
 
17459
		 --- Remove from Do Not Ripple 
17460
		 DELETE FROM DO_NOT_RIPPLE dnr
17461
		 	   WHERE dnr.PV_ID = pvid;
17462
 
17463
		 --- Remove from Jira Issues 
17464
		 DELETE FROM JIRA_ISSUES jira
17465
		 	   WHERE jira.PV_ID = pvid;
17466
 
17467
         --- Finally Remove From Package Versions
17468
         --- Get Package name
17469
         SELECT pv.pkg_id
17470
           INTO pkgid
17471
           FROM package_versions pv
17472
          WHERE pv.pv_id = pvid;
17473
 
17474
         DELETE FROM package_versions pv
17475
               WHERE pv.pv_id = pvid;
17476
 
17477
         --- Remove package name if not used any more
17478
         SELECT COUNT (pv.pv_id)
17479
           INTO ROWCOUNT
17480
           FROM package_versions pv
17481
          WHERE pv.pkg_id = pkgid;
17482
 
17483
         IF ROWCOUNT < 1
17484
         THEN
17485
            DELETE FROM PACKAGES pkg
17486
                  WHERE pkg.pkg_id = pkgid;
17487
         END IF;
17488
      END IF;
17489
   END;
17490
 
17491
/*-------------------------------------------------------------------------------------------------------*/
17492
   PROCEDURE new_patch (
17493
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
17494
      nparentpvid        IN       NUMBER,
17495
      spatchidlist       IN       VARCHAR2,
17496
      nuserid            IN       NUMBER,
17497
      returnpatchid      OUT      NUMBER
17498
   )
17499
   IS
17500
      patchpv_id           NUMBER;
17501
      parpkg_id            NUMBER;
17502
      lastinstallorder     NUMBER;
17503
      ispatchdlocked       package_versions.dlocked%TYPE;
17504
      ssv_mm               package_versions.v_mm%TYPE;
17505
      ssv_nmm              package_versions.v_nmm%TYPE;
17506
      ssv_ext              package_versions.v_ext%TYPE;
17507
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
17508
                                                                          ();
17509
 
17510
      CURSOR parent_cur
17511
      IS
17512
         SELECT pv.*, pkg.pkg_name
17513
           FROM package_versions pv, PACKAGES pkg
17514
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
17515
 
17516
      parent_rec           parent_cur%ROWTYPE;
17517
 
17518
      CURSOR patch_cur
17519
      IS
17520
         SELECT pv.*, pg.pkg_name
17521
           FROM package_versions pv, PACKAGES pg
17522
          WHERE pv.pkg_id = parpkg_id
17523
            AND pv.pkg_version = snewpatchversion
17524
            AND pv.pkg_id = pg.pkg_id;
17525
 
17526
      patch_rec            patch_cur%ROWTYPE;
17527
 
17528
      CURSOR releases_cur
17529
      IS
17530
         SELECT rc.pv_id
17531
           FROM release_content rc
17532
          WHERE rc.pv_id = patch_rec.pv_id;
17533
 
17534
      releases_rec         releases_cur%ROWTYPE;
17535
   BEGIN
17536
      -- Get Last Install Order
17537
      SELECT COUNT (*)
17538
        INTO lastinstallorder
17539
        FROM package_patches pp
17540
       WHERE pp.pv_id = nparentpvid;
17541
 
17542
      -- Get parent details
17543
      OPEN parent_cur;
17544
 
17545
      FETCH parent_cur
17546
       INTO parent_rec;
17547
 
17548
      parpkg_id := parent_rec.pkg_id;
17549
 
17550
      -- Find if patch exists in database
17551
      OPEN patch_cur;
17552
 
17553
      FETCH patch_cur
17554
       INTO patch_rec;
17555
 
17556
      -- Parent must be official
17557
      IF parent_rec.dlocked = 'Y'
17558
      THEN
17559
         IF patch_cur%NOTFOUND
17560
         THEN
17561
            ispatchdlocked := 'N';
17562
 
17563
            -- Create new patch version --
17564
            SELECT seq_pv_id.NEXTVAL
17565
              INTO patchpv_id
17566
              FROM DUAL;
17567
 
17568
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
17569
 
17570
            INSERT INTO package_versions
17571
                        (pv_id, pkg_id, pkg_version,
17572
                         dlocked, created_stamp, creator_id,
17573
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
17574
                         src_path,
17575
                         pv_description,
17576
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
17577
						 is_autobuildable
17578
                        )
17579
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
17580
                         ispatchdlocked, ora_sysdate, nuserid,
17581
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
17582
                         parent_rec.src_path,
17583
                            'This is a patch to '
17584
                         || parent_rec.pkg_name
17585
                         || ' '
17586
                         || parent_rec.pkg_version,
17587
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
17588
                        );
17589
 
17590
            INSERT INTO package_patches
17591
                        (pv_id, patch_id, install_order)
17592
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17593
                       lastinstallorder + 1 AS install_order
17594
                  FROM package_versions pv
17595
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17596
 
17597
            /* LOG ACTION */
17598
            log_action (patchpv_id,
17599
                        'new_version',
17600
                        nuserid,
17601
                        'Patch version created: ' || snewpatchversion
17602
                       );
17603
            log_action (nparentpvid,
17604
                        'patch_add',
17605
                        nuserid,
17606
                        'New patch created and attached: ' || snewpatchversion
17607
                       );
17608
         ELSE
17609
            patchpv_id := patch_rec.pv_id;
17610
            ispatchdlocked := patch_rec.dlocked;
17611
 
17612
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
17613
            OPEN releases_cur;
17614
 
17615
            FETCH releases_cur
17616
             INTO releases_rec;
17617
 
17618
            IF releases_cur%NOTFOUND
17619
            THEN
17620
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
17621
               UPDATE package_versions
17622
                  SET is_patch = 'Y'
17623
                WHERE pv_id = patchpv_id;
17624
 
17625
               INSERT INTO package_patches
17626
                           (pv_id, patch_id, install_order)
17627
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17628
                          lastinstallorder + 1 AS install_order
17629
                     FROM package_versions pv
17630
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17631
            END IF;
17632
 
17633
            CLOSE releases_cur;
17634
 
17635
            /* LOG ACTION */
17636
            log_action (nparentpvid,
17637
                        'patch_add',
17638
                        nuserid,
17639
                           'Patch version was found and attached: '
17640
                        || snewpatchversion
17641
                       );
17642
         END IF;
17643
      END IF;
17644
 
17645
      /* Create Patch Dependencies */
17646
      opatchdepcollector := in_list_number (spatchidlist);
17647
 
17648
      -- Make sure patch is unofficial before altering its dependencies
17649
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
17650
      THEN
17651
         -- Delete Existing Dependencies
17652
         DELETE FROM package_dependencies dep
17653
               WHERE dep.pv_id = patchpv_id;
17654
 
17655
         -- Insert new dependencies
17656
         INSERT INTO package_dependencies
17657
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
17658
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
17659
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
17660
                   'L' AS build_type
17661
              FROM package_versions pv
17662
             WHERE pv.pv_id IN (
17663
                      SELECT *
17664
                        FROM TABLE
17665
                                (CAST
17666
                                    (opatchdepcollector AS relmgr_number_tab_t)
17667
                                ));
17668
      END IF;
17669
 
17670
      -- Return patch_id
17671
      returnpatchid := patchpv_id;
17672
 
17673
      CLOSE parent_cur;
17674
 
17675
      CLOSE patch_cur;
17676
   EXCEPTION
17677
      WHEN DUP_VAL_ON_INDEX
17678
      THEN
17679
         raise_application_error (-20000,
17680
                                     'Patch version '
17681
                                  || snewpatchversion
17682
                                  || ' already exist.'
17683
                                 );
17684
   END;
17685
 
17686
/*-------------------------------------------------------------------------------------------------------*/
17687
   PROCEDURE obsolete_patch (
17688
      patchid            IN   NUMBER,
17689
      isobsolete         IN   CHAR,
17690
      obsoletecomments   IN   VARCHAR2,
17691
      userid             IN   NUMBER
17692
   )
17693
   IS
17694
   BEGIN
17695
      -- Update patch
17696
      UPDATE package_versions pv
17697
         SET pv.is_obsolete = isobsolete,
17698
             pv.obsolete_comments = obsoletecomments
17699
       WHERE pv.pv_id = patchid;
17700
 
17701
      /*
17702
      -- Update patch children
17703
      UPDATE PACKAGE_VERSIONS pv SET
17704
      pv.IS_OBSOLETE = IsObsolete,
17705
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17706
      WHERE pv.PV_ID IN (
17707
                     SELECT DISTINCT dep.DPV_ID
17708
                       FROM PACKAGE_DEPENDENCIES dep
17709
                      WHERE dep.PV_ID = PatchId
17710
                     );
17711
 
17712
 
17713
      -- Update patch parent
17714
      UPDATE PACKAGE_VERSIONS pv SET
17715
      pv.IS_OBSOLETE = IsObsolete,
17716
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17717
      WHERE pv.PV_ID IN (
17718
                     SELECT DISTINCT dep.PV_ID
17719
                       FROM PACKAGE_DEPENDENCIES dep
17720
                      WHERE dep.DPV_ID = PatchId
17721
                     );
17722
 
17723
         */
17724
 
17725
      /* LOG ACTION */
17726
      IF isobsolete IS NOT NULL
17727
      THEN
17728
         log_action (patchid,
17729
                     'patch_obsolete',
17730
                     userid,
17731
                     'Obsolete patch. ' || obsoletecomments
17732
                    );
17733
      ELSE
17734
         log_action (patchid,
17735
                     'patch_obsolete',
17736
                     userid,
17737
                     'Undo patch obsolete.'
17738
                    );
17739
      END IF;
17740
   END;
17741
 
17742
/*-------------------------------------------------------------------------------------------------------*/
17743
   PROCEDURE obsolete_patches (
17744
      spatchidlist       IN   VARCHAR2,
17745
      isobsolete         IN   CHAR,
17746
      obsoletecomments   IN   VARCHAR2,
17747
      userid             IN   NUMBER
17748
   )
17749
   IS
17750
   BEGIN
17751
      /*--------------- Business Rules Here -------------------*/
17752
      IF spatchidlist IS NULL
17753
      THEN
17754
         raise_application_error (-20000,
17755
                                  'Please select one or more Patches.'
17756
                                 );
17757
      END IF;
17758
 
17759
/*-------------------------------------------------------*/
17760
 
17761
      -- Update patch
17762
      UPDATE package_versions pv
17763
         SET pv.is_obsolete = isobsolete,
17764
             pv.obsolete_comments = obsoletecomments
17765
       WHERE pv.pv_id IN (
17766
                SELECT *
17767
                  FROM THE
17768
                          (SELECT CAST
17769
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
17770
                                     )
17771
                             FROM DUAL
17772
                          ));
17773
   /*
17774
   -- Update patch children
17775
   UPDATE PACKAGE_VERSIONS pv SET
17776
   pv.IS_OBSOLETE = IsObsolete,
17777
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17778
   WHERE pv.PV_ID IN (
17779
                  SELECT DISTINCT dep.DPV_ID
17780
                    FROM PACKAGE_DEPENDENCIES dep
17781
                   WHERE dep.PV_ID = PatchId
17782
                  );
17783
 
17784
 
17785
   -- Update patch parent
17786
   UPDATE PACKAGE_VERSIONS pv SET
17787
   pv.IS_OBSOLETE = IsObsolete,
17788
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17789
   WHERE pv.PV_ID IN (
17790
                  SELECT DISTINCT dep.PV_ID
17791
                    FROM PACKAGE_DEPENDENCIES dep
17792
                   WHERE dep.DPV_ID = PatchId
17793
                  );
17794
 
17795
      */
17796
 
17797
   /* LOG ACTION
17798
   IF IsObsolete IS NOT NULL THEN
17799
         Log_Action ( PatchId, 'patch_obsolete', UserId,
17800
                  'Obsolete patch. '|| ObsoleteComments );
17801
   ELSE
17802
      Log_Action ( PatchId, 'patch_obsolete', UserId,
17803
                  'Undo patch obsolete.' );
17804
   END IF;  */
17805
   END;
17806
 
17807
/*-------------------------------------------------------------------------------------------------------*/
17808
   PROCEDURE add_process (
17809
      nprocid         IN   processes.proc_id%TYPE,
17810
      shealthtag      IN   processes.proc_name%TYPE,
17811
      sprocdesc       IN   processes.proc_description%TYPE,
17812
      scmdinterface   IN   processes.run_as%TYPE,
17813
      spkgowner       IN   processes.pkg_owner%TYPE,
17814
      sisinterface    IN   processes.is_interface%TYPE,
17815
      npvid           IN   package_processes.pv_id%TYPE,
17816
      nuserid         IN   NUMBER
17817
   )
17818
   IS
17819
      pkgname   VARCHAR2 (100);
17820
/*Rupesh Release on 17/05/2006*/
17821
   BEGIN
17822
      INSERT INTO processes
17823
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
17824
                   is_interface
17825
                  )
17826
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
17827
                   sisinterface
17828
                  );
17829
 
17830
      pk_package.add_package_process (nprocid, npvid, nuserid);
17831
   END;
17832
 
17833
/*-------------------------------------------------------------------------------------------------------*/
17834
   PROCEDURE add_package_process (
17835
      nprocidlist   IN   VARCHAR2,
17836
      npvid         IN   package_processes.pv_id%TYPE,
17837
      nuserid       IN   NUMBER
17838
   )
17839
   IS
17840
      processname   VARCHAR2 (4000);
17841
 
17842
/*Rupesh Release on 17/05/2006*/
17843
      CURSOR proc_cur
17844
      IS
17845
         SELECT prc.proc_id
17846
           FROM processes prc
17847
          WHERE prc.proc_id IN (
17848
                   SELECT *
17849
                     FROM THE
17850
                             (SELECT CAST
17851
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
17852
                                        )
17853
                                FROM DUAL
17854
                             ));
17855
 
17856
      proc_rec      proc_cur%ROWTYPE;
17857
   BEGIN
17858
      OPEN proc_cur;
17859
 
17860
      FETCH proc_cur
17861
       INTO proc_rec;
17862
 
17863
      WHILE proc_cur%FOUND
17864
      LOOP
17865
         INSERT INTO package_processes
17866
                     (proc_id, pv_id
17867
                     )
17868
              VALUES (proc_rec.proc_id, npvid
17869
                     );
17870
 
17871
         SELECT prc.proc_name
17872
           INTO processname
17873
           FROM processes prc
17874
          WHERE prc.proc_id = proc_rec.proc_id;
17875
 
17876
         -- Log Action --
17877
         log_action (npvid,
17878
                     'process_add',
17879
                     nuserid,
17880
                     'Added process with health tag ' || processname
17881
                    );
17882
 
17883
         FETCH proc_cur
17884
          INTO proc_rec;
17885
      END LOOP;
17886
   END;
17887
 
17888
/*-------------------------------------------------------------------------------------------------------*/
17889
   PROCEDURE remove_process (
17890
      nprocid   IN   package_processes.proc_id%TYPE,
17891
      npvid     IN   package_processes.pv_id%TYPE,
17892
      nuserid   IN   NUMBER
17893
   )
17894
   IS
17895
      processname   VARCHAR2 (4000);
17896
/* Rupesh Release on 17/05/2006*/
17897
   BEGIN
17898
      SELECT prc.proc_name
17899
        INTO processname
17900
        FROM processes prc
17901
       WHERE prc.proc_id = nprocid;
17902
 
17903
      DELETE FROM package_processes
17904
            WHERE proc_id = nprocid AND pv_id = npvid;
17905
 
17906
      -- Log Action --
17907
      log_action (npvid,
17908
                  'process_remove',
17909
                  nuserid,
17910
                  'Removed process with health tag ' || processname
17911
                 );
17912
   END;
17913
/*-------------------------------------------------------------------------------------------------------*/
17914
  /* 
17915
  Author: Rupesh Solanki
17916
  Purpose: To move package versions from one release to another
17917
  Release: 4th September 2006 
17918
 
17919
  */
17920
  PROCEDURE move_package (
17921
   	  npvid  			  IN package_versions.pv_id%TYPE,
17922
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
17923
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
17924
	  nuserid			  IN NUMBER	
17925
  )	
17926
  IS	
17927
 
17928
  oldrtag_name VARCHAR2(4000);
17929
  newrtag_name VARCHAR2(4000);
17930
 
17931
 
17932
 
17933
  BEGIN
17934
 
17935
 
17936
  SELECT rtag_name into oldrtag_name
17937
  FROM RELEASE_TAGS
17938
  WHERE rtag_id = nrtagid;
17939
 
17940
  SELECT rtag_name into newrtag_name
17941
  FROM RELEASE_TAGS
17942
  WHERE rtag_id = nnewrtagid;
17943
 
17944
  /* Table Work In Progress*/
17945
  	   UPDATE WORK_IN_PROGRESS
17946
	   SET RTAG_ID = nnewrtagid
17947
	   WHERE RTAG_ID = nrtagid
17948
	   AND PV_ID = npvid;
17949
 
17950
  /* Table PLANNED*/	
17951
  	   UPDATE PLANNED
17952
	   SET RTAG_ID = nnewrtagid
17953
	   WHERE RTAG_ID = nrtagid
17954
	   AND PV_ID = npvid;   
17955
 
17956
      -- Log Action --
17957
      log_action (npvid,
17958
                  'move_package_version',
17959
                  nuserid,
17960
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
17961
                 );  	   	     
17962
 
17963
 
17964
  END;
17965
 
17966
/*-------------------------------------------------------------------------------------------------------*/
17967
PROCEDURE modify_product_state (
17968
   	  npvid IN package_versions.pv_id%TYPE,
17969
	  nstateid IN product_states.state_id%TYPE,
17970
	  nuserid IN NUMBER
17971
   ) IS
17972
 
17973
   sStateName VARCHAR(4000);
17974
 
17975
  /* 
17976
  Author: Rupesh Solanki
17977
  Purpose: To modify the product state from integration to test to deployment
17978
  Release: 25th January 2006 
17979
  */   
17980
 
17981
  BEGIN
17982
 
17983
  UPDATE PACKAGE_VERSIONS
17984
  SET PRODUCT_STATE = nstateid
17985
  WHERE PV_ID = npvid;
17986
 
17987
 
17988
  SELECT STATE INTO sStateName
17989
  FROM PRODUCT_STATES 
17990
  WHERE STATE_ID = nstateid;
17991
 
17992
  -- Log Action --
17993
  log_action (npvid,
17994
              'modify_product_state',
17995
               nuserid,
17996
               sStateName
17997
              );  
17998
 
17999
 
18000
  END;			  	   	     
18001
/*-------------------------------------------------------------------------------------------------------*/   
18002
END pk_package_Test;
18003
/
18004
 
18005
CREATE OR REPLACE PACKAGE BODY pk_project IS
18006
/*
18007
------------------------------
18008
||  Last Modified:  J.Tweddle
18009
||  Modified Date:  23/Aug/2007
18010
||  Body Version:   1.0
18011
------------------------------
18012
*/
18013
 
18014
    /*------------------------------------------------------------------------*/
18015
    PROCEDURE update_base_url ( 
18016
        nprojid   IN  projects.proj_id%TYPE,
18017
        sbaseurl  IN  VARCHAR2
18018
        ) IS
18019
    BEGIN
18020
 
18021
        UPDATE projects
18022
        SET base_url = sbaseurl
18023
        WHERE proj_id = nprojid;
18024
 
18025
    END update_base_url;
18026
    /*------------------------------------------------------------------------*/
18027
 
18028
END pk_project;
18029
/
18030
 
18031
CREATE OR REPLACE PACKAGE BODY pk_buildapi
18032
IS
18033
/*
18034
------------------------------
18035
||  Last Modified:  Jeremy Tweddle
18036
||  Modified Date:  14/Dec/2007
18037
||  Body Version:   3.1
18038
------------------------------
18039
*/
18040
 
18041
   /*-------------------------------------------------------------------------------------------------------*/
18042
   PROCEDURE add_product_component (
18043
      npvid           IN   NUMBER,
18044
      sosname         IN   VARCHAR2,
18045
      sorigfilepath   IN   VARCHAR2,
18046
      sfilename       IN   VARCHAR2,
18047
      sdestfilepath   IN   VARCHAR2,
18048
      nbytesize       IN   NUMBER,
18049
      scrccksum       IN   VARCHAR2
18050
   )
18051
   IS
18052
      nosid   NUMBER;
18053
   BEGIN
18054
      /*--------------- Business Rules Here -------------------*/
18055
      -- OS Name Requirements --
18056
      IF (sosname IS NULL)
18057
      THEN
18058
         raise_application_error (-20000, 'OsName cannot be NULL.');
18059
      END IF;
18060
 
18061
      -- File Requirements --
18062
      IF (NOT sfilename IS NULL)
18063
      THEN
18064
         IF (nbytesize IS NULL)
18065
         THEN
18066
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
18067
         ELSIF (scrccksum IS NULL)
18068
         THEN
18069
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
18070
         END IF;
18071
      END IF;
18072
 
18073
      -- Folder Requirements --
18074
      -- No requirements for now.
18075
 
18076
      /*-------------------------------------------------------*/
18077
 
18078
      -- Get OsId
18079
      nosid := get_osid (sosname);
18080
 
18081
      -- Insert component entry
18082
      INSERT INTO product_components
18083
                  (pv_id, os_id, file_path, file_name, destination_path,
18084
                   byte_size, crc_cksum
18085
                  )
18086
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
18087
                   nbytesize, scrccksum
18088
                  );
18089
   EXCEPTION
18090
      WHEN DUP_VAL_ON_INDEX
18091
      THEN
18092
         raise_application_error (-20000,
18093
                                  'Cannot have duplicate product components.'
18094
                                 );
18095
   END;
18096
 
18097
/*-------------------------------------------------------------------------------------------------------*/
18098
   PROCEDURE remove_all_product_components (
18099
      npvid     IN   NUMBER,
18100
      sosname   IN   VARCHAR2
18101
   )
18102
   IS
18103
      nosid   NUMBER;
18104
   BEGIN
18105
/*--------------- Business Rules Here -------------------*/
18106
/*-------------------------------------------------------*/
18107
 
18108
      -- Get OsId
18109
      nosid := get_osid (sosname);
18110
 
18111
      -- Delete component entry
18112
      DELETE FROM product_components pc
18113
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
18114
   END;
18115
 
18116
/*-------------------------------------------------------------------------------------------------------*/
18117
   FUNCTION get_osid (sosname IN VARCHAR2)
18118
      RETURN NUMBER
18119
   IS
18120
      code   NUMBER;
18121
   BEGIN
18122
      -- Get Platform Code --
18123
      SELECT pf.code
18124
        INTO code
18125
        FROM platforms pf
18126
       WHERE UPPER (pf.NAME) = UPPER (sosname);
18127
 
18128
      RETURN code;
18129
   EXCEPTION
18130
      WHEN NO_DATA_FOUND
18131
      THEN
18132
         raise_application_error
18133
            (-20000,
18134
                'Platform '
18135
             || sosname
18136
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
18137
            );
18138
         RAISE;
18139
   END;
18140
 
18141
/*-------------------------------------------------------------------------------------------------------*/
18142
   PROCEDURE update_build_service (
18143
      sdatabaseserver   IN   VARCHAR2,
18144
      swebserver        IN   VARCHAR2,
18145
      smailserver       IN   VARCHAR2,
18146
      smailsender       IN   VARCHAR2,
18147
      sdiskspace        IN   VARCHAR2,
18148
      ssbommanagement   IN   VARCHAR2
18149
   )
18150
   IS
18151
   BEGIN
18152
      UPDATE build_service_config
18153
         SET config = sdatabaseserver
18154
       WHERE service = 'DATABASE SERVER';
18155
 
18156
      UPDATE build_service_config
18157
         SET config = swebserver
18158
       WHERE service = 'WEB SERVER';
18159
 
18160
      UPDATE build_service_config
18161
         SET config = smailserver
18162
       WHERE service = 'MAIL SERVER';
18163
 
18164
      UPDATE build_service_config
18165
         SET config = smailsender
18166
       WHERE service = 'BUILD FAILURE MAIL SENDER';
18167
 
18168
      UPDATE build_service_config
18169
         SET config = sdiskspace
18170
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
18171
 
18172
      UPDATE build_service_config
18173
         SET config = ssbommanagement
18174
       WHERE service = 'SBOM MANAGEMENT';
18175
   END;
18176
 
18177
/*-------------------------------------------------------------------------------------------------------*/
18178
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
18179
   IS
18180
      gbe_id   NUMBER;
18181
   BEGIN
18182
      -- Get GBE_ID
18183
      SELECT seq_gbe_id.NEXTVAL
18184
        INTO gbe_id
18185
        FROM DUAL;
18186
 
18187
      INSERT INTO gbe_machtype
18188
                  (gbe_id, gbe_value
18189
                  )
18190
           VALUES (gbe_id, sgbevalue
18191
                  );
18192
   END;
18193
 
18194
/*-------------------------------------------------------------------------------------------------------*/
18195
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
18196
   IS
18197
   BEGIN
18198
      DELETE FROM gbe_machtype
18199
            WHERE gbe_id = ngbe_id;
18200
   END;
18201
 
18202
/*-------------------------------------------------------------------------------------------------------*/
18203
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
18204
   IS
18205
   BEGIN
18206
      UPDATE gbe_machtype
18207
         SET gbe_value = sgbevalue
18208
       WHERE gbe_id = ngbe_id;
18209
   END;
18210
 
18211
/*-------------------------------------------------------------------------------------------------------*/
18212
   PROCEDURE add_daemon (
18213
      sdaemonhostname   IN   VARCHAR2,
18214
      nrtagid           IN   NUMBER,
18215
      ngbeid            IN   NUMBER,
18216
      sgbebuildfilter   IN   VARCHAR2
18217
   )
18218
   IS
18219
      nrecordnumber   NUMBER;
18220
      nrconid         NUMBER;
18221
   BEGIN
18222
      -- Get RCON_ID
18223
      SELECT seq_rcon_id.NEXTVAL
18224
        INTO nrconid
18225
        FROM DUAL;
18226
 
18227
      SELECT COUNT (*)
18228
        INTO nrecordnumber
18229
        FROM release_config
18230
       WHERE rtag_id = nrtagid;
18231
 
18232
      IF nrecordnumber = 0
18233
      THEN
18234
         INSERT INTO release_config
18235
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18236
                      gbe_id, gbe_buildfilter
18237
                     )
18238
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
18239
                      ngbeid, sgbebuildfilter
18240
                     );
18241
      ELSE
18242
         INSERT INTO release_config
18243
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18244
                      gbe_id, gbe_buildfilter
18245
                     )
18246
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
18247
                      ngbeid, sgbebuildfilter
18248
                     );
18249
      END IF;
18250
   END;
18251
 
18252
/*-------------------------------------------------------------------------------------------------------*/
18253
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
18254
   IS
18255
   BEGIN
18256
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
18257
      DELETE FROM daemon_action_log
18258
            WHERE rcon_id IN (
18259
                     SELECT *
18260
                       FROM THE
18261
                               (SELECT CAST
18262
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18263
                                          )
18264
                                  FROM DUAL
18265
                               ));
18266
 
18267
      DELETE FROM run_level
18268
            WHERE rcon_id IN (
18269
                     SELECT *
18270
                       FROM THE
18271
                               (SELECT CAST
18272
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18273
                                          )
18274
                                  FROM DUAL
18275
                               ));
18276
 
18277
      DELETE FROM abt_action_log
18278
            WHERE rcon_id IN (
18279
                     SELECT *
18280
                       FROM THE
18281
                               (SELECT CAST
18282
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18283
                                          )
18284
                                  FROM DUAL
18285
                               ));
18286
 
18287
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
18288
      DELETE FROM release_config
18289
            WHERE rcon_id IN (
18290
                     SELECT *
18291
                       FROM THE
18292
                               (SELECT CAST
18293
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18294
                                          )
18295
                                  FROM DUAL
18296
                               ));
18297
   END;
18298
 
18299
/*-------------------------------------------------------------------------------------------------------*/
18300
   PROCEDURE update_daemon (
18301
      sdaemonhostname   IN   VARCHAR2,
18302
      nrconid           IN   NUMBER,
18303
      ngbeid            IN   NUMBER,
18304
      sgbebuildfilter   IN   VARCHAR2
18305
   )
18306
   IS
18307
   BEGIN
18308
      UPDATE release_config
18309
         SET daemon_hostname = sdaemonhostname,
18310
             gbe_id = ngbeid,
18311
             gbe_buildfilter = sgbebuildfilter
18312
       WHERE rcon_id = nrconid;
18313
   END;
18314
 
18315
/*-------------------------------------------------------------------------------------------------------*/
18316
   PROCEDURE insert_schedule_info (
18317
      dschedulepause     IN   DATE,
18318
      dscheduleresume    IN   DATE,
18319
      crepeat            IN   VARCHAR2,
18320
      cindefinitepause   IN   VARCHAR2
18321
   )
18322
   IS
18323
      nscheduledid   NUMBER;
18324
   BEGIN
18325
      -- Get Next Available Scheduled Id
18326
      SELECT seq_scheduled_id.NEXTVAL
18327
        INTO nscheduledid
18328
        FROM DUAL;
18329
 
18330
      INSERT INTO run_level_schedule
18331
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
18332
                   cindefinitepause);
18333
   END;
18334
 
18335
/*-------------------------------------------------------------------------------------------------------*/
18336
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
18337
   IS
18338
   BEGIN
18339
      DELETE FROM run_level_schedule
18340
            WHERE scheduled_id = nscheduleid;
18341
   END;
18342
 
18343
/*-------------------------------------------------------------------------------------------------------*/
18344
   PROCEDURE set_infinite_pause
18345
   IS
18346
      nscheduledid   NUMBER;
18347
   BEGIN
18348
      -- Get Next Available Scheduled Id
18349
      SELECT seq_scheduled_id.NEXTVAL
18350
        INTO nscheduledid
18351
        FROM DUAL;
18352
 
18353
      INSERT INTO run_level_schedule
18354
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
18355
   END;
18356
 
18357
/*-------------------------------------------------------------------------------------------------------*/
18358
   PROCEDURE set_resume
18359
   IS
18360
   BEGIN
18361
      DELETE FROM run_level_schedule
18362
            WHERE indefinite_pause = 'P';
18363
   END;
18364
 
18365
/*-------------------------------------------------------------------------------------------------------*/
18366
   PROCEDURE delete_out_of_date_schedule
18367
   IS
18368
   BEGIN
18369
      DELETE FROM run_level_schedule
18370
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
18371
   END;
18372
 
18373
/*-------------------------------------------------------------------------------------------------------*/
18374
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
18375
   IS
18376
   BEGIN
18377
      UPDATE run_level
18378
         SET PAUSE = NULL
18379
       WHERE rcon_id = nrconid;
18380
   END;
18381
 
18382
/*-------------------------------------------------------------------------------------------------------*/
18383
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
18384
   IS
18385
   BEGIN
18386
      UPDATE run_level
18387
         SET PAUSE = 1
18388
       WHERE rcon_id = nrconid;
18389
   END;
18390
/*-------------------------------------------------------------------------------------------------------*/
18391
END pk_buildapi;
18392
/
18393
 
18394
CREATE OR REPLACE PACKAGE BODY Rm_Issues AS
18395
 
18396
-- Private Implementation -----------------------------------------------------
18397
 
18398
 
18399
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18400
	AS
18401
 
18402
	BEGIN
18403
		-- start boundary case
18404
		IF ( XXstart < XX ) THEN
18405
			RETURN 1;
18406
 
18407
		ELSIF ( XXstart = XX ) THEN
18408
 
18409
			-- need to consider YY
18410
			IF ( YYstart < YY ) THEN
18411
				RETURN 1;
18412
 
18413
			ELSIF ( YYstart = YY ) THEN
18414
 
18415
					-- need to consider ZZ
18416
					IF ( ZZstart <= ZZ ) THEN
18417
						RETURN 1;
18418
 
18419
					ELSE
18420
						RETURN 0;
18421
					END IF;
18422
 
18423
			ELSE
18424
				RETURN 0;
18425
			END IF;
18426
		ELSE
18427
			RETURN 0;
18428
		END IF;
18429
	EXCEPTION
18430
		WHEN OTHERS THEN
18431
			RETURN -1;
18432
	END;
18433
 
18434
 
18435
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18436
	AS
18437
 
18438
	BEGIN
18439
		-- end boundary case
18440
		IF ( XX < XXend ) THEN
18441
			RETURN 1;
18442
 
18443
		ELSIF ( XX = XXend ) THEN
18444
 
18445
			-- need to consider YY
18446
			IF ( YY < YYend ) THEN
18447
				RETURN 1;
18448
 
18449
			ELSIF ( YY = YYend ) THEN
18450
 
18451
					-- need to consider ZZ
18452
					IF ( ZZ <= ZZend ) THEN
18453
						RETURN 1;
18454
 
18455
					ELSE
18456
						RETURN 0;
18457
					END IF;
18458
			ELSE
18459
 
18460
				RETURN 0;
18461
			END IF;
18462
		ELSE
18463
			RETURN 0;
18464
		END IF;
18465
	EXCEPTION
18466
		WHEN OTHERS THEN
18467
			RETURN -1;
18468
	END;
18469
 
18470
	/*
18471
	-	version format:		XX.YY.ZZ.abc
18472
	*/
18473
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
18474
	AS
18475
		XXstart		NUMBER	:=	0;
18476
		XXend		NUMBER	:=	0;
18477
		XX			NUMBER	:=	0;
18478
		YYstart		NUMBER	:=	0;
18479
		YYend		NUMBER	:=	0;
18480
		YY			NUMBER	:=	0;
18481
		ZZstart		NUMBER	:=	0;
18482
		ZZend		NUMBER	:=	0;
18483
		ZZ			NUMBER	:=	0;
18484
		first_dot	NUMBER	:=	0;
18485
		second_dot	NUMBER	:=	0;
18486
		third_dot	NUMBER	:=	0;
18487
 
18488
		ProjExtstart	VARCHAR2(10);
18489
		ProjExtend		VARCHAR2(10);
18490
		ProjExt			VARCHAR2(10);
18491
 
18492
	BEGIN
18493
		-- strip the version number
18494
		first_dot :=  INSTR(version_start, '.', 1, 1);
18495
		second_dot :=  INSTR(version_start, '.', 1, 2);
18496
		third_dot :=  INSTR(version_start, '.', 1, 3);
18497
 
18498
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
18499
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18500
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18501
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
18502
 
18503
		first_dot :=  INSTR(version_end, '.', 1, 1);
18504
		second_dot :=  INSTR(version_end, '.', 1, 2);
18505
		third_dot :=  INSTR(version_end, '.', 1, 3);
18506
 
18507
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
18508
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18509
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18510
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
18511
 
18512
		first_dot :=  INSTR(version, '.', 1, 1);
18513
		second_dot :=  INSTR(version, '.', 1, 2);
18514
		third_dot :=  INSTR(version, '.', 1, 3);
18515
 
18516
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
18517
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18518
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18519
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
18520
 
18521
		-- only include versions if all project extensions are the same
18522
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
18523
 
18524
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
18525
				RETURN 1;
18526
			ELSE
18527
				RETURN 0;
18528
			END IF;
18529
		ELSE
18530
			RETURN 0;
18531
		END IF;
18532
 
18533
	EXCEPTION
18534
		WHEN OTHERS THEN
18535
			RETURN -1;
18536
	END;
18537
 
18538
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
18539
	AS
18540
	    pkg_id NUMBER;
18541
	BEGIN
18542
		SELECT
18543
			p.PKG_ID
18544
		INTO
18545
			pkg_id
18546
		FROM
18547
			PACKAGES p
18548
		WHERE
18549
			p.PKG_NAME = pkgName;
18550
 
18551
		RETURN pkg_id;
18552
	EXCEPTION
18553
	    WHEN OTHERS THEN
18554
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
18555
			RETURN -1;
18556
	END;
18557
 
18558
 
18559
-- Public Implementation ------------------------------------------------------
18560
 
18561
	/*
18562
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
18563
	--
18564
	-- INPUT PARAMETERS:
18565
	--
18566
	--		pkg_name  	-  	The name of the top level package to get issues for
18567
	--		version_start	-	The start version for the comparison
18568
	--		version_end	-	The end version for the comparison
18569
	*/
18570
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18571
	AS
18572
		pkgId	NUMBER;
18573
	BEGIN
18574
		-- get pkg_id of the input package:
18575
		pkgId := GetPkgId( pkg_name );
18576
 
18577
		OPEN vCursor FOR
18578
		SELECT
18579
			  pv.PKG_ID,
18580
			  pv.PKG_VERSION,
18581
			  pv.PV_ID,
18582
			  i_pkg.ISS_ID,
18583
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
18584
			  pd.DPKG_ID,
18585
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
18586
			  pd.DPV_ID,
18587
			  i_dpkg.ISS_ID AS ISSUE_ID
18588
		FROM
18589
			 PACKAGE_VERSIONS pv
18590
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
18591
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
18592
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
18593
		WHERE
18594
   			 pv.PKG_ID = pkgId
18595
		AND
18596
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
18597
		AND
18598
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
18599
		ORDER BY
18600
			 pv.PKG_ID,
18601
			 pv.PV_ID,
18602
			 pd.DPKG_ID,
18603
			 pd.DPV_ID;
18604
	EXCEPTION
18605
		WHEN OTHERS THEN
18606
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
18607
	END;
18608
 
18609
 
18610
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
18611
 
18612
	/*
18613
	-- Proc: LoadIssuesTable
18614
	--
18615
	-- Populates Package_Issues table with details of issues from all dependent packages.
18616
	-- This will be for all package versions of the input pkg_name between the
18617
	-- version_start and version_end.
18618
	--
18619
	-- INPUT PARAMETERS:
18620
	--
18621
	--		pkg_name  	-  	The name of the top level package to get issues for
18622
	--		version_start	-	The start version for the comparison
18623
	--		version_end	-	The end version for the comparison
18624
	*/
18625
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18626
	AS
18627
		pkgId	NUMBER;
18628
 
18629
		CURSOR pack_vers_cur IS
18630
			SELECT
18631
				pv.PV_ID,
18632
				pv.PKG_VERSION,
18633
				pv.PKG_ID,
18634
				p.PKG_NAME
18635
			FROM
18636
				PACKAGE_VERSIONS pv
18637
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18638
			WHERE
18639
   				 pv.PKG_ID = pkgId
18640
			AND
18641
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
18642
 
18643
	BEGIN
18644
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18645
 
18646
		-- get the pkg_id we are finding issues for
18647
		pkgId := GetPkgId( pkg_name );
18648
 
18649
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
18650
		FOR pack_ver_rec IN  pack_vers_cur
18651
		LOOP
18652
			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 );
18653
			COMMIT;
18654
		END LOOP;
18655
 
18656
		-- The output cursor - shows the individual versions of the top level package then were reported on
18657
		OPEN vCursor FOR
18658
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18659
/*removed
18660
		SELECT
18661
			PKG_VERSION
18662
		FROM
18663
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
18664
*/
18665
 
18666
 
18667
	EXCEPTION
18668
		WHEN OTHERS THEN
18669
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
18670
	END;
18671
 
18672
 
18673
	/*
18674
	-- Proc: InsertIssuesForDepends
18675
	--
18676
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
18677
	--
18678
	-- INPUT PARAMETERS:
18679
	--
18680
	--		pvID  		-  	The package version id of the package to get issues for
18681
	--		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)
18682
	--		top_pkgName -  	The package name of the top level package
18683
	--		top_pvID  	-  	The package version id of the top level package
18684
	--		top_pkgVer  -  	The package version description of the top level package
18685
	*/
18686
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
18687
	AS
18688
		pkgId		NUMBER;
18689
		issCnt		NUMBER := 0;
18690
		pkgCheck	NUMBER := 0;
18691
		depCheck	NUMBER := 0;
18692
 
18693
		dpkgName	VARCHAR(50);
18694
		dpkgVersion	VARCHAR(50);
18695
 
18696
		CURSOR dep_packs_cur IS
18697
			SELECT
18698
				DPV_ID
18699
			FROM
18700
				PACKAGE_DEPENDENCIES
18701
			WHERE
18702
				PV_ID = pvID;
18703
 
18704
	BEGIN
18705
 
18706
		-- check to see if the package has been processed previously
18707
		SELECT
18708
			COUNT(*)
18709
		INTO
18710
			pkgCheck
18711
		FROM
18712
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18713
		WHERE
18714
			DPV_ID = pvID;
18715
 
18716
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
18717
 
18718
		-- Package not already processed (no cyclic dependency) - process it
18719
		IF ( pkgCheck = 0 ) THEN
18720
 
18721
			-- check to see if this package version has any issues assigned to it
18722
			SELECT
18723
				COUNT(*)
18724
			INTO
18725
				issCnt
18726
			FROM
18727
				CQ_ISSUES i
18728
			WHERE
18729
				i.PV_ID = pvID;
18730
 
18731
			dbms_output.put_line('issCnt: ' || issCnt );
18732
 
18733
			-- Always enter a marker row into the table even if there are no issues for the package.
18734
			-- This allows us to pick up any cyclic dependencies.
18735
			IF ( issCnt > 0 ) THEN
18736
				-- get issues and insert into RM_PACKAGE_ISSUES
18737
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18738
 
18739
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18740
					SELECT DISTINCT
18741
						top_pkgID		AS PKG_ID,
18742
						top_pkgName		AS PKG_NAME,
18743
						top_pvID		AS PV_ID,
18744
						top_pkgVer		AS PKG_VERSION,
18745
						pv.PV_ID		AS DPV_ID,
18746
						p.PKG_NAME		AS DPKG_NAME,
18747
						pv.PKG_VERSION	AS DPKG_VERSION,
18748
						ci.ISS_DB,
18749
						ci.ISS_ID
18750
					FROM
18751
						PACKAGE_VERSIONS pv
18752
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18753
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
18754
					WHERE
18755
						pv.PV_ID = pvID;
18756
 
18757
			ELSE
18758
				-- get the dpkg details - there will always be a row returned here
18759
				SELECT
18760
					p.PKG_NAME
18761
				INTO
18762
					dpkgName
18763
				FROM
18764
					PACKAGE_VERSIONS pv
18765
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18766
				WHERE
18767
	   				 pv.PV_ID = pvID;
18768
 
18769
				SELECT
18770
					pv.PKG_VERSION
18771
				INTO
18772
					dpkgVersion
18773
				FROM
18774
					PACKAGE_VERSIONS pv
18775
				WHERE
18776
	   				 pv.PV_ID = pvID;
18777
 
18778
				-- enter a marker row
18779
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18780
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18781
				VALUES (
18782
					top_pkgID,
18783
					top_pkgName,
18784
					top_pvID,
18785
					top_pkgVer,
18786
					pvID,
18787
					dpkgName,
18788
					dpkgVersion,
18789
					NULL,
18790
					NULL );
18791
 
18792
			END IF;
18793
 
18794
			-- If this package version has dependencies then recurse
18795
			SELECT
18796
				COUNT(*)
18797
			INTO
18798
				depCheck
18799
			FROM
18800
				PACKAGE_DEPENDENCIES
18801
			WHERE
18802
				PV_ID = pvID;
18803
 
18804
			IF ( depCheck > 0 ) THEN
18805
				-- get dependencies and call this function recursively for each one
18806
				FOR dep_rec IN  dep_packs_cur
18807
				LOOP
18808
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
18809
				END LOOP;
18810
 
18811
			END IF;
18812
 
18813
		END IF;
18814
 
18815
	/*EXCEPTION
18816
		WHEN OTHERS THEN
18817
			no exception handling required
18818
	*/
18819
	END;
18820
 
18821
END Rm_Issues;
18822
/
18823
 
53 mhunt 18824
CREATE OR REPLACE PACKAGE BODY                   "PK_PLANNED" IS
51 mhunt 18825
 
18826
/*
18827
------------------------------
53 mhunt 18828
||  Last Modified:  G.Huddy
55 mhunt 18829
||  Modified Date:  05/Aug/2008
18830
||  Body Version:   1.2
51 mhunt 18831
------------------------------
18832
*/
18833
 
18834
 
18835
/*-------------------------------------------------------------------------------------------------------*/
18836
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18837
 
55 mhunt 18838
    oldPvId NUMBER;
18839
    ReleaseLocation VARCHAR2(4000);
18840
    IsPatch CHAR(1) := NULL;
18841
    sLocation VARCHAR2(4000) := NULL;
18842
    nRtagIdLocation NUMBER;
51 mhunt 18843
 
18844
 
53 mhunt 18845
 
51 mhunt 18846
BEGIN
55 mhunt 18847
    /*--------------- Business Rules Here -------------------*/
18848
    /*-------------------------------------------------------*/
51 mhunt 18849
 
55 mhunt 18850
    BEGIN
18851
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
18852
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
18853
          FROM PLANNED pl,
18854
               RELEASE_TAGS rt,
18855
               PROJECTS proj
18856
         WHERE pl.PV_ID = newPvId
18857
           AND pl.RTAG_ID = rt.RTAG_ID
18858
           AND rt.OFFICIAL != 'Y'
18859
           AND rt.PROJ_ID = proj.PROJ_ID;
51 mhunt 18860
 
55 mhunt 18861
        EXCEPTION
18862
            WHEN NO_DATA_FOUND THEN
18863
                sLocation := NULL;
18864
    END;
51 mhunt 18865
 
18866
 
18867
 
55 mhunt 18868
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
51 mhunt 18869
 
55 mhunt 18870
        -- Add to "Pending" area
18871
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
18872
        VALUES( RtagId, newPvId, ViewId, 'R' );
51 mhunt 18873
 
18874
 
55 mhunt 18875
        /* LOG ACTION */
18876
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18877
          FROM PROJECTS proj,
18878
               RELEASE_TAGS rt
18879
         WHERE rt.PROJ_ID = proj.PROJ_ID
18880
           AND rt.RTAG_ID = RtagId;
51 mhunt 18881
 
55 mhunt 18882
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
53 mhunt 18883
 
55 mhunt 18884
    ELSE
51 mhunt 18885
 
55 mhunt 18886
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
53 mhunt 18887
 
55 mhunt 18888
    END IF;
51 mhunt 18889
 
18890
END;
18891
/*-------------------------------------------------------------------------------------------------------*/
18892
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18893
 
55 mhunt 18894
    ReleaseLocation VARCHAR2(4000);
51 mhunt 18895
 
18896
BEGIN
18897
 
55 mhunt 18898
    /*--------------- Business Rules Here -------------------*/
18899
    /*-------------------------------------------------------*/
51 mhunt 18900
 
18901
 
55 mhunt 18902
    -- Get release location for logging pusposes
18903
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18904
      FROM PROJECTS proj,
18905
           RELEASE_TAGS rt
18906
     WHERE rt.PROJ_ID = proj.PROJ_ID
18907
       AND rt.RTAG_ID = RtagId;
51 mhunt 18908
 
18909
 
55 mhunt 18910
    -- Delete from Work In Progress
18911
    DELETE
18912
      FROM PLANNED pl
18913
     WHERE pl.RTAG_ID = RtagId
18914
       AND pl.PV_ID = PvId;
51 mhunt 18915
 
55 mhunt 18916
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
51 mhunt 18917
 
18918
 
18919
 
18920
 
18921
END;
18922
/*-------------------------------------------------------------------------------------------------------*/
18923
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
18924
 
55 mhunt 18925
    ReturnValue NUMBER;
51 mhunt 18926
 
18927
BEGIN
55 mhunt 18928
    SELECT pl.VIEW_ID INTO ReturnValue
18929
      FROM PLANNED pl
18930
     WHERE pl.RTAG_ID = RtagId
18931
       AND pl.PV_ID = PvId;
51 mhunt 18932
 
55 mhunt 18933
    RETURN ReturnValue;
51 mhunt 18934
END;
18935
/*-------------------------------------------------------------------------------------------------------*/
18936
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
18937
 
55 mhunt 18938
    IsBaseView CHAR(1);
53 mhunt 18939
 
51 mhunt 18940
BEGIN
18941
 
55 mhunt 18942
    -- Check if the view is BASE VIEW
18943
    SELECT vi.BASE_VIEW INTO IsBaseView
18944
      FROM VIEWS vi
18945
     WHERE vi.VIEW_ID = ViewId;
51 mhunt 18946
 
53 mhunt 18947
 
55 mhunt 18948
    IF (IsBaseView = 'Y') THEN
18949
        -- Get Base view content
18950
        OPEN RecordSet FOR
18951
        SELECT 0 AS PKG_STATE,
18952
               NULL AS DEPRECATED_STATE,
18953
               pv.pv_id,
18954
               pkg.pkg_name,
18955
               pv.pkg_version,
18956
               pv.dlocked,
18957
               pv.pv_description,
18958
               pv.BUILD_TYPE,
18959
               rel.operation
18960
          FROM PLANNED rel,
18961
               packages pkg,
18962
               package_versions pv
18963
         WHERE pv.pkg_id = pkg.pkg_id
18964
           AND rel.pv_id = pv.pv_id
18965
           AND rel.VIEW_ID = ViewId
18966
           AND rel.RTAG_ID = RtagId
18967
         ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 18968
 
55 mhunt 18969
    ELSE
53 mhunt 18970
 
55 mhunt 18971
        -- Get non base view content
18972
        OPEN RecordSet FOR
18973
        SELECT 0 AS PKG_STATE,
18974
               NULL AS DEPRECATED_STATE,
18975
               pv.pv_id,
18976
               pkg.pkg_name,
18977
               pv.pkg_version,
18978
               pv.dlocked,
18979
               pv.pv_description,
18980
               pv.BUILD_TYPE,
18981
               rel.operation
18982
          FROM PLANNED rel,
18983
               packages pkg,
18984
               package_versions pv,
18985
               VIEW_DEF vd
18986
         WHERE pv.pkg_id = pkg.pkg_id
18987
           AND rel.pv_id = pv.pv_id
18988
           AND rel.RTAG_ID = RtagId
18989
           AND vd.VIEW_ID = ViewId
18990
           AND vd.PKG_ID = pv.PKG_ID
18991
         ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 18992
 
55 mhunt 18993
    END IF;
53 mhunt 18994
 
18995
 
51 mhunt 18996
END;
18997
/*-------------------------------------------------------------------------------------------------------*/
18998
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
53 mhunt 18999
 
51 mhunt 19000
BEGIN
53 mhunt 19001
 
55 mhunt 19002
    UPDATE PLANNED pl SET
19003
    pl.VIEW_ID = NewViewId
19004
    WHERE pl.PV_ID = PvId
19005
      AND pl.RTAG_ID = RtagId;
53 mhunt 19006
 
51 mhunt 19007
END;
19008
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 19009
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
19010
-- version of a package as part of a release-to-release merge operation carried out within release manager.
55 mhunt 19011
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
19012
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
19013
-- via the Release Manager merge manager display
53 mhunt 19014
 
19015
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
19016
 
55 mhunt 19017
    ReleaseLocation VARCHAR2(4000);
53 mhunt 19018
 
55 mhunt 19019
        entryExists NUMBER;
19020
        existingOperation CHAR;
53 mhunt 19021
BEGIN
55 mhunt 19022
    /*--------------- Business Rules Here -------------------*/
19023
    /*-------------------------------------------------------*/
53 mhunt 19024
 
55 mhunt 19025
      -- Determine if the specified PV_ID already exists in the planned table....
19026
      SELECT COUNT (pl.pv_id) INTO entryExists
19027
      FROM PLANNED pl
19028
      WHERE pl.pv_id = newPvId
19029
      AND pl.rtag_id = RtagId
19030
      AND pl.view_id = ViewId;
53 mhunt 19031
 
55 mhunt 19032
      -- If the specified PV_ID already exists in the planned table....
19033
      IF entryExists = 1 THEN
53 mhunt 19034
 
55 mhunt 19035
         -- Get the operation for the existing entry
19036
         SELECT pl.operation INTO existingOperation
19037
         FROM PLANNED pl
19038
         WHERE pl.pv_id = newPvId
19039
         AND pl.rtag_id = RtagId
19040
         AND pl.view_id = ViewId;
53 mhunt 19041
 
55 mhunt 19042
         -- Is the specified merge operation the opposite of the existing entry?
19043
         -- If it is not, then there is nothing to do, otherwise...
19044
         -- NOTE: A = Add, S = Subtract
19045
         IF (mergeOperation = 'S' AND existingOperation = 'A')
19046
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
53 mhunt 19047
 
55 mhunt 19048
           -- It is the opposite, so effectively it cancels the existing entry
19049
           -- Remove the entry from the planned table
19050
           DELETE
19051
            FROM PLANNED pl
19052
           WHERE pl.pv_id = newPvId
19053
             AND pl.rtag_id = RtagId
19054
             AND pl.view_id = ViewId;
53 mhunt 19055
 
55 mhunt 19056
           -- Log action
19057
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19058
             FROM PROJECTS proj,
19059
                  RELEASE_TAGS rt
19060
            WHERE rt.PROJ_ID = proj.PROJ_ID
19061
              AND rt.RTAG_ID = RtagId;
19062
 
19063
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
19064
         END IF;
19065
      ELSE
19066
         -- Add to Planned tabled
19067
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
19068
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
19069
 
19070
         -- Log Action
19071
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19072
          FROM PROJECTS proj,
19073
               RELEASE_TAGS rt
19074
         WHERE rt.PROJ_ID = proj.PROJ_ID
19075
         AND   rt.RTAG_ID = RtagId;
19076
 
19077
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
19078
      END IF;
19079
 
53 mhunt 19080
END;
19081
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19082
END PK_PLANNED;
19083
/
19084
 
19085
CREATE OR REPLACE PACKAGE BODY  pk_rmapi
19086
IS
19087
/*
19088
------------------------------
19089
||  Last Modified:  Jeremy Tweddle
19090
||  Modified Date:  08/Feb/2008
19091
||  Body Version:   3.3
19092
------------------------------
19093
*/
19094
 
19095
   /*-------------------------------------------------------------------------------------------------------*/
19096
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
19097
      RETURN typecur
19098
   IS
19099
      npvid     NUMBER  := 0;
19100
      RECORDS   typecur;
19101
   BEGIN
19102
      BEGIN
19103
         -- Get PV_ID --
19104
         SELECT pv.pv_id
19105
           INTO npvid
19106
           FROM PACKAGES pkg, package_versions pv
19107
          WHERE pv.pkg_id = pkg.pkg_id
19108
            AND pkg.pkg_name = pkgname
19109
            AND pv.pkg_version = pkgversion;
19110
      EXCEPTION
19111
         WHEN NO_DATA_FOUND
19112
         THEN
19113
            raise_application_error (-20000, 'Package Not Found!');
19114
            --WHEN OTHERS THEN
19115
                  -- Consider logging the error and then re-raise
19116
            RAISE;
19117
      END;
19118
 
19119
      -- Finally get package dependencies --
19120
      OPEN RECORDS FOR
19121
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
19122
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
19123
          WHERE dep.pv_id = npvid
19124
            AND dpv.pkg_id = dpkg.pkg_id
19125
            AND dpv.pv_id = dep.dpv_id;
19126
 
19127
      RETURN RECORDS;
19128
   END;
19129
 
19130
/*-------------------------------------------------------------------------------------------------------*/
19131
   FUNCTION wip_iteration_package (
19132
      projname        VARCHAR2,
19133
      iterationname   VARCHAR2,
19134
      pkgname         VARCHAR2
19135
   )
19136
      RETURN typecur
19137
   IS
19138
      nrtagid   NUMBER  := 0;
19139
      RECORDS   typecur;
19140
   BEGIN
19141
      BEGIN
19142
         -- Get latest rtag_id --
19143
         SELECT rt.rtag_id
19144
           INTO nrtagid
19145
           FROM projects proj, release_tags rt
19146
          WHERE rt.proj_id = proj.proj_id
19147
            AND UPPER (proj.proj_name) = UPPER (projname)
19148
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
19149
 
19150
         IF (nrtagid IS NULL)
19151
         THEN
19152
            raise_application_error (-20000,
19153
                                     'Work In Progress is Not Found!');
19154
         END IF;
19155
      EXCEPTION
19156
         WHEN NO_DATA_FOUND
19157
         THEN
19158
            raise_application_error (-20000,
19159
                                     'Work In Progress is Not Found!');
19160
            RAISE;
19161
      END;
19162
 
19163
      -- Finally get package dependencies --
19164
      OPEN RECORDS FOR
19165
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
19166
                pv.src_path
19167
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
19168
          WHERE pv.pkg_id = pkg.pkg_id
19169
            AND wip.pv_id = pv.pv_id
19170
            AND wip.rtag_id = nrtagid
19171
            AND pkg.pkg_name = pkgname;
19172
 
19173
      RETURN RECORDS;
19174
   END;
19175
 
19176
/*-------------------------------------------------------------------------------------------------------*/
19177
   FUNCTION auto_make_release (
19178
      rtagid                   IN   NUMBER,
19179
      pkgname                  IN   VARCHAR2,
19180
      vext                     IN   VARCHAR2,
19181
      newpkgversion            IN   VARCHAR2,
19182
      label                    IN   VARCHAR2,
19183
      dependenciesimportlist   IN   VARCHAR2,
19184
      isrippled                IN   NUMBER,
19185
      username                 IN   VARCHAR2
19186
   )
19187
      RETURN NUMBER
19188
   IS
19189
      pkgid                           NUMBER;
19190
      pvid                            NUMBER                        := 0;
19191
      userid                          NUMBER;
19192
      dlocked                         VARCHAR2 (20)                 := NULL;
19193
      clonefrompvid                   NUMBER;
19194
      ssv_mm                          package_versions.v_mm%TYPE;
19195
      ssv_nmm                         package_versions.v_nmm%TYPE;
19196
      ssv_ext                         package_versions.v_ext%TYPE;
19197
      return_package_not_found        NUMBER                        := -1;
19198
      return_package_already_exists   NUMBER                        := -2;
19199
      return_not_approved             NUMBER                        := -3;
19200
   BEGIN
19201
      /*--------------- Business Rules Here -------------------*/
19202
      IF (rtagid IS NULL)
19203
      THEN
19204
         raise_application_error (-20000, 'RtagId must be supplied.');
19205
      END IF;
19206
 
19207
      IF (pkgname IS NULL)
19208
      THEN
19209
         raise_application_error (-20000, 'PkgName must be supplied.');
19210
      END IF;
19211
 
19212
      IF (newpkgversion IS NULL)
19213
      THEN
19214
         raise_application_error (-20000, 'PkgVersion must be supplied.');
19215
      END IF;
19216
 
19217
      IF (label IS NULL)
19218
      THEN
19219
         raise_application_error (-20000, 'Label must be supplied.');
19220
      END IF;
19221
 
19222
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
19223
      THEN
19224
         raise_application_error
19225
            (-20000,
19226
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
19227
            );
19228
      END IF;
19229
 
19230
      IF (username IS NULL)
19231
      THEN
19232
         raise_application_error (-20000, 'UserName must be supplied.');
19233
      END IF;
19234
 
19235
      -- Get user_id
19236
      BEGIN
19237
         SELECT usr.user_id
19238
           INTO userid
19239
           FROM users usr
19240
          WHERE UPPER (usr.user_name) = UPPER (username)
19241
            AND usr.is_disabled IS NULL;
19242
      EXCEPTION
19243
         WHEN NO_DATA_FOUND
19244
         THEN
19245
            raise_application_error (-20000,
19246
                                        'UserName '
19247
                                     || username
19248
                                     || ' is not valid or disabled.'
19249
                                    );
19250
      END;
19251
 
19252
/*-------------------------------------------------------*/
19253
 
19254
      -- Create package if necessary
19255
      IF isrippled = 1
19256
      THEN
19257
         /* Ripple Build */
19258
         BEGIN
19259
            -- Make sure that package does not exist
19260
            SELECT pv.pv_id
19261
              INTO pvid
19262
              FROM package_versions pv, PACKAGES pkg
19263
             WHERE pv.pkg_id = pkg.pkg_id
19264
               AND pkg.pkg_name = pkgname
19265
               AND pv.pkg_version = newpkgversion;
19266
         EXCEPTION
19267
            WHEN NO_DATA_FOUND
19268
            THEN
19269
               pvid := 0;
19270
         END;
19271
 
19272
         IF (pvid = 0)
19273
         THEN
19274
            -- Split current version in parts
19275
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19276
 
19277
            BEGIN
19278
               -- Find package to be replaced with thie ripple package
19279
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19280
               THEN
19281
                  SELECT pv.pv_id
19282
                    INTO clonefrompvid
19283
                    FROM PACKAGES pkg, package_versions pv,
19284
                         release_content rc
19285
                   WHERE rc.pv_id = pv.pv_id
19286
                     AND pv.pkg_id = pkg.pkg_id
19287
                     AND rc.rtag_id = rtagid
19288
                     AND pkg.pkg_name = pkgname
19289
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
19290
               ELSE
19291
                  SELECT pv.pv_id
19292
                    INTO clonefrompvid
19293
                    FROM PACKAGES pkg, package_versions pv,
19294
                         release_content rc
19295
                   WHERE rc.pv_id = pv.pv_id
19296
                     AND pv.pkg_id = pkg.pkg_id
19297
                     AND rc.rtag_id = rtagid
19298
                     AND pkg.pkg_name = pkgname
19299
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19300
               END IF;
19301
            EXCEPTION
19302
               WHEN NO_DATA_FOUND
19303
               THEN
19304
                  raise_application_error
19305
                                        (-20000,
19306
                                            'Cannot get CloneFromPvId. VExt='
19307
                                         || vext
19308
                                         || ', RtagId='
19309
                                         || rtagid
19310
                                         || ', PkgName='
19311
                                         || pkgname
19312
                                         || ', SSV_EXT='
19313
                                         || ssv_ext
19314
                                        );
19315
            END;
19316
 
19317
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19318
            THEN
19319
               -- Create package
19320
               seed_package_names_versions (pkgname,
19321
                                            newpkgversion,
19322
                                            userid,
19323
                                            pvid,
19324
                                            clonefrompvid
19325
                                           );
19326
            ELSE
19327
               -- Create package
19328
               seed_package_names_versions2 (pkgname,
19329
                                             newpkgversion,
19330
                                             userid,
19331
                                             pvid,
19332
                                             clonefrompvid
19333
                                            );
19334
            END IF;
19335
 
19336
            -- Update Package reason for release
19337
            UPDATE package_versions pv
19338
               SET pv.comments = 'Rippled Build.',
19339
                   pv.build_type = 'Y'
19340
             WHERE pv.pv_id = pvid;
19341
         ELSE
19342
            -- Package already exists, hence cannot be used for ripple build
19343
            RETURN return_package_already_exists;
19344
         END IF;
19345
      ELSE
19346
         /* Auto build from Pending area */
19347
 
19348
         -- Find package in pending area
19349
         BEGIN
19350
            SELECT pv.pv_id, pv.dlocked
19351
              INTO pvid, dlocked
19352
              FROM planned pl, package_versions pv, PACKAGES pkg
19353
             WHERE pl.pv_id = pv.pv_id
19354
               AND pv.pkg_id = pkg.pkg_id
19355
               AND pl.rtag_id = rtagid
19356
               AND pkg.pkg_name = pkgname
19357
               AND pv.dlocked = 'A'
19358
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19359
         EXCEPTION
19360
            WHEN NO_DATA_FOUND
19361
            THEN
19362
               pvid := 0;
19363
         END;
19364
 
19365
         IF (pvid = 0)
19366
         THEN
19367
            -- Package does not exist in pending area, hence report it
19368
            RETURN return_package_not_found;
19369
         ELSIF (dlocked != 'A')
19370
         THEN
19371
            -- Package is not approved for autobuild
19372
            RETURN return_not_approved;
19373
         END IF;
19374
      END IF;
19375
 
19376
      BEGIN
19377
         -- Import Dependencies
19378
         import_dependencies (pvid, dependenciesimportlist, userid);
19379
      END;
19380
 
19381
      BEGIN
19382
         -- Split current version in parts
19383
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19384
 
19385
         -- Update Package Details
19386
         UPDATE package_versions pv
19387
            SET pv.pkg_version = newpkgversion,
19388
                pv.v_ext = ssv_ext,
19389
                pv.v_mm = ssv_mm,
19390
                pv.v_nmm = ssv_nmm,
19391
                pv.pkg_label = label
19392
          WHERE pv.pv_id = pvid;
19393
      EXCEPTION
19394
         WHEN DUP_VAL_ON_INDEX
19395
         THEN
19396
            -- Package already exists, hence cannot be used for ripple build
19397
            RETURN return_package_already_exists;
19398
      END;
19399
 
19400
      -- Update the is_autobuildable
19401
      UPDATE package_versions
19402
         SET is_autobuildable = 'Y'
19403
       WHERE pv_id = pvid;
19404
 
19405
      -- Now release package
19406
      pk_environment.auto_make_release (pvid,
19407
                                        rtagid,
19408
                                        userid,
19409
                                        vext,
19410
                                        ssv_ext,
19411
                                        clonefrompvid
19412
                                       );
19413
 
19414
      --Now clean the PLANNED_VERSIONS table
19415
      SELECT pkg_id
19416
        INTO pkgid
19417
        FROM PACKAGES
19418
       WHERE pkg_name = pkgname;
19419
 
19420
      DELETE FROM planned_versions
19421
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
19422
 
19423
      RETURN pvid;
19424
   END;
19425
 
19426
/*-------------------------------------------------------------------------------------------------------*/
19427
   PROCEDURE import_dependencies (
19428
      pvid                     IN   NUMBER,
19429
      dependenciesimportlist   IN   VARCHAR2,
19430
      userid                   IN   NUMBER
19431
   )
19432
   IS
19433
/*
19434
|| DependenciesImportList Format:
19435
|| "pkgA","1.0.0";"pkgB","2.0.0";
19436
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
19437
*/
19438
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
19439
         INDEX BY VARCHAR2 (4000);
19440
 
19441
      seperator         VARCHAR2 (2)           := '||';
19442
      pkgname           VARCHAR2 (4000);
19443
      pkgversion        VARCHAR2 (4000);
19444
      buildtype         VARCHAR2 (50);
19445
      pkgid             NUMBER;
19446
      vext              VARCHAR2 (4000);
19447
      dpvid             NUMBER;
19448
      slist             VARCHAR2 (4000);
19449
      cbuildtypes       tdictionary;
19450
      dependencyrow     NUMBER;
19451
      sdependency       VARCHAR2 (4000);
19452
      first_pos         VARCHAR2 (4000);
19453
      second_pos        VARCHAR2 (4000);
19454
      third_pos         VARCHAR2 (4000);
19455
      forth_pos         VARCHAR2 (4000);
19456
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19457
 
19458
      CURSOR curbuildtype
19459
      IS
19460
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
19461
                dep.build_type
19462
           FROM package_dependencies dep, package_versions dpv
19463
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
19464
 
19465
      recbuildtype      curbuildtype%ROWTYPE;
19466
   BEGIN
19467
      slist := dependenciesimportlist;
19468
 
19469
      -- Preformat String
19470
      IF NOT slist IS NULL
19471
      THEN
19472
         slist := REPLACE (slist, ' ');                      -- Remove spaces
19473
         slist := REPLACE (slist, UTL_TCP.crlf);
19474
         -- Remove new line and carriage-return characters
19475
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
19476
      END IF;
19477
 
19478
      -- Get Current Dependencies
19479
      OPEN curbuildtype;
19480
 
19481
      FETCH curbuildtype
19482
       INTO recbuildtype;
19483
 
19484
      WHILE curbuildtype%FOUND
19485
      LOOP
19486
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
19487
 
19488
         FETCH curbuildtype
19489
          INTO recbuildtype;
19490
      END LOOP;
19491
 
19492
      CLOSE curbuildtype;
19493
 
19494
      -- Separate dependencies with ; separator
19495
      citemcollection := in_list_varchar2 (slist, ';');
19496
 
19497
      BEGIN
19498
         -- Remove old dependencies
19499
         DELETE FROM package_dependencies dep
19500
               WHERE dep.pv_id = pvid;
19501
 
19502
         -- Loop through dependencies
19503
         FOR dependencyrow IN 1 .. citemcollection.COUNT
19504
         LOOP
19505
            -- Extract pkg_name and pkg_version
19506
            sdependency := citemcollection (dependencyrow);
19507
            first_pos := INSTR (sdependency, '"', 1, 1);
19508
            second_pos := INSTR (sdependency, '"', 1, 2);
19509
            third_pos := INSTR (sdependency, '"', 1, 3);
19510
            forth_pos := INSTR (sdependency, '"', 1, 4);
19511
            pkgname :=
19512
               SUBSTR (sdependency,
19513
                       (first_pos + 1),
19514
                       (second_pos - first_pos - 1)
19515
                      );
19516
            pkgversion :=
19517
               SUBSTR (sdependency,
19518
                       (third_pos + 1),
19519
                       (forth_pos - third_pos - 1)
19520
                      );
19521
 
19522
            -- Dependency must exits to be linked against
19523
            BEGIN
19524
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
19525
                 INTO dpvid, pkgid, vext
19526
                 FROM package_versions pv, PACKAGES pkg
19527
                WHERE pv.pkg_id = pkg.pkg_id
19528
                  AND pkg.pkg_name = pkgname
19529
                  AND pv.pkg_version = pkgversion;
19530
            EXCEPTION
19531
               WHEN NO_DATA_FOUND
19532
               THEN
19533
                  raise_application_error
19534
                                  (-20000,
19535
                                      'Dependency ['
19536
                                   || pkgname
19537
                                   || ' '
19538
                                   || pkgversion
19539
                                   || '] does not exist yet and cannot be used!'
19540
                                  );
19541
            END;
19542
 
19543
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
19544
            BEGIN
19545
               buildtype := cbuildtypes (pkgid || seperator || vext);
19546
 
19547
               IF buildtype IS NULL
19548
               THEN
19549
                  -- Set build type to LinkPackageArchive by default
19550
                  buildtype := 'L';
19551
               END IF;
19552
            EXCEPTION
19553
               WHEN NO_DATA_FOUND
19554
               THEN
19555
                  buildtype := 'L';
19556
            END;
19557
 
19558
            -- Insert Dependencies
19559
            update_package_dependency (pvid,
19560
                                       pkgname,
19561
                                       pkgversion,
19562
                                       buildtype,
19563
                                       userid,
19564
 
19565
                                      );
19566
         END LOOP;
19567
      END;
19568
   END;
19569
 
19570
/*-------------------------------------------------------------------------------------------------------*/
19571
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
19572
      RETURN VARCHAR2
19573
   IS
19574
      pkgversion   VARCHAR2 (4000);
19575
   BEGIN
19576
      BEGIN
19577
         SELECT pv.pkg_version
19578
           INTO pkgversion
19579
           FROM PACKAGES pkg, release_content rc, package_versions pv
19580
          WHERE pv.pv_id = rc.pv_id
19581
            AND pkg.pkg_id = pv.pkg_id
19582
            AND pkg.pkg_name = pkgname
19583
            AND rc.rtag_id = rtagid;
19584
 
19585
         RETURN pkgversion;
19586
      END;
19587
   END;
19588
 
19589
/*-------------------------------------------------------------------------------------------------------*/
19590
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
19591
      RETURN VARCHAR2
19592
   IS
19593
      pkgversion   VARCHAR2 (4000);
19594
   BEGIN
19595
      BEGIN
19596
         SELECT pv.pkg_version
19597
           INTO pkgversion
19598
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
19599
          WHERE pv.pv_id = wip.pv_id
19600
            AND pkg.pkg_id = pv.pkg_id
19601
            AND pkg.pkg_name = pkgname
19602
            AND wip.rtag_id = rtagid;
19603
 
19604
         IF pkgversion IS NULL
19605
         THEN
19606
            SELECT pv.pkg_version
19607
              INTO pkgversion
19608
              FROM PACKAGES pkg, planned pl, package_versions pv
19609
             WHERE pv.pv_id = pl.pv_id
19610
               AND pkg.pkg_id = pv.pkg_id
19611
               AND pkg.pkg_name = pkgname
19612
               AND pl.rtag_id = rtagid;
19613
         END IF;
19614
 
19615
         RETURN pkgversion;
19616
      END;
19617
   END;
19618
 
19619
/*-------------------------------------------------------------------------------------------------------*/
19620
   PROCEDURE update_dash_board (rtagid IN NUMBER)
19621
   IS
19622
      projid       NUMBER;
19623
      projiddb     NUMBER;
19624
      total        NUMBER;
19625
      auto_total   NUMBER;
19626
      rtagiddb     NUMBER;
19627
   BEGIN
19628
      SELECT COUNT (*)
19629
        INTO total
19630
        FROM release_content rc, package_versions pv
19631
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
19632
 
19633
      SELECT COUNT (*)
19634
        INTO auto_total
19635
        FROM release_content rc, package_versions pv
19636
       WHERE pv.pv_id = rc.pv_id
19637
         AND pv.is_autobuildable = 'Y'
19638
         AND rc.rtag_id = rtagid;
19639
 
19640
      BEGIN
19641
         SELECT rtag_id
19642
           INTO rtagiddb
19643
           FROM dash_board
19644
          WHERE rtag_id = rtagid;
19645
 
19646
         SELECT proj_id
19647
           INTO projiddb
19648
           FROM dash_board
19649
          WHERE rtag_id = rtagid;
19650
      EXCEPTION
19651
         WHEN NO_DATA_FOUND
19652
         THEN
19653
            rtagiddb := '';
19654
      END;
19655
 
19656
      IF rtagiddb IS NULL
19657
      THEN
19658
         SELECT proj_id
19659
           INTO projid
19660
           FROM release_tags
19661
          WHERE rtag_id = rtagid;
19662
 
19663
         INSERT INTO dash_board
19664
                     (proj_id, rtag_id, last_build_time, automated_packages,
19665
                      total_packages
19666
                     )
19667
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
19668
                      total
19669
                     );
19670
      ELSE
19671
         UPDATE dash_board
19672
            SET last_build_time = ora_sysdatetime,
19673
                automated_packages = auto_total,
19674
                total_packages = total
19675
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
19676
      END IF;
19677
   END;
19678
 
19679
/*-------------------------------------------------------------------------------------------------------*/
19680
   FUNCTION exclude_from_build (
19681
      pvid          IN   NUMBER,
19682
      spkgversion   IN   VARCHAR2,
19683
      rtagid        IN   NUMBER,
19684
      username      IN   VARCHAR2
19685
   )
19686
      RETURN NUMBER
19687
   IS
19688
      userid              NUMBER;
19689
      outerrcode          NUMBER;
19690
      pkgid               NUMBER;
19691
 
19692
      CURSOR dnr_duplicate_cur
19693
      IS
19694
         SELECT *
19695
           FROM do_not_ripple
19696
          WHERE pv_id = pvid AND rtag_id = rtagid;
19697
 
19698
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19699
   BEGIN
19700
      outerrcode := -1;       -- Set default return error code to ERROR state
19701
 
19702
      /*--------------- Business Rules Here -------------------*/
19703
      IF (rtagid IS NULL)
19704
      THEN
19705
         RETURN outerrcode;
19706
--         raise_application_error (-20000, 'RtagId must be supplied.');
19707
      END IF;
19708
 
19709
      IF (pvid IS NULL)
19710
      THEN
19711
         RETURN outerrcode;
19712
--         raise_application_error (-20000, 'PvId must be supplied.');
19713
      END IF;
19714
 
19715
      IF (username IS NULL)
19716
      THEN
19717
         RETURN outerrcode;
19718
--         raise_application_error (-20000, 'UserName must be supplied.');
19719
      END IF;
19720
 
19721
      -- Get user_id
19722
      BEGIN
19723
         SELECT usr.user_id
19724
           INTO userid
19725
           FROM users usr
19726
          WHERE UPPER (usr.user_name) = UPPER (username)
19727
            AND usr.is_disabled IS NULL;
19728
      EXCEPTION
19729
         WHEN NO_DATA_FOUND
19730
         THEN
19731
            RETURN outerrcode;
19732
--            raise_application_error (-20000,
19733
--                                        'UserName '
19734
--                                     || username
19735
--                                     || ' is not valid or disabled.'
19736
--                                    );
19737
      END;
19738
 
19739
      OPEN dnr_duplicate_cur;
19740
 
19741
      FETCH dnr_duplicate_cur
19742
       INTO dnr_duplicate_rec;
19743
 
19744
      IF dnr_duplicate_cur%FOUND
19745
      THEN
19746
         outerrcode := 0;
19747
      END IF;
19748
 
19749
      IF dnr_duplicate_cur%NOTFOUND
19750
      THEN
19751
         /* No duplicate recordset */
19752
         unripple_package (pvid, rtagid, userid);
19753
         outerrcode := 0;                            -- Set return to SUCCESS
19754
      END IF;
19755
 
19756
      CLOSE dnr_duplicate_cur;
19757
 
19758
      SELECT pkg_id
19759
        INTO pkgid
19760
        FROM package_versions
19761
       WHERE pv_id = pvid;
19762
 
19763
      DELETE FROM planned_versions
19764
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19765
 
19766
      RETURN outerrcode;
19767
   END;
19768
 
19769
/*-------------------------------------------------------------------------------------------------------*/
55 mhunt 19770
   FUNCTION exclude_indirect_from_build (
19771
      pvid          IN   NUMBER,
19772
      spkgversion   IN   VARCHAR2,
19773
      rtagid        IN   NUMBER,
19774
      username      IN   VARCHAR2,
19775
      rootpvid      IN   NUMBER,
19776
      rootcause     IN   VARCHAR2,
19777
      rootfile      IN   VARCHAR2
19778
   )
19779
      RETURN NUMBER
19780
   IS
19781
      userid              NUMBER;
19782
      outerrcode          NUMBER;
19783
      pkgid               NUMBER;
19784
 
19785
      CURSOR dnr_duplicate_cur
19786
      IS
19787
         SELECT *
19788
           FROM do_not_ripple
19789
          WHERE pv_id = pvid AND rtag_id = rtagid;
19790
 
19791
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19792
   BEGIN
19793
      outerrcode := -1;       -- Set default return error code to ERROR state
19794
 
19795
      /*--------------- Business Rules Here -------------------*/
19796
      IF (rtagid IS NULL)
19797
      THEN
19798
         RETURN outerrcode;
19799
--         raise_application_error (-20000, 'RtagId must be supplied.');
19800
      END IF;
19801
 
19802
      IF (pvid IS NULL)
19803
      THEN
19804
         RETURN outerrcode;
19805
--         raise_application_error (-20000, 'PvId must be supplied.');
19806
      END IF;
19807
 
19808
      IF (username IS NULL)
19809
      THEN
19810
         RETURN outerrcode;
19811
--         raise_application_error (-20000, 'UserName must be supplied.');
19812
      END IF;
19813
 
19814
      -- Get user_id
19815
      BEGIN
19816
         SELECT usr.user_id
19817
           INTO userid
19818
           FROM users usr
19819
          WHERE UPPER (usr.user_name) = UPPER (username)
19820
            AND usr.is_disabled IS NULL;
19821
      EXCEPTION
19822
         WHEN NO_DATA_FOUND
19823
         THEN
19824
            RETURN outerrcode;
19825
--            raise_application_error (-20000,
19826
--                                        'UserName '
19827
--                                     || username
19828
--                                     || ' is not valid or disabled.'
19829
--                                    );
19830
      END;
19831
 
19832
     /* No duplicate recordset */
19833
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
19834
     outerrcode := 0;                            -- Set return to SUCCESS
19835
 
19836
      SELECT pkg_id
19837
        INTO pkgid
19838
        FROM package_versions
19839
       WHERE pv_id = pvid;
19840
 
19841
      DELETE FROM planned_versions
19842
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19843
 
19844
      RETURN outerrcode;
19845
   END;
19846
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19847
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
19848
   IS
19849
   BEGIN
19850
      INSERT INTO abt_action_log
19851
                  (rcon_id, action_datetime, action
19852
                  )
19853
           VALUES (rconid, ora_sysdatetime, action
19854
                  );
19855
   END;
19856
 
19857
/*-------------------------------------------------------------------------------------------------------*/
19858
   FUNCTION insert_package_metrics (
19859
      rtagid                   IN   NUMBER,
19860
      pkgname                  IN   VARCHAR2,
19861
      vext                     IN   VARCHAR2,
19862
      metricstring             IN   VARCHAR2
19863
   )
19864
      RETURN NUMBER
19865
   IS
19866
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19867
      pvid                     NUMBER                 := 0;
19868
      rownumber                NUMBER;
19869
      rowcontent               VARCHAR2(4000);
19870
      metricname               VARCHAR2(1000);
19871
      metricvalue              VARCHAR2(4000);
19872
      return_insert_error      NUMBER                 := -1;
19873
      return_insert_success    NUMBER                 := 0;
19874
 
19875
      /* Metrics */
19876
      branches                 NUMBER;
19877
      branchlist               VARCHAR2(4000);
19878
      codefiles                NUMBER;
19879
      ignoredfiles             NUMBER;
19880
      directories              NUMBER;
19881
      directorydepth           NUMBER;
19882
      totalfiles               NUMBER;
19883
      makefiles                NUMBER;
19884
      blanklines               NUMBER;
19885
      codelines                NUMBER;
19886
      commentlines             NUMBER;
19887
 
19888
   BEGIN
19889
      /*--------------- Business Rules Here -------------------*/
19890
      IF (rtagid IS NULL)
19891
      THEN
19892
         RETURN return_insert_error;
19893
      END IF;
19894
 
19895
      IF (pkgname IS NULL)
19896
      THEN
19897
         RETURN return_insert_error;
19898
      END IF;
19899
 
19900
      IF (metricstring IS NULL)
19901
      THEN
19902
         RETURN return_insert_error;
19903
      END IF;
19904
 
19905
      BEGIN
19906
         SELECT pv.pv_id
19907
           INTO pvid
19908
           FROM package_versions pv, packages pkg, release_content rc
19909
          WHERE pv.pkg_id = pkg.pkg_id
19910
            AND rc.rtag_id = rtagid
19911
            AND pv.pv_id = rc.pv_id
19912
            AND pkg.pkg_name = pkgname
19913
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19914
      EXCEPTION
19915
           WHEN NO_DATA_FOUND
19916
           THEN
19917
                pvid := 0;
19918
      END;
19919
 
19920
      citemcollection := in_list_varchar2 (metricstring, ';');
19921
 
19922
      FOR rownumber IN 1 .. citemcollection.COUNT
19923
      LOOP
19924
         rowcontent := citemcollection(rownumber);
19925
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
19926
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
19927
 
19928
         IF    metricname = 'ccbranch.count' THEN branches := metricvalue;
19929
         ELSIF metricname = 'ccbranch.list' THEN branchlist := metricvalue;
19930
         ELSIF metricname = 'code.files' THEN codefiles := metricvalue;
19931
         ELSIF metricname = 'code.ignored' THEN ignoredfiles := metricvalue;
19932
         ELSIF metricname = 'count.dir' THEN directories := metricvalue;
19933
         ELSIF metricname = 'count.dirdepth' THEN directorydepth := metricvalue;
19934
         ELSIF metricname = 'count.file' THEN totalfiles := metricvalue;
19935
         ELSIF metricname = 'count.makefile' THEN makefiles := metricvalue;
19936
         ELSIF metricname = 'lines.blank' THEN blanklines := metricvalue;
19937
         ELSIF metricname = 'lines.code' THEN codelines := metricvalue;
19938
         ELSIF metricname = 'lines.comment' THEN commentlines := metricvalue;
19939
         END IF;
19940
      END LOOP;
19941
 
19942
      IF (pvid > 0)
19943
      THEN
19944
         -- Delete any existing entries for this package version to makes sure our data is untainted
19945
         DELETE FROM package_metrics pm
19946
         WHERE pm.pv_id = pvid;
19947
 
19948
         -- Insert the new data into the metrics table
19949
         INSERT INTO package_metrics
19950
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
19951
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
19952
                     )
19953
              VALUES (pvid, branches, branchlist, codefiles, ignoredfiles, directories, directorydepth,
19954
                      totalfiles, makefiles, blanklines, codelines, commentlines, ora_sysdatetime
19955
                     );
19956
 
19957
         -- Now update the Release_Metrics Table
19958
         update_release_metrics(rtagid);
19959
 
19960
         RETURN return_insert_success;
19961
      ELSE
19962
         RETURN return_insert_error;
19963
      END IF;
19964
   END;
19965
 
19966
/*-------------------------------------------------------------------------------------------------------*/
19967
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
19968
   IS
19969
      totalpackages       NUMBER;
19970
      autobuilt           NUMBER;
19971
      linesofcode         NUMBER;
19972
      unittested          NUMBER;
19973
      autotested          NUMBER;
19974
      numOfbranches       NUMBER;
19975
      lastbuildtime       DATE;
19976
   BEGIN
19977
      IF (rtagid > 0)
19978
      THEN
19979
         -- Get the total number of packages in this release and the number of
19980
         -- those that are autobuilt
19981
         SELECT COUNT (DISTINCT rc.pv_id),
19982
                COUNT (DISTINCT autobuilt_qry.pv_id)
19983
           INTO totalpackages, autobuilt
19984
           FROM release_content rc,
19985
                package_versions pv,
19986
                (
19987
                 SELECT rc.pv_id
19988
                   FROM release_content rc,
19989
                        package_versions pv
19990
                  WHERE pv.is_autobuildable = 'Y'
19991
                    AND pv.pv_id = rc.pv_id
19992
                    AND rc.rtag_id = rtagid
19993
                ) autobuilt_qry
19994
          WHERE pv.pv_id = rc.pv_id
19995
            AND rc.rtag_id = rtagid
19996
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
19997
 
19998
         -- Get the build time of the last package built in this release and the
19999
         -- total number of lines of code
20000
         SELECT MAX(pm.created_stamp),
20001
                SUM(pm.code_lines)
20002
           INTO lastbuildtime, linesofcode
20003
           FROM package_metrics pm, release_content rc
20004
          WHERE pm.pv_id = rc.pv_id
20005
            AND rc.rtag_id = rtagid;
20006
 
20007
         -- Get the number of packages with unit tests in this release and the
20008
         -- number of those that are autotested
20009
         SELECT COUNT(DISTINCT ut.pv_id),
20010
                COUNT(DISTINCT autotest_qry.pv_id)
20011
           INTO unittested, autotested
20012
           FROM unit_tests ut,
20013
                release_content rc,
20014
                (
20015
                 SELECT ut.pv_id
20016
                   FROM unit_tests ut, release_content rc
20017
                  WHERE ut.pv_id = rc.pv_id
20018
                    AND rc.rtag_id = rtagid
20019
                    AND ut.test_types_fk = 7
20020
                ) autotest_qry
20021
          WHERE ut.pv_id = rc.pv_id
20022
            AND rc.rtag_id = rtagid
20023
            AND autotest_qry.pv_id (+) = ut.pv_id;
20024
 
20025
         -- Count the number of unique branches in the packages in this release.
20026
--         SELECT COUNT(DISTINCT branch) INTO numOfbranches
20027
--           FROM (
20028
--                SELECT pv_id,
20029
--                       regexp_substr(str, '[^,]+', 1, level) branch,
20030
--                       level lv,
20031
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
20032
--                  FROM (
20033
--                       SELECT pm.pv_id,
20034
--                              ','||pm.branch_list str
20035
--                         FROM package_metrics pm,
20036
--                              release_content rc
20037
--                        WHERE pm.pv_id = rc.pv_id
20038
--                          AND rc.rtag_id = rtagid
20039
--                       )
20040
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
20041
--                )
20042
--          WHERE lv != lg;
20043
 
20044
         UPDATE release_metrics rm
20045
            SET rm.total_packages = totalpackages,
20046
                rm.autobuilt = autobuilt,
20047
                rm.lines_of_code = linesofcode,
20048
                rm.unit_tested = unittested,
20049
                rm.autotested = autotested,
20050
--                rm.branches = numOfbranches,
20051
                rm.last_build_time = lastbuildtime
20052
          WHERE rtag_id = rtagid;
20053
 
20054
         IF (SQL%ROWCOUNT = 0)
20055
         THEN
20056
            INSERT INTO release_metrics
20057
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20058
                         autotested, last_build_time
20059
                        )
20060
                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
20061
                         autotested, lastbuildtime
20062
                        );
20063
         END IF;
20064
--         IF (SQL%ROWCOUNT = 0)
20065
--         THEN
20066
--            INSERT INTO release_metrics
20067
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20068
--                         autotested, branches, last_build_time
20069
--                        )
20070
--                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
20071
--                         autotested, numOfbranches, lastbuildtime
20072
--                        );
20073
--         END IF;
20074
--      ELSE
20075
--         raise_application_error (-20000, 'RtagId must be supplied.');
20076
      END IF;
20077
   END;
20078
/*-------------------------------------------------------------------------------------------------------*/
20079
END pk_rmapi;
20080
/
20081
 
20082
CREATE OR REPLACE PACKAGE BODY pk_environment_test
20083
IS
20084
/*
20085
------------------------------
20086
||  Last Modified:  Rupesh Solanki
20087
||  Modified Date:  29/Jan/2007
20088
||  Body Version:   1.1
20089
------------------------------
20090
*/
20091
 
20092
   /*-------------------------------------------------------------------------------------------------------*/
20093
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
20094
      RETURN NUMBER
20095
   IS
20096
   BEGIN
20097
       /*
20098
      || N - unlocked
20099
      || Y - release and locked
20100
      || P - penging approval
20101
      || A - approved package ready for auto-build
20102
      */
20103
      IF cdlock = 'N' OR cdlock = 'R'
20104
      THEN
20105
         -- WORK IN PROGRESS --
20106
         RETURN 0;
20107
      ELSIF cdlock = 'P' OR cdlock = 'A'
20108
      THEN
20109
         -- PENDING --
20110
         RETURN 1;
20111
      ELSIF cdlock = 'Y'
20112
      THEN
20113
         -- RELEASED --
20114
         RETURN 2;
20115
      ELSE
20116
         -- NOT FOUND --
20117
         raise_application_error
20118
                         (-20000,
20119
                             'Cannot decide where to place package. [cDlock='
20120
                          || cdlock
20121
                          || ']'
20122
                         );
20123
      END IF;
20124
   END;
20125
 
20126
/*-------------------------------------------------------------------------------------------------------*/
20127
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
20128
      RETURN NUMBER
20129
   IS
20130
      envtab    NUMBER            := -1;
20131
 
20132
      CURSOR curarea
20133
      IS
20134
         SELECT 2 AS envtab
20135
           FROM release_content rc
20136
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20137
         UNION
20138
         SELECT 0 AS envtab
20139
           FROM work_in_progress wip
20140
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20141
         UNION
20142
         SELECT 1 AS envtab
20143
           FROM planned pl
20144
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20145
 
20146
      recarea   curarea%ROWTYPE;
20147
   BEGIN
20148
      OPEN curarea;
20149
 
20150
      FETCH curarea
20151
       INTO recarea;
20152
 
20153
      IF curarea%FOUND
20154
      THEN
20155
         envtab := recarea.envtab;
20156
      END IF;
20157
 
20158
      CLOSE curarea;
20159
 
20160
      RETURN envtab;
20161
   END;
20162
 
20163
/*-------------------------------------------------------------------------------------------------------*/
20164
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
20165
      RETURN NUMBER
20166
   IS
20167
      ispatch   package_versions.dlocked%TYPE;
20168
      viewid    NUMBER                          := -1;
20169
 
20170
      CURSOR curview
20171
      IS
20172
         SELECT rc.base_view_id AS view_id
20173
           FROM release_content rc
20174
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20175
         UNION
20176
         SELECT wip.view_id AS view_id
20177
           FROM work_in_progress wip
20178
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20179
         UNION
20180
         SELECT pl.view_id AS view_id
20181
           FROM planned pl
20182
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20183
 
20184
      recview   curview%ROWTYPE;
20185
   BEGIN
20186
      -- Get dlock state
20187
      SELECT pv.is_patch
20188
        INTO ispatch
20189
        FROM package_versions pv
20190
       WHERE pv.pv_id = pvid;
20191
 
20192
      -- Decide which view id should package go under.
20193
      IF (ispatch != 'Y') OR (ispatch IS NULL)
20194
      THEN
20195
         -- Get VIEW ID of Package
20196
         OPEN curview;
20197
 
20198
         FETCH curview
20199
          INTO recview;
20200
 
20201
         IF curview%FOUND
20202
         THEN
20203
            viewid := recview.view_id;
20204
         ELSE
20205
            raise_application_error
20206
               (-20000,
20207
                   'Cannot find view_id to proceed. [PvId='
20208
                || pvid
20209
                || ']. The current version may not exist in the release anymore.'
20210
               );
20211
         END IF;
20212
 
20213
         CLOSE curview;
20214
      ELSE
20215
         -- Get VIEW ID of Patch (view id of parent package)
20216
         SELECT rc.base_view_id
20217
           INTO viewid
20218
           FROM release_content rc, package_patches ppv
20219
          WHERE rc.rtag_id = rtagid
20220
            AND rc.pv_id = ppv.pv_id
20221
            AND ppv.patch_id = pvid;
20222
      END IF;
20223
 
20224
      RETURN viewid;
20225
   END;
20226
 
20227
/*-------------------------------------------------------------------------------------------------------*/
20228
   PROCEDURE add_package (
20229
      pvid     IN   NUMBER,
20230
      viewid   IN   NUMBER,
20231
      rtagid   IN   NUMBER,
20232
      userid   IN   NUMBER
20233
   )
20234
   IS
20235
      dlocked   package_versions.dlocked%TYPE;
20236
      envtab    NUMBER;
20237
   BEGIN
20238
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
20239
      THEN
20240
         -- Get dlock state
20241
         SELECT pv.dlocked
20242
           INTO dlocked
20243
           FROM package_versions pv
20244
          WHERE pv.pv_id = pvid;
20245
 
20246
         -- Get which area should go under
20247
         envtab := select_environment_area (dlocked);
20248
         -- Log
20249
         log_action (pvid, 'action', userid, 'Start of Package Add...');
20250
 
20251
         -- Remove Package
20252
         IF envtab = 0
20253
         THEN
20254
            -- WORK IN PROGRESS --
20255
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
20256
         ELSIF envtab = 1
20257
         THEN
20258
            -- PENDING --
20259
            pk_planned.add_package (pvid, viewid, rtagid, userid);
20260
         ELSIF envtab = 2
20261
         THEN
20262
            -- RELEASED --
20263
            -- NOTE: this package will be replaced with matching package
20264
            pk_release.add_package (pvid, viewid, rtagid, userid);
20265
            -- Now do post Release Actions
20266
            pk_release.run_post_actions (pvid, rtagid);
20267
         END IF;
20268
 
20269
         -- Log
20270
         log_action (pvid, 'action', userid, 'End of Package Add...');
20271
      END IF;
20272
   END;
20273
 
20274
/*-------------------------------------------------------------------------------------------------------*/
20275
   PROCEDURE add_package_bulk (
20276
      pvidlist   IN   VARCHAR2,
20277
      viewid     IN   NUMBER,
20278
      rtagid     IN   NUMBER,
20279
      userid     IN   NUMBER
20280
   )
20281
   IS
20282
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
20283
                                                                          ();
20284
      dlocked        package_versions.dlocked%TYPE;
20285
      pvid           NUMBER;
20286
      envtab         NUMBER;
20287
   BEGIN
20288
      /*--------------- Business Rules Here -------------------*/
20289
      IF (pvidlist IS NULL)
20290
      THEN
20291
         raise_application_error (-20000,
20292
                                  'Please select at least one package.'
20293
                                 );
20294
      END IF;
20295
 
20296
/*-------------------------------------------------------*/
20297
      nidcollector := in_list_number (pvidlist);
20298
 
20299
      FOR i IN 1 .. nidcollector.COUNT
20300
      LOOP
20301
         pvid := nidcollector (i);
20302
         add_package (pvid, viewid, rtagid, userid);
20303
      END LOOP;
20304
   END;
20305
 
20306
/*-------------------------------------------------------------------------------------------------------*/
20307
   PROCEDURE replace_package (
20308
      newpvid   IN   NUMBER,
20309
      oldpvid   IN   NUMBER,
20310
      rtagid    IN   NUMBER,
20311
      userid    IN   NUMBER
20312
   )
20313
   IS
20314
      dlocked        package_versions.dlocked%TYPE;
20315
      viewid         NUMBER;
20316
      envtab         NUMBER;
20317
      ROWCOUNT       NUMBER;
20318
      creleasemode   CHAR (1);
20319
      npkgid         NUMBER;
20320
   BEGIN
20321
      /*--------------- Business Rules Here -------------------*/
20322
      -- Check if oldPvId exists. It could have been removed
20323
      SELECT COUNT (pv.pv_id)
20324
        INTO ROWCOUNT
20325
        FROM package_versions pv
20326
       WHERE pv.pv_id = oldpvid;
20327
 
20328
/*-------------------------------------------------------*/
20329
 
20330
      /* This procedure is usually used by "History" option in Release Manager */
20331
 
20332
      -- Get dlock state
20333
      SELECT pv.dlocked
20334
        INTO dlocked
20335
        FROM package_versions pv
20336
       WHERE pv.pv_id = newpvid;
20337
 
20338
      -- Get VIEW_ID ---
20339
      IF ROWCOUNT = 1
20340
      THEN
20341
         viewid := get_view_location (oldpvid, rtagid);
20342
      ELSE
20343
         -- Set ViewID to default
20344
         viewid := 7;
20345
      END IF;
20346
 
20347
      -- Get which area should go under
20348
      envtab := select_environment_area (dlocked);
20349
      -- Log
20350
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
20351
 
20352
      -- Replace package
20353
      IF envtab = 0
20354
      THEN
20355
         -- WORK IN PROGRESS --
20356
 
20357
         -- Delete old package
20358
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
20359
         -- Add new package
20360
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
20361
      ELSIF envtab = 1
20362
      THEN
20363
         -- PENDING --
20364
 
20365
         -- Delete old package
20366
         pk_planned.remove_package (oldpvid, rtagid, userid);
20367
         -- Add new package
20368
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
20369
      ELSIF envtab = 2
20370
      THEN
20371
         -- RELEASED --
20372
 
20373
         -- Delete old package
20374
         pk_release.remove_package (oldpvid, rtagid, userid);
20375
         -- Add new package
20376
         pk_release.add_package (newpvid, viewid, rtagid, userid);
20377
         -- Now do post Release Actions
20378
         pk_release.run_post_actions (newpvid, rtagid);
20379
      END IF;
20380
 
20381
      -- Log
20382
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
20383
   END;
20384
 
20385
/*-------------------------------------------------------------------------------------------------------*/
20386
   FUNCTION remove_package (
20387
      pvid          IN   NUMBER,
20388
      rtagid        IN   NUMBER,
20389
      userid        IN   NUMBER,
20390
      forceremove   IN   CHAR
20391
   )
20392
      RETURN NUMBER
20393
   IS
20394
      envtab        NUMBER;
20395
      isused        BOOLEAN;
20396
      recordcount   NUMBER;
20397
   BEGIN
20398
/*--------------- Business Rules Here -------------------*/
20399
/*-------------------------------------------------------*/
20400
 
20401
      -- Find location of package
20402
      envtab := get_package_area (pvid, rtagid);
20403
 
20404
      -- Remove Package
20405
      IF envtab = 0
20406
      THEN
20407
         -- WORK IN PROGRESS --
20408
         -- Delete package
20409
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
20410
         RETURN 0;
20411
      ELSIF envtab = 1
20412
      THEN
20413
         -- PENDING --
20414
         -- Delete package
20415
         pk_planned.remove_package (pvid, rtagid, userid);
20416
         RETURN 0;
20417
      ELSIF envtab = 2
20418
      THEN
20419
         -- RELEASED --
20420
 
20421
         -- Check if is used by other packages
20422
         isused := TRUE;
20423
 
20424
         IF forceremove = 'N'
20425
         THEN
20426
            SELECT COUNT (pv.pv_id)
20427
              INTO recordcount
20428
              FROM (SELECT dpv.pkg_id, dpv.v_ext
20429
                      FROM release_content rc,
20430
                           package_dependencies dep,
20431
                           package_versions dpv
20432
                     WHERE rc.rtag_id = rtagid
20433
                       AND rc.pv_id = dep.pv_id
20434
                       AND dep.dpv_id = dpv.pv_id) rdep,
20435
                   package_versions pv
20436
             WHERE pv.pkg_id = rdep.pkg_id
20437
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
20438
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
20439
               AND pv.pv_id = pvid;
20440
 
20441
            IF recordcount > 0
20442
            THEN
20443
               RETURN 1;                    -- Return 1 as package being used
20444
            ELSE
20445
               isused := FALSE;
20446
            END IF;
20447
         END IF;
20448
 
20449
         IF forceremove = 'Y' OR NOT isused
20450
         THEN
20451
            -- Delete old package
20452
            pk_release.remove_package (pvid, rtagid, userid);
20453
            -- Now do post Release Actions
20454
            pk_release.run_post_actions (pvid, rtagid);
20455
            RETURN 0;
20456
         END IF;
20457
      END IF;
20458
   END;
20459
 
20460
/*-------------------------------------------------------------------------------------------------------*/
20461
   PROCEDURE get_environment_items (
20462
      viewtype           IN       NUMBER,
20463
      userid             IN       NUMBER,
20464
      rtagid             IN       NUMBER,
20465
      sviewidshowlist    IN       VARCHAR2,
20466
      ntruerecordcount   OUT      NUMBER,
20467
      recordset          OUT      typecur
20468
   )
20469
   IS
20470
   BEGIN
20471
      -- Get true record count because views can give false count
20472
      SELECT COUNT (pl.pv_id)
20473
        INTO ntruerecordcount
20474
        FROM environment_view pl
20475
       WHERE pl.rtag_id = rtagid;
20476
 
20477
      IF viewtype = 1
20478
      THEN
20479
         /*--- GUEST VIEW ---*/
20480
         OPEN recordset FOR
20481
            SELECT   *
20482
                FROM (
20483
                      /* Base Views collapsed */
20484
                      SELECT DISTINCT vi.view_id, vi.view_name,
20485
                                      TO_NUMBER (NULL) AS pkg_state,
20486
                                      TO_NUMBER (NULL) AS deprecated_state,
20487
                                      TO_NUMBER (NULL) AS pv_id,
20488
                                      NULL AS pkg_name, NULL AS pkg_version,
20489
                                      NULL AS dlocked, NULL AS pv_description
20490
                                 FROM environment_view rel, views vi
20491
                                WHERE rel.view_id = vi.view_id
20492
                                  AND rtag_id = rtagid
20493
                                  AND rel.view_id NOT IN (
20494
                                         SELECT *
20495
                                           FROM THE
20496
                                                   (SELECT CAST
20497
                                                              (in_list_number
20498
                                                                  (sviewidshowlist
20499
                                                                  ) AS relmgr_number_tab_t
20500
                                                              )
20501
                                                      FROM DUAL
20502
                                                   ))
20503
                      UNION
20504
                      /* Base Views expanded */
20505
                      SELECT vi.view_id, vi.view_name,
20506
                             DECODE (rel.pkg_state,
20507
                                     NULL, 0,
20508
                                     rel.pkg_state
20509
                                    ) AS pkg_state,
20510
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20511
                             pv.pkg_version, pv.dlocked, pv.pv_description
20512
                        FROM environment_view rel,
20513
                             PACKAGES pkg,
20514
                             package_versions pv,
20515
                             views vi
20516
                       WHERE pv.pkg_id = pkg.pkg_id
20517
                         AND rel.pv_id = pv.pv_id
20518
                         AND rel.view_id = vi.view_id
20519
                         AND rel.view_id IN (
20520
                                SELECT *
20521
                                  FROM THE
20522
                                          (SELECT CAST
20523
                                                     (in_list_number
20524
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20525
                                                     )
20526
                                             FROM DUAL
20527
                                          ))
20528
                         AND rtag_id = rtagid) ord
20529
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20530
      ELSIF viewtype = 2
20531
      THEN
20532
         /*--- PERSONAL VIEW ---*/
20533
         OPEN recordset FOR
20534
            SELECT   *
20535
                FROM (
20536
                      /* Base Views collapsed */
20537
                      SELECT DISTINCT vi.view_id, vi.view_name,
20538
                                      TO_NUMBER (NULL) AS pkg_state,
20539
                                      TO_NUMBER (NULL) AS deprecated_state,
20540
                                      TO_NUMBER (NULL) AS pv_id,
20541
                                      NULL AS pkg_name, NULL AS pkg_version,
20542
                                      NULL AS dlocked, NULL AS pv_description
20543
                                 FROM environment_view rel,
20544
                                      view_settings vs,
20545
                                      views vi
20546
                                WHERE rel.view_id = vi.view_id
20547
                                  AND vs.view_id = rel.view_id
20548
                                  AND vs.user_id = userid
20549
                                  AND rtag_id = rtagid
20550
                                  AND rel.view_id NOT IN (
20551
                                         SELECT *
20552
                                           FROM THE
20553
                                                   (SELECT CAST
20554
                                                              (in_list_number
20555
                                                                  (sviewidshowlist
20556
                                                                  ) AS relmgr_number_tab_t
20557
                                                              )
20558
                                                      FROM DUAL
20559
                                                   ))
20560
                      UNION
20561
                      /* Base Views expanded */
20562
                      SELECT vi.view_id, vi.view_name,
20563
                             DECODE (rel.pkg_state,
20564
                                     NULL, 0,
20565
                                     rel.pkg_state
20566
                                    ) AS pkg_state,
20567
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20568
                             pv.pkg_version, pv.dlocked, pv.pv_description
20569
                        FROM environment_view rel,
20570
                             PACKAGES pkg,
20571
                             package_versions pv,
20572
                             views vi,
20573
                             view_settings vs
20574
                       WHERE pv.pkg_id = pkg.pkg_id
20575
                         AND rel.pv_id = pv.pv_id
20576
                         AND rel.view_id = vi.view_id
20577
                         AND vs.view_id = vi.view_id
20578
                         AND vs.user_id = userid
20579
                         AND rel.view_id IN (
20580
                                SELECT *
20581
                                  FROM THE
20582
                                          (SELECT CAST
20583
                                                     (in_list_number
20584
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20585
                                                     )
20586
                                             FROM DUAL
20587
                                          ))
20588
                         AND rtag_id = rtagid
20589
                      UNION
20590
                      /* Private Views collapsed */
20591
                      SELECT vi.view_id, vi.view_name,
20592
                             TO_NUMBER (NULL) AS pkg_state,
20593
                             TO_NUMBER (NULL) AS deprecated_state,
20594
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20595
                             NULL AS pkg_version, NULL AS dlocked,
20596
                             NULL AS pv_description
20597
                        FROM view_settings vs,
20598
                             view_def vd,
20599
                             views vi,
20600
                             environment_view rel,
20601
                             package_versions pv
20602
                       WHERE vs.view_id = vi.view_id
20603
                         AND rel.pv_id = pv.pv_id
20604
                         AND vd.pkg_id = pv.pkg_id
20605
                         AND vd.view_id = vi.view_id
20606
                         AND vi.base_view = 'N'
20607
                         AND rel.rtag_id = rtagid
20608
                         AND vs.user_id = userid
20609
                         AND vi.view_id NOT IN (
20610
                                SELECT *
20611
                                  FROM THE
20612
                                          (SELECT CAST
20613
                                                     (in_list_number
20614
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20615
                                                     )
20616
                                             FROM DUAL
20617
                                          ))
20618
                      UNION
20619
                      /* Private Views expanded */
20620
                      SELECT vi.view_id, vi.view_name,
20621
                             DECODE (rel.pkg_state,
20622
                                     NULL, 0,
20623
                                     rel.pkg_state
20624
                                    ) AS pkg_state,
20625
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20626
                             pv.pkg_version, pv.dlocked, pv.pv_description
20627
                        FROM users usr,
20628
                             view_settings vs,
20629
                             view_def vd,
20630
                             views vi,
20631
                             environment_view rel,
20632
                             PACKAGES pkg,
20633
                             package_versions pv
20634
                       WHERE vs.user_id = usr.user_id
20635
                         AND vs.view_id = vi.view_id
20636
                         AND vd.view_id = vi.view_id
20637
                         AND pv.pkg_id = pkg.pkg_id
20638
                         AND rel.pv_id = pv.pv_id
20639
                         AND rel.rtag_id = rtagid
20640
                         AND vd.pkg_id = pkg.pkg_id
20641
                         AND vi.base_view = 'N'
20642
                         AND vi.view_id IN (
20643
                                SELECT *
20644
                                  FROM THE
20645
                                          (SELECT CAST
20646
                                                     (in_list_number
20647
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20648
                                                     )
20649
                                             FROM DUAL
20650
                                          ))
20651
                         AND usr.user_id = userid) ord
20652
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20653
      END IF;
20654
   END;
20655
 
20656
/*-------------------------------------------------------------------------------------------------------*/
20657
   PROCEDURE get_released_items (
20658
      viewtype           IN       NUMBER,
20659
      userid             IN       NUMBER,
20660
      rtagid             IN       NUMBER,
20661
      sviewidshowlist    IN       VARCHAR2,
20662
      ntruerecordcount   OUT      NUMBER,
20663
      recordset          OUT      typecur
20664
   )
20665
   IS
20666
   BEGIN
20667
      -- Get true record count because views can give false count
20668
      SELECT COUNT (rc.pv_id)
20669
        INTO ntruerecordcount
20670
        FROM release_content rc
20671
       WHERE rc.rtag_id = rtagid;
20672
 
20673
      IF viewtype = 1
20674
      THEN
20675
         /*--- GUEST VIEW ---*/
20676
         OPEN recordset FOR
20677
            SELECT   *
20678
                FROM (
20679
                      /* Base Views collapsed */
20680
                      SELECT DISTINCT vi.view_id, vi.view_name,
20681
                                      TO_NUMBER (NULL) AS pkg_state,
20682
                                      TO_NUMBER (NULL) AS deprecated_state,
20683
                                      TO_NUMBER (NULL) AS pv_id,
20684
                                      NULL AS pkg_name, NULL AS pkg_version,
20685
                                      NULL AS dlocked, NULL AS pv_description
20686
                                 FROM release_content rel, views vi
20687
                                WHERE rel.base_view_id = vi.view_id
20688
                                  AND rtag_id = rtagid
20689
                                  AND rel.base_view_id NOT IN (
20690
                                         SELECT *
20691
                                           FROM THE
20692
                                                   (SELECT CAST
20693
                                                              (in_list_number
20694
                                                                  (sviewidshowlist
20695
                                                                  ) AS relmgr_number_tab_t
20696
                                                              )
20697
                                                      FROM DUAL
20698
                                                   ))
20699
                      UNION
20700
                      /* Base Views expanded */
20701
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20702
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20703
                             pv.pkg_version, pv.dlocked, pv.pv_description
20704
                        FROM release_content rel,
20705
                             PACKAGES pkg,
20706
                             package_versions pv,
20707
                             views vi
20708
                       WHERE pv.pkg_id = pkg.pkg_id
20709
                         AND rel.pv_id = pv.pv_id
20710
                         AND rel.base_view_id = vi.view_id
20711
                         AND rel.base_view_id IN (
20712
                                SELECT *
20713
                                  FROM THE
20714
                                          (SELECT CAST
20715
                                                     (in_list_number
20716
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20717
                                                     )
20718
                                             FROM DUAL
20719
                                          ))
20720
                         AND rtag_id = rtagid) ord
20721
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20722
      ELSIF viewtype = 2
20723
      THEN
20724
         /*--- PERSONAL VIEW ---*/
20725
         OPEN recordset FOR
20726
            SELECT   *
20727
                FROM (
20728
                      /* Base Views collapsed */
20729
                      SELECT DISTINCT vi.view_id, vi.view_name,
20730
                                      TO_NUMBER (NULL) AS pkg_state,
20731
                                      TO_NUMBER (NULL) AS deprecated_state,
20732
                                      TO_NUMBER (NULL) AS pv_id,
20733
                                      NULL AS pkg_name, NULL AS pkg_version,
20734
                                      NULL AS dlocked, NULL AS pv_description
20735
                                 FROM release_content rel,
20736
                                      view_settings vs,
20737
                                      views vi
20738
                                WHERE rel.base_view_id = vi.view_id
20739
                                  AND vs.view_id = rel.base_view_id
20740
                                  AND vs.user_id = userid
20741
                                  AND rtag_id = rtagid
20742
                                  AND rel.base_view_id NOT IN (
20743
                                         SELECT *
20744
                                           FROM THE
20745
                                                   (SELECT CAST
20746
                                                              (in_list_number
20747
                                                                  (sviewidshowlist
20748
                                                                  ) AS relmgr_number_tab_t
20749
                                                              )
20750
                                                      FROM DUAL
20751
                                                   ))
20752
                      UNION
20753
                      /* Base Views expanded */
20754
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20755
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20756
                             pv.pkg_version, pv.dlocked, pv.pv_description
20757
                        FROM release_content rel,
20758
                             PACKAGES pkg,
20759
                             package_versions pv,
20760
                             views vi,
20761
                             view_settings vs
20762
                       WHERE pv.pkg_id = pkg.pkg_id
20763
                         AND rel.pv_id = pv.pv_id
20764
                         AND rel.base_view_id = vi.view_id
20765
                         AND vs.view_id = vi.view_id
20766
                         AND vs.user_id = userid
20767
                         AND rel.base_view_id IN (
20768
                                SELECT *
20769
                                  FROM THE
20770
                                          (SELECT CAST
20771
                                                     (in_list_number
20772
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20773
                                                     )
20774
                                             FROM DUAL
20775
                                          ))
20776
                         AND rtag_id = rtagid
20777
                      UNION
20778
                      /* Private Views collapsed */
20779
                      SELECT vi.view_id, vi.view_name,
20780
                             TO_NUMBER (NULL) AS pkg_state,
20781
                             TO_NUMBER (NULL) AS deprecated_state,
20782
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20783
                             NULL AS pkg_version, NULL AS dlocked,
20784
                             NULL AS pv_description
20785
                        FROM view_settings vs,
20786
                             view_def vd,
20787
                             views vi,
20788
                             release_content rel,
20789
                             package_versions pv
20790
                       WHERE vs.view_id = vi.view_id
20791
                         AND rel.pv_id = pv.pv_id
20792
                         AND vd.pkg_id = pv.pkg_id
20793
                         AND vd.view_id = vi.view_id
20794
                         AND vi.base_view = 'N'
20795
                         AND rel.rtag_id = rtagid
20796
                         AND vs.user_id = userid
20797
                         AND vi.view_id NOT IN (
20798
                                SELECT *
20799
                                  FROM THE
20800
                                          (SELECT CAST
20801
                                                     (in_list_number
20802
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20803
                                                     )
20804
                                             FROM DUAL
20805
                                          ))
20806
                      UNION
20807
                      /* Private Views expanded */
20808
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20809
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20810
                             pv.pkg_version, pv.dlocked, pv.pv_description
20811
                        FROM users usr,
20812
                             view_settings vs,
20813
                             view_def vd,
20814
                             views vi,
20815
                             release_content rel,
20816
                             PACKAGES pkg,
20817
                             package_versions pv
20818
                       WHERE vs.user_id = usr.user_id
20819
                         AND vs.view_id = vi.view_id
20820
                         AND vd.view_id = vi.view_id
20821
                         AND pv.pkg_id = pkg.pkg_id
20822
                         AND rel.pv_id = pv.pv_id
20823
                         AND rel.rtag_id = rtagid
20824
                         AND vd.pkg_id = pkg.pkg_id
20825
                         AND vi.base_view = 'N'
20826
                         AND vi.view_id IN (
20827
                                SELECT *
20828
                                  FROM THE
20829
                                          (SELECT CAST
20830
                                                     (in_list_number
20831
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20832
                                                     )
20833
                                             FROM DUAL
20834
                                          ))
20835
                         AND usr.user_id = userid) ord
20836
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20837
      END IF;
20838
   END;
20839
 
20840
/*-------------------------------------------------------------------------------------------------------*/
20841
   PROCEDURE get_work_in_progress_items (
20842
      viewtype           IN       NUMBER,
20843
      userid             IN       NUMBER,
20844
      rtagid             IN       NUMBER,
20845
      sviewidshowlist    IN       VARCHAR2,
20846
      ntruerecordcount   OUT      NUMBER,
20847
      recordset          OUT      typecur
20848
   )
20849
   IS
20850
   BEGIN
20851
      -- Get true record count because views can give false count
20852
      SELECT COUNT (wip.pv_id)
20853
        INTO ntruerecordcount
20854
        FROM work_in_progress wip
20855
       WHERE wip.rtag_id = rtagid;
20856
 
20857
      IF viewtype = 1
20858
      THEN
20859
         /*--- GUEST VIEW ---*/
20860
         OPEN recordset FOR
20861
            SELECT   *
20862
                FROM (
20863
                      /* Base Views collapsed */
20864
                      SELECT DISTINCT vi.view_id, vi.view_name,
20865
                                      TO_NUMBER (NULL) AS pkg_state,
20866
                                      TO_NUMBER (NULL) AS deprecated_state,
20867
                                      TO_NUMBER (NULL) AS pv_id,
20868
                                      NULL AS pkg_name, NULL AS pkg_version,
20869
                                      NULL AS dlocked, NULL AS pv_description
20870
                                 FROM work_in_progress rel, views vi
20871
                                WHERE rel.view_id = vi.view_id
20872
                                  AND rtag_id = rtagid
20873
                                  AND rel.view_id NOT IN (
20874
                                         SELECT *
20875
                                           FROM THE
20876
                                                   (SELECT CAST
20877
                                                              (in_list_number
20878
                                                                  (sviewidshowlist
20879
                                                                  ) AS relmgr_number_tab_t
20880
                                                              )
20881
                                                      FROM DUAL
20882
                                                   ))
20883
                      UNION
20884
                      /* Base Views expanded */
20885
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20886
 
20887
                             --rel.pkg_state,
20888
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20889
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20890
                             pv.pv_description
20891
                        FROM work_in_progress rel,
20892
                             PACKAGES pkg,
20893
                             package_versions pv,
20894
                             views vi
20895
                       WHERE pv.pkg_id = pkg.pkg_id
20896
                         AND rel.pv_id = pv.pv_id
20897
                         AND rel.view_id = vi.view_id
20898
                         AND rel.view_id IN (
20899
                                SELECT *
20900
                                  FROM THE
20901
                                          (SELECT CAST
20902
                                                     (in_list_number
20903
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20904
                                                     )
20905
                                             FROM DUAL
20906
                                          ))
20907
                         AND rtag_id = rtagid) ord
20908
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20909
      ELSIF viewtype = 2
20910
      THEN
20911
         /*--- PERSONAL VIEW ---*/
20912
         OPEN recordset FOR
20913
            SELECT   *
20914
                FROM (
20915
                      /* Base Views collapsed */
20916
                      SELECT DISTINCT vi.view_id, vi.view_name,
20917
                                      TO_NUMBER (NULL) AS pkg_state,
20918
                                      TO_NUMBER (NULL) AS deprecated_state,
20919
                                      TO_NUMBER (NULL) AS pv_id,
20920
                                      NULL AS pkg_name, NULL AS pkg_version,
20921
                                      NULL AS dlocked, NULL AS pv_description
20922
                                 FROM work_in_progress rel,
20923
                                      view_settings vs,
20924
                                      views vi
20925
                                WHERE rel.view_id = vi.view_id
20926
                                  AND vs.view_id = rel.view_id
20927
                                  AND vs.user_id = userid
20928
                                  AND rtag_id = rtagid
20929
                                  AND rel.view_id NOT IN (
20930
                                         SELECT *
20931
                                           FROM THE
20932
                                                   (SELECT CAST
20933
                                                              (in_list_number
20934
                                                                  (sviewidshowlist
20935
                                                                  ) AS relmgr_number_tab_t
20936
                                                              )
20937
                                                      FROM DUAL
20938
                                                   ))
20939
                      UNION
20940
                      /* Base Views expanded */
20941
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20942
 
20943
                             --rel.pkg_state,
20944
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20945
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20946
                             pv.pv_description
20947
                        FROM work_in_progress rel,
20948
                             PACKAGES pkg,
20949
                             package_versions pv,
20950
                             views vi,
20951
                             view_settings vs
20952
                       WHERE pv.pkg_id = pkg.pkg_id
20953
                         AND rel.pv_id = pv.pv_id
20954
                         AND rel.view_id = vi.view_id
20955
                         AND vs.view_id = vi.view_id
20956
                         AND vs.user_id = userid
20957
                         AND rel.view_id IN (
20958
                                SELECT *
20959
                                  FROM THE
20960
                                          (SELECT CAST
20961
                                                     (in_list_number
20962
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20963
                                                     )
20964
                                             FROM DUAL
20965
                                          ))
20966
                         AND rtag_id = rtagid
20967
                      UNION
20968
                      /* Private Views collapsed */
20969
                      SELECT vi.view_id, vi.view_name,
20970
                             TO_NUMBER (NULL) AS pkg_state,
20971
                             TO_NUMBER (NULL) AS deprecated_state,
20972
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20973
                             NULL AS pkg_version, NULL AS dlocked,
20974
                             NULL AS pv_description
20975
                        FROM view_settings vs,
20976
                             view_def vd,
20977
                             views vi,
20978
                             work_in_progress rel,
20979
                             package_versions pv
20980
                       WHERE vs.view_id = vi.view_id
20981
                         AND rel.pv_id = pv.pv_id
20982
                         AND vd.pkg_id = pv.pkg_id
20983
                         AND vd.view_id = vi.view_id
20984
                         AND vi.base_view = 'N'
20985
                         AND rel.rtag_id = rtagid
20986
                         AND vs.user_id = userid
20987
                         AND vi.view_id NOT IN (
20988
                                SELECT *
20989
                                  FROM THE
20990
                                          (SELECT CAST
20991
                                                     (in_list_number
20992
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20993
                                                     )
20994
                                             FROM DUAL
20995
                                          ))
20996
                      UNION
20997
                      /* Private Views expanded */
20998
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20999
 
21000
                             --rel.pkg_state,
21001
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21002
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21003
                             pv.pv_description
21004
                        FROM users usr,
21005
                             view_settings vs,
21006
                             view_def vd,
21007
                             views vi,
21008
                             work_in_progress rel,
21009
                             PACKAGES pkg,
21010
                             package_versions pv
21011
                       WHERE vs.user_id = usr.user_id
21012
                         AND vs.view_id = vi.view_id
21013
                         AND vd.view_id = vi.view_id
21014
                         AND pv.pkg_id = pkg.pkg_id
21015
                         AND rel.pv_id = pv.pv_id
21016
                         AND rel.rtag_id = rtagid
21017
                         AND vd.pkg_id = pkg.pkg_id
21018
                         AND vi.base_view = 'N'
21019
                         AND vi.view_id IN (
21020
                                SELECT *
21021
                                  FROM THE
21022
                                          (SELECT CAST
21023
                                                     (in_list_number
21024
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21025
                                                     )
21026
                                             FROM DUAL
21027
                                          ))
21028
                         AND usr.user_id = userid) ord
21029
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21030
      END IF;
21031
   END;
21032
 
21033
/*-------------------------------------------------------------------------------------------------------*/
21034
   PROCEDURE get_pending_items (
21035
      viewtype           IN       NUMBER,
21036
      userid             IN       NUMBER,
21037
      rtagid             IN       NUMBER,
21038
      sviewidshowlist    IN       VARCHAR2,
21039
      ntruerecordcount   OUT      NUMBER,
21040
      recordset          OUT      typecur
21041
   )
21042
   IS
21043
   BEGIN
21044
      -- Get true record count because views can give false count
21045
      SELECT COUNT (pl.pv_id)
21046
        INTO ntruerecordcount
21047
        FROM planned pl
21048
       WHERE pl.rtag_id = rtagid;
21049
 
21050
      IF viewtype = 1
21051
      THEN
21052
         /*--- GUEST VIEW ---*/
21053
         OPEN recordset FOR
21054
            SELECT   *
21055
                FROM (
21056
                      /* Base Views collapsed */
21057
                      SELECT DISTINCT vi.view_id, vi.view_name,
21058
                                      TO_NUMBER (NULL) AS pkg_state,
21059
                                      TO_NUMBER (NULL) AS deprecated_state,
21060
                                      TO_NUMBER (NULL) AS pv_id,
21061
                                      NULL AS pkg_name, NULL AS pkg_version,
21062
                                      NULL AS dlocked, NULL AS pv_description
21063
                                 FROM planned rel, views vi
21064
                                WHERE rel.view_id = vi.view_id
21065
                                  AND rtag_id = rtagid
21066
                                  AND rel.view_id NOT IN (
21067
                                         SELECT *
21068
                                           FROM THE
21069
                                                   (SELECT CAST
21070
                                                              (in_list_number
21071
                                                                  (sviewidshowlist
21072
                                                                  ) AS relmgr_number_tab_t
21073
                                                              )
21074
                                                      FROM DUAL
21075
                                                   ))
21076
                      UNION
21077
                      /* Base Views expanded */
21078
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21079
 
21080
                             --rel.pkg_state,
21081
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21082
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21083
                             pv.pv_description
21084
                        FROM planned rel,
21085
                             PACKAGES pkg,
21086
                             package_versions pv,
21087
                             views vi
21088
                       WHERE pv.pkg_id = pkg.pkg_id
21089
                         AND rel.pv_id = pv.pv_id
21090
                         AND rel.view_id = vi.view_id
21091
                         AND rel.view_id IN (
21092
                                SELECT *
21093
                                  FROM THE
21094
                                          (SELECT CAST
21095
                                                     (in_list_number
21096
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21097
                                                     )
21098
                                             FROM DUAL
21099
                                          ))
21100
                         AND rtag_id = rtagid) ord
21101
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21102
      ELSIF viewtype = 2
21103
      THEN
21104
         /*--- PERSONAL VIEW ---*/
21105
         OPEN recordset FOR
21106
            SELECT   *
21107
                FROM (
21108
                      /* Base Views collapsed */
21109
                      SELECT DISTINCT vi.view_id, vi.view_name,
21110
                                      TO_NUMBER (NULL) AS pkg_state,
21111
                                      TO_NUMBER (NULL) AS deprecated_state,
21112
                                      TO_NUMBER (NULL) AS pv_id,
21113
                                      NULL AS pkg_name, NULL AS pkg_version,
21114
                                      NULL AS dlocked, NULL AS pv_description
21115
                                 FROM planned rel, view_settings vs, views vi
21116
                                WHERE rel.view_id = vi.view_id
21117
                                  AND vs.view_id = rel.view_id
21118
                                  AND vs.user_id = userid
21119
                                  AND rtag_id = rtagid
21120
                                  AND rel.view_id NOT IN (
21121
                                         SELECT *
21122
                                           FROM THE
21123
                                                   (SELECT CAST
21124
                                                              (in_list_number
21125
                                                                  (sviewidshowlist
21126
                                                                  ) AS relmgr_number_tab_t
21127
                                                              )
21128
                                                      FROM DUAL
21129
                                                   ))
21130
                      UNION
21131
                      /* Base Views expanded */
21132
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21133
 
21134
                             --rel.pkg_state,
21135
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21136
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21137
                             pv.pv_description
21138
                        FROM planned rel,
21139
                             PACKAGES pkg,
21140
                             package_versions pv,
21141
                             views vi,
21142
                             view_settings vs
21143
                       WHERE pv.pkg_id = pkg.pkg_id
21144
                         AND rel.pv_id = pv.pv_id
21145
                         AND rel.view_id = vi.view_id
21146
                         AND vs.view_id = vi.view_id
21147
                         AND vs.user_id = userid
21148
                         AND rel.view_id IN (
21149
                                SELECT *
21150
                                  FROM THE
21151
                                          (SELECT CAST
21152
                                                     (in_list_number
21153
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21154
                                                     )
21155
                                             FROM DUAL
21156
                                          ))
21157
                         AND rtag_id = rtagid
21158
                      UNION
21159
                      /* Private Views collapsed */
21160
                      SELECT vi.view_id, vi.view_name,
21161
                             TO_NUMBER (NULL) AS pkg_state,
21162
                             TO_NUMBER (NULL) AS deprecated_state,
21163
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21164
                             NULL AS pkg_version, NULL AS dlocked,
21165
                             NULL AS pv_description
21166
                        FROM view_settings vs,
21167
                             view_def vd,
21168
                             views vi,
21169
                             planned rel,
21170
                             package_versions pv
21171
                       WHERE vs.view_id = vi.view_id
21172
                         AND rel.pv_id = pv.pv_id
21173
                         AND vd.pkg_id = pv.pkg_id
21174
                         AND vd.view_id = vi.view_id
21175
                         AND vi.base_view = 'N'
21176
                         AND rel.rtag_id = rtagid
21177
                         AND vs.user_id = userid
21178
                         AND vi.view_id NOT IN (
21179
                                SELECT *
21180
                                  FROM THE
21181
                                          (SELECT CAST
21182
                                                     (in_list_number
21183
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21184
                                                     )
21185
                                             FROM DUAL
21186
                                          ))
21187
                      UNION
21188
                      /* Private Views expanded */
21189
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21190
 
21191
                             --rel.pkg_state,
21192
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21193
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21194
                             pv.pv_description
21195
                        FROM users usr,
21196
                             view_settings vs,
21197
                             view_def vd,
21198
                             views vi,
21199
                             planned rel,
21200
                             PACKAGES pkg,
21201
                             package_versions pv
21202
                       WHERE vs.user_id = usr.user_id
21203
                         AND vs.view_id = vi.view_id
21204
                         AND vd.view_id = vi.view_id
21205
                         AND pv.pkg_id = pkg.pkg_id
21206
                         AND rel.pv_id = pv.pv_id
21207
                         AND rel.rtag_id = rtagid
21208
                         AND vd.pkg_id = pkg.pkg_id
21209
                         AND vi.base_view = 'N'
21210
                         AND vi.view_id IN (
21211
                                SELECT *
21212
                                  FROM THE
21213
                                          (SELECT CAST
21214
                                                     (in_list_number
21215
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21216
                                                     )
21217
                                             FROM DUAL
21218
                                          ))
21219
                         AND usr.user_id = userid) ord
21220
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21221
      END IF;
21222
   END;
21223
 
21224
/*-------------------------------------------------------------------------------------------------------*/
21225
   PROCEDURE get_view_content (
21226
      rtagid      IN       NUMBER,
21227
      viewid      IN       NUMBER,
21228
      recordset   OUT      typecur
21229
   )
21230
   IS
21231
      isbaseview   CHAR (1);
21232
   BEGIN
21233
      -- Check if the view is BASE VIEW
21234
      SELECT vi.base_view
21235
        INTO isbaseview
21236
        FROM views vi
21237
       WHERE vi.view_id = viewid;
21238
 
21239
      IF (isbaseview = 'Y')
21240
      THEN
21241
         -- Get Base view content
21242
         OPEN recordset FOR
21243
            SELECT   DECODE (rel.pkg_state,
21244
                             NULL, 0,
21245
                             rel.pkg_state
21246
                            ) AS pkg_state,
21247
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21248
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21249
                     pv.build_type
21250
                FROM environment_view rel, PACKAGES pkg, package_versions pv
21251
               WHERE pv.pkg_id = pkg.pkg_id
21252
                 AND rel.pv_id = pv.pv_id
21253
                 AND rel.view_id = viewid
21254
                 AND rel.rtag_id = rtagid
21255
            ORDER BY UPPER (pkg.pkg_name);
21256
      ELSE
21257
         -- Get non base view content
21258
         OPEN recordset FOR
21259
            SELECT   DECODE (rel.pkg_state,
21260
                             NULL, 0,
21261
                             rel.pkg_state
21262
                            ) AS pkg_state,
21263
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21264
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21265
                     pv.build_type
21266
                FROM environment_view rel,
21267
                     PACKAGES pkg,
21268
                     package_versions pv,
21269
                     view_def vd
21270
               WHERE pv.pkg_id = pkg.pkg_id
21271
                 AND rel.pv_id = pv.pv_id
21272
                 AND rel.rtag_id = rtagid
21273
                 AND vd.view_id = viewid
21274
                 AND vd.pkg_id = pv.pkg_id
21275
            ORDER BY UPPER (pkg.pkg_name);
21276
      END IF;
21277
   END;
21278
 
21279
/*-------------------------------------------------------------------------------------------------------*/
21280
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
21281
      RETURN NUMBER
21282
   IS
21283
      envtab             NUMBER;
21284
      returnvalue        NUMBER;
21285
      return_not_found   NUMBER := -1;
21286
   BEGIN
21287
      envtab := get_package_area (pvid, rtagid);
21288
 
21289
      IF envtab = 0
21290
      THEN
21291
         -- WORK IN PROGRESS --
21292
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
21293
      ELSIF envtab = 1
21294
      THEN
21295
         -- PENDING --
21296
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
21297
      ELSIF envtab = 2
21298
      THEN
21299
         -- RELEASED --
21300
         returnvalue := pk_release.get_package_view (pvid, rtagid);
21301
      ELSE
21302
         -- This may be a Patch not located anywhere but unlocked
21303
         returnvalue := return_not_found;
21304
      END IF;
21305
 
21306
      RETURN returnvalue;
21307
   END;
21308
 
21309
/*-------------------------------------------------------------------------------------------------------*/
21310
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21311
   IS
21312
      viewid          NUMBER;
21313
      envtab          NUMBER;
21314
      ispatch         CHAR (1) := NULL;
21315
      buildtype       CHAR (1) := NULL;
21316
      lastversionid   NUMBER;
21317
   BEGIN
21318
      -- Check if package is patch
21319
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21320
        INTO ispatch, buildtype, lastversionid
21321
        FROM package_versions pv
21322
       WHERE pv.pv_id = pvid;
21323
 
21324
      -- Get ViewId
21325
      viewid := get_package_view (pvid, rtagid);
21326
      -- Remove from current area
21327
      envtab := pk_environment.get_package_area (pvid, rtagid);
21328
 
21329
      -- Make sure that package was in work-in-progress or pending before makeing it release
21330
      -- Exclude patches, ripple builds
21331
      IF (envtab < 0)
21332
      THEN
21333
         -- Not found in work-in-progress or pending
21334
         IF (ispatch IS NULL) AND (buildtype = 'M')
21335
         THEN
21336
            raise_application_error (-20000,
21337
                                     'This package cannot be released here.'
21338
                                    );
21339
         END IF;
21340
      END IF;
21341
 
21342
      -- Log
21343
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21344
 
21345
      IF envtab = 0
21346
      THEN
21347
         -- WORK IN PROGRESS --
21348
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21349
      ELSIF envtab = 1
21350
      THEN
21351
         -- PENDING --
21352
         pk_planned.remove_package (pvid, rtagid, userid);
21353
      END IF;
21354
 
21355
      -- Change package state
21356
      pk_package.change_state (pvid, 'Y', userid);
21357
 
21358
      -- Make sure it is valid BASE VIEW
21359
      IF viewid < 1
21360
      THEN
21361
         viewid := 7;                            -- This is default base view
21362
      END IF;
21363
 
21364
      IF (ispatch IS NULL)
21365
      THEN
21366
         -- Add package to new area
21367
         pk_release.add_package (pvid, viewid, rtagid, userid);
21368
      END IF;
21369
 
21370
      -- Now do post Release Actions
21371
      pk_release.run_post_actions (pvid, rtagid);
21372
 
21373
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21374
      DELETE FROM do_not_ripple
21375
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21376
 
21377
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21378
      DELETE FROM advisory_ripple
21379
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21380
 
21381
      -- Log
21382
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21383
   END;
21384
 
21385
/*-------------------------------------------------------------------------------------------------------*/
21386
   PROCEDURE auto_make_release (
21387
      pvid            IN   NUMBER,
21388
      rtagid          IN   NUMBER,
21389
      userid          IN   NUMBER,
21390
      vext            IN   package_versions.v_ext%TYPE,
21391
      ssv_ext         IN   package_versions.v_ext%TYPE,
21392
      clonefrompvid   IN   NUMBER
21393
   )
21394
   IS
21395
      viewid          NUMBER;
21396
      envtab          NUMBER;
21397
      ispatch         CHAR (1) := NULL;
21398
      buildtype       CHAR (1) := NULL;
21399
      lastversionid   NUMBER;
21400
   BEGIN
21401
      -- Check if package is patch
21402
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21403
        INTO ispatch, buildtype, lastversionid
21404
        FROM package_versions pv
21405
       WHERE pv.pv_id = pvid;
21406
 
21407
      IF vext <> ssv_ext
21408
      THEN
21409
         -- Get ViewId
21410
         viewid := get_package_view (clonefrompvid, rtagid);
21411
         -- Remove from current area
21412
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
21413
      ELSE
21414
         -- Get ViewId
21415
         viewid := get_package_view (pvid, rtagid);
21416
         -- Remove from current area
21417
         envtab := pk_environment.get_package_area (pvid, rtagid);
21418
      END IF;
21419
 
21420
      -- Make sure that package was in work-in-progress or pending before makeing it release
21421
      -- Exclude patches, ripple builds
21422
      IF (envtab < 0)
21423
      THEN
21424
         -- Not found in work-in-progress or pending
21425
         IF (ispatch IS NULL) AND (buildtype = 'M')
21426
         THEN
21427
            raise_application_error (-20000,
21428
                                     'This package cannot be released here.'
21429
                                    );
21430
         END IF;
21431
      END IF;
21432
 
21433
      -- Log
21434
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21435
 
21436
      IF vext <> ssv_ext
21437
      THEN
21438
         IF envtab = 0
21439
         THEN
21440
            -- WORK IN PROGRESS --
21441
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
21442
                                                userid);
21443
         ELSIF envtab = 1
21444
         THEN
21445
            -- PENDING --
21446
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
21447
         ELSIF envtab = 2
21448
         THEN
21449
            -- RELEASED --
21450
            pk_release.remove_package (clonefrompvid, rtagid, userid);
21451
         END IF;
21452
      ELSE
21453
         IF envtab = 0
21454
         THEN
21455
            -- WORK IN PROGRESS --
21456
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
21457
         ELSIF envtab = 1
21458
         THEN
21459
            -- PENDING --
21460
            pk_planned.remove_package (pvid, rtagid, userid);
21461
         END IF;
21462
      END IF;
21463
 
21464
      -- Change package state
21465
      pk_package.change_state (pvid, 'Y', userid);
21466
 
21467
      -- Make sure it is valid BASE VIEW
21468
      IF viewid < 1
21469
      THEN
21470
         viewid := 7;                            -- This is default base view
21471
      END IF;
21472
 
21473
      IF (ispatch IS NULL)
21474
      THEN
21475
         -- Add package to new area
21476
         pk_release.add_package (pvid, viewid, rtagid, userid);
21477
      END IF;
21478
 
21479
      -- Now do post Release Actions
21480
      pk_release.run_post_actions (pvid, rtagid);
21481
      -- Now update the Dash_Board Table
21482
      pk_rmapi.update_dash_board (rtagid);
21483
 
21484
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21485
      DELETE FROM do_not_ripple
21486
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21487
 
21488
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21489
      DELETE FROM advisory_ripple
21490
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21491
 
21492
      -- Log
21493
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21494
   END;
21495
 
21496
/*-------------------------------------------------------------------------------------------------------*/
21497
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21498
   IS
21499
      viewid   NUMBER;
21500
      envtab   NUMBER;
21501
   BEGIN
21502
      -- Get ViewId
21503
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
21504
      viewid := get_package_view (pvid, rtagid);
21505
      -- Remove from current area
21506
      envtab := pk_environment.get_package_area (pvid, rtagid);
21507
      -- Log
21508
      log_action (pvid,
21509
                  'action',
21510
                  userid,
21511
                  'Start of Make Package UnRelease...'
21512
                 );
21513
 
21514
      IF envtab = 2
21515
      THEN
21516
         -- RELEASE AREA --
21517
         pk_release.remove_package (pvid, rtagid, userid);
21518
      ELSIF envtab = 1
21519
      THEN
21520
         -- PENDING --
21521
         pk_planned.remove_package (pvid, rtagid, userid);
21522
      END IF;
21523
 
21524
      -- Change package state
21525
      pk_package.change_state (pvid, 'N', userid);
21526
 
21527
      -- Make sure it is valid BASE VIEW
21528
      IF viewid < 1
21529
      THEN
21530
         viewid := 7;                            -- This is default base view
21531
      END IF;
21532
 
21533
      -- Add package to new area
21534
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21535
      -- Now do post Release Actions
21536
      pk_release.run_post_actions (pvid, rtagid);
21537
      -- Log
21538
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
21539
   END;
21540
 
21541
/*-------------------------------------------------------------------------------------------------------*/
21542
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21543
   IS
21544
      viewid      NUMBER;
21545
      ispatch     CHAR (1) := NULL;
21546
      buildtype   CHAR (1) := NULL;
21547
   BEGIN
21548
      -- Check if package is patch
21549
      SELECT pv.is_patch, pv.build_type
21550
        INTO ispatch, buildtype
21551
        FROM package_versions pv
21552
       WHERE pv.pv_id = pvid;
21553
 
21554
      -- Get ViewId
21555
      viewid := get_package_view (pvid, rtagid);
21556
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
21557
 
21558
      -- Log
21559
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
21560
 
21561
      IF (ispatch IS NULL)
21562
      THEN
21563
         -- Remove from current area
21564
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21565
         -- Change package state
21566
         pk_package.change_state (pvid, 'P', userid);
21567
         -- Add package to new area
21568
         pk_planned.add_package (pvid, viewid, rtagid, userid);
21569
      END IF;
21570
 
21571
      -- Log
21572
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
21573
   END;
21574
 
21575
/*-------------------------------------------------------------------------------------------------------*/
21576
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21577
   IS
21578
   BEGIN
21579
      -- Log
21580
      log_action (pvid,
21581
                  'action',
21582
                  userid,
21583
                  'Start of Package Pending Approval...'
21584
                 );
21585
      -- Change package state
21586
      pk_package.change_state (pvid, 'A', userid);
21587
      -- Log
21588
      log_action (pvid, 'action', userid,
21589
                  'End of Package Pending Approval...');
21590
   END;
21591
 
21592
/*-------------------------------------------------------------------------------------------------------*/
21593
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21594
   IS
21595
      viewid   NUMBER;
21596
   BEGIN
21597
      -- Get ViewId
21598
      viewid := get_package_view (pvid, rtagid);
21599
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
21600
 
21601
      -- Log
21602
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21603
      -- Remove from current area
21604
      pk_planned.remove_package (pvid, rtagid, userid);
21605
      -- Change package state
21606
      pk_package.change_state (pvid, 'R', userid);
21607
      -- Add package to new area
21608
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21609
      -- Log
21610
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21611
   END;
21612
 
21613
/*-------------------------------------------------------------------------------------------------------*/
21614
   PROCEDURE change_package_view (
21615
      pvid        IN   NUMBER,
21616
      rtagid      IN   NUMBER,
21617
      newviewid   IN   NUMBER
21618
   )
21619
   IS
21620
      envtab   NUMBER;
21621
   BEGIN
21622
      envtab := pk_environment.get_package_area (pvid, rtagid);
21623
 
21624
      IF envtab = 0
21625
      THEN
21626
         -- WORK IN PROGRESS --
21627
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
21628
      ELSIF envtab = 1
21629
      THEN
21630
         -- PENDING --
21631
         pk_planned.change_package_view (pvid, rtagid, newviewid);
21632
      ELSIF envtab = 2
21633
      THEN
21634
         -- RELEASED --
21635
         pk_release.change_package_view (pvid, rtagid, newviewid);
21636
      END IF;
21637
   END;
21638
 
21639
/*-------------------------------------------------------------------------------------------------------*/
21640
   PROCEDURE find_package (
21641
      skeyword      IN       VARCHAR2,
21642
      nrtagid       IN       NUMBER,
21643
      nsearcharea   IN       NUMBER,
21644
      recordset     OUT      typecur
21645
   )
21646
   IS
21647
   BEGIN
21648
      IF nsearcharea = 0
21649
      THEN
21650
         /* Search Work In Progress */
21651
         OPEN recordset FOR
21652
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21653
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21654
                     pv.modified_stamp, usr.full_name, usr.user_email
21655
                FROM views vi,
21656
                     work_in_progress rc,
21657
                     PACKAGES pkg,
21658
                     package_versions pv,
21659
                     users usr
21660
               WHERE rc.view_id = vi.view_id
21661
                 AND rc.pv_id = pv.pv_id
21662
                 AND pkg.pkg_id = pv.pkg_id
21663
                 AND pv.modifier_id = usr.user_id
21664
                 AND rc.rtag_id = nrtagid
21665
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21666
            ORDER BY UPPER (pkg.pkg_name);
21667
      ELSIF nsearcharea = 1
21668
      THEN
21669
         /* Search Pending */
21670
         OPEN recordset FOR
21671
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21672
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21673
                     pv.modified_stamp, usr.full_name, usr.user_email
21674
                FROM views vi,
21675
                     planned rc,
21676
                     PACKAGES pkg,
21677
                     package_versions pv,
21678
                     users usr
21679
               WHERE rc.view_id = vi.view_id
21680
                 AND rc.pv_id = pv.pv_id
21681
                 AND pkg.pkg_id = pv.pkg_id
21682
                 AND pv.modifier_id = usr.user_id
21683
                 AND rc.rtag_id = nrtagid
21684
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21685
            ORDER BY UPPER (pkg.pkg_name);
21686
      ELSIF nsearcharea = 2
21687
      THEN
21688
         /* Search Released */
21689
         OPEN recordset FOR
21690
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21691
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21692
                     pv.modified_stamp, usr.full_name, usr.user_email
21693
                FROM views vi,
21694
                     release_content rc,
21695
                     PACKAGES pkg,
21696
                     package_versions pv,
21697
                     users usr
21698
               WHERE rc.base_view_id = vi.view_id
21699
                 AND rc.pv_id = pv.pv_id
21700
                 AND pkg.pkg_id = pv.pkg_id
21701
                 AND pv.modifier_id = usr.user_id
21702
                 AND rc.rtag_id = nrtagid
21703
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21704
            ORDER BY UPPER (pkg.pkg_name);
21705
      ELSIF nsearcharea = 3
21706
      THEN
21707
         /* Search ALL */
21708
         OPEN recordset FOR
21709
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
21710
                     pv.pv_id, pv.pkg_version, pv.comments,
21711
                     pv.modified_stamp, usr.full_name, usr.user_email
21712
                FROM views vi,
21713
                     environment_view rc,
21714
                     PACKAGES pkg,
21715
                     package_versions pv,
21716
                     users usr
21717
               WHERE rc.view_id = vi.view_id
21718
                 AND rc.pv_id = pv.pv_id
21719
                 AND pkg.pkg_id = pv.pkg_id
21720
                 AND pv.modifier_id = usr.user_id
21721
                 AND rc.rtag_id = nrtagid
21722
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21723
            ORDER BY UPPER (pkg.pkg_name);
21724
      END IF;
21725
   END;
21726
 
21727
/*-------------------------------------------------------------------------------------------------------*/
21728
   PROCEDURE find_file (
21729
      skeyword      IN       VARCHAR2,
21730
      nrtagid       IN       NUMBER,
21731
      nsearcharea   IN       NUMBER,
21732
      npagesize     IN       NUMBER,
21733
      recordset     OUT      typecur
21734
   )
21735
   IS
21736
   BEGIN
21737
      IF nsearcharea = 0
21738
      THEN
21739
         /* Search Work In Progress */
21740
         OPEN recordset FOR
21741
            SELECT   qry.*
21742
                FROM (
21743
                      /* File search on Packages */
21744
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21745
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21746
                        FROM work_in_progress rc,
21747
                             PACKAGES pkg,
21748
                             package_versions pv,
21749
                             release_components art
21750
                       WHERE rc.pv_id = art.pv_id
21751
                         AND pv.pkg_id = pkg.pkg_id
21752
                         AND rc.pv_id = pv.pv_id
21753
                         AND rc.rtag_id = nrtagid
21754
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21755
                      UNION ALL
21756
                      /* File search on Products */
21757
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21758
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21759
                        FROM work_in_progress rc,
21760
                             PACKAGES pkg,
21761
                             package_versions pv,
21762
                             product_components art
21763
                       WHERE rc.pv_id = art.pv_id
21764
                         AND pv.pkg_id = pkg.pkg_id
21765
                         AND rc.pv_id = pv.pv_id
21766
                         AND rc.rtag_id = nrtagid
21767
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21768
               WHERE ROWNUM <= npagesize
21769
            ORDER BY UPPER (qry.pkg_name);
21770
      ELSIF nsearcharea = 1
21771
      THEN
21772
         /* Search Pending */
21773
         OPEN recordset FOR
21774
            SELECT   qry.*
21775
                FROM (
21776
                      /* File search on Packages */
21777
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21778
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21779
                        FROM planned rc,
21780
                             PACKAGES pkg,
21781
                             package_versions pv,
21782
                             release_components art
21783
                       WHERE rc.pv_id = art.pv_id
21784
                         AND pv.pkg_id = pkg.pkg_id
21785
                         AND rc.pv_id = pv.pv_id
21786
                         AND rc.rtag_id = nrtagid
21787
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21788
                      UNION ALL
21789
                      /* File search on Products */
21790
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21791
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21792
                        FROM planned rc,
21793
                             PACKAGES pkg,
21794
                             package_versions pv,
21795
                             product_components art
21796
                       WHERE rc.pv_id = art.pv_id
21797
                         AND pv.pkg_id = pkg.pkg_id
21798
                         AND rc.pv_id = pv.pv_id
21799
                         AND rc.rtag_id = nrtagid
21800
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21801
               WHERE ROWNUM <= npagesize
21802
            ORDER BY UPPER (qry.pkg_name);
21803
      ELSIF nsearcharea = 2
21804
      THEN
21805
         /* Search Released */
21806
         OPEN recordset FOR
21807
            SELECT   qry.*
21808
                FROM (
21809
                      /* File search on Packages */
21810
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21811
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21812
                             NULL AS patch_id
21813
                        FROM release_content rc,
21814
                             PACKAGES pkg,
21815
                             package_versions pv,
21816
                             release_components art
21817
                       WHERE rc.pv_id = art.pv_id
21818
                         AND pv.pkg_id = pkg.pkg_id
21819
                         AND rc.pv_id = pv.pv_id
21820
                         AND rc.rtag_id = nrtagid
21821
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21822
                      UNION ALL
21823
                      /* File search on Products */
21824
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21825
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21826
                             NULL AS patch_id
21827
                        FROM release_content rc,
21828
                             PACKAGES pkg,
21829
                             package_versions pv,
21830
                             product_components art
21831
                       WHERE rc.pv_id = art.pv_id
21832
                         AND pv.pkg_id = pkg.pkg_id
21833
                         AND rc.pv_id = pv.pv_id
21834
                         AND rc.rtag_id = nrtagid
21835
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21836
                      UNION ALL
21837
                      /* File search on Patches */
21838
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21839
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21840
                             DECODE (art.file_path,
21841
                                     NULL, pp.patch_id,
21842
                                     NULL
21843
                                    ) AS patch_id
21844
                        FROM release_content rc,
21845
                             PACKAGES pkg,
21846
                             package_versions pv,
21847
                             release_components art,
21848
                             package_patches pp
21849
                       WHERE pv.pv_id = pp.pv_id
21850
                         AND pv.pkg_id = pkg.pkg_id
21851
                         AND rc.rtag_id = nrtagid
21852
                         AND art.pv_id = pp.patch_id
21853
                         AND rc.pv_id = pp.pv_id
21854
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21855
               WHERE ROWNUM <= npagesize
21856
            ORDER BY UPPER (qry.pkg_name);
21857
      ELSIF nsearcharea = 3
21858
      THEN
21859
         /* Search ALL */
21860
         OPEN recordset FOR
21861
            SELECT   qry.*
21862
                FROM (
21863
                      /* File search on Packages */
21864
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21865
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21866
                             NULL AS patch_id
21867
                        FROM environment_view rc,
21868
                             PACKAGES pkg,
21869
                             package_versions pv,
21870
                             release_components art
21871
                       WHERE rc.pv_id = art.pv_id
21872
                         AND pv.pkg_id = pkg.pkg_id
21873
                         AND rc.pv_id = pv.pv_id
21874
                         AND rc.rtag_id = nrtagid
21875
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21876
                      UNION ALL
21877
                      /* File search on Products */
21878
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21879
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21880
                             NULL AS patch_id
21881
                        FROM environment_view rc,
21882
                             PACKAGES pkg,
21883
                             package_versions pv,
21884
                             product_components art
21885
                       WHERE rc.pv_id = art.pv_id
21886
                         AND pv.pkg_id = pkg.pkg_id
21887
                         AND rc.pv_id = pv.pv_id
21888
                         AND rc.rtag_id = nrtagid
21889
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21890
                      UNION ALL
21891
                      /* File search on Patches */
21892
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21893
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21894
                             DECODE (art.file_path,
21895
                                     NULL, pp.patch_id,
21896
                                     NULL
21897
                                    ) AS patch_id
21898
                        FROM release_content rc,
21899
                             PACKAGES pkg,
21900
                             package_versions pv,
21901
                             release_components art,
21902
                             package_patches pp
21903
                       WHERE pv.pv_id = pp.pv_id
21904
                         AND pv.pkg_id = pkg.pkg_id
21905
                         AND rc.rtag_id = nrtagid
21906
                         AND art.pv_id = pp.patch_id
21907
                         AND rc.pv_id = pp.pv_id
21908
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21909
               WHERE ROWNUM <= npagesize
21910
            ORDER BY UPPER (qry.pkg_name);
21911
      END IF;
21912
   END;
21913
 
21914
/*-------------------------------------------------------------------------------------------------------*/
21915
   PROCEDURE get_prodrelease_items (
21916
      rtagid             IN       NUMBER,
21917
      ntruerecordcount   OUT      NUMBER,
21918
      recordset          OUT      typecur
21919
   )
21920
   IS
21921
   BEGIN
21922
      -- Get true record count n the number of integration products
21923
      SELECT COUNT (rc.pv_id)
21924
        INTO ntruerecordcount
21925
        FROM release_content rc
21926
       WHERE rc.rtag_id = rtagid;
21927
 
21928
      OPEN recordset FOR
21929
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
21930
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21931
                  pv.pkg_version, pv.dlocked, pv.pv_description
21932
             FROM release_content rel,
21933
                  PACKAGES pkg,
21934
                  package_versions pv,
21935
                  views vi
21936
            WHERE pv.pkg_id = pkg.pkg_id
21937
              AND rel.pv_id = pv.pv_id
21938
              AND rel.base_view_id = vi.view_id
21939
              AND pv.is_deployable = 'Y'
21940
              AND rtag_id = rtagid
21941
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21942
                                              FROM deployment_manager.os_contents)
21943
              AND rel.product_state IS NULL
21944
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21945
   END;
21946
 
21947
/*-------------------------------------------------------------------------------------------------------*/
21948
   PROCEDURE get_integration_items (
21949
      rtagid             IN       NUMBER,
21950
      ntruerecordcount   OUT      NUMBER,
21951
      recordset          OUT      typecur
21952
   )
21953
   IS
21954
   BEGIN
21955
      -- Get true record count n the number of integration products
21956
      SELECT COUNT (rc.pv_id)
21957
        INTO ntruerecordcount
21958
        FROM release_content rc
21959
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
21960
 
21961
      OPEN recordset FOR
21962
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21963
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21964
                  pv.pkg_version, pv.dlocked, pv.pv_description
21965
             FROM release_content rel,
21966
                  PACKAGES pkg,
21967
                  package_versions pv,
21968
                  views vi
21969
            WHERE pv.pkg_id = pkg.pkg_id
21970
              AND rel.pv_id = pv.pv_id
21971
              AND rel.base_view_id = vi.view_id
21972
              AND pv.is_deployable = 'Y'
21973
              AND rtag_id = rtagid
21974
              AND rel.product_state IN (1, 5)
21975
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21976
   END;
21977
 
21978
/*-------------------------------------------------------------------------------------------------------*/
21979
   PROCEDURE get_test_items (
21980
      rtagid             IN       NUMBER,
21981
      ntruerecordcount   OUT      NUMBER,
21982
      recordset          OUT      typecur
21983
   )
21984
   IS
21985
   BEGIN
21986
      -- Get true record count n the number of test products
21987
      SELECT COUNT (rc.pv_id)
21988
        INTO ntruerecordcount
21989
        FROM release_content rc
21990
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
21991
 
21992
      OPEN recordset FOR
21993
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21994
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21995
                  pv.pkg_version, pv.dlocked, pv.pv_description
21996
             FROM release_content rel,
21997
                  PACKAGES pkg,
21998
                  package_versions pv,
21999
                  views vi
22000
            WHERE pv.pkg_id = pkg.pkg_id
22001
              AND rel.pv_id = pv.pv_id
22002
              AND rel.base_view_id = vi.view_id
22003
              AND pv.is_deployable = 'Y'
22004
              AND rtag_id = rtagid
22005
              AND rel.product_state = 2
22006
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22007
   END;
22008
 
22009
/*-------------------------------------------------------------------------------------------------------*/
22010
   PROCEDURE get_deploy_items (
22011
      rtagid             IN       NUMBER,
22012
      ntruerecordcount   OUT      NUMBER,
22013
      recordset          OUT      typecur
22014
   )
22015
   IS
22016
   BEGIN
22017
      -- Get true record count n the number of deploy products
22018
      SELECT COUNT (rc.pv_id)
22019
        INTO ntruerecordcount
22020
        FROM release_content rc
22021
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
22022
 
22023
      OPEN recordset FOR
22024
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22025
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22026
                  pv.pkg_version, pv.dlocked, pv.pv_description
22027
             FROM release_content rel,
22028
                  PACKAGES pkg,
22029
                  package_versions pv,
22030
                  views vi
22031
            WHERE pv.pkg_id = pkg.pkg_id
22032
              AND rel.pv_id = pv.pv_id
22033
              AND rel.base_view_id = vi.view_id
22034
              AND pv.is_deployable = 'Y'
22035
              AND rtag_id = rtagid
22036
              AND rel.product_state IN (3, 5)
22037
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
22038
                                              FROM deployment_manager.os_contents)
22039
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22040
   END;
22041
 
22042
/*-------------------------------------------------------------------------------------------------------*/
22043
   PROCEDURE get_reject_items (
22044
      rtagid             IN       NUMBER,
22045
      ntruerecordcount   OUT      NUMBER,
22046
      recordset          OUT      typecur
22047
   )
22048
   IS
22049
   BEGIN
22050
      -- Get true record count n the number of reject products
22051
      SELECT COUNT (rc.pv_id)
22052
        INTO ntruerecordcount
22053
        FROM release_content rc
22054
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
22055
 
22056
      OPEN recordset FOR
22057
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22058
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22059
                  pv.pkg_version, pv.dlocked, pv.pv_description
22060
             FROM release_content rel,
22061
                  PACKAGES pkg,
22062
                  package_versions pv,
22063
                  views vi
22064
            WHERE pv.pkg_id = pkg.pkg_id
22065
              AND rel.pv_id = pv.pv_id
22066
              AND rel.base_view_id = vi.view_id
22067
              AND pv.is_deployable = 'Y'
22068
              AND rtag_id = rtagid
22069
              AND rel.product_state = 4
22070
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22071
   END;
22072
/*-------------------------------------------------------------------------------------------------------*/
22073
END pk_environment_test;
22074
/
22075