Subversion Repositories DevTools

Rev

Rev 53 | Go to most recent revision | Details | 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,
428
  VIEW_ID NUMBER NOT NULL
429
)
430
  TABLESPACE "USERS"
431
  LOGGING 
432
  PCTFREE 10
433
  PCTUSED 40
434
  INITRANS 1
435
  MAXTRANS 255
436
  STORAGE
437
  (
438
    INITIAL 64K
439
    MINEXTENTS 1
440
    MAXEXTENTS 2147483645
441
    FREELISTS 1
442
    FREELIST GROUPS 1
443
    BUFFER_POOL DEFAULT
444
  )
445
;
446
 
447
CREATE TABLE PROJECT_ACTION_LOG
448
(
449
  USER_ID NUMBER NOT NULL,
450
  ACTION_DATETIME DATE NOT NULL,
451
  PROJ_ID NUMBER NOT NULL,
452
  DESCRIPTION VARCHAR2(4000 BYTE),
453
  ACTTYPE_ID NUMBER NOT NULL,
454
  RTAG_ID NUMBER
455
)
456
  TABLESPACE "USERS"
457
  LOGGING 
458
  PCTFREE 10
459
  PCTUSED 40
460
  INITRANS 1
461
  MAXTRANS 255
462
  STORAGE
463
  (
464
    INITIAL 64K
465
    MINEXTENTS 1
466
    MAXEXTENTS 2147483645
467
    FREELISTS 1
468
    FREELIST GROUPS 1
469
    BUFFER_POOL DEFAULT
470
  )
471
;
472
 
473
CREATE TABLE PACKAGE_METRICS
474
(
475
  PV_ID NUMBER NOT NULL,
476
  BRANCHES NUMBER,
477
  BRANCH_LIST VARCHAR2(4000 BYTE),
478
  CODE_FILES NUMBER,
479
  IGNORED_FILES NUMBER,
480
  DIRECTORIES NUMBER,
481
  DIRECTORY_DEPTH NUMBER,
482
  TOTAL_FILES NUMBER,
483
  MAKEFILES NUMBER,
484
  BLANK_LINES NUMBER,
485
  CODE_LINES NUMBER,
486
  COMMENT_LINES NUMBER,
487
  CREATED_STAMP DATE
488
)
489
  TABLESPACE "USERS"
490
  LOGGING 
491
  PCTFREE 10
492
  PCTUSED 40
493
  INITRANS 1
494
  MAXTRANS 255
495
  STORAGE
496
  (
497
    INITIAL 64K
498
    MINEXTENTS 1
499
    MAXEXTENTS 2147483645
500
    FREELISTS 1
501
    FREELIST GROUPS 1
502
    BUFFER_POOL DEFAULT
503
  )
504
;
505
 
506
CREATE TABLE ARCHIVE_DATA
507
(
508
  RTAG_ID NUMBER(*, 0) NOT NULL,
509
  PV_ID NUMBER(*, 0) NOT NULL
510
)
511
  TABLESPACE "USERS"
512
  LOGGING 
513
  PCTFREE 10
514
  PCTUSED 40
515
  INITRANS 1
516
  MAXTRANS 255
517
  STORAGE
518
  (
519
    INITIAL 64K
520
    MINEXTENTS 1
521
    MAXEXTENTS 2147483645
522
    FREELISTS 1
523
    FREELIST GROUPS 1
524
    BUFFER_POOL DEFAULT
525
  )
526
;
527
 
528
CREATE TABLE VIEW_SETTINGS
529
(
530
  USER_ID NUMBER NOT NULL,
531
  VIEW_ID NUMBER NOT NULL
532
)
533
  TABLESPACE "SYSTEM"
534
  LOGGING 
535
  PCTFREE 10
536
  PCTUSED 40
537
  INITRANS 1
538
  MAXTRANS 255
539
  STORAGE
540
  (
541
    INITIAL 64K
542
    NEXT 64K
543
    MINEXTENTS 1
544
    MAXEXTENTS 2147483645
545
    PCTINCREASE 0
546
    FREELISTS 1
547
    FREELIST GROUPS 1
548
    BUFFER_POOL DEFAULT
549
  )
550
;
551
 
552
CREATE TABLE ACTION_TYPE
553
(
554
  ACTTYPE_ID NUMBER NOT NULL,
555
  NAME VARCHAR2(255 BYTE) NOT NULL,
556
  DESCRIPTION VARCHAR2(4000 BYTE)
557
, CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY
558
  (
559
    ACTTYPE_ID
560
  )
561
  ENABLE
562
)
563
  TABLESPACE "USERS"
564
  LOGGING 
565
  PCTFREE 10
566
  PCTUSED 40
567
  INITRANS 1
568
  MAXTRANS 255
569
  STORAGE
570
  (
571
    INITIAL 128K
572
    MINEXTENTS 1
573
    MAXEXTENTS 2147483645
574
    FREELISTS 1
575
    FREELIST GROUPS 1
576
    BUFFER_POOL DEFAULT
577
  )
578
;
579
 
580
CREATE TABLE RUN_LEVEL_SCHEDULE
581
(
582
  SCHEDULED_ID NUMBER NOT NULL,
583
  SCHEDULED_PAUSE DATE,
584
  SCHEDULED_RESUME DATE,
585
  REPEAT CHAR(1 BYTE),
586
  INDEFINITE_PAUSE CHAR(1 BYTE)
587
, PRIMARY KEY
588
  (
589
    SCHEDULED_ID
590
  )
591
  ENABLE
592
)
593
  TABLESPACE "USERS"
594
  LOGGING 
595
  PCTFREE 10
596
  PCTUSED 40
597
  INITRANS 1
598
  MAXTRANS 255
599
  STORAGE
600
  (
601
    INITIAL 64K
602
    MINEXTENTS 1
603
    MAXEXTENTS 2147483645
604
    FREELISTS 1
605
    FREELIST GROUPS 1
606
    BUFFER_POOL DEFAULT
607
  )
608
;
609
 
610
CREATE TABLE VTREES
611
(
612
  VTREE_ID NUMBER NOT NULL,
613
  PROJ_ID NUMBER NOT NULL,
614
  VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,
615
  HIDE CHAR(1 BYTE) NOT NULL
616
, CONSTRAINT PK_VTREES PRIMARY KEY
617
  (
618
    VTREE_ID
619
  )
620
  ENABLE
621
)
622
  TABLESPACE "SYSTEM"
623
  LOGGING 
624
  PCTFREE 10
625
  PCTUSED 40
626
  INITRANS 1
627
  MAXTRANS 255
628
  STORAGE
629
  (
630
    INITIAL 64K
631
    NEXT 64K
632
    MINEXTENTS 1
633
    MAXEXTENTS 2147483645
634
    PCTINCREASE 0
635
    FREELISTS 1
636
    FREELIST GROUPS 1
637
    BUFFER_POOL DEFAULT
638
  )
639
;
640
 
641
CREATE TABLE BUILD_STANDARDS
642
(
643
  BS_ID NUMBER NOT NULL,
644
  BS_NAME VARCHAR2(20 BYTE) NOT NULL
645
, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY
646
  (
647
    BS_ID
648
  )
649
  ENABLE
650
)
651
  TABLESPACE "USERS"
652
  LOGGING 
653
  PCTFREE 10
654
  PCTUSED 40
655
  INITRANS 1
656
  MAXTRANS 255
657
  STORAGE
658
  (
659
    INITIAL 64K
660
    MINEXTENTS 1
661
    MAXEXTENTS 2147483645
662
    FREELISTS 1
663
    FREELIST GROUPS 1
664
    BUFFER_POOL DEFAULT
665
  )
666
;
667
 
668
CREATE TABLE TEMP_SASH
669
(
670
  RTAG_ID NUMBER,
671
  PROJ_ID NUMBER
672
)
673
  TABLESPACE "USERS"
674
  LOGGING 
675
  PCTFREE 10
676
  PCTUSED 40
677
  INITRANS 1
678
  MAXTRANS 255
679
  STORAGE
680
  (
681
    INITIAL 64K
682
    MINEXTENTS 1
683
    MAXEXTENTS 2147483645
684
    FREELISTS 1
685
    FREELIST GROUPS 1
686
    BUFFER_POOL DEFAULT
687
  )
688
;
689
 
690
CREATE TABLE BUILD_MACHINES
691
(
692
  BM_ID NUMBER NOT NULL,
693
  BM_NAME VARCHAR2(20 BYTE) NOT NULL
694
, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY
695
  (
696
    BM_ID
697
  )
698
  ENABLE
699
)
700
  TABLESPACE "USERS"
701
  LOGGING 
702
  PCTFREE 10
703
  PCTUSED 40
704
  INITRANS 1
705
  MAXTRANS 255
706
  STORAGE
707
  (
708
    INITIAL 64K
709
    MINEXTENTS 1
710
    MAXEXTENTS 2147483645
711
    FREELISTS 1
712
    FREELIST GROUPS 1
713
    BUFFER_POOL DEFAULT
714
  )
715
;
716
 
717
CREATE TABLE RELEASE_LINKS
718
(
719
  RTAG_ID NUMBER NOT NULL,
720
  REF_RTAG_ID NUMBER NOT NULL
721
)
722
  TABLESPACE "USERS"
723
  LOGGING 
724
  PCTFREE 10
725
  PCTUSED 40
726
  INITRANS 1
727
  MAXTRANS 255
728
  STORAGE
729
  (
730
    INITIAL 64K
731
    MINEXTENTS 1
732
    MAXEXTENTS 2147483645
733
    FREELISTS 1
734
    FREELIST GROUPS 1
735
    BUFFER_POOL DEFAULT
736
  )
737
;
738
 
739
CREATE TABLE BUILD_ENV_DOCUMENTS
740
(
741
  BE_ID NUMBER NOT NULL,
742
  DOC_NUM VARCHAR2(255 BYTE) NOT NULL
743
)
744
  TABLESPACE "USERS"
745
  LOGGING 
746
  PCTFREE 10
747
  PCTUSED 40
748
  INITRANS 1
749
  MAXTRANS 255
750
  STORAGE
751
  (
752
    INITIAL 128K
753
    MINEXTENTS 1
754
    MAXEXTENTS 2147483645
755
    FREELISTS 1
756
    FREELIST GROUPS 1
757
    BUFFER_POOL DEFAULT
758
  )
759
;
760
 
761
CREATE TABLE PRODUCT_STATES
762
(
763
  STATE_ID NUMBER NOT NULL,
764
  STATE VARCHAR2(4000 BYTE) NOT NULL
765
, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY
766
  (
767
    STATE_ID
768
  )
769
  ENABLE
770
)
771
  TABLESPACE "USERS"
772
  LOGGING 
773
  PCTFREE 10
774
  PCTUSED 40
775
  INITRANS 1
776
  MAXTRANS 255
777
  STORAGE
778
  (
779
    INITIAL 64K
780
    MINEXTENTS 1
781
    MAXEXTENTS 2147483645
782
    FREELISTS 1
783
    FREELIST GROUPS 1
784
    BUFFER_POOL DEFAULT
785
  )
786
;
787
 
788
CREATE TABLE WORLDS
789
(
790
  WORLD_ID NUMBER NOT NULL,
791
  WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,
792
  WORLD_DESC VARCHAR2(255 BYTE)
793
, CONSTRAINT PK_WORLDS PRIMARY KEY
794
  (
795
    WORLD_ID
796
  )
797
  ENABLE
798
)
799
  TABLESPACE "USERS"
800
  LOGGING 
801
  PCTFREE 10
802
  PCTUSED 40
803
  INITRANS 1
804
  MAXTRANS 255
805
  STORAGE
806
  (
807
    INITIAL 128K
808
    MINEXTENTS 1
809
    MAXEXTENTS 2147483645
810
    FREELISTS 1
811
    FREELIST GROUPS 1
812
    BUFFER_POOL DEFAULT
813
  )
814
;
815
 
816
CREATE TABLE ACTION_LOG
817
(
818
  USER_ID NUMBER NOT NULL,
819
  ACTION_DATETIME DATE NOT NULL,
820
  PV_ID NUMBER NOT NULL,
821
  DESCRIPTION VARCHAR2(4000 BYTE),
822
  ACTTYPE_ID NUMBER NOT NULL
823
)
824
  TABLESPACE "USERS"
825
  LOGGING 
826
  PCTFREE 10
827
  PCTUSED 40
828
  INITRANS 1
829
  MAXTRANS 255
830
  STORAGE
831
  (
832
    INITIAL 128K
833
    MINEXTENTS 1
834
    MAXEXTENTS 2147483645
835
    FREELISTS 1
836
    FREELIST GROUPS 1
837
    BUFFER_POOL DEFAULT
838
  )
839
;
840
 
841
CREATE TABLE PROJECT_EXTENTIONS
842
(
843
  PROJ_ID NUMBER NOT NULL,
844
  EXT_NAME VARCHAR2(10 BYTE) NOT NULL
845
)
846
  TABLESPACE "SYSTEM"
847
  LOGGING 
848
  PCTFREE 10
849
  PCTUSED 40
850
  INITRANS 1
851
  MAXTRANS 255
852
  STORAGE
853
  (
854
    INITIAL 64K
855
    NEXT 64K
856
    MINEXTENTS 1
857
    MAXEXTENTS 2147483645
858
    PCTINCREASE 0
859
    FREELISTS 1
860
    FREELIST GROUPS 1
861
    BUFFER_POOL DEFAULT
862
  )
863
;
864
 
865
CREATE TABLE ADDITIONAL_NOTES
866
(
867
  NOTE_ID NUMBER NOT NULL,
868
  PV_ID NUMBER NOT NULL,
869
  NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,
870
  NOTE_BODY VARCHAR2(4000 BYTE),
871
  MOD_DATE DATE NOT NULL,
872
  MOD_USER NUMBER NOT NULL
873
)
874
  TABLESPACE "USERS"
875
  LOGGING 
876
  PCTFREE 10
877
  PCTUSED 40
878
  INITRANS 1
879
  MAXTRANS 255
880
  STORAGE
881
  (
882
    INITIAL 128K
883
    MINEXTENTS 1
884
    MAXEXTENTS 2147483645
885
    FREELISTS 1
886
    FREELIST GROUPS 1
887
    BUFFER_POOL DEFAULT
888
  )
889
;
890
 
891
CREATE TABLE MESSAGE_BOARD
892
(
893
  MSG_ID NUMBER NOT NULL,
894
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
895
  SUBMITION_DATE DATE NOT NULL,
896
  EXPIRY_DATE DATE,
897
  DUE_DATE DATE
898
, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY
899
  (
900
    MSG_ID
901
  )
902
  ENABLE
903
)
904
  TABLESPACE "SYSTEM"
905
  LOGGING 
906
  PCTFREE 10
907
  PCTUSED 40
908
  INITRANS 1
909
  MAXTRANS 255
910
  STORAGE
911
  (
912
    INITIAL 64K
913
    NEXT 64K
914
    MINEXTENTS 1
915
    MAXEXTENTS 2147483645
916
    PCTINCREASE 0
917
    FREELISTS 1
918
    FREELIST GROUPS 1
919
    BUFFER_POOL DEFAULT
920
  )
921
;
922
 
923
CREATE TABLE VTREES_WORLD
924
(
925
  WORLD_ID NUMBER NOT NULL,
926
  VTREE_ID NUMBER NOT NULL
927
)
928
  TABLESPACE "USERS"
929
  LOGGING 
930
  PCTFREE 10
931
  PCTUSED 40
932
  INITRANS 1
933
  MAXTRANS 255
934
  STORAGE
935
  (
936
    INITIAL 128K
937
    MINEXTENTS 1
938
    MAXEXTENTS 2147483645
939
    FREELISTS 1
940
    FREELIST GROUPS 1
941
    BUFFER_POOL DEFAULT
942
  )
943
;
944
 
945
CREATE TABLE CODE_REVIEWS
946
(
947
  PV_ID NUMBER NOT NULL,
948
  DATE_OF_REVIEW DATE,
949
  TIME_SPENT FLOAT(126),
950
  REVIEW_REASON VARCHAR2(4000 BYTE),
951
  RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),
952
  RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),
953
  RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),
954
  RTEAM_AUTHOR VARCHAR2(4000 BYTE),
955
  FILES_REVIEWED VARCHAR2(4000 BYTE),
956
  REVIEW_RESULTS NUMBER,
957
  ISSUES_RAISED VARCHAR2(4000 BYTE),
958
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
959
  FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),
960
  FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),
961
  RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),
962
  RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),
963
  RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),
964
  RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),
965
  RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),
966
  RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),
967
  RBS_S_EXCEP_HANDING CHAR(1 BYTE),
968
  RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),
969
  RBS_S_RESOURCE_MNG CHAR(1 BYTE),
970
  RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),
971
  RBS_S_TRANS_COMPLET CHAR(1 BYTE),
972
  RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),
973
  RBS_S_THREADSAFETY CHAR(1 BYTE),
974
  RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),
975
  RBS_S_RET_VALS CHAR(1 BYTE),
976
  RBS_C_RET_VALS VARCHAR2(4000 BYTE),
977
  RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),
978
  RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),
979
  RBS_S_SQL_STD CHAR(1 BYTE),
980
  RBS_C_SQL_STD VARCHAR2(4000 BYTE),
981
  MNT_S_EXT_REF CHAR(1 BYTE),
982
  MNT_C_EXT_REF VARCHAR2(4000 BYTE),
983
  MNT_S_CLASS_SIZE CHAR(1 BYTE),
984
  MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),
985
  MNT_S_METHOD_SIZE CHAR(1 BYTE),
986
  MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),
987
  MNT_S_APPROP_COMM CHAR(1 BYTE),
988
  MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),
989
  MNT_S_IDENT_NAME_STD CHAR(1 BYTE),
990
  MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),
991
  MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),
992
  MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),
993
  MNT_S_NO_LIT_NUM CHAR(1 BYTE),
994
  MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),
995
  MNT_S_NO_DEAD_CODE CHAR(1 BYTE),
996
  MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),
997
  DEI_S_STD_DES_PATT CHAR(1 BYTE),
998
  DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),
999
  DEI_S_APPROP_ALGOR CHAR(1 BYTE),
1000
  DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),
1001
  DEI_S_APPROP_OBJ CHAR(1 BYTE),
1002
  DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),
1003
  DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),
1004
  DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),
1005
  DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),
1006
  DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),
1007
  DEI_S_APPROP_LOGGING CHAR(1 BYTE),
1008
  DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE)
1009
)
1010
  TABLESPACE "USERS"
1011
  LOGGING 
1012
  PCTFREE 10
1013
  PCTUSED 40
1014
  INITRANS 1
1015
  MAXTRANS 255
1016
  STORAGE
1017
  (
1018
    INITIAL 128K
1019
    MINEXTENTS 1
1020
    MAXEXTENTS 2147483645
1021
    FREELISTS 1
1022
    FREELIST GROUPS 1
1023
    BUFFER_POOL DEFAULT
1024
  )
1025
;
1026
 
1027
CREATE TABLE PLANNED_VERSIONS
1028
(
1029
  PKG_ID NUMBER,
1030
  PKG_VERSION VARCHAR2(50 BYTE)
1031
)
1032
  TABLESPACE "USERS"
1033
  LOGGING 
1034
  PCTFREE 10
1035
  PCTUSED 40
1036
  INITRANS 1
1037
  MAXTRANS 255
1038
  STORAGE
1039
  (
1040
    INITIAL 64K
1041
    MINEXTENTS 1
1042
    MAXEXTENTS 2147483645
1043
    FREELISTS 1
1044
    FREELIST GROUPS 1
1045
    BUFFER_POOL DEFAULT
1046
  )
1047
;
1048
 
1049
CREATE TABLE VALIDATION_RULES
1050
(
1051
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1052
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1053
  IS_NUMERIC CHAR(1 BYTE),
1054
  MIN_NUMERIC_VALUE NUMBER,
1055
  MAX_NUMERIC_VALUE NUMBER,
1056
  IS_DATE CHAR(1 BYTE),
1057
  START_DATE DATE,
1058
  END_DATE DATE,
1059
  MIN_STRING_LENGTH NUMBER,
1060
  MAX_STRING_LENGTH NUMBER,
1061
  REGEXP VARCHAR2(4000 BYTE),
1062
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1063
)
1064
  TABLESPACE "USERS"
1065
  LOGGING 
1066
  PCTFREE 10
1067
  PCTUSED 40
1068
  INITRANS 1
1069
  MAXTRANS 255
1070
  STORAGE
1071
  (
1072
    INITIAL 128K
1073
    MINEXTENTS 1
1074
    MAXEXTENTS 2147483645
1075
    FREELISTS 1
1076
    FREELIST GROUPS 1
1077
    BUFFER_POOL DEFAULT
1078
  )
1079
;
1080
 
1081
CREATE TABLE DO_NOT_RIPPLE
1082
(
1083
  RTAG_ID NUMBER NOT NULL,
1084
  PV_ID NUMBER NOT NULL
1085
)
1086
  TABLESPACE "USERS"
1087
  LOGGING 
1088
  PCTFREE 10
1089
  PCTUSED 40
1090
  INITRANS 1
1091
  MAXTRANS 255
1092
  STORAGE
1093
  (
1094
    INITIAL 64K
1095
    MINEXTENTS 1
1096
    MAXEXTENTS 2147483645
1097
    FREELISTS 1
1098
    FREELIST GROUPS 1
1099
    BUFFER_POOL DEFAULT
1100
  )
1101
;
1102
 
1103
CREATE TABLE NOTE_MANAGER
1104
(
1105
  NID VARCHAR2(30 BYTE) NOT NULL,
1106
  LAST_USER VARCHAR2(20 BYTE),
1107
  LAST_DATE DATE,
1108
  DESCRIPTION VARCHAR2(4000 BYTE)
1109
, CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY
1110
  (
1111
    NID
1112
  )
1113
  ENABLE
1114
)
1115
  TABLESPACE "USERS"
1116
  LOGGING 
1117
  PCTFREE 10
1118
  PCTUSED 40
1119
  INITRANS 1
1120
  MAXTRANS 255
1121
  STORAGE
1122
  (
1123
    INITIAL 128K
1124
    MINEXTENTS 1
1125
    MAXEXTENTS 2147483645
1126
    FREELISTS 1
1127
    FREELIST GROUPS 1
1128
    BUFFER_POOL DEFAULT
1129
  )
1130
;
1131
 
1132
CREATE TABLE RELEASE_CONTENT
1133
(
1134
  RTAG_ID NUMBER NOT NULL,
1135
  PV_ID NUMBER NOT NULL,
1136
  BASE_VIEW_ID NUMBER NOT NULL,
1137
  INSERT_STAMP DATE NOT NULL,
1138
  INSERTOR_ID NUMBER NOT NULL,
1139
  PKG_STATE NUMBER NOT NULL,
1140
  PKG_ID NUMBER,
1141
  DEPRECATED_STATE NUMBER,
1142
  PRODUCT_STATE NUMBER
1143
)
1144
  TABLESPACE "SYSTEM"
1145
  LOGGING 
1146
  PCTFREE 10
1147
  PCTUSED 40
1148
  INITRANS 1
1149
  MAXTRANS 255
1150
  STORAGE
1151
  (
1152
    INITIAL 64K
1153
    NEXT 64K
1154
    MINEXTENTS 1
1155
    MAXEXTENTS 2147483645
1156
    PCTINCREASE 0
1157
    FREELISTS 1
1158
    FREELIST GROUPS 1
1159
    BUFFER_POOL DEFAULT
1160
  )
1161
;
1162
 
1163
CREATE TABLE PROCESSES
1164
(
1165
  PROC_ID NUMBER NOT NULL,
1166
  PROC_NAME VARCHAR2(255 BYTE) NOT NULL,
1167
  PROC_DESCRIPTION VARCHAR2(255 BYTE),
1168
  RUN_AS VARCHAR2(255 BYTE),
1169
  PKG_OWNER VARCHAR2(4000 BYTE),
1170
  IS_INTERFACE CHAR(1 BYTE)
1171
, CONSTRAINT PROCESSES_PK PRIMARY KEY
1172
  (
1173
    PROC_ID
1174
  )
1175
  ENABLE
1176
)
1177
  TABLESPACE "USERS"
1178
  LOGGING 
1179
  PCTFREE 10
1180
  PCTUSED 40
1181
  INITRANS 1
1182
  MAXTRANS 255
1183
  STORAGE
1184
  (
1185
    INITIAL 128K
1186
    MINEXTENTS 1
1187
    MAXEXTENTS 2147483645
1188
    FREELISTS 1
1189
    FREELIST GROUPS 1
1190
    BUFFER_POOL DEFAULT
1191
  )
1192
;
1193
 
1194
CREATE TABLE RM_PACKAGE_ISSUES
1195
(
1196
  PKG_ID NUMBER,
1197
  PKG_NAME VARCHAR2(50 BYTE),
1198
  PV_ID NUMBER,
1199
  PKG_VERSION VARCHAR2(50 BYTE),
1200
  DPV_ID NUMBER,
1201
  DPKG_NAME VARCHAR2(50 BYTE),
1202
  DPKG_VERSION VARCHAR2(50 BYTE),
1203
  ISS_DB NUMBER,
1204
  ISS_ID NUMBER
1205
)
1206
  TABLESPACE "USERS"
1207
  LOGGING 
1208
  PCTFREE 10
1209
  PCTUSED 40
1210
  INITRANS 1
1211
  MAXTRANS 255
1212
  STORAGE
1213
  (
1214
    INITIAL 64K
1215
    MINEXTENTS 1
1216
    MAXEXTENTS 2147483645
1217
    FREELISTS 1
1218
    FREELIST GROUPS 1
1219
    BUFFER_POOL DEFAULT
1220
  )
1221
;
1222
 
1223
CREATE TABLE PACKAGE_PROCESSES
1224
(
1225
  PV_ID NUMBER NOT NULL,
1226
  PROC_ID NUMBER NOT NULL
1227
)
1228
  TABLESPACE "USERS"
1229
  LOGGING 
1230
  PCTFREE 10
1231
  PCTUSED 40
1232
  INITRANS 1
1233
  MAXTRANS 255
1234
  STORAGE
1235
  (
1236
    INITIAL 64K
1237
    MINEXTENTS 1
1238
    MAXEXTENTS 2147483645
1239
    FREELISTS 1
1240
    FREELIST GROUPS 1
1241
    BUFFER_POOL DEFAULT
1242
  )
1243
;
1244
 
1245
CREATE TABLE ADVISORY_RIPPLE
1246
(
1247
  RTAG_ID NUMBER NOT NULL,
1248
  PV_ID NUMBER NOT NULL
1249
)
1250
  TABLESPACE "USERS"
1251
  LOGGING 
1252
  PCTFREE 10
1253
  PCTUSED 40
1254
  INITRANS 1
1255
  MAXTRANS 255
1256
  STORAGE
1257
  (
1258
    INITIAL 64K
1259
    MINEXTENTS 1
1260
    MAXEXTENTS 2147483645
1261
    FREELISTS 1
1262
    FREELIST GROUPS 1
1263
    BUFFER_POOL DEFAULT
1264
  )
1265
;
1266
 
1267
CREATE TABLE PACKAGE_PATCHES
1268
(
1269
  PV_ID NUMBER NOT NULL,
1270
  PATCH_ID NUMBER NOT NULL,
1271
  INSTALL_ORDER NUMBER NOT NULL,
1272
  PATCH_OBSOLETED_BY NUMBER
1273
)
1274
  TABLESPACE "USERS"
1275
  LOGGING 
1276
  PCTFREE 10
1277
  PCTUSED 40
1278
  INITRANS 1
1279
  MAXTRANS 255
1280
  STORAGE
1281
  (
1282
    INITIAL 128K
1283
    MINEXTENTS 1
1284
    MAXEXTENTS 2147483645
1285
    FREELISTS 1
1286
    FREELIST GROUPS 1
1287
    BUFFER_POOL DEFAULT
1288
  )
1289
;
1290
 
1291
CREATE TABLE PACKAGE_INTEREST
1292
(
1293
  PKG_ID NUMBER NOT NULL,
1294
  PROJ_ID NUMBER NOT NULL,
1295
  USER_ID NUMBER NOT NULL
1296
)
1297
  TABLESPACE "USERS"
1298
  LOGGING 
1299
  PCTFREE 10
1300
  PCTUSED 40
1301
  INITRANS 1
1302
  MAXTRANS 255
1303
  STORAGE
1304
  (
1305
    INITIAL 64K
1306
    MINEXTENTS 1
1307
    MAXEXTENTS 2147483645
1308
    FREELISTS 1
1309
    FREELIST GROUPS 1
1310
    BUFFER_POOL DEFAULT
1311
  )
1312
;
1313
 
1314
CREATE TABLE PLATFORMS
1315
(
1316
  CODE NUMBER NOT NULL,
1317
  NAME VARCHAR2(255 BYTE) NOT NULL
1318
)
1319
  TABLESPACE "USERS"
1320
  LOGGING 
1321
  PCTFREE 10
1322
  PCTUSED 40
1323
  INITRANS 1
1324
  MAXTRANS 255
1325
  STORAGE
1326
  (
1327
    INITIAL 64K
1328
    MINEXTENTS 1
1329
    MAXEXTENTS 2147483645
1330
    FREELISTS 1
1331
    FREELIST GROUPS 1
1332
    BUFFER_POOL DEFAULT
1333
  )
1334
;
1335
 
1336
CREATE TABLE RELEASE_CONFIG
1337
(
1338
  RCON_ID NUMBER NOT NULL,
1339
  RTAG_ID NUMBER NOT NULL,
1340
  GBE_ID NUMBER NOT NULL,
1341
  DAEMON_HOSTNAME VARCHAR2(50 BYTE),
1342
  DAEMON_MODE CHAR(1 CHAR),
1343
  GBE_BUILDFILTER VARCHAR2(255 BYTE)
1344
, PRIMARY KEY
1345
  (
1346
    RCON_ID
1347
  )
1348
  ENABLE
1349
)
1350
  TABLESPACE "USERS"
1351
  LOGGING 
1352
  PCTFREE 10
1353
  PCTUSED 40
1354
  INITRANS 1
1355
  MAXTRANS 255
1356
  STORAGE
1357
  (
1358
    INITIAL 64K
1359
    MINEXTENTS 1
1360
    MAXEXTENTS 2147483645
1361
    FREELISTS 1
1362
    FREELIST GROUPS 1
1363
    BUFFER_POOL DEFAULT
1364
  )
1365
;
1366
 
1367
CREATE TABLE GBE_MACHTYPE
1368
(
1369
  GBE_ID NUMBER NOT NULL,
1370
  GBE_VALUE VARCHAR2(20 BYTE) NOT NULL
1371
, PRIMARY KEY
1372
  (
1373
    GBE_ID
1374
  )
1375
  ENABLE
1376
)
1377
  TABLESPACE "USERS"
1378
  LOGGING 
1379
  PCTFREE 10
1380
  PCTUSED 40
1381
  INITRANS 1
1382
  MAXTRANS 255
1383
  STORAGE
1384
  (
1385
    INITIAL 64K
1386
    MINEXTENTS 1
1387
    MAXEXTENTS 2147483645
1388
    FREELISTS 1
1389
    FREELIST GROUPS 1
1390
    BUFFER_POOL DEFAULT
1391
  )
1392
;
1393
 
1394
CREATE TABLE ARCHIVE_ACTION_LOG
1395
(
1396
  USER_ID NUMBER NOT NULL,
1397
  DATE_TIME_STAMP DATE NOT NULL,
1398
  RTAG_ID NUMBER NOT NULL,
1399
  DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
1400
)
1401
  TABLESPACE "USERS"
1402
  LOGGING 
1403
  PCTFREE 10
1404
  PCTUSED 0
1405
  INITRANS 1
1406
  MAXTRANS 255
1407
  STORAGE
1408
  (
1409
    INITIAL 64K
1410
    MINEXTENTS 1
1411
    MAXEXTENTS 2147483645
1412
    FREELISTS 1
1413
    FREELIST GROUPS 1
1414
    BUFFER_POOL DEFAULT
1415
  )
1416
;
1417
 
1418
CREATE TABLE RELEASE_METRICS
1419
(
1420
  RTAG_ID NUMBER NOT NULL,
1421
  TOTAL_PACKAGES NUMBER,
1422
  AUTOBUILT NUMBER,
1423
  LINES_OF_CODE NUMBER,
1424
  UNIT_TESTED NUMBER,
1425
  AUTOTESTED NUMBER,
1426
  BRANCHES NUMBER,
1427
  LAST_BUILD_TIME DATE
1428
)
1429
  TABLESPACE "USERS"
1430
  LOGGING 
1431
  PCTFREE 10
1432
  PCTUSED 40
1433
  INITRANS 1
1434
  MAXTRANS 255
1435
  STORAGE
1436
  (
1437
    INITIAL 64K
1438
    MINEXTENTS 1
1439
    MAXEXTENTS 2147483645
1440
    FREELISTS 1
1441
    FREELIST GROUPS 1
1442
    BUFFER_POOL DEFAULT
1443
  )
1444
;
1445
 
1446
CREATE TABLE AUTOBUILD_FAILURE
1447
(
1448
  GROUP_EMAIL_ID NUMBER NOT NULL,
1449
  PROJ_ID NUMBER,
1450
  VIEW_ID NUMBER
1451
, PRIMARY KEY
1452
  (
1453
    GROUP_EMAIL_ID
1454
  )
1455
  ENABLE
1456
)
1457
  TABLESPACE "USERS"
1458
  LOGGING 
1459
  PCTFREE 10
1460
  PCTUSED 40
1461
  INITRANS 1
1462
  MAXTRANS 255
1463
  STORAGE
1464
  (
1465
    INITIAL 64K
1466
    MINEXTENTS 1
1467
    MAXEXTENTS 2147483645
1468
    FREELISTS 1
1469
    FREELIST GROUPS 1
1470
    BUFFER_POOL DEFAULT
1471
  )
1472
;
1473
 
1474
CREATE TABLE JIRA_ISSUES
1475
(
1476
  PV_ID NUMBER NOT NULL,
1477
  ISS_KEY VARCHAR2(4000 BYTE),
1478
  DATE_TIME_STAMP DATE
1479
)
1480
  TABLESPACE "SYSTEM"
1481
  LOGGING 
1482
  PCTFREE 10
1483
  PCTUSED 40
1484
  INITRANS 1
1485
  MAXTRANS 255
1486
  STORAGE
1487
  (
1488
    INITIAL 64K
1489
    NEXT 64K
1490
    MINEXTENTS 1
1491
    MAXEXTENTS 2147483645
1492
    PCTINCREASE 0
1493
    FREELISTS 1
1494
    FREELIST GROUPS 1
1495
    BUFFER_POOL DEFAULT
1496
  )
1497
;
1498
 
1499
CREATE TABLE VIEW_DEF
1500
(
1501
  VIEW_ID NUMBER NOT NULL,
1502
  PKG_ID NUMBER NOT NULL
1503
)
1504
  TABLESPACE "SYSTEM"
1505
  LOGGING 
1506
  PCTFREE 10
1507
  PCTUSED 40
1508
  INITRANS 1
1509
  MAXTRANS 255
1510
  STORAGE
1511
  (
1512
    INITIAL 64K
1513
    NEXT 64K
1514
    MINEXTENTS 1
1515
    MAXEXTENTS 2147483645
1516
    PCTINCREASE 0
1517
    FREELISTS 1
1518
    FREELIST GROUPS 1
1519
    BUFFER_POOL DEFAULT
1520
  )
1521
;
1522
 
1523
CREATE TABLE WORK_IN_PROGRESS
1524
(
1525
  RTAG_ID NUMBER NOT NULL,
1526
  PV_ID NUMBER NOT NULL,
1527
  VIEW_ID NUMBER NOT NULL
1528
)
1529
  TABLESPACE "USERS"
1530
  LOGGING 
1531
  PCTFREE 10
1532
  PCTUSED 40
1533
  INITRANS 1
1534
  MAXTRANS 255
1535
  STORAGE
1536
  (
1537
    INITIAL 64K
1538
    MINEXTENTS 1
1539
    MAXEXTENTS 2147483645
1540
    FREELISTS 1
1541
    FREELIST GROUPS 1
1542
    BUFFER_POOL DEFAULT
1543
  )
1544
;
1545
 
1546
CREATE TABLE RUN_LEVEL
1547
(
1548
  RCON_ID NUMBER,
1549
  CURRENT_BUILD_FILES CLOB,
1550
  CURRENT_RUN_LEVEL NUMBER,
1551
  PAUSE NUMBER,
1552
  CURRENT_PKG_ID_BEING_BUILT NUMBER
1553
)
1554
  TABLESPACE "USERS"
1555
  LOGGING 
1556
  PCTFREE 10
1557
  PCTUSED 40
1558
  INITRANS 1
1559
  MAXTRANS 255
1560
  STORAGE
1561
  (
1562
    INITIAL 64K
1563
    MINEXTENTS 1
1564
    MAXEXTENTS 2147483645
1565
    FREELISTS 1
1566
    FREELIST GROUPS 1
1567
    BUFFER_POOL DEFAULT
1568
  )
1569
    LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$
1570
    (
1571
      ENABLE STORAGE IN ROW
1572
      CHUNK 8192
1573
      PCTVERSION 10
1574
      NOCACHE LOGGING
1575
      TABLESPACE USERS
1576
      STORAGE
1577
      (
1578
        INITIAL 64K
1579
        MINEXTENTS 1
1580
        MAXEXTENTS 2147483645
1581
        FREELISTS 1
1582
        FREELIST GROUPS 1
1583
        BUFFER_POOL DEFAULT
1584
      )
1585
    )
1586
;
1587
 
1588
CREATE TABLE TEST_TYPES
1589
(
1590
  TEST_TYPE_ID NUMBER NOT NULL,
1591
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
1592
  DISPLAY_ORDER NUMBER
1593
, CONSTRAINT PK_TEST_TYPES PRIMARY KEY
1594
  (
1595
    TEST_TYPE_ID
1596
  )
1597
  ENABLE
1598
)
1599
  TABLESPACE "USERS"
1600
  LOGGING 
1601
  PCTFREE 10
1602
  PCTUSED 40
1603
  INITRANS 1
1604
  MAXTRANS 255
1605
  STORAGE
1606
  (
1607
    INITIAL 128K
1608
    MINEXTENTS 1
1609
    MAXEXTENTS 2147483645
1610
    FREELISTS 1
1611
    FREELIST GROUPS 1
1612
    BUFFER_POOL DEFAULT
1613
  )
1614
;
1615
 
1616
CREATE TABLE PACKAGE_DEPENDENCIES
1617
(
1618
  PV_ID NUMBER NOT NULL,
1619
  DPV_ID NUMBER NOT NULL,
1620
  PKG_ID NUMBER NOT NULL,
1621
  DPKG_ID NUMBER NOT NULL,
1622
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1623
  DISPLAY_ORDER NUMBER
1624
)
1625
  TABLESPACE "SYSTEM"
1626
  LOGGING 
1627
  PCTFREE 10
1628
  PCTUSED 40
1629
  INITRANS 1
1630
  MAXTRANS 255
1631
  STORAGE
1632
  (
1633
    INITIAL 320K
1634
    NEXT 64K
1635
    MINEXTENTS 1
1636
    MAXEXTENTS 2147483645
1637
    PCTINCREASE 0
1638
    FREELISTS 1
1639
    FREELIST GROUPS 1
1640
    BUFFER_POOL DEFAULT
1641
  )
1642
;
1643
 
1644
CREATE TABLE PRODUCT_COMPONENTS
1645
(
1646
  PV_ID NUMBER NOT NULL,
1647
  OS_ID NUMBER NOT NULL,
1648
  FILE_PATH VARCHAR2(4000 BYTE),
1649
  FILE_NAME VARCHAR2(4000 BYTE),
1650
  DESTINATION_PATH VARCHAR2(4000 BYTE),
1651
  BYTE_SIZE NUMBER,
1652
  CRC_CKSUM VARCHAR2(2000 BYTE)
1653
)
1654
  TABLESPACE "USERS"
1655
  LOGGING 
1656
  PCTFREE 10
1657
  PCTUSED 40
1658
  INITRANS 1
1659
  MAXTRANS 255
1660
  STORAGE
1661
  (
1662
    INITIAL 64K
1663
    MINEXTENTS 1
1664
    MAXEXTENTS 2147483645
1665
    FREELISTS 1
1666
    FREELIST GROUPS 1
1667
    BUFFER_POOL DEFAULT
1668
  )
1669
;
1670
 
1671
CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES
1672
(
1673
  PKG_ID NUMBER,
1674
  PKG_NAME VARCHAR2(50 BYTE),
1675
  PV_ID NUMBER,
1676
  PKG_VERSION VARCHAR2(50 BYTE),
1677
  DPV_ID NUMBER,
1678
  DPKG_NAME VARCHAR2(50 BYTE),
1679
  DPKG_VERSION VARCHAR2(50 BYTE),
1680
  ISS_DB NUMBER,
1681
  ISS_ID NUMBER
1682
)
1683
ON COMMIT PRESERVE ROWS
1684
;
1685
 
1686
CREATE TABLE PACKAGE_BUILD_INFO
1687
(
1688
  PV_ID NUMBER NOT NULL,
1689
  BM_ID NUMBER NOT NULL,
1690
  BSA_ID NUMBER
1691
)
1692
  TABLESPACE "USERS"
1693
  LOGGING 
1694
  PCTFREE 10
1695
  PCTUSED 40
1696
  INITRANS 1
1697
  MAXTRANS 255
1698
  STORAGE
1699
  (
1700
    INITIAL 64K
1701
    MINEXTENTS 1
1702
    MAXEXTENTS 2147483645
1703
    FREELISTS 1
1704
    FREELIST GROUPS 1
1705
    BUFFER_POOL DEFAULT
1706
  )
1707
;
1708
 
1709
CREATE TABLE PACKAGES
1710
(
1711
  PKG_ID NUMBER NOT NULL,
1712
  PKG_NAME VARCHAR2(255 BYTE) NOT NULL,
1713
  SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),
1714
  WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE)
1715
, CONSTRAINT PK_PACKAGES PRIMARY KEY
1716
  (
1717
    PKG_ID
1718
  )
1719
  ENABLE
1720
)
1721
  TABLESPACE "SYSTEM"
1722
  LOGGING 
1723
  PCTFREE 10
1724
  PCTUSED 40
1725
  INITRANS 1
1726
  MAXTRANS 255
1727
  STORAGE
1728
  (
1729
    INITIAL 64K
1730
    NEXT 64K
1731
    MINEXTENTS 1
1732
    MAXEXTENTS 2147483645
1733
    PCTINCREASE 0
1734
    FREELISTS 1
1735
    FREELIST GROUPS 1
1736
    BUFFER_POOL DEFAULT
1737
  )
1738
;
1739
 
1740
CREATE TABLE MEMBERS_GROUP
1741
(
1742
  GROUP_EMAIL_ID NUMBER NOT NULL,
1743
  USER_ID NUMBER
1744
)
1745
  TABLESPACE "USERS"
1746
  LOGGING 
1747
  PCTFREE 10
1748
  PCTUSED 40
1749
  INITRANS 1
1750
  MAXTRANS 255
1751
  STORAGE
1752
  (
1753
    INITIAL 64K
1754
    MINEXTENTS 1
1755
    MAXEXTENTS 2147483645
1756
    FREELISTS 1
1757
    FREELIST GROUPS 1
1758
    BUFFER_POOL DEFAULT
1759
  )
1760
;
1761
 
1762
CREATE TABLE BUILD_SERVICE_CONFIG
1763
(
1764
  SERVICE VARCHAR2(50 BYTE) NOT NULL,
1765
  CONFIG VARCHAR2(2000 BYTE) NOT NULL
1766
)
1767
  TABLESPACE "USERS"
1768
  LOGGING 
1769
  PCTFREE 10
1770
  PCTUSED 40
1771
  INITRANS 1
1772
  MAXTRANS 255
1773
  STORAGE
1774
  (
1775
    INITIAL 64K
1776
    MINEXTENTS 1
1777
    MAXEXTENTS 2147483645
1778
    FREELISTS 1
1779
    FREELIST GROUPS 1
1780
    BUFFER_POOL DEFAULT
1781
  )
1782
;
1783
 
1784
CREATE TABLE PROJECTS
1785
(
1786
  PROJ_ID NUMBER NOT NULL,
1787
  PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,
1788
  BASE_URL VARCHAR2(4000 BYTE)
1789
, CONSTRAINT PK_PROJECTS PRIMARY KEY
1790
  (
1791
    PROJ_ID
1792
  )
1793
  ENABLE
1794
)
1795
  TABLESPACE "SYSTEM"
1796
  LOGGING 
1797
  PCTFREE 10
1798
  PCTUSED 40
1799
  INITRANS 1
1800
  MAXTRANS 255
1801
  STORAGE
1802
  (
1803
    INITIAL 64K
1804
    NEXT 64K
1805
    MINEXTENTS 1
1806
    MAXEXTENTS 2147483645
1807
    PCTINCREASE 0
1808
    FREELISTS 1
1809
    FREELIST GROUPS 1
1810
    BUFFER_POOL DEFAULT
1811
  )
1812
;
1813
 
1814
CREATE TABLE VIEWS
1815
(
1816
  VIEW_ID NUMBER NOT NULL,
1817
  VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,
1818
  OWNER_ID NUMBER NOT NULL,
1819
  BASE_VIEW CHAR(1 BYTE) NOT NULL,
1820
  PUBLIC_READ CHAR(1 BYTE) NOT NULL
1821
, CONSTRAINT PK_VIEWS PRIMARY KEY
1822
  (
1823
    VIEW_ID
1824
  )
1825
  ENABLE
1826
)
1827
  TABLESPACE "SYSTEM"
1828
  LOGGING 
1829
  PCTFREE 10
1830
  PCTUSED 40
1831
  INITRANS 1
1832
  MAXTRANS 255
1833
  STORAGE
1834
  (
1835
    INITIAL 64K
1836
    NEXT 64K
1837
    MINEXTENTS 1
1838
    MAXEXTENTS 2147483645
1839
    PCTINCREASE 0
1840
    FREELISTS 1
1841
    FREELIST GROUPS 1
1842
    BUFFER_POOL DEFAULT
1843
  )
1844
;
1845
 
1846
CREATE TABLE DAEMON_ACTION_LOG
1847
(
1848
  USER_ID NUMBER NOT NULL,
1849
  ACTION_DATETIME DATE,
1850
  RCON_ID NUMBER NOT NULL,
1851
  DESCRIPTION VARCHAR2(4000 BYTE),
1852
  ACTTYPE_ID NUMBER
1853
)
1854
  TABLESPACE "USERS"
1855
  LOGGING 
1856
  PCTFREE 10
1857
  PCTUSED 40
1858
  INITRANS 1
1859
  MAXTRANS 255
1860
  STORAGE
1861
  (
1862
    INITIAL 64K
1863
    MINEXTENTS 1
1864
    MAXEXTENTS 2147483645
1865
    FREELISTS 1
1866
    FREELIST GROUPS 1
1867
    BUFFER_POOL DEFAULT
1868
  )
1869
;
1870
 
1871
CREATE TABLE DASH_BOARD
1872
(
1873
  PROJ_ID NUMBER NOT NULL,
1874
  RTAG_ID NUMBER NOT NULL,
1875
  LAST_BUILD_TIME DATE NOT NULL,
1876
  AUTOMATED_PACKAGES NUMBER NOT NULL,
1877
  TOTAL_PACKAGES NUMBER NOT NULL
1878
)
1879
  TABLESPACE "USERS"
1880
  LOGGING 
1881
  PCTFREE 10
1882
  PCTUSED 40
1883
  INITRANS 1
1884
  MAXTRANS 255
1885
  STORAGE
1886
  (
1887
    INITIAL 64K
1888
    MINEXTENTS 1
1889
    MAXEXTENTS 2147483645
1890
    FREELISTS 1
1891
    FREELIST GROUPS 1
1892
    BUFFER_POOL DEFAULT
1893
  )
1894
;
1895
 
1896
CREATE TABLE ABT_ACTION_LOG
1897
(
1898
  RCON_ID NUMBER NOT NULL,
1899
  ACTION_DATETIME DATE,
1900
  ACTION VARCHAR2(4000 BYTE)
1901
)
1902
  TABLESPACE "USERS"
1903
  LOGGING 
1904
  PCTFREE 10
1905
  PCTUSED 40
1906
  INITRANS 1
1907
  MAXTRANS 255
1908
  STORAGE
1909
  (
1910
    INITIAL 64K
1911
    MINEXTENTS 1
1912
    MAXEXTENTS 2147483645
1913
    FREELISTS 1
1914
    FREELIST GROUPS 1
1915
    BUFFER_POOL DEFAULT
1916
  )
1917
;
1918
 
1919
CREATE TABLE RUNTIME_DEPENDENCIES
1920
(
1921
  PV_ID NUMBER NOT NULL,
1922
  RTD_ID NUMBER,
1923
  RTD_COMMENTS VARCHAR2(2000 BYTE),
1924
  RTD_URL VARCHAR2(2000 BYTE),
1925
  MOD_DATE DATE NOT NULL,
1926
  MOD_USER NUMBER NOT NULL
1927
)
1928
  TABLESPACE "USERS"
1929
  LOGGING 
1930
  PCTFREE 10
1931
  PCTUSED 40
1932
  INITRANS 1
1933
  MAXTRANS 255
1934
  STORAGE
1935
  (
1936
    INITIAL 128K
1937
    MINEXTENTS 1
1938
    MAXEXTENTS 2147483645
1939
    FREELISTS 1
1940
    FREELIST GROUPS 1
1941
    BUFFER_POOL DEFAULT
1942
  )
1943
;
1944
 
1945
CREATE TABLE PACKAGE_VERSIONS
1946
(
1947
  PV_ID NUMBER NOT NULL,
1948
  PKG_ID NUMBER NOT NULL,
1949
  PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,
1950
  DLOCKED CHAR(1 BYTE) NOT NULL,
1951
  RELEASED_AT NUMBER,
1952
  MODIFIED_STAMP DATE,
1953
  MODIFIER_ID NUMBER NOT NULL,
1954
  CREATED_STAMP DATE,
1955
  CREATOR_ID NUMBER NOT NULL,
1956
  COMMENTS VARCHAR2(4000 BYTE),
1957
  V_MM VARCHAR2(50 BYTE),
1958
  V_NMM VARCHAR2(50 BYTE),
1959
  V_EXT VARCHAR2(50 BYTE),
1960
  PKG_LABEL VARCHAR2(60 BYTE),
1961
  SRC_PATH VARCHAR2(2000 BYTE),
1962
  PV_DESCRIPTION VARCHAR2(4000 BYTE),
1963
  OWNER_ID NUMBER NOT NULL,
1964
  PV_OVERVIEW VARCHAR2(4000 BYTE),
1965
  IS_PATCH CHAR(1 BYTE),
1966
  LAST_PV_ID NUMBER NOT NULL,
1967
  RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),
1968
  IS_DEPLOYABLE CHAR(1 BYTE),
1969
  IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),
1970
  IS_OBSOLETE CHAR(1 BYTE),
1971
  OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),
1972
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1973
  CHANGE_TYPE CHAR(1 BYTE),
1974
  LINK VARCHAR2(4000 BYTE),
1975
  PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),
1976
  BS_ID NUMBER,
1977
  IS_AUTOBUILDABLE CHAR(1 BYTE),
1978
  SBOM_PRIORITY CHAR(1 BYTE),
1979
  RIPPLE_FIELD CHAR(1 CHAR),
1980
  MAXIMUM_BUILD_TIME NUMBER,
1981
  ESTIMATED_COMPLETION_TIME DATE
1982
, CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY
1983
  (
1984
    PV_ID
1985
  )
1986
  ENABLE
1987
)
1988
  TABLESPACE "SYSTEM"
1989
  LOGGING 
1990
  PCTFREE 10
1991
  PCTUSED 40
1992
  INITRANS 1
1993
  MAXTRANS 255
1994
  STORAGE
1995
  (
1996
    INITIAL 192K
1997
    NEXT 64K
1998
    MINEXTENTS 1
1999
    MAXEXTENTS 2147483645
2000
    PCTINCREASE 0
2001
    FREELISTS 1
2002
    FREELIST GROUPS 1
2003
    BUFFER_POOL DEFAULT
2004
  )
2005
;
2006
 
2007
CREATE TABLE REPEAT_SCHEDULE
2008
(
2009
  RPT_ID NUMBER NOT NULL,
2010
  REPEAT CHAR(1 BYTE)
2011
, PRIMARY KEY
2012
  (
2013
    RPT_ID
2014
  )
2015
  ENABLE
2016
)
2017
  TABLESPACE "USERS"
2018
  LOGGING 
2019
  PCTFREE 10
2020
  PCTUSED 40
2021
  INITRANS 1
2022
  MAXTRANS 255
2023
  STORAGE
2024
  (
2025
    INITIAL 64K
2026
    MINEXTENTS 1
2027
    MAXEXTENTS 2147483645
2028
    FREELISTS 1
2029
    FREELIST GROUPS 1
2030
    BUFFER_POOL DEFAULT
2031
  )
2032
;
2033
 
2034
CREATE TABLE CODE_REVIEW_URL
2035
(
2036
  CR_ID NUMBER NOT NULL,
2037
  PV_ID NUMBER NOT NULL,
2038
  PROJ_ID NUMBER NOT NULL,
2039
  URL VARCHAR2(4000 BYTE) NOT NULL,
2040
  REASON VARCHAR2(4000 BYTE),
2041
  DATE_OF_REVIEW DATE NOT NULL,
2042
  LAST_MODIFIED DATE
2043
, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY
2044
  (
2045
    CR_ID
2046
  )
2047
  ENABLE
2048
)
2049
  TABLESPACE "USERS"
2050
  LOGGING 
2051
  PCTFREE 10
2052
  PCTUSED 40
2053
  INITRANS 1
2054
  MAXTRANS 255
2055
  STORAGE
2056
  (
2057
    INITIAL 64K
2058
    MINEXTENTS 1
2059
    MAXEXTENTS 2147483645
2060
    FREELISTS 1
2061
    FREELIST GROUPS 1
2062
    BUFFER_POOL DEFAULT
2063
  )
2064
;
2065
 
2066
CREATE TABLE DEF_ACTION_BUTTONS
2067
(
2068
  ABTN_ID NUMBER NOT NULL,
2069
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
2070
  TEXT VARCHAR2(50 BYTE),
2071
  ACTION_LINK VARCHAR2(4000 BYTE),
2072
  EVENT_HANDLER VARCHAR2(4000 BYTE),
2073
  IMG_ENABLED VARCHAR2(1000 BYTE),
2074
  IMG_DISABLED VARCHAR2(1000 BYTE),
2075
  HINT VARCHAR2(255 BYTE),
2076
  VISIBLE CHAR(1 BYTE) NOT NULL,
2077
  ACTIVE CHAR(1 BYTE) NOT NULL,
2078
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
2079
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
2080
  (
2081
    ABTN_ID
2082
  )
2083
  ENABLE
2084
)
2085
  TABLESPACE "USERS"
2086
  LOGGING 
2087
  PCTFREE 10
2088
  PCTUSED 40
2089
  INITRANS 1
2090
  MAXTRANS 255
2091
  STORAGE
2092
  (
2093
    INITIAL 64K
2094
    MINEXTENTS 1
2095
    MAXEXTENTS 2147483645
2096
    FREELISTS 1
2097
    FREELIST GROUPS 1
2098
    BUFFER_POOL DEFAULT
2099
  )
2100
;
2101
 
2102
CREATE TABLE CQ_ISSUES
2103
(
2104
  PV_ID NUMBER NOT NULL,
2105
  ISS_DB NUMBER NOT NULL,
2106
  ISS_ID NUMBER NOT NULL,
2107
  ISS_STATE NUMBER NOT NULL,
2108
  MOD_DATE DATE NOT NULL,
2109
  NOTES VARCHAR2(255 BYTE)
2110
)
2111
  TABLESPACE "SYSTEM"
2112
  LOGGING 
2113
  PCTFREE 10
2114
  PCTUSED 40
2115
  INITRANS 1
2116
  MAXTRANS 255
2117
  STORAGE
2118
  (
2119
    INITIAL 64K
2120
    NEXT 64K
2121
    MINEXTENTS 1
2122
    MAXEXTENTS 2147483645
2123
    PCTINCREASE 0
2124
    FREELISTS 1
2125
    FREELIST GROUPS 1
2126
    BUFFER_POOL DEFAULT
2127
  )
2128
;
2129
 
2130
ALTER TABLE PLANNED
2131
ADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE
2132
(
2133
  PV_ID,
2134
  RTAG_ID
2135
)
2136
 ENABLE
2137
;
2138
 
2139
ALTER TABLE PACKAGE_METRICS
2140
ADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE
2141
(
2142
  PV_ID
2143
)
2144
 ENABLE
2145
;
2146
 
2147
ALTER TABLE RELEASE_METRICS
2148
ADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE
2149
(
2150
  RTAG_ID
2151
)
2152
 ENABLE
2153
;
2154
 
2155
ALTER TABLE PACKAGE_BUILD_ENV
2156
ADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY
2157
(
2158
  BE_ID
2159
)
2160
REFERENCES BUILD_ENVIRONMENTS
2161
(
2162
BE_ID
2163
) ENABLE
2164
;
2165
 
2166
ALTER TABLE PACKAGE_BUILD_ENV
2167
ADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY
2168
(
2169
  PV_ID
2170
)
2171
REFERENCES PACKAGE_VERSIONS
2172
(
2173
PV_ID
2174
) ENABLE
2175
;
2176
 
2177
ALTER TABLE NOTIFICATION_HISTORY
2178
ADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY
2179
(
2180
  PV_ID
2181
)
2182
REFERENCES PACKAGE_VERSIONS
2183
(
2184
PV_ID
2185
) DISABLE
2186
;
2187
 
2188
ALTER TABLE NOTIFICATION_HISTORY
2189
ADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY
2190
(
2191
  RTAG_ID
2192
)
2193
REFERENCES RELEASE_TAGS
2194
(
2195
RTAG_ID
2196
) ENABLE
2197
;
2198
 
2199
ALTER TABLE IGNORE_WARNINGS
2200
ADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY
2201
(
2202
  RTAG_ID
2203
)
2204
REFERENCES RELEASE_TAGS
2205
(
2206
RTAG_ID
2207
) ENABLE
2208
;
2209
 
2210
ALTER TABLE IGNORE_WARNINGS
2211
ADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY
2212
(
2213
  DPV_ID
2214
)
2215
REFERENCES PACKAGE_VERSIONS
2216
(
2217
PV_ID
2218
) ENABLE
2219
;
2220
 
2221
ALTER TABLE IGNORE_WARNINGS
2222
ADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY
2223
(
2224
  PV_ID
2225
)
2226
REFERENCES PACKAGE_VERSIONS
2227
(
2228
PV_ID
2229
) ENABLE
2230
;
2231
 
2232
ALTER TABLE PACKAGE_DOCUMENTS
2233
ADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY
2234
(
2235
  PV_ID
2236
)
2237
REFERENCES PACKAGE_VERSIONS
2238
(
2239
PV_ID
2240
) ENABLE
2241
;
2242
 
2243
ALTER TABLE BUILD_STANDARDS_ADDENDUM
2244
ADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY
2245
(
2246
  BS_ID
2247
)
2248
REFERENCES BUILD_STANDARDS
2249
(
2250
BS_ID
2251
) ENABLE
2252
;
2253
 
2254
ALTER TABLE UNIT_TESTS
2255
ADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY
2256
(
2257
  TEST_TYPES_FK
2258
)
2259
REFERENCES TEST_TYPES
2260
(
2261
TEST_TYPE_ID
2262
) ENABLE
2263
;
2264
 
2265
ALTER TABLE UNIT_TESTS
2266
ADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY
2267
(
2268
  PV_ID
2269
)
2270
REFERENCES PACKAGE_VERSIONS
2271
(
2272
PV_ID
2273
) ENABLE
2274
;
2275
 
2276
ALTER TABLE RELEASE_COMPONENTS
2277
ADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY
2278
(
2279
  PV_ID
2280
)
2281
REFERENCES PACKAGE_VERSIONS
2282
(
2283
PV_ID
2284
) ENABLE
2285
;
2286
 
2287
ALTER TABLE BUILD_ORDER
2288
ADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY
2289
(
2290
  PV_ID
2291
)
2292
REFERENCES PACKAGE_VERSIONS
2293
(
2294
PV_ID
2295
) DISABLE
2296
;
2297
 
2298
ALTER TABLE BUILD_ORDER
2299
ADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY
2300
(
2301
  RTAG_ID
2302
)
2303
REFERENCES RELEASE_TAGS
2304
(
2305
RTAG_ID
2306
) ENABLE
2307
;
2308
 
2309
ALTER TABLE PLANNED
2310
ADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY
2311
(
2312
  PV_ID
2313
)
2314
REFERENCES PACKAGE_VERSIONS
2315
(
2316
PV_ID
2317
) ENABLE
2318
;
2319
 
2320
ALTER TABLE PLANNED
2321
ADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY
2322
(
2323
  RTAG_ID
2324
)
2325
REFERENCES RELEASE_TAGS
2326
(
2327
RTAG_ID
2328
) ENABLE
2329
;
2330
 
2331
ALTER TABLE PLANNED
2332
ADD CONSTRAINT REFVIEWS55 FOREIGN KEY
2333
(
2334
  VIEW_ID
2335
)
2336
REFERENCES VIEWS
2337
(
2338
VIEW_ID
2339
) ENABLE
2340
;
2341
 
2342
ALTER TABLE PROJECT_ACTION_LOG
2343
ADD FOREIGN KEY
2344
(
2345
  RTAG_ID
2346
)
2347
REFERENCES RELEASE_TAGS
2348
(
2349
RTAG_ID
2350
) DISABLE
2351
;
2352
 
2353
ALTER TABLE PROJECT_ACTION_LOG
2354
ADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY
2355
(
2356
  ACTTYPE_ID
2357
)
2358
REFERENCES ACTION_TYPE
2359
(
2360
ACTTYPE_ID
2361
) ENABLE
2362
;
2363
 
2364
ALTER TABLE PACKAGE_METRICS
2365
ADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY
2366
(
2367
  PV_ID
2368
)
2369
REFERENCES PACKAGE_VERSIONS
2370
(
2371
PV_ID
2372
) ENABLE
2373
;
2374
 
2375
ALTER TABLE RELEASE_LINKS
2376
ADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY
2377
(
2378
  REF_RTAG_ID
2379
)
2380
REFERENCES RELEASE_TAGS
2381
(
2382
RTAG_ID
2383
) ENABLE
2384
;
2385
 
2386
ALTER TABLE RELEASE_LINKS
2387
ADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY
2388
(
2389
  RTAG_ID
2390
)
2391
REFERENCES RELEASE_TAGS
2392
(
2393
RTAG_ID
2394
) ENABLE
2395
;
2396
 
2397
ALTER TABLE BUILD_ENV_DOCUMENTS
2398
ADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY
2399
(
2400
  BE_ID
2401
)
2402
REFERENCES BUILD_ENVIRONMENTS
2403
(
2404
BE_ID
2405
) ENABLE
2406
;
2407
 
2408
ALTER TABLE ACTION_LOG
2409
ADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY
2410
(
2411
  ACTTYPE_ID
2412
)
2413
REFERENCES ACTION_TYPE
2414
(
2415
ACTTYPE_ID
2416
) ENABLE
2417
;
2418
 
2419
ALTER TABLE ADDITIONAL_NOTES
2420
ADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY
2421
(
2422
  PV_ID
2423
)
2424
REFERENCES PACKAGE_VERSIONS
2425
(
2426
PV_ID
2427
) ENABLE
2428
;
2429
 
2430
ALTER TABLE VTREES_WORLD
2431
ADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY
2432
(
2433
  VTREE_ID
2434
)
2435
REFERENCES VTREES
2436
(
2437
VTREE_ID
2438
) ENABLE
2439
;
2440
 
2441
ALTER TABLE VTREES_WORLD
2442
ADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY
2443
(
2444
  WORLD_ID
2445
)
2446
REFERENCES WORLDS
2447
(
2448
WORLD_ID
2449
) ENABLE
2450
;
2451
 
2452
ALTER TABLE CODE_REVIEWS
2453
ADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY
2454
(
2455
  PV_ID
2456
)
2457
REFERENCES PACKAGE_VERSIONS
2458
(
2459
PV_ID
2460
) ENABLE
2461
;
2462
 
2463
ALTER TABLE PLANNED_VERSIONS
2464
ADD FOREIGN KEY
2465
(
2466
  PKG_ID
2467
)
2468
REFERENCES PACKAGES
2469
(
2470
PKG_ID
2471
) ENABLE
2472
;
2473
 
2474
ALTER TABLE DO_NOT_RIPPLE
2475
ADD FOREIGN KEY
2476
(
2477
  PV_ID
2478
)
2479
REFERENCES PACKAGE_VERSIONS
2480
(
2481
PV_ID
2482
) ENABLE
2483
;
2484
 
2485
ALTER TABLE DO_NOT_RIPPLE
2486
ADD FOREIGN KEY
2487
(
2488
  RTAG_ID
2489
)
2490
REFERENCES RELEASE_TAGS
2491
(
2492
RTAG_ID
2493
) ENABLE
2494
;
2495
 
2496
ALTER TABLE RELEASE_CONTENT
2497
ADD FOREIGN KEY
2498
(
2499
  PKG_ID
2500
)
2501
REFERENCES PACKAGES
2502
(
2503
PKG_ID
2504
) ENABLE
2505
;
2506
 
2507
ALTER TABLE RELEASE_CONTENT
2508
ADD FOREIGN KEY
2509
(
2510
  PRODUCT_STATE
2511
)
2512
REFERENCES PRODUCT_STATES
2513
(
2514
STATE_ID
2515
) ENABLE
2516
;
2517
 
2518
ALTER TABLE PACKAGE_PROCESSES
2519
ADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY
2520
(
2521
  PROC_ID
2522
)
2523
REFERENCES PROCESSES
2524
(
2525
PROC_ID
2526
) ENABLE
2527
;
2528
 
2529
ALTER TABLE PACKAGE_PROCESSES
2530
ADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY
2531
(
2532
  PV_ID
2533
)
2534
REFERENCES PACKAGE_VERSIONS
2535
(
2536
PV_ID
2537
) ENABLE
2538
;
2539
 
2540
ALTER TABLE ADVISORY_RIPPLE
2541
ADD FOREIGN KEY
2542
(
2543
  RTAG_ID
2544
)
2545
REFERENCES RELEASE_TAGS
2546
(
2547
RTAG_ID
2548
) ENABLE
2549
;
2550
 
2551
ALTER TABLE ADVISORY_RIPPLE
2552
ADD FOREIGN KEY
2553
(
2554
  PV_ID
2555
)
2556
REFERENCES PACKAGE_VERSIONS
2557
(
2558
PV_ID
2559
) ENABLE
2560
;
2561
 
2562
ALTER TABLE PACKAGE_PATCHES
2563
ADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY
2564
(
2565
  PATCH_ID
2566
)
2567
REFERENCES PACKAGE_VERSIONS
2568
(
2569
PV_ID
2570
) ENABLE
2571
;
2572
 
2573
ALTER TABLE PACKAGE_PATCHES
2574
ADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY
2575
(
2576
  PV_ID
2577
)
2578
REFERENCES PACKAGE_VERSIONS
2579
(
2580
PV_ID
2581
) ENABLE
2582
;
2583
 
2584
ALTER TABLE PACKAGE_INTEREST
2585
ADD FOREIGN KEY
2586
(
2587
  PROJ_ID
2588
)
2589
REFERENCES PROJECTS
2590
(
2591
PROJ_ID
2592
) ENABLE
2593
;
2594
 
2595
ALTER TABLE RELEASE_CONFIG
2596
ADD FOREIGN KEY
2597
(
2598
  RTAG_ID
2599
)
2600
REFERENCES RELEASE_TAGS
2601
(
2602
RTAG_ID
2603
) ENABLE
2604
;
2605
 
2606
ALTER TABLE RELEASE_CONFIG
2607
ADD FOREIGN KEY
2608
(
2609
  GBE_ID
2610
)
2611
REFERENCES GBE_MACHTYPE
2612
(
2613
GBE_ID
2614
) ENABLE
2615
;
2616
 
2617
ALTER TABLE RELEASE_METRICS
2618
ADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY
2619
(
2620
  RTAG_ID
2621
)
2622
REFERENCES RELEASE_TAGS
2623
(
2624
RTAG_ID
2625
) ENABLE
2626
;
2627
 
2628
ALTER TABLE AUTOBUILD_FAILURE
2629
ADD FOREIGN KEY
2630
(
2631
  VIEW_ID
2632
)
2633
REFERENCES VIEWS
2634
(
2635
VIEW_ID
2636
) ENABLE
2637
;
2638
 
2639
ALTER TABLE AUTOBUILD_FAILURE
2640
ADD FOREIGN KEY
2641
(
2642
  PROJ_ID
2643
)
2644
REFERENCES PROJECTS
2645
(
2646
PROJ_ID
2647
) ENABLE
2648
;
2649
 
2650
ALTER TABLE JIRA_ISSUES
2651
ADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY
2652
(
2653
  PV_ID
2654
)
2655
REFERENCES PACKAGE_VERSIONS
2656
(
2657
PV_ID
2658
) ENABLE
2659
;
2660
 
2661
ALTER TABLE WORK_IN_PROGRESS
2662
ADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY
2663
(
2664
  PV_ID
2665
)
2666
REFERENCES PACKAGE_VERSIONS
2667
(
2668
PV_ID
2669
) ENABLE
2670
;
2671
 
2672
ALTER TABLE WORK_IN_PROGRESS
2673
ADD CONSTRAINT REFVIEWS52 FOREIGN KEY
2674
(
2675
  VIEW_ID
2676
)
2677
REFERENCES VIEWS
2678
(
2679
VIEW_ID
2680
) ENABLE
2681
;
2682
 
2683
ALTER TABLE WORK_IN_PROGRESS
2684
ADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY
2685
(
2686
  RTAG_ID
2687
)
2688
REFERENCES RELEASE_TAGS
2689
(
2690
RTAG_ID
2691
) ENABLE
2692
;
2693
 
2694
ALTER TABLE RUN_LEVEL
2695
ADD FOREIGN KEY
2696
(
2697
  RCON_ID
2698
)
2699
REFERENCES RELEASE_CONFIG
2700
(
2701
RCON_ID
2702
) ENABLE
2703
;
2704
 
2705
ALTER TABLE RUN_LEVEL
2706
ADD FOREIGN KEY
2707
(
2708
  CURRENT_PKG_ID_BEING_BUILT
2709
)
2710
REFERENCES PACKAGES
2711
(
2712
PKG_ID
2713
) ENABLE
2714
;
2715
 
2716
ALTER TABLE PRODUCT_COMPONENTS
2717
ADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY
2718
(
2719
  PV_ID
2720
)
2721
REFERENCES PACKAGE_VERSIONS
2722
(
2723
PV_ID
2724
) ENABLE
2725
;
2726
 
2727
ALTER TABLE PACKAGE_BUILD_INFO
2728
ADD FOREIGN KEY
2729
(
2730
  PV_ID
2731
)
2732
REFERENCES PACKAGE_VERSIONS
2733
(
2734
PV_ID
2735
) ENABLE
2736
;
2737
 
2738
ALTER TABLE PACKAGE_BUILD_INFO
2739
ADD FOREIGN KEY
2740
(
2741
  BM_ID
2742
)
2743
REFERENCES BUILD_MACHINES
2744
(
2745
BM_ID
2746
) ENABLE
2747
;
2748
 
2749
ALTER TABLE MEMBERS_GROUP
2750
ADD FOREIGN KEY
2751
(
2752
  GROUP_EMAIL_ID
2753
)
2754
REFERENCES AUTOBUILD_FAILURE
2755
(
2756
GROUP_EMAIL_ID
2757
) ENABLE
2758
;
2759
 
2760
ALTER TABLE DAEMON_ACTION_LOG
2761
ADD FOREIGN KEY
2762
(
2763
  ACTTYPE_ID
2764
)
2765
REFERENCES ACTION_TYPE
2766
(
2767
ACTTYPE_ID
2768
) ENABLE
2769
;
2770
 
2771
ALTER TABLE DAEMON_ACTION_LOG
2772
ADD FOREIGN KEY
2773
(
2774
  RCON_ID
2775
)
2776
REFERENCES RELEASE_CONFIG
2777
(
2778
RCON_ID
2779
) ENABLE
2780
;
2781
 
2782
ALTER TABLE DASH_BOARD
2783
ADD FOREIGN KEY
2784
(
2785
  PROJ_ID
2786
)
2787
REFERENCES PROJECTS
2788
(
2789
PROJ_ID
2790
) ENABLE
2791
;
2792
 
2793
ALTER TABLE DASH_BOARD
2794
ADD FOREIGN KEY
2795
(
2796
  RTAG_ID
2797
)
2798
REFERENCES RELEASE_TAGS
2799
(
2800
RTAG_ID
2801
) ENABLE
2802
;
2803
 
2804
ALTER TABLE ABT_ACTION_LOG
2805
ADD FOREIGN KEY
2806
(
2807
  RCON_ID
2808
)
2809
REFERENCES RELEASE_CONFIG
2810
(
2811
RCON_ID
2812
) ENABLE
2813
;
2814
 
2815
ALTER TABLE RUNTIME_DEPENDENCIES
2816
ADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY
2817
(
2818
  RTD_ID
2819
)
2820
REFERENCES PACKAGE_VERSIONS
2821
(
2822
PV_ID
2823
) ENABLE
2824
;
2825
 
2826
ALTER TABLE RUNTIME_DEPENDENCIES
2827
ADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY
2828
(
2829
  PV_ID
2830
)
2831
REFERENCES PACKAGE_VERSIONS
2832
(
2833
PV_ID
2834
) ENABLE
2835
;
2836
 
2837
ALTER TABLE PACKAGE_VERSIONS
2838
ADD FOREIGN KEY
2839
(
2840
  BS_ID
2841
)
2842
REFERENCES BUILD_STANDARDS
2843
(
2844
BS_ID
2845
) ENABLE
2846
;
2847
 
2848
ALTER TABLE CODE_REVIEW_URL
2849
ADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY
2850
(
2851
  PROJ_ID
2852
)
2853
REFERENCES PROJECTS
2854
(
2855
PROJ_ID
2856
) ENABLE
2857
;
2858
 
2859
ALTER TABLE CODE_REVIEW_URL
2860
ADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY
2861
(
2862
  PV_ID
2863
)
2864
REFERENCES PACKAGE_VERSIONS
2865
(
2866
PV_ID
2867
) ENABLE
2868
;
2869
 
2870
ALTER TABLE CQ_ISSUES
2871
ADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY
2872
(
2873
  PV_ID
2874
)
2875
REFERENCES PACKAGE_VERSIONS
2876
(
2877
PV_ID
2878
) ENABLE
2879
;
2880
 
2881
ALTER TABLE MICROSOFTDTPROPERTIES
2882
ADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK
2883
("PROPERTY" IS NOT NULL)
2884
 ENABLE
2885
;
2886
 
2887
ALTER TABLE MICROSOFTDTPROPERTIES
2888
ADD CONSTRAINT MICROSOFT_NN_ID CHECK
2889
("ID" IS NOT NULL)
2890
 ENABLE
2891
;
2892
 
2893
ALTER TABLE MICROSOFTDTPROPERTIES
2894
ADD CONSTRAINT MICROSOFT_NN_VERSION CHECK
2895
("VERSION" IS NOT NULL)
2896
 ENABLE
2897
;
2898
 
2899
ALTER TABLE RIPPLE_FIELD_STATES
2900
ADD CHECK
2901
("STATE_ACRONYM" IS NOT NULL)
2902
 DISABLE
2903
;
2904
 
2905
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;
2906
 
2907
CREATE OR REPLACE VIEW ENVIRONMENT_VIEW AS SELECT 2 AS ENV_AREA,
2908
    rc.PV_ID,
2909
    rc.RTAG_ID,
2910
    rc.BASE_VIEW_ID AS VIEW_ID,
2911
    rc.PKG_STATE,
2912
 rc.DEPRECATED_STATE,
2913
    rc.INSERTOR_ID,
2914
    rc.INSERT_STAMP
2915
  FROM RELEASE_CONTENT rc
2916
UNION
2917
SELECT 0 AS ENV_AREA,
2918
    wip.PV_ID,
2919
    wip.RTAG_ID,
2920
    wip.VIEW_ID,
2921
    NULL AS PKG_STATE,
2922
 NULL AS DEPRECATED_STATE,
2923
    NULL AS INSERTOR_ID,
2924
    NULL AS INSERT_STAMP
2925
  FROM WORK_IN_PROGRESS wip 
2926
UNION 
2927
SELECT 1 AS ENV_AREA,
2928
    pl.PV_ID,
2929
    pl.RTAG_ID,
2930
    pl.VIEW_ID,
2931
    NULL AS PKG_STATE,
2932
 NULL AS DEPRECATED_STATE,
2933
    NULL AS INSERTOR_ID,
2934
    NULL AS INSERT_STAMP
2935
  FROM PLANNED pl;
2936
 
2937
CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC)  TABLESPACE "USERS"
2938
  LOGGING 
2939
  PCTFREE 10
2940
  INITRANS 2
2941
  MAXTRANS 255
2942
  STORAGE
2943
  (
2944
    INITIAL 128K
2945
    MINEXTENTS 1
2946
    MAXEXTENTS 2147483645
2947
    FREELISTS 1
2948
    FREELIST GROUPS 1
2949
    BUFFER_POOL DEFAULT
2950
  )
2951
;
2952
 
2953
CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
2954
  NOLOGGING 
2955
  PCTFREE 10
2956
  INITRANS 2
2957
  MAXTRANS 255
2958
  STORAGE
2959
  (
2960
    INITIAL 128K
2961
    MINEXTENTS 1
2962
    MAXEXTENTS 2147483645
2963
    FREELISTS 1
2964
    FREELIST GROUPS 1
2965
    BUFFER_POOL DEFAULT
2966
  )
2967
;
2968
 
2969
CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC)  TABLESPACE "USERS"
2970
  NOLOGGING 
2971
  PCTFREE 10
2972
  INITRANS 2
2973
  MAXTRANS 255
2974
  STORAGE
2975
  (
2976
    INITIAL 128K
2977
    MINEXTENTS 1
2978
    MAXEXTENTS 2147483645
2979
    FREELISTS 1
2980
    FREELIST GROUPS 1
2981
    BUFFER_POOL DEFAULT
2982
  )
2983
;
2984
 
2985
CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC)  TABLESPACE "USERS"
2986
  NOLOGGING 
2987
  PCTFREE 10
2988
  INITRANS 2
2989
  MAXTRANS 255
2990
  STORAGE
2991
  (
2992
    INITIAL 128K
2993
    MINEXTENTS 1
2994
    MAXEXTENTS 2147483645
2995
    FREELISTS 1
2996
    FREELIST GROUPS 1
2997
    BUFFER_POOL DEFAULT
2998
  )
2999
;
3000
 
3001
CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC)  TABLESPACE "USERS"
3002
  LOGGING 
3003
  PCTFREE 10
3004
  INITRANS 2
3005
  MAXTRANS 255
3006
  STORAGE
3007
  (
3008
    INITIAL 64K
3009
    MINEXTENTS 1
3010
    MAXEXTENTS 2147483645
3011
    FREELISTS 1
3012
    FREELIST GROUPS 1
3013
    BUFFER_POOL DEFAULT
3014
  )
3015
;
3016
 
3017
CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3018
  LOGGING 
3019
  PCTFREE 10
3020
  INITRANS 2
3021
  MAXTRANS 255
3022
  STORAGE
3023
  (
3024
    INITIAL 64K
3025
    MINEXTENTS 1
3026
    MAXEXTENTS 2147483645
3027
    FREELISTS 1
3028
    FREELIST GROUPS 1
3029
    BUFFER_POOL DEFAULT
3030
  )
3031
;
3032
 
3033
CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC)  TABLESPACE "USERS"
3034
  LOGGING 
3035
  PCTFREE 10
3036
  INITRANS 2
3037
  MAXTRANS 255
3038
  STORAGE
3039
  (
3040
    INITIAL 64K
3041
    MINEXTENTS 1
3042
    MAXEXTENTS 2147483645
3043
    FREELISTS 1
3044
    FREELIST GROUPS 1
3045
    BUFFER_POOL DEFAULT
3046
  )
3047
;
3048
 
3049
CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC)  TABLESPACE "USERS"
3050
  LOGGING 
3051
  PCTFREE 10
3052
  INITRANS 2
3053
  MAXTRANS 255
3054
  STORAGE
3055
  (
3056
    INITIAL 128K
3057
    MINEXTENTS 1
3058
    MAXEXTENTS 2147483645
3059
    FREELISTS 1
3060
    FREELIST GROUPS 1
3061
    BUFFER_POOL DEFAULT
3062
  )
3063
;
3064
 
3065
CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
3066
  LOGGING 
3067
  PCTFREE 10
3068
  INITRANS 2
3069
  MAXTRANS 255
3070
  STORAGE
3071
  (
3072
    INITIAL 128K
3073
    MINEXTENTS 1
3074
    MAXEXTENTS 2147483645
3075
    FREELISTS 1
3076
    FREELIST GROUPS 1
3077
    BUFFER_POOL DEFAULT
3078
  )
3079
;
3080
 
3081
CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC)  TABLESPACE "USERS"
3082
  LOGGING 
3083
  PCTFREE 10
3084
  INITRANS 2
3085
  MAXTRANS 255
3086
  STORAGE
3087
  (
3088
    INITIAL 128K
3089
    MINEXTENTS 1
3090
    MAXEXTENTS 2147483645
3091
    FREELISTS 1
3092
    FREELIST GROUPS 1
3093
    BUFFER_POOL DEFAULT
3094
  )
3095
;
3096
 
3097
CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3098
  LOGGING 
3099
  PCTFREE 10
3100
  INITRANS 2
3101
  MAXTRANS 255
3102
  STORAGE
3103
  (
3104
    INITIAL 128K
3105
    MINEXTENTS 1
3106
    MAXEXTENTS 2147483645
3107
    FREELISTS 1
3108
    FREELIST GROUPS 1
3109
    BUFFER_POOL DEFAULT
3110
  )
3111
;
3112
 
3113
CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3114
  LOGGING 
3115
  PCTFREE 10
3116
  INITRANS 2
3117
  MAXTRANS 255
3118
  STORAGE
3119
  (
3120
    INITIAL 128K
3121
    MINEXTENTS 1
3122
    MAXEXTENTS 2147483645
3123
    FREELISTS 1
3124
    FREELIST GROUPS 1
3125
    BUFFER_POOL DEFAULT
3126
  )
3127
;
3128
 
3129
CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC)  TABLESPACE "USERS"
3130
  LOGGING 
3131
  PCTFREE 10
3132
  INITRANS 2
3133
  MAXTRANS 255
3134
  STORAGE
3135
  (
3136
    INITIAL 64K
3137
    MINEXTENTS 1
3138
    MAXEXTENTS 2147483645
3139
    FREELISTS 1
3140
    FREELIST GROUPS 1
3141
    BUFFER_POOL DEFAULT
3142
  )
3143
;
3144
 
3145
CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC)  TABLESPACE "USERS"
3146
  LOGGING 
3147
  PCTFREE 10
3148
  INITRANS 2
3149
  MAXTRANS 255
3150
  STORAGE
3151
  (
3152
    INITIAL 128K
3153
    MINEXTENTS 1
3154
    MAXEXTENTS 2147483645
3155
    FREELISTS 1
3156
    FREELIST GROUPS 1
3157
    BUFFER_POOL DEFAULT
3158
  )
3159
;
3160
 
3161
CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC)  TABLESPACE "USERS"
3162
  LOGGING 
3163
  PCTFREE 10
3164
  INITRANS 2
3165
  MAXTRANS 255
3166
  STORAGE
3167
  (
3168
    INITIAL 128K
3169
    MINEXTENTS 1
3170
    MAXEXTENTS 2147483645
3171
    FREELISTS 1
3172
    FREELIST GROUPS 1
3173
    BUFFER_POOL DEFAULT
3174
  )
3175
;
3176
 
3177
CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3178
  LOGGING 
3179
  PCTFREE 10
3180
  INITRANS 2
3181
  MAXTRANS 255
3182
  STORAGE
3183
  (
3184
    INITIAL 128K
3185
    MINEXTENTS 1
3186
    MAXEXTENTS 2147483645
3187
    FREELISTS 1
3188
    FREELIST GROUPS 1
3189
    BUFFER_POOL DEFAULT
3190
  )
3191
;
3192
 
3193
CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC)  TABLESPACE "USERS"
3194
  LOGGING 
3195
  PCTFREE 10
3196
  INITRANS 2
3197
  MAXTRANS 255
3198
  STORAGE
3199
  (
3200
    INITIAL 128K
3201
    MINEXTENTS 1
3202
    MAXEXTENTS 2147483645
3203
    FREELISTS 1
3204
    FREELIST GROUPS 1
3205
    BUFFER_POOL DEFAULT
3206
  )
3207
;
3208
 
3209
CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3210
  LOGGING 
3211
  PCTFREE 10
3212
  INITRANS 2
3213
  MAXTRANS 255
3214
  STORAGE
3215
  (
3216
    INITIAL 64K
3217
    MINEXTENTS 1
3218
    MAXEXTENTS 2147483645
3219
    FREELISTS 1
3220
    FREELIST GROUPS 1
3221
    BUFFER_POOL DEFAULT
3222
  )
3223
;
3224
 
3225
CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3226
  LOGGING 
3227
  PCTFREE 10
3228
  INITRANS 2
3229
  MAXTRANS 255
3230
  STORAGE
3231
  (
3232
    INITIAL 64K
3233
    MINEXTENTS 1
3234
    MAXEXTENTS 2147483645
3235
    FREELISTS 1
3236
    FREELIST GROUPS 1
3237
    BUFFER_POOL DEFAULT
3238
  )
3239
;
3240
 
3241
CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC)  TABLESPACE "USERS"
3242
  LOGGING 
3243
  PCTFREE 10
3244
  INITRANS 2
3245
  MAXTRANS 255
3246
  STORAGE
3247
  (
3248
    INITIAL 128K
3249
    MINEXTENTS 1
3250
    MAXEXTENTS 2147483645
3251
    FREELISTS 1
3252
    FREELIST GROUPS 1
3253
    BUFFER_POOL DEFAULT
3254
  )
3255
;
3256
 
3257
CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC)  TABLESPACE "USERS"
3258
  LOGGING 
3259
  PCTFREE 10
3260
  INITRANS 2
3261
  MAXTRANS 255
3262
  STORAGE
3263
  (
3264
    INITIAL 64K
3265
    MINEXTENTS 1
3266
    MAXEXTENTS 2147483645
3267
    FREELISTS 1
3268
    FREELIST GROUPS 1
3269
    BUFFER_POOL DEFAULT
3270
  )
3271
;
3272
 
3273
CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3274
  LOGGING 
3275
  PCTFREE 10
3276
  INITRANS 2
3277
  MAXTRANS 255
3278
  STORAGE
3279
  (
3280
    INITIAL 64K
3281
    MINEXTENTS 1
3282
    MAXEXTENTS 2147483645
3283
    FREELISTS 1
3284
    FREELIST GROUPS 1
3285
    BUFFER_POOL DEFAULT
3286
  )
3287
;
3288
 
3289
CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3290
  LOGGING 
3291
  PCTFREE 10
3292
  INITRANS 2
3293
  MAXTRANS 255
3294
  STORAGE
3295
  (
3296
    INITIAL 64K
3297
    MINEXTENTS 1
3298
    MAXEXTENTS 2147483645
3299
    FREELISTS 1
3300
    FREELIST GROUPS 1
3301
    BUFFER_POOL DEFAULT
3302
  )
3303
;
3304
 
3305
CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC)  TABLESPACE "USERS"
3306
  LOGGING 
3307
  PCTFREE 10
3308
  INITRANS 2
3309
  MAXTRANS 255
3310
  STORAGE
3311
  (
3312
    INITIAL 64K
3313
    MINEXTENTS 1
3314
    MAXEXTENTS 2147483645
3315
    FREELISTS 1
3316
    FREELIST GROUPS 1
3317
    BUFFER_POOL DEFAULT
3318
  )
3319
;
3320
 
3321
CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC)  TABLESPACE "SYSTEM"
3322
  LOGGING 
3323
  PCTFREE 10
3324
  INITRANS 2
3325
  MAXTRANS 255
3326
  STORAGE
3327
  (
3328
    INITIAL 64K
3329
    NEXT 64K
3330
    MINEXTENTS 1
3331
    MAXEXTENTS 2147483645
3332
    PCTINCREASE 0
3333
    FREELISTS 1
3334
    FREELIST GROUPS 1
3335
    BUFFER_POOL DEFAULT
3336
  )
3337
;
3338
 
3339
CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC)  TABLESPACE "SYSTEM"
3340
  LOGGING 
3341
  PCTFREE 10
3342
  INITRANS 2
3343
  MAXTRANS 255
3344
  STORAGE
3345
  (
3346
    INITIAL 64K
3347
    NEXT 64K
3348
    MINEXTENTS 1
3349
    MAXEXTENTS 2147483645
3350
    PCTINCREASE 0
3351
    FREELISTS 1
3352
    FREELIST GROUPS 1
3353
    BUFFER_POOL DEFAULT
3354
  )
3355
;
3356
 
3357
CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC)  TABLESPACE "USERS"
3358
  LOGGING 
3359
  PCTFREE 10
3360
  INITRANS 2
3361
  MAXTRANS 255
3362
  STORAGE
3363
  (
3364
    INITIAL 64K
3365
    MINEXTENTS 1
3366
    MAXEXTENTS 2147483645
3367
    FREELISTS 1
3368
    FREELIST GROUPS 1
3369
    BUFFER_POOL DEFAULT
3370
  )
3371
;
3372
 
3373
CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC)  TABLESPACE "USERS"
3374
  LOGGING 
3375
  PCTFREE 10
3376
  INITRANS 2
3377
  MAXTRANS 255
3378
  STORAGE
3379
  (
3380
    INITIAL 64K
3381
    MINEXTENTS 1
3382
    MAXEXTENTS 2147483645
3383
    FREELISTS 1
3384
    FREELIST GROUPS 1
3385
    BUFFER_POOL DEFAULT
3386
  )
3387
;
3388
 
3389
CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC)  TABLESPACE "USERS"
3390
  LOGGING 
3391
  PCTFREE 10
3392
  INITRANS 2
3393
  MAXTRANS 255
3394
  STORAGE
3395
  (
3396
    INITIAL 64K
3397
    MINEXTENTS 1
3398
    MAXEXTENTS 2147483645
3399
    FREELISTS 1
3400
    FREELIST GROUPS 1
3401
    BUFFER_POOL DEFAULT
3402
  )
3403
;
3404
 
3405
CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3406
  LOGGING 
3407
  PCTFREE 10
3408
  INITRANS 2
3409
  MAXTRANS 255
3410
  STORAGE
3411
  (
3412
    INITIAL 128K
3413
    MINEXTENTS 1
3414
    MAXEXTENTS 2147483645
3415
    FREELISTS 1
3416
    FREELIST GROUPS 1
3417
    BUFFER_POOL DEFAULT
3418
  )
3419
;
3420
 
3421
CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3422
  LOGGING 
3423
  PCTFREE 10
3424
  INITRANS 2
3425
  MAXTRANS 255
3426
  STORAGE
3427
  (
3428
    INITIAL 128K
3429
    MINEXTENTS 1
3430
    MAXEXTENTS 2147483645
3431
    FREELISTS 1
3432
    FREELIST GROUPS 1
3433
    BUFFER_POOL DEFAULT
3434
  )
3435
;
3436
 
3437
CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC)  TABLESPACE "USERS"
3438
  LOGGING 
3439
  PCTFREE 10
3440
  INITRANS 2
3441
  MAXTRANS 255
3442
  STORAGE
3443
  (
3444
    INITIAL 128K
3445
    MINEXTENTS 1
3446
    MAXEXTENTS 2147483645
3447
    FREELISTS 1
3448
    FREELIST GROUPS 1
3449
    BUFFER_POOL DEFAULT
3450
  )
3451
;
3452
 
3453
CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC)  TABLESPACE "SYSTEM"
3454
  LOGGING 
3455
  PCTFREE 10
3456
  INITRANS 2
3457
  MAXTRANS 255
3458
  STORAGE
3459
  (
3460
    INITIAL 64K
3461
    NEXT 64K
3462
    MINEXTENTS 1
3463
    MAXEXTENTS 2147483645
3464
    PCTINCREASE 0
3465
    FREELISTS 1
3466
    FREELIST GROUPS 1
3467
    BUFFER_POOL DEFAULT
3468
  )
3469
;
3470
 
3471
CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC)  TABLESPACE "USERS"
3472
  LOGGING 
3473
  PCTFREE 10
3474
  INITRANS 2
3475
  MAXTRANS 255
3476
  STORAGE
3477
  (
3478
    INITIAL 128K
3479
    MINEXTENTS 1
3480
    MAXEXTENTS 2147483645
3481
    FREELISTS 1
3482
    FREELIST GROUPS 1
3483
    BUFFER_POOL DEFAULT
3484
  )
3485
;
3486
 
3487
CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC)  TABLESPACE "USERS"
3488
  LOGGING 
3489
  PCTFREE 10
3490
  INITRANS 2
3491
  MAXTRANS 255
3492
  STORAGE
3493
  (
3494
    INITIAL 128K
3495
    MINEXTENTS 1
3496
    MAXEXTENTS 2147483645
3497
    FREELISTS 1
3498
    FREELIST GROUPS 1
3499
    BUFFER_POOL DEFAULT
3500
  )
3501
;
3502
 
3503
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "SYSTEM"
3504
  LOGGING 
3505
  PCTFREE 10
3506
  INITRANS 2
3507
  MAXTRANS 255
3508
  STORAGE
3509
  (
3510
    INITIAL 64K
3511
    NEXT 64K
3512
    MINEXTENTS 1
3513
    MAXEXTENTS 2147483645
3514
    PCTINCREASE 0
3515
    FREELISTS 1
3516
    FREELIST GROUPS 1
3517
    BUFFER_POOL DEFAULT
3518
  )
3519
;
3520
 
3521
CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID ASC)  TABLESPACE "USERS"
3522
  LOGGING 
3523
  PCTFREE 10
3524
  INITRANS 2
3525
  MAXTRANS 255
3526
  STORAGE
3527
  (
3528
    INITIAL 128K
3529
    MINEXTENTS 1
3530
    MAXEXTENTS 2147483645
3531
    FREELISTS 1
3532
    FREELIST GROUPS 1
3533
    BUFFER_POOL DEFAULT
3534
  )
3535
;
3536
 
3537
CREATE UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC)  TABLESPACE "USERS"
3538
  LOGGING 
3539
  PCTFREE 10
3540
  INITRANS 2
3541
  MAXTRANS 255
3542
  STORAGE
3543
  (
3544
    INITIAL 128K
3545
    MINEXTENTS 1
3546
    MAXEXTENTS 2147483645
3547
    FREELISTS 1
3548
    FREELIST GROUPS 1
3549
    BUFFER_POOL DEFAULT
3550
  )
3551
;
3552
 
3553
CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
3554
  LOGGING 
3555
  PCTFREE 10
3556
  INITRANS 2
3557
  MAXTRANS 255
3558
  STORAGE
3559
  (
3560
    INITIAL 128K
3561
    MINEXTENTS 1
3562
    MAXEXTENTS 2147483645
3563
    FREELISTS 1
3564
    FREELIST GROUPS 1
3565
    BUFFER_POOL DEFAULT
3566
  )
3567
;
3568
 
3569
CREATE INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_ID ASC)  TABLESPACE "USERS"
3570
  NOLOGGING 
3571
  PCTFREE 10
3572
  INITRANS 2
3573
  MAXTRANS 255
3574
  STORAGE
3575
  (
3576
    INITIAL 128K
3577
    MINEXTENTS 1
3578
    MAXEXTENTS 2147483645
3579
    FREELISTS 1
3580
    FREELIST GROUPS 1
3581
    BUFFER_POOL DEFAULT
3582
  )
3583
;
3584
 
3585
CREATE INDEX INX_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC)  TABLESPACE "USERS"
3586
  NOLOGGING 
3587
  PCTFREE 10
3588
  INITRANS 2
3589
  MAXTRANS 255
3590
  STORAGE
3591
  (
3592
    INITIAL 128K
3593
    MINEXTENTS 1
3594
    MAXEXTENTS 2147483645
3595
    FREELISTS 1
3596
    FREELIST GROUPS 1
3597
    BUFFER_POOL DEFAULT
3598
  )
3599
;
3600
 
3601
CREATE UNIQUE INDEX UNQ_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3602
  NOLOGGING 
3603
  PCTFREE 10
3604
  INITRANS 2
3605
  MAXTRANS 255
3606
  STORAGE
3607
  (
3608
    INITIAL 128K
3609
    MINEXTENTS 1
3610
    MAXEXTENTS 2147483645
3611
    FREELISTS 1
3612
    FREELIST GROUPS 1
3613
    BUFFER_POOL DEFAULT
3614
  )
3615
;
3616
 
3617
CREATE INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC)  TABLESPACE "USERS"
3618
  LOGGING 
3619
  PCTFREE 10
3620
  INITRANS 2
3621
  MAXTRANS 255
3622
  STORAGE
3623
  (
3624
    INITIAL 128K
3625
    MINEXTENTS 1
3626
    MAXEXTENTS 2147483645
3627
    FREELISTS 1
3628
    FREELIST GROUPS 1
3629
    BUFFER_POOL DEFAULT
3630
  )
3631
;
3632
 
3633
CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC)  TABLESPACE "USERS"
3634
  NOLOGGING 
3635
  PCTFREE 10
3636
  INITRANS 2
3637
  MAXTRANS 255
3638
  STORAGE
3639
  (
3640
    INITIAL 128K
3641
    MINEXTENTS 1
3642
    MAXEXTENTS 2147483645
3643
    FREELISTS 1
3644
    FREELIST GROUPS 1
3645
    BUFFER_POOL DEFAULT
3646
  )
3647
;
3648
 
3649
CREATE UNIQUE INDEX UNQ_PLATFORM ON PLATFORMS (NAME ASC)  TABLESPACE "USERS"
3650
  LOGGING 
3651
  PCTFREE 10
3652
  INITRANS 2
3653
  MAXTRANS 255
3654
  STORAGE
3655
  (
3656
    INITIAL 64K
3657
    MINEXTENTS 1
3658
    MAXEXTENTS 2147483645
3659
    FREELISTS 1
3660
    FREELIST GROUPS 1
3661
    BUFFER_POOL DEFAULT
3662
  )
3663
;
3664
 
3665
CREATE UNIQUE INDEX UNQ_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC)  TABLESPACE "SYSTEM"
3666
  LOGGING 
3667
  PCTFREE 10
3668
  INITRANS 2
3669
  MAXTRANS 255
3670
  STORAGE
3671
  (
3672
    INITIAL 64K
3673
    NEXT 64K
3674
    MINEXTENTS 1
3675
    MAXEXTENTS 2147483645
3676
    PCTINCREASE 0
3677
    FREELISTS 1
3678
    FREELIST GROUPS 1
3679
    BUFFER_POOL DEFAULT
3680
  )
3681
;
3682
 
3683
CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3684
  LOGGING 
3685
  PCTFREE 10
3686
  INITRANS 2
3687
  MAXTRANS 255
3688
  STORAGE
3689
  (
3690
    INITIAL 64K
3691
    MINEXTENTS 1
3692
    MAXEXTENTS 2147483645
3693
    FREELISTS 1
3694
    FREELIST GROUPS 1
3695
    BUFFER_POOL DEFAULT
3696
  )
3697
;
3698
 
3699
CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC)  TABLESPACE "USERS"
3700
  LOGGING 
3701
  PCTFREE 10
3702
  INITRANS 2
3703
  MAXTRANS 255
3704
  STORAGE
3705
  (
3706
    INITIAL 128K
3707
    MINEXTENTS 1
3708
    MAXEXTENTS 2147483645
3709
    FREELISTS 1
3710
    FREELIST GROUPS 1
3711
    BUFFER_POOL DEFAULT
3712
  )
3713
;
3714
 
3715
CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC)  TABLESPACE "USERS"
3716
  NOLOGGING 
3717
  PCTFREE 10
3718
  INITRANS 2
3719
  MAXTRANS 255
3720
  STORAGE
3721
  (
3722
    INITIAL 256K
3723
    MINEXTENTS 1
3724
    MAXEXTENTS 2147483645
3725
    FREELISTS 1
3726
    FREELIST GROUPS 1
3727
    BUFFER_POOL DEFAULT
3728
  )
3729
;
3730
 
3731
CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC)  TABLESPACE "USERS"
3732
  NOLOGGING 
3733
  PCTFREE 10
3734
  INITRANS 2
3735
  MAXTRANS 255
3736
  STORAGE
3737
  (
3738
    INITIAL 384K
3739
    MINEXTENTS 1
3740
    MAXEXTENTS 2147483645
3741
    FREELISTS 1
3742
    FREELIST GROUPS 1
3743
    BUFFER_POOL DEFAULT
3744
  )
3745
;
3746
 
3747
CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC)  TABLESPACE "USERS"
3748
  NOLOGGING 
3749
  PCTFREE 10
3750
  INITRANS 2
3751
  MAXTRANS 255
3752
  STORAGE
3753
  (
3754
    INITIAL 256K
3755
    MINEXTENTS 1
3756
    MAXEXTENTS 2147483645
3757
    FREELISTS 1
3758
    FREELIST GROUPS 1
3759
    BUFFER_POOL DEFAULT
3760
  )
3761
;
3762
 
3763
CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC)  TABLESPACE "USERS"
3764
  NOLOGGING 
3765
  PCTFREE 10
3766
  INITRANS 2
3767
  MAXTRANS 255
3768
  STORAGE
3769
  (
3770
    INITIAL 384K
3771
    MINEXTENTS 1
3772
    MAXEXTENTS 2147483645
3773
    FREELISTS 1
3774
    FREELIST GROUPS 1
3775
    BUFFER_POOL DEFAULT
3776
  )
3777
;
3778
 
3779
CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC)  TABLESPACE "SYSTEM"
3780
  LOGGING 
3781
  PCTFREE 10
3782
  INITRANS 2
3783
  MAXTRANS 255
3784
  STORAGE
3785
  (
3786
    INITIAL 384K
3787
    NEXT 64K
3788
    MINEXTENTS 1
3789
    MAXEXTENTS 2147483645
3790
    PCTINCREASE 0
3791
    FREELISTS 1
3792
    FREELIST GROUPS 1
3793
    BUFFER_POOL DEFAULT
3794
  )
3795
;
3796
 
3797
CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3798
  LOGGING 
3799
  PCTFREE 10
3800
  INITRANS 2
3801
  MAXTRANS 255
3802
  STORAGE
3803
  (
3804
    INITIAL 64K
3805
    MINEXTENTS 1
3806
    MAXEXTENTS 2147483645
3807
    FREELISTS 1
3808
    FREELIST GROUPS 1
3809
    BUFFER_POOL DEFAULT
3810
  )
3811
;
3812
 
3813
CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3814
  LOGGING 
3815
  PCTFREE 10
3816
  INITRANS 2
3817
  MAXTRANS 255
3818
  STORAGE
3819
  (
3820
    INITIAL 64K
3821
    MINEXTENTS 1
3822
    MAXEXTENTS 2147483645
3823
    FREELISTS 1
3824
    FREELIST GROUPS 1
3825
    BUFFER_POOL DEFAULT
3826
  )
3827
;
3828
 
3829
CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC)  TABLESPACE "SYSTEM"
3830
  LOGGING 
3831
  PCTFREE 10
3832
  INITRANS 2
3833
  MAXTRANS 255
3834
  STORAGE
3835
  (
3836
    INITIAL 64K
3837
    NEXT 64K
3838
    MINEXTENTS 1
3839
    MAXEXTENTS 2147483645
3840
    PCTINCREASE 0
3841
    FREELISTS 1
3842
    FREELIST GROUPS 1
3843
    BUFFER_POOL DEFAULT
3844
  )
3845
;
3846
 
3847
CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC)  TABLESPACE "SYSTEM"
3848
  LOGGING 
3849
  PCTFREE 10
3850
  INITRANS 2
3851
  MAXTRANS 255
3852
  STORAGE
3853
  (
3854
    INITIAL 64K
3855
    NEXT 64K
3856
    MINEXTENTS 1
3857
    MAXEXTENTS 2147483645
3858
    PCTINCREASE 0
3859
    FREELISTS 1
3860
    FREELIST GROUPS 1
3861
    BUFFER_POOL DEFAULT
3862
  )
3863
;
3864
 
3865
CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC)  TABLESPACE "SYSTEM"
3866
  LOGGING 
3867
  PCTFREE 10
3868
  INITRANS 2
3869
  MAXTRANS 255
3870
  STORAGE
3871
  (
3872
    INITIAL 64K
3873
    NEXT 64K
3874
    MINEXTENTS 1
3875
    MAXEXTENTS 2147483645
3876
    PCTINCREASE 0
3877
    FREELISTS 1
3878
    FREELIST GROUPS 1
3879
    BUFFER_POOL DEFAULT
3880
  )
3881
;
3882
 
3883
CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC)  TABLESPACE "USERS"
3884
  LOGGING 
3885
  PCTFREE 10
3886
  INITRANS 2
3887
  MAXTRANS 255
3888
  STORAGE
3889
  (
3890
    INITIAL 128K
3891
    MINEXTENTS 1
3892
    MAXEXTENTS 2147483645
3893
    FREELISTS 1
3894
    FREELIST GROUPS 1
3895
    BUFFER_POOL DEFAULT
3896
  )
3897
;
3898
 
3899
CREATE INDEX INX_PACKAGES_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID ASC)  TABLESPACE "USERS"
3900
  NOLOGGING 
3901
  PCTFREE 10
3902
  INITRANS 2
3903
  MAXTRANS 255
3904
  STORAGE
3905
  (
3906
    INITIAL 128K
3907
    MINEXTENTS 1
3908
    MAXEXTENTS 2147483645
3909
    FREELISTS 1
3910
    FREELIST GROUPS 1
3911
    BUFFER_POOL DEFAULT
3912
  )
3913
;
3914
 
3915
CREATE INDEX INX_PACKAGES_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION ASC)  TABLESPACE "USERS"
3916
  NOLOGGING 
3917
  PCTFREE 10
3918
  INITRANS 2
3919
  MAXTRANS 255
3920
  STORAGE
3921
  (
3922
    INITIAL 128K
3923
    MINEXTENTS 1
3924
    MAXEXTENTS 2147483645
3925
    FREELISTS 1
3926
    FREELIST GROUPS 1
3927
    BUFFER_POOL DEFAULT
3928
  )
3929
;
3930
 
3931
CREATE INDEX INX_PACKAGES_V_EXT ON PACKAGE_VERSIONS (V_EXT ASC)  TABLESPACE "USERS"
3932
  NOLOGGING 
3933
  PCTFREE 10
3934
  INITRANS 2
3935
  MAXTRANS 255
3936
  STORAGE
3937
  (
3938
    INITIAL 128K
3939
    MINEXTENTS 1
3940
    MAXEXTENTS 2147483645
3941
    FREELISTS 1
3942
    FREELIST GROUPS 1
3943
    BUFFER_POOL DEFAULT
3944
  )
3945
;
3946
 
3947
CREATE INDEX INX_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC)  TABLESPACE "USERS"
3948
  NOLOGGING 
3949
  PCTFREE 10
3950
  INITRANS 2
3951
  MAXTRANS 255
3952
  STORAGE
3953
  (
3954
    INITIAL 128K
3955
    MINEXTENTS 1
3956
    MAXEXTENTS 2147483645
3957
    FREELISTS 1
3958
    FREELIST GROUPS 1
3959
    BUFFER_POOL DEFAULT
3960
  )
3961
;
3962
 
3963
CREATE INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC)  TABLESPACE "USERS"
3964
  NOLOGGING 
3965
  PCTFREE 10
3966
  INITRANS 2
3967
  MAXTRANS 255
3968
  STORAGE
3969
  (
3970
    INITIAL 128K
3971
    MINEXTENTS 1
3972
    MAXEXTENTS 2147483645
3973
    FREELISTS 1
3974
    FREELIST GROUPS 1
3975
    BUFFER_POOL DEFAULT
3976
  )
3977
;
3978
 
3979
CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC)  TABLESPACE "USERS"
3980
  LOGGING 
3981
  PCTFREE 10
3982
  INITRANS 2
3983
  MAXTRANS 255
3984
  STORAGE
3985
  (
3986
    INITIAL 128K
3987
    MINEXTENTS 1
3988
    MAXEXTENTS 2147483645
3989
    FREELISTS 1
3990
    FREELIST GROUPS 1
3991
    BUFFER_POOL DEFAULT
3992
  )
3993
;
3994
 
3995
CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC)  TABLESPACE "SYSTEM"
3996
  LOGGING 
3997
  PCTFREE 10
3998
  INITRANS 2
3999
  MAXTRANS 255
4000
  STORAGE
4001
  (
4002
    INITIAL 128K
4003
    NEXT 64K
4004
    MINEXTENTS 1
4005
    MAXEXTENTS 2147483645
4006
    PCTINCREASE 0
4007
    FREELISTS 1
4008
    FREELIST GROUPS 1
4009
    BUFFER_POOL DEFAULT
4010
  )
4011
;
4012
 
4013
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
4014
  LOGGING 
4015
  PCTFREE 10
4016
  INITRANS 2
4017
  MAXTRANS 255
4018
  STORAGE
4019
  (
4020
    INITIAL 64K
4021
    MINEXTENTS 1
4022
    MAXEXTENTS 2147483645
4023
    FREELISTS 1
4024
    FREELIST GROUPS 1
4025
    BUFFER_POOL DEFAULT
4026
  )
4027
;
4028
 
4029
CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC)  TABLESPACE "USERS"
4030
  LOGGING 
4031
  PCTFREE 10
4032
  INITRANS 2
4033
  MAXTRANS 255
4034
  STORAGE
4035
  (
4036
    INITIAL 128K
4037
    MINEXTENTS 1
4038
    MAXEXTENTS 2147483645
4039
    FREELISTS 1
4040
    FREELIST GROUPS 1
4041
    BUFFER_POOL DEFAULT
4042
  )
4043
;
4044
 
4045
CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4046
 
4047
CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4048
 
4049
CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4050
 
4051
CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4052
 
4053
CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4054
 
4055
CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;
4056
 
4057
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4058
 
4059
CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4060
 
4061
CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;
4062
 
4063
CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4064
 
4065
CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4066
 
4067
CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4068
 
4069
CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;
4070
 
4071
CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4072
 
4073
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4074
 
4075
CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4076
 
4077
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4078
 
4079
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
4080
 
4081
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
4082
 
4083
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
4084
 
4085
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
4086
 
4087
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
4088
 
4089
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
4090
 
4091
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
4092
 
4093
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
4094
 
4095
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
4096
 
4097
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
4098
 
4099
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
4100
 
4101
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
4102
 
4103
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
4104
 
4105
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
4106
 
4107
CREATE OR REPLACE PROCEDURE                 update_deprecation_state(nnrtag_id IN NUMBER) AS
4108
 
4109
recno NUMBER;
4110
 
4111
CURSOR deprecate_cur IS
4112
 
4113
SELECT rc.pv_id
4114
FROM release_content rc
4115
WHERE rtag_id = nnrtag_id
4116
 AND deprecated_state IN(7);
4117
 
4118
deprecate_rec deprecate_cur % rowtype;
4119
 
4120
BEGIN
4121
 
4122
  OPEN deprecate_cur;
4123
 
4124
  FETCH deprecate_cur
4125
  INTO deprecate_rec;
4126
 
4127
  WHILE deprecate_cur % FOUND
4128
  LOOP
4129
 
4130
    SELECT COUNT(*)
4131
    INTO recno
4132
    FROM package_dependencies pd,
4133
      release_content rc
4134
    WHERE pd.pv_id = deprecate_rec.pv_id
4135
     AND rc.pv_id = pd.dpv_id
4136
     AND rc.rtag_id = nnrtag_id
4137
     AND rc.deprecated_state IN(6,   7);
4138
 
4139
    IF recno = 0 THEN
4140
 
4141
      UPDATE release_content
4142
      SET pkg_id = NULL, deprecated_state = NULL
4143
      WHERE pv_id = deprecate_rec.pv_id
4144
       AND rtag_id = nnrtag_id;
4145
 
4146
    END IF;
4147
 
4148
    FETCH deprecate_cur
4149
    INTO deprecate_rec;
4150
  END LOOP;
4151
 
4152
END;
4153
/
4154
 
4155
CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
4156
 
4157
/******************************************************************************
4158
   NAME:       ADD_VIEW_MEMBERS
4159
   PURPOSE:    
4160
 
4161
   REVISIONS:
4162
   Ver        Date        Author           Description
4163
   ---------  ----------  ---------------  ------------------------------------
4164
   1.0        11/04/2006          1. Created this procedure.
4165
 
4166
   NOTES:
4167
 
4168
   Automatically available Auto Replace Keywords:
4169
      Object Name:     ADD_VIEW_MEMBERS
4170
      Sysdate:         11/04/2006
4171
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
4172
      Username:         (set in TOAD Options, Procedure Editor)
4173
      Table Name:       (set in the "New PL/SQL Object" dialog)
4174
 
4175
******************************************************************************/
4176
CURSOR user_cur IS
4177
	SELECT u.USER_ID
4178
	  FROM USERS u
4179
	 WHERE u.USER_ID IN (
4180
	 	   			   	SELECT * 
4181
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
4182
						);
4183
user_rec user_cur%ROWTYPE;
4184
 
4185
 
4186
BEGIN
4187
 
4188
	 OPEN user_cur;
4189
	 FETCH user_cur INTO user_rec;
4190
 
4191
	 WHILE user_cur%FOUND
4192
	 LOOP
4193
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
4194
	 	 VALUES ( nGroupId, user_rec.USER_ID);
4195
 
4196
	 	 FETCH user_cur INTO user_rec;	 
4197
	 END LOOP;	 
4198
 
4199
 
4200
 
4201
END ADD_VIEW_MEMBERS;
4202
/
4203
 
4204
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4205
	   	  		  								  nPkgIdList IN VARCHAR2,
4206
												  nUserId IN NUMBER
4207
	   	  		  								  ) IS
4208
 
4209
/******************************************************************************
4210
   NAME:       ADD_PACKAGE_INTEREST
4211
   PURPOSE:    
4212
 
4213
   REVISIONS:
4214
   Ver        Date        Author           Description
4215
   ---------  ----------  ---------------  ------------------------------------
4216
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4217
 
4218
   NOTES:
4219
 
4220
   Automatically available Auto Replace Keywords:
4221
      Object Name:     ADD_PACKAGE_INTEREST
4222
      Sysdate:         12/05/2006
4223
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4224
      Username:         (set in TOAD Options, Procedure Editor)
4225
      Table Name:       (set in the "New PL/SQL Object" dialog)
4226
 
4227
******************************************************************************/
4228
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4229
   nPkgId NUMBER;
4230
BEGIN
4231
 
4232
	 npkgidcollector := in_list_number2 (nPkgIdList);
4233
 
4234
	FOR i IN 1..npkgidcollector.COUNT
4235
	LOOP
4236
		nPkgId := npkgidcollector(i);
4237
 
4238
	 --- Insert into PACKAGE_INTEREST TABLE
4239
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4240
	 VALUES(nProjId, nPkgId, nUserId);
4241
	END LOOP;	 
4242
 
4243
 
4244
END ADD_PACKAGE_INTEREST_TEST;
4245
/
4246
 
4247
CREATE OR REPLACE PROCEDURE level_n_conflicts (
4248
   nnrtag_id       IN       NUMBER,
4249
   nnsession_num   IN       NUMBER,
4250
   nnrowcnt        OUT      NUMBER,
4251
   nniteration     IN       NUMBER
4252
)
4253
IS
4254
/* ---------------------------------------------------------------------------
4255
    Version: 3.0.1
4256
   --------------------------------------------------------------------------- */
4257
   previteration   NUMBER := nniteration - 1;
4258
BEGIN
4259
   /* ---------  LEVEL 1 CONFILCTS -----------
4260
   || Following states are used:
4261
   || 0 -> NOT FOUND
4262
   || 1 -> MAJOR
4263
   || 2 -> MINOR MINOR
4264
   */
4265
   INSERT INTO temp_env_states
4266
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4267
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4268
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4269
                 FROM package_dependencies dep,
4270
                      package_versions dpv,
4271
                      package_versions pv,
4272
                      release_content rel,
4273
                      temp_env_states tes
4274
                WHERE rel.pv_id = dep.pv_id
4275
                  AND rel.rtag_id = nnrtag_id
4276
                  AND dep.pv_id = pv.pv_id
4277
                  AND dep.dpv_id = dpv.pv_id
4278
                  AND dpv.pkg_id = tes.pkg_id
4279
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4280
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4281
                  AND tes.session_num = nnsession_num
4282
                  AND tes.level_num = previteration
4283
                  AND (dep.pv_id, dep.dpv_id) IN 
4284
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4285
                                                 || packages already stored in Temp Table.
4286
                                                 */
4287
                      (
4288
                         SELECT pd.pv_id, pd.dpv_id
4289
                           FROM package_dependencies pd, release_content rc
4290
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4291
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4292
                         MINUS
4293
                         SELECT igw.pv_id, igw.dpv_id
4294
                           FROM ignore_warnings igw
4295
                          WHERE igw.rtag_id = nnrtag_id);
4296
 
4297
   nnrowcnt := SQL%ROWCOUNT;
4298
END level_n_conflicts;
4299
/
4300
 
4301
CREATE OR REPLACE PROCEDURE Remove_Release_Content ( sPvIdList IN VARCHAR2,
4302
													 sNotPvIdList IN VARCHAR2,
4303
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
4304
/* ---------------------------------------------------------------------------
4305
    Version: 3.0
4306
   --------------------------------------------------------------------------- */
4307
 
4308
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4309
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4310
 
4311
BEGIN
4312
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
4313
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
4314
 
4315
    -- Delete From Release Content
4316
    DELETE
4317
      FROM RELEASE_CONTENT
4318
	 WHERE rtag_id = nRTagId
4319
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4320
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4321
 
4322
 
4323
 
4324
END Remove_Release_Content;
4325
/
4326
 
4327
CREATE OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
4328
 
4329
/* ---------------------------------------------------------------------------
4330
    Version: 3.0.0
4331
   --------------------------------------------------------------------------- */
4332
 
4333
	sPkgName VARCHAR2(4000);
4334
	sVext VARCHAR2(4000);
4335
 
4336
BEGIN
4337
 
4338
	-- Get package details
4339
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
4340
	  FROM PACKAGE_VERSIONS pv,
4341
	  	   PACKAGES pkg
4342
	 WHERE pv.PKG_ID = pkg.PKG_ID
4343
	   AND pv.PV_ID = nPvId;
4344
 
4345
 
4346
	-- Generate Label for automated build
4347
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
4348
 
4349
END GET_AUTOMATED_LABEL;
4350
/
4351
 
4352
CREATE OR REPLACE PACKAGE pk_package
4353
IS
4354
/*
4355
------------------------------
4356
||  Last Modified:  Jeremy Tweddle
4357
||  Modified Date:  24/08/2007
4358
||
4359
------------------------------
4360
*/
4361
   TYPE typecur IS REF CURSOR;
4362
 
4363
/*================================================================================================*/
4364
   PROCEDURE new_version (
4365
      nlastpvid                   IN       NUMBER,
4366
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4367
      cbuildtype                  IN       CHAR,
4368
      nsettopvid                  IN       NUMBER DEFAULT NULL,
4369
      nrtagid                     IN       NUMBER,
4370
      nuserid                     IN       NUMBER,
4371
      enumissues_state_imported   IN       NUMBER,
4372
      returnpvid                  OUT      NUMBER
4373
   );
4374
 
4375
   PROCEDURE change_state (
4376
      pvid       IN   NUMBER,
4377
      newstate   IN   package_versions.dlocked%TYPE,
4378
      userid     IN   NUMBER
4379
   );
4380
 
4381
   PROCEDURE new_patch (
4382
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
4383
      nparentpvid        IN       NUMBER,
4384
      spatchidlist       IN       VARCHAR2,
4385
      nuserid            IN       NUMBER,
4386
      returnpatchid      OUT      NUMBER
4387
   );
4388
 
4389
   PROCEDURE obsolete_patch (
4390
      patchid            IN   NUMBER,
4391
      isobsolete         IN   CHAR,
4392
      obsoletecomments   IN   VARCHAR2,
4393
      userid             IN   NUMBER
4394
   );
4395
 
4396
   PROCEDURE obsolete_patches (
4397
      spatchidlist       IN   VARCHAR2,
4398
      isobsolete         IN   CHAR,
4399
      obsoletecomments   IN   VARCHAR2,
4400
      userid             IN   NUMBER
4401
   );
4402
 
4403
   PROCEDURE destroy_package (
4404
      pvid               IN       NUMBER,
4405
      overridewarnings   IN       CHAR DEFAULT 'N',
4406
      problemstring      OUT      VARCHAR2
4407
   );
4408
 
4409
   PROCEDURE add_process (
4410
      nprocid         IN   processes.proc_id%TYPE,
4411
      shealthtag      IN   processes.proc_name%TYPE,
4412
      sprocdesc       IN   processes.proc_description%TYPE,
4413
      scmdinterface   IN   processes.run_as%TYPE,
4414
      spkgowner       IN   processes.pkg_owner%TYPE,
4415
      sisinterface    IN   processes.is_interface%TYPE,
4416
      npvid           IN   package_processes.pv_id%TYPE,
4417
      nuserid         IN   NUMBER
4418
   );
4419
 
4420
   PROCEDURE add_package_process (
4421
      nprocidlist   IN   VARCHAR2,
4422
      npvid         IN   package_processes.pv_id%TYPE,
4423
      nuserid       IN   NUMBER
4424
   );
4425
 
4426
 
4427
 
4428
   PROCEDURE remove_process (
4429
      nprocid   IN   package_processes.proc_id%TYPE,
4430
      npvid     IN   package_processes.pv_id%TYPE,
4431
      nuserid   IN   NUMBER
4432
   );
4433
 
4434
   PROCEDURE move_package (
4435
   	  npvid  			  IN package_versions.pv_id%TYPE,
4436
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4437
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4438
	  nuserid			  IN NUMBER		 
4439
   ); 
4440
 
4441
   PROCEDURE modify_product_state (
4442
   	  npvid IN package_versions.pv_id%TYPE,
4443
	  nrtagid IN release_tags.rtag_id%TYPE,
4444
	  nstateid IN product_states.state_id%TYPE,
4445
	  nuserid IN NUMBER
4446
   );
4447
 
4448
   PROCEDURE add_code_review_url (
4449
        npvid           IN    NUMBER,
4450
        nprojid         IN    NUMBER,
4451
        surl            IN    VARCHAR2,
4452
        sreason         IN    VARCHAR2,
4453
        ddateofreview   IN    DATE
4454
   );
4455
 
4456
   PROCEDURE update_code_review_url (
4457
        ncrid           IN    NUMBER,
4458
        nprojid         IN    NUMBER,
4459
        surl            IN    VARCHAR2,
4460
        sreason         IN    VARCHAR2
4461
   );
4462
 
4463
   PROCEDURE remove_code_review_url (
4464
        ncrid           IN    NUMBER
4465
   );
4466
/*================================================================================================*/
4467
END pk_package;
4468
/
4469
 
4470
CREATE OR REPLACE PROCEDURE Add_Runtime_Dependency ( NNpv_id IN NUMBER,
4471
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
4472
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4473
                                                     NNuser_id IN NUMBER
4474
                                                    ) IS
4475
/* ---------------------------------------------------------------------------
4476
    Version: 3.1
4477
   --------------------------------------------------------------------------- */
4478
 
4479
    retRTD_ID NUMBER;
4480
 
4481
	CURSOR rtd_cur IS
4482
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
4483
    rtd_rec rtd_cur%ROWTYPE;
4484
 
4485
BEGIN
4486
    --- Seed database with package_name and version if required ---
4487
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
4488
 
4489
	OPEN rtd_cur;
4490
    FETCH rtd_cur INTO rtd_rec;
4491
 
4492
    IF rtd_cur%NOTFOUND
4493
    THEN
4494
		/* Make sure it does not exists already as runtime dependency */
4495
 
4496
		--- Add new Runtime Dependency ---
4497
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
4498
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
4499
 
4500
    	/* LOG ACTION */
4501
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
4502
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
4503
 
4504
	END IF;
4505
 
4506
 
4507
END Add_Runtime_Dependency;
4508
/
4509
 
4510
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4511
	   	  		  								  nPkgIdList IN VARCHAR2,
4512
												  nUserId IN NUMBER
4513
	   	  		  								  ) IS
4514
 
4515
/******************************************************************************
4516
   NAME:       ADD_PACKAGE_INTEREST
4517
   PURPOSE:    
4518
 
4519
   REVISIONS:
4520
   Ver        Date        Author           Description
4521
   ---------  ----------  ---------------  ------------------------------------
4522
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4523
 
4524
   NOTES:
4525
 
4526
   Automatically available Auto Replace Keywords:
4527
      Object Name:     ADD_PACKAGE_INTEREST
4528
      Sysdate:         12/05/2006
4529
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4530
      Username:         (set in TOAD Options, Procedure Editor)
4531
      Table Name:       (set in the "New PL/SQL Object" dialog)
4532
 
4533
******************************************************************************/
4534
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4535
   nPkgId NUMBER;
4536
BEGIN
4537
 
4538
	 npkgidcollector := in_list_number2 (nPkgIdList);
4539
 
4540
	FOR i IN 1..npkgidcollector.COUNT
4541
	LOOP
4542
		nPkgId := npkgidcollector(i);
4543
 
4544
	 --- Insert into PACKAGE_INTEREST TABLE
4545
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4546
	 VALUES(nProjId, nPkgId, nUserId);
4547
	END LOOP;	 
4548
 
4549
 
4550
END ADD_PACKAGE_INTEREST;
4551
/
4552
 
4553
CREATE OR REPLACE FUNCTION CAN_EDIT_PKG_IN_PROJECT ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
4554
 
4555
/* ---------------------------------------------------------------------------
4556
    Version: 3.0.0
4557
   --------------------------------------------------------------------------- */
4558
 
4559
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
4560
	ProjId NUMBER;
4561
	RowCount NUMBER;
4562
	cReleaseMode CHAR(1);
4563
 
4564
BEGIN
4565
 
4566
	--RETURN 1;
4567
 
4568
 
4569
	/*--------------- Business Rules Here -------------------*/
4570
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
4571
		RETURN 0;
4572
	END IF;
4573
	/*-------------------------------------------------------*/
4574
 
4575
 
4576
 
4577
 
4578
 
4579
 
4580
	/*-- First Check. See if package is used through release reference --*/
4581
	SELECT COUNT(rc.PV_ID) INTO RowCount
4582
	  FROM (
4583
	  		SELECT rl.REF_RTAG_ID
4584
			  FROM RELEASE_LINKS rl
4585
			 WHERE rl.RTAG_ID = nRtagId
4586
	  		) rl,
4587
			RELEASE_CONTENT rc
4588
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
4589
	    AND rc.PV_ID = nPvId;			
4590
 
4591
 
4592
	-- Decide if package can be edited  
4593
	IF RowCount > 0 THEN
4594
		-- Package is referenced from other release, hence cannot be edited
4595
		RETURN 0;	
4596
 
4597
	ELSE
4598
 
4599
		-- Check is only done for releases in restrictive mode
4600
		SELECT rt.OFFICIAL INTO cReleaseMode
4601
		  FROM RELEASE_TAGS rt
4602
		 WHERE rt.RTAG_ID = nRtagId;
4603
 
4604
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
4605
			-- Do not do any firther checking,
4606
			-- Package is editable here
4607
			RETURN 1;
4608
		END IF;	
4609
 
4610
	END IF;
4611
 
4612
 
4613
 
4614
 
4615
	/*-- Further checking --*/
4616
	-- Get proj_id
4617
	SELECT rt.PROJ_ID  INTO  ProjId
4618
	  FROM RELEASE_TAGS rt
4619
	 WHERE rt.RTAG_ID = nRtagId;
4620
 
4621
 
4622
 
4623
	BEGIN
4624
 
4625
		-- Get v_ext
4626
		SELECT pv.V_EXT  INTO  Vext
4627
		  FROM PACKAGE_VERSIONS pv
4628
		 WHERE pv.PV_ID = nPvId;  
4629
 
4630
		EXCEPTION
4631
	    	WHEN NO_DATA_FOUND THEN
4632
	       		Vext := NULL;
4633
 
4634
	END;	 
4635
 
4636
 
4637
	--Temp Hack for Step Project
4638
	IF ProjId != 281 THEN
4639
		-- Find if package can be edited in this project
4640
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
4641
	 		FROM PROJECT_EXTENTIONS pe
4642
			WHERE pe.PROJ_ID != ProjId  
4643
	  		AND pe.EXT_NAME = VExt;
4644
	END IF;		
4645
 
4646
 
4647
	-- Decide if package can be edited  
4648
	IF RowCount > 0 THEN
4649
		-- Package extension is found in other projects, hece NOT EDITABLE
4650
		RETURN 0;
4651
	ELSE
4652
		RETURN 1;	
4653
	END IF;
4654
 
4655
 
4656
END CAN_EDIT_PKG_IN_PROJECT;
4657
/
4658
 
4659
CREATE OR REPLACE PACKAGE pk_archive
4660
IS
4661
/*
4662
------------------------------
4663
||  Author:  Rupesh Solanki
4664
||  Date:    26 October 2006
4665
||  Version:   1.0
4666
------------------------------
4667
*/
4668
 
4669
   /*================================================================================================*/
4670
   PROCEDURE populate_packages_table;
4671
 
4672
   PROCEDURE populate_archive_data_table (
4673
      nrtagid   IN   release_tags.rtag_id%TYPE
4674
   );
4675
 
4676
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
4677
 
4678
   PROCEDURE migrate_rtag_to_archive_schema (
4679
      nrtagid   IN   release_tags.rtag_id%TYPE
4680
   );
4681
 
4682
   PROCEDURE clean_up_archive_data_table (
4683
      nrtagid   IN   release_tags.rtag_id%TYPE
4684
   );
4685
 
4686
   PROCEDURE write_action_log (
4687
      nuserid   IN   NUMBER,
4688
      nrtagid   IN   release_tags.rtag_id%TYPE
4689
   );
4690
/*================================================================================================*/
4691
END pk_archive;
4692
/
4693
 
4694
CREATE OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS
4695
 
4696
/* ---------------------------------------------------------------------------
4697
    Version: 3.3
4698
   --------------------------------------------------------------------------- */
4699
    rowCnt NUMBER := 0;
4700
    iteration NUMBER := 2;          -- Iterations counter
4701
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
4702
                                    -- This will prevent infinite loops if cyrcular dependencies are found
4703
    sessionNum NUMBER;
4704
BEGIN
4705
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
4706
 
4707
 
4708
    -- Redo Patch Ignore warnings
4709
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
4710
 
4711
 
4712
    Level_One_Conflicts ( NNrtag_id, sessionNum );
4713
 
4714
    LOOP
4715
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
4716
        iteration := iteration + 1;
4717
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
4718
    END LOOP;
4719
 
4720
    Update_Package_States ( NNrtag_id, sessionNum );
4721
 
4722
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
4723
 
4724
    -- Flag Packages with New Patches Available
4725
    Check_New_Patches ( NNrtag_id );
4726
 
4727
	Clean_Do_Not_Ripple( NNrtag_id );
4728
 
4729
 
4730
	/* Circular Dependency Flag */
4731
    /*
4732
	IF iteration > maxIterations
4733
	THEN
4734
		UPDATE release_tags SET
4735
		   	   circular_dependency = 'Y'
4736
		 WHERE rtag_id = NNrtag_id;
4737
	ELSE
4738
		UPDATE release_tags SET
4739
		   	   circular_dependency = NULL
4740
		 WHERE rtag_id = NNrtag_id;
4741
	END IF;
4742
    */
4743
END Rebuild_Environment;
4744
/
4745
 
4746
CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS
4747
 
4748
/******************************************************************************
4749
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4750
   PURPOSE:    
4751
 
4752
   REVISIONS:
4753
   Ver        Date        Author           Description
4754
   ---------  ----------  ---------------  ------------------------------------
4755
   1.0        6/12/2006          1. Created this procedure.
4756
 
4757
   NOTES:
4758
 
4759
   Automatically available Auto Replace Keywords:
4760
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4761
      Sysdate:         6/12/2006
4762
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4763
      Username:         (set in TOAD Options, Procedure Editor)
4764
      Table Name:       (set in the "New PL/SQL Object" dialog)
4765
 
4766
******************************************************************************/
4767
 
4768
	CURSOR curInfo IS
4769
    SELECT PV_ID
4770
	FROM PACKAGE_BUILD_ENV
4771
	WHERE BE_ID IN (11, 12);
4772
    recInfo curInfo%ROWTYPE;
4773
 
4774
 
4775
BEGIN
4776
 
4777
	OPEN curInfo;
4778
    FETCH curInfo INTO recInfo;
4779
 
4780
	WHILE curInfo%FOUND
4781
	LOOP
4782
 
4783
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4784
		VALUES( recInfo.PV_ID, 2, 5);
4785
 
4786
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4787
 
4788
		FETCH curInfo INTO recInfo;
4789
 
4790
	END LOOP;
4791
 
4792
	CLOSE curInfo;
4793
 
4794
 
4795
 
4796
 
4797
END INSERT_INTO_PACKAGE_BUILD_INFO;
4798
/
4799
 
4800
CREATE OR REPLACE PROCEDURE check_new_patches (
4801
   nrtagid   IN   release_content.rtag_id%TYPE
4802
)
4803
IS
4804
/* ---------------------------------------------------------------------------
4805
    Version: 3.0
4806
   --------------------------------------------------------------------------- */
4807
BEGIN
4808
   /*--------------- Business Rules Here -------------------*/
4809
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
4810
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
4811
   END IF
4812
 
4813
   /*-------------------------------------------------------*/
4814
   UPDATE release_content rc
4815
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
4816
    WHERE rc.pv_id IN (
4817
             SELECT prod.pv_id
4818
               FROM (SELECT   pp.pv_id AS orig_parent_id,
4819
                              COUNT (*) AS num_of_patches
4820
                         FROM release_content rc, package_patches pp
4821
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4822
                     GROUP BY pp.pv_id) orig,
4823
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
4824
                              COUNT (*) AS num_of_patches
4825
                         FROM release_content rc,
4826
                              package_patches pp,
4827
                              package_dependencies dep,
4828
                              package_versions pv,
4829
                              package_patches prodpp
4830
                        WHERE rc.pv_id = pp.pv_id
4831
                          AND rc.rtag_id = nrtagid
4832
                          AND pp.patch_id = dep.dpv_id
4833
                          AND dep.pv_id = pv.pv_id
4834
                          AND pv.is_patch = 'Y'
4835
                          AND pv.dlocked = 'Y'
4836
                          AND prodpp.patch_id = dep.pv_id
4837
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
4838
                    release_content rc
4839
              WHERE orig.orig_parent_id = prod.pv_id
4840
                AND orig.num_of_patches != prod.num_of_patches
4841
                AND rc.rtag_id = nrtagid
4842
                AND rc.pv_id = prod.pv_id
4843
                AND rc.pkg_state = 0
4844
             UNION
4845
             SELECT   prodpp.pv_id
4846
                 FROM release_content rc,
4847
                      package_patches pp,
4848
                      package_dependencies dep,
4849
                      package_versions pv,
4850
                      package_patches prodpp
4851
                WHERE rc.pv_id = pp.pv_id
4852
                  AND rc.rtag_id = nrtagid
4853
                  AND pp.patch_id = dep.dpv_id
4854
                  AND dep.pv_id = pv.pv_id
4855
                  AND pv.is_patch = 'Y'
4856
                  AND pv.dlocked = 'Y'
4857
                  AND prodpp.patch_id = dep.pv_id
4858
             GROUP BY prodpp.pv_id, pp.pv_id
4859
             MINUS
4860
             SELECT   pp.pv_id
4861
                 FROM release_content rc, package_patches pp
4862
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4863
             GROUP BY pp.pv_id);
4864
END check_new_patches;
4865
/
4866
 
4867
CREATE OR REPLACE PROCEDURE Update_Package_Dependency ( NNpv_id IN NUMBER,
4868
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
4869
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4870
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
4871
                                                        NNuser_id IN NUMBER,
4872
                                                        NNdelete_old_dependency IN NUMBER
4873
                                                       ) IS
4874
/* ---------------------------------------------------------------------------
4875
    Version: 3.3
4876
   --------------------------------------------------------------------------- */
4877
 
4878
    retPV_ID NUMBER;
4879
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
4880
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4881
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4882
    NNpkg_id NUMBER;
4883
    NNdpkg_id NUMBER;
4884
 
4885
BEGIN
4886
    --- Seed database with package_name and version if required ---
4887
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
4888
 
4889
    -- get v_ext,pkg_id of current dependency
4890
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
4891
      FROM PACKAGE_VERSIONS
4892
     WHERE pv_id = retPV_ID;
4893
 
4894
    -- get pkg_id of parent package
4895
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
4896
      FROM PACKAGE_VERSIONS
4897
     WHERE pv_id = NNpv_id;
4898
 
4899
 
4900
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
4901
    	( (PvIsPatch IS NOT NULL) )THEN
4902
 
4903
	    IF NNdelete_old_dependency = 1 THEN
4904
	        /* Used for CUSTOM dependency add/edit */
4905
 
4906
	        --- Remove old dependency ---
4907
            IF (PvIsPatch IS NULL) THEN
4908
            	-- Do it for Packages
4909
		        DELETE FROM PACKAGE_DEPENDENCIES
4910
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4911
		            (
4912
		            SELECT dep.*
4913
		              FROM PACKAGE_DEPENDENCIES dep,
4914
		                   PACKAGE_VERSIONS dpv,
4915
		                   PACKAGE_VERSIONS pv
4916
		             WHERE dep.dpv_id = dpv.pv_id
4917
		               AND dep.pv_id = NNpv_id
4918
		               AND pv.pv_id = retPV_ID
4919
		               AND dpv.pkg_id = pv.pkg_id
4920
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
4921
		            );
4922
            ELSE
4923
            	-- Do it for Patches
4924
                DELETE FROM PACKAGE_DEPENDENCIES
4925
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4926
		            (
4927
		            SELECT dep.*
4928
		              FROM PACKAGE_DEPENDENCIES dep
4929
		             WHERE dep.dpv_id = retPV_ID
4930
		               AND dep.pv_id = NNpv_id
4931
		            );
4932
			END IF;
4933
 
4934
	    END IF;
4935
 
4936
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
4937
 
4938
	    --- Add new dependency ---
4939
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
4940
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
4941
 
4942
	END IF;
4943
 
4944
END Update_Package_Dependency;
4945
/
4946
 
4947
CREATE OR REPLACE PACKAGE PK_RMAPI_test IS
4948
/*
4949
------------------------------
4950
||  Last Modified:  S.Vukovic
4951
||  Modified Date:  19/May/2005
4952
||  Spec Version:   2.0
4953
------------------------------
4954
*/
4955
 
4956
	TYPE typeCur IS REF CURSOR;
4957
 
4958
    /*================================================================================================*/
4959
 
4960
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
4961
 
4962
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
4963
 
4964
 
4965
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
4966
							 PkgName IN VARCHAR2, 
4967
							 VExt IN VARCHAR2,
4968
							 NewPkgVersion IN VARCHAR2, 
4969
							 Label IN VARCHAR2,
4970
							 DependenciesImportList IN VARCHAR2,
4971
							 IsRippled IN NUMBER,
4972
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
4973
 
4974
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
4975
 
4976
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
4977
 
4978
	PROCEDURE CQ_TEST;
4979
 
4980
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
4981
	/*================================================================================================*/
4982
 
4983
END PK_RMAPI_test;
4984
/
4985
 
4986
CREATE OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2
4987
IS
4988
/* ---------------------------------------------------------------------------
4989
    Version: 1.0.0
4990
   --------------------------------------------------------------------------- */
4991
BEGIN
4992
    IF is_number(s_version) AND LENGTH(s_version) > 3
4993
    THEN
4994
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
4995
    ELSE
4996
        RETURN s_version;
4997
    END IF;
4998
END get_patch_version;
4999
/
5000
 
5001
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;
5002
/
5003
 
5004
CREATE OR REPLACE PACKAGE PK_APP_UTILS IS
5005
/*
5006
------------------------------
5007
||  Last Modified:  S.Vukovic
5008
||  Modified Date:  26/Apr/2005
5009
||  Spec Version:   1.0
5010
------------------------------
5011
*/
5012
 
5013
	TYPE typeCur IS REF CURSOR;
5014
 
5015
    /*================================================================================================*/
5016
 
5017
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
5018
 
5019
	/*================================================================================================*/
5020
 
5021
END PK_APP_UTILS;
5022
/
5023
 
5024
CREATE OR REPLACE PROCEDURE Log_Project_Action ( nProjId IN NUMBER,
5025
												 enumActionTypeName IN VARCHAR2,
5026
		                                         nUserId IN NUMBER,
5027
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
5028
												 nRtagId IN NUMBER  ) IS
5029
/* ---------------------------------------------------------------------------
5030
    Version: 3.0
5031
   --------------------------------------------------------------------------- */
5032
 
5033
    ActionTypeId NUMBER;
5034
 
5035
BEGIN
5036
 
5037
    -- Get Action Type FK
5038
    SELECT act.ACTTYPE_ID INTO ActionTypeId
5039
      FROM ACTION_TYPE act
5040
     WHERE act.NAME = enumActionTypeName;
5041
 
5042
 
5043
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
5044
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
5045
 
5046
 
5047
END Log_Project_Action;
5048
/
5049
 
5050
CREATE OR REPLACE FUNCTION IN_LIST_VARCHAR2 ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
5051
 
5052
/* ---------------------------------------------------------------------------
5053
    Version: 3.1
5054
   --------------------------------------------------------------------------- */
5055
 
5056
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
5057
	pos				   NUMBER;
5058
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
5059
	val				   VARCHAR2(4000);
5060
 
5061
BEGIN
5062
 
5063
	IF NOT sInList IS NULL
5064
	THEN
5065
		LOOP
5066
	        EXIT WHEN in_list IS NULL;
5067
	        pos := INSTR ( in_list, cSeparator );
5068
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
5069
 
5070
			IF (NOT val IS NULL) THEN
5071
		        cItemCollection.extend;
5072
		        cItemCollection(cItemCollection.count) := val;
5073
			END IF;
5074
 
5075
	        in_list := SUBSTR ( in_list, pos+1 );
5076
		END LOOP;
5077
	END IF;
5078
 
5079
	RETURN cItemCollection;
5080
END IN_LIST_VARCHAR2;
5081
/
5082
 
5083
CREATE OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5084
                                               retPKG_ID OUT NUMBER ) IS
5085
/* ---------------------------------------------------------------------------
5086
    Version: 3.0.0
5087
   --------------------------------------------------------------------------- */
5088
 
5089
    CURSOR packages_cur IS
5090
        SELECT pkg.pkg_id
5091
          FROM packages pkg
5092
         WHERE pkg.pkg_name = SSpkg_name;
5093
    packages_rec packages_cur%ROWTYPE;
5094
 
5095
 
5096
BEGIN
5097
 
5098
    /* ---------------------------------------------------- */
5099
    /* Find if package name exists                          */
5100
    /* ---------------------------------------------------- */
5101
 
5102
    OPEN packages_cur;
5103
    FETCH packages_cur INTO packages_rec;
5104
 
5105
    IF packages_cur%NOTFOUND
5106
    THEN
5107
        -- Create new pkg_name --
5108
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
5109
 
5110
        INSERT INTO packages ( pkg_id, pkg_name )
5111
        VALUES ( retPKG_ID, SSpkg_name );
5112
 
5113
    ELSE
5114
        retPKG_ID := packages_rec.pkg_id;
5115
 
5116
    END IF;
5117
 
5118
 
5119
    CLOSE packages_cur;
5120
 
5121
END New_Package_Name;
5122
/
5123
 
5124
CREATE OR REPLACE PROCEDURE UPDATE_PROCESSES
5125
IS
5126
 
5127
proc_id NUMBER;
5128
/******************************************************************************
5129
   NAME:       DELETE_DO_NOT_RIPPLE
5130
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
5131
               IS RELEASED
5132
 
5133
   REVISIONS:
5134
   Ver        Date        Author           Description
5135
   ---------  ----------  ---------------  ------------------------------------
5136
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
5137
 
5138
   NOTES:
5139
 
5140
   Automatically available Auto Replace Keywords:
5141
      Object Name:     DELETE_DO_NOT_RIPPLE
5142
      Sysdate:         21/04/2006
5143
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
5144
      Username:         (set in TOAD Options, Procedure Editor)
5145
      Table Name:       (set in the "New PL/SQL Object" dialog)
5146
 
5147
******************************************************************************/
5148
   CURSOR ripple_cur
5149
   IS
5150
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
5151
 
5152
   ripple_rec   ripple_cur%ROWTYPE;
5153
BEGIN
5154
   OPEN ripple_cur;
5155
 
5156
   FETCH ripple_cur
5157
    INTO ripple_rec;
5158
 
5159
   WHILE ripple_cur%FOUND
5160
   LOOP
5161
 
5162
 
5163
update deployment_manager.processes_config 
5164
set proc_id = ripple_rec.proc_id
5165
where pkg_health_tag = ripple_rec.proc_name
5166
and cmd_interface IS NULL
5167
and pkg_owner IS NULL
5168
and is_interface IS NULL; 
5169
 
5170
 
5171
      FETCH ripple_cur
5172
       INTO ripple_rec;
5173
   END LOOP;
5174
END UPDATE_PROCESSES;
5175
/
5176
 
5177
CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS
5178
 
5179
/******************************************************************************
5180
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
5181
   PURPOSE:    
5182
 
5183
   REVISIONS:
5184
   Ver        Date        Author           Description
5185
   ---------  ----------  ---------------  ------------------------------------
5186
   1.0        6/12/2006          1. Created this procedure.
5187
 
5188
   NOTES:
5189
 
5190
   Automatically available Auto Replace Keywords:
5191
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
5192
      Sysdate:         6/12/2006
5193
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
5194
      Username:         (set in TOAD Options, Procedure Editor)
5195
      Table Name:       (set in the "New PL/SQL Object" dialog)
5196
 
5197
******************************************************************************/
5198
 
5199
	CURSOR curInfo IS
5200
    SELECT PV_ID
5201
	FROM PACKAGE_BUILD_ENV
5202
	WHERE BE_ID IN (11, 12);
5203
    recInfo curInfo%ROWTYPE;
5204
 
5205
 
5206
BEGIN
5207
 
5208
	OPEN curInfo;
5209
    FETCH curInfo INTO recInfo;
5210
 
5211
	WHILE curInfo%FOUND
5212
	LOOP
5213
 
5214
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
5215
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
5216
 
5217
		FETCH curInfo INTO recInfo;
5218
 
5219
	END LOOP;
5220
 
5221
	CLOSE curInfo;
5222
 
5223
 
5224
 
5225
 
5226
END INSERT_MULTIPLE_STICKY_NOTES;
5227
/
5228
 
5229
CREATE OR REPLACE PACKAGE PK_RELEASE_TEST IS
5230
/*
5231
------------------------------
5232
||  Last Modified:  S.Vukovic
5233
||  Modified Date:  12/Sep/2005
5234
||  Body Version:   3.0
5235
------------------------------
5236
*/
5237
 
5238
	TYPE typeCur IS REF CURSOR;
5239
 
5240
    /*================================================================================================*/
5241
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5242
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
5243
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5244
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5245
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5246
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5247
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5248
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5249
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5250
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5251
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5252
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5253
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5254
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5255
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5256
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5257
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5258
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5259
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5260
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5261
	/*================================================================================================*/
5262
 
5263
END PK_RELEASE_TEST;
5264
/
5265
 
5266
CREATE OR REPLACE FUNCTION ORA_SYSDATETIME
5267
RETURN DATE
5268
IS
5269
/* ---------------------------------------------------------------------------
5270
    Version: 3.0.0
5271
   --------------------------------------------------------------------------- */
5272
BEGIN
5273
 
5274
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
5275
END ORA_SYSDATETIME;
5276
/
5277
 
5278
CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2
5279
IS
5280
/* ---------------------------------------------------------------------------
5281
    Version: 1.0.0
5282
   --------------------------------------------------------------------------- */
5283
BEGIN
5284
    IF is_number(s_version) AND LENGTH(s_version) > 3
5285
    THEN
5286
        RETURN MOD(TO_NUMBER(s_version), 1000);
5287
    ELSE
5288
        RETURN 0;
5289
    END IF;
5290
END get_build_number;
5291
/
5292
 
5293
CREATE OR REPLACE PACKAGE PK_RELEASE IS
5294
/*
5295
------------------------------
5296
||  Last Modified:  S.Vukovic
5297
||  Modified Date:  12/Sep/2005
5298
||  Body Version:   3.0
5299
------------------------------
5300
*/
5301
 
5302
	TYPE typeCur IS REF CURSOR;
5303
 
5304
    /*================================================================================================*/
5305
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5306
	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 );
5307
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5308
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5309
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5310
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5311
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5312
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5313
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5314
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5315
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
5316
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5317
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5318
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5319
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5320
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5321
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5322
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5323
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5324
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5325
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5326
 
5327
	/*================================================================================================*/
5328
 
5329
END PK_RELEASE;
5330
/
5331
 
5332
CREATE OR REPLACE PROCEDURE New_Additional_Note ( pnPv_id IN NUMBER,
5333
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
5334
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
5335
                                                  pnUser_id IN NUMBER,
5336
                                                  outErrCode OUT NUMBER
5337
                                                 ) IS
5338
/* ---------------------------------------------------------------------------
5339
    Version: 3.0.0
5340
   --------------------------------------------------------------------------- */
5341
 
5342
    newID NUMBER;
5343
 
5344
	CURSOR an_duplicate_cur IS
5345
        SELECT note_id
5346
          FROM ADDITIONAL_NOTES
5347
         WHERE pv_id = pnPv_id
5348
           AND note_title = psNote_title;
5349
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
5350
 
5351
BEGIN
5352
	outErrCode := -1;		-- Set default return error code to ERROR state
5353
 
5354
	OPEN an_duplicate_cur;
5355
    FETCH an_duplicate_cur INTO an_duplicate_rec;
5356
 
5357
    IF an_duplicate_cur%NOTFOUND
5358
    THEN
5359
		/* No duplicate titles */
5360
		-- Get new ID --
5361
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
5362
 
5363
		--- Add Additional Note ---
5364
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
5365
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
5366
		outErrCode := 0;		-- Set return to SUCCESS
5367
	END IF;
5368
 
5369
	CLOSE an_duplicate_cur;
5370
END New_Additional_Note;
5371
/
5372
 
5373
CREATE OR REPLACE PROCEDURE                 DEPLOY_TO_RELEASE IS
5374
 
5375
/******************************************************************************
5376
 
5377
 
5378
******************************************************************************/
5379
 
5380
	CURSOR curInfo IS
5381
    SELECT DISTINCT
5382
        qry.DPV_ID
5383
     FROM (
5384
             SELECT dep.*,
5385
                    LEVEL AS LEVEL_NUM
5386
               FROM PACKAGE_DEPENDENCIES dep
5387
             START WITH dep.PV_ID IN ( 
5388
 
5389
                        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,
5390
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
5391
 
5392
                        ) 
5393
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
5394
 		) qry,
5395
 		PACKAGES pkg,
5396
		PACKAGE_VERSIONS pv
5397
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
5398
         and (pv.is_patch is null or pv.is_patch = 'N');
5399
    recInfo curInfo%ROWTYPE;
5400
 
5401
 
5402
BEGIN
5403
 
5404
	OPEN curInfo;
5405
    FETCH curInfo INTO recInfo;
5406
 
5407
	WHILE curInfo%FOUND
5408
	LOOP
5409
 
5410
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
5411
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
5412
 
5413
    FETCH curInfo INTO recInfo;
5414
 
5415
	END LOOP;
5416
 
5417
	CLOSE curInfo;
5418
 
5419
 
5420
 
5421
 
5422
END DEPLOY_TO_RELEASE;
5423
/
5424
 
5425
CREATE OR REPLACE PROCEDURE New_Patch ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5426
 	   	  		  					  	NNparent_id IN NUMBER,
5427
                                        sPatchIdList IN VARCHAR2,
5428
										NNuser_id IN NUMBER ) IS
5429
/* ---------------------------------------------------------------------------
5430
    Version: 3.5
5431
   --------------------------------------------------------------------------- */
5432
 
5433
    patchPv_id    NUMBER;
5434
	parPkg_id	  NUMBER;
5435
    LastInstallOrder NUMBER;
5436
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
5437
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5438
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5439
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5440
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5441
 
5442
	CURSOR parent_cur IS
5443
        SELECT pv.*, pkg.pkg_name
5444
          FROM package_versions pv,
5445
		       packages pkg
5446
         WHERE pv.pv_id = NNparent_id
5447
		   AND pv.pkg_id = pkg.pkg_id;
5448
    parent_rec parent_cur%ROWTYPE;
5449
 
5450
    CURSOR patch_cur IS
5451
        SELECT pv.*, pg.pkg_name
5452
          FROM package_versions pv,
5453
		       packages pg
5454
         WHERE pv.pkg_id = parPkg_id
5455
		   AND pv.pkg_version = SSpatch_version
5456
		   AND pv.pkg_id = pg.pkg_id;
5457
    patch_rec patch_cur%ROWTYPE;
5458
 
5459
	CURSOR releases_cur IS
5460
        SELECT rc.pv_id
5461
		  FROM release_content rc
5462
		 WHERE rc.pv_id = patch_rec.pv_id;
5463
    releases_rec releases_cur%ROWTYPE;
5464
 
5465
 
5466
BEGIN
5467
 
5468
	-- Get Last Install Order
5469
    SELECT Count(*) INTO LastInstallOrder
5470
	  FROM PACKAGE_PATCHES pp
5471
	 WHERE pp.PV_ID = NNparent_id;
5472
 
5473
 
5474
    -- Get parent details
5475
	OPEN parent_cur;
5476
    FETCH parent_cur INTO parent_rec;
5477
	parPkg_id := parent_rec.pkg_id;
5478
 
5479
 
5480
	-- Find if patch exists in database
5481
    OPEN patch_cur;
5482
    FETCH patch_cur INTO patch_rec;
5483
 
5484
 
5485
    -- Parent must be official
5486
    IF parent_rec.dlocked = 'Y' THEN
5487
 
5488
	    IF patch_cur%NOTFOUND
5489
	    THEN
5490
        	isPatchDlocked := 'N';
5491
 
5492
	        -- Create new patch version --
5493
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5494
 
5495
 
5496
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5497
 
5498
	        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 )
5499
				   VALUES (
5500
						   patchPv_id,
5501
	                       parPkg_id,
5502
	                       SSpatch_version,
5503
	                       isPatchDlocked,
5504
	                       ORA_SYSDATE,
5505
	                       NNuser_id,
5506
	                       ORA_SYSDATETIME,
5507
	                       NNuser_id,
5508
	                       SSV_MM,
5509
	                       SSV_NMM,
5510
	                       SSV_EXT,
5511
	                       parent_rec.src_path,
5512
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5513
	                       NNuser_id,
5514
						   'Y',
5515
                           patchPv_id,
5516
						   parent_rec.bs_id,
5517
						   parent_rec.is_autobuildable,
5518
						   parent_rec.ripple_field
5519
 
5520
						   );
5521
 
5522
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5523
		    	   ( SELECT NNparent_id AS pv_id,
5524
				            pv.pv_id AS patch_id,
5525
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5526
				       FROM package_versions pv
5527
					  WHERE pv.pv_id = patchPv_id
5528
					    AND pv.is_patch = 'Y' );
5529
 
5530
	        /* LOG ACTION */
5531
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5532
        			     'Patch version created: '|| SSpatch_version );
5533
 
5534
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5535
        			     'New patch created and attached: '|| SSpatch_version );
5536
 
5537
 
5538
	    ELSE
5539
 
5540
		    patchPv_id := patch_rec.pv_id;
5541
	    	isPatchDlocked := patch_rec.dlocked;
5542
 
5543
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5544
		    OPEN releases_cur;
5545
		    FETCH releases_cur INTO releases_rec;
5546
 
5547
			IF releases_cur%NOTFOUND
5548
	   		THEN
5549
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5550
				UPDATE package_versions SET
5551
					   is_patch = 'Y'
5552
					   WHERE pv_id = patchPv_id;
5553
 
5554
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5555
			    	   ( SELECT NNparent_id AS pv_id,
5556
					            pv.pv_id AS patch_id,
5557
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5558
					       FROM package_versions pv
5559
						  WHERE pv.pv_id = patchPv_id
5560
						    AND pv.is_patch = 'Y' );
5561
 
5562
			END IF;
5563
 
5564
			CLOSE releases_cur;
5565
 
5566
            /* LOG ACTION */
5567
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5568
        			     'Patch version was found and attached: '|| SSpatch_version );
5569
 
5570
	    END IF;
5571
 
5572
 
5573
 
5574
 
5575
    END IF;
5576
 
5577
 
5578
 
5579
    /* Create Patch Dependencies */
5580
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5581
 
5582
 
5583
    -- Make sure patch is unofficial before altering its dependencies
5584
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5585
    	-- Delete Existing Dependencies
5586
        DELETE
5587
          FROM PACKAGE_DEPENDENCIES dep
5588
         WHERE dep.PV_ID = patchPv_id;
5589
 
5590
 
5591
        -- Insert new dependencies
5592
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5593
        SELECT patchPv_id AS PV_ID,
5594
        	   pv.PV_ID AS DPV_ID,
5595
               parPkg_id AS PKG_ID,
5596
               pv.PKG_ID AS DPKG_ID,
5597
               'L' AS BUILD_TYPE
5598
          FROM PACKAGE_VERSIONS pv
5599
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5600
 
5601
 
5602
    END IF;
5603
 
5604
 
5605
    CLOSE parent_cur;
5606
    CLOSE patch_cur;
5607
END New_Patch;
5608
/
5609
 
5610
CREATE OR REPLACE PROCEDURE Ignore_Dependency_Warnings ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
5611
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
5612
                                                         sIgnoreIdList IN VARCHAR2,
5613
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5614
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
5615
/* ---------------------------------------------------------------------------
5616
    Version: 5.0
5617
   --------------------------------------------------------------------------- */
5618
 
5619
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5620
ReleaseLocation VARCHAR2(4000);
5621
ActionTypeId NUMBER;
5622
 
5623
BEGIN
5624
 
5625
 
5626
   	IF (NOT bDoPatchIgnore) THEN
5627
    	/* Manual Ignore Warnings */
5628
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
5629
 
5630
 
5631
        /* Log Action */
5632
        -- Get Release Location
5633
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5634
		  FROM PROJECTS proj,
5635
		  	   RELEASE_TAGS rt
5636
		 WHERE rt.PROJ_ID = proj.PROJ_ID
5637
		   AND rt.RTAG_ID = nRtagId;
5638
 
5639
        -- Get Action Type Id for IGNORE_ON
5640
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5641
	      FROM ACTION_TYPE act
5642
	     WHERE act.NAME = 'ignore_on';
5643
 
5644
        -- Get Ignored (Current MINUS Old)
5645
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5646
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5647
		  FROM (
5648
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5649
		        FROM PACKAGE_VERSIONS pv
5650
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5651
		      MINUS
5652
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5653
		        FROM IGNORE_WARNINGS igw
5654
		       WHERE igw.RTAG_ID = nRtagId
5655
		         AND igw.PV_ID = nPvId
5656
		       ) qry,
5657
		       PACKAGE_VERSIONS pv,
5658
		       PACKAGES pkg,
5659
		       RELEASE_CONTENT rc,
5660
		       PACKAGE_VERSIONS rpv
5661
		 WHERE pv.PKG_ID = pkg.PKG_ID
5662
		   AND rc.RTAG_ID = nRtagId
5663
		   AND rc.PV_ID = rpv.PV_ID
5664
		   AND rpv.PKG_ID = pv.PKG_ID
5665
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5666
		   AND qry.DPV_ID = pv.PV_ID;
5667
 
5668
 
5669
        -- Get Action Type Id for IGNORE_OFF
5670
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5671
	      FROM ACTION_TYPE act
5672
	     WHERE act.NAME = 'ignore_off';
5673
 
5674
        -- Get UnIgnored (Old MINUS Current)
5675
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5676
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5677
		  FROM (
5678
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5679
		          FROM IGNORE_WARNINGS igw
5680
		         WHERE igw.RTAG_ID = nRtagId
5681
		           AND igw.PV_ID = nPvId
5682
                MINUS
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
		       ) qry,
5687
		       PACKAGE_VERSIONS pv,
5688
		       PACKAGES pkg,
5689
		       RELEASE_CONTENT rc,
5690
		       PACKAGE_VERSIONS rpv
5691
		 WHERE pv.PKG_ID = pkg.PKG_ID
5692
		   AND rc.RTAG_ID = nRtagId
5693
		   AND rc.PV_ID = rpv.PV_ID
5694
		   AND rpv.PKG_ID = pv.PKG_ID
5695
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5696
		   AND qry.DPV_ID = pv.PV_ID;
5697
 
5698
 
5699
 
5700
       	-- Delete Current Ignore Warnings
5701
	    DELETE
5702
	      FROM IGNORE_WARNINGS igw
5703
	     WHERE igw.RTAG_ID = nRtagId
5704
	       AND igw.PV_ID = nPvId
5705
	       AND igw.IS_PATCH_IGNORE IS NULL;
5706
 
5707
 
5708
        IF (oIgnoreIdCollector.COUNT > 0) THEN
5709
		    -- Insert Ignore Warnings
5710
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
5711
		    SELECT nRtagId,
5712
	        	   nPvId,
5713
	               pv.PV_ID AS DPV_ID
5714
	          FROM PACKAGE_VERSIONS pv
5715
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5716
        END IF;
5717
 
5718
 
5719
		-- Touch Release if package is in Release Area
5720
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
5721
			Touch_Release (nRtagId);
5722
		END IF;
5723
 
5724
	ELSE
5725
       	/* Patch Ignore Warnings */
5726
 
5727
        -- Delete Current Patch Ignore Warnings
5728
	    DELETE
5729
	      FROM IGNORE_WARNINGS igw
5730
	     WHERE igw.RTAG_ID = nRtagId
5731
	       AND igw.IS_PATCH_IGNORE = 'Y';
5732
 
5733
 
5734
        -- Delete Manual Ignores that need to be Patch Ignores
5735
	    DELETE
5736
	      FROM IGNORE_WARNINGS igw
5737
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
5738
         	(
5739
				SELECT DISTINCT
5740
                       nRtagId,
5741
					   err.PV_ID,
5742
                       err.ERR_DPV AS DPV_ID
5743
				  FROM
5744
				       (
5745
				       /* Full Release Contents used for reference*/
5746
				       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
5747
				         FROM release_content rel, package_versions rpv
5748
				        WHERE rel.pv_id = rpv.pv_id
5749
				          AND rtag_id = nRtagId
5750
				       ) frc,
5751
				       (
5752
				        /* DPV_IDs not fount in release*/
5753
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5754
				          FROM package_dependencies dep
5755
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5756
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5757
				       ) err,
5758
				       (
5759
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5760
				          FROM PACKAGE_PATCHES pp,
5761
				          	   PACKAGE_DEPENDENCIES dep,
5762
				          	   RELEASE_CONTENT rc
5763
				         WHERE rc.RTAG_ID = nRtagId
5764
				           AND rc.PV_ID = pp.PV_ID
5765
				           AND dep.PV_ID = pp.PATCH_ID
5766
				       ) pp,
5767
				       package_versions errpkg,
5768
				       package_versions errpv
5769
				 WHERE err.err_dpv = errpv.pv_id
5770
				   AND errpv.pkg_id = frc.pkg_id(+)
5771
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5772
				   AND err.pv_id = errpkg.pv_id
5773
				   AND err.PV_ID = pp.PV_ID
5774
				   AND frc.PV_ID = pp.DPV_ID
5775
			);
5776
 
5777
        /*
5778
        ---------------------------------------------------
5779
        --  Make sure that select statement above and below are same
5780
        ---------------------------------------------------
5781
        */
5782
 
5783
 
5784
		-- Insert Patch Ignores
5785
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
5786
		SELECT DISTINCT
5787
			   nRtagId,
5788
		       err.PV_ID,
5789
		       err.ERR_DPV AS DPV_ID,
5790
		       'Y'
5791
		  FROM
5792
		       (
5793
		       /* Full Release Contents used for reference*/
5794
		       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
5795
		         FROM release_content rel, package_versions rpv
5796
		        WHERE rel.pv_id = rpv.pv_id
5797
		          AND rtag_id = nRtagId
5798
		       ) frc,
5799
		       (
5800
		        /* DPV_IDs not fount in release*/
5801
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5802
		          FROM package_dependencies dep
5803
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5804
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5805
		       ) err,
5806
		       (
5807
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5808
		          FROM PACKAGE_PATCHES pp,
5809
		          	   PACKAGE_DEPENDENCIES dep,
5810
		          	   RELEASE_CONTENT rc
5811
		         WHERE rc.RTAG_ID = nRtagId
5812
		           AND rc.PV_ID = pp.PV_ID
5813
		           AND dep.PV_ID = pp.PATCH_ID
5814
		       ) pp,
5815
		       package_versions errpkg,
5816
		       package_versions errpv
5817
		 WHERE err.err_dpv = errpv.pv_id
5818
		   AND errpv.pkg_id = frc.pkg_id(+)
5819
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5820
		   AND err.pv_id = errpkg.pv_id
5821
		   AND err.PV_ID = pp.PV_ID
5822
		   AND frc.PV_ID = pp.DPV_ID;
5823
 
5824
 
5825
    END IF;
5826
 
5827
 
5828
END Ignore_Dependency_Warnings;
5829
/
5830
 
5831
CREATE OR REPLACE PROCEDURE UnRipple_Package (
5832
        sPvIdList IN VARCHAR2,
5833
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5834
        nUserId IN NUMBER
5835
    ) IS
5836
/* ---------------------------------------------------------------------------
5837
    Version: 4.1
5838
   --------------------------------------------------------------------------- */
5839
 
5840
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5841
 
5842
BEGIN
5843
 
5844
    IF (sPvIdList IS NULL) THEN
5845
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5846
    END IF;
5847
 
5848
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5849
 
5850
    -- UnRipple Package
5851
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
5852
    SELECT nRtagId, pv.PV_ID
5853
    FROM PACKAGE_VERSIONS pv
5854
    WHERE pv.PV_ID IN (
5855
        SELECT *
5856
        FROM TABLE (
5857
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
5858
        )
5859
    );
5860
 
5861
    /* LOG ACTION */
5862
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
5863
 
5864
END UnRipple_Package;
5865
/
5866
 
5867
CREATE OR REPLACE PROCEDURE set_to_autobuildable (
5868
   nrtagid     IN   NUMBER,
5869
   spvidlist   IN   VARCHAR2
5870
)
5871
IS
5872
/******************************************************************************
5873
   NAME:       SET_TO_AUTOBUILDABLE
5874
   PURPOSE:
5875
 
5876
   REVISIONS:
5877
   Ver        Date        Author           Description
5878
   ---------  ----------  ---------------  ------------------------------------
5879
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
5880
 
5881
   NOTES:
5882
 
5883
   Automatically available Auto Replace Keywords:
5884
      Object Name:     SET_TO_AUTOBUILDABLE
5885
      Sysdate:         15/12/2006
5886
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
5887
      Username:         (set in TOAD Options, Procedure Editor)
5888
      Table Name:       (set in the "New PL/SQL Object" dialog)
5889
 
5890
******************************************************************************/
5891
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
5892
   PvId NUMBER;
5893
BEGIN
5894
 
5895
   npvidcollector := in_list_number2 (spvidlist);
5896
 
5897
   UPDATE package_versions
5898
      SET is_autobuildable = 'N'
5899
    WHERE pv_id IN (SELECT pv_id
5900
                      FROM release_content
5901
                     WHERE rtag_id = nrtagid);
5902
 
5903
 
5904
 
5905
   	FOR i IN 1..npvidcollector.COUNT
5906
	LOOP
5907
		PvId := npvidcollector(i);
5908
 
5909
		UPDATE package_versions
5910
		set is_autobuildable = 'Y'
5911
		where pv_id = PvId;
5912
 
5913
	END LOOP;
5914
 
5915
 
5916
END set_to_autobuildable;
5917
/
5918
 
5919
CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS
5920
/* ---------------------------------------------------------------------------
5921
    Version: 3.0
5922
   --------------------------------------------------------------------------- */
5923
 
5924
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5925
 
5926
BEGIN
5927
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
5928
 
5929
	 -- Touch Release for Rebuild
5930
     UPDATE RELEASE_TAGS rt SET
5931
     	rt.REBUILD_ENV = 'Y',
5932
        rt.REBUILD_STAMP = 0
5933
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5934
 
5935
 
5936
END Touch_Release_Bulk;
5937
/
5938
 
5939
CREATE OR REPLACE PROCEDURE TEST_MARCO IS
5940
/******************************************************************************
5941
   NAME:       TEST_MARCO
5942
   PURPOSE:    
5943
 
5944
   REVISIONS:
5945
   Ver        Date        Author           Description
5946
   ---------  ----------  ---------------  ------------------------------------
5947
   1.0        2/03/2007          1. Created this procedure.
5948
 
5949
   NOTES:
5950
 
5951
   Automatically available Auto Replace Keywords:
5952
      Object Name:     TEST_MARCO
5953
      Sysdate:         2/03/2007
5954
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
5955
      Username:         (set in TOAD Options, Procedure Editor)
5956
      Table Name:       (set in the "New PL/SQL Object" dialog)
5957
 
5958
******************************************************************************/
5959
 
5960
parPv_id    NUMBER;
5961
parPkg_id   NUMBER;
5962
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5963
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5964
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5965
BEGIN
5966
 
5967
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
5968
 
5969
        /* LOG ACTION */
5970
        Log_Action ( parPv_id, 'new_version', 3764,
5971
        			 'New package version: '|| parPv_id || '.' );
5972
 
5973
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
5974
 
5975
     -- Clone Package Version Details --
5976
            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,
5977
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
5978
                SELECT parPv_id         AS pv_id,
5979
                       pv.pkg_id        AS pkg_id,
5980
                       parPv_id || '.'    AS pkg_version,
5981
                       'N'              AS dlocked,
5982
                       Ora_Sysdate      AS created_stamp,
5983
                       3764        AS creator_id,
5984
                       Ora_Sysdatetime  AS modified_stamp,
5985
                       3764        AS modifier_id,
5986
                       SSV_MM          AS V_MM,
5987
                       SSV_NMM         AS V_NMM,
5988
                       SSV_EXT          AS V_EXT,
5989
                       pv.src_path,
5990
                       pv.pv_description,
5991
                       pv.PV_OVERVIEW,
5992
                       112982 	AS LAST_PV_ID,
5993
                       pv.owner_id,
5994
					   pv.BUILD_TYPE,
5995
					   pv.IS_BUILD_ENV_REQUIRED,
5996
					   pv.bs_id,
5997
					   pv.is_autobuildable,
5998
					   pv.IS_DEPLOYABLE
5999
                  FROM PACKAGE_VERSIONS pv
6000
                 WHERE pv.pv_id = 112982;		
6001
 
6002
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6003
 
6004
 
6005
END TEST_MARCO;
6006
/
6007
 
6008
CREATE OR REPLACE PACKAGE PK_BUILDAPI_TEST IS
6009
/*
6010
------------------------------
6011
||  Last Modified:  S.Vukovic
6012
||  Modified Date:  30/Mar/2005
6013
||  Spec Version:   1.0
6014
------------------------------
6015
*/
6016
 
6017
	/*================================================================================================*/
6018
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
6019
								  sOsName IN VARCHAR2,
6020
								  sOrigFilePath IN VARCHAR2,
6021
								  sFileName IN VARCHAR2,
6022
								  sDestFilePath IN VARCHAR2,
6023
								  nByteSize IN NUMBER,
6024
								  sCRCcksum IN VARCHAR2 );
6025
 
6026
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
6027
    /*================================================================================================*/
6028
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
6029
	/*================================================================================================*/
6030
 
6031
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
6032
			  					   	 sWebServer IN VARCHAR2,
6033
									 sMailServer IN VARCHAR2,
6034
									 sMailSender IN VARCHAR2);
6035
	/*================================================================================================*/
6036
 
6037
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
6038
	/*================================================================================================*/
6039
 
6040
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
6041
	/*================================================================================================*/
6042
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
6043
	/*================================================================================================*/	        
6044
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
6045
	/*================================================================================================*/	
6046
 
6047
END PK_BUILDAPI_TEST;
6048
/
6049
 
6050
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
6051
 
6052
/* ---------------------------------------------------------------------------
6053
    Version: 3.0.0
6054
   --------------------------------------------------------------------------- */
6055
 
6056
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6057
	pos				   NUMBER;
6058
	in_list			   VARCHAR2(4000) := sInList || ',';
6059
 
6060
BEGIN
6061
 
6062
	IF NOT sInList IS NULL
6063
	THEN
6064
		LOOP
6065
	        EXIT WHEN in_list IS NULL;
6066
	        pos := INSTR ( in_list, ',' );
6067
	        sync_rtags.extend;
6068
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
6069
	        in_list := SUBSTR ( in_list, pos+1 );
6070
		END LOOP;
6071
	END IF;
6072
 
6073
	RETURN sync_rtags;
6074
END IN_LIST_NUMBER;
6075
/
6076
 
6077
CREATE OR REPLACE PROCEDURE delete_autobuild_failure_info
6078
IS
6079
/******************************************************************************
6080
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
6081
   PURPOSE:
6082
 
6083
   REVISIONS:
6084
   Ver        Date        Author           Description
6085
   ---------  ----------  ---------------  ------------------------------------
6086
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
6087
 
6088
   NOTES:
6089
 
6090
   Automatically available Auto Replace Keywords:
6091
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
6092
      Sysdate:         2/06/2006
6093
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
6094
      Username:         (set in TOAD Options, Procedure Editor)
6095
      Table Name:       (set in the "New PL/SQL Object" dialog)
6096
 
6097
******************************************************************************/
6098
BEGIN
6099
   DELETE FROM autobuild_failure
6100
         WHERE group_email_id NOT IN (SELECT group_email_id
6101
                                        FROM members_group);
6102
END delete_autobuild_failure_info;
6103
/
6104
 
6105
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT IS
6106
/*
6107
------------------------------
6108
||  Last Modified:  Rupesh Solanki
6109
||  Modified Date:  29/Jan/2007
6110
||  Spec Version:   1.1
6111
------------------------------
6112
*/
6113
 
6114
	TYPE typeCur IS REF CURSOR;
6115
 
6116
    /*================================================================================================*/
6117
 
6118
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
6119
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6120
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6121
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6122
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6123
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6124
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
6125
 
6126
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6127
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6128
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6129
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6130
 
6131
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
6132
 
6133
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6134
 
6135
 
6136
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6137
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6138
 
6139
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6140
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6141
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6142
 
6143
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
6144
 
6145
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
6146
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
6147
 
6148
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
6149
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
6150
							 CloneFromPvId IN NUMBER );
6151
 
6152
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6153
 
6154
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
6155
 
6156
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6157
 
6158
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
6159
 
6160
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
6161
	/*================================================================================================*/
6162
 
6163
END PK_ENVIRONMENT;
6164
/
6165
 
6166
CREATE OR REPLACE PROCEDURE Clear_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6167
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6168
											 nUserId IN NUMBER ) IS
6169
/* ---------------------------------------------------------------------------
6170
    Version: 4.0
6171
   --------------------------------------------------------------------------- */
6172
 
6173
BEGIN
6174
 
6175
    -- Clear Advisory Ripple Package
6176
    DELETE FROM ADVISORY_RIPPLE
6177
	WHERE PV_ID = nPvId
6178
	AND RTAG_ID = nRtagId;
6179
 
6180
    /* LOG ACTION */
6181
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
6182
 
6183
	/*Rebuild_Environment(nRtagId);*/
6184
 
6185
END Clear_Advisory_Ripple;
6186
/
6187
 
6188
CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6189
											 nUserId IN NUMBER ) IS
6190
/* ---------------------------------------------------------------------------
6191
    Version: 4.0
6192
   --------------------------------------------------------------------------- */
6193
 
6194
BEGIN
6195
 
6196
    -- Lock Package
6197
    UPDATE PACKAGE_VERSIONS pv SET
6198
    	pv.DLOCKED = 'Y'
6199
    WHERE pv.PV_ID = nPvId;
6200
 
6201
    /* LOG ACTION */
6202
   	Log_Action ( nPvId, 'lock_package', nUserId );
6203
 
6204
END Lock_Package;
6205
/
6206
 
6207
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env_Temp ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6208
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6209
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6210
														 ) IS
6211
/* ---------------------------------------------------------------------------
6212
    Last Modified: Rupesh Solanki
6213
	Version: 3.0.1
6214
   --------------------------------------------------------------------------- */
6215
 
6216
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6217
   BsId NUMBER;
6218
   HackBsId NUMBER;
6219
 
6220
 
6221
BEGIN
6222
 
6223
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6224
 
6225
   -- Delete Current Build Env settings
6226
   DELETE FROM PACKAGE_BUILD_ENV
6227
   WHERE pv_id = nPvId;
6228
 
6229
   -- Delet Current Package Build Info Settings
6230
   DELETE FROM PACKAGE_BUILD_INFO
6231
   WHERE pv_id = nPvId;
6232
 
6233
   -- Reset flag to N
6234
   UPDATE PACKAGE_VERSIONS SET
6235
	   IS_BUILD_ENV_REQUIRED = 'N'
6236
   WHERE PV_ID = nPvId;
6237
 
6238
 
6239
   -- Set new Build Env
6240
   IF NOT sBuildEnvIdList IS NULL THEN
6241
	FOR i IN 1..nBsCollector.COUNT
6242
	LOOP   
6243
 
6244
	BsId := nBsCollector(i);
6245
 
6246
	IF nBuildStandard = 2 THEN
6247
	   IF BsId = 1 THEN
6248
	   	  HackBsId := 11;
6249
	   ELSE
6250
	   	  HackBsId := 12;
6251
	   END IF;
6252
 
6253
   	  -- Insert into PACKAGE_BUILD_ENV
6254
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6255
	  SELECT nPvId AS PV_ID,
6256
	  		 be.BE_ID
6257
	    FROM BUILD_ENVIRONMENTS be
6258
	   WHERE be.BE_ID IN ( HackBsId );
6259
 
6260
   	  -- Insert into PACKAGE_BUILD_INFO
6261
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6262
	  SELECT nPvId AS PV_ID,
6263
	  		 be.BM_ID
6264
	    FROM BUILD_MACHINES be
6265
	   WHERE be.BM_ID IN ( BsId );						 
6266
 
6267
	   -- Set flag to Y
6268
	   UPDATE PACKAGE_VERSIONS SET
6269
		   IS_BUILD_ENV_REQUIRED = 'Y'
6270
	   WHERE PV_ID = nPvId;	
6271
 
6272
 
6273
	ELSE
6274
 
6275
   	  -- Insert into PACKAGE_BUILD_ENV
6276
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6277
	  SELECT nPvId AS PV_ID,
6278
	  		 be.BE_ID
6279
	    FROM BUILD_ENVIRONMENTS be
6280
	   WHERE be.BE_ID IN ( BsId );
6281
 
6282
   	  -- Insert into PACKAGE_BUILD_INFO
6283
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6284
	  SELECT nPvId AS PV_ID,
6285
	  		 be.BM_ID
6286
	    FROM BUILD_MACHINES be
6287
	   WHERE be.BM_ID IN ( BsId );						 
6288
 
6289
	   -- Set flag to Y
6290
	   UPDATE PACKAGE_VERSIONS SET
6291
		   IS_BUILD_ENV_REQUIRED = 'Y'
6292
	   WHERE PV_ID = nPvId;
6293
 
6294
	END IF;  
6295
 
6296
 
6297
	END LOOP;	   
6298
 
6299
   END IF;
6300
 
6301
 
6302
END Set_Package_Build_Env_Temp;
6303
/
6304
 
6305
CREATE OR REPLACE PROCEDURE Rename_Package_Version ( NNpv_id IN NUMBER,
6306
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6307
													 cBuildType IN CHAR,
6308
                                                     NNuser_id IN NUMBER,
6309
                                                     errMessage OUT VARCHAR2 ) IS
6310
/* ---------------------------------------------------------------------------
6311
    Version: 3.2
6312
   --------------------------------------------------------------------------- */
6313
 
6314
    sPackageVersion VARCHAR2(4000);
6315
	sLabel VARCHAR2(4000) := NULL;
6316
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
6317
 
6318
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6319
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6320
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6321
 
6322
    CURSOR package_versions_cur IS
6323
        SELECT pv_id
6324
     	  FROM package_versions
6325
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
6326
     	   AND pkg_version = SSpkg_version;
6327
    package_versions_rec package_versions_cur%ROWTYPE;
6328
 
6329
 
6330
BEGIN
6331
 
6332
    /* ---------------------------------------------------- */
6333
    /* Find if package_version exists                       */
6334
    /* ---------------------------------------------------- */
6335
 
6336
	errMessage := NULL;
6337
 
6338
 
6339
	-- Get previous version
6340
	SELECT pv.PKG_VERSION INTO OldPkgVersion
6341
      FROM PACKAGE_VERSIONS pv
6342
     WHERE pv.PV_ID = NNpv_id;
6343
 
6344
 
6345
	sPackageVersion := SSpkg_version;
6346
 
6347
 
6348
	IF OldPkgVersion != sPackageVersion THEN
6349
 
6350
	    OPEN package_versions_cur;
6351
	    FETCH package_versions_cur INTO package_versions_rec;
6352
 
6353
	    IF package_versions_cur%NOTFOUND
6354
	    THEN
6355
 
6356
			-- Split current version in parts
6357
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6358
 
6359
 
6360
		    -- Automated built config
6361
			IF (cBuildType = 'A') THEN
6362
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
6363
			END IF;
6364
 
6365
 
6366
	        -- Packge version not found, hence rename it.
6367
	        UPDATE package_versions
6368
	           SET pkg_version = sPackageVersion,
6369
	               v_mm = SSV_MM,
6370
	               v_nmm = SSV_NMM,
6371
	               v_ext = SSV_EXT,
6372
	               modified_stamp = ORA_SYSDATETIME,
6373
	               modifier_id = NNuser_id,
6374
				   build_type = cBuildType,
6375
				   pkg_label = NULL
6376
	         WHERE pv_id = NNpv_id;
6377
 
6378
 
6379
			IF (cBuildType = 'A') THEN
6380
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
6381
				UPDATE PACKAGE_VERSIONS pv SET
6382
					pv.PKG_LABEL = sLabel
6383
		         WHERE pv_id = NNpv_id;
6384
			END IF;
6385
 
6386
			/* LOG ACTION */
6387
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
6388
 
6389
	    ELSE
6390
	        -- Package version exists. Cannot proceed.
6391
	        errMessage := 'enum_MSG_VERSION_EXISTS';
6392
 
6393
	    END IF;
6394
 
6395
	    CLOSE package_versions_cur;
6396
 
6397
	END IF;
6398
 
6399
 
6400
 
6401
 
6402
END Rename_Package_Version;
6403
/
6404
 
6405
CREATE OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
6406
IS
6407
/* ---------------------------------------------------------------------------
6408
    Version: 3.0.0
6409
   --------------------------------------------------------------------------- */
6410
 
6411
BEGIN
6412
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
6413
    THEN
6414
        RETURN FALSE;
6415
    ELSE
6416
        RETURN TRUE;
6417
    END IF;
6418
 
6419
END IS_VERSION_EXTENSION;
6420
/
6421
 
6422
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6423
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6424
                                                          NNuser_id IN NUMBER,
6425
                                                          retPV_ID OUT NUMBER,
6426
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6427
/* ---------------------------------------------------------------------------
6428
    Version: 4.0
6429
   --------------------------------------------------------------------------- */
6430
 
6431
    parPkg_id   NUMBER;
6432
    parPv_id    NUMBER;
6433
    cloneFrom_pv_id NUMBER;
6434
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6435
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6436
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6437
 
6438
    CURSOR packages_cur IS
6439
        SELECT pkg_id FROM PACKAGES
6440
        WHERE pkg_name = SSpkg_name;
6441
    packages_rec packages_cur%ROWTYPE;
6442
 
6443
    CURSOR package_versions_cur IS
6444
        SELECT pv_id FROM PACKAGE_VERSIONS
6445
        WHERE pkg_id = parPkg_id
6446
        AND pkg_version = SSpkg_version;
6447
    package_versions_rec package_versions_cur%ROWTYPE;
6448
 
6449
    CURSOR clone_package_versions_cur IS
6450
        SELECT MAX(pv_id) AS pv_id
6451
          FROM PACKAGE_VERSIONS
6452
         WHERE pkg_id = parPkg_id
6453
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6454
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6455
 
6456
BEGIN
6457
    /* -------------------------------------------- */
6458
    /* Find if pkg_name exists and seed if required */
6459
    /* -------------------------------------------- */
6460
    OPEN packages_cur;
6461
    FETCH packages_cur INTO packages_rec;
6462
 
6463
    IF packages_cur%NOTFOUND
6464
    THEN
6465
        /* INSERT into packages table */
6466
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6467
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6468
 
6469
    ELSE
6470
        parPkg_id := packages_rec.pkg_id;
6471
 
6472
    END IF;
6473
 
6474
    CLOSE packages_cur;
6475
 
6476
 
6477
 
6478
    /* ---------------------------------------------------- */
6479
    /* Find if package_version exists and seed if required  */
6480
    /* ---------------------------------------------------- */
6481
    OPEN package_versions_cur;
6482
    FETCH package_versions_cur INTO package_versions_rec;
6483
 
6484
    IF package_versions_cur%NOTFOUND
6485
    THEN
6486
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6487
 
6488
        /* LOG ACTION */
6489
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6490
        			 'New package version: '|| SSpkg_version );
6491
 
6492
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6493
 
6494
        /* Find similar pkg_name + ext to clone from */
6495
        OPEN clone_package_versions_cur;
6496
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6497
 
6498
 
6499
        IF NOT clone_package_versions_rec.pv_id IS NULL
6500
        THEN
6501
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6502
			IF ( NOT nCloneFromPvId IS NULL) THEN
6503
            	cloneFrom_pv_id := nCloneFromPvId;
6504
			ELSE
6505
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6506
			END IF;
6507
 
6508
            -- Clone Package Version Details --
6509
            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,
6510
                                           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  )
6511
                SELECT parPv_id         AS pv_id,
6512
                       parPkg_id        AS pkg_id,
6513
                       SSpkg_version    AS pkg_version,
6514
                       'N'              AS dlocked,
6515
                       Ora_Sysdate      AS created_stamp,
6516
                       NNuser_id        AS creator_id,
6517
                       Ora_Sysdatetime  AS modified_stamp,
6518
                       NNuser_id        AS modifier_id,
6519
                       SSV_MM           AS V_MM,
6520
                       SSV_NMM          AS V_NMM,
6521
                       SSV_EXT          AS V_EXT,
6522
                       pv.src_path,
6523
                       pv.pv_description,
6524
                       pv.PV_OVERVIEW,
6525
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6526
                       pv.owner_id,
6527
					   pv.BUILD_TYPE,
6528
					   pv.IS_BUILD_ENV_REQUIRED,
6529
					   pv.BS_ID,
6530
					   pv.is_autobuildable,
6531
					   pv.IS_DEPLOYABLE, 
6532
					   pv.ripple_field
6533
                  FROM PACKAGE_VERSIONS pv
6534
                 WHERE pv.pv_id = cloneFrom_pv_id;
6535
 
6536
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6537
 
6538
        ELSE
6539
            /* BRAND NEW version + ext */
6540
            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 )
6541
        	VALUES (
6542
                    parPv_id,
6543
                    parPkg_id,
6544
                    SSpkg_version,
6545
                    'N',
6546
                    Ora_Sysdate,
6547
                    NNuser_id,
6548
                    Ora_Sysdatetime,
6549
                    NNuser_id,
6550
                    SSV_MM,
6551
                    SSV_NMM,
6552
                    SSV_EXT,
6553
                    NNuser_id,
6554
                    parPv_id,
6555
					'M',
6556
					'b'
6557
                   );
6558
 
6559
        END IF;
6560
 
6561
        CLOSE clone_package_versions_cur;
6562
        retPV_ID := parPv_id;
6563
 
6564
    ELSE
6565
        retPV_ID := package_versions_rec.pv_id;
6566
 
6567
    END IF;
6568
 
6569
    CLOSE package_versions_cur;
6570
 
6571
 
6572
 
6573
 
6574
END Seed_Package_Names_Versions;
6575
/
6576
 
6577
CREATE OR REPLACE PROCEDURE Remove_Runtime ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6578
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
6579
                                             nUserId IN NUMBER ) IS
6580
/* ---------------------------------------------------------------------------
6581
    Version: 3.0
6582
   --------------------------------------------------------------------------- */
6583
 
6584
   RuntimeDependency VARCHAR2(4000);
6585
 
6586
BEGIN
6587
 
6588
	-- Get Runtime dependency
6589
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
6590
	  FROM RUNTIME_DEPENDENCIES rtd,
6591
	  	   PACKAGES pkg,
6592
	       PACKAGE_VERSIONS pv
6593
	 WHERE rtd.PV_ID = nPvId
6594
	   AND pv.PKG_ID = pkg.PKG_ID
6595
	   AND rtd.RTD_ID = pv.PV_ID
6596
	   AND rtd.RTD_ID = nRuntimeId;
6597
 
6598
 
6599
	-- Delete Document
6600
    DELETE
6601
      FROM RUNTIME_DEPENDENCIES rtd
6602
     WHERE rtd.PV_ID = nPvId
6603
       AND rtd.RTD_ID = nRuntimeId;
6604
 
6605
 
6606
    /* LOG ACTION */
6607
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
6608
   			     'Runtime package: '|| RuntimeDependency );
6609
 
6610
 
6611
END Remove_Runtime;
6612
/
6613
 
6614
CREATE OR REPLACE PROCEDURE Deprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6615
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6616
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6617
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
6618
											   nUserId IN NUMBER) IS
6619
ext VARCHAR2(50);
6620
 
6621
 
6622
 
6623
 
6624
BEGIN
6625
 
6626
	--Extract the package version extension
6627
	SELECT V_EXT into ext
6628
	FROM PACKAGE_VERSIONS
6629
	WHERE PV_ID = nPvId; 
6630
 
6631
    -- Deprecate Package
6632
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
6633
	VALUES (nRtagId, nPkgId, sComments, ext);
6634
 
6635
	IF ext IS NOT NULL THEN
6636
	   UPDATE RELEASE_CONTENT 
6637
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6638
	   WHERE RTAG_ID = nRtagId
6639
	   AND PV_ID IN (SELECT PV.PV_ID 
6640
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6641
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6642
				  	AND PV.V_EXT = ext
6643
				  	AND PKG.PKG_ID = nPkgId
6644
				 	);						
6645
	ELSE
6646
	   UPDATE RELEASE_CONTENT 
6647
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6648
	   WHERE RTAG_ID = nRtagId
6649
	   AND PV_ID IN (SELECT PV.PV_ID 
6650
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6651
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6652
				  	AND PV.V_EXT IS NULL
6653
				  	AND PKG.PKG_ID = nPkgId
6654
				 	);
6655
	END IF;
6656
 
6657
	UPDATE RELEASE_CONTENT
6658
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
6659
	WHERE RTAG_ID = nRtagId
6660
	AND PV_ID IN (		   SELECT DISTINCT
6661
 	 		  	 		   qry.PV_ID
6662
						        FROM (
6663
								 	  SELECT dep.*,
6664
									  LEVEL AS LEVEL_NUM
6665
									  FROM PACKAGE_DEPENDENCIES dep 
6666
 								START WITH dep.DPV_ID IN ( nPvId ) 
6667
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6668
 								) qry,
6669
								PACKAGES pkg,
6670
								PACKAGE_VERSIONS pv,
6671
								RELEASE_CONTENT rc
6672
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6673
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6674
							 AND rc.DEPRECATED_STATE IS NULL
6675
				 );			 
6676
 
6677
    /* LOG ACTION */
6678
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
6679
 
6680
 
6681
END Deprecate_Package;
6682
/
6683
 
6684
CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (
6685
   nprojid     IN   NUMBER,
6686
   nviewid     IN   NUMBER,
6687
   suserlist   IN   VARCHAR2
6688
)
6689
IS
6690
   groupid   NUMBER;
6691
/******************************************************************************
6692
   NAME:       ADD_AUTOBUILD_FAILURE
6693
   PURPOSE:
6694
 
6695
   REVISIONS:
6696
   Ver        Date        Author           Description
6697
   ---------  ----------  ---------------  ------------------------------------
6698
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
6699
 
6700
   NOTES:
6701
 
6702
   Automatically available Auto Replace Keywords:
6703
      Object Name:     ADD_AUTOBUILD_FAILURE
6704
      Sysdate:         11/04/2006
6705
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
6706
      Username:         (set in TOAD Options, Procedure Editor)
6707
      Table Name:       (set in the "New PL/SQL Object" dialog)
6708
 
6709
******************************************************************************/
6710
BEGIN
6711
   BEGIN
6712
      SELECT group_email_id
6713
        INTO groupid
6714
        FROM autobuild_failure
6715
       WHERE proj_id = nprojid AND view_id = nviewid;
6716
   EXCEPTION
6717
      WHEN NO_DATA_FOUND
6718
      THEN
6719
         --  Create Next Sequence Id ---
6720
         SELECT seq_group_email_id.NEXTVAL
6721
           INTO groupid
6722
           FROM DUAL;
6723
 
6724
         INSERT INTO autobuild_failure
6725
                     (group_email_id, proj_id, view_id
6726
                     )
6727
              VALUES (groupid, nprojid, nviewid
6728
                     );
6729
   END;
6730
 
6731
   add_view_members (groupid, suserlist);
6732
END add_autobuild_failure_info;
6733
/
6734
 
6735
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;
6736
/
6737
 
6738
CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"
6739
as TABLE of VARCHAR2(4000)
6740
/
6741
 
6742
CREATE OR REPLACE PROCEDURE CHANGE_RELEASE_MODE ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
6743
/* ---------------------------------------------------------------------------
6744
    Version: 3.0.0
6745
   --------------------------------------------------------------------------- */
6746
 
6747
	cMode CHAR(1) := NULL;  
6748
	nProjId NUMBER; 
6749
 
6750
BEGIN
6751
 
6752
 
6753
	/*
6754
	Author: Rupesh Solanki
6755
	Modified: 24th October 2006
6756
	Reason: Added the archive mode state into Release Manager 
6757
	||	1 - Open Mode
6758
	||	2 - Restrictive Mode
6759
	||	3 - Closed Mode
6760
	||	4 - CCB Mode
6761
	||	5 - Archive Mode
6762
	*/	
6763
	-- Get project Id
6764
	SELECT rt.PROJ_ID INTO nProjId
6765
	  FROM RELEASE_TAGS rt
6766
	 WHERE rt.RTAG_ID = nRtagId; 
6767
 
6768
	IF nModeCode = 1 THEN
6769
		-- Open Mode
6770
		cMode := 'N';
6771
 
6772
		/* LOG ACTION */
6773
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
6774
 
6775
	ELSIF nModeCode = 2 THEN
6776
		-- Restrictive Mode
6777
		cMode := 'R';
6778
 
6779
		/* LOG ACTION */
6780
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
6781
 
6782
	ELSIF nModeCode = 3 THEN
6783
		-- Closed Mode
6784
		cMode := 'Y';
6785
 
6786
		/* LOG ACTION */
6787
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
6788
 
6789
	ELSIF nModeCode = 4 THEN
6790
		-- CCB Mode
6791
		cMode := 'C';
6792
 
6793
		/* LOG ACTION */
6794
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
6795
 
6796
	ELSIF nModeCode = 5 THEN
6797
		-- Archive Mode
6798
		cMode := 'A';
6799
 
6800
		/* LOG ACTION */
6801
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
6802
 
6803
 
6804
	END IF;
6805
 
6806
 
6807
 
6808
	-- Now update table
6809
	IF NOT cMode IS NULL THEN
6810
		UPDATE RELEASE_TAGS rt SET
6811
		rt.OFFICIAL = cMode
6812
		WHERE rt.RTAG_ID = nRtagId;
6813
 
6814
	END IF;
6815
 
6816
 
6817
END CHANGE_RELEASE_MODE;
6818
/
6819
 
6820
CREATE OR REPLACE PROCEDURE Remove_Document ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6821
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
6822
                                              nUserId IN NUMBER ) IS
6823
/* ---------------------------------------------------------------------------
6824
    Version: 3.0
6825
   --------------------------------------------------------------------------- */
6826
 
6827
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
6828
 
6829
BEGIN
6830
 
6831
	-- Get Doc Num
6832
    SELECT pd.DOC_NUM INTO DocNumber
6833
      FROM PACKAGE_DOCUMENTS pd
6834
     WHERE pd.PV_ID = nPvId
6835
       AND pd.DOC_ID = nDocId;
6836
 
6837
 
6838
	-- Delete Document
6839
    DELETE
6840
      FROM PACKAGE_DOCUMENTS pd
6841
     WHERE pd.PV_ID = nPvId
6842
       AND pd.DOC_ID = nDocId;
6843
 
6844
 
6845
    /* LOG ACTION */
6846
   	Log_Action ( nPvId, 'document_remove', nUserId,
6847
   			     'Document number: '|| DocNumber );
6848
 
6849
 
6850
END Remove_Document;
6851
/
6852
 
6853
CREATE OR REPLACE PROCEDURE Update_Unit_Test ( nTest_id IN NUMBER,
6854
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6855
											   nPv_id IN NUMBER,
6856
											   nUserId IN NUMBER,
6857
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6858
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6859
	                                           sCompletion_date IN VARCHAR2,
6860
											   sDpkg_path IN VARCHAR2,
6861
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6862
											   sResults IN VARCHAR2,
6863
											   outFileName OUT VARCHAR2
6864
                                              ) IS
6865
/* ---------------------------------------------------------------------------
6866
    Version: 3.1.0
6867
   --------------------------------------------------------------------------- */
6868
 
6869
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6870
 
6871
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6872
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6873
 
6874
 
6875
BEGIN
6876
 
6877
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6878
       	ResultsURL := sResults;
6879
       ELSE
6880
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6881
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6882
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6883
           END IF;
6884
       END IF;
6885
 
6886
	--- Update Unit Test ---
6887
    UPDATE UNIT_TESTS SET
6888
           TEST_SUMMARY = sTest_summary,
6889
		   NUMOF_TEST = sNumof_test,
6890
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6891
		   COMPLETED_BY = nUserId,
6892
		   RESULTS_URL = ResultsURL,
6893
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6894
     WHERE TEST_ID = nTest_id
6895
       AND PV_ID = nPv_id;
6896
 
6897
END Update_Unit_Test;
6898
/
6899
 
6900
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Test ( nTest_id IN NUMBER,
6901
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6902
											   nPv_id IN NUMBER,
6903
											   nUserId IN NUMBER,
6904
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6905
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6906
	                                           sCompletion_date IN VARCHAR2,
6907
											   sDpkg_path IN VARCHAR2,
6908
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6909
											   sResults IN VARCHAR2,
6910
											   outFileName OUT VARCHAR2
6911
                                              ) IS
6912
/* ---------------------------------------------------------------------------
6913
    Version: 3.1.0
6914
   --------------------------------------------------------------------------- */
6915
 
6916
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6917
 
6918
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6919
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6920
 
6921
 
6922
BEGIN
6923
 
6924
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6925
       	ResultsURL := sResults;
6926
       ELSE
6927
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6928
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6929
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6930
           END IF;
6931
       END IF;
6932
 
6933
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6934
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
6935
    		sResults_url:= 'doc' || '/' || 
6936
			;
6937
        END IF;*/
6938
	--- Update Unit Test ---
6939
    UPDATE UNIT_TESTS SET
6940
           TEST_SUMMARY = sTest_summary,
6941
		   NUMOF_TEST = sNumof_test,
6942
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6943
		   COMPLETED_BY = nUserId,
6944
		   RESULTS_URL = ResultsURL,
6945
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6946
     WHERE TEST_ID = nTest_id
6947
       AND PV_ID = nPv_id;
6948
 
6949
END Update_Unit_Test_Test;
6950
/
6951
 
6952
CREATE OR REPLACE PROCEDURE Update_Additional_Note ( pnNote_id IN NUMBER,
6953
													 pnPv_id IN NUMBER,
6954
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
6955
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
6956
                                                     pnUser_id IN NUMBER,
6957
                                                     outErrCode OUT NUMBER
6958
                                                    ) IS
6959
/* ---------------------------------------------------------------------------
6960
    Version: 3.0.1
6961
   --------------------------------------------------------------------------- */
6962
 
6963
    newID NUMBER;
6964
 
6965
    /* Disallow duplicate Note Titles */
6966
	CURSOR an_duplicate_cur IS
6967
        SELECT COUNT(*) AS cnt_note
6968
          FROM ADDITIONAL_NOTES
6969
         WHERE pv_id = pnPv_id
6970
           AND note_id != pnNote_id
6971
           AND note_title = psNote_title;
6972
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
6973
 
6974
BEGIN
6975
	outErrCode := -1;		-- Set default return error code to ERROR state
6976
 
6977
	OPEN an_duplicate_cur;
6978
    FETCH an_duplicate_cur INTO an_duplicate_rec;
6979
 
6980
    IF an_duplicate_rec.cnt_note < 1
6981
    THEN
6982
		--- Update Additional Note ---
6983
	    UPDATE ADDITIONAL_NOTES SET
6984
		       note_title = psNote_title,
6985
		       note_body = psNote_body,
6986
		       mod_date = Ora_Sysdate,
6987
		       mod_user = pnUser_id
6988
         WHERE note_id = pnNote_id
6989
           AND pv_id = pnPv_id;
6990
		outErrCode := 0;		-- Set return to SUCCESS
6991
	END IF;
6992
 
6993
	CLOSE an_duplicate_cur;
6994
END Update_Additional_Note;
6995
/
6996
 
6997
CREATE OR REPLACE FUNCTION GET_V_EXT (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
6998
 
6999
/* ---------------------------------------------------------------------------
7000
    Version: 3.0.0
7001
   --------------------------------------------------------------------------- */
7002
 
7003
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
7004
    lastDot NUMBER;
7005
 
7006
BEGIN
7007
    lastDot := INSTR (SSpkg_version, '.', -1);
7008
 
7009
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
7010
    THEN
7011
        -- YES dot separator found --
7012
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
7013
 
7014
        IF IS_VERSION_EXTENSION ( SSV_EXT )
7015
        THEN
7016
            RETURN SSV_EXT;
7017
        ELSE
7018
            RETURN NULL;
7019
        END IF;
7020
 
7021
    ELSE
7022
        -- NO dot separator found --
7023
        RETURN NULL;
7024
    END IF;
7025
 
7026
END GET_V_EXT;
7027
/
7028
 
7029
CREATE OR REPLACE PROCEDURE Update_Runtime_Dependency ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7030
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7031
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7032
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7033
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7034
													    NNuser_id IN NUMBER ) IS
7035
/* ---------------------------------------------------------------------------
7036
    Version: 3.0.1
7037
   --------------------------------------------------------------------------- */
7038
 
7039
    retRTD_ID	NUMBER;
7040
	CURSOR rtd_cur IS
7041
	    SELECT pv.pkg_version, pkg.pkg_name
7042
		  FROM runtime_dependencies rtd,
7043
		       package_versions pv,
7044
			   packages pkg
7045
		 WHERE rtd.rtd_id = pv.pv_id
7046
		   AND pv.pkg_id = pkg.pkg_id
7047
		   AND rtd.pv_id = NNpv_id
7048
		   AND rtd.rtd_id = NNrtd_id;
7049
	   rtd_rec rtd_cur%ROWTYPE;
7050
 
7051
	CURSOR old_rtd_cur IS
7052
	    SELECT pv.pv_id
7053
		  FROM package_versions pv
7054
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7055
		 	   			 	    FROM package_versions rtdpv
7056
							   WHERE rtdpv.pv_id = NNrtd_id )
7057
		   AND pv.pkg_version = SSrtd_version;
7058
	old_rtd_rec old_rtd_cur%ROWTYPE;
7059
 
7060
 
7061
BEGIN
7062
 
7063
    -- Get current runtime dependency details
7064
	OPEN rtd_cur;
7065
    FETCH rtd_cur INTO rtd_rec;
7066
 
7067
 
7068
 
7069
 
7070
	IF rtd_rec.pkg_version != SSrtd_version THEN
7071
           -- Version has changed, hence create new runtime dependency --
7072
	    /* NOTE: You must create new version as updating just a version will affect
7073
		        all packages using this runtime dependency and user does not expect that.
7074
		        It is safer to create new version */
7075
		OPEN old_rtd_cur;
7076
		FETCH old_rtd_cur INTO old_rtd_rec;
7077
 
7078
 
7079
		IF old_rtd_cur%NOTFOUND
7080
		THEN
7081
			-- Version not found, hence Create New version --
7082
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7083
 
7084
			-- Update runtime dependency table --
7085
			UPDATE runtime_dependencies SET
7086
				   rtd_id = retRTD_ID,
7087
				   rtd_url = SSrtd_url,
7088
				   rtd_comments = SSrtd_comments
7089
			 WHERE pv_id = NNpv_id
7090
			   AND rtd_id = NNrtd_id;
7091
 
7092
		ELSE
7093
			-- Update runtime dependency table --
7094
			UPDATE runtime_dependencies SET
7095
				   rtd_id = old_rtd_rec.pv_id,
7096
				   rtd_url = SSrtd_url,
7097
				   rtd_comments = SSrtd_comments
7098
			 WHERE pv_id = NNpv_id
7099
			   AND rtd_id = NNrtd_id;
7100
 
7101
		END IF;
7102
 
7103
 
7104
		CLOSE old_rtd_cur;
7105
 
7106
	ELSE
7107
		--  Version has not changed, hence update everithing except	version --
7108
		UPDATE runtime_dependencies SET
7109
			   rtd_url = SSrtd_url,
7110
			   rtd_comments = SSrtd_comments
7111
		 WHERE pv_id = NNpv_id
7112
		   AND rtd_id = NNrtd_id;
7113
 
7114
 
7115
 
7116
	END IF;
7117
 
7118
 
7119
	CLOSE rtd_cur;
7120
 
7121
END Update_Runtime_Dependency;
7122
/
7123
 
7124
CREATE OR REPLACE PROCEDURE                 UPDATE_MISC_VIEW IS
7125
/******************************************************************************
7126
   NAME:       UPDATE_MISC_VIEW
7127
   PURPOSE:    
7128
 
7129
   REVISIONS:
7130
   Ver        Date        Author           Description
7131
   ---------  ----------  ---------------  ------------------------------------
7132
   1.0        16/03/2007          1. Created this procedure.
7133
 
7134
   NOTES:
7135
 
7136
   Automatically available Auto Replace Keywords:
7137
      Object Name:     UPDATE_MISC_VIEW
7138
      Sysdate:         16/03/2007
7139
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7140
      Username:         (set in TOAD Options, Procedure Editor)
7141
      Table Name:       (set in the "New PL/SQL Object" dialog)
7142
 
7143
******************************************************************************/
7144
   CURSOR view_cur /*Create a record set to store the ripple data*/
7145
   IS
7146
   	 SELECT pkg.pkg_id, rc.base_view_id 
7147
	 FROM package_versions pv, packages pkg, release_content rc
7148
	 where rc.rtag_id = 2362
7149
	 and rc.pv_id = pv.pv_id
7150
	 and pv.pkg_id = pkg.pkg_id;
7151
   view_rec   view_cur%ROWTYPE;
7152
 
7153
 
7154
 
7155
BEGIN
7156
   OPEN view_cur;
7157
 
7158
   FETCH view_cur
7159
    INTO view_rec;
7160
 
7161
   WHILE view_cur%FOUND
7162
   LOOP
7163
 
7164
 
7165
	   update release_content
7166
	   set base_view_id = view_rec.base_view_id
7167
	   where rtag_id = 8027
7168
	   and pv_id IN 
7169
	   (
7170
	   	select pv.pv_id from release_content rc, package_versions pv
7171
		where rc.rtag_id = 8027
7172
		and pv.pv_id = rc.pv_id
7173
		and pv.pkg_id = view_rec.pkg_id 
7174
 
7175
	   );
7176
 
7177
 
7178
 
7179
 
7180
 
7181
 
7182
 
7183
 
7184
 
7185
   FETCH view_cur
7186
   		 INTO view_rec;
7187
   END LOOP;	 
7188
 
7189
 
7190
 
7191
 
7192
 
7193
END UPDATE_MISC_VIEW;
7194
/
7195
 
7196
CREATE OR REPLACE PACKAGE PK_WORK_IN_PROGRESS IS
7197
/*
7198
------------------------------
7199
||  Last Modified:  S.Vukovic
7200
||  Modified Date:  2/May/2005
7201
||  Spec Version:   1.0
7202
------------------------------
7203
*/
7204
 
7205
	TYPE typeCur IS REF CURSOR;
7206
 
7207
    /*================================================================================================*/
7208
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7209
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7210
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
7211
 
7212
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
7213
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
7214
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
7215
	/*================================================================================================*/
7216
 
7217
END PK_WORK_IN_PROGRESS;
7218
/
7219
 
7220
CREATE OR REPLACE PROCEDURE level_one_conflicts (
7221
   nnrtag_id       IN   NUMBER,
7222
   nnsession_num   IN   NUMBER
7223
)
7224
IS
7225
/* ---------------------------------------------------------------------------
7226
    Version: 3.0.0
7227
   --------------------------------------------------------------------------- */
7228
BEGIN
7229
   /* ---------  LEVEL 1 CONFILCTS -----------
7230
   || Following states are used:
7231
   || 0 -> NOT FOUND
7232
   || 1 -> MAJOR
7233
   || 2 -> MINOR MINOR
7234
   */
7235
   INSERT INTO temp_env_states
7236
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
7237
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
7238
                      DECODE (frc.v_nmm,
7239
                              NULL, 0,
7240
                              errpv.v_nmm, DECODE (frc.v_mm,
7241
                                                   errpv.v_mm, NULL,
7242
                                                   2
7243
                                                  ),
7244
                              1
7245
                             ) AS MESSAGE
7246
                 FROM (
7247
                       /* Full Release Contents used for reference*/
7248
                       SELECT rpv.pkg_id,
7249
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
7250
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
7251
                         FROM release_content rel, package_versions rpv
7252
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
7253
                      (
7254
                       /* DPV_IDs not fount in release*/
7255
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
7256
                         FROM package_dependencies dep
7257
                        WHERE dep.pv_id IN (SELECT pv_id
7258
                                              FROM release_content
7259
                                             WHERE rtag_id = nnrtag_id)
7260
                          AND NOT dep.dpv_id IN (SELECT pv_id
7261
                                                   FROM release_content
7262
                                                  WHERE rtag_id = nnrtag_id)
7263
                       MINUS
7264
                       /* MINUS Dependencies to be ignored */
7265
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
7266
                         FROM ignore_warnings igw
7267
                        WHERE rtag_id = nnrtag_id) err,
7268
                      package_versions errpkg,
7269
                      package_versions errpv
7270
                WHERE err.err_dpv = errpv.pv_id
7271
                  AND errpv.pkg_id = frc.pkg_id(+)
7272
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
7273
                  AND err.pv_id = errpkg.pv_id;
7274
END level_one_conflicts;
7275
/
7276
 
7277
CREATE OR REPLACE PROCEDURE CLONED_PROCESSES
7278
IS
7279
 
7280
proc_id NUMBER;
7281
/******************************************************************************
7282
   NAME:       DELETE_DO_NOT_RIPPLE
7283
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7284
               IS RELEASED
7285
 
7286
   REVISIONS:
7287
   Ver        Date        Author           Description
7288
   ---------  ----------  ---------------  ------------------------------------
7289
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7290
 
7291
   NOTES:
7292
 
7293
   Automatically available Auto Replace Keywords:
7294
      Object Name:     DELETE_DO_NOT_RIPPLE
7295
      Sysdate:         21/04/2006
7296
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7297
      Username:         (set in TOAD Options, Procedure Editor)
7298
      Table Name:       (set in the "New PL/SQL Object" dialog)
7299
 
7300
******************************************************************************/
7301
   CURSOR ripple_cur
7302
   IS
7303
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
7304
 
7305
   ripple_rec   ripple_cur%ROWTYPE;
7306
BEGIN
7307
   OPEN ripple_cur;
7308
 
7309
   FETCH ripple_cur
7310
    INTO ripple_rec;
7311
 
7312
   WHILE ripple_cur%FOUND
7313
   LOOP
7314
 
7315
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
7316
 
7317
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
7318
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
7319
 
7320
      FETCH ripple_cur
7321
       INTO ripple_rec;
7322
   END LOOP;
7323
END CLONED_PROCESSES;
7324
/
7325
 
7326
CREATE OR REPLACE PACKAGE pk_package_Test
7327
IS
7328
/*
7329
------------------------------
7330
||  Last Modified:  Rupesh Solanki
7331
||  Modified Date:  18/05/2006
7332
||
7333
------------------------------
7334
*/
7335
   TYPE typecur IS REF CURSOR;
7336
 
7337
/*================================================================================================*/
7338
   PROCEDURE new_version (
7339
      nlastpvid                   IN       NUMBER,
7340
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7341
      cbuildtype                  IN       CHAR,
7342
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7343
      nrtagid                     IN       NUMBER,
7344
      nuserid                     IN       NUMBER,
7345
      enumissues_state_imported   IN       NUMBER,
7346
      returnpvid                  OUT      NUMBER
7347
   );
7348
 
7349
   PROCEDURE change_state (
7350
      pvid       IN   NUMBER,
7351
      newstate   IN   package_versions.dlocked%TYPE,
7352
      userid     IN   NUMBER
7353
   );
7354
 
7355
   PROCEDURE new_patch (
7356
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
7357
      nparentpvid        IN       NUMBER,
7358
      spatchidlist       IN       VARCHAR2,
7359
      nuserid            IN       NUMBER,
7360
      returnpatchid      OUT      NUMBER
7361
   );
7362
 
7363
   PROCEDURE obsolete_patch (
7364
      patchid            IN   NUMBER,
7365
      isobsolete         IN   CHAR,
7366
      obsoletecomments   IN   VARCHAR2,
7367
      userid             IN   NUMBER
7368
   );
7369
 
7370
   PROCEDURE obsolete_patches (
7371
      spatchidlist       IN   VARCHAR2,
7372
      isobsolete         IN   CHAR,
7373
      obsoletecomments   IN   VARCHAR2,
7374
      userid             IN   NUMBER
7375
   );
7376
 
7377
   PROCEDURE destroy_package (
7378
      pvid               IN       NUMBER,
7379
      overridewarnings   IN       CHAR DEFAULT 'N',
7380
      problemstring      OUT      VARCHAR2
7381
   );
7382
 
7383
   PROCEDURE add_process (
7384
      nprocid         IN   processes.proc_id%TYPE,
7385
      shealthtag      IN   processes.proc_name%TYPE,
7386
      sprocdesc       IN   processes.proc_description%TYPE,
7387
      scmdinterface   IN   processes.run_as%TYPE,
7388
      spkgowner       IN   processes.pkg_owner%TYPE,
7389
      sisinterface    IN   processes.is_interface%TYPE,
7390
      npvid           IN   package_processes.pv_id%TYPE,
7391
      nuserid         IN   NUMBER
7392
   );
7393
 
7394
   PROCEDURE add_package_process (
7395
      nprocidlist   IN   VARCHAR2,
7396
      npvid         IN   package_processes.pv_id%TYPE,
7397
      nuserid       IN   NUMBER
7398
   );
7399
 
7400
 
7401
 
7402
   PROCEDURE remove_process (
7403
      nprocid   IN   package_processes.proc_id%TYPE,
7404
      npvid     IN   package_processes.pv_id%TYPE,
7405
      nuserid   IN   NUMBER
7406
   );
7407
 
7408
   PROCEDURE move_package (
7409
   	  npvid  			  IN package_versions.pv_id%TYPE,
7410
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
7411
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
7412
	  nuserid			  IN NUMBER		 
7413
   ); 
7414
 
7415
PROCEDURE modify_product_state (
7416
   	  npvid IN package_versions.pv_id%TYPE,
7417
	  nstateid IN product_states.state_id%TYPE,
7418
	  nuserid IN NUMBER
7419
   );
7420
/*================================================================================================*/
7421
END pk_package_Test;
7422
/
7423
 
7424
CREATE OR REPLACE PROCEDURE Shift_Install_Order ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
7425
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
7426
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
7427
/* ---------------------------------------------------------------------------
7428
    Version: 3.0
7429
   --------------------------------------------------------------------------- */
7430
 
7431
currInstallOrder NUMBER;
7432
FromInstallOrder NUMBER;
7433
 
7434
BEGIN
7435
 
7436
	 -- Get Current Install Order
7437
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
7438
       FROM PACKAGE_PATCHES pp
7439
      WHERE pp.PV_ID = nPvId
7440
        AND pp.PATCH_ID = nPatchId;
7441
 
7442
 
7443
	 IF currInstallOrder > nToInstallOrder
7444
	 THEN
7445
 
7446
		FromInstallOrder := nToInstallOrder;
7447
 
7448
	    -- Shift others Up
7449
		UPDATE PACKAGE_PATCHES pp SET
7450
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
7451
		 WHERE pp.PV_ID = nPvId
7452
           AND pp.PATCH_ID != nPatchId
7453
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
7454
 
7455
 
7456
	 ELSIF currInstallOrder < nToInstallOrder
7457
	 THEN
7458
 
7459
		FromInstallOrder := currInstallOrder + 1;
7460
 
7461
		-- Shift others Down
7462
        UPDATE PACKAGE_PATCHES pp SET
7463
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
7464
		 WHERE pp.PV_ID = nPvId
7465
           AND pp.PATCH_ID != nPatchId
7466
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
7467
 
7468
	 END IF;
7469
 
7470
 
7471
	 -- Move Patch to new install order
7472
     UPDATE PACKAGE_PATCHES pp SET
7473
		    pp.INSTALL_ORDER = nToInstallOrder
7474
	  WHERE pp.PV_ID = nPvId
7475
	    AND pp.PATCH_ID = nPatchId;
7476
 
7477
 
7478
END Shift_Install_Order;
7479
/
7480
 
7481
CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEAN
7482
IS
7483
   temp_num NUMBER;
7484
/* ---------------------------------------------------------------------------
7485
    Version: 1.0.0
7486
   --------------------------------------------------------------------------- */
7487
BEGIN
7488
   temp_num := TO_NUMBER(p_val);
7489
   RETURN true;
7490
EXCEPTION WHEN VALUE_ERROR THEN
7491
   RETURN false;
7492
END IS_NUMBER;
7493
/
7494
 
7495
CREATE OR REPLACE PROCEDURE Basic_Clone ( nFROMpv_id IN NUMBER,
7496
										  nTOpv_id IN NUMBER,
7497
                                          nRtag_id IN NUMBER,
7498
                                          nUser_id IN NUMBER,
7499
                                          nTOpkg_id IN NUMBER DEFAULT NULL,
7500
                                          enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
7501
/* ---------------------------------------------------------------------------
7502
    Version: 3.5
7503
   --------------------------------------------------------------------------- */
7504
 
7505
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
7506
 
7507
BEGIN
7508
 
7509
------------------------------------- Clone Dependencies ---------------------------------------------------
7510
	IF NOT nRtag_id IS NULL
7511
    THEN
7512
		-- Auto Update Dependencies --
7513
		INSERT INTO PACKAGE_DEPENDENCIES
7514
		    SELECT nTOpv_id AS pv_id,
7515
		           DECODE(nUser_id,
7516
		                  frc.modifier_id,
7517
		                  frc.pv_id,
7518
		                  DECODE(frc.dlocked,
7519
		                         'Y',
7520
		                         frc.pv_id,
7521
		                         dep.dpv_id)
7522
		                  ) AS dpv_id,
7523
		           nTOpkg_id AS pkg_id,
7524
		           dep.dpkg_id,
7525
		           dep.build_type,
7526
				   dep.display_order
7527
		      FROM PACKAGE_DEPENDENCIES dep,
7528
		           PACKAGE_VERSIONS pv,
7529
		           (
7530
		           /* Full Release Contents used for reference*/
7531
		           SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
7532
		           FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
7533
		           WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
7534
		           ) frc
7535
		     WHERE dep.pv_id = nFROMpv_id
7536
		       AND dep.dpv_id = pv.pv_id
7537
		       AND pv.pkg_id = frc.pkg_id(+)
7538
		       AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
7539
 
7540
	ELSE
7541
		-- Clone Dependencies --
7542
		INSERT INTO PACKAGE_DEPENDENCIES
7543
		    SELECT nTOpv_id         AS pv_id,
7544
		           dep.dpv_id,
7545
		           nTOpkg_id        AS pkg_id,
7546
		           dep.dpkg_id,
7547
		           dep.build_type,
7548
				   dep.display_order
7549
		      FROM PACKAGE_DEPENDENCIES dep
7550
		     WHERE dep.pv_id = nFROMpv_id;
7551
 
7552
	END IF;
7553
 
7554
----------------------------------------- Clone Issues -------------------------------------------------------
7555
	IF enumISSUES_STATE_IMPORTED IS NULL
7556
	THEN
7557
        /* All Issues */
7558
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7559
	         SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7560
	           FROM CQ_ISSUES
7561
              WHERE pv_id = nFROMpv_id;
7562
	ELSE
7563
    	/* Outstanding Issues Only */
7564
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7565
	        SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7566
	          FROM CQ_ISSUES
7567
             WHERE pv_id = nFROMpv_id
7568
               AND iss_state = enumISSUES_STATE_IMPORTED;
7569
	END IF;
7570
 
7571
 
7572
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
7573
	INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
7574
	    SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
7575
	    FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
7576
 
7577
 
7578
--------------------------------------- Clone Additional Notes ------------------------------------------------
7579
	INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
7580
    	 SELECT an.NOTE_ID,
7581
                nTOpv_id AS PV_ID,
7582
                an.NOTE_TITLE,
7583
                an.NOTE_BODY,
7584
                an.MOD_DATE,
7585
                an.MOD_USER
7586
           FROM ADDITIONAL_NOTES an
7587
          WHERE an.PV_ID = nFROMpv_id;
7588
 
7589
 
7590
-------------------------------------------- Clone Unit Tests -------------------------------------------------
7591
	-- Clone only Automatic unit tests --
7592
	INSERT INTO UNIT_TESTS (
7593
							TEST_ID,
7594
							PV_ID,
7595
							TEST_TYPES_FK,
7596
							TEST_SUMMARY,
7597
							COMPLETION_DATE,
7598
							COMPLETED_BY,
7599
							RESULTS_URL,
7600
							RESULTS_ATTACHMENT_NAME,
7601
							NUMOF_TEST
7602
							)
7603
    	 SELECT ut.TEST_ID,
7604
                nTOpv_id AS PV_ID,
7605
                ut.TEST_TYPES_FK,
7606
                ut.TEST_SUMMARY,
7607
                Ora_Sysdate AS COMPLETION_DATE,
7608
                nUser_id AS COMPLETED_BY,
7609
                ut.RESULTS_URL,
7610
				ut.RESULTS_ATTACHMENT_NAME,
7611
				ut.NUMOF_TEST
7612
           FROM UNIT_TESTS ut
7613
          WHERE ut.PV_ID = nFROMpv_id
7614
            AND ut.TEST_TYPES_FK IN ( 5, 7 );
7615
 
7616
	-- Clone only Interactive Unit Tests --
7617
	INSERT INTO UNIT_TESTS (
7618
		   				    TEST_ID, 
7619
							PV_ID,
7620
							TEST_TYPES_FK,
7621
							TEST_SUMMARY
7622
							)
7623
		SELECT ut.TEST_ID, 
7624
			   nTOpv_id AS PV_ID,
7625
			   ut.TEST_TYPES_FK,
7626
			   ut.TEST_SUMMARY
7627
		  FROM UNIT_TESTS ut
7628
		 WHERE ut.PV_ID = nFROMpv_id
7629
		   AND ut.TEST_TYPES_FK IN (6);
7630
 
7631
 
7632
-------------------------------------------- Clone Package Documents ------------------------------------------
7633
	INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
7634
    	 SELECT nTOpv_id AS PV_ID,
7635
		 		pd.test_id,
7636
				pd.doc_num,
7637
				pd.doc_id,
7638
                pd.IS_LATEST
7639
           FROM PACKAGE_DOCUMENTS pd
7640
          WHERE pd.PV_ID = nFROMpv_id;
7641
 
7642
-------------------------------------------- Clone Build Environments -----------------------------------------
7643
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
7644
	SELECT nTOpv_id AS PV_ID,
7645
		   pkgbe.BE_ID,
7646
		   pkgbe.BUILD_TYPE
7647
	  FROM PACKAGE_BUILD_ENV pkgbe
7648
	 WHERE pkgbe.PV_ID = nFROMpv_id;
7649
---------------------------------------------Clone Package Build Info------------------------------------------
7650
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
7651
	SELECT nTOpv_id AS PV_ID, 
7652
		   pkgbinfo.BM_ID,
7653
		   pkgbinfo.BSA_ID
7654
	  FROM PACKAGE_BUILD_INFO pkgbinfo
7655
	 WHERE pkgbinfo.PV_ID = nFROMpv_id;
7656
---------------------------------------------Clone Package Version Processes-----------------------------------
7657
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
7658
	SELECT nTOpv_id AS PV_ID,
7659
		   pp.PROC_ID
7660
	  FROM PACKAGE_PROCESSES pp
7661
	  WHERE pp.PV_ID = nFROMpv_id;		   
7662
---------------------------------------------------------------------------------------------------------------
7663
 
7664
	/* LOG ACTION */
7665
    SELECT pv.PKG_VERSION INTO FromVersion
7666
      FROM PACKAGE_VERSIONS pv
7667
     WHERE pv.PV_ID = nFROMpv_id;
7668
 
7669
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
7670
    			 'Details cloned from: '|| FromVersion );
7671
 
7672
---------------------------------------------------------------------------------------------------------------
7673
 
7674
END Basic_Clone;
7675
/
7676
 
7677
CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
7678
/* ---------------------------------------------------------------------------
7679
    Version: 3.0.0
7680
   --------------------------------------------------------------------------- */
7681
 
7682
 
7683
BEGIN
7684
 
7685
	 --- Delete From RELEASE_COMPONENTS
7686
	 DELETE FROM RELEASE_COMPONENTS
7687
	 WHERE PV_ID = nPvId;
7688
 
7689
END Remove_Components;
7690
/
7691
 
7692
CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version   ( nPv_id 				IN NUMBER,
7693
														  sSyncRtagsInList		IN VARCHAR2,
7694
				                                          nUser_id 				IN NUMBER ) IS
7695
/* ---------------------------------------------------------------------------
7696
    Version: 3.0.0
7697
   --------------------------------------------------------------------------- */
7698
 
7699
	CURSOR sync_rtags_cur IS
7700
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
7701
		  FROM release_content rc,
7702
		  	   package_versions pv,
7703
		       package_versions opv
7704
		 WHERE rc.pv_id = pv.pv_id
7705
		   AND opv.pkg_id = pv.pkg_id
7706
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
7707
		   AND opv.pv_id = nPv_id
7708
		   AND rtag_id IN ( SELECT *
7709
		   	   		   	      FROM THE (
7710
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
7711
					       		   	    FROM dual
7712
									   )
7713
						  );
7714
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
7715
 
7716
BEGIN
7717
 
7718
	OPEN sync_rtags_cur;
7719
	FETCH sync_rtags_cur INTO sync_rtags_rec;
7720
 
7721
	WHILE sync_rtags_cur%FOUND
7722
	LOOP
7723
		DELETE FROM RELEASE_CONTENT
7724
		 WHERE rtag_id = sync_rtags_rec.rtag_id
7725
	       AND pv_id = sync_rtags_rec.pv_id;
7726
 
7727
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
7728
	   		   VALUES ( sync_rtags_rec.rtag_id,
7729
		       		  	nPv_id,
7730
						sync_rtags_rec.BASE_VIEW_ID,
7731
	           			Ora_Sysdate,
7732
	           			nUser_id,
7733
 
7734
	      	   		   );
7735
 
7736
-- 		UPDATE RELEASE_CONTENT
7737
-- 	       SET pv_id = nPv_id,
7738
-- 	           insert_stamp = Ora_Sysdate,
7739
-- 	           insertor_id = nUser_id
7740
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
7741
-- 	       AND pv_id = sync_rtags_rec.pv_id;
7742
 
7743
		FETCH sync_rtags_cur INTO sync_rtags_rec;
7744
	END LOOP;
7745
 
7746
	CLOSE sync_rtags_cur;
7747
 
7748
END Sync_Projects_New_Version;
7749
/
7750
 
7751
CREATE OR REPLACE PROCEDURE Set_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7752
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7753
											 nUserId IN NUMBER ) IS
7754
/* ---------------------------------------------------------------------------
7755
    Version: 4.0
7756
   --------------------------------------------------------------------------- */
7757
 
7758
BEGIN
7759
 
7760
    -- Set Advisory Ripple Package
7761
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
7762
	VALUES (nRtagId, nPvId);
7763
 
7764
    /* LOG ACTION */
7765
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
7766
 
7767
	/*Rebuild_Environment(nRtagId);*/
7768
 
7769
END Set_Advisory_Ripple;
7770
/
7771
 
7772
CREATE OR REPLACE PACKAGE pk_project IS
7773
/*
7774
------------------------------
7775
||  Last Modified:  J.Tweddle
7776
||  Modified Date:  23/Aug/2007
7777
||  Spec Version:   1.0
7778
------------------------------
7779
*/
7780
 
7781
    TYPE typecur IS REF CURSOR;
7782
 
7783
    /*------------------------------------------------------------------------*/
7784
    PROCEDURE update_base_url (
7785
        nprojid   IN  projects.proj_id%TYPE,
7786
        sbaseurl  IN  VARCHAR2
7787
    );
7788
    /*------------------------------------------------------------------------*/
7789
 
7790
END pk_project;
7791
/
7792
 
7793
CREATE OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT  (
7794
  sender      IN VARCHAR2,
7795
  recipient   IN VARCHAR2,
7796
  ccrecipient IN VARCHAR2,
7797
  subject     IN VARCHAR2,
7798
  message     IN VARCHAR2
7799
  ) IS
7800
 
7801
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
7802
  connection utl_smtp.connection;
7803
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
7804
  header VARCHAR2(1000);
7805
 
7806
BEGIN
7807
 
7808
  --
7809
  -- Start the connection.
7810
  --
7811
  connection := utl_smtp.open_connection(mailhost,25);
7812
 
7813
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
7814
     'From: '||sender||''||crlf||
7815
  'Subject: '||subject||crlf||
7816
       'To: '||recipient||crlf||
7817
       'CC: '||ccrecipient;
7818
 
7819
  --
7820
  -- Handshake with the SMTP server
7821
  --
7822
  utl_smtp.helo(connection, mailhost);
7823
  utl_smtp.mail(connection, sender);
7824
  utl_smtp.rcpt(connection, recipient);
7825
  utl_smtp.rcpt(connection, ccrecipient);
7826
  utl_smtp.open_data(connection);
7827
  --
7828
  -- Write the header
7829
  --
7830
  utl_smtp.write_data(connection, header);
7831
  --
7832
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
7833
  --
7834
  utl_smtp.write_data(connection, crlf ||message);
7835
  utl_smtp.close_data(connection);
7836
  utl_smtp.quit(connection);
7837
 
7838
EXCEPTION
7839
  WHEN UTL_SMTP.INVALID_OPERATION THEN
7840
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
7841
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
7842
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
7843
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
7844
    dbms_output.put_line(' Errors in code for SMTP transaction.');
7845
 
7846
END RELEASE_MANAGER_MAILOUT;
7847
/
7848
 
7849
CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,
7850
	   	  		  					     retSessionNum OUT NUMBER ) IS
7851
 
7852
/* ---------------------------------------------------------------------------
7853
    Version: 3.0.0
7854
   --------------------------------------------------------------------------- */
7855
    rowCnt 			NUMBER := 0;						-- Iterations counter
7856
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
7857
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
7858
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
7859
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
7860
    sessionNum 		NUMBER;
7861
	levelNum		NUMBER;
7862
 
7863
BEGIN
7864
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
7865
 
7866
	/*
7867
	||	   Start UP THE TREE
7868
	*/
7869
 
7870
 
7871
	/* Packages with no dependencies */    
7872
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7873
		SELECT sessionNum AS SESSION_NUM,
7874
			   iteration AS LEVEL_NUM,
7875
			   UP_THE_TREE AS DIRECTION,
7876
			   rc.pv_id, pv.pkg_id, pv.v_ext
7877
		  FROM release_content rc,
7878
		  	   package_versions pv
7879
		 WHERE rc.rtag_id = nRtag_id
7880
		   AND rc.pv_id = pv.pv_id
7881
		 MINUS
7882
		SELECT sessionNum AS SESSION_NUM, 
7883
			   iteration AS LEVEL_NUM,
7884
			   UP_THE_TREE AS DIRECTION,
7885
			   dep.pv_id, pv.pkg_id, pv.v_ext
7886
		  FROM package_dependencies dep,
7887
		  	   package_versions pv
7888
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
7889
		   AND dep.pv_id = pv.pv_id;
7890
 
7891
 
7892
	/* Browse UP the build tree */	   
7893
	iteration := iteration + 1;
7894
    LOOP
7895
 
7896
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7897
			SELECT DISTINCT 
7898
			       sessionNum AS SESSION_NUM,
7899
			       iteration AS LEVEL_NUM,
7900
				   UP_THE_TREE AS DIRECTION, 
7901
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7902
			  FROM (  
7903
			        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
7904
			          FROM package_dependencies dep,
7905
			               release_content rc,
7906
						   package_versions pv,
7907
						   package_versions dpv
7908
			         WHERE dep.pv_id = rc.pv_id
7909
			           AND rc.rtag_id = nRtag_id
7910
					   AND dep.pv_id = pv.pv_id
7911
					   AND dep.dpv_id = dpv.pv_id
7912
					) rdep,
7913
					temp_tree_browse ttb
7914
			 WHERE rdep.dpkg_id  = ttb.pkg_id
7915
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
7916
			   AND ttb.SESSION_NUM = sessionNum
7917
			   AND ttb.LEVEL_NUM = iteration - 1	
7918
			MINUS
7919
			/* Packages with all depencencies NOT matched */  
7920
			SELECT DISTINCT 
7921
			       sessionNum AS SESSION_NUM,
7922
			       iteration AS LEVEL_NUM, 
7923
				   UP_THE_TREE AS DIRECTION,
7924
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7925
			  FROM (  
7926
			        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
7927
			          FROM package_dependencies dep,
7928
			               release_content rc,
7929
						   package_versions pv,
7930
						   package_versions dpv
7931
			         WHERE dep.pv_id = rc.pv_id
7932
			           AND rc.rtag_id = nRtag_id
7933
					   AND dep.pv_id = pv.pv_id
7934
					   AND dep.dpv_id = dpv.pv_id
7935
					) rdep,
7936
					(
7937
					 SELECT tb.*
7938
					   FROM temp_tree_browse tb
7939
					  WHERE tb.SESSION_NUM = sessionNum
7940
					) ttb
7941
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
7942
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
7943
			   AND ttb.SESSION_NUM IS NULL;
7944
 
7945
		rowCnt := SQL%ROWCOUNT;
7946
		IF rowCnt > 0 THEN
7947
           iteration := iteration + 1;
7948
		END IF;
7949
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
7950
    END LOOP;
7951
 
7952
	/*---------------------------------------------------------------------------------------------------------------------*/
7953
 
7954
	/*     Check for unresolved dependencies
7955
	||  
7956
	*/
7957
	/* UNRESOLVED */
7958
	 SELECT COUNT(*) INTO rowCnt
7959
	   FROM (
7960
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
7961
			  FROM release_content rc,
7962
			  	   package_versions pv
7963
			 WHERE rc.rtag_id = nRtag_id
7964
			   AND rc.pv_id = pv.pv_id	   
7965
			MINUS
7966
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
7967
			  FROM temp_tree_browse ttb
7968
			 WHERE ttb.session_num = sessionNum
7969
			);
7970
 
7971
 
7972
 
7973
	 IF rowCnt > 0 
7974
	 THEN
7975
	 	 /*     Circular dependencies detected.
7976
		 ||     Try to resolve build order from the top now.
7977
		 ||		Start DOWN THE TREE
7978
		 */
7979
 
7980
		iteration := 0; 
7981
		 /* Top Level packages */	
7982
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
7983
			SELECT sessionNum AS SESSION_NUM,
7984
			       iteration AS LEVEL_NUM,
7985
				   DOWN_THE_TREE AS DIRECTION,
7986
				   pv.pv_id, pv.pkg_id, pv.v_ext
7987
			  FROM (		   
7988
					/* Packages no one depends on ( Top level packages )*/
7989
					( 
7990
					/* All parents*/ 
7991
					SELECT pv.pkg_id, pv.v_ext
7992
			          FROM package_dependencies dep,
7993
			               release_content rc,
7994
						   package_versions pv
7995
			         WHERE dep.pv_id = rc.pv_id
7996
			           AND rc.rtag_id = nRtag_id
7997
					   AND dep.pv_id = pv.pv_id
7998
					 MINUS
7999
					 /* All children */
8000
					SELECT dpv.pkg_id, dpv.v_ext
8001
			          FROM package_dependencies dep,
8002
			               release_content rc,
8003
						   package_versions dpv
8004
			         WHERE dep.pv_id = rc.pv_id
8005
			           AND rc.rtag_id = nRtag_id
8006
					   AND dep.dpv_id = dpv.pv_id
8007
					 ) 
8008
					 MINUS
8009
					/* Packages with resolved dependencies from UP THE TREE */ 
8010
					SELECT ttb.pkg_id, ttb.v_ext
8011
					  FROM temp_tree_browse ttb
8012
					 WHERE ttb.session_num = sessionNum
8013
				  ) tpkg,
8014
				  package_versions pv,
8015
				  release_content rc
8016
			WHERE rc.rtag_id = nRtag_id
8017
			  AND rc.pv_id = pv.pv_id
8018
			  AND tpkg.pkg_id = pv.pkg_id
8019
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8020
 
8021
 
8022
		 /* Keep taking packages which no one depende on */			  
8023
		 iteration := iteration - 1;  
8024
		 LOOP	  
8025
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8026
					SELECT sessionNum AS SESSION_NUM,
8027
					       iteration AS LEVEL_NUM,
8028
					       DOWN_THE_TREE AS DIRECTION,
8029
					       pv.pv_id, pv.pkg_id, pv.v_ext
8030
					  FROM (		   
8031
					 	/* All Unresolved */
8032
					 	(
8033
					 	SELECT pv.pkg_id, pv.v_ext
8034
					 	  FROM release_content rc,
8035
					 	  	   package_versions pv
8036
					 	 WHERE rc.rtag_id = nRtag_id
8037
					 	   AND rc.pv_id = pv.pv_id	   
8038
					 	MINUS
8039
					 	SELECT ttb.pkg_id, ttb.v_ext
8040
					 	  FROM temp_tree_browse ttb
8041
					 	 WHERE ttb.session_num = sessionNum
8042
					 	)
8043
					 	 MINUS
8044
					 	(  
8045
					 	 /* Children of Unresolved */  
8046
					 	SELECT dpv.pkg_id, dpv.V_EXT
8047
					 	  FROM (
8048
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8049
					 			  FROM release_content rc,
8050
					 			  	   package_versions pv
8051
					 			 WHERE rc.rtag_id = nRtag_id
8052
					 			   AND rc.pv_id = pv.pv_id	   
8053
					 			MINUS
8054
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8055
					 			  FROM temp_tree_browse ttb
8056
					 			 WHERE ttb.session_num = sessionNum
8057
					 		   ) unr,
8058
					 		   package_dependencies dep,
8059
					 		   package_versions dpv
8060
					 	 WHERE unr.pv_id = dep.pv_id
8061
					 	   AND dep.dpv_id = dpv.pv_id
8062
					 	 )  
8063
					   ) tpkg,
8064
					   package_versions pv,
8065
					   release_content rc
8066
					WHERE rc.rtag_id = nRtag_id
8067
					  AND rc.pv_id = pv.pv_id
8068
					  AND tpkg.pkg_id = pv.pkg_id
8069
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8070
 
8071
            rowCnt := SQL%ROWCOUNT;
8072
        	IF rowCnt > 0 THEN
8073
	           iteration := iteration - 1;
8074
			END IF;
8075
            EXIT WHEN (rowCnt < 1);
8076
     	END LOOP;
8077
 
8078
	 END IF;
8079
 
8080
 
8081
	/*---------------------------------------------------------------------------------------------------------------------*/
8082
 
8083
	/* 
8084
	|| 	 Save results from temp table
8085
	*/	
8086
	/* Clean up build_order table */
8087
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
8088
 
8089
	/* Save UP THE TREE */
8090
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8091
		SELECT nRtag_id AS rtag_id,
8092
			   ttb.level_num AS step_num, 
8093
			   ttb.PV_ID
8094
		  FROM temp_tree_browse ttb
8095
		 WHERE ttb.session_num = sessionNum
8096
		   AND ttb.direction = UP_THE_TREE;	
8097
 
8098
	/*Get last step_num */
8099
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
8100
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
8101
 
8102
	/* UNRESOLVED */
8103
	 SELECT COUNT(*) INTO rowCnt
8104
	   FROM (
8105
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8106
			  FROM release_content rc,
8107
			  	   package_versions pv
8108
			 WHERE rc.rtag_id = nRtag_id
8109
			   AND rc.pv_id = pv.pv_id	   
8110
			MINUS
8111
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8112
			  FROM temp_tree_browse ttb
8113
			 WHERE ttb.session_num = sessionNum
8114
			);
8115
 
8116
 
8117
	IF rowCnt > 0
8118
	THEN
8119
		/* Save unresolved packages */
8120
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
8121
		    SELECT  nRtag_id AS rtag_id,
8122
				    levelNum AS step_num, 
8123
				    upv.PV_ID,
8124
					'Y' AS UNRESOLVED
8125
			   FROM (
8126
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8127
					  FROM release_content rc,
8128
					  	   package_versions pv
8129
					 WHERE rc.rtag_id = nRtag_id
8130
					   AND rc.pv_id = pv.pv_id	   
8131
					MINUS
8132
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8133
					  FROM temp_tree_browse ttb
8134
					 WHERE ttb.session_num = sessionNum
8135
					) upv;
8136
	END IF;	
8137
 
8138
	/* Save DOWN THE TREE */
8139
	levelNum := 1000;
8140
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8141
		SELECT nRtag_id AS rtag_id,
8142
			   levelNum + ttb.level_num  AS step_num, 
8143
			   ttb.PV_ID
8144
		  FROM temp_tree_browse ttb
8145
		 WHERE ttb.session_num = sessionNum
8146
		   AND ttb.direction = DOWN_THE_TREE;
8147
 
8148
 
8149
	/*---------------------------------------------------------------------------------------------------------------------*/
8150
 
8151
	/* Clean up temp table */
8152
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
8153
 
8154
	retSessionNum := sessionNum;
8155
END Build_Tree;
8156
/
8157
 
8158
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER2 ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
8159
 
8160
/* ---------------------------------------------------------------------------
8161
    Version: 3.0.0
8162
   --------------------------------------------------------------------------- */
8163
 
8164
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
8165
	pos				   NUMBER;
8166
	in_list			   VARCHAR2(32767) := sInList || ',';
8167
 
8168
BEGIN
8169
 
8170
	IF NOT sInList IS NULL
8171
	THEN
8172
		LOOP
8173
	        EXIT WHEN in_list IS NULL;
8174
	        pos := INSTR ( in_list, ',' );
8175
	        sync_rtags.extend;
8176
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
8177
	        in_list := SUBSTR ( in_list, pos+1 );
8178
		END LOOP;
8179
	END IF;
8180
 
8181
	RETURN sync_rtags;
8182
END IN_LIST_NUMBER2;
8183
/
8184
 
8185
CREATE OR REPLACE PACKAGE pk_buildapi
8186
IS
8187
/*
8188
------------------------------
8189
||  Last Modified:  Rupesh Solanki
8190
||  Modified Date:  26/Jun/2007
8191
||  Spec Version:   3.0
8192
------------------------------
8193
*/
8194
 
8195
   /*================================================================================================*/
8196
   PROCEDURE add_product_component (
8197
      npvid           IN   NUMBER,
8198
      sosname         IN   VARCHAR2,
8199
      sorigfilepath   IN   VARCHAR2,
8200
      sfilename       IN   VARCHAR2,
8201
      sdestfilepath   IN   VARCHAR2,
8202
      nbytesize       IN   NUMBER,
8203
      scrccksum       IN   VARCHAR2
8204
   );
8205
 
8206
   PROCEDURE remove_all_product_components (
8207
      npvid     IN   NUMBER,
8208
      sosname   IN   VARCHAR2
8209
   );
8210
 
8211
/*================================================================================================*/
8212
   FUNCTION get_osid (sosname IN VARCHAR2)
8213
      RETURN NUMBER;
8214
 
8215
/*================================================================================================*/
8216
   PROCEDURE update_build_service (
8217
      sdatabaseserver   IN   VARCHAR2,
8218
      swebserver        IN   VARCHAR2,
8219
      smailserver       IN   VARCHAR2,
8220
      smailsender       IN   VARCHAR2,
8221
      sdiskspace        IN   VARCHAR2,
8222
      ssbommanagement   IN   VARCHAR2
8223
   );
8224
 
8225
/*================================================================================================*/
8226
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
8227
 
8228
/*================================================================================================*/
8229
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
8230
 
8231
/*================================================================================================*/
8232
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
8233
 
8234
/*================================================================================================*/
8235
   PROCEDURE add_daemon (
8236
      sdaemonhostname   IN   VARCHAR2,
8237
      nrtagid           IN   NUMBER,
8238
      ngbeid            IN   NUMBER,
8239
      sgbebuildfilter   IN   VARCHAR2
8240
   );
8241
 
8242
/*================================================================================================*/
8243
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
8244
 
8245
/*================================================================================================*/
8246
   PROCEDURE update_daemon (
8247
      sdaemonhostname   IN   VARCHAR2,
8248
      nrconid           IN   NUMBER,
8249
      ngbeid            IN   NUMBER,
8250
      sgbebuildfilter   IN   VARCHAR2
8251
   );
8252
 
8253
/*================================================================================================*/
8254
   PROCEDURE insert_schedule_info (
8255
      dschedulepause     IN   DATE,
8256
      dscheduleresume    IN   DATE,
8257
      crepeat            IN   VARCHAR2,
8258
      cindefinitepause   IN   VARCHAR2
8259
   );
8260
 
8261
/*================================================================================================*/
8262
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
8263
 
8264
/*================================================================================================*/
8265
   PROCEDURE set_infinite_pause;
8266
 
8267
/*================================================================================================*/
8268
   PROCEDURE set_resume;
8269
 
8270
/*================================================================================================*/
8271
   PROCEDURE delete_out_of_date_schedule;
8272
 
8273
/*================================================================================================*/
8274
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
8275
 
8276
/*================================================================================================*/
8277
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
8278
/*================================================================================================*/
8279
END pk_buildapi;
8280
/
8281
 
8282
CREATE OR REPLACE PROCEDURE Remove_Patch ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
8283
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
8284
                                           nUserId IN NUMBER ) IS
8285
/* ---------------------------------------------------------------------------
8286
    Version: 4.0
8287
   --------------------------------------------------------------------------- */
8288
 
8289
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
8290
 
8291
CURSOR curPatch IS
8292
	SELECT pp.PV_ID,
8293
		   pp.PATCH_ID,
8294
	       ROWNUM AS NEW_INSTALL_ORDER
8295
	  FROM PACKAGE_PATCHES pp
8296
	 WHERE pp.PV_ID = nPvId
8297
	ORDER BY pp.INSTALL_ORDER;
8298
recPatch curPatch%ROWTYPE;
8299
 
8300
BEGIN
8301
 
8302
	 -- Delete Patch
8303
     DELETE
8304
       FROM PACKAGE_PATCHES pp
8305
      WHERE pp.PV_ID = nPvId
8306
        AND pp.PATCH_ID = nPatchId;
8307
 
8308
 
8309
	-- Redo Install Order
8310
    OPEN curPatch;
8311
	FETCH curPatch INTO recPatch;
8312
 
8313
	WHILE curPatch%FOUND
8314
	LOOP
8315
 
8316
		UPDATE PACKAGE_PATCHES pp SET
8317
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
8318
		WHERE pp.PV_ID = nPvId
8319
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
8320
 
8321
		FETCH curPatch INTO recPatch;
8322
	END LOOP;
8323
 
8324
	CLOSE curPatch;
8325
 
8326
 
8327
 
8328
 
8329
    /* LOG ACTION */
8330
    SELECT pv.PKG_VERSION INTO PatchVersion
8331
      FROM PACKAGE_VERSIONS pv
8332
     WHERE pv.PV_ID = nPatchId;
8333
 
8334
   	Log_Action ( nPvId, 'patch_remove', nUserId,
8335
   			     'Version: '|| PatchVersion );
8336
 
8337
END Remove_Patch;
8338
/
8339
 
8340
CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
8341
/
8342
 
8343
CREATE OR REPLACE PROCEDURE Add_Component ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
8344
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
8345
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
8346
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
8347
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
8348
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
8349
                                           ) IS
8350
/* ---------------------------------------------------------------------------
8351
    Version: 3.0.0
8352
   --------------------------------------------------------------------------- */
8353
 
8354
 
8355
BEGIN
8356
 
8357
	 --- Insert into RELEASE_COMPONENTS
8358
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
8359
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
8360
 
8361
 
8362
 
8363
 
8364
END Add_Component;
8365
/
8366
 
8367
CREATE OR REPLACE PROCEDURE ole
8368
IS retval VARCHAR2(40);   
8369
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
8370
DBMS_OUTPUT.PUT_LINE(retval);
8371
/
8372
 
8373
CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,
8374
	   	  		  						 			  nViewId IN NUMBER,
8375
										 			  sUserIdList IN VARCHAR2,
8376
										 			  nUserId IN NUMBER ) IS
8377
 
8378
GroupId NUMBER;													  
8379
 
8380
 
8381
 
8382
/******************************************************************************
8383
   NAME:       UPDATE_VIEW
8384
   PURPOSE:    
8385
 
8386
   REVISIONS:
8387
   Ver        Date        Author           		Description
8388
   ---------  ----------  ---------------  ------------------------------------
8389
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
8390
 
8391
   NOTES:
8392
 
8393
   Automatically available Auto Replace Keywords:
8394
      Object Name:     UPDATE_VIEW
8395
      Sysdate:         10/04/2006
8396
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
8397
      Username:         (set in TOAD Options, Procedure Editor)
8398
      Table Name:       (set in the "New PL/SQL Object" dialog)
8399
 
8400
******************************************************************************/
8401
 
8402
BEGIN
8403
	 SELECT GROUP_EMAIL_ID into GroupId
8404
	 FROM AUTOBUILD_FAILURE
8405
	 WHERE PROJ_ID = nProjId
8406
	 AND VIEW_ID = nViewId;
8407
 
8408
	 DELETE FROM MEMBERS_GROUP
8409
	 WHERE GROUP_EMAIL_ID = GroupId
8410
	 AND USER_ID IN (
8411
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
8412
	 );
8413
 
8414
 
8415
 
8416
END REMOVE_PROJECT_VIEW_OWNER;
8417
/
8418
 
8419
CREATE OR REPLACE PROCEDURE test
8420
IS
8421
 
8422
proc_id NUMBER;
8423
/******************************************************************************
8424
   NAME:       DELETE_DO_NOT_RIPPLE
8425
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8426
               IS RELEASED
8427
 
8428
   REVISIONS:
8429
   Ver        Date        Author           Description
8430
   ---------  ----------  ---------------  ------------------------------------
8431
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8432
 
8433
   NOTES:
8434
 
8435
   Automatically available Auto Replace Keywords:
8436
      Object Name:     DELETE_DO_NOT_RIPPLE
8437
      Sysdate:         21/04/2006
8438
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8439
      Username:         (set in TOAD Options, Procedure Editor)
8440
      Table Name:       (set in the "New PL/SQL Object" dialog)
8441
 
8442
******************************************************************************/
8443
   CURSOR ripple_cur
8444
   IS
8445
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
8446
 
8447
   ripple_rec   ripple_cur%ROWTYPE;
8448
BEGIN
8449
   OPEN ripple_cur;
8450
 
8451
   FETCH ripple_cur
8452
    INTO ripple_rec;
8453
 
8454
   WHILE ripple_cur%FOUND
8455
   LOOP
8456
 
8457
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
8458
 
8459
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
8460
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
8461
 
8462
      FETCH ripple_cur
8463
       INTO ripple_rec;
8464
   END LOOP;
8465
END test;
8466
/
8467
 
8468
CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8469
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
8470
/* ---------------------------------------------------------------------------
8471
    Version: 4.0
8472
   --------------------------------------------------------------------------- */
8473
 
8474
BEGIN
8475
 
8476
    -- Unlock Package
8477
    UPDATE RELEASE_CONTENT rc SET
8478
    	rc.PKG_STATE = 0
8479
    WHERE rc.PV_ID = nPvId
8480
	AND rc.RTAG_ID = nRtagId;
8481
 
8482
    /* LOG ACTION */
8483
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
8484
 
8485
END Change_Package_State;
8486
/
8487
 
8488
CREATE OR REPLACE PACKAGE Rm_Issues AS
8489
 
8490
	TYPE T_Cur IS REF CURSOR;
8491
 
8492
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8493
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
8494
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8495
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
8496
 
8497
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8498
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8499
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
8500
 
8501
END Rm_Issues;
8502
/
8503
 
8504
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
8505
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
8506
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
8507
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
8508
                                            sDpkg_path IN VARCHAR2,
8509
                                            sResults IN VARCHAR2,
8510
                                            sCompletion_date IN VARCHAR2,
8511
                                            nCompleted_by IN NUMBER,
8512
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
8513
											enumTEST_TYPE_NOT_DONE IN NUMBER,
8514
											outFileName OUT VARCHAR2
8515
                                           ) IS
8516
/* ---------------------------------------------------------------------------
8517
    Version: 3.2.0
8518
   --------------------------------------------------------------------------- */
8519
 
8520
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
8521
 
8522
    newID NUMBER;
8523
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
8524
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
8525
 
8526
BEGIN
8527
 
8528
	-- Get new ID --
8529
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
8530
 
8531
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
8532
       	ResultsURL := sResults;
8533
       ELSE
8534
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
8535
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
8536
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
8537
           END IF;
8538
       END IF;
8539
 
8540
	-- Remove NOT_DONE entry if exists
8541
	DELETE FROM UNIT_TESTS
8542
	 WHERE pv_id = nPv_id
8543
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
8544
 
8545
	--- Add Additional Note ---
8546
    INSERT INTO UNIT_TESTS ( TEST_ID,
8547
								PV_ID,
8548
								TEST_TYPES_FK,
8549
								TEST_SUMMARY,
8550
								COMPLETION_DATE,
8551
								COMPLETED_BY,
8552
								RESULTS_URL,
8553
								RESULTS_ATTACHMENT_NAME,
8554
								NUMOF_TEST )
8555
    VALUES (
8556
       	newID,
8557
           nPv_id,
8558
           nTestTypeId,
8559
           sTest_summary,
8560
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
8561
           nCompleted_by,
8562
           ResultsURL,
8563
           ResultsAttachment,
8564
		   sNumOfTest );
8565
 
8566
END New_Unit_Test;
8567
/
8568
 
8569
CREATE OR REPLACE PROCEDURE Ripple_Package (
8570
        sPvIdList IN VARCHAR2,
8571
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
8572
        nUserId IN NUMBER
8573
    ) IS
8574
/* ---------------------------------------------------------------------------
8575
    Version: 4.1
8576
   --------------------------------------------------------------------------- */
8577
 
8578
BEGIN
8579
 
8580
    IF (sPvIdList IS NULL) THEN
8581
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
8582
    END IF;
8583
 
8584
    -- Ripple Package
8585
    DELETE FROM DO_NOT_RIPPLE
8586
    WHERE RTAG_ID = nRtagId
8587
    AND PV_ID IN (
8588
        SELECT *
8589
        FROM THE (
8590
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
8591
            AS RELMGR_NUMBER_TAB_t )
8592
            FROM DUAL
8593
        )
8594
    );
8595
 
8596
    /* LOG ACTION */
8597
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
8598
 
8599
END Ripple_Package;
8600
/
8601
 
8602
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
8603
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
8604
/* ---------------------------------------------------------------------------
8605
    Last Modified: Rupesh Solanki
8606
	Version: 3.0.1
8607
   --------------------------------------------------------------------------- */
8608
 
8609
 
8610
BEGIN
8611
 
8612
   -- Delete Current Build Env settings
8613
   DELETE FROM PACKAGE_BUILD_ENV
8614
   WHERE pv_id = nPvId;
8615
 
8616
   -- Delet Current Package Build Info Settings
8617
   DELETE FROM PACKAGE_BUILD_INFO
8618
   WHERE pv_id = nPvId;
8619
 
8620
   -- Reset flag to N
8621
   UPDATE PACKAGE_VERSIONS SET
8622
	   IS_BUILD_ENV_REQUIRED = 'N'
8623
   WHERE PV_ID = nPvId;
8624
 
8625
 
8626
   -- Set new Build Env
8627
   IF NOT sBuildEnvIdList IS NULL THEN
8628
   	  -- Insert into PACKAGE_BUILD_ENV
8629
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
8630
	  SELECT nPvId AS PV_ID,
8631
	  		 be.BE_ID
8632
	    FROM BUILD_ENVIRONMENTS be
8633
	   WHERE be.BE_ID IN (
8634
	   		 		  	   SELECT *
8635
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8636
	   		 		  	 );
8637
 
8638
   	  -- Insert into PACKAGE_BUILD_INFO
8639
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
8640
	  SELECT nPvId AS PV_ID,
8641
	  		 be.BM_ID
8642
	    FROM BUILD_MACHINES be
8643
	   WHERE be.BM_ID IN (
8644
	   		 		  	   SELECT *
8645
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8646
	   		 		  	 );						 
8647
 
8648
	   -- Set flag to Y
8649
	   UPDATE PACKAGE_VERSIONS SET
8650
		   IS_BUILD_ENV_REQUIRED = 'Y'
8651
	   WHERE PV_ID = nPvId;
8652
 
8653
   END IF;
8654
 
8655
 
8656
END Set_Package_Build_Env;
8657
/
8658
 
8659
CREATE OR REPLACE PROCEDURE Split_Version ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8660
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
8661
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
8662
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
8663
/* ---------------------------------------------------------------------------
8664
    Version: 3.0.0
8665
   --------------------------------------------------------------------------- */
8666
 
8667
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
8668
        INDEX BY BINARY_INTEGER;
8669
 
8670
    version_components VERSION_COMPONENTS_TYPE;
8671
    lastDot NUMBER := 0;
8672
    currDot NUMBER := 0;
8673
 
8674
BEGIN
8675
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
8676
 
8677
    IF ( currDot > 0 )
8678
    THEN
8679
        -- YES dot separator found --
8680
        SSV_EXT := GET_V_EXT( SSpkg_version );
8681
 
8682
        IF NOT SSV_EXT IS NULL
8683
        THEN
8684
            lastDot := currDot;
8685
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
8686
 
8687
            IF ( currDot > 0 )
8688
            THEN
8689
                -- XXXX.M.E
8690
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
8691
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
8692
            ELSE
8693
                -- XXXX.E
8694
                SSV_MM := NULL;
8695
                SSV_NMM := SSpkg_version;
8696
            END IF;
8697
 
8698
        ELSE
8699
            -- XXXX.M
8700
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
8701
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
8702
 
8703
        END IF;
8704
 
8705
    ELSE
8706
        -- NO dot separator found --
8707
        -- XXXXXX
8708
        SSV_MM  := NULL;
8709
        SSV_NMM := SSpkg_version;
8710
        SSV_EXT := NULL;
8711
 
8712
    END IF;
8713
 
8714
END Split_Version;
8715
/
8716
 
8717
CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS
8718
 
8719
/* ---------------------------------------------------------------------------
8720
    Version: 3.0.0
8721
   --------------------------------------------------------------------------- */
8722
 
8723
   returnValue CHAR(1);
8724
 
8725
BEGIN
8726
 
8727
    /*--------------- Business Rules Here -------------------*/
8728
	/*-------------------------------------------------------*/
8729
 
8730
	-- Get release mode
8731
	SELECT rt.OFFICIAL INTO returnValue
8732
	  FROM RELEASE_TAGS rt
8733
	 WHERE rt.RTAG_ID = nRtagId;
8734
 
8735
	RETURN returnValue;
8736
 
8737
END RELEASE_MODE;
8738
/
8739
 
8740
CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
8741
/
8742
 
8743
CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8744
											 nUserId IN NUMBER ) IS
8745
/* ---------------------------------------------------------------------------
8746
    Author: Rupesh Solanki
8747
 
8748
	Version: 4.0
8749
   --------------------------------------------------------------------------- */
8750
   STATE CHAR;
8751
 
8752
BEGIN
8753
 
8754
	SELECT DLOCKED INTO STATE
8755
	FROM PACKAGE_VERSIONS
8756
	WHERE PV_ID = nPvId; 
8757
 
8758
	IF STATE = 'A' THEN --It was made official for autobuilds
8759
		-- Unlock Package
8760
		UPDATE PACKAGE_VERSIONS pv SET
8761
		pv.DLOCKED = 'P'
8762
		WHERE pv.PV_ID = nPvId;	
8763
	ELSE
8764
		-- Unlock Package
8765
		UPDATE PACKAGE_VERSIONS pv SET
8766
		pv.DLOCKED = 'N'
8767
		WHERE pv.PV_ID = nPvId;	
8768
 
8769
	END IF;	   
8770
 
8771
    /* LOG ACTION */
8772
   	Log_Action ( nPvId, 'unlock_package', nUserId );
8773
 
8774
END Unlock_Package;
8775
/
8776
 
8777
CREATE OR REPLACE PACKAGE PK_PLANNED IS
8778
/*
8779
------------------------------
8780
||  Last Modified:  S.Vukovic
8781
||  Modified Date:  6/May/2005
8782
||  Spec Version:   1.0
8783
------------------------------
8784
*/
8785
 
8786
	TYPE typeCur IS REF CURSOR;
8787
 
8788
    /*================================================================================================*/
8789
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8790
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8791
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
8792
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
8793
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
8794
	/*================================================================================================*/
8795
 
8796
END PK_PLANNED;
8797
/
8798
 
8799
CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8800
											 nUserId IN NUMBER ) IS
8801
/* ---------------------------------------------------------------------------
8802
    Version: 4.0
8803
   --------------------------------------------------------------------------- */
8804
 
8805
BEGIN
8806
 
8807
    -- Lock Package
8808
    UPDATE PACKAGE_VERSIONS pv SET
8809
    	pv.DLOCKED = 'A'
8810
    WHERE pv.PV_ID = nPvId;
8811
 
8812
    /* LOG ACTION */
8813
   	Log_Action ( nPvId, 'lock_package', nUserId );
8814
END Pending_Package;
8815
/
8816
 
8817
CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)
8818
IS
8819
/******************************************************************************
8820
   NAME:       DELETE_DO_NOT_RIPPLE
8821
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8822
               IS RELEASED
8823
 
8824
   REVISIONS:
8825
   Ver        Date        Author           Description
8826
   ---------  ----------  ---------------  ------------------------------------
8827
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8828
 
8829
   NOTES:
8830
 
8831
   Automatically available Auto Replace Keywords:
8832
      Object Name:     DELETE_DO_NOT_RIPPLE
8833
      Sysdate:         21/04/2006
8834
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8835
      Username:         (set in TOAD Options, Procedure Editor)
8836
      Table Name:       (set in the "New PL/SQL Object" dialog)
8837
 
8838
******************************************************************************/
8839
BEGIN
8840
   DELETE FROM do_not_ripple
8841
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
8842
                                                     FROM release_content
8843
                                                    WHERE rtag_id = nrtagid);
8844
END clean_do_not_ripple;
8845
/
8846
 
8847
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions2 ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
8848
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8849
                                                          NNuser_id IN NUMBER,
8850
                                                          retPV_ID OUT NUMBER,
8851
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
8852
/* ---------------------------------------------------------------------------
8853
    Version: 4.0
8854
   --------------------------------------------------------------------------- */
8855
 
8856
    parPkg_id   NUMBER;
8857
    parPv_id    NUMBER;
8858
    cloneFrom_pv_id NUMBER;
8859
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
8860
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
8861
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
8862
 
8863
    CURSOR packages_cur IS
8864
        SELECT pkg_id FROM PACKAGES
8865
        WHERE pkg_name = SSpkg_name;
8866
    packages_rec packages_cur%ROWTYPE;
8867
 
8868
    CURSOR package_versions_cur IS
8869
        SELECT pv_id FROM PACKAGE_VERSIONS
8870
        WHERE pkg_id = parPkg_id
8871
        AND pkg_version = SSpkg_version;
8872
    package_versions_rec package_versions_cur%ROWTYPE;
8873
 
8874
    CURSOR clone_package_versions_cur IS
8875
        SELECT MAX(pv_id) AS pv_id
8876
          FROM PACKAGE_VERSIONS
8877
         WHERE pkg_id = parPkg_id
8878
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
8879
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
8880
 
8881
BEGIN
8882
    /* -------------------------------------------- */
8883
    /* Find if pkg_name exists and seed if required */
8884
    /* -------------------------------------------- */
8885
    OPEN packages_cur;
8886
    FETCH packages_cur INTO packages_rec;
8887
 
8888
    IF packages_cur%NOTFOUND
8889
    THEN
8890
        /* INSERT into packages table */
8891
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
8892
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
8893
 
8894
    ELSE
8895
        parPkg_id := packages_rec.pkg_id;
8896
 
8897
    END IF;
8898
 
8899
    CLOSE packages_cur;
8900
 
8901
 
8902
 
8903
    /* ---------------------------------------------------- */
8904
    /* Find if package_version exists and seed if required  */
8905
    /* ---------------------------------------------------- */
8906
    OPEN package_versions_cur;
8907
    FETCH package_versions_cur INTO package_versions_rec;
8908
 
8909
    IF package_versions_cur%NOTFOUND
8910
    THEN
8911
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
8912
 
8913
        /* LOG ACTION */
8914
        Log_Action ( parPv_id, 'new_version', NNuser_id,
8915
        			 'New package version: '|| SSpkg_version );
8916
 
8917
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
8918
 
8919
 
8920
 
8921
 
8922
 
8923
            /* CLONE details from similar version  OR  from nCloneFromPvId */
8924
			IF ( NOT nCloneFromPvId IS NULL) THEN
8925
            	cloneFrom_pv_id := nCloneFromPvId;
8926
			ELSE
8927
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
8928
			END IF;
8929
 
8930
            -- Clone Package Version Details --
8931
            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,
8932
                                           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 )
8933
                SELECT parPv_id         AS pv_id,
8934
                       parPkg_id        AS pkg_id,
8935
                       SSpkg_version    AS pkg_version,
8936
                       'N'              AS dlocked,
8937
                       Ora_Sysdate      AS created_stamp,
8938
                       NNuser_id        AS creator_id,
8939
                       Ora_Sysdatetime  AS modified_stamp,
8940
                       NNuser_id        AS modifier_id,
8941
                       SSV_MM           AS V_MM,
8942
                       SSV_NMM          AS V_NMM,
8943
                       SSV_EXT          AS V_EXT,
8944
                       pv.src_path,
8945
                       pv.pv_description,
8946
                       pv.PV_OVERVIEW,
8947
                       cloneFrom_pv_id 	AS LAST_PV_ID,
8948
                       pv.owner_id,
8949
					   pv.BUILD_TYPE,
8950
					   pv.IS_BUILD_ENV_REQUIRED,
8951
					   pv.bs_id,
8952
					   pv.is_autobuildable,
8953
					   pv.IS_DEPLOYABLE,
8954
					   pv.ripple_field
8955
                  FROM PACKAGE_VERSIONS pv
8956
                 WHERE pv.pv_id = cloneFrom_pv_id;
8957
 
8958
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
8959
 
8960
        retPV_ID := parPv_id;
8961
 
8962
    ELSE
8963
        retPV_ID := package_versions_rec.pv_id;
8964
 
8965
    END IF;
8966
 
8967
    CLOSE package_versions_cur;
8968
 
8969
 
8970
 
8971
 
8972
END Seed_Package_Names_Versions2;
8973
/
8974
 
8975
CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) IS
8976
 
8977
    sessionNumber NUMBER := 0;
8978
    iteration NUMBER := 1; 
8979
    rowCnt NUMBER := 0;
8980
    maxIterations 	NUMBER := 50;
8981
 
8982
BEGIN
8983
 
8984
 
8985
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
8986
    SELECT sessionNumber, iteration, rc.PV_ID
8987
      FROM RELEASE_CONTENT rc
8988
     WHERE rc.RTAG_ID = nRtag_id;
8989
 
8990
    iteration := iteration + 1;
8991
    LOOP
8992
 
8993
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
8994
		SELECT sessionNumber,     
8995
               iteration,
8996
               dep.DPV_ID
8997
          FROM TEMP_TREE_BROWSE ttb,
8998
               PACKAGE_DEPENDENCIES dep
8999
         WHERE dep.PV_ID = ttb.PV_ID 
9000
           AND ttb.LEVEL_NUM = iteration - 1 
9001
 
9002
         MINUS  
9003
 
9004
        SELECT sessionNumber, iteration, ttb.PV_ID
9005
          FROM TEMP_TREE_BROWSE ttb;   
9006
 
9007
 
9008
 
9009
 
9010
		rowCnt := SQL%ROWCOUNT;
9011
		IF rowCnt > 0 THEN
9012
           iteration := iteration + 1;
9013
		END IF;
9014
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
9015
    END LOOP; 
9016
 
9017
END PAOLO_Build_Tree;
9018
/
9019
 
9020
CREATE OR REPLACE PROCEDURE Log_Action_Bulk ( nPvIdList IN VARCHAR2,
9021
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9022
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
9023
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9024
/* ---------------------------------------------------------------------------
9025
    Version: 3.0
9026
   --------------------------------------------------------------------------- */
9027
 
9028
    ActionTypeId NUMBER;
9029
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9030
 
9031
BEGIN
9032
 
9033
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
9034
 
9035
    -- Get Action Type FK
9036
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9037
      FROM ACTION_TYPE act
9038
     WHERE act.NAME = enumActionTypeName;
9039
 
9040
    -- Log Action
9041
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9042
    SELECT nUserId,
9043
    	   ORA_SYSDATETIME,
9044
           pv.PV_ID,
9045
           sAdditionalComments,
9046
           ActionTypeId
9047
      FROM PACKAGE_VERSIONS pv
9048
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
9049
 
9050
 
9051
END Log_Action_Bulk;
9052
/
9053
 
9054
CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSES
9055
IS
9056
 
9057
proc_id NUMBER;
9058
/******************************************************************************
9059
   NAME:       DELETE_DO_NOT_RIPPLE
9060
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
9061
               IS RELEASED
9062
 
9063
   REVISIONS:
9064
   Ver        Date        Author           Description
9065
   ---------  ----------  ---------------  ------------------------------------
9066
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
9067
 
9068
   NOTES:
9069
 
9070
   Automatically available Auto Replace Keywords:
9071
      Object Name:     DELETE_DO_NOT_RIPPLE
9072
      Sysdate:         21/04/2006
9073
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
9074
      Username:         (set in TOAD Options, Procedure Editor)
9075
      Table Name:       (set in the "New PL/SQL Object" dialog)
9076
 
9077
******************************************************************************/
9078
   CURSOR ripple_cur
9079
   IS
9080
      select distinct proc_id, prod_id from deployment_manager.processes_config;
9081
 
9082
   ripple_rec   ripple_cur%ROWTYPE;
9083
BEGIN
9084
   OPEN ripple_cur;
9085
 
9086
   FETCH ripple_cur
9087
    INTO ripple_rec;
9088
 
9089
   WHILE ripple_cur%FOUND
9090
   LOOP
9091
 
9092
 
9093
 
9094
insert into package_processes (PROC_ID, PV_ID) 
9095
values( ripple_rec.proc_id, ripple_rec.prod_id);
9096
 
9097
      FETCH ripple_cur
9098
       INTO ripple_rec;
9099
   END LOOP;
9100
END CLONED_PACKAGE_PROCESSES;
9101
/
9102
 
9103
CREATE OR REPLACE PACKAGE                 pk_rmapi
9104
IS
9105
/*
9106
------------------------------
9107
||  Last Modified:  Jeremy Tweddle
9108
||  Modified Date:  08/Feb/2008
9109
||  Body Version:   3.3
9110
------------------------------
9111
*/
9112
   TYPE typecur IS REF CURSOR;
9113
 
9114
/*================================================================================================*/
9115
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
9116
      RETURN typecur;
9117
 
9118
   FUNCTION wip_iteration_package (
9119
      projname        VARCHAR2,
9120
      iterationname   VARCHAR2,
9121
      pkgname         VARCHAR2
9122
   )
9123
      RETURN typecur;
9124
 
9125
   FUNCTION auto_make_release (
9126
      rtagid                   IN   NUMBER,
9127
      pkgname                  IN   VARCHAR2,
9128
      vext                     IN   VARCHAR2,
9129
      newpkgversion            IN   VARCHAR2,
9130
      label                    IN   VARCHAR2,
9131
      dependenciesimportlist   IN   VARCHAR2,
9132
      isrippled                IN   NUMBER,
9133
      username                 IN   VARCHAR2
9134
   )
9135
      RETURN NUMBER;
9136
 
9137
   PROCEDURE import_dependencies (
9138
      pvid                     IN   NUMBER,
9139
      dependenciesimportlist   IN   VARCHAR2,
9140
      userid                   IN   NUMBER
9141
   );
9142
 
9143
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
9144
      RETURN VARCHAR2;
9145
 
9146
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
9147
      RETURN VARCHAR2;
9148
 
9149
   PROCEDURE update_dash_board (rtagid IN NUMBER);
9150
 
9151
   FUNCTION exclude_from_build (
9152
      pvid          IN   NUMBER,
9153
      spkgversion   IN   VARCHAR2,
9154
      rtagid        IN   NUMBER,
9155
      username      IN   VARCHAR2
9156
   )
9157
      RETURN NUMBER;
9158
 
9159
/*================================================================================================*/
9160
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
9161
 
9162
   FUNCTION insert_package_metrics (
9163
      rtagid IN NUMBER,
9164
      pkgname IN VARCHAR2,
9165
      vext IN VARCHAR2,
9166
      metricstring IN VARCHAR2
9167
   )
9168
      RETURN NUMBER;
9169
 
9170
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
9171
 
9172
END pk_rmapi;
9173
/
9174
 
9175
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;
9176
/
9177
 
9178
CREATE OR REPLACE PROCEDURE Log_Daemon_Action ( nRconId IN NUMBER,
9179
												 enumActionTypeName IN VARCHAR2,
9180
		                                         nUserId IN NUMBER,
9181
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
9182
/* ---------------------------------------------------------------------------
9183
    Version: 3.0
9184
   --------------------------------------------------------------------------- */
9185
 
9186
    ActionTypeId NUMBER;
9187
 
9188
BEGIN
9189
 
9190
    -- Get Action Type FK
9191
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9192
      FROM ACTION_TYPE act
9193
     WHERE act.NAME = enumActionTypeName;
9194
 
9195
 
9196
    INSERT INTO DAEMON_ACTION_LOG
9197
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
9198
 
9199
 
9200
END Log_Daemon_Action;
9201
/
9202
 
9203
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT_test IS
9204
/*
9205
------------------------------
9206
||  Last Modified:  Rupesh Solanki
9207
||  Modified Date:  29/Jan/2007
9208
||  Spec Version:   1.1
9209
------------------------------
9210
*/
9211
 
9212
	TYPE typeCur IS REF CURSOR;
9213
 
9214
    /*================================================================================================*/
9215
 
9216
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
9217
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9218
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9219
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9220
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9221
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9222
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
9223
 
9224
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9225
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9226
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9227
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9228
 
9229
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
9230
 
9231
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9232
 
9233
 
9234
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9235
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9236
 
9237
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9238
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9239
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9240
 
9241
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
9242
 
9243
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
9244
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
9245
 
9246
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
9247
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
9248
							 CloneFromPvId IN NUMBER );
9249
 
9250
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9251
 
9252
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
9253
 
9254
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9255
 
9256
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
9257
 
9258
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
9259
	/*================================================================================================*/
9260
 
9261
END PK_ENVIRONMENT_test;
9262
/
9263
 
9264
CREATE OR REPLACE PROCEDURE Update_Package_States ( NNrtag_id IN NUMBER,
9265
                                                    NNsession_num IN NUMBER ) IS
9266
/* ---------------------------------------------------------------------------
9267
    Version: 3.0.0
9268
   --------------------------------------------------------------------------- */
9269
 
9270
/* =============  STATE RULES =================== */
9271
/*
9272
   MNR   MRR   MN   MR    |   pkg_state
9273
   ------------------------------------
9274
 
9275
 
9276
 
9277
 
9278
   ------------------------------------
9279
 
9280
 
9281
 
9282
 
9283
   ------------------------------------
9284
    1     0     0     0   |      MINOR_READY
9285
    1     0     0     1   |      MAJOR
9286
    1     0     1     0   |      MINOR
9287
    1     0     1     1   |      MAJOR
9288
   ------------------------------------
9289
    1     1     0     0   |      MAJOR_READY
9290
    1     1     0     1   |      MAJOR
9291
    1     1     1     0   |      MAJOR
9292
    1     1     1     1   |      MAJOR
9293
   ------------------------------------
9294
*/
9295
 
9296
BEGIN
9297
    /*----------------------------------------------
9298
    ||              MINOR READY
9299
    */----------------------------------------------
9300
 
9301
    UPDATE release_content
9302
       SET pkg_state = 4
9303
     WHERE rtag_id = NNrtag_id
9304
       AND pv_id IN
9305
           (
9306
           SELECT DISTINCT pv_id
9307
           FROM temp_env_states
9308
           WHERE session_num = NNsession_num
9309
             AND level_num = 1
9310
             AND tes_state = 2
9311
           );
9312
 
9313
    /*----------------------------------------------
9314
    ||              MAJOR READY
9315
    */----------------------------------------------
9316
    UPDATE release_content
9317
       SET pkg_state = 3
9318
     WHERE rtag_id = NNrtag_id
9319
       AND pv_id IN
9320
           (
9321
           SELECT DISTINCT pv_id
9322
           FROM temp_env_states
9323
           WHERE session_num = NNsession_num
9324
             AND level_num = 1
9325
             AND tes_state IN (0,1)
9326
           );
9327
 
9328
    /*----------------------------------------------
9329
    ||                MINOR
9330
    */----------------------------------------------
9331
    UPDATE release_content
9332
       SET pkg_state = 2
9333
     WHERE rtag_id = NNrtag_id
9334
       AND pv_id IN
9335
           (
9336
           SELECT DISTINCT pv_id
9337
            FROM temp_env_states
9338
            WHERE session_num = NNsession_num
9339
              AND level_num >= 2
9340
              AND tes_state = 2
9341
            MINUS
9342
           SELECT pv_id
9343
             FROM release_content
9344
            WHERE rtag_id = NNrtag_id
9345
              AND pkg_state = 3
9346
           );
9347
 
9348
    /*----------------------------------------------
9349
    ||                MAJOR
9350
    */----------------------------------------------
9351
    UPDATE release_content
9352
       SET pkg_state = 1
9353
     WHERE rtag_id = NNrtag_id
9354
       AND pv_id IN
9355
           (
9356
           SELECT DISTINCT pv_id
9357
           FROM temp_env_states
9358
           WHERE session_num = NNsession_num
9359
             AND level_num >= 2
9360
             AND tes_state IN (0,1)
9361
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
9362
           UNION
9363
           SELECT DISTINCT tes.pv_id
9364
           FROM temp_env_states tes,
9365
                release_content rc
9366
           WHERE tes.session_num = NNsession_num
9367
             AND tes.level_num >= 2
9368
             AND tes.tes_state = 2
9369
             AND rtag_id = NNrtag_id
9370
             AND rc.pv_id = tes.pv_id
9371
             AND rc.pkg_state = 3
9372
           );
9373
 
9374
    /*----------------------------------------------
9375
    ||                 OK
9376
    */----------------------------------------------
9377
    UPDATE release_content
9378
       SET pkg_state = 0
9379
     WHERE rtag_id = NNrtag_id
9380
       AND pv_id IN
9381
           (
9382
           SELECT rc.pv_id
9383
             FROM release_content rc
9384
            WHERE rc.rtag_id = NNrtag_id
9385
              AND NOT rc.pv_id IN
9386
                    (
9387
                     SELECT DISTINCT pv_id
9388
                     FROM temp_env_states WHERE session_num = NNsession_num
9389
                    )
9390
           );
9391
 
9392
 
9393
    /*----------------------------------------------
9394
    ||              ADVISORY RIPPLE - NEW STUFF
9395
    */----------------------------------------------
9396
 /*   UPDATE release_content
9397
       SET pkg_state = 8
9398
     WHERE rtag_id = NNrtag_id
9399
       AND pv_id IN
9400
           (
9401
           SELECT DISTINCT pv_id
9402
           FROM temp_env_states
9403
           WHERE session_num = NNsession_num
9404
             AND level_num = 1
9405
             AND tes_state = 3
9406
           );	*/
9407
 
9408
 
9409
 
9410
    /*----------------------------------------------
9411
    ||              ADVISORY RIPPLE DEPENDANT
9412
    */----------------------------------------------			   
9413
  /*  UPDATE release_content
9414
       SET pkg_state = 9
9415
     WHERE rtag_id = NNrtag_id
9416
       AND pv_id IN
9417
           (
9418
           SELECT DISTINCT pv_id
9419
           FROM temp_env_states
9420
           WHERE session_num = NNsession_num
9421
             AND level_num >= 2
9422
             AND tes_state = 3
9423
           );		*/	   
9424
 
9425
      Update_Deprecation_State (NNrtag_id);
9426
 
9427
END Update_Package_States;
9428
/
9429
 
9430
CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS
9431
 
9432
/******************************************************************************
9433
   NAME:       TO_INSERT_VTREE_ID
9434
   PURPOSE:    
9435
 
9436
   REVISIONS:
9437
   Ver        Date        Author           Description
9438
   ---------  ----------  ---------------  ------------------------------------
9439
   1.0        2/02/2007          1. Created this procedure.
9440
 
9441
   NOTES:
9442
 
9443
   Automatically available Auto Replace Keywords:
9444
      Object Name:     TO_INSERT_VTREE_ID
9445
      Sysdate:         2/02/2007
9446
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
9447
      Username:         (set in TOAD Options, Procedure Editor)
9448
      Table Name:       (set in the "New PL/SQL Object" dialog)
9449
 
9450
******************************************************************************/
9451
VTreeId NUMBER;																			  																	   
9452
 
9453
 
9454
	CURSOR curInfo IS
9455
    SELECT RTAG_ID
9456
	FROM RELEASE_TAGS
9457
	WHERE VTREE_ID IS NULL;
9458
    recInfo curInfo%ROWTYPE;
9459
 
9460
 
9461
BEGIN
9462
 
9463
	OPEN curInfo;
9464
    FETCH curInfo INTO recInfo;
9465
 
9466
	WHILE curInfo%FOUND
9467
	LOOP
9468
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
9469
 
9470
		UPDATE RELEASE_TAGS
9471
		SET VTREE_ID = VTreeId
9472
		WHERE RTAG_ID = recInfo.RTAG_ID;
9473
 
9474
		FETCH curInfo INTO recInfo;
9475
	END LOOP;
9476
 
9477
	CLOSE curInfo;
9478
 
9479
END TO_INSERT_VTREE_ID;
9480
/
9481
 
9482
CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
9483
/
9484
 
9485
CREATE OR REPLACE FUNCTION ORA_SYSDATE
9486
RETURN DATE
9487
IS
9488
/* ---------------------------------------------------------------------------
9489
    Version: 3.0.0
9490
   --------------------------------------------------------------------------- */
9491
BEGIN
9492
 
9493
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
9494
END ORA_SYSDATE;
9495
/
9496
 
9497
CREATE OR REPLACE PROCEDURE Undeprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9498
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9499
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9500
											   	 nUserId IN NUMBER) IS
9501
 
9502
ext VARCHAR2(50);
9503
PvIdList VARCHAR2(32767);
9504
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9505
PvId NUMBER;
9506
sComments VARCHAR2(32767);
9507
 
9508
BEGIN
9509
 
9510
 
9511
 
9512
	--Extract the package extension
9513
	SELECT V_EXT into ext 
9514
	FROM PACKAGE_VERSIONS 
9515
	WHERE PV_ID = nPvId;
9516
 
9517
	--SELECT COMMENTS into sComments 
9518
	--FROM DEPRECATED_PACKAGES
9519
	--WHERE RTAG_ID = nRtagId
9520
	--AND V_EXT = ext
9521
	--AND PKG_ID = nPkgId;
9522
 
9523
	--SELECT PV_ID into PvIdList FROM
9524
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
9525
	--AND PKG_STATE = 6
9526
	--AND PV_ID NOT IN nPvId;
9527
 
9528
 
9529
	IF ext IS NOT NULL THEN
9530
       -- Undeprecate Package
9531
       DELETE FROM DEPRECATED_PACKAGES 
9532
	   WHERE RTAG_ID = nRtagId 
9533
	   AND PKG_ID = nPkgId
9534
	   AND V_EXT = ext;	
9535
 
9536
		UPDATE RELEASE_CONTENT 
9537
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9538
		WHERE RTAG_ID = nRtagId
9539
		AND PV_ID IN (SELECT PV.PV_ID 
9540
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9541
					  WHERE PKG.PKG_ID = PV.PKG_ID
9542
					  AND PKG.PKG_ID = nPkgId
9543
					  AND PV.V_EXT = ext
9544
					  UNION
9545
					  SELECT DISTINCT
9546
	 	 		  	 		   qry.PV_ID
9547
							        FROM (
9548
									 	  SELECT dep.*,
9549
										  LEVEL AS LEVEL_NUM
9550
										  FROM PACKAGE_DEPENDENCIES dep
9551
	 								START WITH dep.DPV_ID IN ( nPvId )
9552
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9553
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9554
	 								) qry,
9555
									PACKAGES pkg,
9556
									PACKAGE_VERSIONS pv,
9557
									RELEASE_CONTENT rc
9558
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9559
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9560
 
9561
					 );	 
9562
 
9563
	ELSE
9564
       -- Undeprecate Package
9565
       DELETE FROM DEPRECATED_PACKAGES 
9566
	   WHERE RTAG_ID = nRtagId 
9567
	   AND PKG_ID = nPkgId
9568
	   AND V_EXT IS NULL;	
9569
 
9570
		UPDATE RELEASE_CONTENT 
9571
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9572
		WHERE RTAG_ID = nRtagId
9573
		AND PV_ID IN (SELECT PV.PV_ID 
9574
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9575
					  WHERE PKG.PKG_ID = PV.PKG_ID
9576
					  AND PKG.PKG_ID = nPkgId
9577
					  AND PV.V_EXT IS NULL
9578
					  UNION
9579
					  SELECT DISTINCT
9580
	 	 		  	 		   qry.PV_ID
9581
							        FROM (
9582
									 	  SELECT dep.*,
9583
										  LEVEL AS LEVEL_NUM
9584
										  FROM PACKAGE_DEPENDENCIES dep
9585
	 								START WITH dep.DPV_ID IN ( nPvId )
9586
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9587
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9588
	 								) qry,
9589
									PACKAGES pkg,
9590
									PACKAGE_VERSIONS pv,
9591
									RELEASE_CONTENT rc
9592
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9593
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9594
 
9595
					 );	 	   
9596
 
9597
	END IF;
9598
 
9599
	--IF PvIdList IS NOT NULL THEN
9600
 
9601
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
9602
 
9603
	 --  FOR i IN 1..nIdCollector.COUNT
9604
	 --  LOOP
9605
	--	   PvId := nIdCollector(i);
9606
 
9607
 
9608
 
9609
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
9610
	--		END LOOP;
9611
	--END IF;
9612
 
9613
	Rebuild_environment(nRtagId);			 
9614
 
9615
 
9616
 
9617
END Undeprecate_Package;
9618
/
9619
 
9620
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Acceptance ( pnTest_id IN NUMBER,
9621
														  pnPv_id IN NUMBER,
9622
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
9623
														  sAcceptanceDate IN VARCHAR2,
9624
														  sAcceptedBy IN NUMBER,
9625
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
9626
														  cUpdateAcceptedStateOnly IN CHAR
9627
					                                     ) IS
9628
/* ---------------------------------------------------------------------------
9629
    Version: 3.0.0
9630
   --------------------------------------------------------------------------- */
9631
 
9632
 
9633
 
9634
BEGIN
9635
	IF cUpdateAcceptedStateOnly = 'Y'
9636
	THEN
9637
		--- Update Accepted State Only ---
9638
		IF ( sAccepted IS NULL )
9639
		THEN
9640
			-- Clear alleptance
9641
			UPDATE UNIT_TESTS SET
9642
		           TEST_ACCEPTED = NULL,
9643
		           ACCEPTANCE_DATE = NULL,
9644
				   ACCEPTED_BY = NULL,
9645
				   REVIEW_COMMENTS = NULL
9646
		     WHERE TEST_ID = pnTest_id
9647
		       AND PV_ID = pnPv_id;
9648
 
9649
	    ELSE
9650
			UPDATE UNIT_TESTS SET
9651
		           TEST_ACCEPTED = sAccepted,
9652
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9653
				   ACCEPTED_BY = sAcceptedBy
9654
		     WHERE TEST_ID = pnTest_id
9655
		       AND PV_ID = pnPv_id;
9656
 
9657
		END IF;
9658
 
9659
 
9660
	ELSE
9661
		--- Update Unit Test Acceptance ---
9662
	    UPDATE UNIT_TESTS SET
9663
	           TEST_ACCEPTED = sAccepted,
9664
			   REVIEW_COMMENTS = sReviewComments,
9665
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9666
			   ACCEPTED_BY = sAcceptedBy
9667
	     WHERE TEST_ID = pnTest_id
9668
	       AND PV_ID = pnPv_id;
9669
 
9670
	END IF;
9671
 
9672
END Update_Unit_Test_Acceptance;
9673
/
9674
 
9675
CREATE OR REPLACE PROCEDURE New_Version ( NNorig_pv_id IN NUMBER,
9676
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
9677
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
9678
                                          NNrtag_id IN NUMBER,
9679
                                          NNuser_id IN NUMBER,
9680
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
9681
                                          retPv_id OUT NUMBER ) IS
9682
 
9683
 
9684
  TO BE REMOVED   !!!										  
9685
 
9686
 
9687
 
9688
 
9689
/* ---------------------------------------------------------------------------
9690
    Version: 3.3
9691
   --------------------------------------------------------------------------- */
9692
 
9693
    ReleaseLocation VARCHAR2(4000);
9694
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
9695
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
9696
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
9697
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
9698
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
9699
    nIssuesTypes NUMBER;
9700
 
9701
    CURSOR package_versions_cur IS
9702
        SELECT pv.pv_id, pv.is_patch
9703
          FROM PACKAGE_VERSIONS pv
9704
         WHERE pv.pkg_version = SSpkg_version
9705
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
9706
    package_versions_rec package_versions_cur%ROWTYPE;
9707
 
9708
    CURSOR clone_package_versions_cur IS
9709
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
9710
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
9711
 
9712
BEGIN
9713
	IF NNsetto_pv_id IS NULL
9714
    THEN
9715
		-- SetToPv_id is not supplied, hence proceed.
9716
 
9717
	    /* ---------------------------------------------------- */
9718
	    /* Find id package_version exists                       */
9719
	    /* ---------------------------------------------------- */
9720
 
9721
	    OPEN package_versions_cur;
9722
	    FETCH package_versions_cur INTO package_versions_rec;
9723
 
9724
	    IF package_versions_cur%NOTFOUND
9725
	    THEN
9726
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
9727
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9728
 
9729
	        OPEN clone_package_versions_cur;
9730
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
9731
	        origPkg_id := clone_package_versions_rec.pkg_id;
9732
	        origDlocked := clone_package_versions_rec.dlocked;
9733
	        CLOSE clone_package_versions_cur;
9734
 
9735
	        -- Clone Package Version Details --
9736
	        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,
9737
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
9738
	            SELECT retPv_id         AS pv_id,
9739
	                   origPkg_id       AS pkg_id,
9740
	                   SSpkg_version    AS pkg_version,
9741
	                   'N'              AS dlocked,
9742
	                   Ora_Sysdate      AS created_stamp,
9743
	                   NNuser_id        AS creator_id,
9744
	                   Ora_Sysdatetime  AS modified_stamp,
9745
	                   NNuser_id        AS modifier_id,
9746
	                   SSV_MM           AS V_MM,
9747
	                   SSV_NMM          AS V_NMM,
9748
	                   SSV_EXT          AS V_EXT,
9749
	                   pv.src_path,
9750
	                   pv.pv_description,
9751
                       pv.PV_OVERVIEW,
9752
                       NNorig_pv_id 	AS LAST_PV_ID,
9753
	                   pv.owner_id,
9754
					   pv.IS_DEPLOYABLE,
9755
					   pv.IS_BUILD_ENV_REQUIRED
9756
	              FROM PACKAGE_VERSIONS pv
9757
	             WHERE pv.pv_id = NNorig_pv_id;
9758
 
9759
 
9760
	        -- Set Issues Type for cloning ---
9761
	        IF origDlocked = 'Y'
9762
	        THEN
9763
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
9764
	        ELSE
9765
            	nIssuesTypes := NULL;
9766
	        END IF;
9767
 
9768
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
9769
 
9770
 
9771
 
9772
	    ELSE
9773
	        retPv_id := package_versions_rec.pv_id;
9774
 
9775
	    END IF;
9776
 
9777
        CLOSE package_versions_cur;
9778
 
9779
	ELSE
9780
    	retPv_id := NNsetto_pv_id;
9781
    END IF;
9782
 
9783
 
9784
    /* ---------------------------------------------------- */
9785
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
9786
    /* ---------------------------------------------------- */
9787
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
9788
	    UPDATE RELEASE_CONTENT
9789
	       SET pv_id = retPv_id,
9790
	           insert_stamp = Ora_Sysdate,
9791
	           insertor_id = NNuser_id
9792
	     WHERE rtag_id = NNrtag_id
9793
	       AND pv_id = NNorig_pv_id;
9794
 
9795
        /* LOG ACTION */
9796
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9797
		  FROM PROJECTS proj,
9798
		  	   VTREES vt,
9799
		       RELEASE_TAGS rt
9800
		 WHERE rt.VTREE_ID = vt.VTREE_ID
9801
		   AND vt.PROJ_ID = proj.PROJ_ID
9802
		   AND rt.RTAG_ID = NNrtag_id;
9803
 
9804
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
9805
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
9806
 
9807
	END IF;
9808
 
9809
 
9810
END New_Version;
9811
/
9812
 
9813
CREATE OR REPLACE PROCEDURE Reset_Ignore_Warnings ( sPvIdList IN VARCHAR2,
9814
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
9815
/* ---------------------------------------------------------------------------
9816
    Version: 5.0
9817
   --------------------------------------------------------------------------- */
9818
 
9819
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9820
 
9821
BEGIN
9822
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
9823
 
9824
    -- Remove Ignore Warnings
9825
     DELETE
9826
       FROM ignore_warnings
9827
	  WHERE (rtag_id, pv_id, dpv_id) IN
9828
	     (
9829
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
9830
	        FROM ignore_warnings igw,
9831
	             package_versions dpv,
9832
	             package_versions pv
9833
	       WHERE igw.dpv_id = dpv.pv_id
9834
	         AND igw.rtag_id = nRTagId
9835
	         AND dpv.pkg_id = pv.pkg_id
9836
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
9837
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
9838
         );
9839
 
9840
END Reset_Ignore_Warnings;
9841
/
9842
 
9843
CREATE OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)IS
9844
Auto CHAR;
9845
/******************************************************************************
9846
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
9847
   PURPOSE:    
9848
 
9849
   REVISIONS:
9850
   Ver        Date        Author           Description
9851
   ---------  ----------  ---------------  ------------------------------------
9852
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
9853
 
9854
   NOTES:
9855
 
9856
   Automatically available Auto Replace Keywords:
9857
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
9858
      Sysdate:         14/12/2006
9859
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
9860
      Username:         (set in TOAD Options, Procedure Editor)
9861
      Table Name:       (set in the "New PL/SQL Object" dialog)
9862
 
9863
******************************************************************************/
9864
BEGIN
9865
 
9866
	 SELECT IS_AUTOBUILDABLE into Auto
9867
	 FROM PACKAGE_VERSIONS 
9868
	 WHERE PV_ID = nPvId;
9869
 
9870
	 IF Auto = 'N' Then
9871
 
9872
	 	UPDATE PACKAGE_VERSIONS
9873
	 	SET IS_AUTOBUILDABLE = 'Y'
9874
	 	WHERE PV_ID = nPvId;
9875
 
9876
 
9877
	 	/* LOG ACTION */
9878
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
9879
 
9880
	 Else
9881
 
9882
		 UPDATE PACKAGE_VERSIONS
9883
		 SET IS_AUTOBUILDABLE = 'N'
9884
		 WHERE PV_ID = nPvId;
9885
 
9886
 
9887
	 	 /* LOG ACTION */
9888
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
9889
 
9890
	 End If;
9891
 
9892
 
9893
 
9894
 
9895
 
9896
 
9897
 
9898
 
9899
END SWITCH_REPRODUCIBLE_PACKAGE;
9900
/
9901
 
9902
CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,
9903
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
9904
												  	nUserId IN NUMBER
9905
	   	  		  									) IS
9906
 
9907
/******************************************************************************
9908
   NAME:       REMOVE_PACKAGE_INTEREST
9909
   PURPOSE:    To remove interest in a given package per project
9910
 
9911
   REVISIONS:
9912
   Ver        Date        Author           Description
9913
   ---------  ----------  ---------------  ------------------------------------
9914
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
9915
 
9916
   NOTES:
9917
 
9918
   Automatically available Auto Replace Keywords:
9919
      Object Name:     REMOVE_PACKAGE_INTEREST
9920
      Sysdate:         12/05/2006
9921
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
9922
      Username:         (set in TOAD Options, Procedure Editor)
9923
      Table Name:       (set in the "New PL/SQL Object" dialog)
9924
 
9925
******************************************************************************/
9926
BEGIN
9927
 
9928
	 --Delete from PACKAGE_INTEREST
9929
	 DELETE FROM PACKAGE_INTEREST
9930
	 WHERE PROJ_ID = nProjId
9931
	 AND PKG_ID = nPkgId
9932
	 AND USER_ID = nUserId;
9933
 
9934
END REMOVE_PACKAGE_INTEREST;
9935
/
9936
 
9937
CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
9938
/* ---------------------------------------------------------------------------
9939
    Version: 3.0
9940
   --------------------------------------------------------------------------- */
9941
 
9942
 
9943
BEGIN
9944
 
9945
	 -- Touch Release for Rebuild
9946
     UPDATE RELEASE_TAGS rt SET
9947
     	rt.REBUILD_ENV = 'Y',
9948
        rt.REBUILD_STAMP = 0
9949
      WHERE rt.RTAG_ID = nRtagId;
9950
 
9951
	COMMIT;	  
9952
 
9953
END Touch_Release;
9954
/
9955
 
9956
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9957
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9958
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
9959
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9960
/* ---------------------------------------------------------------------------
9961
    Version: 3.0
9962
   --------------------------------------------------------------------------- */
9963
 
9964
    ActionTypeId NUMBER;
9965
 
9966
BEGIN
9967
 
9968
    -- Get Action Type FK
9969
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9970
      FROM ACTION_TYPE act
9971
     WHERE act.NAME = enumActionTypeName;
9972
 
9973
 
9974
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9975
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
9976
 
9977
 
9978
END Log_Action;
9979
/
9980
 
9981
CREATE OR REPLACE PACKAGE BODY pk_package
9982
IS
9983
/*
9984
------------------------------
9985
||  Last Modified:  J. Tweddle
9986
||  Modified Date:  24/08/2007
9987
||  Body Version:   1.8
9988
------------------------------
9989
*/
9990
 
9991
   /*-------------------------------------------------------------------------------------------------------*/
9992
   PROCEDURE new_version (
9993
      nlastpvid                   IN       NUMBER,
9994
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
9995
      cbuildtype                  IN       CHAR,
9996
      nsettopvid                  IN       NUMBER DEFAULT NULL,
9997
      nrtagid                     IN       NUMBER,
9998
      nuserid                     IN       NUMBER,
9999
      enumissues_state_imported   IN       NUMBER,
10000
      returnpvid                  OUT      NUMBER
10001
   )
10002
   IS
10003
      origpkg_id                   package_versions.pkg_id%TYPE;
10004
      origdlocked                  package_versions.dlocked%TYPE;
10005
      ssv_mm                       package_versions.v_mm%TYPE;
10006
      ssv_nmm                      package_versions.v_nmm%TYPE;
10007
      ssv_ext                      package_versions.v_ext%TYPE;
10008
      spackageversion              VARCHAR2 (4000);
10009
      nissuestypes                 NUMBER;
10010
      nviewid                      NUMBER;
10011
      reccount                     NUMBER;
10012
      isreleased                   package_versions.dlocked%TYPE       := 'N';
10013
      slabel                       VARCHAR2 (4000)                    := NULL;
10014
 
10015
      CURSOR package_versions_cur
10016
      IS
10017
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
10018
           FROM package_versions pv
10019
          WHERE pv.pkg_version = snewpkgversion
10020
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
10021
                                         FROM package_versions origpv
10022
                                        WHERE origpv.pv_id = nlastpvid);
10023
 
10024
      package_versions_rec         package_versions_cur%ROWTYPE;
10025
 
10026
      CURSOR clone_package_versions_cur
10027
      IS
10028
         SELECT DISTINCT pkg_id, dlocked
10029
                    FROM package_versions
10030
                   WHERE pv_id = nlastpvid;
10031
 
10032
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
10033
   BEGIN
10034
      spackageversion := snewpkgversion;
10035
 
10036
      IF nsettopvid IS NULL
10037
      THEN
10038
         -- SetToPv_id is not supplied, hence proceed.
10039
 
10040
         /* ---------------------------------------------------- */
10041
/* Find id package_version exists                       */
10042
/* ---------------------------------------------------- */
10043
         OPEN package_versions_cur;
10044
 
10045
         FETCH package_versions_cur
10046
          INTO package_versions_rec;
10047
 
10048
         IF package_versions_cur%NOTFOUND
10049
         THEN
10050
            ---  Create brand new package ---
10051
            SELECT seq_pv_id.NEXTVAL
10052
              INTO returnpvid
10053
              FROM DUAL;
10054
 
10055
            -- Split Version to get extention + other
10056
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
10057
 
10058
            -- Get previous package to clone from
10059
            OPEN clone_package_versions_cur;
10060
 
10061
            FETCH clone_package_versions_cur
10062
             INTO clone_package_versions_rec;
10063
 
10064
            origpkg_id := clone_package_versions_rec.pkg_id;
10065
            origdlocked := clone_package_versions_rec.dlocked;
10066
 
10067
            CLOSE clone_package_versions_cur;
10068
 
10069
            -- Automated built config
10070
            IF (cbuildtype = 'A')
10071
            THEN
10072
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
10073
                                    -- Make sure that version is still unique
10074
            END IF;
10075
 
10076
            -- Clone Package Version Details --
10077
            INSERT INTO package_versions
10078
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
10079
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
10080
                         v_ext, src_path, pv_description, pv_overview,
10081
                         last_pv_id, owner_id, is_deployable,
10082
                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
10083
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
10084
                      spackageversion AS pkg_version, 'N' AS dlocked,
10085
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
10086
                      ora_sysdatetime AS modified_stamp,
10087
                      nuserid AS modifier_id, ssv_mm AS v_mm,
10088
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
10089
                      pv.pv_description, pv.pv_overview,
10090
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
10091
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
10092
                 FROM package_versions pv
10093
                WHERE pv.pv_id = nlastpvid;
10094
 
10095
            -- Set Issues Type for cloning ---
10096
            IF origdlocked = 'Y'
10097
            THEN
10098
               nissuestypes := enumissues_state_imported;
10099
            ELSE
10100
               nissuestypes := NULL;
10101
            END IF;
10102
 
10103
            -- Update Label for automated built
10104
            IF (cbuildtype = 'A')
10105
            THEN
10106
               slabel := get_automated_label (returnpvid);
10107
 
10108
               UPDATE package_versions pv
10109
                  SET pv.pkg_label = slabel
10110
                WHERE pv.pv_id = returnpvid;
10111
            END IF;
10112
 
10113
            basic_clone (nlastpvid,
10114
                         returnpvid,
10115
                         nrtagid,
10116
                         nuserid,
10117
                         origpkg_id,
10118
                         nissuestypes
10119
                        );
10120
         ELSE
10121
            --- Package already exists, hence reuse ---
10122
            returnpvid := package_versions_rec.pv_id;
10123
            isreleased := package_versions_rec.dlocked;
10124
         END IF;
10125
 
10126
         CLOSE package_versions_cur;
10127
      ELSE
10128
         returnpvid := nsettopvid;
10129
      END IF;
10130
   END new_version;
10131
 
10132
/*-------------------------------------------------------------------------------------------------------*/
10133
   PROCEDURE change_state (
10134
      pvid       IN   NUMBER,
10135
      newstate   IN   package_versions.dlocked%TYPE,
10136
      userid     IN   NUMBER
10137
   )
10138
   IS
10139
   BEGIN
10140
      -- Set package in Released mode
10141
      UPDATE package_versions pv
10142
         SET pv.dlocked = newstate,
10143
             pv.modified_stamp = ora_sysdatetime,
10144
             pv.modifier_id = userid
10145
       WHERE pv.pv_id = pvid;
10146
 
10147
      -- Log action --
10148
      IF newstate = 'Y'
10149
      THEN
10150
         -- RELEASED --
10151
         log_action (pvid,
10152
                     'makeofficial',
10153
                     userid,
10154
                     'Package state change to: Released'
10155
                    );
10156
      ELSIF newstate = 'N'
10157
      THEN
10158
         -- UNLOCKED --
10159
         log_action (pvid,
10160
                     'makeunofficial',
10161
                     userid,
10162
                     'Package state change to: Ulocked'
10163
                    );
10164
      ELSIF newstate = 'P'
10165
      THEN
10166
         -- PENDING APPROVAL --
10167
         log_action (pvid,
10168
                     'add_to_planned',
10169
                     userid,
10170
                     'Package state change to: Pending Approval'
10171
                    );
10172
      ELSIF newstate = 'R'
10173
      THEN
10174
         -- REJECTED --
10175
         log_action (pvid,
10176
                     'reject_package',
10177
                     userid,
10178
                     'Package state change to: Rejected'
10179
                    );
10180
      ELSIF newstate = 'A'
10181
      THEN
10182
         -- APPROVED --
10183
         log_action (pvid,
10184
                     'approve_package',
10185
                     userid,
10186
                     'Package state change to: Approved'
10187
                    );
10188
      END IF;
10189
   END;
10190
 
10191
/*-------------------------------------------------------------------------------------------------------*/
10192
   PROCEDURE destroy_package (
10193
      pvid               IN       NUMBER,
10194
      overridewarnings   IN       CHAR DEFAULT 'N',
10195
      problemstring      OUT      VARCHAR2
10196
   )
10197
   IS
10198
      LOCKED     CHAR;
10199
      pkgid      NUMBER;
10200
      ROWCOUNT   NUMBER;
10201
   BEGIN
10202
      /*
10203
      || This will destroy all package details from database.
10204
      || It will only be used to remove unwanted work in progress packages,
10205
      || or mestaken versions
10206
      */
10207
 
10208
      /*--------------- Business Rules Here -------------------*/
10209
      problemstring := NULL;
10210
 
10211
      IF overridewarnings = 'N'
10212
      THEN
10213
         -- Package must not be official
10214
         SELECT pv.dlocked
10215
           INTO LOCKED
10216
           FROM package_versions pv
10217
          WHERE pv.pv_id = pvid;
10218
 
10219
         IF LOCKED = 'Y'
10220
         THEN
10221
            problemstring :=
10222
                  problemstring
10223
               || '- Package is locked and released.'
10224
               || UTL_TCP.crlf;
10225
         END IF;
10226
 
10227
         -- Cannot remove if used in BOMs
10228
         SELECT COUNT (osc.prod_id)
10229
           INTO ROWCOUNT
10230
           FROM deployment_manager.os_contents osc
10231
          WHERE osc.prod_id = pvid;
10232
 
10233
         IF ROWCOUNT > 0
10234
         THEN
10235
            problemstring :=
10236
                  problemstring
10237
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
10238
               || UTL_TCP.crlf;
10239
         END IF;
10240
 
10241
         -- Cannot remove if Referenced as build dependency
10242
         SELECT COUNT (dep.pv_id)
10243
           INTO ROWCOUNT
10244
           FROM package_dependencies dep
10245
          WHERE dep.dpv_id = pvid;
10246
 
10247
         IF ROWCOUNT > 0
10248
         THEN
10249
            problemstring :=
10250
                  problemstring
10251
               || '- Package is referenced by other package as build dependency.'
10252
               || UTL_TCP.crlf;
10253
         END IF;
10254
 
10255
         -- Cannot remove if Referenced as runtime dependency
10256
         SELECT COUNT (rd.pv_id)
10257
           INTO ROWCOUNT
10258
           FROM runtime_dependencies rd
10259
          WHERE rd.rtd_id = pvid;
10260
 
10261
         IF ROWCOUNT > 0
10262
         THEN
10263
            problemstring :=
10264
                  problemstring
10265
               || '- Package is referenced by other package as runtime dependency.'
10266
               || UTL_TCP.crlf;
10267
         END IF;
10268
 
10269
         -- Cannot remove if Referenced as patch
10270
         SELECT COUNT (pp.pv_id)
10271
           INTO ROWCOUNT
10272
           FROM package_patches pp
10273
          WHERE pp.patch_id = pvid;
10274
 
10275
         IF ROWCOUNT > 0
10276
         THEN
10277
            problemstring :=
10278
                  problemstring
10279
               || '- Package is used as patch by other package.'
10280
               || UTL_TCP.crlf;
10281
         END IF;
10282
      END IF;
10283
 
10284
/*-------------------------------------------------------*/
10285
      IF (problemstring IS NULL)
10286
      THEN
10287
         --- Remove From Work in Progress
10288
         DELETE FROM work_in_progress wip
10289
               WHERE wip.pv_id = pvid;
10290
 
10291
         --- Remove From Pending
10292
         DELETE FROM planned pl
10293
               WHERE pl.pv_id = pvid;
10294
 
10295
         --- Remove From Released area
10296
         DELETE FROM release_content rc
10297
               WHERE rc.pv_id = pvid;
10298
 
10299
         ---Remove From Package Processes
10300
         DELETE FROM package_processes pp
10301
               WHERE pp.pv_id = pvid;
10302
 
10303
         --- Remove Dependencies
10304
         DELETE FROM package_dependencies dep
10305
               WHERE dep.pv_id = pvid;
10306
 
10307
         DELETE FROM package_dependencies dep
10308
               WHERE dep.dpv_id = pvid;
10309
 
10310
         --- Remove Runtime dependencies
10311
         DELETE FROM runtime_dependencies rtd
10312
               WHERE rtd.pv_id = pvid;
10313
 
10314
         DELETE FROM runtime_dependencies rtd
10315
               WHERE rtd.rtd_id = pvid;
10316
 
10317
         --- Remove components
10318
         DELETE FROM product_components pc
10319
               WHERE pc.pv_id = pvid;
10320
 
10321
         DELETE FROM release_components rc
10322
               WHERE rc.pv_id = pvid;
10323
 
10324
         --- Remove From Notification History
10325
         DELETE FROM notification_history nh
10326
               WHERE nh.pv_id = pvid;
10327
 
10328
         --- Remove From Ignore Warnings
10329
         DELETE FROM ignore_warnings iw
10330
               WHERE iw.pv_id = pvid;
10331
 
10332
         --- Remove From Additional Notes
10333
         DELETE FROM additional_notes an
10334
               WHERE an.pv_id = pvid;
10335
 
10336
         --- Remove From CQ Issues
10337
         DELETE FROM cq_issues cq
10338
               WHERE cq.pv_id = pvid;
10339
 
10340
         --- Remove from Package Patches
10341
         DELETE FROM package_patches pp
10342
               WHERE pp.pv_id = pvid;
10343
 
10344
         DELETE FROM package_patches pp
10345
               WHERE pp.patch_id = pvid;
10346
 
10347
         --- Remove From Package Documents
10348
         DELETE FROM package_documents pd
10349
               WHERE pd.pv_id = pvid;
10350
 
10351
         --- Remove from Code Review
10352
         DELETE FROM code_reviews cr
10353
               WHERE cr.pv_id = pvid;
10354
 
10355
         --- Remove from Code Review URL
10356
         DELETE FROM code_review_url cru
10357
               WHERE cru.pv_id = pvid;
10358
 
10359
         --- Remove from Unit Tests
10360
         DELETE FROM unit_tests ut
10361
               WHERE ut.pv_id = pvid;
10362
 
10363
         --- Remove from Package BuildEnv
10364
         DELETE FROM package_build_env pbe
10365
               WHERE pbe.pv_id = pvid;
10366
 
10367
		 --- Remove from Package Build Info
10368
		 DELETE FROM package_build_info pbi
10369
		 	   WHERE pbi.pv_id = pvid;    
10370
 
10371
 
10372
         --- Remove from Build Order
10373
         DELETE FROM build_order bo
10374
               WHERE bo.pv_id = pvid;
10375
 
10376
         --- Remove from Note Manager
10377
         DELETE FROM note_manager nm
10378
               WHERE nm.nid = pvid;
10379
 
10380
         --- Remove from Action log
10381
         DELETE FROM action_log al
10382
               WHERE al.pv_id = pvid;
10383
 
10384
		 --- Remove from Do Not Ripple 
10385
		 DELETE FROM DO_NOT_RIPPLE dnr
10386
		 	   WHERE dnr.PV_ID = pvid;
10387
 
10388
		 --- Remove from Advisory Ripple 
10389
		 DELETE FROM ADVISORY_RIPPLE ar
10390
		 	   WHERE ar.PV_ID = pvid;			   
10391
 
10392
		 --- Remove from Jira Issues 
10393
		 DELETE FROM JIRA_ISSUES jira
10394
		 	   WHERE jira.PV_ID = pvid;
10395
 
10396
         --- Finally Remove From Package Versions
10397
         --- Get Package name
10398
         SELECT pv.pkg_id
10399
           INTO pkgid
10400
           FROM package_versions pv
10401
          WHERE pv.pv_id = pvid;
10402
 
10403
         DELETE FROM package_versions pv
10404
               WHERE pv.pv_id = pvid;
10405
 
10406
         --- Remove package name if not used any more
10407
         SELECT COUNT (pv.pv_id)
10408
           INTO ROWCOUNT
10409
           FROM package_versions pv
10410
          WHERE pv.pkg_id = pkgid;
10411
 
10412
         IF ROWCOUNT < 1
10413
         THEN
10414
            DELETE FROM PACKAGES pkg
10415
                  WHERE pkg.pkg_id = pkgid;
10416
         END IF;
10417
      END IF;
10418
   END;
10419
 
10420
/*-------------------------------------------------------------------------------------------------------*/
10421
   PROCEDURE new_patch (
10422
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
10423
      nparentpvid        IN       NUMBER,
10424
      spatchidlist       IN       VARCHAR2,
10425
      nuserid            IN       NUMBER,
10426
      returnpatchid      OUT      NUMBER
10427
   )
10428
   IS
10429
      patchpv_id           NUMBER;
10430
      parpkg_id            NUMBER;
10431
      lastinstallorder     NUMBER;
10432
      ispatchdlocked       package_versions.dlocked%TYPE;
10433
      ssv_mm               package_versions.v_mm%TYPE;
10434
      ssv_nmm              package_versions.v_nmm%TYPE;
10435
      ssv_ext              package_versions.v_ext%TYPE;
10436
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
10437
                                                                          ();
10438
 
10439
      CURSOR parent_cur
10440
      IS
10441
         SELECT pv.*, pkg.pkg_name
10442
           FROM package_versions pv, PACKAGES pkg
10443
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
10444
 
10445
      parent_rec           parent_cur%ROWTYPE;
10446
 
10447
      CURSOR patch_cur
10448
      IS
10449
         SELECT pv.*, pg.pkg_name
10450
           FROM package_versions pv, PACKAGES pg
10451
          WHERE pv.pkg_id = parpkg_id
10452
            AND pv.pkg_version = snewpatchversion
10453
            AND pv.pkg_id = pg.pkg_id;
10454
 
10455
      patch_rec            patch_cur%ROWTYPE;
10456
 
10457
      CURSOR releases_cur
10458
      IS
10459
         SELECT rc.pv_id
10460
           FROM release_content rc
10461
          WHERE rc.pv_id = patch_rec.pv_id;
10462
 
10463
      releases_rec         releases_cur%ROWTYPE;
10464
   BEGIN
10465
      -- Get Last Install Order
10466
      SELECT COUNT (*)
10467
        INTO lastinstallorder
10468
        FROM package_patches pp
10469
       WHERE pp.pv_id = nparentpvid;
10470
 
10471
      -- Get parent details
10472
      OPEN parent_cur;
10473
 
10474
      FETCH parent_cur
10475
       INTO parent_rec;
10476
 
10477
      parpkg_id := parent_rec.pkg_id;
10478
 
10479
      -- Find if patch exists in database
10480
      OPEN patch_cur;
10481
 
10482
      FETCH patch_cur
10483
       INTO patch_rec;
10484
 
10485
      -- Parent must be official
10486
      IF parent_rec.dlocked = 'Y'
10487
      THEN
10488
         IF patch_cur%NOTFOUND
10489
         THEN
10490
            ispatchdlocked := 'N';
10491
 
10492
            -- Create new patch version --
10493
            SELECT seq_pv_id.NEXTVAL
10494
              INTO patchpv_id
10495
              FROM DUAL;
10496
 
10497
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
10498
 
10499
            INSERT INTO package_versions
10500
                        (pv_id, pkg_id, pkg_version,
10501
                         dlocked, created_stamp, creator_id,
10502
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
10503
                         src_path,
10504
                         pv_description,
10505
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
10506
						 is_autobuildable, ripple_field
10507
                        )
10508
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
10509
                         ispatchdlocked, ora_sysdate, nuserid,
10510
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
10511
                         parent_rec.src_path,
10512
                            'This is a patch to '
10513
                         || parent_rec.pkg_name
10514
                         || ' '
10515
                         || parent_rec.pkg_version,
10516
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
10517
                        );
10518
 
10519
            INSERT INTO package_patches
10520
                        (pv_id, patch_id, install_order)
10521
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10522
                       lastinstallorder + 1 AS install_order
10523
                  FROM package_versions pv
10524
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10525
 
10526
            /* LOG ACTION */
10527
            log_action (patchpv_id,
10528
                        'new_version',
10529
                        nuserid,
10530
                        'Patch version created: ' || snewpatchversion
10531
                       );
10532
            log_action (nparentpvid,
10533
                        'patch_add',
10534
                        nuserid,
10535
                        'New patch created and attached: ' || snewpatchversion
10536
                       );
10537
         ELSE
10538
            patchpv_id := patch_rec.pv_id;
10539
            ispatchdlocked := patch_rec.dlocked;
10540
 
10541
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
10542
            OPEN releases_cur;
10543
 
10544
            FETCH releases_cur
10545
             INTO releases_rec;
10546
 
10547
            IF releases_cur%NOTFOUND
10548
            THEN
10549
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
10550
               UPDATE package_versions
10551
                  SET is_patch = 'Y'
10552
                WHERE pv_id = patchpv_id;
10553
 
10554
               INSERT INTO package_patches
10555
                           (pv_id, patch_id, install_order)
10556
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10557
                          lastinstallorder + 1 AS install_order
10558
                     FROM package_versions pv
10559
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10560
            END IF;
10561
 
10562
            CLOSE releases_cur;
10563
 
10564
            /* LOG ACTION */
10565
            log_action (nparentpvid,
10566
                        'patch_add',
10567
                        nuserid,
10568
                           'Patch version was found and attached: '
10569
                        || snewpatchversion
10570
                       );
10571
         END IF;
10572
      END IF;
10573
 
10574
      /* Create Patch Dependencies */
10575
      opatchdepcollector := in_list_number (spatchidlist);
10576
 
10577
      -- Make sure patch is unofficial before altering its dependencies
10578
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
10579
      THEN
10580
         -- Delete Existing Dependencies
10581
         DELETE FROM package_dependencies dep
10582
               WHERE dep.pv_id = patchpv_id;
10583
 
10584
         -- Insert new dependencies
10585
         INSERT INTO package_dependencies
10586
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
10587
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
10588
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
10589
                   'L' AS build_type
10590
              FROM package_versions pv
10591
             WHERE pv.pv_id IN (
10592
                      SELECT *
10593
                        FROM TABLE
10594
                                (CAST
10595
                                    (opatchdepcollector AS relmgr_number_tab_t)
10596
                                ));
10597
      END IF;
10598
 
10599
      -- Return patch_id
10600
      returnpatchid := patchpv_id;
10601
 
10602
      CLOSE parent_cur;
10603
 
10604
      CLOSE patch_cur;
10605
   EXCEPTION
10606
      WHEN DUP_VAL_ON_INDEX
10607
      THEN
10608
         raise_application_error (-20000,
10609
                                     'Patch version '
10610
                                  || snewpatchversion
10611
                                  || ' already exist.'
10612
                                 );
10613
   END;
10614
 
10615
/*-------------------------------------------------------------------------------------------------------*/
10616
   PROCEDURE obsolete_patch (
10617
      patchid            IN   NUMBER,
10618
      isobsolete         IN   CHAR,
10619
      obsoletecomments   IN   VARCHAR2,
10620
      userid             IN   NUMBER
10621
   )
10622
   IS
10623
   BEGIN
10624
      -- Update patch
10625
      UPDATE package_versions pv
10626
         SET pv.is_obsolete = isobsolete,
10627
             pv.obsolete_comments = obsoletecomments
10628
       WHERE pv.pv_id = patchid;
10629
 
10630
      /*
10631
      -- Update patch children
10632
      UPDATE PACKAGE_VERSIONS pv SET
10633
      pv.IS_OBSOLETE = IsObsolete,
10634
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10635
      WHERE pv.PV_ID IN (
10636
                     SELECT DISTINCT dep.DPV_ID
10637
                       FROM PACKAGE_DEPENDENCIES dep
10638
                      WHERE dep.PV_ID = PatchId
10639
                     );
10640
 
10641
 
10642
      -- Update patch parent
10643
      UPDATE PACKAGE_VERSIONS pv SET
10644
      pv.IS_OBSOLETE = IsObsolete,
10645
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10646
      WHERE pv.PV_ID IN (
10647
                     SELECT DISTINCT dep.PV_ID
10648
                       FROM PACKAGE_DEPENDENCIES dep
10649
                      WHERE dep.DPV_ID = PatchId
10650
                     );
10651
 
10652
         */
10653
 
10654
      /* LOG ACTION */
10655
      IF isobsolete IS NOT NULL
10656
      THEN
10657
         log_action (patchid,
10658
                     'patch_obsolete',
10659
                     userid,
10660
                     'Obsolete patch. ' || obsoletecomments
10661
                    );
10662
      ELSE
10663
         log_action (patchid,
10664
                     'patch_obsolete',
10665
                     userid,
10666
                     'Undo patch obsolete.'
10667
                    );
10668
      END IF;
10669
   END;
10670
 
10671
/*-------------------------------------------------------------------------------------------------------*/
10672
   PROCEDURE obsolete_patches (
10673
      spatchidlist       IN   VARCHAR2,
10674
      isobsolete         IN   CHAR,
10675
      obsoletecomments   IN   VARCHAR2,
10676
      userid             IN   NUMBER
10677
   )
10678
   IS
10679
   BEGIN
10680
      /*--------------- Business Rules Here -------------------*/
10681
      IF spatchidlist IS NULL
10682
      THEN
10683
         raise_application_error (-20000,
10684
                                  'Please select one or more Patches.'
10685
                                 );
10686
      END IF;
10687
 
10688
/*-------------------------------------------------------*/
10689
 
10690
      -- Update patch
10691
      UPDATE package_versions pv
10692
         SET pv.is_obsolete = isobsolete,
10693
             pv.obsolete_comments = obsoletecomments
10694
       WHERE pv.pv_id IN (
10695
                SELECT *
10696
                  FROM THE
10697
                          (SELECT CAST
10698
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
10699
                                     )
10700
                             FROM DUAL
10701
                          ));
10702
   /*
10703
   -- Update patch children
10704
   UPDATE PACKAGE_VERSIONS pv SET
10705
   pv.IS_OBSOLETE = IsObsolete,
10706
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10707
   WHERE pv.PV_ID IN (
10708
                  SELECT DISTINCT dep.DPV_ID
10709
                    FROM PACKAGE_DEPENDENCIES dep
10710
                   WHERE dep.PV_ID = PatchId
10711
                  );
10712
 
10713
 
10714
   -- Update patch parent
10715
   UPDATE PACKAGE_VERSIONS pv SET
10716
   pv.IS_OBSOLETE = IsObsolete,
10717
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10718
   WHERE pv.PV_ID IN (
10719
                  SELECT DISTINCT dep.PV_ID
10720
                    FROM PACKAGE_DEPENDENCIES dep
10721
                   WHERE dep.DPV_ID = PatchId
10722
                  );
10723
 
10724
      */
10725
 
10726
   /* LOG ACTION
10727
   IF IsObsolete IS NOT NULL THEN
10728
         Log_Action ( PatchId, 'patch_obsolete', UserId,
10729
                  'Obsolete patch. '|| ObsoleteComments );
10730
   ELSE
10731
      Log_Action ( PatchId, 'patch_obsolete', UserId,
10732
                  'Undo patch obsolete.' );
10733
   END IF;  */
10734
   END;
10735
 
10736
/*-------------------------------------------------------------------------------------------------------*/
10737
   PROCEDURE add_process (
10738
      nprocid         IN   processes.proc_id%TYPE,
10739
      shealthtag      IN   processes.proc_name%TYPE,
10740
      sprocdesc       IN   processes.proc_description%TYPE,
10741
      scmdinterface   IN   processes.run_as%TYPE,
10742
      spkgowner       IN   processes.pkg_owner%TYPE,
10743
      sisinterface    IN   processes.is_interface%TYPE,
10744
      npvid           IN   package_processes.pv_id%TYPE,
10745
      nuserid         IN   NUMBER
10746
   )
10747
   IS
10748
      pkgname   VARCHAR2 (100);
10749
/*Rupesh Release on 17/05/2006*/
10750
   BEGIN
10751
      INSERT INTO processes
10752
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
10753
                   is_interface
10754
                  )
10755
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
10756
                   sisinterface
10757
                  );
10758
 
10759
      pk_package.add_package_process (nprocid, npvid, nuserid);
10760
   END;
10761
 
10762
/*-------------------------------------------------------------------------------------------------------*/
10763
   PROCEDURE add_package_process (
10764
      nprocidlist   IN   VARCHAR2,
10765
      npvid         IN   package_processes.pv_id%TYPE,
10766
      nuserid       IN   NUMBER
10767
   )
10768
   IS
10769
      processname   VARCHAR2 (4000);
10770
 
10771
/*Rupesh Release on 17/05/2006*/
10772
      CURSOR proc_cur
10773
      IS
10774
         SELECT prc.proc_id
10775
           FROM processes prc
10776
          WHERE prc.proc_id IN (
10777
                   SELECT *
10778
                     FROM THE
10779
                             (SELECT CAST
10780
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
10781
                                        )
10782
                                FROM DUAL
10783
                             ));
10784
 
10785
      proc_rec      proc_cur%ROWTYPE;
10786
   BEGIN
10787
      OPEN proc_cur;
10788
 
10789
      FETCH proc_cur
10790
       INTO proc_rec;
10791
 
10792
      WHILE proc_cur%FOUND
10793
      LOOP
10794
         INSERT INTO package_processes
10795
                     (proc_id, pv_id
10796
                     )
10797
              VALUES (proc_rec.proc_id, npvid
10798
                     );
10799
 
10800
         SELECT prc.proc_name
10801
           INTO processname
10802
           FROM processes prc
10803
          WHERE prc.proc_id = proc_rec.proc_id;
10804
 
10805
         -- Log Action --
10806
         log_action (npvid,
10807
                     'process_add',
10808
                     nuserid,
10809
                     'Added process with health tag ' || processname
10810
                    );
10811
 
10812
         FETCH proc_cur
10813
          INTO proc_rec;
10814
      END LOOP;
10815
   END;
10816
 
10817
/*-------------------------------------------------------------------------------------------------------*/
10818
   PROCEDURE remove_process (
10819
      nprocid   IN   package_processes.proc_id%TYPE,
10820
      npvid     IN   package_processes.pv_id%TYPE,
10821
      nuserid   IN   NUMBER
10822
   )
10823
   IS
10824
      processname   VARCHAR2 (4000);
10825
/* Rupesh Release on 17/05/2006*/
10826
   BEGIN
10827
      SELECT prc.proc_name
10828
        INTO processname
10829
        FROM processes prc
10830
       WHERE prc.proc_id = nprocid;
10831
 
10832
      DELETE FROM package_processes
10833
            WHERE proc_id = nprocid AND pv_id = npvid;
10834
 
10835
      -- Log Action --
10836
      log_action (npvid,
10837
                  'process_remove',
10838
                  nuserid,
10839
                  'Removed process with health tag ' || processname
10840
                 );
10841
   END;
10842
/*-------------------------------------------------------------------------------------------------------*/
10843
  /* 
10844
  Author: Rupesh Solanki
10845
  Purpose: To move package versions from one release to another
10846
  Release: 4th September 2006 
10847
 
10848
  */
10849
  PROCEDURE move_package (
10850
   	  npvid  			  IN package_versions.pv_id%TYPE,
10851
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
10852
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
10853
	  nuserid			  IN NUMBER	
10854
  )	
10855
  IS	
10856
 
10857
  oldrtag_name VARCHAR2(4000);
10858
  newrtag_name VARCHAR2(4000);
10859
 
10860
 
10861
 
10862
  BEGIN
10863
 
10864
 
10865
  SELECT rtag_name into oldrtag_name
10866
  FROM RELEASE_TAGS
10867
  WHERE rtag_id = nrtagid;
10868
 
10869
  SELECT rtag_name into newrtag_name
10870
  FROM RELEASE_TAGS
10871
  WHERE rtag_id = nnewrtagid;
10872
 
10873
  /* Table Work In Progress*/
10874
  	   UPDATE WORK_IN_PROGRESS
10875
	   SET RTAG_ID = nnewrtagid
10876
	   WHERE RTAG_ID = nrtagid
10877
	   AND PV_ID = npvid;
10878
 
10879
  /* Table PLANNED*/	
10880
  	   UPDATE PLANNED
10881
	   SET RTAG_ID = nnewrtagid
10882
	   WHERE RTAG_ID = nrtagid
10883
	   AND PV_ID = npvid;   
10884
 
10885
      -- Log Action --
10886
      log_action (npvid,
10887
                  'move_package_version',
10888
                  nuserid,
10889
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
10890
                 );  	   	     
10891
 
10892
 
10893
  END;
10894
 
10895
/*-------------------------------------------------------------------------------------------------------*/
10896
PROCEDURE modify_product_state (
10897
   	  npvid IN package_versions.pv_id%TYPE,
10898
	  nrtagid IN release_tags.rtag_id%TYPE,
10899
	  nstateid IN product_states.state_id%TYPE,
10900
	  nuserid IN NUMBER
10901
   ) IS
10902
 
10903
   sStateName VARCHAR2(4000);
10904
   sRtagName VARCHAR2(4000);
10905
 
10906
  /* 
10907
  Author: Rupesh Solanki
10908
  Purpose: To modify the product state from integration to test to deployment
10909
  Release: 25th January 2006 
10910
  */   
10911
 
10912
  BEGIN
10913
 
10914
  UPDATE RELEASE_CONTENT
10915
  SET PRODUCT_STATE = nstateid
10916
  WHERE PV_ID = npvid
10917
  AND RTAG_ID = nrtagid;
10918
 
10919
 
10920
  SELECT STATE INTO sStateName
10921
  FROM PRODUCT_STATES 
10922
  WHERE STATE_ID = nstateid;
10923
 
10924
  SELECT RTAG_NAME into sRtagName
10925
  FROM RELEASE_TAGS
10926
  WHERE RTAG_ID = nrtagid;
10927
 
10928
 
10929
  -- Log Action --
10930
  log_action (npvid,
10931
              'modify_product_state',
10932
               nuserid,
10933
               sStateName || ' in '|| sRtagName
10934
              );  
10935
 
10936
 
10937
  END;			  	   	     
10938
/*-------------------------------------------------------------------------------------------------------*/
10939
  PROCEDURE add_code_review_url (
10940
        npvid           IN    NUMBER,
10941
        nprojid         IN    NUMBER,
10942
        surl            IN    VARCHAR2,
10943
        sreason         IN    VARCHAR2,
10944
        ddateofreview   IN    DATE
10945
  ) IS
10946
 
10947
  ncrid NUMBER;
10948
 
10949
  /* 
10950
  Author: Jeremy Tweddle
10951
  Date: 24/Aug/2007 
10952
  */   
10953
 
10954
  BEGIN
10955
 
10956
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
10957
 
10958
 
10959
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
10960
                                    last_modified )
10961
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
10962
 
10963
  END;
10964
/*-------------------------------------------------------------------------------------------------------*/
10965
  PROCEDURE update_code_review_url (
10966
        ncrid           IN    NUMBER,
10967
        nprojid         IN    NUMBER,
10968
        surl            IN    VARCHAR2,
10969
        sreason         IN    VARCHAR2
10970
  ) IS
10971
 
10972
  /* 
10973
  Author: Jeremy Tweddle
10974
  Date: 22/Aug/2007 
10975
  */ 
10976
 
10977
  BEGIN
10978
 
10979
      UPDATE code_review_url
10980
      SET url = surl,
10981
          proj_id = nprojid,
10982
          reason = sreason,
10983
          last_modified = ora_sysdate
10984
      WHERE cr_id = ncrid;
10985
 
10986
  END;
10987
/*-------------------------------------------------------------------------------------------------------*/
10988
  PROCEDURE remove_code_review_url (
10989
        ncrid           IN    NUMBER
10990
  ) IS
10991
 
10992
  /* 
10993
  Author: Jeremy Tweddle
10994
  Date: 22/Aug/2007 
10995
  */
10996
 
10997
  BEGIN
10998
 
10999
      DELETE FROM code_review_url
11000
      WHERE cr_id = ncrid;
11001
 
11002
  END;
11003
/*-------------------------------------------------------------------------------------------------------*/
11004
END pk_package;
11005
/
11006
 
11007
CREATE OR REPLACE PACKAGE BODY                 pk_archive
11008
IS
11009
/*
11010
------------------------------
11011
||  Author:  Rupesh Solanki
11012
||  Date:    26 October 2006
11013
||  Version:   1.0
11014
------------------------------
11015
*/
11016
/*---------------------------*/
11017
PROCEDURE populate_packages_table IS
11018
 
11019
BEGIN
11020
		  INSERT INTO archive_manager.PACKAGES
11021
		  (
11022
		  select * from packages where pkg_id not in 
11023
		  		  (select pkg_id from archive_manager.packages)
11024
		  );
11025
 
11026
          INSERT INTO archive_manager.PROCESSES
11027
          (
11028
          select * from processes where proc_id not in 
11029
            (select proc_id from archive_manager.processes)
11030
          );
11031
 
11032
 
11033
 
11034
END;
11035
/*-------------------------------------------------------------------------------------------------------*/
11036
   PROCEDURE populate_archive_data_table (
11037
      nrtagid   IN   release_tags.rtag_id%TYPE
11038
   )
11039
   IS
11040
/*
11041
Reason: To populate the archive_data table with information regarding the
11042
         number of package versions that exist in other releases.
11043
*/
11044
      numcount      NUMBER;
11045
      numusedby     NUMBER;
11046
      numruntime    NUMBER;
11047
 
11048
      /* Get all the package versions in the release */
11049
      CURSOR archive_cur
11050
      IS
11051
         SELECT pv_id
11052
           FROM release_content
11053
          WHERE rtag_id = nrtagid;
11054
 
11055
      archive_rec   archive_cur%ROWTYPE;
11056
   BEGIN
11057
/*--------------- Business Rules Here -------------------*/
11058
/*-------------------------------------------------------*/
11059
      OPEN archive_cur;
11060
 
11061
      FETCH archive_cur
11062
       INTO archive_rec;
11063
 
11064
      WHILE archive_cur%FOUND
11065
      LOOP
11066
        /* How many packages depend on this package version? */
11067
         SELECT COUNT (*)
11068
           INTO numusedby
11069
           FROM package_dependencies
11070
          WHERE dpv_id = archive_rec.pv_id;
11071
 
11072
        /* How many project releases use this package version?  */
11073
         SELECT COUNT (*)
11074
           INTO numcount
11075
           FROM release_content
11076
          WHERE pv_id = archive_rec.pv_id;
11077
 
11078
        /* How many packages have this package version as runtime
11079
        dependency? */
11080
         SELECT COUNT (*)
11081
           INTO numruntime
11082
           FROM runtime_dependencies
11083
          WHERE rtd_id = archive_rec.pv_id;
11084
 
11085
        /* Insert into the archive_data table if they are not runtime dependant
11086
        and package dependant and they exist in that particular release only*/
11087
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
11088
         THEN
11089
            INSERT INTO archive_data
11090
                        (rtag_id, pv_id
11091
                        )
11092
                 VALUES (nrtagid, archive_rec.pv_id
11093
                        );
11094
         END IF;
11095
 
11096
         FETCH archive_cur
11097
          INTO archive_rec;
11098
      END LOOP;
11099
   END;
11100
 
11101
/*-------------------------------------------------------------------------------------------------------*/
11102
   PROCEDURE migrate_pv_to_archive_schema (
11103
      nrtagid   IN   release_tags.rtag_id%TYPE
11104
   )
11105
   IS
11106
   BEGIN
11107
 
11108
      /* MIGRATION - PACKAGE_VERSIONS */
11109
      INSERT INTO archive_manager.package_versions
11110
         SELECT *
11111
           FROM package_versions
11112
          WHERE pv_id IN (SELECT pv_id
11113
                            FROM archive_data);
11114
 
11115
      /* MIGRATION - PACKAGE_BUILD_ENV */
11116
      INSERT INTO archive_manager.package_build_env
11117
         SELECT *
11118
           FROM package_build_env
11119
          WHERE pv_id IN (SELECT pv_id
11120
                            FROM archive_data);
11121
 
11122
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
11123
      DELETE FROM package_build_env
11124
            WHERE pv_id IN (SELECT pv_id
11125
                              FROM archive_data);
11126
 
11127
      /* MIGRATION - PACKAGE_BUILD_INFO */
11128
      INSERT INTO archive_manager.package_build_info
11129
         SELECT *
11130
           FROM package_build_info
11131
          WHERE pv_id IN (SELECT pv_id
11132
                            FROM archive_data);
11133
 
11134
      /* PURGE DATA FROM PACKAGE_BUILD_info */
11135
      DELETE FROM package_build_info
11136
            WHERE pv_id IN (SELECT pv_id
11137
                              FROM archive_data);							  
11138
 
11139
      /* MIGRATION - UNIT_TESTS  */
11140
      INSERT INTO archive_manager.unit_tests
11141
         SELECT *
11142
           FROM unit_tests
11143
          WHERE pv_id IN (SELECT pv_id
11144
                            FROM archive_data);
11145
 
11146
      /* PURGE DATA FROM UNIT_TESTS*/
11147
      DELETE FROM unit_tests
11148
            WHERE pv_id IN (SELECT pv_id
11149
                              FROM archive_data);
11150
 
11151
      /* MIGRATION - PACKAGE_PROCESSES */
11152
      INSERT INTO archive_manager.package_processes
11153
         SELECT *
11154
           FROM package_processes
11155
          WHERE pv_id IN (SELECT pv_id
11156
                            FROM archive_data);
11157
 
11158
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
11159
      DELETE FROM package_processes
11160
            WHERE pv_id IN (SELECT pv_id
11161
                              FROM archive_data);
11162
 
11163
      /* MIGRATION - PACKAGE_DEPENDENCIES */
11164
      INSERT INTO archive_manager.package_dependencies
11165
         SELECT *
11166
           FROM package_dependencies
11167
          WHERE pv_id IN (SELECT pv_id
11168
                            FROM archive_data);
11169
 
11170
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
11171
      DELETE FROM package_dependencies
11172
            WHERE pv_id IN (SELECT pv_id
11173
                              FROM archive_data);
11174
 
11175
      /* MIGRATION - CODE_REVIEWS */
11176
      INSERT INTO archive_manager.code_reviews
11177
         SELECT *
11178
           FROM code_reviews
11179
          WHERE pv_id IN (SELECT pv_id
11180
                            FROM archive_data);
11181
 
11182
      /* PURGE DATA FROM CODE_REVIEWS*/
11183
      DELETE FROM code_reviews
11184
            WHERE pv_id IN (SELECT pv_id
11185
                              FROM archive_data);
11186
 
11187
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
11188
      INSERT INTO archive_manager.runtime_dependencies
11189
         SELECT *
11190
           FROM runtime_dependencies
11191
          WHERE pv_id IN (SELECT pv_id
11192
                            FROM archive_data);
11193
 
11194
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
11195
      DELETE FROM runtime_dependencies
11196
            WHERE pv_id IN (SELECT pv_id
11197
                              FROM archive_data);
11198
 
11199
      /* MIGRATION - PACKAGE_DOCUMENTS */
11200
      INSERT INTO archive_manager.package_documents
11201
         SELECT *
11202
           FROM package_documents
11203
          WHERE pv_id IN (SELECT pv_id
11204
                            FROM archive_data);
11205
 
11206
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
11207
      DELETE FROM package_documents
11208
            WHERE pv_id IN (SELECT pv_id
11209
                              FROM archive_data);
11210
 
11211
      /* MIGRATION - PACKAGE_PATCHES */
11212
      INSERT INTO archive_manager.package_patches
11213
         SELECT *
11214
           FROM package_patches
11215
          WHERE pv_id IN (SELECT pv_id
11216
                            FROM archive_data);
11217
 
11218
      /* PURGE DATA FROM PACKAGE_PATCHES*/
11219
      DELETE FROM package_patches
11220
            WHERE pv_id IN (SELECT pv_id
11221
                              FROM archive_data);
11222
 
11223
      /* MIGRATION - CQ_ISSUES */
11224
      INSERT INTO archive_manager.cq_issues
11225
         SELECT *
11226
           FROM cq_issues
11227
          WHERE pv_id IN (SELECT pv_id
11228
                            FROM archive_data);
11229
 
11230
      /* PURGE DATA FROM CQ_ISSUES*/
11231
      DELETE FROM cq_issues
11232
            WHERE pv_id IN (SELECT pv_id
11233
                              FROM archive_data);
11234
 
11235
      /* MIGRATION - ADDITIONAL_NOTES */
11236
      INSERT INTO archive_manager.additional_notes
11237
         SELECT *
11238
           FROM additional_notes
11239
          WHERE pv_id IN (SELECT pv_id
11240
                            FROM archive_data);
11241
 
11242
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
11243
      DELETE FROM additional_notes
11244
            WHERE pv_id IN (SELECT pv_id
11245
                              FROM archive_data);
11246
 
11247
      /* MIGRATION - RELEASE_COMPONENTS */
11248
      INSERT INTO archive_manager.release_components
11249
         SELECT *
11250
           FROM release_components
11251
          WHERE pv_id IN (SELECT pv_id
11252
                            FROM archive_data);
11253
 
11254
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
11255
      DELETE FROM release_components
11256
            WHERE pv_id IN (SELECT pv_id
11257
                              FROM archive_data);
11258
 
11259
      /* MIGRATION - IGNORE_WARNINGS */
11260
      INSERT INTO archive_manager.ignore_warnings
11261
         SELECT *
11262
           FROM ignore_warnings
11263
          WHERE pv_id IN (SELECT pv_id
11264
                            FROM archive_data);
11265
 
11266
      /* PURGE DATA FROM IGNORE_WARNINGS*/
11267
      DELETE FROM ignore_warnings
11268
            WHERE pv_id IN (SELECT pv_id
11269
                              FROM archive_data);
11270
 
11271
      /* PURGE DATA FROM WORK_IN_PROGRESS */
11272
      DELETE FROM work_in_progress
11273
            WHERE rtag_id = nrtagid;
11274
 
11275
      /* PURGE DATA FROM PLANNED */
11276
      DELETE FROM planned
11277
            WHERE rtag_id = nrtagid;
11278
 
11279
      /* MIGRATION - JIRA_ISSUES */
11280
      INSERT INTO archive_manager.jira_issues
11281
         SELECT *
11282
           FROM jira_issues
11283
          WHERE pv_id IN (SELECT pv_id
11284
                            FROM archive_data);
11285
 
11286
      /* PURGE DATA FROM JIRA_ISSUES*/
11287
      DELETE FROM jira_issues
11288
            WHERE pv_id IN (SELECT pv_id
11289
                              FROM archive_data);
11290
 
11291
      /* MIGRATION - PRODUCT_COMPONENTS */
11292
      INSERT INTO archive_manager.product_components
11293
         SELECT *
11294
           FROM product_components
11295
          WHERE pv_id IN (SELECT pv_id
11296
                            FROM archive_data);
11297
 
11298
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11299
      DELETE FROM product_components
11300
            WHERE pv_id IN (SELECT pv_id
11301
                              FROM archive_data);
11302
 
11303
      /* MIGRATION - ACTION_LOG */
11304
      INSERT INTO archive_manager.action_log
11305
         SELECT *
11306
           FROM action_log
11307
          WHERE pv_id IN (SELECT pv_id
11308
                            FROM archive_data);
11309
 
11310
      /* PURGE DATA FROM ACTION_LOG*/
11311
      DELETE FROM action_log
11312
            WHERE pv_id IN (SELECT pv_id
11313
                              FROM archive_data);
11314
 
11315
 
11316
   END;
11317
 
11318
/*-------------------------------------------------------------------------------------------------------*/
11319
   PROCEDURE migrate_rtag_to_archive_schema (
11320
      nrtagid   IN   release_tags.rtag_id%TYPE
11321
   )
11322
   IS
11323
   BEGIN
11324
      /* MIGRATION - DO_NOT_RIPPLE */
11325
      INSERT INTO archive_manager.do_not_ripple
11326
         SELECT *
11327
           FROM do_not_ripple dnp
11328
          WHERE rtag_id = nrtagid;
11329
 
11330
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11331
      DELETE FROM do_not_ripple
11332
            WHERE rtag_id = nrtagid;
11333
 
11334
      /* MIGRATION - ADVISORY_RIPPLES*/
11335
      INSERT INTO archive_manager.advisory_ripples
11336
         SELECT *
11337
           FROM advisory_ripple dnp
11338
          WHERE rtag_id = nrtagid;
11339
 
11340
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11341
      DELETE FROM advisory_ripple
11342
            WHERE rtag_id = nrtagid;			
11343
 
11344
      /* MIGRATION - RELEASE_CONTENT */
11345
      INSERT INTO archive_manager.release_content
11346
         SELECT *
11347
           FROM release_content
11348
          WHERE rtag_id = nrtagid;
11349
 
11350
      /* PURGE DATA FROM RELEASE_CONTENT*/
11351
      DELETE FROM release_content
11352
            WHERE rtag_id = nrtagid;
11353
 
11354
      /* MIGRATION - NOTIFICATION_HISTORY */
11355
      INSERT INTO archive_manager.notification_history
11356
         SELECT *
11357
           FROM notification_history
11358
          WHERE rtag_id = nrtagid;
11359
 
11360
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11361
      DELETE FROM notification_history
11362
            WHERE rtag_id = nrtagid;
11363
 
11364
      /* MIGRATION - BUILD_ORDER   */
11365
      INSERT INTO archive_manager.build_order
11366
         SELECT *
11367
           FROM build_order
11368
          WHERE rtag_id = nrtagid;
11369
 
11370
      /* PURGE DATA FROM BUILD_ORDER*/
11371
      DELETE FROM build_order
11372
            WHERE rtag_id = nrtagid;
11373
 
11374
      /* MIGRATION - PROJECT_ACTION_LOG */
11375
      INSERT INTO archive_manager.project_action_log
11376
         SELECT *
11377
           FROM project_action_log
11378
          WHERE rtag_id = nrtagid;
11379
 
11380
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11381
      DELETE FROM project_action_log
11382
            WHERE rtag_id = nrtagid;
11383
 
11384
      /* MIGRATION - DEPRECATED_PACKAGES */
11385
      INSERT INTO archive_manager.deprecated_packages
11386
         SELECT *
11387
           FROM deprecated_packages
11388
          WHERE rtag_id = nrtagid;
11389
 
11390
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11391
      DELETE FROM deprecated_packages
11392
            WHERE rtag_id = nrtagid;
11393
 
11394
      /* MIGRATION - RELEASE_TAGS */
11395
      INSERT INTO archive_manager.release_tags
11396
         SELECT *
11397
           FROM release_tags
11398
          WHERE rtag_id = nrtagid;
11399
 
11400
 
11401
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11402
      DELETE FROM package_versions
11403
            WHERE pv_id IN (SELECT pv_id
11404
                              FROM archive_data);
11405
 
11406
 
11407
   END;
11408
 
11409
/*-------------------------------------------------------------------------------------------------------*/
11410
   PROCEDURE clean_up_archive_data_table (
11411
      nrtagid   IN   release_tags.rtag_id%TYPE
11412
   )
11413
   IS
11414
   BEGIN
11415
      /* Cleaning Up The Archive_Data Table */
11416
      DELETE FROM archive_data
11417
            WHERE rtag_id = nrtagid;
11418
   END;
11419
 
11420
/*-------------------------------------------------------------------------------------------------------*/
11421
   PROCEDURE write_action_log (
11422
      nuserid   IN   NUMBER,
11423
      nrtagid   IN   release_tags.rtag_id%TYPE
11424
   )
11425
   IS
11426
   BEGIN
11427
      /* Write Into Archive_Action_Log Table */
11428
      INSERT INTO archive_action_log
11429
                  (user_id, date_time_stamp, rtag_id,
11430
                   description
11431
                  )
11432
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11433
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11434
                  );
11435
   END;
11436
/*-------------------------------------------------------------------------------------------------------*/
11437
END pk_archive;
11438
/
11439
 
11440
CREATE OR REPLACE PACKAGE BODY pk_rmapi_test
11441
IS
11442
/*
11443
------------------------------
11444
||  Last Modified:  Rupesh Solanki
11445
||  Modified Date:  11 September 2006
11446
||  Body Version:   2.0
11447
------------------------------
11448
*/
11449
 
11450
   /*-------------------------------------------------------------------------------------------------------*/
11451
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11452
      RETURN typecur
11453
   IS
11454
      npvid     NUMBER  := 0;
11455
      RECORDS   typecur;
11456
   BEGIN
11457
      BEGIN
11458
         -- Get PV_ID --
11459
         SELECT pv.pv_id
11460
           INTO npvid
11461
           FROM PACKAGES pkg, package_versions pv
11462
          WHERE pv.pkg_id = pkg.pkg_id
11463
            AND pkg.pkg_name = pkgname
11464
            AND pv.pkg_version = pkgversion;
11465
      EXCEPTION
11466
         WHEN NO_DATA_FOUND
11467
         THEN
11468
            raise_application_error (-20000, 'Package Not Found!');
11469
            --WHEN OTHERS THEN
11470
                  -- Consider logging the error and then re-raise
11471
            RAISE;
11472
      END;
11473
 
11474
      -- Finally get package dependencies --
11475
      OPEN RECORDS FOR
11476
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11477
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11478
          WHERE dep.pv_id = npvid
11479
            AND dpv.pkg_id = dpkg.pkg_id
11480
            AND dpv.pv_id = dep.dpv_id;
11481
 
11482
      RETURN RECORDS;
11483
   END;
11484
 
11485
/*-------------------------------------------------------------------------------------------------------*/
11486
   FUNCTION wip_iteration_package (
11487
      projname        VARCHAR2,
11488
      iterationname   VARCHAR2,
11489
      pkgname         VARCHAR2
11490
   )
11491
      RETURN typecur
11492
   IS
11493
      nrtagid   NUMBER  := 0;
11494
      RECORDS   typecur;
11495
   BEGIN
11496
      BEGIN
11497
         -- Get latest rtag_id --
11498
         SELECT rt.rtag_id
11499
           INTO nrtagid
11500
           FROM projects proj, release_tags rt
11501
          WHERE rt.proj_id = proj.proj_id
11502
            AND UPPER (proj.proj_name) = UPPER (projname)
11503
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
11504
 
11505
         IF (nrtagid IS NULL)
11506
         THEN
11507
            raise_application_error (-20000,
11508
                                     'Work In Progress is Not Found!');
11509
         END IF;
11510
      EXCEPTION
11511
         WHEN NO_DATA_FOUND
11512
         THEN
11513
            raise_application_error (-20000,
11514
                                     'Work In Progress is Not Found!');
11515
            RAISE;
11516
      END;
11517
 
11518
      -- Finally get package dependencies --
11519
      OPEN RECORDS FOR
11520
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
11521
                pv.src_path
11522
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
11523
          WHERE pv.pkg_id = pkg.pkg_id
11524
            AND wip.pv_id = pv.pv_id
11525
            AND wip.rtag_id = nrtagid
11526
            AND pkg.pkg_name = pkgname;
11527
 
11528
      RETURN RECORDS;
11529
   END;
11530
 
11531
/*-------------------------------------------------------------------------------------------------------*/
11532
   FUNCTION auto_make_release (
11533
      rtagid                   IN   NUMBER,
11534
      pkgname                  IN   VARCHAR2,
11535
      vext                     IN   VARCHAR2,
11536
      newpkgversion            IN   VARCHAR2,
11537
      label                    IN   VARCHAR2,
11538
      dependenciesimportlist   IN   VARCHAR2,
11539
      isrippled                IN   NUMBER,
11540
      username                 IN   VARCHAR2
11541
   )
11542
      RETURN NUMBER
11543
   IS
11544
      pvid                            NUMBER                        := 0;
11545
      userid                          NUMBER;
11546
      dlocked                         VARCHAR2 (20)                 := NULL;
11547
      clonefrompvid                   NUMBER;
11548
      ssv_mm                          package_versions.v_mm%TYPE;
11549
      ssv_nmm                         package_versions.v_nmm%TYPE;
11550
      ssv_ext                         package_versions.v_ext%TYPE;
11551
      return_package_not_found        NUMBER                        := -1;
11552
      return_package_already_exists   NUMBER                        := -2;
11553
      return_not_approved             NUMBER                        := -3;
11554
   BEGIN
11555
      /*--------------- Business Rules Here -------------------*/
11556
      IF (rtagid IS NULL)
11557
      THEN
11558
         raise_application_error (-20000, 'RtagId must be supplied.');
11559
      END IF;
11560
 
11561
      IF (pkgname IS NULL)
11562
      THEN
11563
         raise_application_error (-20000, 'PkgName must be supplied.');
11564
      END IF;
11565
 
11566
      IF (newpkgversion IS NULL)
11567
      THEN
11568
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11569
      END IF;
11570
 
11571
      IF (label IS NULL)
11572
      THEN
11573
         raise_application_error (-20000, 'Label must be supplied.');
11574
      END IF;
11575
 
11576
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11577
      THEN
11578
         raise_application_error
11579
            (-20000,
11580
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
11581
            );
11582
      END IF;
11583
 
11584
      IF (username IS NULL)
11585
      THEN
11586
         raise_application_error (-20000, 'UserName must be supplied.');
11587
      END IF;
11588
 
11589
      -- Get user_id
11590
      BEGIN
11591
         SELECT usr.user_id
11592
           INTO userid
11593
           FROM users usr
11594
          WHERE UPPER (usr.user_name) = UPPER (username)
11595
            AND usr.is_disabled IS NULL;
11596
      EXCEPTION
11597
         WHEN NO_DATA_FOUND
11598
         THEN
11599
            raise_application_error (-20000,
11600
                                        'UserName '
11601
                                     || username
11602
                                     || ' is not valid or disabled.'
11603
                                    );
11604
      END;
11605
 
11606
/*-------------------------------------------------------*/
11607
 
11608
      -- Create package if necessary
11609
      IF isrippled = 1
11610
      THEN
11611
         /* Ripple Build */
11612
         BEGIN
11613
            -- Make sure that package does not exist
11614
            SELECT pv.pv_id
11615
              INTO pvid
11616
              FROM package_versions pv, PACKAGES pkg
11617
             WHERE pv.pkg_id = pkg.pkg_id
11618
               AND pkg.pkg_name = pkgname
11619
               AND pv.pkg_version = newpkgversion;
11620
         EXCEPTION
11621
            WHEN NO_DATA_FOUND
11622
            THEN
11623
               pvid := 0;
11624
         END;
11625
 
11626
         IF (pvid = 0)
11627
         THEN
11628
            -- Split current version in parts
11629
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11630
 
11631
            BEGIN
11632
               -- Find package to be replaced with thie ripple package
11633
               IF vext = ssv_ext
11634
               THEN
11635
                  SELECT pv.pv_id
11636
                    INTO clonefrompvid
11637
                    FROM PACKAGES pkg, package_versions pv,
11638
                         release_content rc
11639
                   WHERE rc.pv_id = pv.pv_id
11640
                     AND pv.pkg_id = pkg.pkg_id
11641
                     AND rc.rtag_id = rtagid
11642
                     AND pkg.pkg_name = pkgname
11643
                     AND pv.v_ext = ssv_ext;
11644
               ELSE
11645
                  SELECT pv.pv_id
11646
                    INTO clonefrompvid
11647
                    FROM PACKAGES pkg, package_versions pv,
11648
                         release_content rc
11649
                   WHERE rc.pv_id = pv.pv_id
11650
                     AND pv.pkg_id = pkg.pkg_id
11651
                     AND rc.rtag_id = rtagid
11652
                     AND pkg.pkg_name = pkgname
11653
                     AND pv.v_ext = vext;
11654
               END IF;
11655
            EXCEPTION
11656
               WHEN NO_DATA_FOUND
11657
               THEN
11658
                  raise_application_error
11659
                                        (-20000,
11660
                                            'Cannot get CloneFromPvId. VExt='
11661
                                         || vext
11662
                                         || ', RtagId='
11663
                                         || rtagid
11664
                                         || ', PkgName='
11665
                                         || pkgname
11666
                                         || ', SSV_EXT='
11667
                                         || ssv_ext
11668
                                        );
11669
            END;
11670
 
11671
            IF vext = ssv_ext
11672
            THEN
11673
               -- Create package
11674
               seed_package_names_versions (pkgname,
11675
                                            newpkgversion,
11676
                                            userid,
11677
                                            pvid,
11678
                                            clonefrompvid
11679
                                           );
11680
            ELSE
11681
               -- Create package
11682
               seed_package_names_versions2 (pkgname,
11683
                                             newpkgversion,
11684
                                             userid,
11685
                                             pvid,
11686
                                             clonefrompvid
11687
                                            );
11688
            END IF;
11689
 
11690
            -- Update Package reason for release
11691
            UPDATE package_versions pv
11692
               SET pv.comments = 'Rippled Build.',
11693
                   pv.build_type = 'Y'
11694
             WHERE pv.pv_id = pvid;
11695
         ELSE
11696
            -- Package already exists, hence cannot be used for ripple build
11697
            RETURN return_package_already_exists;
11698
         END IF;
11699
      ELSE
11700
         /* Auto build from Pending area */
11701
 
11702
         -- Find package in pending area
11703
         BEGIN
11704
            SELECT pv.pv_id, pv.dlocked
11705
              INTO pvid, dlocked
11706
              FROM planned pl, package_versions pv, PACKAGES pkg
11707
             WHERE pl.pv_id = pv.pv_id
11708
               AND pv.pkg_id = pkg.pkg_id
11709
               AND pl.rtag_id = rtagid
11710
               AND pkg.pkg_name = pkgname
11711
               AND pv.dlocked = 'A'
11712
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11713
                                                   NVL (vext, '|LINK_A_NULL|');
11714
         EXCEPTION
11715
            WHEN NO_DATA_FOUND
11716
            THEN
11717
               pvid := 0;
11718
         END;
11719
 
11720
         IF (pvid = 0)
11721
         THEN
11722
            -- Package does not exist in pending area, hence report it
11723
            RETURN return_package_not_found;
11724
         ELSIF (dlocked != 'A')
11725
         THEN
11726
            -- Package is not approved for autobuild
11727
            RETURN return_not_approved;
11728
         END IF;
11729
      END IF;
11730
 
11731
      BEGIN
11732
         -- Import Dependencies
11733
         import_dependencies (pvid, dependenciesimportlist, userid);
11734
      END;
11735
 
11736
      BEGIN
11737
         -- Split current version in parts
11738
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11739
 
11740
         -- Update Package Details
11741
         UPDATE package_versions pv
11742
            SET pv.pkg_version = newpkgversion,
11743
                pv.v_ext = ssv_ext,
11744
                pv.v_mm = ssv_mm,
11745
                pv.v_nmm = ssv_nmm,
11746
                pv.pkg_label = label
11747
          WHERE pv.pv_id = pvid;
11748
      EXCEPTION
11749
         WHEN DUP_VAL_ON_INDEX
11750
         THEN
11751
            -- Package already exists, hence cannot be used for ripple build
11752
            RETURN return_package_already_exists;
11753
      END;
11754
 
11755
	  -- Update the is_autobuildable
11756
	  update package_versions 
11757
	  set is_autobuildable = 'Y'
11758
	  where pv_id = pvid;	  
11759
 
11760
      -- Now release package
11761
      pk_environment.auto_make_release (pvid,
11762
                                        rtagid,
11763
                                        userid,
11764
                                        vext,
11765
                                        ssv_ext,
11766
                                        clonefrompvid
11767
                                       );
11768
 
11769
 
11770
      RETURN pvid;
11771
   END;
11772
 
11773
/*-------------------------------------------------------------------------------------------------------*/
11774
   PROCEDURE import_dependencies (
11775
      pvid                     IN   NUMBER,
11776
      dependenciesimportlist   IN   VARCHAR2,
11777
      userid                   IN   NUMBER
11778
   )
11779
   IS
11780
/*
11781
|| DependenciesImportList Format:
11782
|| "pkgA","1.0.0";"pkgB","2.0.0";
11783
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11784
*/
11785
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11786
         INDEX BY VARCHAR2 (4000);
11787
 
11788
      seperator         VARCHAR2 (2)           := '||';
11789
      pkgname           VARCHAR2 (4000);
11790
      pkgversion        VARCHAR2 (4000);
11791
      buildtype         VARCHAR2 (50);
11792
      pkgid             NUMBER;
11793
      vext              VARCHAR2 (4000);
11794
      dpvid             NUMBER;
11795
      slist             VARCHAR2 (4000);
11796
      cbuildtypes       tdictionary;
11797
      dependencyrow     NUMBER;
11798
      sdependency       VARCHAR2 (4000);
11799
      first_pos         VARCHAR2 (4000);
11800
      second_pos        VARCHAR2 (4000);
11801
      third_pos         VARCHAR2 (4000);
11802
      forth_pos         VARCHAR2 (4000);
11803
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11804
 
11805
      CURSOR curbuildtype
11806
      IS
11807
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11808
                dep.build_type
11809
           FROM package_dependencies dep, package_versions dpv
11810
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11811
 
11812
      recbuildtype      curbuildtype%ROWTYPE;
11813
   BEGIN
11814
      slist := dependenciesimportlist;
11815
 
11816
      -- Preformat String
11817
      IF NOT slist IS NULL
11818
      THEN
11819
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11820
         slist := REPLACE (slist, UTL_TCP.crlf);
11821
                            -- Remove new line and carriage-return characters
11822
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
11823
      END IF;
11824
 
11825
      -- Get Current Dependencies
11826
      OPEN curbuildtype;
11827
 
11828
      FETCH curbuildtype
11829
       INTO recbuildtype;
11830
 
11831
      WHILE curbuildtype%FOUND
11832
      LOOP
11833
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
11834
 
11835
         FETCH curbuildtype
11836
          INTO recbuildtype;
11837
      END LOOP;
11838
 
11839
      CLOSE curbuildtype;
11840
 
11841
      -- Separate dependencies with ; separator
11842
      citemcollection := in_list_varchar2 (slist, ';');
11843
 
11844
      BEGIN
11845
         -- Remove old dependencies
11846
         DELETE FROM package_dependencies dep
11847
               WHERE dep.pv_id = pvid;
11848
 
11849
         -- Loop through dependencies
11850
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11851
         LOOP
11852
            -- Extract pkg_name and pkg_version
11853
            sdependency := citemcollection (dependencyrow);
11854
            first_pos := INSTR (sdependency, '"', 1, 1);
11855
            second_pos := INSTR (sdependency, '"', 1, 2);
11856
            third_pos := INSTR (sdependency, '"', 1, 3);
11857
            forth_pos := INSTR (sdependency, '"', 1, 4);
11858
            pkgname :=
11859
               SUBSTR (sdependency,
11860
                       (first_pos + 1),
11861
                       (second_pos - first_pos - 1)
11862
                      );
11863
            pkgversion :=
11864
               SUBSTR (sdependency,
11865
                       (third_pos + 1),
11866
                       (forth_pos - third_pos - 1)
11867
                      );
11868
 
11869
            -- Dependency must exits to be linked against
11870
            BEGIN
11871
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11872
                 INTO dpvid, pkgid, vext
11873
                 FROM package_versions pv, PACKAGES pkg
11874
                WHERE pv.pkg_id = pkg.pkg_id
11875
                  AND pkg.pkg_name = pkgname
11876
                  AND pv.pkg_version = pkgversion;
11877
            EXCEPTION
11878
               WHEN NO_DATA_FOUND
11879
               THEN
11880
                  raise_application_error
11881
                                  (-20000,
11882
                                      'Dependency ['
11883
                                   || pkgname
11884
                                   || ' '
11885
                                   || pkgversion
11886
                                   || '] does not exist yet and cannot be used!'
11887
                                  );
11888
            END;
11889
 
11890
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11891
            BEGIN
11892
               buildtype := cbuildtypes (pkgid || seperator || vext);
11893
 
11894
               IF buildtype IS NULL
11895
               THEN
11896
                  -- Set build type to LinkPackageArchive by default
11897
                  buildtype := 'L';
11898
               END IF;
11899
            EXCEPTION
11900
               WHEN NO_DATA_FOUND
11901
               THEN
11902
                  buildtype := 'L';
11903
            END;
11904
 
11905
            -- Insert Dependencies
11906
            update_package_dependency (pvid,
11907
                                       pkgname,
11908
                                       pkgversion,
11909
                                       buildtype,
11910
                                       userid,
11911
 
11912
                                      );
11913
         END LOOP;
11914
      END;
11915
   END;
11916
 
11917
/*-------------------------------------------------------------------------------------------------------*/
11918
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11919
      RETURN VARCHAR2
11920
   IS
11921
      pkgversion   VARCHAR2 (4000);
11922
   BEGIN
11923
      BEGIN
11924
         SELECT pv.pkg_version
11925
           INTO pkgversion
11926
           FROM PACKAGES pkg, release_content rc, package_versions pv
11927
          WHERE pv.pv_id = rc.pv_id
11928
            AND pkg.pkg_id = pv.pkg_id
11929
            AND pkg.pkg_name = pkgname
11930
            AND rc.rtag_id = rtagid;
11931
 
11932
         RETURN pkgversion;
11933
      END;
11934
   END;
11935
 
11936
/*-------------------------------------------------------------------------------------------------------*/
11937
PROCEDURE CQ_TEST IS
11938
 
11939
  INPUT NUMBER(8,2);
11940
  RESULT VARCHAR2(50);
11941
BEGIN
11942
  INPUT := 33558440;
11943
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
11944
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
11945
 
11946
 
11947
END;
11948
/*-------------------------------------------------------------------------------------------------------*/
11949
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
11950
 
11951
   projId NUMBER;
11952
   projIdDB NUMBER;
11953
   TOTAL NUMBER;
11954
   AUTO_TOTAL NUMBER;
11955
   rtagIdDB NUMBER;
11956
 
11957
   BEGIN
11958
   		SELECT count(*) INTO TOTAL 
11959
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
11960
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
11961
 
11962
		SELECT count(*) INTO AUTO_TOTAL 
11963
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
11964
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
11965
		and rc.rtag_id = RtagId;
11966
 
11967
		BEGIN
11968
			SELECT RTAG_ID INTO rtagIdDB
11969
			FROM DASH_BOARD
11970
			WHERE RTAG_ID = RtagId;
11971
 
11972
			SELECT PROJ_ID INTO projIdDB
11973
			FROM DASH_BOARD
11974
			WHERE RTAG_ID = RtagId;
11975
            EXCEPTION
11976
               WHEN NO_DATA_FOUND
11977
			   THEN	rtagIdDB := '';
11978
 
11979
		END; 			
11980
 
11981
		IF rtagIdDB IS NULL THEN
11982
			SELECT PROJ_ID INTO projId
11983
			FROM RELEASE_TAGS
11984
			WHERE RTAG_ID = RtagId;
11985
 
11986
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
11987
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
11988
		ELSE
11989
			UPDATE DASH_BOARD
11990
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
11991
				AUTOMATED_PACKAGES = AUTO_TOTAL,
11992
				TOTAL_PACKAGES = TOTAL
11993
			WHERE PROJ_ID = projIdDB
11994
			AND RTAG_ID = rtagIdDB; 	
11995
		END IF;
11996
 
11997
 
11998
 
11999
 
12000
 
12001
 
12002
   END;
12003
 
12004
 
12005
/*-------------------------------------------------------------------------------------------------------*/   
12006
END pk_rmapi_test;
12007
/
12008
 
12009
CREATE OR REPLACE PACKAGE BODY PK_APP_UTILS IS
12010
 
12011
/*
12012
------------------------------
12013
||  Last Modified:  S.Vukovic
12014
||  Modified Date:  26/Apr/2005
12015
||  Body Version:   1.0
12016
------------------------------
12017
*/
12018
 
12019
 
12020
/*-------------------------------------------------------------------------------------------------------*/
12021
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
12022
 
12023
 
12024
BEGIN
12025
 
12026
 
12027
	IF (NOT RtagId IS NULL) THEN
12028
		-- Case with RTAG_ID present
12029
		OPEN records FOR
12030
		SELECT rt.PROJ_ID,
12031
			   rt.RTAG_ID AS RTAG_ID
12032
		  FROM RELEASE_TAGS rt
12033
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
12034
 
12035
	ELSIF (NOT ProjId IS NULL) THEN
12036
		-- Case with PROJ_ID present
12037
		OPEN records FOR
12038
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
12039
			   -1 AS RTAG_ID
12040
		  FROM DUAL;
12041
 
12042
	ELSE
12043
		-- Case with none present
12044
		OPEN records FOR
12045
		SELECT -1 AS PROJ_ID,
12046
			   -1 AS RTAG_ID
12047
		  FROM DUAL;
12048
 
12049
	END IF;
12050
 
12051
 
12052
 
12053
 
12054
   	--RETURN records;
12055
 
12056
END;
12057
/*-------------------------------------------------------------------------------------------------------*/
12058
END PK_APP_UTILS;
12059
/
12060
 
12061
CREATE OR REPLACE PACKAGE BODY PK_RELEASE_TEST IS
12062
 
12063
 
12064
/*
12065
------------------------------
12066
||  Last Modified:  S.Vukovic
12067
||  Modified Date:  12/Sep/2005
12068
||  Body Version:   3.0
12069
------------------------------
12070
*/
12071
 
12072
 
12073
/*-------------------------------------------------------------------------------------------------------*/
12074
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
12075
 
12076
RtagId NUMBER;
12077
ParentRtagId NUMBER;
12078
RecCount NUMBER := 0;
12079
 
12080
 
12081
BEGIN
12082
	/*--------------- Business Rules Here -------------------*/
12083
	-- Check for missing parameters
12084
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
12085
	THEN
12086
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
12087
 
12088
	END IF;
12089
 
12090
 
12091
	-- Check for duplicate Release Names
12092
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12093
	  FROM RELEASE_TAGS rt
12094
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12095
	   AND rt.PROJ_ID = nProjId;
12096
 
12097
	IF (RecCount > 0) THEN
12098
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12099
	END IF;
12100
	/*-------------------------------------------------------*/
12101
 
12102
 
12103
	-- Get rtag_id
12104
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
12105
 
12106
 
12107
 
12108
	-- Get Parent RtagId
12109
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
12110
 
12111
 
12112
	-- Create new release
12113
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
12114
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
12115
							   PARENT_RTAG_ID, PROJ_ID )
12116
	VALUES ( RtagId, 
12117
			 sReleaseName, 
12118
			 sReleaseComments,
12119
			 ORA_SYSDATE,
12120
			 nUserId,
12121
			 'N',
12122
			 'N',
12123
			 0,
12124
			 ParentRtagId,
12125
			 nProjId );
12126
 
12127
	-- Update display Order
12128
	UPDATE_DISPLAY_ORDER ( nProjId );
12129
 
12130
	/* Log Project Action */
12131
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
12132
 
12133
 
12134
	-- Import Release Contents
12135
	IF (NOT nSourceRtagId IS NULL) THEN
12136
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
12137
 
12138
	END IF;
12139
 
12140
 
12141
 
12142
END;
12143
/*-------------------------------------------------------------------------------------------------------*/
12144
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
12145
 
12146
 
12147
BEGIN
12148
 
12149
 
12150
	/*--------------- Business Rules Here -------------------*/
12151
	/*-------------------------------------------------------*/
12152
 
12153
	UPDATE RELEASE_TAGS urt SET
12154
	urt.DISPLAY_ORDER = (
12155
						SELECT qry.REC_NUM
12156
						  FROM (	
12157
								SELECT rel.*, ROWNUM AS REC_NUM
12158
								  FROM (
12159
 
12160
								  		SELECT rt.RTAG_ID, 
12161
											   rt.DISPLAY_ORDER,
12162
										       DECODE( rt.PARENT_RTAG_ID, 
12163
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
12164
										  FROM RELEASE_TAGS rt
12165
										 WHERE rt.PROJ_ID = nProjId 
12166
 
12167
								  		) rel
12168
								START WITH rel.PARENT_RTAG_ID = 0
12169
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
12170
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
12171
								) qry
12172
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
12173
						)
12174
	WHERE urt.PROJ_ID = nProjId;
12175
 
12176
END;
12177
/*-------------------------------------------------------------------------------------------------------*/
12178
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
12179
 
12180
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
12181
	SeqNum NUMBER;
12182
 
12183
BEGIN
12184
 
12185
 
12186
	/*--------------- Business Rules Here -------------------*/
12187
	/*-------------------------------------------------------*/
12188
 
12189
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
12190
 
12191
	-- Set start sequence number
12192
	SeqNum := 1;
12193
 
12194
	FOR i IN 1..nIdCollector.COUNT
12195
	LOOP
12196
 
12197
		-- Update new display order
12198
		UPDATE RELEASE_TAGS rt SET
12199
			rt.DISPLAY_ORDER = SeqNum
12200
		 WHERE rt.PROJ_ID = nProjId
12201
		   AND rt.RTAG_ID = nIdCollector(i);
12202
 
12203
		SeqNum := SeqNum + 1;
12204
 
12205
	END LOOP;
12206
 
12207
END;
12208
/*-------------------------------------------------------------------------------------------------------*/
12209
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
12210
 
12211
RecCount NUMBER := 0;
12212
ProjId NUMBER;
12213
 
12214
BEGIN
12215
 
12216
 
12217
	/*--------------- Business Rules Here -------------------*/
12218
	-- Check for missing parameters
12219
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
12220
	THEN
12221
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
12222
 
12223
	END IF;
12224
 
12225
 
12226
	-- Check for duplicate Release Names
12227
	SELECT rt.PROJ_ID INTO ProjId
12228
	  FROM RELEASE_TAGS rt
12229
	 WHERE rt.RTAG_ID = nRtagId;
12230
 
12231
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12232
	  FROM RELEASE_TAGS rt
12233
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12234
	   AND rt.RTAG_ID != nRtagId
12235
	   AND rt.PROJ_ID = ProjId;
12236
 
12237
 
12238
	IF (RecCount > 0) THEN
12239
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12240
	END IF;
12241
	/*-------------------------------------------------------*/
12242
 
12243
 
12244
 
12245
	-- Update release details
12246
	UPDATE RELEASE_TAGS rt SET
12247
	rt.RTAG_NAME = sReleaseName,
12248
	rt.DESCRIPTION = sReleaseComments,
12249
	rt.PARENT_RTAG_ID = nParentRtagId,
12250
	rt.ASSOC_MASS_REF = nMASSRtagId,
12251
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
12252
	WHERE rt.RTAG_ID = nRtagId; 
12253
 
12254
	-- Update display Order
12255
	UPDATE_DISPLAY_ORDER ( ProjId );
12256
 
12257
	/* Log Project Action */
12258
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
12259
 
12260
 
12261
 
12262
 
12263
END;
12264
/*-------------------------------------------------------------------------------------------------------*/
12265
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12266
 
12267
	RecCount NUMBER := 0;
12268
	sReleaseId VARCHAR2(4000);
12269
	ProjId NUMBER;
12270
 
12271
BEGIN
12272
	/*--------------- Business Rules Here -------------------*/
12273
	IF (nRtagId IS NULL) 
12274
	THEN
12275
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12276
	END IF;
12277
 
12278
 
12279
 
12280
	-- Check for any kids
12281
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
12282
	  FROM RELEASE_TAGS rt
12283
	 WHERE rt.PARENT_RTAG_ID = nRtagId
12284
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
12285
 
12286
	IF (RecCount > 0) THEN
12287
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
12288
	END IF; 
12289
	/*-------------------------------------------------------*/
12290
 
12291
	-- Clear the release contents
12292
	Clean_Release_Contents ( nRtagId, nUserId );
12293
 
12294
	/* Log Project Action */
12295
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
12296
	  FROM RELEASE_TAGS rt
12297
	 WHERE rt.RTAG_ID = nRtagId;
12298
 
12299
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
12300
 
12301
 
12302
	-- Remove Release
12303
	DELETE 
12304
	  FROM RELEASE_TAGS rt
12305
	 WHERE rt.RTAG_ID = nRtagId;
12306
 
12307
 
12308
 
12309
END;
12310
/*-------------------------------------------------------------------------------------------------------*/
12311
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
12312
 
12313
	sSourceLocation VARCHAR2(4000);
12314
	sTargetLocation VARCHAR2(4000);
12315
	ProjId NUMBER;
12316
	cReleaseMode CHAR(1);
12317
 
12318
 
12319
BEGIN
12320
	/*--------------- Business Rules Here -------------------*/
12321
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
12322
	THEN
12323
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
12324
	END IF;
12325
 
12326
	IF (nSourceRtagId = nTargetRtagId) THEN
12327
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
12328
	END IF;
12329
 
12330
 
12331
	-- Check if Target release is in OPEN mode
12332
	SELECT rt.OFFICIAL  INTO  cReleaseMode
12333
	  FROM RELEASE_TAGS rt
12334
	 WHERE rt.RTAG_ID = nTargetRtagId;
12335
 
12336
	IF (cReleaseMode != 'N') THEN
12337
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
12338
	END IF;	 
12339
 
12340
	/*-------------------------------------------------------*/
12341
 
12342
	-- Clean target contents
12343
	Clean_Release_Contents ( nTargetRtagId, nUserId );
12344
 
12345
 
12346
	-- Import Released Area Contents
12347
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
12348
	SELECT nTargetRtagId AS RTAG_ID, 
12349
		   rc.PV_ID, 
12350
		   rc.BASE_VIEW_ID, 
12351
		   rc.INSERT_STAMP, 
12352
		   rc.INSERTOR_ID, 
12353
		   rc.PKG_STATE
12354
	  FROM RELEASE_CONTENT rc
12355
	 WHERE rc.RTAG_ID = nSourceRtagId;
12356
 
12357
 
12358
	-- Import Ignore Warning states
12359
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
12360
	SELECT nTargetRtagId AS RTAG_ID,
12361
	       igw.PV_ID,
12362
	       igw.DPV_ID
12363
	  FROM IGNORE_WARNINGS igw
12364
	 WHERE igw.rtag_id = nSourceRtagId;
12365
 
12366
 
12367
	/* Log Project Action */
12368
	-- Get Source Location
12369
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
12370
	  FROM RELEASE_TAGS rt,
12371
	  	   PROJECTS pr
12372
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12373
	   AND rt.RTAG_ID = nSourceRtagId;
12374
 
12375
	-- Get Target Location
12376
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
12377
	  FROM RELEASE_TAGS rt,
12378
	  	   PROJECTS pr
12379
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12380
	   AND rt.RTAG_ID = nTargetRtagId;	   
12381
 
12382
	-- Get project id   
12383
	SELECT rt.PROJ_ID  INTO  ProjId
12384
	  FROM RELEASE_TAGS rt
12385
	 WHERE rt.RTAG_ID = nTargetRtagId;   
12386
 
12387
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
12388
 
12389
 
12390
END;
12391
/*-------------------------------------------------------------------------------------------------------*/
12392
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12393
 
12394
	RecCount NUMBER;
12395
 
12396
BEGIN
12397
	/*--------------- Business Rules Here -------------------*/
12398
	IF (nRtagId IS NULL) 
12399
	THEN
12400
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12401
	END IF;
12402
 
12403
 
12404
	-- Check if other release references this release
12405
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
12406
	  FROM RELEASE_LINKS rl
12407
	 WHERE rl.REF_RTAG_ID = nRtagId;
12408
 
12409
	IF (RecCount > 0) THEN
12410
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
12411
	END IF; 	
12412
	/*-------------------------------------------------------*/
12413
 
12414
	-- Delete Release links
12415
	DELETE 
12416
	  FROM RELEASE_LINKS rl
12417
	 WHERE rl.RTAG_ID = nRtagId;
12418
 
12419
	-- Delete ignore warning
12420
	DELETE 
12421
	  FROM IGNORE_WARNINGS iw
12422
	 WHERE iw.RTAG_ID = nRtagId;
12423
 
12424
 
12425
	-- Delete Build Order cached calculations	  
12426
	DELETE
12427
	  FROM BUILD_ORDER bo
12428
	 WHERE bo.RTAG_ID = nRtagId;
12429
 
12430
 
12431
	-- Delete Notification History
12432
	DELETE
12433
	  FROM NOTIFICATION_HISTORY nh
12434
	 WHERE nh.RTAG_ID = nRtagId;
12435
 
12436
 
12437
	-- Delete Released Area Contents
12438
	DELETE
12439
	  FROM RELEASE_CONTENT rc
12440
	 WHERE rc.RTAG_ID = nRtagId;
12441
 
12442
 
12443
	-- Delete Work In Progress Area Contents
12444
	DELETE
12445
	  FROM WORK_IN_PROGRESS wip
12446
	 WHERE wip.RTAG_ID = nRtagId;
12447
 
12448
 
12449
	-- Delete Pending Area Contents
12450
	DELETE 
12451
	  FROM PLANNED pl
12452
	 WHERE pl.RTAG_ID = nRtagId;
12453
 
12454
 
12455
END;
12456
/*-------------------------------------------------------------------------------------------------------*/
12457
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
12458
 
12459
	nSourceParentRtagId NUMBER;
12460
 
12461
BEGIN
12462
	/*--------------- Business Rules Here -------------------*/
12463
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
12464
	THEN
12465
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
12466
	END IF;
12467
	/*-------------------------------------------------------*/
12468
 
12469
 
12470
	IF ( nSourceRtagId IS NULL ) THEN
12471
		-- Create new on main branch
12472
		RETURN nRtagId;
12473
 
12474
	ELSE
12475
		-- Create from source rtag_id
12476
 
12477
		-- Find parent of Source RtagId
12478
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
12479
		  FROM RELEASE_TAGS rt
12480
		 WHERE rt.RTAG_ID = nSourceRtagId;
12481
 
12482
		IF (UPPER(cIsBranch) = 'Y') THEN
12483
			RETURN nSourceRtagId;
12484
		ELSE
12485
			IF (nSourceRtagId = nSourceParentRtagId) THEN
12486
				RETURN nRtagId;
12487
			ELSE
12488
				RETURN nSourceParentRtagId;
12489
			END IF;
12490
		END IF;	
12491
 
12492
 
12493
	END IF;
12494
 
12495
 
12496
END;
12497
/*-------------------------------------------------------------------------------------------------------*/
12498
 
12499
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
12500
-- 							 sNextVersion OUT VARCHAR2,
12501
-- 							 nNextLifeCycle OUT NUMBER,
12502
-- 							 nParentRtagId OUT NUMBER,
12503
-- 							 nProjId IN NUMBER ) IS
12504
-- 							
12505
-- SourceBranchCount NUMBER;
12506
-- ProjRootVersion VARCHAR2(4000);
12507
-- LastLifeCycle NUMBER;
12508
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
12509
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
12510
-- 
12511
-- SourceProjId NUMBER; 
12512
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
12513
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
12514
-- 
12515
-- BEGIN
12516
-- 	/*--------------- Business Rules Here -------------------*/
12517
-- 	/*-------------------------------------------------------*/
12518
-- 	
12519
-- 	   
12520
-- 	BEGIN
12521
-- 		-- Get Project root version
12522
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
12523
-- 		  FROM RELEASE_TAGS rt
12524
-- 		 WHERE rt.PROJ_ID = nProjId
12525
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
12526
-- 	   
12527
-- 		EXCEPTION
12528
-- 		WHEN NO_DATA_FOUND THEN
12529
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
12530
-- 	END;		   
12531
-- 	
12532
-- 	
12533
-- 	
12534
-- 	 
12535
-- 	BEGIN
12536
-- 		-- Get info for source rtagid
12537
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
12538
-- 		  FROM RELEASE_TAGS rt
12539
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
12540
-- 	   
12541
-- 		EXCEPTION
12542
-- 		WHEN NO_DATA_FOUND THEN
12543
-- 		SourceProjId := NULL;
12544
-- 		SourceVersion := NULL;
12545
-- 		SourceLifeCycle := NULL;
12546
-- 	END;	  
12547
-- 	
12548
-- 	
12549
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
12550
-- 	
12551
-- 		/* Blank Release Required  OR  Release imported from other project */
12552
-- 		
12553
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
12554
-- 			/* No Releases found in the project, hence calculate next version available.  */
12555
-- 			
12556
-- 			-- Set parent rtag
12557
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
12558
-- 			
12559
-- 			
12560
-- 			BEGIN
12561
-- 				-- Get Next Available Global Root Version 
12562
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
12563
-- 				  FROM RELEASE_TAGS rt
12564
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
12565
-- 				
12566
-- 				-- Set Next Rtag Version
12567
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
12568
-- 				
12569
-- 				-- Restart Lifecycle
12570
-- 				nNextLifeCycle := 0;
12571
-- 				
12572
-- 				
12573
-- 				EXCEPTION
12574
-- 				WHEN NO_DATA_FOUND THEN
12575
-- 				-- Release Manager has no releases, hence start from 1
12576
-- 				sNextVersion := '1';
12577
-- 				nNextLifeCycle := 0;
12578
-- 				
12579
-- 			END;
12580
-- 			
12581
-- 			
12582
-- 					
12583
-- 		ELSE
12584
-- 			/* Releases found in this project. */
12585
-- 							   
12586
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
12587
-- 			  FROM (
12588
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
12589
-- 					  FROM RELEASE_TAGS rt
12590
-- 					 WHERE rt.PROJ_ID = nProjId
12591
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
12592
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
12593
-- 			  		) qry
12594
-- 			 WHERE ROWNUM = 1;		
12595
-- 
12596
-- 			
12597
-- 			-- Set same Rtag Version
12598
-- 			sNextVersion := ProjRootVersion;
12599
-- 			
12600
-- 			-- Increase Lifecycle
12601
-- 			nNextLifeCycle := LastLifeCycle + 1;
12602
-- 		
12603
-- 		END IF;
12604
-- 				
12605
-- 	
12606
-- 		
12607
-- 	ELSE
12608
-- 		/* Create Release From other release within this project */
12609
-- 		
12610
-- 		-- Set parent id
12611
-- 		nParentRtagId := nSourceRtagId;
12612
-- 		
12613
-- 		
12614
-- 		-- Get number of source branches
12615
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
12616
-- 		  FROM RELEASE_TAGS rt
12617
-- 		 WHERE rt.PROJ_ID = nProjId
12618
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
12619
-- 		   
12620
-- 		   
12621
-- 		IF SourceBranchCount = 0 THEN
12622
-- 			/* Release is Head (i.e. Tip on its branch ) */
12623
-- 			
12624
-- 			-- Set Next Rtag Version
12625
-- 			sNextVersion := SourceVersion;
12626
-- 			
12627
-- 			-- Increase Lifecycle
12628
-- 			nNextLifeCycle := SourceLifeCycle + 1;
12629
-- 			
12630
-- 			
12631
-- 		ELSIF SourceBranchCount = 1 THEN
12632
-- 			/* Release IS NOT Head, but can be branched */
12633
-- 			
12634
-- 			-- Set Next Rtag Version
12635
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
12636
-- 			
12637
-- 			-- Reset Lifecycle to 1
12638
-- 			nNextLifeCycle := 1;
12639
-- 			
12640
-- 			
12641
-- 		ELSE	
12642
-- 			-- Limit of two branches is reached
12643
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
12644
-- 			
12645
-- 		END IF;	
12646
-- 			
12647
-- 			
12648
-- 		
12649
-- 		
12650
-- 		
12651
-- 	
12652
-- 	END IF;
12653
-- 	
12654
-- 		
12655
-- END;
12656
 
12657
/*-------------------------------------------------------------------------------------------------------*/
12658
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12659
 
12660
	IsBaseView CHAR(1);
12661
 
12662
BEGIN
12663
 
12664
	-- Check if the view is BASE VIEW
12665
	SELECT vi.BASE_VIEW INTO IsBaseView
12666
	  FROM VIEWS vi
12667
	 WHERE vi.VIEW_ID = ViewId;
12668
 
12669
	IF (IsBaseView = 'Y') THEN 
12670
		-- Get Base view content
12671
		OPEN RecordSet FOR
12672
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12673
			   pv.pv_id, 
12674
			   pkg.pkg_name, 
12675
			   pv.pkg_version, 
12676
			   pv.dlocked, 
12677
			   pv.pv_description,
12678
			   pv.BUILD_TYPE
12679
		  FROM release_content rel,
12680
		       packages pkg,
12681
		       package_versions pv
12682
		 WHERE pv.pkg_id = pkg.pkg_id
12683
		   AND rel.pv_id = pv.pv_id
12684
		   AND rel.BASE_VIEW_ID = ViewId
12685
		   AND rel.RTAG_ID = RtagId
12686
		 ORDER BY UPPER(pkg.PKG_NAME);
12687
 
12688
	ELSE	 
12689
 
12690
	 	-- Get non base view content
12691
		OPEN RecordSet FOR
12692
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12693
			   pv.pv_id, 
12694
			   pkg.pkg_name, 
12695
			   pv.pkg_version, 
12696
			   pv.dlocked, 
12697
			   pv.pv_description,
12698
			   pv.BUILD_TYPE
12699
		  FROM release_content rel,
12700
		       packages pkg,
12701
		       package_versions pv,
12702
			   VIEW_DEF vd
12703
		 WHERE pv.pkg_id = pkg.pkg_id
12704
		   AND rel.pv_id = pv.pv_id
12705
		   AND vd.VIEW_ID = ViewId
12706
		   AND vd.PKG_ID = pv.PKG_ID
12707
		   AND rel.RTAG_ID = RtagId
12708
		 ORDER BY UPPER(pkg.PKG_NAME);		 
12709
 
12710
	END IF;	 	 
12711
 
12712
 
12713
 
12714
 
12715
END;
12716
/*-------------------------------------------------------------------------------------------------------*/
12717
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12718
 
12719
	ReleaseLocation VARCHAR2(4000);
12720
	sPkgVersion VARCHAR2(4000);
12721
	nPkgId NUMBER;
12722
	sVExt VARCHAR2(4000);
12723
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
12724
 
12725
	-- Find package for replacement
12726
	CURSOR curReplacePkg IS
12727
    SELECT pv.PV_ID
12728
	  FROM RELEASE_CONTENT rc,
12729
	  	   PACKAGE_VERSIONS pv
12730
	 WHERE rc.PV_ID = pv.PV_ID
12731
	   AND rc.RTAG_ID = RtagId
12732
	   AND pv.PKG_ID = nPkgId
12733
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
12734
    recReplacePkg curReplacePkg%ROWTYPE;
12735
 
12736
BEGIN
12737
 
12738
	-- Get is_patch, pkg_id and v_ext
12739
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
12740
	  FROM PACKAGE_VERSIONS pv
12741
	 WHERE pv.PV_ID = newPvId;
12742
 
12743
 
12744
	-- Never put patch in relesed area
12745
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
12746
 
12747
		-- Try to get a package to be replaced with this new one.
12748
		-- Use unique constraint of PKG_ID and V_EXT
12749
		OPEN curReplacePkg;
12750
	    FETCH curReplacePkg INTO recReplacePkg;
12751
 
12752
	    IF curReplacePkg%FOUND THEN
12753
			-- Replace package
12754
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
12755
 
12756
		ELSE
12757
			-- Add new package
12758
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
12759
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
12760
 
12761
 
12762
		    /* LOG ACTION */
12763
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12764
			  FROM PROJECTS proj,
12765
			  	   RELEASE_TAGS rt
12766
			 WHERE rt.PROJ_ID = proj.PROJ_ID
12767
			   AND rt.RTAG_ID = RtagId;
12768
 
12769
			SELECT pv.PKG_VERSION INTO sPkgVersion
12770
			  FROM PACKAGE_VERSIONS pv
12771
			 WHERE pv.PV_ID = newPvId;
12772
 
12773
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12774
 
12775
 
12776
		END IF;
12777
 
12778
		CLOSE curReplacePkg;
12779
 
12780
	END IF;
12781
 
12782
END;
12783
/*-------------------------------------------------------------------------------------------------------*/
12784
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12785
 
12786
	ReleaseLocation VARCHAR2(4000);
12787
	sPkgVersion VARCHAR2(4000);
12788
 
12789
BEGIN
12790
 
12791
	-- Replace Package
12792
    UPDATE RELEASE_CONTENT
12793
       SET pv_id = newPvId,
12794
           insert_stamp = Ora_Sysdate,
12795
           insertor_id = UserId
12796
     WHERE rtag_id = RtagId
12797
       AND pv_id = oldPvId;
12798
 
12799
 
12800
    /* LOG ACTION */
12801
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12802
	  FROM PROJECTS proj,
12803
	  	   RELEASE_TAGS rt
12804
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12805
	   AND rt.RTAG_ID = RtagId;
12806
 
12807
	SELECT pv.PKG_VERSION INTO sPkgVersion
12808
	  FROM PACKAGE_VERSIONS pv
12809
	 WHERE pv.PV_ID = newPvId;
12810
 
12811
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
12812
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12813
 
12814
END;
12815
/*-------------------------------------------------------------------------------------------------------*/
12816
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12817
	ReleaseLocation VARCHAR2(4000);
12818
 
12819
BEGIN
12820
 
12821
 
12822
	-- Delete old package
12823
	DELETE
12824
	  FROM RELEASE_CONTENT rc
12825
	 WHERE rc.PV_ID = PvId
12826
	   AND rc.RTAG_ID = RtagId;
12827
 
12828
 
12829
	/* LOG ACTION */
12830
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12831
	  FROM PROJECTS proj,
12832
	       RELEASE_TAGS rt
12833
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12834
	   AND rt.RTAG_ID = RtagId;
12835
 
12836
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12837
 
12838
 
12839
END;
12840
/*-------------------------------------------------------------------------------------------------------*/
12841
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12842
	ReleaseLocation VARCHAR2(4000);
12843
 
12844
	CURSOR curMatchingPackage IS
12845
    SELECT mpv.PV_ID
12846
	  FROM RELEASE_CONTENT rc,
12847
	  	   PACKAGE_VERSIONS mpv,
12848
		   PACKAGE_VERSIONS pv
12849
	 WHERE rc.PV_ID = mpv.PV_ID
12850
	   AND rc.RTAG_ID = RtagId
12851
	   AND pv.PV_ID = PvId
12852
	   AND pv.PKG_ID = mpv.PKG_ID
12853
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
12854
    recMatchingPackage curMatchingPackage%ROWTYPE;
12855
 
12856
BEGIN
12857
 
12858
	OPEN curMatchingPackage;
12859
    FETCH curMatchingPackage INTO recMatchingPackage;
12860
 
12861
    IF curMatchingPackage%FOUND THEN
12862
		-- Delete old package
12863
		DELETE
12864
		  FROM RELEASE_CONTENT rc
12865
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
12866
		   AND rc.RTAG_ID = RtagId;
12867
 
12868
 
12869
		/* LOG ACTION */
12870
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12871
		  FROM PROJECTS proj,
12872
		  	   RELEASE_TAGS rt
12873
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12874
		   AND rt.RTAG_ID = RtagId;
12875
 
12876
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12877
 
12878
	END IF;
12879
 
12880
 
12881
	CLOSE curMatchingPackage;
12882
 
12883
 
12884
 
12885
 
12886
END;
12887
/*-------------------------------------------------------------------------------------------------------*/
12888
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12889
 
12890
	ReturnValue NUMBER;
12891
 
12892
BEGIN
12893
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
12894
	  FROM RELEASE_CONTENT rc
12895
	 WHERE rc.RTAG_ID = RtagId
12896
	   AND rc.PV_ID = PvId;
12897
 
12898
	RETURN ReturnValue;
12899
END;
12900
/*-------------------------------------------------------------------------------------------------------*/
12901
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
12902
 
12903
BEGIN
12904
	-- Reset Ignore warnings up-the-tree
12905
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
12906
 
12907
	-- Refresh Package states
12908
	TOUCH_RELEASE ( RtagId );
12909
 
12910
END;
12911
/*-------------------------------------------------------------------------------------------------------*/
12912
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
12913
	CURSOR curReleases IS
12914
    SELECT rc.RTAG_ID
12915
	  FROM RELEASE_CONTENT rc
12916
	 WHERE rc.PV_ID = PvId;
12917
    recReleases curReleases%ROWTYPE;
12918
 
12919
BEGIN
12920
 
12921
	OPEN curReleases;
12922
    FETCH curReleases INTO recReleases;
12923
 
12924
	WHILE curReleases%FOUND
12925
	LOOP
12926
 
12927
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
12928
 
12929
		FETCH curReleases INTO recReleases;
12930
	END LOOP;
12931
 
12932
	CLOSE curReleases;	
12933
 
12934
END;
12935
/*-------------------------------------------------------------------------------------------------------*/
12936
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12937
 
12938
BEGIN
12939
 
12940
	UPDATE RELEASE_CONTENT rc SET
12941
	rc.BASE_VIEW_ID = NewViewId
12942
	WHERE rc.PV_ID = PvId
12943
	  AND rc.RTAG_ID = RtagId;
12944
 
12945
END;
12946
/*-------------------------------------------------------------------------------------------------------*/
12947
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
12948
 
12949
	RowCount NUMBER;
12950
 
12951
 
12952
	CURSOR curPackageClash IS
12953
	SELECT pkg.PKG_NAME,
12954
		   er.*
12955
	  FROM (
12956
 
12957
	  		/* Get existing referenced packages */
12958
			SELECT pv.PKG_ID,
12959
			       pv.V_EXT
12960
			  FROM RELEASE_LINKS rl,
12961
			  	   RELEASE_CONTENT rc,
12962
			  	   PACKAGE_VERSIONS pv
12963
			 WHERE rl.RTAG_ID = nRtagId
12964
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
12965
			   AND rc.PV_ID = pv.PV_ID
12966
 
12967
	  	    ) er,
12968
			(
12969
 
12970
			/* Get current reference packages */
12971
			SELECT pv.PKG_ID,
12972
			       pv.V_EXT
12973
			  FROM RELEASE_CONTENT rc,
12974
			  	   PACKAGE_VERSIONS pv
12975
			 WHERE rc.RTAG_ID = nRefRtagId
12976
			   AND rc.PV_ID = pv.PV_ID    
12977
 
12978
			) cr,
12979
			PACKAGES PKG
12980
	 WHERE er.PKG_ID = cr.PKG_ID
12981
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
12982
	   AND er.PKG_ID = pkg.PKG_ID;
12983
 
12984
	recPackageClash curPackageClash%ROWTYPE;	   
12985
 
12986
BEGIN
12987
	/*--------------- Business Rules Here -------------------*/
12988
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
12989
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
12990
	END IF;
12991
 
12992
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
12993
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
12994
	END IF;
12995
	/*-------------------------------------------------------*/
12996
	ProblemString := NULL;
12997
 
12998
 
12999
	-- Check if release already has references
13000
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
13001
	  FROM RELEASE_LINKS rl
13002
	 WHERE rl.RTAG_ID = nRtagId;	
13003
 
13004
 
13005
	IF RowCount > 0 THEN
13006
		-- Found existing references
13007
 
13008
		-- Make sure there is no package clashes
13009
		OPEN curPackageClash;
13010
	    FETCH curPackageClash INTO recPackageClash;
13011
 
13012
		IF curPackageClash%FOUND THEN
13013
 
13014
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
13015
 
13016
			WHILE curPackageClash%FOUND
13017
			LOOP
13018
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
13019
 
13020
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
13021
 
13022
				FETCH curPackageClash INTO recPackageClash;
13023
			END LOOP;
13024
 
13025
		END IF;
13026
 
13027
		CLOSE curPackageClash;
13028
 
13029
 
13030
	ELSE
13031
		-- No references found, hence reference a release
13032
 
13033
 
13034
		-- Remove exising package from this release to be referenced
13035
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
13036
 
13037
 
13038
		-- Add new linked packages to release
13039
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13040
		SELECT nRtagId,
13041
			   rc.PV_ID,
13042
			   rc.BASE_VIEW_ID, 
13043
			   rc.INSERT_STAMP, 
13044
			   rc.INSERTOR_ID, 
13045
			   rc.PKG_STATE
13046
		  FROM RELEASE_CONTENT rc
13047
		 WHERE rc.RTAG_ID = nRefRtagId;
13048
 
13049
 
13050
 
13051
		-- Copy ignore warnings for referenced packages
13052
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
13053
		SELECT nRtagId, 
13054
			   iw.PV_ID, 
13055
			   iw.DPV_ID, 
13056
			   iw.IS_PATCH_IGNORE
13057
		  FROM IGNORE_WARNINGS iw,
13058
		  	   RELEASE_CONTENT rc
13059
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
13060
		   AND iw.PV_ID = rc.PV_ID
13061
		   AND rc.RTAG_ID = nRefRtagId;	 
13062
 
13063
 
13064
 
13065
		-- Reference release 
13066
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
13067
		VALUES ( nRtagId, nRefRtagId );		 
13068
 
13069
 
13070
		-- Refresh Package states
13071
		TOUCH_RELEASE ( nRtagId );
13072
 
13073
	END IF;	 
13074
 
13075
 
13076
END;
13077
/*-------------------------------------------------------------------------------------------------------*/
13078
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
13079
 
13080
 
13081
BEGIN
13082
	/*--------------- Business Rules Here -------------------*/
13083
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13084
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13085
	END IF;
13086
 
13087
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13088
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13089
	END IF;
13090
 
13091
	/*-------------------------------------------------------*/
13092
 
13093
 
13094
	-- Remove ignore warnings for those packages who use referenced packages
13095
	DELETE FROM IGNORE_WARNINGS iw
13096
	 WHERE iw.RTAG_ID = nRtagId
13097
	   AND iw.DPV_ID IN (
13098
	   						SELECT dep.DPV_ID
13099
							  FROM (
13100
 
13101
									/* Get referenced packages */
13102
									SELECT pv.PKG_ID,
13103
									       pv.V_EXT
13104
									  FROM RELEASE_CONTENT rc,
13105
									  	   PACKAGE_VERSIONS pv
13106
									 WHERE rc.RTAG_ID = nRefRtagId
13107
									   AND rc.PV_ID = pv.PV_ID    
13108
 
13109
									) cr,
13110
									(
13111
 
13112
									/* Get all dependencies for current release */
13113
									SELECT DISTINCT 
13114
										   pv.PKG_ID,
13115
										   pv.V_EXT,
13116
										   dep.DPV_ID
13117
									  FROM RELEASE_CONTENT rc,
13118
										   PACKAGE_DEPENDENCIES dep,
13119
										   PACKAGE_VERSIONS pv
13120
									 WHERE rc.RTAG_ID = nRtagId
13121
									   AND rc.PV_ID = dep.PV_ID		
13122
									   AND dep.PV_ID = pv.PV_ID	   
13123
 
13124
									) dep
13125
							 WHERE dep.PKG_ID = cr.PKG_ID
13126
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13127
	   					);  
13128
 
13129
 
13130
 
13131
 
13132
	-- Remove ignore warnings for those package which are going to be replaced with the reference
13133
	DELETE FROM IGNORE_WARNINGS iw
13134
	 WHERE iw.RTAG_ID = nRtagId
13135
	   AND iw.PV_ID IN (
13136
						SELECT pv.PV_ID
13137
						  FROM (
13138
 
13139
								/* Get referenced packages */
13140
								SELECT pv.PKG_ID,
13141
								       pv.V_EXT
13142
								  FROM RELEASE_CONTENT rc,
13143
								  	   PACKAGE_VERSIONS pv
13144
								 WHERE rc.RTAG_ID = nRefRtagId
13145
								   AND rc.PV_ID = pv.PV_ID    
13146
 
13147
								) cr,
13148
								RELEASE_CONTENT rc,
13149
								PACKAGE_VERSIONS pv
13150
						 WHERE pv.PKG_ID = cr.PKG_ID
13151
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13152
						   AND rc.RTAG_ID = nRtagId
13153
						   AND rc.PV_ID = pv.PV_ID
13154
						);			
13155
 
13156
 
13157
 
13158
 
13159
 
13160
	-- Remove matching packages from release
13161
	DELETE FROM RELEASE_CONTENT rc
13162
	 WHERE rc.RTAG_ID = nRtagId
13163
	   AND rc.PV_ID IN (
13164
						SELECT pv.PV_ID
13165
						  FROM (
13166
 
13167
								/* Get referenced packages */
13168
								SELECT pv.PKG_ID,
13169
								       pv.V_EXT
13170
								  FROM RELEASE_CONTENT rc,
13171
								  	   PACKAGE_VERSIONS pv
13172
								 WHERE rc.RTAG_ID = nRefRtagId
13173
								   AND rc.PV_ID = pv.PV_ID    
13174
 
13175
								) cr,
13176
								RELEASE_CONTENT rc,
13177
								PACKAGE_VERSIONS pv
13178
						 WHERE pv.PKG_ID = cr.PKG_ID
13179
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13180
						   AND rc.RTAG_ID = nRtagId
13181
						   AND rc.PV_ID = pv.PV_ID
13182
						);	
13183
 
13184
 
13185
 
13186
 
13187
 
13188
	-- Remove Reference release 
13189
	DELETE 
13190
	  FROM RELEASE_LINKS rl
13191
	 WHERE rl.RTAG_ID = nRtagId
13192
	   AND rl.REF_RTAG_ID = nRefRtagId;
13193
 
13194
 
13195
	-- Refresh Package states
13196
	TOUCH_RELEASE ( nRtagId );
13197
 
13198
 
13199
END;
13200
/*-------------------------------------------------------------------------------------------------------*/
13201
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
13202
 
13203
	cReleaseMode CHAR(1);
13204
	cPvMode CHAR(1);
13205
 
13206
BEGIN
13207
 
13208
	-- Get Release Mode
13209
	SELECT rt.OFFICIAL INTO cReleaseMode
13210
	  FROM RELEASE_TAGS rt
13211
	 WHERE rt.RTAG_ID = RtagId;
13212
 
13213
 
13214
	-- Get Package Mode
13215
	SELECT pv.DLOCKED INTO cPvMode
13216
	  FROM PACKAGE_VERSIONS pv
13217
	 WHERE pv.PV_ID = PvId;	 
13218
 
13219
	-- Only check if package is locked 
13220
	IF (cPvMode = 'Y') THEN
13221
 
13222
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
13223
		THEN
13224
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
13225
 
13226
		END IF;
13227
 
13228
	END IF;	
13229
 
13230
 
13231
END;
13232
/*-------------------------------------------------------------------------------------------------------*/
13233
END PK_RELEASE_TEST;
13234
/
13235
 
13236
CREATE OR REPLACE PACKAGE BODY PK_RELEASE IS
13237
 
13238
 
13239
/*
13240
------------------------------
13241
||  Last Modified:  S.Vukovic
13242
||  Modified Date:  12/Sep/2005
13243
||  Body Version:   3.0
13244
------------------------------
13245
*/
13246
 
13247
 
13248
/*-------------------------------------------------------------------------------------------------------*/
13249
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
13250
 
13251
RtagId NUMBER;
13252
ParentRtagId NUMBER;
13253
RecCount NUMBER := 0;
13254
VtreeId NUMBER;
13255
 
13256
 
13257
BEGIN
13258
	/*--------------- Business Rules Here -------------------*/
13259
	-- Check for missing parameters
13260
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
13261
	THEN
13262
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
13263
 
13264
	END IF;
13265
 
13266
 
13267
	-- Check for duplicate Release Names
13268
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13269
	  FROM RELEASE_TAGS rt
13270
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13271
	   AND rt.PROJ_ID = nProjId;
13272
 
13273
	IF (RecCount > 0) THEN
13274
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13275
	END IF;
13276
	/*-------------------------------------------------------*/
13277
 
13278
 
13279
	-- Get rtag_id
13280
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
13281
 
13282
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
13283
 
13284
 
13285
 
13286
	-- Get Parent RtagId
13287
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
13288
 
13289
 
13290
	-- Create new release
13291
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
13292
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
13293
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
13294
	VALUES ( RtagId, 
13295
			 sReleaseName, 
13296
			 sReleaseComments,
13297
			 ORA_SYSDATE,
13298
			 nUserId,
13299
			 'N',
13300
			 'N',
13301
			 0,
13302
			 ParentRtagId,
13303
			 nProjId,
13304
			 VtreeId );
13305
 
13306
	-- Update display Order
13307
	UPDATE_DISPLAY_ORDER ( nProjId );
13308
 
13309
	/* Log Project Action */
13310
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
13311
 
13312
 
13313
	-- Import Release Contents
13314
	IF (NOT nSourceRtagId IS NULL) THEN
13315
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
13316
 
13317
	END IF;
13318
 
13319
 
13320
 
13321
END;
13322
/*-------------------------------------------------------------------------------------------------------*/
13323
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
13324
 
13325
 
13326
BEGIN
13327
 
13328
 
13329
	/*--------------- Business Rules Here -------------------*/
13330
	/*-------------------------------------------------------*/
13331
 
13332
	UPDATE RELEASE_TAGS urt SET
13333
	urt.DISPLAY_ORDER = (
13334
						SELECT qry.REC_NUM
13335
						  FROM (	
13336
								SELECT rel.*, ROWNUM AS REC_NUM
13337
								  FROM (
13338
 
13339
								  		SELECT rt.RTAG_ID, 
13340
											   rt.DISPLAY_ORDER,
13341
										       DECODE( rt.PARENT_RTAG_ID, 
13342
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
13343
										  FROM RELEASE_TAGS rt
13344
										 WHERE rt.PROJ_ID = nProjId 
13345
 
13346
								  		) rel
13347
								START WITH rel.PARENT_RTAG_ID = 0
13348
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
13349
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
13350
								) qry
13351
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
13352
						)
13353
	WHERE urt.PROJ_ID = nProjId;
13354
 
13355
END;
13356
/*-------------------------------------------------------------------------------------------------------*/
13357
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
13358
 
13359
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
13360
	SeqNum NUMBER;
13361
 
13362
BEGIN
13363
 
13364
 
13365
	/*--------------- Business Rules Here -------------------*/
13366
	/*-------------------------------------------------------*/
13367
 
13368
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
13369
 
13370
	-- Set start sequence number
13371
	SeqNum := 1;
13372
 
13373
	FOR i IN 1..nIdCollector.COUNT
13374
	LOOP
13375
 
13376
		-- Update new display order
13377
		UPDATE RELEASE_TAGS rt SET
13378
			rt.DISPLAY_ORDER = SeqNum
13379
		 WHERE rt.PROJ_ID = nProjId
13380
		   AND rt.RTAG_ID = nIdCollector(i);
13381
 
13382
		SeqNum := SeqNum + 1;
13383
 
13384
	END LOOP;
13385
 
13386
END;
13387
/*-------------------------------------------------------------------------------------------------------*/
13388
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
13389
 
13390
RecCount NUMBER := 0;
13391
ProjId NUMBER;
13392
 
13393
BEGIN
13394
 
13395
 
13396
	/*--------------- Business Rules Here -------------------*/
13397
	-- Check for missing parameters
13398
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
13399
	THEN
13400
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
13401
 
13402
	END IF;
13403
 
13404
 
13405
	-- Check for duplicate Release Names
13406
	SELECT rt.PROJ_ID INTO ProjId
13407
	  FROM RELEASE_TAGS rt
13408
	 WHERE rt.RTAG_ID = nRtagId;
13409
 
13410
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13411
	  FROM RELEASE_TAGS rt
13412
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13413
	   AND rt.RTAG_ID != nRtagId
13414
	   AND rt.PROJ_ID = ProjId;
13415
 
13416
 
13417
	IF (RecCount > 0) THEN
13418
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13419
	END IF;
13420
	/*-------------------------------------------------------*/
13421
 
13422
 
13423
 
13424
	-- Update release details
13425
	UPDATE RELEASE_TAGS rt SET
13426
	rt.RTAG_NAME = sReleaseName,
13427
	rt.DESCRIPTION = sReleaseComments,
13428
	rt.PARENT_RTAG_ID = nParentRtagId,
13429
	rt.ASSOC_MASS_REF = nMASSRtagId,
13430
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
13431
	rt.OWNER_EMAIL = sOwnerEmail,
13432
	rt.PRODUCT_STATE_USED = cState
13433
	WHERE rt.RTAG_ID = nRtagId; 
13434
 
13435
	-- Update display Order
13436
	UPDATE_DISPLAY_ORDER ( ProjId );
13437
 
13438
	/* Log Project Action */
13439
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
13440
 
13441
 
13442
 
13443
 
13444
END;
13445
/*-------------------------------------------------------------------------------------------------------*/
13446
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13447
 
13448
	RecCount NUMBER := 0;
13449
	sReleaseId VARCHAR2(4000);
13450
	ProjId NUMBER;
13451
 
13452
BEGIN
13453
	/*--------------- Business Rules Here -------------------*/
13454
	IF (nRtagId IS NULL) 
13455
	THEN
13456
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13457
	END IF;
13458
 
13459
 
13460
 
13461
	-- Check for any kids
13462
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
13463
	  FROM RELEASE_TAGS rt
13464
	 WHERE rt.PARENT_RTAG_ID = nRtagId
13465
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
13466
 
13467
	IF (RecCount > 0) THEN
13468
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
13469
	END IF; 
13470
	/*-------------------------------------------------------*/
13471
 
13472
	-- Clear the release contents
13473
	Clean_Release_Contents ( nRtagId, nUserId );
13474
 
13475
	/* Log Project Action */
13476
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
13477
	  FROM RELEASE_TAGS rt
13478
	 WHERE rt.RTAG_ID = nRtagId;
13479
 
13480
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
13481
 
13482
 
13483
	-- Remove Release
13484
	DELETE 
13485
	  FROM RELEASE_TAGS rt
13486
	 WHERE rt.RTAG_ID = nRtagId;
13487
 
13488
 
13489
 
13490
END;
13491
/*-------------------------------------------------------------------------------------------------------*/
13492
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
13493
 
13494
	sSourceLocation VARCHAR2(4000);
13495
	sTargetLocation VARCHAR2(4000);
13496
	ProjId NUMBER;
13497
	cReleaseMode CHAR(1);
13498
	RconId NUMBER;
13499
 
13500
 
13501
	CURSOR curReleaseConfigs IS
13502
    SELECT *
13503
	  FROM RELEASE_CONFIG rc
13504
	 WHERE rc.RTAG_ID = nSourceRtagId;
13505
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
13506
 
13507
 
13508
BEGIN
13509
	/*--------------- Business Rules Here -------------------*/
13510
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
13511
	THEN
13512
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
13513
	END IF;
13514
 
13515
	IF (nSourceRtagId = nTargetRtagId) THEN
13516
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
13517
	END IF;
13518
 
13519
 
13520
	-- Check if Target release is in OPEN mode
13521
	SELECT rt.OFFICIAL  INTO  cReleaseMode
13522
	  FROM RELEASE_TAGS rt
13523
	 WHERE rt.RTAG_ID = nTargetRtagId;
13524
 
13525
	IF (cReleaseMode != 'N') THEN
13526
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
13527
	END IF;	 
13528
 
13529
	/*-------------------------------------------------------*/
13530
 
13531
	-- Clean target contents
13532
	Clean_Release_Contents ( nTargetRtagId, nUserId );
13533
 
13534
 
13535
	-- Import Released Area Contents
13536
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
13537
	SELECT nTargetRtagId AS RTAG_ID, 
13538
		   rc.PV_ID, 
13539
		   rc.BASE_VIEW_ID, 
13540
		   rc.INSERT_STAMP, 
13541
		   rc.INSERTOR_ID, 
13542
		   rc.PKG_STATE,
13543
		   rc.PKG_ID,
13544
		   rc.DEPRECATED_STATE
13545
	  FROM RELEASE_CONTENT rc
13546
	 WHERE rc.RTAG_ID = nSourceRtagId;
13547
 
13548
 
13549
	--Import Release Configuration Information
13550
	OPEN curReleaseConfigs;
13551
    FETCH curReleaseConfigs INTO recReleaseConfigs;
13552
 
13553
	WHILE curReleaseConfigs%FOUND
13554
	LOOP
13555
 
13556
		-- Get the next rcon id
13557
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
13558
 
13559
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
13560
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
13561
 
13562
		FETCH curReleaseConfigs INTO recReleaseConfigs;
13563
	END LOOP;
13564
 
13565
	CLOSE curReleaseConfigs;		
13566
 
13567
 
13568
 
13569
	-- Import Ignore Warning states
13570
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
13571
	SELECT nTargetRtagId AS RTAG_ID,
13572
	       igw.PV_ID,
13573
	       igw.DPV_ID
13574
	  FROM IGNORE_WARNINGS igw
13575
	 WHERE igw.rtag_id = nSourceRtagId;
13576
 
13577
 
13578
	/* Log Project Action */
13579
	-- Get Source Location
13580
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
13581
	  FROM RELEASE_TAGS rt,
13582
	  	   PROJECTS pr
13583
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13584
	   AND rt.RTAG_ID = nSourceRtagId;
13585
 
13586
	-- Get Target Location
13587
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
13588
	  FROM RELEASE_TAGS rt,
13589
	  	   PROJECTS pr
13590
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13591
	   AND rt.RTAG_ID = nTargetRtagId;	   
13592
 
13593
	-- Get project id   
13594
	SELECT rt.PROJ_ID  INTO  ProjId
13595
	  FROM RELEASE_TAGS rt
13596
	 WHERE rt.RTAG_ID = nTargetRtagId;   
13597
 
13598
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
13599
 
13600
 
13601
END;
13602
/*-------------------------------------------------------------------------------------------------------*/
13603
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13604
 
13605
	RecCount NUMBER;
13606
        rconIdList VARCHAR2(4000);
13607
 
13608
BEGIN
13609
	/*--------------- Business Rules Here -------------------*/
13610
	IF (nRtagId IS NULL) 
13611
	THEN
13612
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13613
	END IF;
13614
 
13615
 
13616
	-- Check if other release references this release
13617
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
13618
	  FROM RELEASE_LINKS rl
13619
	 WHERE rl.REF_RTAG_ID = nRtagId;
13620
 
13621
	IF (RecCount > 0) THEN
13622
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
13623
	END IF; 	
13624
	/*-------------------------------------------------------*/
13625
 
13626
	-- Delete Release links
13627
	DELETE 
13628
	  FROM RELEASE_LINKS rl
13629
	 WHERE rl.RTAG_ID = nRtagId;
13630
 
13631
	-- Delete ignore warning
13632
	DELETE 
13633
	  FROM IGNORE_WARNINGS iw
13634
	 WHERE iw.RTAG_ID = nRtagId;
13635
 
13636
 
13637
	-- Delete Build Order cached calculations	  
13638
	DELETE
13639
	  FROM BUILD_ORDER bo
13640
	 WHERE bo.RTAG_ID = nRtagId;
13641
 
13642
 
13643
	-- Delete Notification History
13644
	DELETE
13645
	  FROM NOTIFICATION_HISTORY nh
13646
	 WHERE nh.RTAG_ID = nRtagId;
13647
 
13648
 
13649
	-- Delete Released Area Contents
13650
	DELETE
13651
	  FROM RELEASE_CONTENT rc
13652
	 WHERE rc.RTAG_ID = nRtagId;
13653
 
13654
 
13655
	-- Delete Work In Progress Area Contents
13656
	DELETE
13657
	  FROM WORK_IN_PROGRESS wip
13658
	 WHERE wip.RTAG_ID = nRtagId;
13659
 
13660
 
13661
	-- Delete Pending Area Contents
13662
	DELETE 
13663
	  FROM PLANNED pl
13664
	 WHERE pl.RTAG_ID = nRtagId;
13665
 
13666
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
13667
	DELETE
13668
	  FROM DEPRECATED_PACKAGES dp
13669
	 WHERE dp.RTAG_ID = nRtagId; 
13670
 
13671
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
13672
	DELETE
13673
	  FROM PROJECT_ACTION_LOG pal
13674
	 WHERE pal.RTAG_ID = nRtagId;
13675
 
13676
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
13677
	DELETE
13678
	  FROM DO_NOT_RIPPLE dnr
13679
	 WHERE dnr.RTAG_ID = nRtagId; 
13680
 
13681
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
13682
	DELETE
13683
	  FROM DASH_BOARD db
13684
	 WHERE db.RTAG_ID = nRtagId;
13685
 
13686
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
13687
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
13688
        LOOP
13689
          rconIdList := rconIdList || rcon.RCON_ID || ',';
13690
        END LOOP;
13691
 
13692
        pk_buildapi.DELETE_DAEMON(rconIdList);
13693
 
13694
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
13695
        DELETE
13696
          FROM RELEASE_METRICS rm
13697
         WHERE rm.RTAG_ID = nRtagId;
13698
 
13699
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
13700
	DELETE
13701
	  FROM RELEASE_CONFIG rc
13702
	 WHERE rc.RTAG_ID = nRtagId;
13703
 
13704
 
13705
 
13706
END;
13707
/*-------------------------------------------------------------------------------------------------------*/
13708
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
13709
 
13710
	nSourceParentRtagId NUMBER;
13711
 
13712
BEGIN
13713
	/*--------------- Business Rules Here -------------------*/
13714
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
13715
	THEN
13716
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
13717
	END IF;
13718
	/*-------------------------------------------------------*/
13719
 
13720
 
13721
	IF ( nSourceRtagId IS NULL ) THEN
13722
		-- Create new on main branch
13723
		RETURN nRtagId;
13724
 
13725
	ELSE
13726
		-- Create from source rtag_id
13727
 
13728
		-- Find parent of Source RtagId
13729
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
13730
		  FROM RELEASE_TAGS rt
13731
		 WHERE rt.RTAG_ID = nSourceRtagId;
13732
 
13733
		IF (UPPER(cIsBranch) = 'Y') THEN
13734
			RETURN nSourceRtagId;
13735
		ELSE
13736
			IF (nSourceRtagId = nSourceParentRtagId) THEN
13737
				RETURN nRtagId;
13738
			ELSE
13739
				RETURN nSourceParentRtagId;
13740
			END IF;
13741
		END IF;	
13742
 
13743
 
13744
	END IF;
13745
 
13746
 
13747
END;
13748
/*-------------------------------------------------------------------------------------------------------*/
13749
 
13750
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
13751
-- 							 sNextVersion OUT VARCHAR2,
13752
-- 							 nNextLifeCycle OUT NUMBER,
13753
-- 							 nParentRtagId OUT NUMBER,
13754
-- 							 nProjId IN NUMBER ) IS
13755
-- 							
13756
-- SourceBranchCount NUMBER;
13757
-- ProjRootVersion VARCHAR2(4000);
13758
-- LastLifeCycle NUMBER;
13759
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
13760
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
13761
-- 
13762
-- SourceProjId NUMBER; 
13763
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
13764
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
13765
-- 
13766
-- BEGIN
13767
-- 	/*--------------- Business Rules Here -------------------*/
13768
-- 	/*-------------------------------------------------------*/
13769
-- 	
13770
-- 	   
13771
-- 	BEGIN
13772
-- 		-- Get Project root version
13773
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
13774
-- 		  FROM RELEASE_TAGS rt
13775
-- 		 WHERE rt.PROJ_ID = nProjId
13776
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
13777
-- 	   
13778
-- 		EXCEPTION
13779
-- 		WHEN NO_DATA_FOUND THEN
13780
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
13781
-- 	END;		   
13782
-- 	
13783
-- 	
13784
-- 	
13785
-- 	 
13786
-- 	BEGIN
13787
-- 		-- Get info for source rtagid
13788
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
13789
-- 		  FROM RELEASE_TAGS rt
13790
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
13791
-- 	   
13792
-- 		EXCEPTION
13793
-- 		WHEN NO_DATA_FOUND THEN
13794
-- 		SourceProjId := NULL;
13795
-- 		SourceVersion := NULL;
13796
-- 		SourceLifeCycle := NULL;
13797
-- 	END;	  
13798
-- 	
13799
-- 	
13800
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
13801
-- 	
13802
-- 		/* Blank Release Required  OR  Release imported from other project */
13803
-- 		
13804
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
13805
-- 			/* No Releases found in the project, hence calculate next version available.  */
13806
-- 			
13807
-- 			-- Set parent rtag
13808
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
13809
-- 			
13810
-- 			
13811
-- 			BEGIN
13812
-- 				-- Get Next Available Global Root Version 
13813
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
13814
-- 				  FROM RELEASE_TAGS rt
13815
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
13816
-- 				
13817
-- 				-- Set Next Rtag Version
13818
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
13819
-- 				
13820
-- 				-- Restart Lifecycle
13821
-- 				nNextLifeCycle := 0;
13822
-- 				
13823
-- 				
13824
-- 				EXCEPTION
13825
-- 				WHEN NO_DATA_FOUND THEN
13826
-- 				-- Release Manager has no releases, hence start from 1
13827
-- 				sNextVersion := '1';
13828
-- 				nNextLifeCycle := 0;
13829
-- 				
13830
-- 			END;
13831
-- 			
13832
-- 			
13833
-- 					
13834
-- 		ELSE
13835
-- 			/* Releases found in this project. */
13836
-- 							   
13837
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
13838
-- 			  FROM (
13839
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
13840
-- 					  FROM RELEASE_TAGS rt
13841
-- 					 WHERE rt.PROJ_ID = nProjId
13842
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
13843
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
13844
-- 			  		) qry
13845
-- 			 WHERE ROWNUM = 1;		
13846
-- 
13847
-- 			
13848
-- 			-- Set same Rtag Version
13849
-- 			sNextVersion := ProjRootVersion;
13850
-- 			
13851
-- 			-- Increase Lifecycle
13852
-- 			nNextLifeCycle := LastLifeCycle + 1;
13853
-- 		
13854
-- 		END IF;
13855
-- 				
13856
-- 	
13857
-- 		
13858
-- 	ELSE
13859
-- 		/* Create Release From other release within this project */
13860
-- 		
13861
-- 		-- Set parent id
13862
-- 		nParentRtagId := nSourceRtagId;
13863
-- 		
13864
-- 		
13865
-- 		-- Get number of source branches
13866
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
13867
-- 		  FROM RELEASE_TAGS rt
13868
-- 		 WHERE rt.PROJ_ID = nProjId
13869
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
13870
-- 		   
13871
-- 		   
13872
-- 		IF SourceBranchCount = 0 THEN
13873
-- 			/* Release is Head (i.e. Tip on its branch ) */
13874
-- 			
13875
-- 			-- Set Next Rtag Version
13876
-- 			sNextVersion := SourceVersion;
13877
-- 			
13878
-- 			-- Increase Lifecycle
13879
-- 			nNextLifeCycle := SourceLifeCycle + 1;
13880
-- 			
13881
-- 			
13882
-- 		ELSIF SourceBranchCount = 1 THEN
13883
-- 			/* Release IS NOT Head, but can be branched */
13884
-- 			
13885
-- 			-- Set Next Rtag Version
13886
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
13887
-- 			
13888
-- 			-- Reset Lifecycle to 1
13889
-- 			nNextLifeCycle := 1;
13890
-- 			
13891
-- 			
13892
-- 		ELSE	
13893
-- 			-- Limit of two branches is reached
13894
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
13895
-- 			
13896
-- 		END IF;	
13897
-- 			
13898
-- 			
13899
-- 		
13900
-- 		
13901
-- 		
13902
-- 	
13903
-- 	END IF;
13904
-- 	
13905
-- 		
13906
-- END;
13907
 
13908
/*-------------------------------------------------------------------------------------------------------*/
13909
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
13910
 
13911
	IsBaseView CHAR(1);
13912
 
13913
BEGIN
13914
 
13915
	-- Check if the view is BASE VIEW
13916
	SELECT vi.BASE_VIEW INTO IsBaseView
13917
	  FROM VIEWS vi
13918
	 WHERE vi.VIEW_ID = ViewId;
13919
 
13920
	IF (IsBaseView = 'Y') THEN 
13921
		-- Get Base view content
13922
		OPEN RecordSet FOR
13923
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13924
			   rel.deprecated_state,
13925
			   pv.pv_id, 
13926
			   pkg.pkg_name, 
13927
			   pv.pkg_version, 
13928
			   pv.dlocked, 
13929
			   pv.pv_description,
13930
			   pv.BUILD_TYPE
13931
		  FROM release_content rel,
13932
		       packages pkg,
13933
		       package_versions pv
13934
		 WHERE pv.pkg_id = pkg.pkg_id
13935
		   AND rel.pv_id = pv.pv_id
13936
		   AND rel.BASE_VIEW_ID = ViewId
13937
		   AND rel.RTAG_ID = RtagId
13938
		 ORDER BY UPPER(pkg.PKG_NAME);
13939
 
13940
	ELSE	 
13941
 
13942
	 	-- Get non base view content
13943
		OPEN RecordSet FOR
13944
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13945
			   rel.deprecated_state,
13946
			   pv.pv_id, 
13947
			   pkg.pkg_name, 
13948
			   pv.pkg_version, 
13949
			   pv.dlocked, 
13950
			   pv.pv_description,
13951
			   pv.BUILD_TYPE
13952
		  FROM release_content rel,
13953
		       packages pkg,
13954
		       package_versions pv,
13955
			   VIEW_DEF vd
13956
		 WHERE pv.pkg_id = pkg.pkg_id
13957
		   AND rel.pv_id = pv.pv_id
13958
		   AND vd.VIEW_ID = ViewId
13959
		   AND vd.PKG_ID = pv.PKG_ID
13960
		   AND rel.RTAG_ID = RtagId
13961
		 ORDER BY UPPER(pkg.PKG_NAME);		 
13962
 
13963
	END IF;	 	 
13964
 
13965
 
13966
 
13967
 
13968
END;
13969
/*-------------------------------------------------------------------------------------------------------*/
13970
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
13971
 
13972
	ReleaseLocation VARCHAR2(4000);
13973
	sPkgVersion VARCHAR2(4000);
13974
	nPkgId NUMBER;
13975
	sVExt VARCHAR2(4000);
13976
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
13977
 
13978
	-- Find package for replacement
13979
	CURSOR curReplacePkg IS
13980
    SELECT pv.PV_ID
13981
	  FROM RELEASE_CONTENT rc,
13982
	  	   PACKAGE_VERSIONS pv
13983
	 WHERE rc.PV_ID = pv.PV_ID
13984
	   AND rc.RTAG_ID = RtagId
13985
	   AND pv.PKG_ID = nPkgId
13986
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
13987
    recReplacePkg curReplacePkg%ROWTYPE;
13988
 
13989
BEGIN
13990
 
13991
	-- Get is_patch, pkg_id and v_ext
13992
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
13993
	  FROM PACKAGE_VERSIONS pv
13994
	 WHERE pv.PV_ID = newPvId;
13995
 
13996
 
13997
	-- Never put patch in relesed area
13998
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
13999
 
14000
		-- Try to get a package to be replaced with this new one.
14001
		-- Use unique constraint of PKG_ID and V_EXT
14002
		OPEN curReplacePkg;
14003
	    FETCH curReplacePkg INTO recReplacePkg;
14004
 
14005
	    IF curReplacePkg%FOUND THEN
14006
			-- Replace package
14007
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
14008
 
14009
		ELSE
14010
			-- Add new package
14011
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
14012
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
14013
 
14014
 
14015
		    /* LOG ACTION */
14016
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14017
			  FROM PROJECTS proj,
14018
			  	   RELEASE_TAGS rt
14019
			 WHERE rt.PROJ_ID = proj.PROJ_ID
14020
			   AND rt.RTAG_ID = RtagId;
14021
 
14022
			SELECT pv.PKG_VERSION INTO sPkgVersion
14023
			  FROM PACKAGE_VERSIONS pv
14024
			 WHERE pv.PV_ID = newPvId;
14025
 
14026
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14027
 
14028
 
14029
		END IF;
14030
 
14031
		CLOSE curReplacePkg;
14032
 
14033
	END IF;
14034
 
14035
END;
14036
/*-------------------------------------------------------------------------------------------------------*/
14037
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14038
 
14039
	ReleaseLocation VARCHAR2(4000);
14040
	sPkgVersion VARCHAR2(4000);
14041
 
14042
BEGIN
14043
 
14044
	-- Replace Package
14045
    UPDATE RELEASE_CONTENT
14046
       SET pv_id = newPvId,
14047
           insert_stamp = Ora_Sysdate,
14048
           insertor_id = UserId,
14049
		   product_state = NULL
14050
     WHERE rtag_id = RtagId
14051
       AND pv_id = oldPvId;  
14052
 
14053
 
14054
    /* LOG ACTION */
14055
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14056
	  FROM PROJECTS proj,
14057
	  	   RELEASE_TAGS rt
14058
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14059
	   AND rt.RTAG_ID = RtagId;
14060
 
14061
	SELECT pv.PKG_VERSION INTO sPkgVersion
14062
	  FROM PACKAGE_VERSIONS pv
14063
	 WHERE pv.PV_ID = newPvId;
14064
 
14065
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
14066
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14067
 
14068
END;
14069
/*-------------------------------------------------------------------------------------------------------*/
14070
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14071
	ReleaseLocation VARCHAR2(4000);
14072
 
14073
BEGIN
14074
 
14075
 
14076
	-- Delete old package
14077
	DELETE
14078
	  FROM RELEASE_CONTENT rc
14079
	 WHERE rc.PV_ID = PvId
14080
	   AND rc.RTAG_ID = RtagId;
14081
 
14082
 
14083
	/* LOG ACTION */
14084
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14085
	  FROM PROJECTS proj,
14086
	       RELEASE_TAGS rt
14087
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14088
	   AND rt.RTAG_ID = RtagId;
14089
 
14090
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14091
 
14092
 
14093
END;
14094
/*-------------------------------------------------------------------------------------------------------*/
14095
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14096
	ReleaseLocation VARCHAR2(4000);
14097
 
14098
	CURSOR curMatchingPackage IS
14099
    SELECT mpv.PV_ID
14100
	  FROM RELEASE_CONTENT rc,
14101
	  	   PACKAGE_VERSIONS mpv,
14102
		   PACKAGE_VERSIONS pv
14103
	 WHERE rc.PV_ID = mpv.PV_ID
14104
	   AND rc.RTAG_ID = RtagId
14105
	   AND pv.PV_ID = PvId
14106
	   AND pv.PKG_ID = mpv.PKG_ID
14107
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
14108
    recMatchingPackage curMatchingPackage%ROWTYPE;
14109
 
14110
BEGIN
14111
 
14112
	OPEN curMatchingPackage;
14113
    FETCH curMatchingPackage INTO recMatchingPackage;
14114
 
14115
    IF curMatchingPackage%FOUND THEN
14116
		-- Delete old package
14117
		DELETE
14118
		  FROM RELEASE_CONTENT rc
14119
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
14120
		   AND rc.RTAG_ID = RtagId;
14121
 
14122
 
14123
		/* LOG ACTION */
14124
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14125
		  FROM PROJECTS proj,
14126
		  	   RELEASE_TAGS rt
14127
		 WHERE rt.PROJ_ID = proj.PROJ_ID
14128
		   AND rt.RTAG_ID = RtagId;
14129
 
14130
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14131
 
14132
	END IF;
14133
 
14134
 
14135
	CLOSE curMatchingPackage;
14136
 
14137
 
14138
 
14139
 
14140
END;
14141
/*-------------------------------------------------------------------------------------------------------*/
14142
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
14143
 
14144
	ReturnValue NUMBER;
14145
 
14146
BEGIN
14147
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
14148
	  FROM RELEASE_CONTENT rc
14149
	 WHERE rc.RTAG_ID = RtagId
14150
	   AND rc.PV_ID = PvId;
14151
 
14152
	RETURN ReturnValue;
14153
END;
14154
/*-------------------------------------------------------------------------------------------------------*/
14155
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
14156
 
14157
BEGIN
14158
	-- Reset Ignore warnings up-the-tree
14159
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
14160
 
14161
	-- Refresh Package states
14162
	TOUCH_RELEASE ( RtagId );
14163
 
14164
END;
14165
/*-------------------------------------------------------------------------------------------------------*/
14166
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
14167
	CURSOR curReleases IS
14168
    SELECT rc.RTAG_ID
14169
	  FROM RELEASE_CONTENT rc
14170
	 WHERE rc.PV_ID = PvId;
14171
    recReleases curReleases%ROWTYPE;
14172
 
14173
BEGIN
14174
 
14175
	OPEN curReleases;
14176
    FETCH curReleases INTO recReleases;
14177
 
14178
	WHILE curReleases%FOUND
14179
	LOOP
14180
 
14181
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
14182
 
14183
		FETCH curReleases INTO recReleases;
14184
	END LOOP;
14185
 
14186
	CLOSE curReleases;	
14187
 
14188
END;
14189
/*-------------------------------------------------------------------------------------------------------*/
14190
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
14191
 
14192
BEGIN
14193
 
14194
	UPDATE RELEASE_CONTENT rc SET
14195
	rc.BASE_VIEW_ID = NewViewId
14196
	WHERE rc.PV_ID = PvId
14197
	  AND rc.RTAG_ID = RtagId;
14198
 
14199
END;
14200
/*-------------------------------------------------------------------------------------------------------*/
14201
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
14202
 
14203
	RowCount NUMBER;
14204
 
14205
 
14206
	CURSOR curPackageClash IS
14207
	SELECT pkg.PKG_NAME,
14208
		   er.*
14209
	  FROM (
14210
 
14211
	  		/* Get existing referenced packages */
14212
			SELECT pv.PKG_ID,
14213
			       pv.V_EXT
14214
			  FROM RELEASE_LINKS rl,
14215
			  	   RELEASE_CONTENT rc,
14216
			  	   PACKAGE_VERSIONS pv
14217
			 WHERE rl.RTAG_ID = nRtagId
14218
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
14219
			   AND rc.PV_ID = pv.PV_ID
14220
 
14221
	  	    ) er,
14222
			(
14223
 
14224
			/* Get current reference packages */
14225
			SELECT pv.PKG_ID,
14226
			       pv.V_EXT
14227
			  FROM RELEASE_CONTENT rc,
14228
			  	   PACKAGE_VERSIONS pv
14229
			 WHERE rc.RTAG_ID = nRefRtagId
14230
			   AND rc.PV_ID = pv.PV_ID    
14231
 
14232
			) cr,
14233
			PACKAGES PKG
14234
	 WHERE er.PKG_ID = cr.PKG_ID
14235
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14236
	   AND er.PKG_ID = pkg.PKG_ID;
14237
 
14238
	recPackageClash curPackageClash%ROWTYPE;	   
14239
 
14240
BEGIN
14241
	/*--------------- Business Rules Here -------------------*/
14242
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14243
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14244
	END IF;
14245
 
14246
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14247
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14248
	END IF;
14249
	/*-------------------------------------------------------*/
14250
	ProblemString := NULL;
14251
 
14252
 
14253
	-- Check if release already has references
14254
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
14255
	  FROM RELEASE_LINKS rl
14256
	 WHERE rl.RTAG_ID = nRtagId;	
14257
 
14258
 
14259
	IF RowCount > 0 THEN
14260
		-- Found existing references
14261
 
14262
		-- Make sure there is no package clashes
14263
		OPEN curPackageClash;
14264
	    FETCH curPackageClash INTO recPackageClash;
14265
 
14266
		IF curPackageClash%FOUND THEN
14267
 
14268
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
14269
 
14270
			WHILE curPackageClash%FOUND
14271
			LOOP
14272
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
14273
 
14274
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
14275
 
14276
				FETCH curPackageClash INTO recPackageClash;
14277
			END LOOP;
14278
 
14279
		END IF;
14280
 
14281
		CLOSE curPackageClash;
14282
 
14283
 
14284
	ELSE
14285
		-- No references found, hence reference a release
14286
 
14287
 
14288
		-- Remove exising package from this release to be referenced
14289
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
14290
 
14291
 
14292
		-- Add new linked packages to release
14293
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14294
		SELECT nRtagId,
14295
			   rc.PV_ID,
14296
			   rc.BASE_VIEW_ID, 
14297
			   rc.INSERT_STAMP, 
14298
			   rc.INSERTOR_ID, 
14299
			   rc.PKG_STATE
14300
		  FROM RELEASE_CONTENT rc
14301
		 WHERE rc.RTAG_ID = nRefRtagId;
14302
 
14303
 
14304
 
14305
		-- Copy ignore warnings for referenced packages
14306
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
14307
		SELECT nRtagId, 
14308
			   iw.PV_ID, 
14309
			   iw.DPV_ID, 
14310
			   iw.IS_PATCH_IGNORE
14311
		  FROM IGNORE_WARNINGS iw,
14312
		  	   RELEASE_CONTENT rc
14313
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
14314
		   AND iw.PV_ID = rc.PV_ID
14315
		   AND rc.RTAG_ID = nRefRtagId;	 
14316
 
14317
 
14318
 
14319
		-- Reference release 
14320
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
14321
		VALUES ( nRtagId, nRefRtagId );		 
14322
 
14323
 
14324
		-- Refresh Package states
14325
		TOUCH_RELEASE ( nRtagId );
14326
 
14327
	END IF;	 
14328
 
14329
 
14330
END;
14331
/*-------------------------------------------------------------------------------------------------------*/
14332
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
14333
 
14334
 
14335
BEGIN
14336
	/*--------------- Business Rules Here -------------------*/
14337
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14338
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14339
	END IF;
14340
 
14341
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14342
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14343
	END IF;
14344
 
14345
	/*-------------------------------------------------------*/
14346
 
14347
 
14348
	-- Remove ignore warnings for those packages who use referenced packages
14349
	DELETE FROM IGNORE_WARNINGS iw
14350
	 WHERE iw.RTAG_ID = nRtagId
14351
	   AND iw.DPV_ID IN (
14352
	   						SELECT dep.DPV_ID
14353
							  FROM (
14354
 
14355
									/* Get referenced packages */
14356
									SELECT pv.PKG_ID,
14357
									       pv.V_EXT
14358
									  FROM RELEASE_CONTENT rc,
14359
									  	   PACKAGE_VERSIONS pv
14360
									 WHERE rc.RTAG_ID = nRefRtagId
14361
									   AND rc.PV_ID = pv.PV_ID    
14362
 
14363
									) cr,
14364
									(
14365
 
14366
									/* Get all dependencies for current release */
14367
									SELECT DISTINCT 
14368
										   pv.PKG_ID,
14369
										   pv.V_EXT,
14370
										   dep.DPV_ID
14371
									  FROM RELEASE_CONTENT rc,
14372
										   PACKAGE_DEPENDENCIES dep,
14373
										   PACKAGE_VERSIONS pv
14374
									 WHERE rc.RTAG_ID = nRtagId
14375
									   AND rc.PV_ID = dep.PV_ID		
14376
									   AND dep.PV_ID = pv.PV_ID	   
14377
 
14378
									) dep
14379
							 WHERE dep.PKG_ID = cr.PKG_ID
14380
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14381
	   					);  
14382
 
14383
 
14384
 
14385
 
14386
	-- Remove ignore warnings for those package which are going to be replaced with the reference
14387
	DELETE FROM IGNORE_WARNINGS iw
14388
	 WHERE iw.RTAG_ID = nRtagId
14389
	   AND iw.PV_ID IN (
14390
						SELECT pv.PV_ID
14391
						  FROM (
14392
 
14393
								/* Get referenced packages */
14394
								SELECT pv.PKG_ID,
14395
								       pv.V_EXT
14396
								  FROM RELEASE_CONTENT rc,
14397
								  	   PACKAGE_VERSIONS pv
14398
								 WHERE rc.RTAG_ID = nRefRtagId
14399
								   AND rc.PV_ID = pv.PV_ID    
14400
 
14401
								) cr,
14402
								RELEASE_CONTENT rc,
14403
								PACKAGE_VERSIONS pv
14404
						 WHERE pv.PKG_ID = cr.PKG_ID
14405
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14406
						   AND rc.RTAG_ID = nRtagId
14407
						   AND rc.PV_ID = pv.PV_ID
14408
						);			
14409
 
14410
 
14411
 
14412
 
14413
 
14414
	-- Remove matching packages from release
14415
	DELETE FROM RELEASE_CONTENT rc
14416
	 WHERE rc.RTAG_ID = nRtagId
14417
	   AND rc.PV_ID IN (
14418
						SELECT pv.PV_ID
14419
						  FROM (
14420
 
14421
								/* Get referenced packages */
14422
								SELECT pv.PKG_ID,
14423
								       pv.V_EXT
14424
								  FROM RELEASE_CONTENT rc,
14425
								  	   PACKAGE_VERSIONS pv
14426
								 WHERE rc.RTAG_ID = nRefRtagId
14427
								   AND rc.PV_ID = pv.PV_ID    
14428
 
14429
								) cr,
14430
								RELEASE_CONTENT rc,
14431
								PACKAGE_VERSIONS pv
14432
						 WHERE pv.PKG_ID = cr.PKG_ID
14433
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14434
						   AND rc.RTAG_ID = nRtagId
14435
						   AND rc.PV_ID = pv.PV_ID
14436
						);	
14437
 
14438
 
14439
 
14440
 
14441
 
14442
	-- Remove Reference release 
14443
	DELETE 
14444
	  FROM RELEASE_LINKS rl
14445
	 WHERE rl.RTAG_ID = nRtagId
14446
	   AND rl.REF_RTAG_ID = nRefRtagId;
14447
 
14448
 
14449
	-- Refresh Package states
14450
	TOUCH_RELEASE ( nRtagId );
14451
 
14452
 
14453
END;
14454
/*-------------------------------------------------------------------------------------------------------*/
14455
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
14456
 
14457
	cReleaseMode CHAR(1);
14458
	cPvMode CHAR(1);
14459
 
14460
BEGIN
14461
 
14462
	-- Get Release Mode
14463
	SELECT rt.OFFICIAL INTO cReleaseMode
14464
	  FROM RELEASE_TAGS rt
14465
	 WHERE rt.RTAG_ID = RtagId;
14466
 
14467
 
14468
	-- Get Package Mode
14469
	SELECT pv.DLOCKED INTO cPvMode
14470
	  FROM PACKAGE_VERSIONS pv
14471
	 WHERE pv.PV_ID = PvId;	 
14472
 
14473
	-- Only check if package is locked 
14474
	IF (cPvMode = 'Y') THEN
14475
 
14476
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
14477
		THEN
14478
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
14479
 
14480
		END IF;
14481
 
14482
	END IF;	
14483
 
14484
 
14485
END;
14486
 
14487
/*-------------------------------------------------------------------------------------------------------*/
14488
END PK_RELEASE;
14489
/
14490
 
14491
CREATE OR REPLACE PACKAGE BODY PK_BUILDAPI_TEST IS
14492
 
14493
/*
14494
------------------------------
14495
||  Last Modified:  S.Vukovic
14496
||  Modified Date:  30/Mar/2005
14497
||  Body Version:   1.0
14498
------------------------------
14499
*/
14500
 
14501
 
14502
/*-------------------------------------------------------------------------------------------------------*/
14503
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14504
								  sOsName IN VARCHAR2,
14505
								  sOrigFilePath IN VARCHAR2,
14506
								  sFileName IN VARCHAR2,
14507
								  sDestFilePath IN VARCHAR2,
14508
								  nByteSize IN NUMBER,
14509
								  sCRCcksum IN VARCHAR2 ) IS
14510
 
14511
	nOsId NUMBER;
14512
 
14513
BEGIN
14514
	/*--------------- Business Rules Here -------------------*/
14515
	-- OS Name Requirements --
14516
	IF (sOsName IS NULL) THEN
14517
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14518
	END IF;
14519
 
14520
 
14521
	-- File Requirements --
14522
	IF (NOT sFileName IS NULL) THEN
14523
 
14524
		IF (nByteSize IS NULL) THEN
14525
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14526
 
14527
		ELSIF (sCRCcksum IS NULL) THEN
14528
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14529
 
14530
		END IF;
14531
 
14532
	END IF;
14533
 
14534
 
14535
	-- Folder Requirements --
14536
	-- No requirements for now.
14537
 
14538
	/*-------------------------------------------------------*/
14539
 
14540
	-- Get OsId
14541
	nOsId := Get_OsId ( sOsName );
14542
 
14543
 
14544
	-- Insert component entry
14545
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14546
    VALUES (
14547
			  nPvId,
14548
			  nOsId,
14549
			  sOrigFilePath,
14550
			  sFileName,
14551
			  sDestFilePath,
14552
			  nByteSize,
14553
			  sCRCcksum
14554
			);
14555
 
14556
 
14557
	EXCEPTION
14558
    WHEN DUP_VAL_ON_INDEX
14559
	THEN
14560
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14561
 
14562
END;
14563
/*-------------------------------------------------------------------------------------------------------*/
14564
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14565
 
14566
	nOsId NUMBER;
14567
 
14568
BEGIN
14569
	/*--------------- Business Rules Here -------------------*/
14570
	/*-------------------------------------------------------*/
14571
 
14572
	-- Get OsId
14573
	nOsId := Get_OsId ( sOsName );
14574
 
14575
 
14576
	-- Delete component entry
14577
	DELETE
14578
	  FROM PRODUCT_COMPONENTS pc
14579
	 WHERE pc.PV_ID = nPvId
14580
	   AND pc.OS_ID = nOsId;
14581
 
14582
 
14583
END;
14584
/*-------------------------------------------------------------------------------------------------------*/
14585
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14586
	Code NUMBER;
14587
 
14588
BEGIN
14589
 
14590
	-- Get Platform Code --
14591
	SELECT pf.CODE INTO Code
14592
	  FROM PLATFORMS pf
14593
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14594
 
14595
 
14596
	RETURN Code;	   
14597
 
14598
	EXCEPTION
14599
    	WHEN NO_DATA_FOUND THEN
14600
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14601
   	RAISE;
14602
END;
14603
/*-------------------------------------------------------------------------------------------------------*/
14604
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14605
			  					 sWebServer IN VARCHAR2,
14606
								 sMailServer IN VARCHAR2,
14607
								 sMailSender IN VARCHAR2) IS
14608
 
14609
BEGIN
14610
 
14611
 
14612
	 UPDATE BUILD_SERVICE_CONFIG
14613
	 SET CONFIG = sDatabaseServer
14614
	 WHERE SERVICE = 'DATABASE SERVER'; 
14615
 
14616
	 UPDATE BUILD_SERVICE_CONFIG
14617
	 SET CONFIG = sWebServer
14618
	 WHERE SERVICE = 'WEB SERVER'; 
14619
 
14620
	 UPDATE BUILD_SERVICE_CONFIG
14621
	 SET CONFIG = sMailServer
14622
	 WHERE SERVICE = 'MAIL SERVER'; 
14623
 
14624
	 UPDATE BUILD_SERVICE_CONFIG
14625
	 SET CONFIG = sMailSender
14626
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14627
 
14628
 
14629
 
14630
END;
14631
/*-------------------------------------------------------------------------------------------------------*/
14632
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14633
 
14634
GBE_ID NUMBER;
14635
 
14636
BEGIN
14637
 
14638
	-- Get GBE_ID
14639
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14640
 
14641
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14642
	VALUES( GBE_ID, sGBEValue);
14643
 
14644
 
14645
END;
14646
/*-------------------------------------------------------------------------------------------------------*/
14647
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14648
 
14649
BEGIN
14650
 
14651
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14652
 
14653
END;
14654
/*-------------------------------------------------------------------------------------------------------*/
14655
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14656
 
14657
BEGIN
14658
 
14659
	 UPDATE GBE_MACHTYPE
14660
	 SET GBE_VALUE = sGBEValue 
14661
	 WHERE GBE_ID = nGBE_ID;
14662
 
14663
 
14664
END;
14665
/*-------------------------------------------------------------------------------------------------------*/
14666
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14667
 
14668
nRecordNumber NUMBER;
14669
nRconId NUMBER;
14670
BEGIN
14671
	-- Get RCON_ID
14672
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14673
 
14674
        SELECT count(*) INTO nRecordNumber 
14675
        FROM RELEASE_CONFIG
14676
        WHERE RTAG_ID = nRtagId;
14677
 
14678
        IF nRecordNumber = 0 THEN
14679
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14680
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14681
        ELSE
14682
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14683
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14684
        END IF;
14685
 
14686
 
14687
 
14688
END;
14689
/*-------------------------------------------------------------------------------------------------------*/        
14690
END PK_BUILDAPI_TEST;
14691
/
14692
 
14693
CREATE OR REPLACE PACKAGE BODY pk_environment
14694
IS
14695
/*
14696
------------------------------
14697
||  Last Modified:  Rupesh Solanki
14698
||  Modified Date:  30/Aug/2007
14699
||  Body Version:   1.2
14700
------------------------------
14701
*/
14702
 
14703
   /*-------------------------------------------------------------------------------------------------------*/
14704
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
14705
      RETURN NUMBER
14706
   IS
14707
   BEGIN
14708
       /*
14709
      || N - unlocked
14710
      || Y - release and locked
14711
      || P - penging approval
14712
      || A - approved package ready for auto-build
14713
      */
14714
      IF cdlock = 'N' OR cdlock = 'R'
14715
      THEN
14716
         -- WORK IN PROGRESS --
14717
         RETURN 0;
14718
      ELSIF cdlock = 'P' OR cdlock = 'A'
14719
      THEN
14720
         -- PENDING --
14721
         RETURN 1;
14722
      ELSIF cdlock = 'Y'
14723
      THEN
14724
         -- RELEASED --
14725
         RETURN 2;
14726
      ELSE
14727
         -- NOT FOUND --
14728
         raise_application_error
14729
                         (-20000,
14730
                             'Cannot decide where to place package. [cDlock='
14731
                          || cdlock
14732
                          || ']'
14733
                         );
14734
      END IF;
14735
   END;
14736
 
14737
/*-------------------------------------------------------------------------------------------------------*/
14738
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
14739
      RETURN NUMBER
14740
   IS
14741
      envtab    NUMBER            := -1;
14742
 
14743
      CURSOR curarea
14744
      IS
14745
         SELECT 2 AS envtab
14746
           FROM release_content rc
14747
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14748
         UNION
14749
         SELECT 0 AS envtab
14750
           FROM work_in_progress wip
14751
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14752
         UNION
14753
         SELECT 1 AS envtab
14754
           FROM planned pl
14755
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
14756
 
14757
      recarea   curarea%ROWTYPE;
14758
   BEGIN
14759
      OPEN curarea;
14760
 
14761
      FETCH curarea
14762
       INTO recarea;
14763
 
14764
      IF curarea%FOUND
14765
      THEN
14766
         envtab := recarea.envtab;
14767
      END IF;
14768
 
14769
      CLOSE curarea;
14770
 
14771
      RETURN envtab;
14772
   END;
14773
 
14774
/*-------------------------------------------------------------------------------------------------------*/
14775
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
14776
      RETURN NUMBER
14777
   IS
14778
      ispatch   package_versions.dlocked%TYPE;
14779
      viewid    NUMBER                          := -1;
14780
 
14781
      CURSOR curview
14782
      IS
14783
         SELECT rc.base_view_id AS view_id
14784
           FROM release_content rc
14785
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14786
         UNION
14787
         SELECT wip.view_id AS view_id
14788
           FROM work_in_progress wip
14789
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14790
         UNION
14791
         SELECT pl.view_id AS view_id
14792
           FROM planned pl
14793
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
14794
 
14795
      recview   curview%ROWTYPE;
14796
   BEGIN
14797
      -- Get dlock state
14798
      SELECT pv.is_patch
14799
        INTO ispatch
14800
        FROM package_versions pv
14801
       WHERE pv.pv_id = pvid;
14802
 
14803
      -- Decide which view id should package go under.
14804
      IF (ispatch != 'Y') OR (ispatch IS NULL)
14805
      THEN
14806
         -- Get VIEW ID of Package
14807
         OPEN curview;
14808
 
14809
         FETCH curview
14810
          INTO recview;
14811
 
14812
         IF curview%FOUND
14813
         THEN
14814
            viewid := recview.view_id;
14815
         ELSE
14816
            raise_application_error
14817
               (-20000,
14818
                   'Cannot find view_id to proceed. [PvId='
14819
                || pvid
14820
                || ']. The current version may not exist in the release anymore.'
14821
               );
14822
         END IF;
14823
 
14824
         CLOSE curview;
14825
      ELSE
14826
         -- Get VIEW ID of Patch (view id of parent package)
14827
         SELECT rc.base_view_id
14828
           INTO viewid
14829
           FROM release_content rc, package_patches ppv
14830
          WHERE rc.rtag_id = rtagid
14831
            AND rc.pv_id = ppv.pv_id
14832
            AND ppv.patch_id = pvid;
14833
      END IF;
14834
 
14835
      RETURN viewid;
14836
   END;
14837
 
14838
/*-------------------------------------------------------------------------------------------------------*/
14839
   PROCEDURE add_package (
14840
      pvid     IN   NUMBER,
14841
      viewid   IN   NUMBER,
14842
      rtagid   IN   NUMBER,
14843
      userid   IN   NUMBER
14844
   )
14845
   IS
14846
      dlocked   package_versions.dlocked%TYPE;
14847
      envtab    NUMBER;
14848
   BEGIN
14849
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
14850
      THEN
14851
         -- Get dlock state
14852
         SELECT pv.dlocked
14853
           INTO dlocked
14854
           FROM package_versions pv
14855
          WHERE pv.pv_id = pvid;
14856
 
14857
         -- Get which area should go under
14858
         envtab := select_environment_area (dlocked);
14859
         -- Log
14860
         log_action (pvid, 'action', userid, 'Start of Package Add...');
14861
 
14862
         -- Remove Package
14863
         IF envtab = 0
14864
         THEN
14865
            -- WORK IN PROGRESS --
14866
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
14867
         ELSIF envtab = 1
14868
         THEN
14869
            -- PENDING --
14870
            pk_planned.add_package (pvid, viewid, rtagid, userid);
14871
         ELSIF envtab = 2
14872
         THEN
14873
            -- RELEASED --
14874
            -- NOTE: this package will be replaced with matching package
14875
            pk_release.add_package (pvid, viewid, rtagid, userid);
14876
            -- Now do post Release Actions
14877
            pk_release.run_post_actions (pvid, rtagid);
14878
         END IF;
14879
 
14880
         -- Log
14881
         log_action (pvid, 'action', userid, 'End of Package Add...');
14882
      END IF;
14883
   END;
14884
 
14885
/*-------------------------------------------------------------------------------------------------------*/
14886
   PROCEDURE add_package_bulk (
14887
      pvidlist   IN   VARCHAR2,
14888
      viewid     IN   NUMBER,
14889
      rtagid     IN   NUMBER,
14890
      userid     IN   NUMBER
14891
   )
14892
   IS
14893
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
14894
                                                                          ();
14895
      dlocked        package_versions.dlocked%TYPE;
14896
      pvid           NUMBER;
14897
      envtab         NUMBER;
14898
   BEGIN
14899
      /*--------------- Business Rules Here -------------------*/
14900
      IF (pvidlist IS NULL)
14901
      THEN
14902
         raise_application_error (-20000,
14903
                                  'Please select at least one package.'
14904
                                 );
14905
      END IF;
14906
 
14907
/*-------------------------------------------------------*/
14908
      nidcollector := in_list_number (pvidlist);
14909
 
14910
      FOR i IN 1 .. nidcollector.COUNT
14911
      LOOP
14912
         pvid := nidcollector (i);
14913
         add_package (pvid, viewid, rtagid, userid);
14914
      END LOOP;
14915
   END;
14916
 
14917
/*-------------------------------------------------------------------------------------------------------*/
14918
   PROCEDURE replace_package (
14919
      newpvid   IN   NUMBER,
14920
      oldpvid   IN   NUMBER,
14921
      rtagid    IN   NUMBER,
14922
      userid    IN   NUMBER
14923
   )
14924
   IS
14925
      dlocked        package_versions.dlocked%TYPE;
14926
      viewid         NUMBER;
14927
      envtab         NUMBER;
14928
      ROWCOUNT       NUMBER;
14929
      creleasemode   CHAR (1);
14930
      npkgid         NUMBER;
14931
   BEGIN
14932
      /*--------------- Business Rules Here -------------------*/
14933
      -- Check if oldPvId exists. It could have been removed
14934
      SELECT COUNT (pv.pv_id)
14935
        INTO ROWCOUNT
14936
        FROM package_versions pv
14937
       WHERE pv.pv_id = oldpvid;
14938
 
14939
/*-------------------------------------------------------*/
14940
 
14941
      /* This procedure is usually used by "History" option in Release Manager */
14942
 
14943
      -- Get dlock state
14944
      SELECT pv.dlocked
14945
        INTO dlocked
14946
        FROM package_versions pv
14947
       WHERE pv.pv_id = newpvid;
14948
 
14949
      -- Get VIEW_ID ---
14950
      IF ROWCOUNT = 1
14951
      THEN
14952
         viewid := get_view_location (oldpvid, rtagid);
14953
      ELSE
14954
         -- Set ViewID to default
14955
         viewid := 7;
14956
      END IF;
14957
 
14958
      -- Get which area should go under
14959
      envtab := select_environment_area (dlocked);
14960
      -- Log
14961
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
14962
 
14963
      -- Replace package
14964
      IF envtab = 0
14965
      THEN
14966
         -- WORK IN PROGRESS --
14967
 
14968
         -- Delete old package
14969
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
14970
         -- Add new package
14971
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
14972
      ELSIF envtab = 1
14973
      THEN
14974
         -- PENDING --
14975
 
14976
         -- Delete old package
14977
         pk_planned.remove_package (oldpvid, rtagid, userid);
14978
         -- Add new package
14979
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
14980
      ELSIF envtab = 2
14981
      THEN
14982
         -- RELEASED --
14983
 
14984
         -- Delete old package
14985
         pk_release.remove_package (oldpvid, rtagid, userid);
14986
         -- Add new package
14987
         pk_release.add_package (newpvid, viewid, rtagid, userid);
14988
         -- Now do post Release Actions
14989
         pk_release.run_post_actions (newpvid, rtagid);
14990
      END IF;
14991
 
14992
      -- Log
14993
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
14994
   END;
14995
 
14996
/*-------------------------------------------------------------------------------------------------------*/
14997
   FUNCTION remove_package (
14998
      pvid          IN   NUMBER,
14999
      rtagid        IN   NUMBER,
15000
      userid        IN   NUMBER,
15001
      forceremove   IN   CHAR
15002
   )
15003
      RETURN NUMBER
15004
   IS
15005
      envtab        NUMBER;
15006
      isused        BOOLEAN;
15007
      recordcount   NUMBER;
15008
   BEGIN
15009
/*--------------- Business Rules Here -------------------*/
15010
/*-------------------------------------------------------*/
15011
 
15012
      -- Find location of package
15013
      envtab := get_package_area (pvid, rtagid);
15014
 
15015
      -- Remove Package
15016
      IF envtab = 0
15017
      THEN
15018
         -- WORK IN PROGRESS --
15019
         -- Delete package
15020
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
15021
         RETURN 0;
15022
      ELSIF envtab = 1
15023
      THEN
15024
         -- PENDING --
15025
         -- Delete package
15026
         pk_planned.remove_package (pvid, rtagid, userid);
15027
         RETURN 0;
15028
      ELSIF envtab = 2
15029
      THEN
15030
         -- RELEASED --
15031
 
15032
         -- Check if is used by other packages
15033
         isused := TRUE;
15034
 
15035
         IF forceremove = 'N'
15036
         THEN
15037
            SELECT COUNT (pv.pv_id)
15038
              INTO recordcount
15039
              FROM (SELECT dpv.pkg_id, dpv.v_ext
15040
                      FROM release_content rc,
15041
                           package_dependencies dep,
15042
                           package_versions dpv
15043
                     WHERE rc.rtag_id = rtagid
15044
                       AND rc.pv_id = dep.pv_id
15045
                       AND dep.dpv_id = dpv.pv_id) rdep,
15046
                   package_versions pv
15047
             WHERE pv.pkg_id = rdep.pkg_id
15048
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
15049
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
15050
               AND pv.pv_id = pvid;
15051
 
15052
            IF recordcount > 0
15053
            THEN
15054
               RETURN 1;                    -- Return 1 as package being used
15055
            ELSE
15056
               isused := FALSE;
15057
            END IF;
15058
         END IF;
15059
 
15060
         IF forceremove = 'Y' OR NOT isused
15061
         THEN
15062
            -- Delete old package
15063
            pk_release.remove_package (pvid, rtagid, userid);
15064
            -- Now do post Release Actions
15065
            pk_release.run_post_actions (pvid, rtagid);
15066
            RETURN 0;
15067
         END IF;
15068
      END IF;
15069
   END;
15070
 
15071
/*-------------------------------------------------------------------------------------------------------*/
15072
   PROCEDURE get_environment_items (
15073
      viewtype           IN       NUMBER,
15074
      userid             IN       NUMBER,
15075
      rtagid             IN       NUMBER,
15076
      sviewidshowlist    IN       VARCHAR2,
15077
      ntruerecordcount   OUT      NUMBER,
15078
      recordset          OUT      typecur
15079
   )
15080
   IS
15081
   BEGIN
15082
      -- Get true record count because views can give false count
15083
      SELECT COUNT (pl.pv_id)
15084
        INTO ntruerecordcount
15085
        FROM environment_view pl
15086
       WHERE pl.rtag_id = rtagid;
15087
 
15088
      IF viewtype = 1
15089
      THEN
15090
         /*--- GUEST VIEW ---*/
15091
         OPEN recordset FOR
15092
            SELECT   *
15093
                FROM (
15094
                      /* Base Views collapsed */
15095
                      SELECT DISTINCT vi.view_id, vi.view_name,
15096
                                      TO_NUMBER (NULL) AS pkg_state,
15097
                                      TO_NUMBER (NULL) AS deprecated_state,
15098
                                      TO_NUMBER (NULL) AS pv_id,
15099
                                      NULL AS pkg_name, NULL AS pkg_version,
15100
                                      NULL AS dlocked, NULL AS pv_description
15101
                                 FROM environment_view rel, views vi
15102
                                WHERE rel.view_id = vi.view_id
15103
                                  AND rtag_id = rtagid
15104
                                  AND rel.view_id NOT IN (
15105
                                         SELECT *
15106
                                           FROM THE
15107
                                                   (SELECT CAST
15108
                                                              (in_list_number
15109
                                                                  (sviewidshowlist
15110
                                                                  ) AS relmgr_number_tab_t
15111
                                                              )
15112
                                                      FROM DUAL
15113
                                                   ))
15114
                      UNION
15115
                      /* Base Views expanded */
15116
                      SELECT vi.view_id, vi.view_name,
15117
                             DECODE (rel.pkg_state,
15118
                                     NULL, 0,
15119
                                     rel.pkg_state
15120
                                    ) AS pkg_state,
15121
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15122
                             pv.pkg_version, pv.dlocked, pv.pv_description
15123
                        FROM environment_view rel,
15124
                             PACKAGES pkg,
15125
                             package_versions pv,
15126
                             views vi
15127
                       WHERE pv.pkg_id = pkg.pkg_id
15128
                         AND rel.pv_id = pv.pv_id
15129
                         AND rel.view_id = vi.view_id
15130
                         AND rel.view_id IN (
15131
                                SELECT *
15132
                                  FROM THE
15133
                                          (SELECT CAST
15134
                                                     (in_list_number
15135
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15136
                                                     )
15137
                                             FROM DUAL
15138
                                          ))
15139
                         AND rtag_id = rtagid) ord
15140
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15141
      ELSIF viewtype = 2
15142
      THEN
15143
         /*--- PERSONAL 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
                                 FROM environment_view rel,
15155
                                      view_settings vs,
15156
                                      views vi
15157
                                WHERE rel.view_id = vi.view_id
15158
                                  AND vs.view_id = rel.view_id
15159
                                  AND vs.user_id = userid
15160
                                  AND rtag_id = rtagid
15161
                                  AND rel.view_id NOT IN (
15162
                                         SELECT *
15163
                                           FROM THE
15164
                                                   (SELECT CAST
15165
                                                              (in_list_number
15166
                                                                  (sviewidshowlist
15167
                                                                  ) AS relmgr_number_tab_t
15168
                                                              )
15169
                                                      FROM DUAL
15170
                                                   ))
15171
                      UNION
15172
                      /* Base Views expanded */
15173
                      SELECT vi.view_id, vi.view_name,
15174
                             DECODE (rel.pkg_state,
15175
                                     NULL, 0,
15176
                                     rel.pkg_state
15177
                                    ) AS pkg_state,
15178
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15179
                             pv.pkg_version, pv.dlocked, pv.pv_description
15180
                        FROM environment_view rel,
15181
                             PACKAGES pkg,
15182
                             package_versions pv,
15183
                             views vi,
15184
                             view_settings vs
15185
                       WHERE pv.pkg_id = pkg.pkg_id
15186
                         AND rel.pv_id = pv.pv_id
15187
                         AND rel.view_id = vi.view_id
15188
                         AND vs.view_id = vi.view_id
15189
                         AND vs.user_id = userid
15190
                         AND rel.view_id IN (
15191
                                SELECT *
15192
                                  FROM THE
15193
                                          (SELECT CAST
15194
                                                     (in_list_number
15195
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15196
                                                     )
15197
                                             FROM DUAL
15198
                                          ))
15199
                         AND rtag_id = rtagid
15200
                      UNION
15201
                      /* Private Views collapsed */
15202
                      SELECT vi.view_id, vi.view_name,
15203
                             TO_NUMBER (NULL) AS pkg_state,
15204
                             TO_NUMBER (NULL) AS deprecated_state,
15205
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15206
                             NULL AS pkg_version, NULL AS dlocked,
15207
                             NULL AS pv_description
15208
                        FROM view_settings vs,
15209
                             view_def vd,
15210
                             views vi,
15211
                             environment_view rel,
15212
                             package_versions pv
15213
                       WHERE vs.view_id = vi.view_id
15214
                         AND rel.pv_id = pv.pv_id
15215
                         AND vd.pkg_id = pv.pkg_id
15216
                         AND vd.view_id = vi.view_id
15217
                         AND vi.base_view = 'N'
15218
                         AND rel.rtag_id = rtagid
15219
                         AND vs.user_id = userid
15220
                         AND vi.view_id NOT IN (
15221
                                SELECT *
15222
                                  FROM THE
15223
                                          (SELECT CAST
15224
                                                     (in_list_number
15225
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15226
                                                     )
15227
                                             FROM DUAL
15228
                                          ))
15229
                      UNION
15230
                      /* Private Views expanded */
15231
                      SELECT vi.view_id, vi.view_name,
15232
                             DECODE (rel.pkg_state,
15233
                                     NULL, 0,
15234
                                     rel.pkg_state
15235
                                    ) AS pkg_state,
15236
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15237
                             pv.pkg_version, pv.dlocked, pv.pv_description
15238
                        FROM users usr,
15239
                             view_settings vs,
15240
                             view_def vd,
15241
                             views vi,
15242
                             environment_view rel,
15243
                             PACKAGES pkg,
15244
                             package_versions pv
15245
                       WHERE vs.user_id = usr.user_id
15246
                         AND vs.view_id = vi.view_id
15247
                         AND vd.view_id = vi.view_id
15248
                         AND pv.pkg_id = pkg.pkg_id
15249
                         AND rel.pv_id = pv.pv_id
15250
                         AND rel.rtag_id = rtagid
15251
                         AND vd.pkg_id = pkg.pkg_id
15252
                         AND vi.base_view = 'N'
15253
                         AND vi.view_id IN (
15254
                                SELECT *
15255
                                  FROM THE
15256
                                          (SELECT CAST
15257
                                                     (in_list_number
15258
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15259
                                                     )
15260
                                             FROM DUAL
15261
                                          ))
15262
                         AND usr.user_id = userid) ord
15263
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15264
      END IF;
15265
   END;
15266
 
15267
/*-------------------------------------------------------------------------------------------------------*/
15268
   PROCEDURE get_released_items (
15269
      viewtype           IN       NUMBER,
15270
      userid             IN       NUMBER,
15271
      rtagid             IN       NUMBER,
15272
      sviewidshowlist    IN       VARCHAR2,
15273
      ntruerecordcount   OUT      NUMBER,
15274
      recordset          OUT      typecur
15275
   )
15276
   IS
15277
   BEGIN
15278
      -- Get true record count because views can give false count
15279
      SELECT COUNT (rc.pv_id)
15280
        INTO ntruerecordcount
15281
        FROM release_content rc
15282
       WHERE rc.rtag_id = rtagid;
15283
 
15284
      IF viewtype = 1
15285
      THEN
15286
         /*--- GUEST VIEW ---*/
15287
         OPEN recordset FOR
15288
            SELECT   *
15289
                FROM (
15290
                      /* Base Views collapsed */
15291
                      SELECT DISTINCT vi.view_id, vi.view_name,
15292
                                      TO_NUMBER (NULL) AS pkg_state,
15293
                                      TO_NUMBER (NULL) AS deprecated_state,
15294
                                      TO_NUMBER (NULL) AS pv_id,
15295
                                      NULL AS pkg_name, NULL AS pkg_version,
15296
                                      NULL AS dlocked, NULL AS pv_description
15297
                                 FROM release_content rel, views vi
15298
                                WHERE rel.base_view_id = vi.view_id
15299
                                  AND rtag_id = rtagid
15300
                                  AND rel.base_view_id NOT IN (
15301
                                         SELECT *
15302
                                           FROM THE
15303
                                                   (SELECT CAST
15304
                                                              (in_list_number
15305
                                                                  (sviewidshowlist
15306
                                                                  ) AS relmgr_number_tab_t
15307
                                                              )
15308
                                                      FROM DUAL
15309
                                                   ))
15310
                      UNION
15311
                      /* Base Views expanded */
15312
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
15313
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15314
                             pv.pkg_version, pv.dlocked, pv.pv_description
15315
                        FROM release_content rel,
15316
                             PACKAGES pkg,
15317
                             package_versions pv,
15318
                             views vi
15319
                       WHERE pv.pkg_id = pkg.pkg_id
15320
                         AND rel.pv_id = pv.pv_id
15321
                         AND rel.base_view_id = vi.view_id
15322
                         AND rel.base_view_id IN (
15323
                                SELECT *
15324
                                  FROM THE
15325
                                          (SELECT CAST
15326
                                                     (in_list_number
15327
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15328
                                                     )
15329
                                             FROM DUAL
15330
                                          ))
15331
                         AND rtag_id = rtagid) ord
15332
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15333
      ELSIF viewtype = 2
15334
      THEN
15335
         /*--- PERSONAL VIEW ---*/
15336
         OPEN recordset FOR
15337
            SELECT   *
15338
                FROM (
15339
                      /* Base Views collapsed */
15340
                      SELECT DISTINCT vi.view_id, vi.view_name,
15341
                                      TO_NUMBER (NULL) AS pkg_state,
15342
                                      TO_NUMBER (NULL) AS deprecated_state,
15343
                                      TO_NUMBER (NULL) AS pv_id,
15344
                                      NULL AS pkg_name, NULL AS pkg_version,
15345
                                      NULL AS dlocked, NULL AS pv_description
15346
                                 FROM release_content rel,
15347
                                      view_settings vs,
15348
                                      views vi
15349
                                WHERE rel.base_view_id = vi.view_id
15350
                                  AND vs.view_id = rel.base_view_id
15351
                                  AND vs.user_id = userid
15352
                                  AND rtag_id = rtagid
15353
                                  AND rel.base_view_id NOT IN (
15354
                                         SELECT *
15355
                                           FROM THE
15356
                                                   (SELECT CAST
15357
                                                              (in_list_number
15358
                                                                  (sviewidshowlist
15359
                                                                  ) AS relmgr_number_tab_t
15360
                                                              )
15361
                                                      FROM DUAL
15362
                                                   ))
15363
                      UNION
15364
                      /* Base Views expanded */
15365
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
15366
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15367
                             pv.pkg_version, pv.dlocked, pv.pv_description
15368
                        FROM release_content rel,
15369
                             PACKAGES pkg,
15370
                             package_versions pv,
15371
                             views vi,
15372
                             view_settings vs
15373
                       WHERE pv.pkg_id = pkg.pkg_id
15374
                         AND rel.pv_id = pv.pv_id
15375
                         AND rel.base_view_id = vi.view_id
15376
                         AND vs.view_id = vi.view_id
15377
                         AND vs.user_id = userid
15378
                         AND rel.base_view_id IN (
15379
                                SELECT *
15380
                                  FROM THE
15381
                                          (SELECT CAST
15382
                                                     (in_list_number
15383
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15384
                                                     )
15385
                                             FROM DUAL
15386
                                          ))
15387
                         AND rtag_id = rtagid
15388
                      UNION
15389
                      /* Private Views collapsed */
15390
                      SELECT vi.view_id, vi.view_name,
15391
                             TO_NUMBER (NULL) AS pkg_state,
15392
                             TO_NUMBER (NULL) AS deprecated_state,
15393
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15394
                             NULL AS pkg_version, NULL AS dlocked,
15395
                             NULL AS pv_description
15396
                        FROM view_settings vs,
15397
                             view_def vd,
15398
                             views vi,
15399
                             release_content rel,
15400
                             package_versions pv
15401
                       WHERE vs.view_id = vi.view_id
15402
                         AND rel.pv_id = pv.pv_id
15403
                         AND vd.pkg_id = pv.pkg_id
15404
                         AND vd.view_id = vi.view_id
15405
                         AND vi.base_view = 'N'
15406
                         AND rel.rtag_id = rtagid
15407
                         AND vs.user_id = userid
15408
                         AND vi.view_id NOT IN (
15409
                                SELECT *
15410
                                  FROM THE
15411
                                          (SELECT CAST
15412
                                                     (in_list_number
15413
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15414
                                                     )
15415
                                             FROM DUAL
15416
                                          ))
15417
                      UNION
15418
                      /* Private Views expanded */
15419
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
15420
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15421
                             pv.pkg_version, pv.dlocked, pv.pv_description
15422
                        FROM users usr,
15423
                             view_settings vs,
15424
                             view_def vd,
15425
                             views vi,
15426
                             release_content rel,
15427
                             PACKAGES pkg,
15428
                             package_versions pv
15429
                       WHERE vs.user_id = usr.user_id
15430
                         AND vs.view_id = vi.view_id
15431
                         AND vd.view_id = vi.view_id
15432
                         AND pv.pkg_id = pkg.pkg_id
15433
                         AND rel.pv_id = pv.pv_id
15434
                         AND rel.rtag_id = rtagid
15435
                         AND vd.pkg_id = pkg.pkg_id
15436
                         AND vi.base_view = 'N'
15437
                         AND vi.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 usr.user_id = userid) ord
15447
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15448
      END IF;
15449
   END;
15450
 
15451
/*-------------------------------------------------------------------------------------------------------*/
15452
   PROCEDURE get_work_in_progress_items (
15453
      viewtype           IN       NUMBER,
15454
      userid             IN       NUMBER,
15455
      rtagid             IN       NUMBER,
15456
      sviewidshowlist    IN       VARCHAR2,
15457
      ntruerecordcount   OUT      NUMBER,
15458
      recordset          OUT      typecur
15459
   )
15460
   IS
15461
   BEGIN
15462
      -- Get true record count because views can give false count
15463
      SELECT COUNT (wip.pv_id)
15464
        INTO ntruerecordcount
15465
        FROM work_in_progress wip
15466
       WHERE wip.rtag_id = rtagid;
15467
 
15468
      IF viewtype = 1
15469
      THEN
15470
         /*--- GUEST VIEW ---*/
15471
         OPEN recordset FOR
15472
            SELECT   *
15473
                FROM (
15474
                      /* Base Views collapsed */
15475
                      SELECT DISTINCT vi.view_id, vi.view_name,
15476
                                      TO_NUMBER (NULL) AS pkg_state,
15477
                                      TO_NUMBER (NULL) AS deprecated_state,
15478
                                      TO_NUMBER (NULL) AS pv_id,
15479
                                      NULL AS pkg_name, NULL AS pkg_version,
15480
                                      NULL AS dlocked, NULL AS pv_description
15481
                                 FROM work_in_progress rel, views vi
15482
                                WHERE rel.view_id = vi.view_id
15483
                                  AND rtag_id = rtagid
15484
                                  AND rel.view_id NOT IN (
15485
                                         SELECT *
15486
                                           FROM THE
15487
                                                   (SELECT CAST
15488
                                                              (in_list_number
15489
                                                                  (sviewidshowlist
15490
                                                                  ) AS relmgr_number_tab_t
15491
                                                              )
15492
                                                      FROM DUAL
15493
                                                   ))
15494
                      UNION
15495
                      /* Base Views expanded */
15496
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15497
 
15498
                             --rel.pkg_state,
15499
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15500
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15501
                             pv.pv_description
15502
                        FROM work_in_progress rel,
15503
                             PACKAGES pkg,
15504
                             package_versions pv,
15505
                             views vi
15506
                       WHERE pv.pkg_id = pkg.pkg_id
15507
                         AND rel.pv_id = pv.pv_id
15508
                         AND rel.view_id = vi.view_id
15509
                         AND rel.view_id IN (
15510
                                SELECT *
15511
                                  FROM THE
15512
                                          (SELECT CAST
15513
                                                     (in_list_number
15514
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15515
                                                     )
15516
                                             FROM DUAL
15517
                                          ))
15518
                         AND rtag_id = rtagid) ord
15519
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15520
      ELSIF viewtype = 2
15521
      THEN
15522
         /*--- PERSONAL VIEW ---*/
15523
         OPEN recordset FOR
15524
            SELECT   *
15525
                FROM (
15526
                      /* Base Views collapsed */
15527
                      SELECT DISTINCT vi.view_id, vi.view_name,
15528
                                      TO_NUMBER (NULL) AS pkg_state,
15529
                                      TO_NUMBER (NULL) AS deprecated_state,
15530
                                      TO_NUMBER (NULL) AS pv_id,
15531
                                      NULL AS pkg_name, NULL AS pkg_version,
15532
                                      NULL AS dlocked, NULL AS pv_description
15533
                                 FROM work_in_progress rel,
15534
                                      view_settings vs,
15535
                                      views vi
15536
                                WHERE rel.view_id = vi.view_id
15537
                                  AND vs.view_id = rel.view_id
15538
                                  AND vs.user_id = userid
15539
                                  AND rtag_id = rtagid
15540
                                  AND rel.view_id NOT IN (
15541
                                         SELECT *
15542
                                           FROM THE
15543
                                                   (SELECT CAST
15544
                                                              (in_list_number
15545
                                                                  (sviewidshowlist
15546
                                                                  ) AS relmgr_number_tab_t
15547
                                                              )
15548
                                                      FROM DUAL
15549
                                                   ))
15550
                      UNION
15551
                      /* Base Views expanded */
15552
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15553
 
15554
                             --rel.pkg_state,
15555
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15556
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15557
                             pv.pv_description
15558
                        FROM work_in_progress rel,
15559
                             PACKAGES pkg,
15560
                             package_versions pv,
15561
                             views vi,
15562
                             view_settings vs
15563
                       WHERE pv.pkg_id = pkg.pkg_id
15564
                         AND rel.pv_id = pv.pv_id
15565
                         AND rel.view_id = vi.view_id
15566
                         AND vs.view_id = vi.view_id
15567
                         AND vs.user_id = userid
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
15578
                      UNION
15579
                      /* Private Views collapsed */
15580
                      SELECT vi.view_id, vi.view_name,
15581
                             TO_NUMBER (NULL) AS pkg_state,
15582
                             TO_NUMBER (NULL) AS deprecated_state,
15583
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15584
                             NULL AS pkg_version, NULL AS dlocked,
15585
                             NULL AS pv_description
15586
                        FROM view_settings vs,
15587
                             view_def vd,
15588
                             views vi,
15589
                             work_in_progress rel,
15590
                             package_versions pv
15591
                       WHERE vs.view_id = vi.view_id
15592
                         AND rel.pv_id = pv.pv_id
15593
                         AND vd.pkg_id = pv.pkg_id
15594
                         AND vd.view_id = vi.view_id
15595
                         AND vi.base_view = 'N'
15596
                         AND rel.rtag_id = rtagid
15597
                         AND vs.user_id = userid
15598
                         AND vi.view_id NOT IN (
15599
                                SELECT *
15600
                                  FROM THE
15601
                                          (SELECT CAST
15602
                                                     (in_list_number
15603
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15604
                                                     )
15605
                                             FROM DUAL
15606
                                          ))
15607
                      UNION
15608
                      /* Private Views expanded */
15609
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15610
 
15611
                             --rel.pkg_state,
15612
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15613
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15614
                             pv.pv_description
15615
                        FROM users usr,
15616
                             view_settings vs,
15617
                             view_def vd,
15618
                             views vi,
15619
                             work_in_progress rel,
15620
                             PACKAGES pkg,
15621
                             package_versions pv
15622
                       WHERE vs.user_id = usr.user_id
15623
                         AND vs.view_id = vi.view_id
15624
                         AND vd.view_id = vi.view_id
15625
                         AND pv.pkg_id = pkg.pkg_id
15626
                         AND rel.pv_id = pv.pv_id
15627
                         AND rel.rtag_id = rtagid
15628
                         AND vd.pkg_id = pkg.pkg_id
15629
                         AND vi.base_view = 'N'
15630
                         AND vi.view_id IN (
15631
                                SELECT *
15632
                                  FROM THE
15633
                                          (SELECT CAST
15634
                                                     (in_list_number
15635
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15636
                                                     )
15637
                                             FROM DUAL
15638
                                          ))
15639
                         AND usr.user_id = userid) ord
15640
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15641
      END IF;
15642
   END;
15643
 
15644
/*-------------------------------------------------------------------------------------------------------*/
15645
   PROCEDURE get_pending_items (
15646
      viewtype           IN       NUMBER,
15647
      userid             IN       NUMBER,
15648
      rtagid             IN       NUMBER,
15649
      sviewidshowlist    IN       VARCHAR2,
15650
      ntruerecordcount   OUT      NUMBER,
15651
      recordset          OUT      typecur
15652
   )
15653
   IS
15654
   BEGIN
15655
      -- Get true record count because views can give false count
15656
      SELECT COUNT (pl.pv_id)
15657
        INTO ntruerecordcount
15658
        FROM planned pl
15659
       WHERE pl.rtag_id = rtagid;
15660
 
15661
      IF viewtype = 1
15662
      THEN
15663
         /*--- GUEST VIEW ---*/
15664
         OPEN recordset FOR
15665
            SELECT   *
15666
                FROM (
15667
                      /* Base Views collapsed */
15668
                      SELECT DISTINCT vi.view_id, vi.view_name,
15669
                                      TO_NUMBER (NULL) AS pkg_state,
15670
                                      TO_NUMBER (NULL) AS deprecated_state,
15671
                                      TO_NUMBER (NULL) AS pv_id,
15672
                                      NULL AS pkg_name, NULL AS pkg_version,
15673
                                      NULL AS dlocked, NULL AS pv_description
15674
                                 FROM planned rel, views vi
15675
                                WHERE rel.view_id = vi.view_id
15676
                                  AND rtag_id = rtagid
15677
                                  AND rel.view_id NOT IN (
15678
                                         SELECT *
15679
                                           FROM THE
15680
                                                   (SELECT CAST
15681
                                                              (in_list_number
15682
                                                                  (sviewidshowlist
15683
                                                                  ) AS relmgr_number_tab_t
15684
                                                              )
15685
                                                      FROM DUAL
15686
                                                   ))
15687
                      UNION
15688
                      /* Base Views expanded */
15689
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15690
 
15691
                             --rel.pkg_state,
15692
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15693
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15694
                             pv.pv_description
15695
                        FROM planned rel,
15696
                             PACKAGES pkg,
15697
                             package_versions pv,
15698
                             views vi
15699
                       WHERE pv.pkg_id = pkg.pkg_id
15700
                         AND rel.pv_id = pv.pv_id
15701
                         AND rel.view_id = vi.view_id
15702
                         AND rel.view_id IN (
15703
                                SELECT *
15704
                                  FROM THE
15705
                                          (SELECT CAST
15706
                                                     (in_list_number
15707
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15708
                                                     )
15709
                                             FROM DUAL
15710
                                          ))
15711
                         AND rtag_id = rtagid) ord
15712
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15713
      ELSIF viewtype = 2
15714
      THEN
15715
         /*--- PERSONAL VIEW ---*/
15716
         OPEN recordset FOR
15717
            SELECT   *
15718
                FROM (
15719
                      /* Base Views collapsed */
15720
                      SELECT DISTINCT vi.view_id, vi.view_name,
15721
                                      TO_NUMBER (NULL) AS pkg_state,
15722
                                      TO_NUMBER (NULL) AS deprecated_state,
15723
                                      TO_NUMBER (NULL) AS pv_id,
15724
                                      NULL AS pkg_name, NULL AS pkg_version,
15725
                                      NULL AS dlocked, NULL AS pv_description
15726
                                 FROM planned rel, view_settings vs, views vi
15727
                                WHERE rel.view_id = vi.view_id
15728
                                  AND vs.view_id = rel.view_id
15729
                                  AND vs.user_id = userid
15730
                                  AND rtag_id = rtagid
15731
                                  AND rel.view_id NOT IN (
15732
                                         SELECT *
15733
                                           FROM THE
15734
                                                   (SELECT CAST
15735
                                                              (in_list_number
15736
                                                                  (sviewidshowlist
15737
                                                                  ) AS relmgr_number_tab_t
15738
                                                              )
15739
                                                      FROM DUAL
15740
                                                   ))
15741
                      UNION
15742
                      /* Base Views expanded */
15743
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15744
 
15745
                             --rel.pkg_state,
15746
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15747
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15748
                             pv.pv_description
15749
                        FROM planned rel,
15750
                             PACKAGES pkg,
15751
                             package_versions pv,
15752
                             views vi,
15753
                             view_settings vs
15754
                       WHERE pv.pkg_id = pkg.pkg_id
15755
                         AND rel.pv_id = pv.pv_id
15756
                         AND rel.view_id = vi.view_id
15757
                         AND vs.view_id = vi.view_id
15758
                         AND vs.user_id = userid
15759
                         AND rel.view_id IN (
15760
                                SELECT *
15761
                                  FROM THE
15762
                                          (SELECT CAST
15763
                                                     (in_list_number
15764
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15765
                                                     )
15766
                                             FROM DUAL
15767
                                          ))
15768
                         AND rtag_id = rtagid
15769
                      UNION
15770
                      /* Private Views collapsed */
15771
                      SELECT vi.view_id, vi.view_name,
15772
                             TO_NUMBER (NULL) AS pkg_state,
15773
                             TO_NUMBER (NULL) AS deprecated_state,
15774
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15775
                             NULL AS pkg_version, NULL AS dlocked,
15776
                             NULL AS pv_description
15777
                        FROM view_settings vs,
15778
                             view_def vd,
15779
                             views vi,
15780
                             planned rel,
15781
                             package_versions pv
15782
                       WHERE vs.view_id = vi.view_id
15783
                         AND rel.pv_id = pv.pv_id
15784
                         AND vd.pkg_id = pv.pkg_id
15785
                         AND vd.view_id = vi.view_id
15786
                         AND vi.base_view = 'N'
15787
                         AND rel.rtag_id = rtagid
15788
                         AND vs.user_id = userid
15789
                         AND vi.view_id NOT IN (
15790
                                SELECT *
15791
                                  FROM THE
15792
                                          (SELECT CAST
15793
                                                     (in_list_number
15794
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15795
                                                     )
15796
                                             FROM DUAL
15797
                                          ))
15798
                      UNION
15799
                      /* Private Views expanded */
15800
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15801
 
15802
                             --rel.pkg_state,
15803
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15804
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
15805
                             pv.pv_description
15806
                        FROM users usr,
15807
                             view_settings vs,
15808
                             view_def vd,
15809
                             views vi,
15810
                             planned rel,
15811
                             PACKAGES pkg,
15812
                             package_versions pv
15813
                       WHERE vs.user_id = usr.user_id
15814
                         AND vs.view_id = vi.view_id
15815
                         AND vd.view_id = vi.view_id
15816
                         AND pv.pkg_id = pkg.pkg_id
15817
                         AND rel.pv_id = pv.pv_id
15818
                         AND rel.rtag_id = rtagid
15819
                         AND vd.pkg_id = pkg.pkg_id
15820
                         AND vi.base_view = 'N'
15821
                         AND vi.view_id IN (
15822
                                SELECT *
15823
                                  FROM THE
15824
                                          (SELECT CAST
15825
                                                     (in_list_number
15826
                                                              (sviewidshowlist) AS relmgr_number_tab_t
15827
                                                     )
15828
                                             FROM DUAL
15829
                                          ))
15830
                         AND usr.user_id = userid) ord
15831
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15832
      END IF;
15833
   END;
15834
 
15835
/*-------------------------------------------------------------------------------------------------------*/
15836
   PROCEDURE get_view_content (
15837
      rtagid      IN       NUMBER,
15838
      viewid      IN       NUMBER,
15839
      recordset   OUT      typecur
15840
   )
15841
   IS
15842
      isbaseview   CHAR (1);
15843
   BEGIN
15844
      -- Check if the view is BASE VIEW
15845
      SELECT vi.base_view
15846
        INTO isbaseview
15847
        FROM views vi
15848
       WHERE vi.view_id = viewid;
15849
 
15850
      IF (isbaseview = 'Y')
15851
      THEN
15852
         -- Get Base view content
15853
         OPEN recordset FOR
15854
            SELECT   DECODE (rel.pkg_state,
15855
                             NULL, 0,
15856
                             rel.pkg_state
15857
                            ) AS pkg_state,
15858
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15859
                     pv.pkg_version, pv.dlocked, pv.pv_description,
15860
                     pv.build_type
15861
                FROM environment_view rel, PACKAGES pkg, package_versions pv
15862
               WHERE pv.pkg_id = pkg.pkg_id
15863
                 AND rel.pv_id = pv.pv_id
15864
                 AND rel.view_id = viewid
15865
                 AND rel.rtag_id = rtagid
15866
            ORDER BY UPPER (pkg.pkg_name);
15867
      ELSE
15868
         -- Get non base view content
15869
         OPEN recordset FOR
15870
            SELECT   DECODE (rel.pkg_state,
15871
                             NULL, 0,
15872
                             rel.pkg_state
15873
                            ) AS pkg_state,
15874
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15875
                     pv.pkg_version, pv.dlocked, pv.pv_description,
15876
                     pv.build_type
15877
                FROM environment_view rel,
15878
                     PACKAGES pkg,
15879
                     package_versions pv,
15880
                     view_def vd
15881
               WHERE pv.pkg_id = pkg.pkg_id
15882
                 AND rel.pv_id = pv.pv_id
15883
                 AND rel.rtag_id = rtagid
15884
                 AND vd.view_id = viewid
15885
                 AND vd.pkg_id = pv.pkg_id
15886
            ORDER BY UPPER (pkg.pkg_name);
15887
      END IF;
15888
   END;
15889
 
15890
/*-------------------------------------------------------------------------------------------------------*/
15891
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
15892
      RETURN NUMBER
15893
   IS
15894
      envtab             NUMBER;
15895
      returnvalue        NUMBER;
15896
      return_not_found   NUMBER := -1;
15897
   BEGIN
15898
      envtab := get_package_area (pvid, rtagid);
15899
 
15900
      IF envtab = 0
15901
      THEN
15902
         -- WORK IN PROGRESS --
15903
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
15904
      ELSIF envtab = 1
15905
      THEN
15906
         -- PENDING --
15907
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
15908
      ELSIF envtab = 2
15909
      THEN
15910
         -- RELEASED --
15911
         returnvalue := pk_release.get_package_view (pvid, rtagid);
15912
      ELSE
15913
         -- This may be a Patch not located anywhere but unlocked
15914
         returnvalue := return_not_found;
15915
      END IF;
15916
 
15917
      RETURN returnvalue;
15918
   END;
15919
 
15920
/*-------------------------------------------------------------------------------------------------------*/
15921
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
15922
   IS
15923
      viewid          NUMBER;
15924
      envtab          NUMBER;
15925
      ispatch         CHAR (1) := NULL;
15926
      buildtype       CHAR (1) := NULL;
15927
      lastversionid   NUMBER;
15928
   BEGIN
15929
      -- Check if package is patch
15930
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
15931
        INTO ispatch, buildtype, lastversionid
15932
        FROM package_versions pv
15933
       WHERE pv.pv_id = pvid;
15934
 
15935
      -- Get ViewId
15936
      viewid := get_package_view (pvid, rtagid);
15937
      -- Remove from current area
15938
      envtab := pk_environment.get_package_area (pvid, rtagid);
15939
 
15940
      -- Make sure that package was in work-in-progress or pending before makeing it release
15941
      -- Exclude patches, ripple builds
15942
      IF (envtab < 0)
15943
      THEN
15944
         -- Not found in work-in-progress or pending
15945
         IF (ispatch IS NULL) AND (buildtype = 'M')
15946
         THEN
15947
            raise_application_error (-20000,
15948
                                     'This package cannot be released here.'
15949
                                    );
15950
         END IF;
15951
      END IF;
15952
 
15953
      -- Log
15954
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
15955
 
15956
      IF envtab = 0
15957
      THEN
15958
         -- WORK IN PROGRESS --
15959
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
15960
      ELSIF envtab = 1
15961
      THEN
15962
         -- PENDING --
15963
         pk_planned.remove_package (pvid, rtagid, userid);
15964
      END IF;
15965
 
15966
      -- Change package state
15967
      pk_package.change_state (pvid, 'Y', userid);
15968
 
15969
      -- Make sure it is valid BASE VIEW
15970
      IF viewid < 1
15971
      THEN
15972
         viewid := 7;                            -- This is default base view
15973
      END IF;
15974
 
15975
      IF (ispatch IS NULL)
15976
      THEN
15977
         -- Add package to new area
15978
         pk_release.add_package (pvid, viewid, rtagid, userid);
15979
      END IF;
15980
 
15981
      -- Now do post Release Actions
15982
      pk_release.run_post_actions (pvid, rtagid);
15983
 
15984
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
15985
      DELETE FROM do_not_ripple
15986
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
15987
 
15988
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
15989
      DELETE FROM advisory_ripple
15990
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
15991
 
15992
      -- Log
15993
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
15994
   END;
15995
 
15996
/*-------------------------------------------------------------------------------------------------------*/
15997
   PROCEDURE auto_make_release (
15998
      pvid            IN   NUMBER,
15999
      rtagid          IN   NUMBER,
16000
      userid          IN   NUMBER,
16001
      vext            IN   package_versions.v_ext%TYPE,
16002
      ssv_ext         IN   package_versions.v_ext%TYPE,
16003
      clonefrompvid   IN   NUMBER
16004
   )
16005
   IS
16006
      viewid          NUMBER;
16007
      envtab          NUMBER;
16008
      ispatch         CHAR (1) := NULL;
16009
      buildtype       CHAR (1) := NULL;
16010
      lastversionid   NUMBER;
16011
   BEGIN
16012
      -- Check if package is patch
16013
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16014
        INTO ispatch, buildtype, lastversionid
16015
        FROM package_versions pv
16016
       WHERE pv.pv_id = pvid;
16017
 
16018
      IF vext <> ssv_ext
16019
      THEN
16020
         -- Get ViewId
16021
         viewid := get_package_view (clonefrompvid, rtagid);
16022
         -- Remove from current area
16023
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
16024
      ELSE
16025
         -- Get ViewId
16026
         viewid := get_package_view (pvid, rtagid);
16027
         -- Remove from current area
16028
         envtab := pk_environment.get_package_area (pvid, rtagid);
16029
      END IF;
16030
 
16031
      -- Make sure that package was in work-in-progress or pending before makeing it release
16032
      -- Exclude patches, ripple builds
16033
      IF (envtab < 0)
16034
      THEN
16035
         -- Not found in work-in-progress or pending
16036
         IF (ispatch IS NULL) AND (buildtype = 'M')
16037
         THEN
16038
            raise_application_error (-20000,
16039
                                     'This package cannot be released here.'
16040
                                    );
16041
         END IF;
16042
      END IF;
16043
 
16044
      -- Log
16045
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
16046
 
16047
      IF vext <> ssv_ext
16048
      THEN
16049
         IF envtab = 0
16050
         THEN
16051
            -- WORK IN PROGRESS --
16052
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
16053
                                                userid);
16054
         ELSIF envtab = 1
16055
         THEN
16056
            -- PENDING --
16057
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
16058
         ELSIF envtab = 2
16059
         THEN
16060
            -- RELEASED --
16061
            pk_release.remove_package (clonefrompvid, rtagid, userid);
16062
         END IF;
16063
      ELSE
16064
         IF envtab = 0
16065
         THEN
16066
            -- WORK IN PROGRESS --
16067
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
16068
         ELSIF envtab = 1
16069
         THEN
16070
            -- PENDING --
16071
            pk_planned.remove_package (pvid, rtagid, userid);
16072
         END IF;
16073
      END IF;
16074
 
16075
      -- Change package state
16076
      pk_package.change_state (pvid, 'Y', userid);
16077
 
16078
      -- Make sure it is valid BASE VIEW
16079
      IF viewid < 1
16080
      THEN
16081
         viewid := 7;                            -- This is default base view
16082
      END IF;
16083
 
16084
      IF (ispatch IS NULL)
16085
      THEN
16086
         -- Add package to new area
16087
         pk_release.add_package (pvid, viewid, rtagid, userid);
16088
      END IF;
16089
 
16090
      -- Now do post Release Actions
16091
      pk_release.run_post_actions (pvid, rtagid);
16092
      -- Now update the Dash_Board Table (DEPRECATED)
16093
      pk_rmapi.update_dash_board (rtagid);
16094
 
16095
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16096
      DELETE FROM do_not_ripple
16097
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
16098
 
16099
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16100
      DELETE FROM advisory_ripple
16101
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
16102
 
16103
      -- Log
16104
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
16105
   END;
16106
 
16107
/*-------------------------------------------------------------------------------------------------------*/
16108
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16109
   IS
16110
      viewid   NUMBER;
16111
      envtab   NUMBER;
16112
   BEGIN
16113
      -- Get ViewId
16114
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
16115
      viewid := get_package_view (pvid, rtagid);
16116
      -- Remove from current area
16117
      envtab := pk_environment.get_package_area (pvid, rtagid);
16118
      -- Log
16119
      log_action (pvid,
16120
                  'action',
16121
                  userid,
16122
                  'Start of Make Package UnRelease...'
16123
                 );
16124
 
16125
      IF envtab = 2
16126
      THEN
16127
         -- RELEASE AREA --
16128
         pk_release.remove_package (pvid, rtagid, userid);
16129
      ELSIF envtab = 1
16130
      THEN
16131
         -- PENDING --
16132
         pk_planned.remove_package (pvid, rtagid, userid);
16133
      END IF;
16134
 
16135
      -- Change package state
16136
      pk_package.change_state (pvid, 'N', userid);
16137
 
16138
      -- Make sure it is valid BASE VIEW
16139
      IF viewid < 1
16140
      THEN
16141
         viewid := 7;                            -- This is default base view
16142
      END IF;
16143
 
16144
      -- Add package to new area
16145
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16146
      -- Now do post Release Actions
16147
      pk_release.run_post_actions (pvid, rtagid);
16148
      -- Log
16149
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
16150
   END;
16151
 
16152
/*-------------------------------------------------------------------------------------------------------*/
16153
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16154
   IS
16155
      viewid      NUMBER;
16156
      ispatch     CHAR (1) := NULL;
16157
      buildtype   CHAR (1) := NULL;
16158
   BEGIN
16159
      -- Check if package is patch
16160
      SELECT pv.is_patch, pv.build_type
16161
        INTO ispatch, buildtype
16162
        FROM package_versions pv
16163
       WHERE pv.pv_id = pvid;
16164
 
16165
      -- Get ViewId
16166
      viewid := get_package_view (pvid, rtagid);
16167
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
16168
 
16169
      -- Log
16170
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
16171
 
16172
      IF (ispatch IS NULL)
16173
      THEN
16174
         -- Remove from current area
16175
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
16176
         -- Change package state
16177
         pk_package.change_state (pvid, 'P', userid);
16178
         -- Add package to new area
16179
         pk_planned.add_package (pvid, viewid, rtagid, userid);
16180
      END IF;
16181
 
16182
      -- Log
16183
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
16184
   END;
16185
 
16186
/*-------------------------------------------------------------------------------------------------------*/
16187
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16188
   IS
16189
   BEGIN
16190
      -- Log
16191
      log_action (pvid,
16192
                  'action',
16193
                  userid,
16194
                  'Start of Package Pending Approval...'
16195
                 );
16196
      -- Change package state
16197
      pk_package.change_state (pvid, 'A', userid);
16198
      -- Log
16199
      log_action (pvid, 'action', userid,
16200
                  'End of Package Pending Approval...');
16201
   END;
16202
 
16203
/*-------------------------------------------------------------------------------------------------------*/
16204
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16205
   IS
16206
      viewid   NUMBER;
16207
   BEGIN
16208
      -- Get ViewId
16209
      viewid := get_package_view (pvid, rtagid);
16210
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
16211
 
16212
      -- Log
16213
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
16214
      -- Remove from current area
16215
      pk_planned.remove_package (pvid, rtagid, userid);
16216
      -- Change package state
16217
      pk_package.change_state (pvid, 'R', userid);
16218
      -- Add package to new area
16219
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16220
      -- Log
16221
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
16222
   END;
16223
 
16224
/*-------------------------------------------------------------------------------------------------------*/
16225
   PROCEDURE change_package_view (
16226
      pvid        IN   NUMBER,
16227
      rtagid      IN   NUMBER,
16228
      newviewid   IN   NUMBER
16229
   )
16230
   IS
16231
      envtab   NUMBER;
16232
   BEGIN
16233
      envtab := pk_environment.get_package_area (pvid, rtagid);
16234
 
16235
      IF envtab = 0
16236
      THEN
16237
         -- WORK IN PROGRESS --
16238
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
16239
      ELSIF envtab = 1
16240
      THEN
16241
         -- PENDING --
16242
         pk_planned.change_package_view (pvid, rtagid, newviewid);
16243
      ELSIF envtab = 2
16244
      THEN
16245
         -- RELEASED --
16246
         pk_release.change_package_view (pvid, rtagid, newviewid);
16247
      END IF;
16248
   END;
16249
 
16250
/*-------------------------------------------------------------------------------------------------------*/
16251
   PROCEDURE find_package (
16252
      skeyword      IN       VARCHAR2,
16253
      nrtagid       IN       NUMBER,
16254
      nsearcharea   IN       NUMBER,
16255
      recordset     OUT      typecur
16256
   )
16257
   IS
16258
   BEGIN
16259
      IF nsearcharea = 0
16260
      THEN
16261
         /* Search Work In Progress */
16262
         OPEN recordset FOR
16263
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16264
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16265
                     pv.modified_stamp, usr.full_name, usr.user_email
16266
                FROM views vi,
16267
                     work_in_progress rc,
16268
                     PACKAGES pkg,
16269
                     package_versions pv,
16270
                     users usr
16271
               WHERE rc.view_id = vi.view_id
16272
                 AND rc.pv_id = pv.pv_id
16273
                 AND pkg.pkg_id = pv.pkg_id
16274
                 AND pv.modifier_id = usr.user_id
16275
                 AND rc.rtag_id = nrtagid
16276
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16277
            ORDER BY UPPER (pkg.pkg_name);
16278
      ELSIF nsearcharea = 1
16279
      THEN
16280
         /* Search Pending */
16281
         OPEN recordset FOR
16282
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16283
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16284
                     pv.modified_stamp, usr.full_name, usr.user_email
16285
                FROM views vi,
16286
                     planned rc,
16287
                     PACKAGES pkg,
16288
                     package_versions pv,
16289
                     users usr
16290
               WHERE rc.view_id = vi.view_id
16291
                 AND rc.pv_id = pv.pv_id
16292
                 AND pkg.pkg_id = pv.pkg_id
16293
                 AND pv.modifier_id = usr.user_id
16294
                 AND rc.rtag_id = nrtagid
16295
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16296
            ORDER BY UPPER (pkg.pkg_name);
16297
      ELSIF nsearcharea = 2
16298
      THEN
16299
         /* Search Released */
16300
         OPEN recordset FOR
16301
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16302
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16303
                     pv.modified_stamp, usr.full_name, usr.user_email
16304
                FROM views vi,
16305
                     release_content rc,
16306
                     PACKAGES pkg,
16307
                     package_versions pv,
16308
                     users usr
16309
               WHERE rc.base_view_id = vi.view_id
16310
                 AND rc.pv_id = pv.pv_id
16311
                 AND pkg.pkg_id = pv.pkg_id
16312
                 AND pv.modifier_id = usr.user_id
16313
                 AND rc.rtag_id = nrtagid
16314
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16315
            ORDER BY UPPER (pkg.pkg_name);
16316
      ELSIF nsearcharea = 3
16317
      THEN
16318
         /* Search ALL */
16319
         OPEN recordset FOR
16320
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
16321
                     pv.pv_id, pv.pkg_version, pv.comments,
16322
                     pv.modified_stamp, usr.full_name, usr.user_email
16323
                FROM views vi,
16324
                     environment_view rc,
16325
                     PACKAGES pkg,
16326
                     package_versions pv,
16327
                     users usr
16328
               WHERE rc.view_id = vi.view_id
16329
                 AND rc.pv_id = pv.pv_id
16330
                 AND pkg.pkg_id = pv.pkg_id
16331
                 AND pv.modifier_id = usr.user_id
16332
                 AND rc.rtag_id = nrtagid
16333
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16334
            ORDER BY UPPER (pkg.pkg_name);
16335
      END IF;
16336
   END;
16337
 
16338
/*-------------------------------------------------------------------------------------------------------*/
16339
   PROCEDURE find_file (
16340
      skeyword      IN       VARCHAR2,
16341
      nrtagid       IN       NUMBER,
16342
      nsearcharea   IN       NUMBER,
16343
      npagesize     IN       NUMBER,
16344
      recordset     OUT      typecur
16345
   )
16346
   IS
16347
   BEGIN
16348
      IF nsearcharea = 0
16349
      THEN
16350
         /* Search Work In Progress */
16351
         OPEN recordset FOR
16352
            SELECT   qry.*
16353
                FROM (
16354
                      /* File search on Packages */
16355
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16356
                             pv.pv_id, pv.pkg_version, art.crc_cksum
16357
                        FROM work_in_progress rc,
16358
                             PACKAGES pkg,
16359
                             package_versions pv,
16360
                             release_components art
16361
                       WHERE rc.pv_id = art.pv_id
16362
                         AND pv.pkg_id = pkg.pkg_id
16363
                         AND rc.pv_id = pv.pv_id
16364
                         AND rc.rtag_id = nrtagid
16365
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
16366
                      UNION ALL
16367
                      /* File search on Products */
16368
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16369
                             pv.pv_id, pv.pkg_version, art.crc_cksum
16370
                        FROM work_in_progress rc,
16371
                             PACKAGES pkg,
16372
                             package_versions pv,
16373
                             product_components art
16374
                       WHERE rc.pv_id = art.pv_id
16375
                         AND pv.pkg_id = pkg.pkg_id
16376
                         AND rc.pv_id = pv.pv_id
16377
                         AND rc.rtag_id = nrtagid
16378
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16379
               WHERE ROWNUM <= npagesize
16380
            ORDER BY UPPER (qry.pkg_name);
16381
      ELSIF nsearcharea = 1
16382
      THEN
16383
         /* Search Pending */
16384
         OPEN recordset FOR
16385
            SELECT   qry.*
16386
                FROM (
16387
                      /* File search on Packages */
16388
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16389
                             pv.pv_id, pv.pkg_version, art.crc_cksum
16390
                        FROM planned rc,
16391
                             PACKAGES pkg,
16392
                             package_versions pv,
16393
                             release_components art
16394
                       WHERE rc.pv_id = art.pv_id
16395
                         AND pv.pkg_id = pkg.pkg_id
16396
                         AND rc.pv_id = pv.pv_id
16397
                         AND rc.rtag_id = nrtagid
16398
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
16399
                      UNION ALL
16400
                      /* File search on Products */
16401
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16402
                             pv.pv_id, pv.pkg_version, art.crc_cksum
16403
                        FROM planned rc,
16404
                             PACKAGES pkg,
16405
                             package_versions pv,
16406
                             product_components art
16407
                       WHERE rc.pv_id = art.pv_id
16408
                         AND pv.pkg_id = pkg.pkg_id
16409
                         AND rc.pv_id = pv.pv_id
16410
                         AND rc.rtag_id = nrtagid
16411
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16412
               WHERE ROWNUM <= npagesize
16413
            ORDER BY UPPER (qry.pkg_name);
16414
      ELSIF nsearcharea = 2
16415
      THEN
16416
         /* Search Released */
16417
         OPEN recordset FOR
16418
            SELECT   qry.*
16419
                FROM (
16420
                      /* File search on Packages */
16421
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16422
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
16423
                             NULL AS patch_id
16424
                        FROM release_content rc,
16425
                             PACKAGES pkg,
16426
                             package_versions pv,
16427
                             release_components art
16428
                       WHERE rc.pv_id = art.pv_id
16429
                         AND pv.pkg_id = pkg.pkg_id
16430
                         AND rc.pv_id = pv.pv_id
16431
                         AND rc.rtag_id = nrtagid
16432
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
16433
                      UNION ALL
16434
                      /* File search on Products */
16435
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16436
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
16437
                             NULL AS patch_id
16438
                        FROM release_content rc,
16439
                             PACKAGES pkg,
16440
                             package_versions pv,
16441
                             product_components art
16442
                       WHERE rc.pv_id = art.pv_id
16443
                         AND pv.pkg_id = pkg.pkg_id
16444
                         AND rc.pv_id = pv.pv_id
16445
                         AND rc.rtag_id = nrtagid
16446
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
16447
                      UNION ALL
16448
                      /* File search on Patches */
16449
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16450
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
16451
                             DECODE (art.file_path,
16452
                                     NULL, pp.patch_id,
16453
                                     NULL
16454
                                    ) AS patch_id
16455
                        FROM release_content rc,
16456
                             PACKAGES pkg,
16457
                             package_versions pv,
16458
                             release_components art,
16459
                             package_patches pp
16460
                       WHERE pv.pv_id = pp.pv_id
16461
                         AND pv.pkg_id = pkg.pkg_id
16462
                         AND rc.rtag_id = nrtagid
16463
                         AND art.pv_id = pp.patch_id
16464
                         AND rc.pv_id = pp.pv_id
16465
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16466
               WHERE ROWNUM <= npagesize
16467
            ORDER BY UPPER (qry.pkg_name);
16468
      ELSIF nsearcharea = 3
16469
      THEN
16470
         /* Search ALL */
16471
         OPEN recordset FOR
16472
            SELECT   qry.*
16473
                FROM (
16474
                      /* File search on Packages */
16475
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16476
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
16477
                             NULL AS patch_id
16478
                        FROM environment_view 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
                             NULL AS patch_id
16492
                        FROM environment_view rc,
16493
                             PACKAGES pkg,
16494
                             package_versions pv,
16495
                             product_components art
16496
                       WHERE rc.pv_id = art.pv_id
16497
                         AND pv.pkg_id = pkg.pkg_id
16498
                         AND rc.pv_id = pv.pv_id
16499
                         AND rc.rtag_id = nrtagid
16500
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
16501
                      UNION ALL
16502
                      /* File search on Patches */
16503
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
16504
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
16505
                             DECODE (art.file_path,
16506
                                     NULL, pp.patch_id,
16507
                                     NULL
16508
                                    ) AS patch_id
16509
                        FROM release_content rc,
16510
                             PACKAGES pkg,
16511
                             package_versions pv,
16512
                             release_components art,
16513
                             package_patches pp
16514
                       WHERE pv.pv_id = pp.pv_id
16515
                         AND pv.pkg_id = pkg.pkg_id
16516
                         AND rc.rtag_id = nrtagid
16517
                         AND art.pv_id = pp.patch_id
16518
                         AND rc.pv_id = pp.pv_id
16519
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16520
               WHERE ROWNUM <= npagesize
16521
            ORDER BY UPPER (qry.pkg_name);
16522
      END IF;
16523
   END;
16524
 
16525
/*-------------------------------------------------------------------------------------------------------*/
16526
   PROCEDURE get_prodrelease_items (
16527
      rtagid             IN       NUMBER,
16528
      ntruerecordcount   OUT      NUMBER,
16529
      recordset          OUT      typecur
16530
   )
16531
   IS
16532
   BEGIN
16533
      -- Get true record count n the number of integration products
16534
      SELECT COUNT (rc.pv_id)
16535
        INTO ntruerecordcount
16536
        FROM release_content rc
16537
       WHERE rc.rtag_id = rtagid;
16538
 
16539
      OPEN recordset FOR
16540
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
16541
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16542
                  pv.pkg_version, pv.dlocked, pv.pv_description
16543
             FROM release_content rel,
16544
                  PACKAGES pkg,
16545
                  package_versions pv,
16546
                  views vi
16547
            WHERE pv.pkg_id = pkg.pkg_id
16548
              AND rel.pv_id = pv.pv_id
16549
              AND rel.base_view_id = vi.view_id
16550
              AND pv.is_deployable = 'Y'
16551
              AND rtag_id = rtagid
16552
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16553
                                              FROM deployment_manager.os_contents)
16554
              AND rel.product_state IS NULL
16555
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
16556
   END;
16557
 
16558
/*-------------------------------------------------------------------------------------------------------*/
16559
   PROCEDURE get_integration_items (
16560
      rtagid             IN       NUMBER,
16561
      ntruerecordcount   OUT      NUMBER,
16562
      recordset          OUT      typecur
16563
   )
16564
   IS
16565
   BEGIN
16566
      -- Get true record count n the number of integration products
16567
      SELECT COUNT (rc.pv_id)
16568
        INTO ntruerecordcount
16569
        FROM release_content rc
16570
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
16571
 
16572
      OPEN recordset FOR
16573
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16574
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16575
                  pv.pkg_version, pv.dlocked, pv.pv_description
16576
             FROM release_content rel,
16577
                  PACKAGES pkg,
16578
                  package_versions pv,
16579
                  views vi
16580
            WHERE pv.pkg_id = pkg.pkg_id
16581
              AND rel.pv_id = pv.pv_id
16582
              AND rel.base_view_id = vi.view_id
16583
              AND pv.is_deployable = 'Y'
16584
              AND rtag_id = rtagid
16585
              AND rel.product_state IN (1, 5)
16586
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
16587
   END;
16588
 
16589
/*-------------------------------------------------------------------------------------------------------*/
16590
   PROCEDURE get_test_items (
16591
      rtagid             IN       NUMBER,
16592
      ntruerecordcount   OUT      NUMBER,
16593
      recordset          OUT      typecur
16594
   )
16595
   IS
16596
   BEGIN
16597
      -- Get true record count n the number of test products
16598
      SELECT COUNT (rc.pv_id)
16599
        INTO ntruerecordcount
16600
        FROM release_content rc
16601
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
16602
 
16603
      OPEN recordset FOR
16604
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16605
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16606
                  pv.pkg_version, pv.dlocked, pv.pv_description
16607
             FROM release_content rel,
16608
                  PACKAGES pkg,
16609
                  package_versions pv,
16610
                  views vi
16611
            WHERE pv.pkg_id = pkg.pkg_id
16612
              AND rel.pv_id = pv.pv_id
16613
              AND rel.base_view_id = vi.view_id
16614
              AND pv.is_deployable = 'Y'
16615
              AND rtag_id = rtagid
16616
              AND rel.product_state = 2
16617
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
16618
   END;
16619
 
16620
/*-------------------------------------------------------------------------------------------------------*/
16621
   PROCEDURE get_deploy_items (
16622
      rtagid             IN       NUMBER,
16623
      ntruerecordcount   OUT      NUMBER,
16624
      recordset          OUT      typecur
16625
   )
16626
   IS
16627
   BEGIN
16628
      -- Get true record count n the number of deploy products
16629
      SELECT COUNT (rc.pv_id)
16630
        INTO ntruerecordcount
16631
        FROM release_content rc
16632
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
16633
 
16634
      OPEN recordset FOR
16635
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16636
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16637
                  pv.pkg_version, pv.dlocked, pv.pv_description
16638
             FROM release_content rel,
16639
                  PACKAGES pkg,
16640
                  package_versions pv,
16641
                  views vi
16642
            WHERE pv.pkg_id = pkg.pkg_id
16643
              AND rel.pv_id = pv.pv_id
16644
              AND rel.base_view_id = vi.view_id
16645
              AND pv.is_deployable = 'Y'
16646
              AND rtag_id = rtagid
16647
              AND rel.product_state IN (3, 5)
16648
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16649
                                              FROM deployment_manager.os_contents)
16650
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
16651
   END;
16652
 
16653
/*-------------------------------------------------------------------------------------------------------*/
16654
   PROCEDURE get_reject_items (
16655
      rtagid             IN       NUMBER,
16656
      ntruerecordcount   OUT      NUMBER,
16657
      recordset          OUT      typecur
16658
   )
16659
   IS
16660
   BEGIN
16661
      -- Get true record count n the number of reject products
16662
      SELECT COUNT (rc.pv_id)
16663
        INTO ntruerecordcount
16664
        FROM release_content rc
16665
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
16666
 
16667
      OPEN recordset FOR
16668
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16669
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16670
                  pv.pkg_version, pv.dlocked, pv.pv_description
16671
             FROM release_content rel,
16672
                  PACKAGES pkg,
16673
                  package_versions pv,
16674
                  views vi
16675
            WHERE pv.pkg_id = pkg.pkg_id
16676
              AND rel.pv_id = pv.pv_id
16677
              AND rel.base_view_id = vi.view_id
16678
              AND pv.is_deployable = 'Y'
16679
              AND rtag_id = rtagid
16680
              AND rel.product_state = 4
16681
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
16682
   END;
16683
/*-------------------------------------------------------------------------------------------------------*/
16684
END pk_environment;
16685
/
16686
 
16687
CREATE OR REPLACE PACKAGE BODY PK_WORK_IN_PROGRESS IS
16688
 
16689
/*
16690
------------------------------
16691
||  Last Modified:  S.Vukovic
16692
||  Modified Date:  2/May/2005
16693
||  Body Version:   1.0
16694
------------------------------
16695
*/
16696
 
16697
 
16698
/*-------------------------------------------------------------------------------------------------------*/
16699
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16700
 
16701
	oldPvId NUMBER;
16702
	ReleaseLocation VARCHAR2(4000);
16703
	sLocation VARCHAR2(4000) := NULL;
16704
 
16705
 
16706
BEGIN
16707
	/*--------------- Business Rules Here -------------------*/
16708
	/*-------------------------------------------------------*/
16709
 
16710
	BEGIN
16711
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
16712
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
16713
		  FROM WORK_IN_PROGRESS wip,
16714
		  	   RELEASE_TAGS rt,
16715
			   PROJECTS proj
16716
		 WHERE wip.PV_ID = newPvId
16717
		   AND wip.RTAG_ID = rt.RTAG_ID
16718
		   AND rt.OFFICIAL != 'Y'
16719
		   AND rt.PROJ_ID = proj.PROJ_ID;
16720
 
16721
		EXCEPTION
16722
	    	WHEN NO_DATA_FOUND THEN
16723
	       		sLocation := NULL;
16724
 
16725
	END;	   	   
16726
 
16727
 
16728
 
16729
	IF (sLocation IS NULL)  THEN
16730
 
16731
		-- Add to "Work in progress"
16732
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
16733
		VALUES( RtagId, newPvId, ViewId );
16734
 
16735
 
16736
	    /* LOG ACTION */
16737
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16738
		  FROM PROJECTS proj,
16739
		  	   RELEASE_TAGS rt
16740
		 WHERE rt.PROJ_ID = proj.PROJ_ID
16741
		   AND rt.RTAG_ID = RtagId;
16742
 
16743
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16744
 
16745
	ELSE
16746
 
16747
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
16748
 
16749
	END IF;
16750
 
16751
END;
16752
/*-------------------------------------------------------------------------------------------------------*/
16753
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16754
 
16755
	ReleaseLocation VARCHAR2(4000);
16756
 
16757
BEGIN
16758
 
16759
	/*--------------- Business Rules Here -------------------*/
16760
	/*-------------------------------------------------------*/
16761
 
16762
 
16763
	-- Get release location for logging pusposes
16764
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16765
	  FROM PROJECTS proj,
16766
	  	   RELEASE_TAGS rt
16767
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16768
	   AND rt.RTAG_ID = RtagId;
16769
 
16770
 
16771
	-- Delete from Work In Progress
16772
	DELETE
16773
	  FROM WORK_IN_PROGRESS wip
16774
	 WHERE wip.RTAG_ID = RtagId
16775
	   AND wip.PV_ID = PvId;
16776
 
16777
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
16778
 
16779
 
16780
 
16781
 
16782
END;
16783
/*-------------------------------------------------------------------------------------------------------*/
16784
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
16785
 
16786
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16787
	ReleaseLocation VARCHAR2(4000);
16788
	PvId NUMBER;
16789
 
16790
BEGIN
16791
 
16792
	/*--------------- Business Rules Here -------------------*/
16793
	IF (PvIdList IS NULL)
16794
	THEN
16795
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16796
	END IF;
16797
	/*-------------------------------------------------------*/
16798
 
16799
 
16800
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
16801
 
16802
 
16803
	-- Get release location for logging pusposes
16804
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16805
	  FROM PROJECTS proj,
16806
	  	   RELEASE_TAGS rt
16807
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16808
	   AND rt.RTAG_ID = RtagId;
16809
 
16810
 
16811
	FOR i IN 1..nIdCollector.COUNT
16812
	LOOP
16813
		PvId := nIdCollector(i);
16814
 
16815
		-- Delete from Work In Progress
16816
		DELETE
16817
		  FROM WORK_IN_PROGRESS wip
16818
		 WHERE wip.RTAG_ID = RtagId
16819
		   AND wip.PV_ID = PvId;
16820
 
16821
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16822
 
16823
	END LOOP;
16824
 
16825
 
16826
END;
16827
/*-------------------------------------------------------------------------------------------------------*/
16828
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
16829
 
16830
	ReturnValue NUMBER;
16831
 
16832
BEGIN
16833
	SELECT wip.VIEW_ID INTO ReturnValue
16834
	  FROM WORK_IN_PROGRESS wip
16835
	 WHERE wip.RTAG_ID = RtagId
16836
	   AND wip.PV_ID = PvId;
16837
 
16838
	RETURN ReturnValue;
16839
END;
16840
/*-------------------------------------------------------------------------------------------------------*/
16841
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
16842
 
16843
	IsBaseView CHAR(1);
16844
 
16845
BEGIN
16846
 
16847
	-- Check if the view is BASE VIEW
16848
	SELECT vi.BASE_VIEW INTO IsBaseView
16849
	  FROM VIEWS vi
16850
	 WHERE vi.VIEW_ID = ViewId;
16851
 
16852
	IF (IsBaseView = 'Y') THEN 
16853
		-- Get Base view content
16854
		OPEN RecordSet FOR
16855
		SELECT 0 AS PKG_STATE,
16856
			   NULL AS DEPRECATED_STATE,
16857
			   pv.pv_id, 
16858
			   pkg.pkg_name, 
16859
			   pv.pkg_version, 
16860
			   pv.dlocked, 
16861
			   pv.pv_description,
16862
			   pv.BUILD_TYPE
16863
		  FROM WORK_IN_PROGRESS rel,
16864
		       packages pkg,
16865
		       package_versions pv
16866
		 WHERE pv.pkg_id = pkg.pkg_id
16867
		   AND rel.pv_id = pv.pv_id
16868
		   AND rel.VIEW_ID = ViewId
16869
		   AND rel.RTAG_ID = RtagId
16870
		 ORDER BY UPPER(pkg.PKG_NAME);
16871
 
16872
 
16873
	ELSE	 
16874
 
16875
	 	-- Get non base view content
16876
		OPEN RecordSet FOR
16877
		SELECT 0 AS PKG_STATE,
16878
			   NULL AS DEPRECATED_STATE,
16879
			   pv.pv_id, 
16880
			   pkg.pkg_name, 
16881
			   pv.pkg_version, 
16882
			   pv.dlocked, 
16883
			   pv.pv_description,
16884
			   pv.BUILD_TYPE
16885
		  FROM WORK_IN_PROGRESS rel,
16886
		       packages pkg,
16887
		       package_versions pv,
16888
			   VIEW_DEF vd
16889
		 WHERE pv.pkg_id = pkg.pkg_id
16890
		   AND rel.pv_id = pv.pv_id
16891
		   AND vd.VIEW_ID = ViewId
16892
		   AND vd.PKG_ID = pv.PKG_ID
16893
		   AND rel.RTAG_ID = RtagId
16894
		 ORDER BY UPPER(pkg.PKG_NAME);
16895
 
16896
 
16897
	END IF;	 	
16898
 
16899
 
16900
END;
16901
/*-------------------------------------------------------------------------------------------------------*/
16902
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
16903
 
16904
BEGIN
16905
 
16906
	UPDATE WORK_IN_PROGRESS wip SET
16907
	wip.VIEW_ID = NewViewId
16908
	WHERE wip.PV_ID = PvId
16909
	  AND wip.RTAG_ID = RtagId;
16910
 
16911
END;
16912
/*-------------------------------------------------------------------------------------------------------*/
16913
END PK_WORK_IN_PROGRESS;
16914
/
16915
 
16916
CREATE OR REPLACE PACKAGE BODY pk_package_Test
16917
IS
16918
/*
16919
------------------------------
16920
||  Last Modified:  R. Solanki
16921
||  Modified Date:  09/03/2006
16922
||  Body Version:   1.7
16923
------------------------------
16924
*/
16925
 
16926
   /*-------------------------------------------------------------------------------------------------------*/
16927
   PROCEDURE new_version (
16928
      nlastpvid                   IN       NUMBER,
16929
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
16930
      cbuildtype                  IN       CHAR,
16931
      nsettopvid                  IN       NUMBER DEFAULT NULL,
16932
      nrtagid                     IN       NUMBER,
16933
      nuserid                     IN       NUMBER,
16934
      enumissues_state_imported   IN       NUMBER,
16935
      returnpvid                  OUT      NUMBER
16936
   )
16937
   IS
16938
      origpkg_id                   package_versions.pkg_id%TYPE;
16939
      origdlocked                  package_versions.dlocked%TYPE;
16940
      ssv_mm                       package_versions.v_mm%TYPE;
16941
      ssv_nmm                      package_versions.v_nmm%TYPE;
16942
      ssv_ext                      package_versions.v_ext%TYPE;
16943
      spackageversion              VARCHAR2 (4000);
16944
      nissuestypes                 NUMBER;
16945
      nviewid                      NUMBER;
16946
      reccount                     NUMBER;
16947
      isreleased                   package_versions.dlocked%TYPE       := 'N';
16948
      slabel                       VARCHAR2 (4000)                    := NULL;
16949
 
16950
      CURSOR package_versions_cur
16951
      IS
16952
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
16953
           FROM package_versions pv
16954
          WHERE pv.pkg_version = snewpkgversion
16955
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
16956
                                         FROM package_versions origpv
16957
                                        WHERE origpv.pv_id = nlastpvid);
16958
 
16959
      package_versions_rec         package_versions_cur%ROWTYPE;
16960
 
16961
      CURSOR clone_package_versions_cur
16962
      IS
16963
         SELECT DISTINCT pkg_id, dlocked
16964
                    FROM package_versions
16965
                   WHERE pv_id = nlastpvid;
16966
 
16967
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
16968
   BEGIN
16969
      spackageversion := snewpkgversion;
16970
 
16971
      IF nsettopvid IS NULL
16972
      THEN
16973
         -- SetToPv_id is not supplied, hence proceed.
16974
 
16975
         /* ---------------------------------------------------- */
16976
/* Find id package_version exists                       */
16977
/* ---------------------------------------------------- */
16978
         OPEN package_versions_cur;
16979
 
16980
         FETCH package_versions_cur
16981
          INTO package_versions_rec;
16982
 
16983
         IF package_versions_cur%NOTFOUND
16984
         THEN
16985
            ---  Create brand new package ---
16986
            SELECT seq_pv_id.NEXTVAL
16987
              INTO returnpvid
16988
              FROM DUAL;
16989
 
16990
            -- Split Version to get extention + other
16991
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
16992
 
16993
            -- Get previous package to clone from
16994
            OPEN clone_package_versions_cur;
16995
 
16996
            FETCH clone_package_versions_cur
16997
             INTO clone_package_versions_rec;
16998
 
16999
            origpkg_id := clone_package_versions_rec.pkg_id;
17000
            origdlocked := clone_package_versions_rec.dlocked;
17001
 
17002
            CLOSE clone_package_versions_cur;
17003
 
17004
            -- Automated built config
17005
            IF (cbuildtype = 'A')
17006
            THEN
17007
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
17008
                                    -- Make sure that version is still unique
17009
            END IF;
17010
 
17011
            -- Clone Package Version Details --
17012
            INSERT INTO package_versions
17013
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
17014
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
17015
                         v_ext, src_path, pv_description, pv_overview,
17016
                         last_pv_id, owner_id, is_deployable,
17017
                         is_build_env_required, build_type, bs_id, is_autobuildable)
17018
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
17019
                      spackageversion AS pkg_version, 'N' AS dlocked,
17020
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
17021
                      ora_sysdatetime AS modified_stamp,
17022
                      nuserid AS modifier_id, ssv_mm AS v_mm,
17023
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
17024
                      pv.pv_description, pv.pv_overview,
17025
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
17026
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
17027
                 FROM package_versions pv
17028
                WHERE pv.pv_id = nlastpvid;
17029
 
17030
            -- Set Issues Type for cloning ---
17031
            IF origdlocked = 'Y'
17032
            THEN
17033
               nissuestypes := enumissues_state_imported;
17034
            ELSE
17035
               nissuestypes := NULL;
17036
            END IF;
17037
 
17038
            -- Update Label for automated built
17039
            IF (cbuildtype = 'A')
17040
            THEN
17041
               slabel := get_automated_label (returnpvid);
17042
 
17043
               UPDATE package_versions pv
17044
                  SET pv.pkg_label = slabel
17045
                WHERE pv.pv_id = returnpvid;
17046
            END IF;
17047
 
17048
            basic_clone (nlastpvid,
17049
                         returnpvid,
17050
                         nrtagid,
17051
                         nuserid,
17052
                         origpkg_id,
17053
                         nissuestypes
17054
                        );
17055
         ELSE
17056
            --- Package already exists, hence reuse ---
17057
            returnpvid := package_versions_rec.pv_id;
17058
            isreleased := package_versions_rec.dlocked;
17059
         END IF;
17060
 
17061
         CLOSE package_versions_cur;
17062
      ELSE
17063
         returnpvid := nsettopvid;
17064
      END IF;
17065
   END new_version;
17066
 
17067
/*-------------------------------------------------------------------------------------------------------*/
17068
   PROCEDURE change_state (
17069
      pvid       IN   NUMBER,
17070
      newstate   IN   package_versions.dlocked%TYPE,
17071
      userid     IN   NUMBER
17072
   )
17073
   IS
17074
   BEGIN
17075
      -- Set package in Released mode
17076
      UPDATE package_versions pv
17077
         SET pv.dlocked = newstate,
17078
             pv.modified_stamp = ora_sysdatetime,
17079
             pv.modifier_id = userid
17080
       WHERE pv.pv_id = pvid;
17081
 
17082
      -- Log action --
17083
      IF newstate = 'Y'
17084
      THEN
17085
         -- RELEASED --
17086
         log_action (pvid,
17087
                     'makeofficial',
17088
                     userid,
17089
                     'Package state change to: Released'
17090
                    );
17091
      ELSIF newstate = 'N'
17092
      THEN
17093
         -- UNLOCKED --
17094
         log_action (pvid,
17095
                     'makeunofficial',
17096
                     userid,
17097
                     'Package state change to: Ulocked'
17098
                    );
17099
      ELSIF newstate = 'P'
17100
      THEN
17101
         -- PENDING APPROVAL --
17102
         log_action (pvid,
17103
                     'add_to_planned',
17104
                     userid,
17105
                     'Package state change to: Pending Approval'
17106
                    );
17107
      ELSIF newstate = 'R'
17108
      THEN
17109
         -- REJECTED --
17110
         log_action (pvid,
17111
                     'reject_package',
17112
                     userid,
17113
                     'Package state change to: Rejected'
17114
                    );
17115
      ELSIF newstate = 'A'
17116
      THEN
17117
         -- APPROVED --
17118
         log_action (pvid,
17119
                     'approve_package',
17120
                     userid,
17121
                     'Package state change to: Approved'
17122
                    );
17123
      END IF;
17124
   END;
17125
 
17126
/*-------------------------------------------------------------------------------------------------------*/
17127
   PROCEDURE destroy_package (
17128
      pvid               IN       NUMBER,
17129
      overridewarnings   IN       CHAR DEFAULT 'N',
17130
      problemstring      OUT      VARCHAR2
17131
   )
17132
   IS
17133
      LOCKED     CHAR;
17134
      pkgid      NUMBER;
17135
      ROWCOUNT   NUMBER;
17136
   BEGIN
17137
      /*
17138
      || This will destroy all package details from database.
17139
      || It will only be used to remove unwanted work in progress packages,
17140
      || or mestaken versions
17141
      */
17142
 
17143
      /*--------------- Business Rules Here -------------------*/
17144
      problemstring := NULL;
17145
 
17146
      IF overridewarnings = 'N'
17147
      THEN
17148
         -- Package must not be official
17149
         SELECT pv.dlocked
17150
           INTO LOCKED
17151
           FROM package_versions pv
17152
          WHERE pv.pv_id = pvid;
17153
 
17154
         IF LOCKED = 'Y'
17155
         THEN
17156
            problemstring :=
17157
                  problemstring
17158
               || '- Package is locked and released.'
17159
               || UTL_TCP.crlf;
17160
         END IF;
17161
 
17162
         -- Cannot remove if used in BOMs
17163
         SELECT COUNT (osc.prod_id)
17164
           INTO ROWCOUNT
17165
           FROM deployment_manager.os_contents osc
17166
          WHERE osc.prod_id = pvid;
17167
 
17168
         IF ROWCOUNT > 0
17169
         THEN
17170
            problemstring :=
17171
                  problemstring
17172
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
17173
               || UTL_TCP.crlf;
17174
         END IF;
17175
 
17176
         -- Cannot remove if Referenced as build dependency
17177
         SELECT COUNT (dep.pv_id)
17178
           INTO ROWCOUNT
17179
           FROM package_dependencies dep
17180
          WHERE dep.dpv_id = pvid;
17181
 
17182
         IF ROWCOUNT > 0
17183
         THEN
17184
            problemstring :=
17185
                  problemstring
17186
               || '- Package is referenced by other package as build dependency.'
17187
               || UTL_TCP.crlf;
17188
         END IF;
17189
 
17190
         -- Cannot remove if Referenced as runtime dependency
17191
         SELECT COUNT (rd.pv_id)
17192
           INTO ROWCOUNT
17193
           FROM runtime_dependencies rd
17194
          WHERE rd.rtd_id = pvid;
17195
 
17196
         IF ROWCOUNT > 0
17197
         THEN
17198
            problemstring :=
17199
                  problemstring
17200
               || '- Package is referenced by other package as runtime dependency.'
17201
               || UTL_TCP.crlf;
17202
         END IF;
17203
 
17204
         -- Cannot remove if Referenced as patch
17205
         SELECT COUNT (pp.pv_id)
17206
           INTO ROWCOUNT
17207
           FROM package_patches pp
17208
          WHERE pp.patch_id = pvid;
17209
 
17210
         IF ROWCOUNT > 0
17211
         THEN
17212
            problemstring :=
17213
                  problemstring
17214
               || '- Package is used as patch by other package.'
17215
               || UTL_TCP.crlf;
17216
         END IF;
17217
      END IF;
17218
 
17219
/*-------------------------------------------------------*/
17220
      IF (problemstring IS NULL)
17221
      THEN
17222
         --- Remove From Work in Progress
17223
         DELETE FROM work_in_progress wip
17224
               WHERE wip.pv_id = pvid;
17225
 
17226
         --- Remove From Pending
17227
         DELETE FROM planned pl
17228
               WHERE pl.pv_id = pvid;
17229
 
17230
         --- Remove From Released area
17231
         DELETE FROM release_content rc
17232
               WHERE rc.pv_id = pvid;
17233
 
17234
         ---Remove From Package Processes
17235
         DELETE FROM package_processes pp
17236
               WHERE pp.pv_id = pvid;
17237
 
17238
         --- Remove Dependencies
17239
         DELETE FROM package_dependencies dep
17240
               WHERE dep.pv_id = pvid;
17241
 
17242
         DELETE FROM package_dependencies dep
17243
               WHERE dep.dpv_id = pvid;
17244
 
17245
         --- Remove Runtime dependencies
17246
         DELETE FROM runtime_dependencies rtd
17247
               WHERE rtd.pv_id = pvid;
17248
 
17249
         DELETE FROM runtime_dependencies rtd
17250
               WHERE rtd.rtd_id = pvid;
17251
 
17252
         --- Remove components
17253
         DELETE FROM product_components pc
17254
               WHERE pc.pv_id = pvid;
17255
 
17256
         DELETE FROM release_components rc
17257
               WHERE rc.pv_id = pvid;
17258
 
17259
         --- Remove From Notification History
17260
         DELETE FROM notification_history nh
17261
               WHERE nh.pv_id = pvid;
17262
 
17263
         --- Remove From Ignore Warnings
17264
         DELETE FROM ignore_warnings iw
17265
               WHERE iw.pv_id = pvid;
17266
 
17267
         --- Remove From Additional Notes
17268
         DELETE FROM additional_notes an
17269
               WHERE an.pv_id = pvid;
17270
 
17271
         --- Remove From CQ Issues
17272
         DELETE FROM cq_issues cq
17273
               WHERE cq.pv_id = pvid;
17274
 
17275
         --- Remove from Package Patches
17276
         DELETE FROM package_patches pp
17277
               WHERE pp.pv_id = pvid;
17278
 
17279
         DELETE FROM package_patches pp
17280
               WHERE pp.patch_id = pvid;
17281
 
17282
         --- Remove From Package Documents
17283
         DELETE FROM package_documents pd
17284
               WHERE pd.pv_id = pvid;
17285
 
17286
         --- Remove from Code Review
17287
         DELETE FROM code_reviews cr
17288
               WHERE cr.pv_id = pvid;
17289
 
17290
         --- Remove from Unit Tests
17291
         DELETE FROM unit_tests ut
17292
               WHERE ut.pv_id = pvid;
17293
 
17294
         --- Remove from Package BuildEnv
17295
         DELETE FROM package_build_env pbe
17296
               WHERE pbe.pv_id = pvid;
17297
 
17298
		 --- Remove from Package Build Info
17299
		 DELETE FROM package_build_info pbi
17300
		 	   WHERE pbi.pv_id = pvid;    
17301
 
17302
 
17303
         --- Remove from Build Order
17304
         DELETE FROM build_order bo
17305
               WHERE bo.pv_id = pvid;
17306
 
17307
         --- Remove from Note Manager
17308
         DELETE FROM note_manager nm
17309
               WHERE nm.nid = pvid;
17310
 
17311
         --- Remove from Action log
17312
         DELETE FROM action_log al
17313
               WHERE al.pv_id = pvid;
17314
 
17315
		 --- Remove from Do Not Ripple 
17316
		 DELETE FROM DO_NOT_RIPPLE dnr
17317
		 	   WHERE dnr.PV_ID = pvid;
17318
 
17319
		 --- Remove from Jira Issues 
17320
		 DELETE FROM JIRA_ISSUES jira
17321
		 	   WHERE jira.PV_ID = pvid;
17322
 
17323
         --- Finally Remove From Package Versions
17324
         --- Get Package name
17325
         SELECT pv.pkg_id
17326
           INTO pkgid
17327
           FROM package_versions pv
17328
          WHERE pv.pv_id = pvid;
17329
 
17330
         DELETE FROM package_versions pv
17331
               WHERE pv.pv_id = pvid;
17332
 
17333
         --- Remove package name if not used any more
17334
         SELECT COUNT (pv.pv_id)
17335
           INTO ROWCOUNT
17336
           FROM package_versions pv
17337
          WHERE pv.pkg_id = pkgid;
17338
 
17339
         IF ROWCOUNT < 1
17340
         THEN
17341
            DELETE FROM PACKAGES pkg
17342
                  WHERE pkg.pkg_id = pkgid;
17343
         END IF;
17344
      END IF;
17345
   END;
17346
 
17347
/*-------------------------------------------------------------------------------------------------------*/
17348
   PROCEDURE new_patch (
17349
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
17350
      nparentpvid        IN       NUMBER,
17351
      spatchidlist       IN       VARCHAR2,
17352
      nuserid            IN       NUMBER,
17353
      returnpatchid      OUT      NUMBER
17354
   )
17355
   IS
17356
      patchpv_id           NUMBER;
17357
      parpkg_id            NUMBER;
17358
      lastinstallorder     NUMBER;
17359
      ispatchdlocked       package_versions.dlocked%TYPE;
17360
      ssv_mm               package_versions.v_mm%TYPE;
17361
      ssv_nmm              package_versions.v_nmm%TYPE;
17362
      ssv_ext              package_versions.v_ext%TYPE;
17363
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
17364
                                                                          ();
17365
 
17366
      CURSOR parent_cur
17367
      IS
17368
         SELECT pv.*, pkg.pkg_name
17369
           FROM package_versions pv, PACKAGES pkg
17370
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
17371
 
17372
      parent_rec           parent_cur%ROWTYPE;
17373
 
17374
      CURSOR patch_cur
17375
      IS
17376
         SELECT pv.*, pg.pkg_name
17377
           FROM package_versions pv, PACKAGES pg
17378
          WHERE pv.pkg_id = parpkg_id
17379
            AND pv.pkg_version = snewpatchversion
17380
            AND pv.pkg_id = pg.pkg_id;
17381
 
17382
      patch_rec            patch_cur%ROWTYPE;
17383
 
17384
      CURSOR releases_cur
17385
      IS
17386
         SELECT rc.pv_id
17387
           FROM release_content rc
17388
          WHERE rc.pv_id = patch_rec.pv_id;
17389
 
17390
      releases_rec         releases_cur%ROWTYPE;
17391
   BEGIN
17392
      -- Get Last Install Order
17393
      SELECT COUNT (*)
17394
        INTO lastinstallorder
17395
        FROM package_patches pp
17396
       WHERE pp.pv_id = nparentpvid;
17397
 
17398
      -- Get parent details
17399
      OPEN parent_cur;
17400
 
17401
      FETCH parent_cur
17402
       INTO parent_rec;
17403
 
17404
      parpkg_id := parent_rec.pkg_id;
17405
 
17406
      -- Find if patch exists in database
17407
      OPEN patch_cur;
17408
 
17409
      FETCH patch_cur
17410
       INTO patch_rec;
17411
 
17412
      -- Parent must be official
17413
      IF parent_rec.dlocked = 'Y'
17414
      THEN
17415
         IF patch_cur%NOTFOUND
17416
         THEN
17417
            ispatchdlocked := 'N';
17418
 
17419
            -- Create new patch version --
17420
            SELECT seq_pv_id.NEXTVAL
17421
              INTO patchpv_id
17422
              FROM DUAL;
17423
 
17424
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
17425
 
17426
            INSERT INTO package_versions
17427
                        (pv_id, pkg_id, pkg_version,
17428
                         dlocked, created_stamp, creator_id,
17429
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
17430
                         src_path,
17431
                         pv_description,
17432
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
17433
						 is_autobuildable
17434
                        )
17435
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
17436
                         ispatchdlocked, ora_sysdate, nuserid,
17437
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
17438
                         parent_rec.src_path,
17439
                            'This is a patch to '
17440
                         || parent_rec.pkg_name
17441
                         || ' '
17442
                         || parent_rec.pkg_version,
17443
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
17444
                        );
17445
 
17446
            INSERT INTO package_patches
17447
                        (pv_id, patch_id, install_order)
17448
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17449
                       lastinstallorder + 1 AS install_order
17450
                  FROM package_versions pv
17451
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17452
 
17453
            /* LOG ACTION */
17454
            log_action (patchpv_id,
17455
                        'new_version',
17456
                        nuserid,
17457
                        'Patch version created: ' || snewpatchversion
17458
                       );
17459
            log_action (nparentpvid,
17460
                        'patch_add',
17461
                        nuserid,
17462
                        'New patch created and attached: ' || snewpatchversion
17463
                       );
17464
         ELSE
17465
            patchpv_id := patch_rec.pv_id;
17466
            ispatchdlocked := patch_rec.dlocked;
17467
 
17468
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
17469
            OPEN releases_cur;
17470
 
17471
            FETCH releases_cur
17472
             INTO releases_rec;
17473
 
17474
            IF releases_cur%NOTFOUND
17475
            THEN
17476
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
17477
               UPDATE package_versions
17478
                  SET is_patch = 'Y'
17479
                WHERE pv_id = patchpv_id;
17480
 
17481
               INSERT INTO package_patches
17482
                           (pv_id, patch_id, install_order)
17483
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17484
                          lastinstallorder + 1 AS install_order
17485
                     FROM package_versions pv
17486
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17487
            END IF;
17488
 
17489
            CLOSE releases_cur;
17490
 
17491
            /* LOG ACTION */
17492
            log_action (nparentpvid,
17493
                        'patch_add',
17494
                        nuserid,
17495
                           'Patch version was found and attached: '
17496
                        || snewpatchversion
17497
                       );
17498
         END IF;
17499
      END IF;
17500
 
17501
      /* Create Patch Dependencies */
17502
      opatchdepcollector := in_list_number (spatchidlist);
17503
 
17504
      -- Make sure patch is unofficial before altering its dependencies
17505
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
17506
      THEN
17507
         -- Delete Existing Dependencies
17508
         DELETE FROM package_dependencies dep
17509
               WHERE dep.pv_id = patchpv_id;
17510
 
17511
         -- Insert new dependencies
17512
         INSERT INTO package_dependencies
17513
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
17514
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
17515
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
17516
                   'L' AS build_type
17517
              FROM package_versions pv
17518
             WHERE pv.pv_id IN (
17519
                      SELECT *
17520
                        FROM TABLE
17521
                                (CAST
17522
                                    (opatchdepcollector AS relmgr_number_tab_t)
17523
                                ));
17524
      END IF;
17525
 
17526
      -- Return patch_id
17527
      returnpatchid := patchpv_id;
17528
 
17529
      CLOSE parent_cur;
17530
 
17531
      CLOSE patch_cur;
17532
   EXCEPTION
17533
      WHEN DUP_VAL_ON_INDEX
17534
      THEN
17535
         raise_application_error (-20000,
17536
                                     'Patch version '
17537
                                  || snewpatchversion
17538
                                  || ' already exist.'
17539
                                 );
17540
   END;
17541
 
17542
/*-------------------------------------------------------------------------------------------------------*/
17543
   PROCEDURE obsolete_patch (
17544
      patchid            IN   NUMBER,
17545
      isobsolete         IN   CHAR,
17546
      obsoletecomments   IN   VARCHAR2,
17547
      userid             IN   NUMBER
17548
   )
17549
   IS
17550
   BEGIN
17551
      -- Update patch
17552
      UPDATE package_versions pv
17553
         SET pv.is_obsolete = isobsolete,
17554
             pv.obsolete_comments = obsoletecomments
17555
       WHERE pv.pv_id = patchid;
17556
 
17557
      /*
17558
      -- Update patch children
17559
      UPDATE PACKAGE_VERSIONS pv SET
17560
      pv.IS_OBSOLETE = IsObsolete,
17561
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17562
      WHERE pv.PV_ID IN (
17563
                     SELECT DISTINCT dep.DPV_ID
17564
                       FROM PACKAGE_DEPENDENCIES dep
17565
                      WHERE dep.PV_ID = PatchId
17566
                     );
17567
 
17568
 
17569
      -- Update patch parent
17570
      UPDATE PACKAGE_VERSIONS pv SET
17571
      pv.IS_OBSOLETE = IsObsolete,
17572
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17573
      WHERE pv.PV_ID IN (
17574
                     SELECT DISTINCT dep.PV_ID
17575
                       FROM PACKAGE_DEPENDENCIES dep
17576
                      WHERE dep.DPV_ID = PatchId
17577
                     );
17578
 
17579
         */
17580
 
17581
      /* LOG ACTION */
17582
      IF isobsolete IS NOT NULL
17583
      THEN
17584
         log_action (patchid,
17585
                     'patch_obsolete',
17586
                     userid,
17587
                     'Obsolete patch. ' || obsoletecomments
17588
                    );
17589
      ELSE
17590
         log_action (patchid,
17591
                     'patch_obsolete',
17592
                     userid,
17593
                     'Undo patch obsolete.'
17594
                    );
17595
      END IF;
17596
   END;
17597
 
17598
/*-------------------------------------------------------------------------------------------------------*/
17599
   PROCEDURE obsolete_patches (
17600
      spatchidlist       IN   VARCHAR2,
17601
      isobsolete         IN   CHAR,
17602
      obsoletecomments   IN   VARCHAR2,
17603
      userid             IN   NUMBER
17604
   )
17605
   IS
17606
   BEGIN
17607
      /*--------------- Business Rules Here -------------------*/
17608
      IF spatchidlist IS NULL
17609
      THEN
17610
         raise_application_error (-20000,
17611
                                  'Please select one or more Patches.'
17612
                                 );
17613
      END IF;
17614
 
17615
/*-------------------------------------------------------*/
17616
 
17617
      -- Update patch
17618
      UPDATE package_versions pv
17619
         SET pv.is_obsolete = isobsolete,
17620
             pv.obsolete_comments = obsoletecomments
17621
       WHERE pv.pv_id IN (
17622
                SELECT *
17623
                  FROM THE
17624
                          (SELECT CAST
17625
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
17626
                                     )
17627
                             FROM DUAL
17628
                          ));
17629
   /*
17630
   -- Update patch children
17631
   UPDATE PACKAGE_VERSIONS pv SET
17632
   pv.IS_OBSOLETE = IsObsolete,
17633
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17634
   WHERE pv.PV_ID IN (
17635
                  SELECT DISTINCT dep.DPV_ID
17636
                    FROM PACKAGE_DEPENDENCIES dep
17637
                   WHERE dep.PV_ID = PatchId
17638
                  );
17639
 
17640
 
17641
   -- Update patch parent
17642
   UPDATE PACKAGE_VERSIONS pv SET
17643
   pv.IS_OBSOLETE = IsObsolete,
17644
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17645
   WHERE pv.PV_ID IN (
17646
                  SELECT DISTINCT dep.PV_ID
17647
                    FROM PACKAGE_DEPENDENCIES dep
17648
                   WHERE dep.DPV_ID = PatchId
17649
                  );
17650
 
17651
      */
17652
 
17653
   /* LOG ACTION
17654
   IF IsObsolete IS NOT NULL THEN
17655
         Log_Action ( PatchId, 'patch_obsolete', UserId,
17656
                  'Obsolete patch. '|| ObsoleteComments );
17657
   ELSE
17658
      Log_Action ( PatchId, 'patch_obsolete', UserId,
17659
                  'Undo patch obsolete.' );
17660
   END IF;  */
17661
   END;
17662
 
17663
/*-------------------------------------------------------------------------------------------------------*/
17664
   PROCEDURE add_process (
17665
      nprocid         IN   processes.proc_id%TYPE,
17666
      shealthtag      IN   processes.proc_name%TYPE,
17667
      sprocdesc       IN   processes.proc_description%TYPE,
17668
      scmdinterface   IN   processes.run_as%TYPE,
17669
      spkgowner       IN   processes.pkg_owner%TYPE,
17670
      sisinterface    IN   processes.is_interface%TYPE,
17671
      npvid           IN   package_processes.pv_id%TYPE,
17672
      nuserid         IN   NUMBER
17673
   )
17674
   IS
17675
      pkgname   VARCHAR2 (100);
17676
/*Rupesh Release on 17/05/2006*/
17677
   BEGIN
17678
      INSERT INTO processes
17679
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
17680
                   is_interface
17681
                  )
17682
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
17683
                   sisinterface
17684
                  );
17685
 
17686
      pk_package.add_package_process (nprocid, npvid, nuserid);
17687
   END;
17688
 
17689
/*-------------------------------------------------------------------------------------------------------*/
17690
   PROCEDURE add_package_process (
17691
      nprocidlist   IN   VARCHAR2,
17692
      npvid         IN   package_processes.pv_id%TYPE,
17693
      nuserid       IN   NUMBER
17694
   )
17695
   IS
17696
      processname   VARCHAR2 (4000);
17697
 
17698
/*Rupesh Release on 17/05/2006*/
17699
      CURSOR proc_cur
17700
      IS
17701
         SELECT prc.proc_id
17702
           FROM processes prc
17703
          WHERE prc.proc_id IN (
17704
                   SELECT *
17705
                     FROM THE
17706
                             (SELECT CAST
17707
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
17708
                                        )
17709
                                FROM DUAL
17710
                             ));
17711
 
17712
      proc_rec      proc_cur%ROWTYPE;
17713
   BEGIN
17714
      OPEN proc_cur;
17715
 
17716
      FETCH proc_cur
17717
       INTO proc_rec;
17718
 
17719
      WHILE proc_cur%FOUND
17720
      LOOP
17721
         INSERT INTO package_processes
17722
                     (proc_id, pv_id
17723
                     )
17724
              VALUES (proc_rec.proc_id, npvid
17725
                     );
17726
 
17727
         SELECT prc.proc_name
17728
           INTO processname
17729
           FROM processes prc
17730
          WHERE prc.proc_id = proc_rec.proc_id;
17731
 
17732
         -- Log Action --
17733
         log_action (npvid,
17734
                     'process_add',
17735
                     nuserid,
17736
                     'Added process with health tag ' || processname
17737
                    );
17738
 
17739
         FETCH proc_cur
17740
          INTO proc_rec;
17741
      END LOOP;
17742
   END;
17743
 
17744
/*-------------------------------------------------------------------------------------------------------*/
17745
   PROCEDURE remove_process (
17746
      nprocid   IN   package_processes.proc_id%TYPE,
17747
      npvid     IN   package_processes.pv_id%TYPE,
17748
      nuserid   IN   NUMBER
17749
   )
17750
   IS
17751
      processname   VARCHAR2 (4000);
17752
/* Rupesh Release on 17/05/2006*/
17753
   BEGIN
17754
      SELECT prc.proc_name
17755
        INTO processname
17756
        FROM processes prc
17757
       WHERE prc.proc_id = nprocid;
17758
 
17759
      DELETE FROM package_processes
17760
            WHERE proc_id = nprocid AND pv_id = npvid;
17761
 
17762
      -- Log Action --
17763
      log_action (npvid,
17764
                  'process_remove',
17765
                  nuserid,
17766
                  'Removed process with health tag ' || processname
17767
                 );
17768
   END;
17769
/*-------------------------------------------------------------------------------------------------------*/
17770
  /* 
17771
  Author: Rupesh Solanki
17772
  Purpose: To move package versions from one release to another
17773
  Release: 4th September 2006 
17774
 
17775
  */
17776
  PROCEDURE move_package (
17777
   	  npvid  			  IN package_versions.pv_id%TYPE,
17778
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
17779
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
17780
	  nuserid			  IN NUMBER	
17781
  )	
17782
  IS	
17783
 
17784
  oldrtag_name VARCHAR2(4000);
17785
  newrtag_name VARCHAR2(4000);
17786
 
17787
 
17788
 
17789
  BEGIN
17790
 
17791
 
17792
  SELECT rtag_name into oldrtag_name
17793
  FROM RELEASE_TAGS
17794
  WHERE rtag_id = nrtagid;
17795
 
17796
  SELECT rtag_name into newrtag_name
17797
  FROM RELEASE_TAGS
17798
  WHERE rtag_id = nnewrtagid;
17799
 
17800
  /* Table Work In Progress*/
17801
  	   UPDATE WORK_IN_PROGRESS
17802
	   SET RTAG_ID = nnewrtagid
17803
	   WHERE RTAG_ID = nrtagid
17804
	   AND PV_ID = npvid;
17805
 
17806
  /* Table PLANNED*/	
17807
  	   UPDATE PLANNED
17808
	   SET RTAG_ID = nnewrtagid
17809
	   WHERE RTAG_ID = nrtagid
17810
	   AND PV_ID = npvid;   
17811
 
17812
      -- Log Action --
17813
      log_action (npvid,
17814
                  'move_package_version',
17815
                  nuserid,
17816
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
17817
                 );  	   	     
17818
 
17819
 
17820
  END;
17821
 
17822
/*-------------------------------------------------------------------------------------------------------*/
17823
PROCEDURE modify_product_state (
17824
   	  npvid IN package_versions.pv_id%TYPE,
17825
	  nstateid IN product_states.state_id%TYPE,
17826
	  nuserid IN NUMBER
17827
   ) IS
17828
 
17829
   sStateName VARCHAR(4000);
17830
 
17831
  /* 
17832
  Author: Rupesh Solanki
17833
  Purpose: To modify the product state from integration to test to deployment
17834
  Release: 25th January 2006 
17835
  */   
17836
 
17837
  BEGIN
17838
 
17839
  UPDATE PACKAGE_VERSIONS
17840
  SET PRODUCT_STATE = nstateid
17841
  WHERE PV_ID = npvid;
17842
 
17843
 
17844
  SELECT STATE INTO sStateName
17845
  FROM PRODUCT_STATES 
17846
  WHERE STATE_ID = nstateid;
17847
 
17848
  -- Log Action --
17849
  log_action (npvid,
17850
              'modify_product_state',
17851
               nuserid,
17852
               sStateName
17853
              );  
17854
 
17855
 
17856
  END;			  	   	     
17857
/*-------------------------------------------------------------------------------------------------------*/   
17858
END pk_package_Test;
17859
/
17860
 
17861
CREATE OR REPLACE PACKAGE BODY pk_project IS
17862
/*
17863
------------------------------
17864
||  Last Modified:  J.Tweddle
17865
||  Modified Date:  23/Aug/2007
17866
||  Body Version:   1.0
17867
------------------------------
17868
*/
17869
 
17870
    /*------------------------------------------------------------------------*/
17871
    PROCEDURE update_base_url ( 
17872
        nprojid   IN  projects.proj_id%TYPE,
17873
        sbaseurl  IN  VARCHAR2
17874
        ) IS
17875
    BEGIN
17876
 
17877
        UPDATE projects
17878
        SET base_url = sbaseurl
17879
        WHERE proj_id = nprojid;
17880
 
17881
    END update_base_url;
17882
    /*------------------------------------------------------------------------*/
17883
 
17884
END pk_project;
17885
/
17886
 
17887
CREATE OR REPLACE PACKAGE BODY pk_buildapi
17888
IS
17889
/*
17890
------------------------------
17891
||  Last Modified:  Jeremy Tweddle
17892
||  Modified Date:  14/Dec/2007
17893
||  Body Version:   3.1
17894
------------------------------
17895
*/
17896
 
17897
   /*-------------------------------------------------------------------------------------------------------*/
17898
   PROCEDURE add_product_component (
17899
      npvid           IN   NUMBER,
17900
      sosname         IN   VARCHAR2,
17901
      sorigfilepath   IN   VARCHAR2,
17902
      sfilename       IN   VARCHAR2,
17903
      sdestfilepath   IN   VARCHAR2,
17904
      nbytesize       IN   NUMBER,
17905
      scrccksum       IN   VARCHAR2
17906
   )
17907
   IS
17908
      nosid   NUMBER;
17909
   BEGIN
17910
      /*--------------- Business Rules Here -------------------*/
17911
      -- OS Name Requirements --
17912
      IF (sosname IS NULL)
17913
      THEN
17914
         raise_application_error (-20000, 'OsName cannot be NULL.');
17915
      END IF;
17916
 
17917
      -- File Requirements --
17918
      IF (NOT sfilename IS NULL)
17919
      THEN
17920
         IF (nbytesize IS NULL)
17921
         THEN
17922
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
17923
         ELSIF (scrccksum IS NULL)
17924
         THEN
17925
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
17926
         END IF;
17927
      END IF;
17928
 
17929
      -- Folder Requirements --
17930
      -- No requirements for now.
17931
 
17932
      /*-------------------------------------------------------*/
17933
 
17934
      -- Get OsId
17935
      nosid := get_osid (sosname);
17936
 
17937
      -- Insert component entry
17938
      INSERT INTO product_components
17939
                  (pv_id, os_id, file_path, file_name, destination_path,
17940
                   byte_size, crc_cksum
17941
                  )
17942
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
17943
                   nbytesize, scrccksum
17944
                  );
17945
   EXCEPTION
17946
      WHEN DUP_VAL_ON_INDEX
17947
      THEN
17948
         raise_application_error (-20000,
17949
                                  'Cannot have duplicate product components.'
17950
                                 );
17951
   END;
17952
 
17953
/*-------------------------------------------------------------------------------------------------------*/
17954
   PROCEDURE remove_all_product_components (
17955
      npvid     IN   NUMBER,
17956
      sosname   IN   VARCHAR2
17957
   )
17958
   IS
17959
      nosid   NUMBER;
17960
   BEGIN
17961
/*--------------- Business Rules Here -------------------*/
17962
/*-------------------------------------------------------*/
17963
 
17964
      -- Get OsId
17965
      nosid := get_osid (sosname);
17966
 
17967
      -- Delete component entry
17968
      DELETE FROM product_components pc
17969
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
17970
   END;
17971
 
17972
/*-------------------------------------------------------------------------------------------------------*/
17973
   FUNCTION get_osid (sosname IN VARCHAR2)
17974
      RETURN NUMBER
17975
   IS
17976
      code   NUMBER;
17977
   BEGIN
17978
      -- Get Platform Code --
17979
      SELECT pf.code
17980
        INTO code
17981
        FROM platforms pf
17982
       WHERE UPPER (pf.NAME) = UPPER (sosname);
17983
 
17984
      RETURN code;
17985
   EXCEPTION
17986
      WHEN NO_DATA_FOUND
17987
      THEN
17988
         raise_application_error
17989
            (-20000,
17990
                'Platform '
17991
             || sosname
17992
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
17993
            );
17994
         RAISE;
17995
   END;
17996
 
17997
/*-------------------------------------------------------------------------------------------------------*/
17998
   PROCEDURE update_build_service (
17999
      sdatabaseserver   IN   VARCHAR2,
18000
      swebserver        IN   VARCHAR2,
18001
      smailserver       IN   VARCHAR2,
18002
      smailsender       IN   VARCHAR2,
18003
      sdiskspace        IN   VARCHAR2,
18004
      ssbommanagement   IN   VARCHAR2
18005
   )
18006
   IS
18007
   BEGIN
18008
      UPDATE build_service_config
18009
         SET config = sdatabaseserver
18010
       WHERE service = 'DATABASE SERVER';
18011
 
18012
      UPDATE build_service_config
18013
         SET config = swebserver
18014
       WHERE service = 'WEB SERVER';
18015
 
18016
      UPDATE build_service_config
18017
         SET config = smailserver
18018
       WHERE service = 'MAIL SERVER';
18019
 
18020
      UPDATE build_service_config
18021
         SET config = smailsender
18022
       WHERE service = 'BUILD FAILURE MAIL SENDER';
18023
 
18024
      UPDATE build_service_config
18025
         SET config = sdiskspace
18026
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
18027
 
18028
      UPDATE build_service_config
18029
         SET config = ssbommanagement
18030
       WHERE service = 'SBOM MANAGEMENT';
18031
   END;
18032
 
18033
/*-------------------------------------------------------------------------------------------------------*/
18034
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
18035
   IS
18036
      gbe_id   NUMBER;
18037
   BEGIN
18038
      -- Get GBE_ID
18039
      SELECT seq_gbe_id.NEXTVAL
18040
        INTO gbe_id
18041
        FROM DUAL;
18042
 
18043
      INSERT INTO gbe_machtype
18044
                  (gbe_id, gbe_value
18045
                  )
18046
           VALUES (gbe_id, sgbevalue
18047
                  );
18048
   END;
18049
 
18050
/*-------------------------------------------------------------------------------------------------------*/
18051
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
18052
   IS
18053
   BEGIN
18054
      DELETE FROM gbe_machtype
18055
            WHERE gbe_id = ngbe_id;
18056
   END;
18057
 
18058
/*-------------------------------------------------------------------------------------------------------*/
18059
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
18060
   IS
18061
   BEGIN
18062
      UPDATE gbe_machtype
18063
         SET gbe_value = sgbevalue
18064
       WHERE gbe_id = ngbe_id;
18065
   END;
18066
 
18067
/*-------------------------------------------------------------------------------------------------------*/
18068
   PROCEDURE add_daemon (
18069
      sdaemonhostname   IN   VARCHAR2,
18070
      nrtagid           IN   NUMBER,
18071
      ngbeid            IN   NUMBER,
18072
      sgbebuildfilter   IN   VARCHAR2
18073
   )
18074
   IS
18075
      nrecordnumber   NUMBER;
18076
      nrconid         NUMBER;
18077
   BEGIN
18078
      -- Get RCON_ID
18079
      SELECT seq_rcon_id.NEXTVAL
18080
        INTO nrconid
18081
        FROM DUAL;
18082
 
18083
      SELECT COUNT (*)
18084
        INTO nrecordnumber
18085
        FROM release_config
18086
       WHERE rtag_id = nrtagid;
18087
 
18088
      IF nrecordnumber = 0
18089
      THEN
18090
         INSERT INTO release_config
18091
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18092
                      gbe_id, gbe_buildfilter
18093
                     )
18094
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
18095
                      ngbeid, sgbebuildfilter
18096
                     );
18097
      ELSE
18098
         INSERT INTO release_config
18099
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18100
                      gbe_id, gbe_buildfilter
18101
                     )
18102
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
18103
                      ngbeid, sgbebuildfilter
18104
                     );
18105
      END IF;
18106
   END;
18107
 
18108
/*-------------------------------------------------------------------------------------------------------*/
18109
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
18110
   IS
18111
   BEGIN
18112
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
18113
      DELETE FROM daemon_action_log
18114
            WHERE rcon_id IN (
18115
                     SELECT *
18116
                       FROM THE
18117
                               (SELECT CAST
18118
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18119
                                          )
18120
                                  FROM DUAL
18121
                               ));
18122
 
18123
      DELETE FROM run_level
18124
            WHERE rcon_id IN (
18125
                     SELECT *
18126
                       FROM THE
18127
                               (SELECT CAST
18128
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18129
                                          )
18130
                                  FROM DUAL
18131
                               ));
18132
 
18133
      DELETE FROM abt_action_log
18134
            WHERE rcon_id IN (
18135
                     SELECT *
18136
                       FROM THE
18137
                               (SELECT CAST
18138
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18139
                                          )
18140
                                  FROM DUAL
18141
                               ));
18142
 
18143
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
18144
      DELETE FROM release_config
18145
            WHERE rcon_id IN (
18146
                     SELECT *
18147
                       FROM THE
18148
                               (SELECT CAST
18149
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18150
                                          )
18151
                                  FROM DUAL
18152
                               ));
18153
   END;
18154
 
18155
/*-------------------------------------------------------------------------------------------------------*/
18156
   PROCEDURE update_daemon (
18157
      sdaemonhostname   IN   VARCHAR2,
18158
      nrconid           IN   NUMBER,
18159
      ngbeid            IN   NUMBER,
18160
      sgbebuildfilter   IN   VARCHAR2
18161
   )
18162
   IS
18163
   BEGIN
18164
      UPDATE release_config
18165
         SET daemon_hostname = sdaemonhostname,
18166
             gbe_id = ngbeid,
18167
             gbe_buildfilter = sgbebuildfilter
18168
       WHERE rcon_id = nrconid;
18169
   END;
18170
 
18171
/*-------------------------------------------------------------------------------------------------------*/
18172
   PROCEDURE insert_schedule_info (
18173
      dschedulepause     IN   DATE,
18174
      dscheduleresume    IN   DATE,
18175
      crepeat            IN   VARCHAR2,
18176
      cindefinitepause   IN   VARCHAR2
18177
   )
18178
   IS
18179
      nscheduledid   NUMBER;
18180
   BEGIN
18181
      -- Get Next Available Scheduled Id
18182
      SELECT seq_scheduled_id.NEXTVAL
18183
        INTO nscheduledid
18184
        FROM DUAL;
18185
 
18186
      INSERT INTO run_level_schedule
18187
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
18188
                   cindefinitepause);
18189
   END;
18190
 
18191
/*-------------------------------------------------------------------------------------------------------*/
18192
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
18193
   IS
18194
   BEGIN
18195
      DELETE FROM run_level_schedule
18196
            WHERE scheduled_id = nscheduleid;
18197
   END;
18198
 
18199
/*-------------------------------------------------------------------------------------------------------*/
18200
   PROCEDURE set_infinite_pause
18201
   IS
18202
      nscheduledid   NUMBER;
18203
   BEGIN
18204
      -- Get Next Available Scheduled Id
18205
      SELECT seq_scheduled_id.NEXTVAL
18206
        INTO nscheduledid
18207
        FROM DUAL;
18208
 
18209
      INSERT INTO run_level_schedule
18210
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
18211
   END;
18212
 
18213
/*-------------------------------------------------------------------------------------------------------*/
18214
   PROCEDURE set_resume
18215
   IS
18216
   BEGIN
18217
      DELETE FROM run_level_schedule
18218
            WHERE indefinite_pause = 'P';
18219
   END;
18220
 
18221
/*-------------------------------------------------------------------------------------------------------*/
18222
   PROCEDURE delete_out_of_date_schedule
18223
   IS
18224
   BEGIN
18225
      DELETE FROM run_level_schedule
18226
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
18227
   END;
18228
 
18229
/*-------------------------------------------------------------------------------------------------------*/
18230
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
18231
   IS
18232
   BEGIN
18233
      UPDATE run_level
18234
         SET PAUSE = NULL
18235
       WHERE rcon_id = nrconid;
18236
   END;
18237
 
18238
/*-------------------------------------------------------------------------------------------------------*/
18239
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
18240
   IS
18241
   BEGIN
18242
      UPDATE run_level
18243
         SET PAUSE = 1
18244
       WHERE rcon_id = nrconid;
18245
   END;
18246
/*-------------------------------------------------------------------------------------------------------*/
18247
END pk_buildapi;
18248
/
18249
 
18250
CREATE OR REPLACE PACKAGE BODY Rm_Issues AS
18251
 
18252
-- Private Implementation -----------------------------------------------------
18253
 
18254
 
18255
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18256
	AS
18257
 
18258
	BEGIN
18259
		-- start boundary case
18260
		IF ( XXstart < XX ) THEN
18261
			RETURN 1;
18262
 
18263
		ELSIF ( XXstart = XX ) THEN
18264
 
18265
			-- need to consider YY
18266
			IF ( YYstart < YY ) THEN
18267
				RETURN 1;
18268
 
18269
			ELSIF ( YYstart = YY ) THEN
18270
 
18271
					-- need to consider ZZ
18272
					IF ( ZZstart <= ZZ ) THEN
18273
						RETURN 1;
18274
 
18275
					ELSE
18276
						RETURN 0;
18277
					END IF;
18278
 
18279
			ELSE
18280
				RETURN 0;
18281
			END IF;
18282
		ELSE
18283
			RETURN 0;
18284
		END IF;
18285
	EXCEPTION
18286
		WHEN OTHERS THEN
18287
			RETURN -1;
18288
	END;
18289
 
18290
 
18291
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18292
	AS
18293
 
18294
	BEGIN
18295
		-- end boundary case
18296
		IF ( XX < XXend ) THEN
18297
			RETURN 1;
18298
 
18299
		ELSIF ( XX = XXend ) THEN
18300
 
18301
			-- need to consider YY
18302
			IF ( YY < YYend ) THEN
18303
				RETURN 1;
18304
 
18305
			ELSIF ( YY = YYend ) THEN
18306
 
18307
					-- need to consider ZZ
18308
					IF ( ZZ <= ZZend ) THEN
18309
						RETURN 1;
18310
 
18311
					ELSE
18312
						RETURN 0;
18313
					END IF;
18314
			ELSE
18315
 
18316
				RETURN 0;
18317
			END IF;
18318
		ELSE
18319
			RETURN 0;
18320
		END IF;
18321
	EXCEPTION
18322
		WHEN OTHERS THEN
18323
			RETURN -1;
18324
	END;
18325
 
18326
	/*
18327
	-	version format:		XX.YY.ZZ.abc
18328
	*/
18329
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
18330
	AS
18331
		XXstart		NUMBER	:=	0;
18332
		XXend		NUMBER	:=	0;
18333
		XX			NUMBER	:=	0;
18334
		YYstart		NUMBER	:=	0;
18335
		YYend		NUMBER	:=	0;
18336
		YY			NUMBER	:=	0;
18337
		ZZstart		NUMBER	:=	0;
18338
		ZZend		NUMBER	:=	0;
18339
		ZZ			NUMBER	:=	0;
18340
		first_dot	NUMBER	:=	0;
18341
		second_dot	NUMBER	:=	0;
18342
		third_dot	NUMBER	:=	0;
18343
 
18344
		ProjExtstart	VARCHAR2(10);
18345
		ProjExtend		VARCHAR2(10);
18346
		ProjExt			VARCHAR2(10);
18347
 
18348
	BEGIN
18349
		-- strip the version number
18350
		first_dot :=  INSTR(version_start, '.', 1, 1);
18351
		second_dot :=  INSTR(version_start, '.', 1, 2);
18352
		third_dot :=  INSTR(version_start, '.', 1, 3);
18353
 
18354
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
18355
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18356
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18357
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
18358
 
18359
		first_dot :=  INSTR(version_end, '.', 1, 1);
18360
		second_dot :=  INSTR(version_end, '.', 1, 2);
18361
		third_dot :=  INSTR(version_end, '.', 1, 3);
18362
 
18363
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
18364
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18365
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18366
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
18367
 
18368
		first_dot :=  INSTR(version, '.', 1, 1);
18369
		second_dot :=  INSTR(version, '.', 1, 2);
18370
		third_dot :=  INSTR(version, '.', 1, 3);
18371
 
18372
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
18373
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18374
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18375
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
18376
 
18377
		-- only include versions if all project extensions are the same
18378
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
18379
 
18380
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
18381
				RETURN 1;
18382
			ELSE
18383
				RETURN 0;
18384
			END IF;
18385
		ELSE
18386
			RETURN 0;
18387
		END IF;
18388
 
18389
	EXCEPTION
18390
		WHEN OTHERS THEN
18391
			RETURN -1;
18392
	END;
18393
 
18394
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
18395
	AS
18396
	    pkg_id NUMBER;
18397
	BEGIN
18398
		SELECT
18399
			p.PKG_ID
18400
		INTO
18401
			pkg_id
18402
		FROM
18403
			PACKAGES p
18404
		WHERE
18405
			p.PKG_NAME = pkgName;
18406
 
18407
		RETURN pkg_id;
18408
	EXCEPTION
18409
	    WHEN OTHERS THEN
18410
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
18411
			RETURN -1;
18412
	END;
18413
 
18414
 
18415
-- Public Implementation ------------------------------------------------------
18416
 
18417
	/*
18418
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
18419
	--
18420
	-- INPUT PARAMETERS:
18421
	--
18422
	--		pkg_name  	-  	The name of the top level package to get issues for
18423
	--		version_start	-	The start version for the comparison
18424
	--		version_end	-	The end version for the comparison
18425
	*/
18426
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18427
	AS
18428
		pkgId	NUMBER;
18429
	BEGIN
18430
		-- get pkg_id of the input package:
18431
		pkgId := GetPkgId( pkg_name );
18432
 
18433
		OPEN vCursor FOR
18434
		SELECT
18435
			  pv.PKG_ID,
18436
			  pv.PKG_VERSION,
18437
			  pv.PV_ID,
18438
			  i_pkg.ISS_ID,
18439
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
18440
			  pd.DPKG_ID,
18441
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
18442
			  pd.DPV_ID,
18443
			  i_dpkg.ISS_ID AS ISSUE_ID
18444
		FROM
18445
			 PACKAGE_VERSIONS pv
18446
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
18447
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
18448
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
18449
		WHERE
18450
   			 pv.PKG_ID = pkgId
18451
		AND
18452
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
18453
		AND
18454
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
18455
		ORDER BY
18456
			 pv.PKG_ID,
18457
			 pv.PV_ID,
18458
			 pd.DPKG_ID,
18459
			 pd.DPV_ID;
18460
	EXCEPTION
18461
		WHEN OTHERS THEN
18462
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
18463
	END;
18464
 
18465
 
18466
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
18467
 
18468
	/*
18469
	-- Proc: LoadIssuesTable
18470
	--
18471
	-- Populates Package_Issues table with details of issues from all dependent packages.
18472
	-- This will be for all package versions of the input pkg_name between the
18473
	-- version_start and version_end.
18474
	--
18475
	-- INPUT PARAMETERS:
18476
	--
18477
	--		pkg_name  	-  	The name of the top level package to get issues for
18478
	--		version_start	-	The start version for the comparison
18479
	--		version_end	-	The end version for the comparison
18480
	*/
18481
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18482
	AS
18483
		pkgId	NUMBER;
18484
 
18485
		CURSOR pack_vers_cur IS
18486
			SELECT
18487
				pv.PV_ID,
18488
				pv.PKG_VERSION,
18489
				pv.PKG_ID,
18490
				p.PKG_NAME
18491
			FROM
18492
				PACKAGE_VERSIONS pv
18493
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18494
			WHERE
18495
   				 pv.PKG_ID = pkgId
18496
			AND
18497
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
18498
 
18499
	BEGIN
18500
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18501
 
18502
		-- get the pkg_id we are finding issues for
18503
		pkgId := GetPkgId( pkg_name );
18504
 
18505
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
18506
		FOR pack_ver_rec IN  pack_vers_cur
18507
		LOOP
18508
			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 );
18509
			COMMIT;
18510
		END LOOP;
18511
 
18512
		-- The output cursor - shows the individual versions of the top level package then were reported on
18513
		OPEN vCursor FOR
18514
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18515
/*removed
18516
		SELECT
18517
			PKG_VERSION
18518
		FROM
18519
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
18520
*/
18521
 
18522
 
18523
	EXCEPTION
18524
		WHEN OTHERS THEN
18525
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
18526
	END;
18527
 
18528
 
18529
	/*
18530
	-- Proc: InsertIssuesForDepends
18531
	--
18532
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
18533
	--
18534
	-- INPUT PARAMETERS:
18535
	--
18536
	--		pvID  		-  	The package version id of the package to get issues for
18537
	--		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)
18538
	--		top_pkgName -  	The package name of the top level package
18539
	--		top_pvID  	-  	The package version id of the top level package
18540
	--		top_pkgVer  -  	The package version description of the top level package
18541
	*/
18542
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
18543
	AS
18544
		pkgId		NUMBER;
18545
		issCnt		NUMBER := 0;
18546
		pkgCheck	NUMBER := 0;
18547
		depCheck	NUMBER := 0;
18548
 
18549
		dpkgName	VARCHAR(50);
18550
		dpkgVersion	VARCHAR(50);
18551
 
18552
		CURSOR dep_packs_cur IS
18553
			SELECT
18554
				DPV_ID
18555
			FROM
18556
				PACKAGE_DEPENDENCIES
18557
			WHERE
18558
				PV_ID = pvID;
18559
 
18560
	BEGIN
18561
 
18562
		-- check to see if the package has been processed previously
18563
		SELECT
18564
			COUNT(*)
18565
		INTO
18566
			pkgCheck
18567
		FROM
18568
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18569
		WHERE
18570
			DPV_ID = pvID;
18571
 
18572
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
18573
 
18574
		-- Package not already processed (no cyclic dependency) - process it
18575
		IF ( pkgCheck = 0 ) THEN
18576
 
18577
			-- check to see if this package version has any issues assigned to it
18578
			SELECT
18579
				COUNT(*)
18580
			INTO
18581
				issCnt
18582
			FROM
18583
				CQ_ISSUES i
18584
			WHERE
18585
				i.PV_ID = pvID;
18586
 
18587
			dbms_output.put_line('issCnt: ' || issCnt );
18588
 
18589
			-- Always enter a marker row into the table even if there are no issues for the package.
18590
			-- This allows us to pick up any cyclic dependencies.
18591
			IF ( issCnt > 0 ) THEN
18592
				-- get issues and insert into RM_PACKAGE_ISSUES
18593
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18594
 
18595
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18596
					SELECT DISTINCT
18597
						top_pkgID		AS PKG_ID,
18598
						top_pkgName		AS PKG_NAME,
18599
						top_pvID		AS PV_ID,
18600
						top_pkgVer		AS PKG_VERSION,
18601
						pv.PV_ID		AS DPV_ID,
18602
						p.PKG_NAME		AS DPKG_NAME,
18603
						pv.PKG_VERSION	AS DPKG_VERSION,
18604
						ci.ISS_DB,
18605
						ci.ISS_ID
18606
					FROM
18607
						PACKAGE_VERSIONS pv
18608
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18609
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
18610
					WHERE
18611
						pv.PV_ID = pvID;
18612
 
18613
			ELSE
18614
				-- get the dpkg details - there will always be a row returned here
18615
				SELECT
18616
					p.PKG_NAME
18617
				INTO
18618
					dpkgName
18619
				FROM
18620
					PACKAGE_VERSIONS pv
18621
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18622
				WHERE
18623
	   				 pv.PV_ID = pvID;
18624
 
18625
				SELECT
18626
					pv.PKG_VERSION
18627
				INTO
18628
					dpkgVersion
18629
				FROM
18630
					PACKAGE_VERSIONS pv
18631
				WHERE
18632
	   				 pv.PV_ID = pvID;
18633
 
18634
				-- enter a marker row
18635
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18636
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18637
				VALUES (
18638
					top_pkgID,
18639
					top_pkgName,
18640
					top_pvID,
18641
					top_pkgVer,
18642
					pvID,
18643
					dpkgName,
18644
					dpkgVersion,
18645
					NULL,
18646
					NULL );
18647
 
18648
			END IF;
18649
 
18650
			-- If this package version has dependencies then recurse
18651
			SELECT
18652
				COUNT(*)
18653
			INTO
18654
				depCheck
18655
			FROM
18656
				PACKAGE_DEPENDENCIES
18657
			WHERE
18658
				PV_ID = pvID;
18659
 
18660
			IF ( depCheck > 0 ) THEN
18661
				-- get dependencies and call this function recursively for each one
18662
				FOR dep_rec IN  dep_packs_cur
18663
				LOOP
18664
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
18665
				END LOOP;
18666
 
18667
			END IF;
18668
 
18669
		END IF;
18670
 
18671
	/*EXCEPTION
18672
		WHEN OTHERS THEN
18673
			no exception handling required
18674
	*/
18675
	END;
18676
 
18677
END Rm_Issues;
18678
/
18679
 
18680
CREATE OR REPLACE PACKAGE BODY PK_PLANNED IS
18681
 
18682
/*
18683
------------------------------
18684
||  Last Modified:  S.Vukovic
18685
||  Modified Date:  6/May/2005
18686
||  Body Version:   1.0
18687
------------------------------
18688
*/
18689
 
18690
 
18691
/*-------------------------------------------------------------------------------------------------------*/
18692
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18693
 
18694
	oldPvId NUMBER;
18695
	ReleaseLocation VARCHAR2(4000);
18696
	IsPatch CHAR(1) := NULL;
18697
	sLocation VARCHAR2(4000) := NULL;
18698
	nRtagIdLocation NUMBER;
18699
 
18700
 
18701
 
18702
BEGIN
18703
	/*--------------- Business Rules Here -------------------*/
18704
	/*-------------------------------------------------------*/
18705
 
18706
	BEGIN
18707
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
18708
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
18709
		  FROM PLANNED pl,
18710
		  	   RELEASE_TAGS rt,
18711
			   PROJECTS proj
18712
		 WHERE pl.PV_ID = newPvId
18713
		   AND pl.RTAG_ID = rt.RTAG_ID
18714
		   AND rt.OFFICIAL != 'Y'
18715
		   AND rt.PROJ_ID = proj.PROJ_ID;
18716
 
18717
		EXCEPTION
18718
	    	WHEN NO_DATA_FOUND THEN
18719
	       		sLocation := NULL;
18720
	END;	   	     
18721
 
18722
 
18723
 
18724
	IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
18725
 
18726
		-- Add to "Pending" area
18727
		INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID )
18728
		VALUES( RtagId, newPvId, ViewId );
18729
 
18730
 
18731
	    /* LOG ACTION */
18732
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18733
		  FROM PROJECTS proj,
18734
		  	   RELEASE_TAGS rt
18735
		 WHERE rt.PROJ_ID = proj.PROJ_ID
18736
		   AND rt.RTAG_ID = RtagId;
18737
 
18738
		Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
18739
 
18740
	ELSE
18741
 
18742
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );		
18743
 
18744
	END IF;
18745
 
18746
END;
18747
/*-------------------------------------------------------------------------------------------------------*/
18748
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18749
 
18750
	ReleaseLocation VARCHAR2(4000);
18751
 
18752
BEGIN
18753
 
18754
	/*--------------- Business Rules Here -------------------*/
18755
	/*-------------------------------------------------------*/
18756
 
18757
 
18758
	-- Get release location for logging pusposes
18759
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18760
	  FROM PROJECTS proj,
18761
	  	   RELEASE_TAGS rt
18762
	 WHERE rt.PROJ_ID = proj.PROJ_ID
18763
	   AND rt.RTAG_ID = RtagId;
18764
 
18765
 
18766
	-- Delete from Work In Progress
18767
	DELETE
18768
	  FROM PLANNED pl
18769
	 WHERE pl.RTAG_ID = RtagId
18770
	   AND pl.PV_ID = PvId;
18771
 
18772
	Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
18773
 
18774
 
18775
 
18776
 
18777
END;
18778
/*-------------------------------------------------------------------------------------------------------*/
18779
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
18780
 
18781
	ReturnValue NUMBER;
18782
 
18783
BEGIN
18784
	SELECT pl.VIEW_ID INTO ReturnValue
18785
	  FROM PLANNED pl
18786
	 WHERE pl.RTAG_ID = RtagId
18787
	   AND pl.PV_ID = PvId;
18788
 
18789
	RETURN ReturnValue;
18790
END;
18791
/*-------------------------------------------------------------------------------------------------------*/
18792
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
18793
 
18794
	IsBaseView CHAR(1);
18795
 
18796
BEGIN
18797
 
18798
	-- Check if the view is BASE VIEW
18799
	SELECT vi.BASE_VIEW INTO IsBaseView
18800
	  FROM VIEWS vi
18801
	 WHERE vi.VIEW_ID = ViewId;
18802
 
18803
 
18804
	IF (IsBaseView = 'Y') THEN 
18805
		-- Get Base view content
18806
		OPEN RecordSet FOR
18807
		SELECT 0 AS PKG_STATE,
18808
			   NULL AS DEPRECATED_STATE,
18809
			   pv.pv_id, 
18810
			   pkg.pkg_name, 
18811
			   pv.pkg_version, 
18812
			   pv.dlocked, 
18813
			   pv.pv_description,
18814
			   pv.BUILD_TYPE
18815
		  FROM PLANNED rel,
18816
		       packages pkg,
18817
		       package_versions pv
18818
		 WHERE pv.pkg_id = pkg.pkg_id
18819
		   AND rel.pv_id = pv.pv_id
18820
		   AND rel.VIEW_ID = ViewId
18821
		   AND rel.RTAG_ID = RtagId
18822
		 ORDER BY UPPER(pkg.PKG_NAME);
18823
 
18824
	ELSE	 
18825
 
18826
	 	-- Get non base view content
18827
		OPEN RecordSet FOR
18828
		SELECT 0 AS PKG_STATE,
18829
			   NULL AS DEPRECATED_STATE,
18830
			   pv.pv_id, 
18831
			   pkg.pkg_name, 
18832
			   pv.pkg_version, 
18833
			   pv.dlocked, 
18834
			   pv.pv_description,
18835
			   pv.BUILD_TYPE
18836
		  FROM PLANNED rel,
18837
		       packages pkg,
18838
		       package_versions pv,
18839
			   VIEW_DEF vd
18840
		 WHERE pv.pkg_id = pkg.pkg_id
18841
		   AND rel.pv_id = pv.pv_id
18842
		   AND rel.RTAG_ID = RtagId
18843
		   AND vd.VIEW_ID = ViewId
18844
		   AND vd.PKG_ID = pv.PKG_ID
18845
		 ORDER BY UPPER(pkg.PKG_NAME);
18846
 
18847
	END IF;	 
18848
 
18849
 
18850
END;
18851
/*-------------------------------------------------------------------------------------------------------*/
18852
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
18853
 
18854
BEGIN
18855
 
18856
	UPDATE PLANNED pl SET
18857
	pl.VIEW_ID = NewViewId
18858
	WHERE pl.PV_ID = PvId
18859
	  AND pl.RTAG_ID = RtagId;
18860
 
18861
END;
18862
/*-------------------------------------------------------------------------------------------------------*/
18863
END PK_PLANNED;
18864
/
18865
 
18866
CREATE OR REPLACE PACKAGE BODY  pk_rmapi
18867
IS
18868
/*
18869
------------------------------
18870
||  Last Modified:  Jeremy Tweddle
18871
||  Modified Date:  08/Feb/2008
18872
||  Body Version:   3.3
18873
------------------------------
18874
*/
18875
 
18876
   /*-------------------------------------------------------------------------------------------------------*/
18877
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
18878
      RETURN typecur
18879
   IS
18880
      npvid     NUMBER  := 0;
18881
      RECORDS   typecur;
18882
   BEGIN
18883
      BEGIN
18884
         -- Get PV_ID --
18885
         SELECT pv.pv_id
18886
           INTO npvid
18887
           FROM PACKAGES pkg, package_versions pv
18888
          WHERE pv.pkg_id = pkg.pkg_id
18889
            AND pkg.pkg_name = pkgname
18890
            AND pv.pkg_version = pkgversion;
18891
      EXCEPTION
18892
         WHEN NO_DATA_FOUND
18893
         THEN
18894
            raise_application_error (-20000, 'Package Not Found!');
18895
            --WHEN OTHERS THEN
18896
                  -- Consider logging the error and then re-raise
18897
            RAISE;
18898
      END;
18899
 
18900
      -- Finally get package dependencies --
18901
      OPEN RECORDS FOR
18902
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
18903
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
18904
          WHERE dep.pv_id = npvid
18905
            AND dpv.pkg_id = dpkg.pkg_id
18906
            AND dpv.pv_id = dep.dpv_id;
18907
 
18908
      RETURN RECORDS;
18909
   END;
18910
 
18911
/*-------------------------------------------------------------------------------------------------------*/
18912
   FUNCTION wip_iteration_package (
18913
      projname        VARCHAR2,
18914
      iterationname   VARCHAR2,
18915
      pkgname         VARCHAR2
18916
   )
18917
      RETURN typecur
18918
   IS
18919
      nrtagid   NUMBER  := 0;
18920
      RECORDS   typecur;
18921
   BEGIN
18922
      BEGIN
18923
         -- Get latest rtag_id --
18924
         SELECT rt.rtag_id
18925
           INTO nrtagid
18926
           FROM projects proj, release_tags rt
18927
          WHERE rt.proj_id = proj.proj_id
18928
            AND UPPER (proj.proj_name) = UPPER (projname)
18929
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
18930
 
18931
         IF (nrtagid IS NULL)
18932
         THEN
18933
            raise_application_error (-20000,
18934
                                     'Work In Progress is Not Found!');
18935
         END IF;
18936
      EXCEPTION
18937
         WHEN NO_DATA_FOUND
18938
         THEN
18939
            raise_application_error (-20000,
18940
                                     'Work In Progress is Not Found!');
18941
            RAISE;
18942
      END;
18943
 
18944
      -- Finally get package dependencies --
18945
      OPEN RECORDS FOR
18946
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
18947
                pv.src_path
18948
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
18949
          WHERE pv.pkg_id = pkg.pkg_id
18950
            AND wip.pv_id = pv.pv_id
18951
            AND wip.rtag_id = nrtagid
18952
            AND pkg.pkg_name = pkgname;
18953
 
18954
      RETURN RECORDS;
18955
   END;
18956
 
18957
/*-------------------------------------------------------------------------------------------------------*/
18958
   FUNCTION auto_make_release (
18959
      rtagid                   IN   NUMBER,
18960
      pkgname                  IN   VARCHAR2,
18961
      vext                     IN   VARCHAR2,
18962
      newpkgversion            IN   VARCHAR2,
18963
      label                    IN   VARCHAR2,
18964
      dependenciesimportlist   IN   VARCHAR2,
18965
      isrippled                IN   NUMBER,
18966
      username                 IN   VARCHAR2
18967
   )
18968
      RETURN NUMBER
18969
   IS
18970
      pkgid                           NUMBER;
18971
      pvid                            NUMBER                        := 0;
18972
      userid                          NUMBER;
18973
      dlocked                         VARCHAR2 (20)                 := NULL;
18974
      clonefrompvid                   NUMBER;
18975
      ssv_mm                          package_versions.v_mm%TYPE;
18976
      ssv_nmm                         package_versions.v_nmm%TYPE;
18977
      ssv_ext                         package_versions.v_ext%TYPE;
18978
      return_package_not_found        NUMBER                        := -1;
18979
      return_package_already_exists   NUMBER                        := -2;
18980
      return_not_approved             NUMBER                        := -3;
18981
   BEGIN
18982
      /*--------------- Business Rules Here -------------------*/
18983
      IF (rtagid IS NULL)
18984
      THEN
18985
         raise_application_error (-20000, 'RtagId must be supplied.');
18986
      END IF;
18987
 
18988
      IF (pkgname IS NULL)
18989
      THEN
18990
         raise_application_error (-20000, 'PkgName must be supplied.');
18991
      END IF;
18992
 
18993
      IF (newpkgversion IS NULL)
18994
      THEN
18995
         raise_application_error (-20000, 'PkgVersion must be supplied.');
18996
      END IF;
18997
 
18998
      IF (label IS NULL)
18999
      THEN
19000
         raise_application_error (-20000, 'Label must be supplied.');
19001
      END IF;
19002
 
19003
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
19004
      THEN
19005
         raise_application_error
19006
            (-20000,
19007
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
19008
            );
19009
      END IF;
19010
 
19011
      IF (username IS NULL)
19012
      THEN
19013
         raise_application_error (-20000, 'UserName must be supplied.');
19014
      END IF;
19015
 
19016
      -- Get user_id
19017
      BEGIN
19018
         SELECT usr.user_id
19019
           INTO userid
19020
           FROM users usr
19021
          WHERE UPPER (usr.user_name) = UPPER (username)
19022
            AND usr.is_disabled IS NULL;
19023
      EXCEPTION
19024
         WHEN NO_DATA_FOUND
19025
         THEN
19026
            raise_application_error (-20000,
19027
                                        'UserName '
19028
                                     || username
19029
                                     || ' is not valid or disabled.'
19030
                                    );
19031
      END;
19032
 
19033
/*-------------------------------------------------------*/
19034
 
19035
      -- Create package if necessary
19036
      IF isrippled = 1
19037
      THEN
19038
         /* Ripple Build */
19039
         BEGIN
19040
            -- Make sure that package does not exist
19041
            SELECT pv.pv_id
19042
              INTO pvid
19043
              FROM package_versions pv, PACKAGES pkg
19044
             WHERE pv.pkg_id = pkg.pkg_id
19045
               AND pkg.pkg_name = pkgname
19046
               AND pv.pkg_version = newpkgversion;
19047
         EXCEPTION
19048
            WHEN NO_DATA_FOUND
19049
            THEN
19050
               pvid := 0;
19051
         END;
19052
 
19053
         IF (pvid = 0)
19054
         THEN
19055
            -- Split current version in parts
19056
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19057
 
19058
            BEGIN
19059
               -- Find package to be replaced with thie ripple package
19060
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19061
               THEN
19062
                  SELECT pv.pv_id
19063
                    INTO clonefrompvid
19064
                    FROM PACKAGES pkg, package_versions pv,
19065
                         release_content rc
19066
                   WHERE rc.pv_id = pv.pv_id
19067
                     AND pv.pkg_id = pkg.pkg_id
19068
                     AND rc.rtag_id = rtagid
19069
                     AND pkg.pkg_name = pkgname
19070
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
19071
               ELSE
19072
                  SELECT pv.pv_id
19073
                    INTO clonefrompvid
19074
                    FROM PACKAGES pkg, package_versions pv,
19075
                         release_content rc
19076
                   WHERE rc.pv_id = pv.pv_id
19077
                     AND pv.pkg_id = pkg.pkg_id
19078
                     AND rc.rtag_id = rtagid
19079
                     AND pkg.pkg_name = pkgname
19080
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19081
               END IF;
19082
            EXCEPTION
19083
               WHEN NO_DATA_FOUND
19084
               THEN
19085
                  raise_application_error
19086
                                        (-20000,
19087
                                            'Cannot get CloneFromPvId. VExt='
19088
                                         || vext
19089
                                         || ', RtagId='
19090
                                         || rtagid
19091
                                         || ', PkgName='
19092
                                         || pkgname
19093
                                         || ', SSV_EXT='
19094
                                         || ssv_ext
19095
                                        );
19096
            END;
19097
 
19098
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19099
            THEN
19100
               -- Create package
19101
               seed_package_names_versions (pkgname,
19102
                                            newpkgversion,
19103
                                            userid,
19104
                                            pvid,
19105
                                            clonefrompvid
19106
                                           );
19107
            ELSE
19108
               -- Create package
19109
               seed_package_names_versions2 (pkgname,
19110
                                             newpkgversion,
19111
                                             userid,
19112
                                             pvid,
19113
                                             clonefrompvid
19114
                                            );
19115
            END IF;
19116
 
19117
            -- Update Package reason for release
19118
            UPDATE package_versions pv
19119
               SET pv.comments = 'Rippled Build.',
19120
                   pv.build_type = 'Y'
19121
             WHERE pv.pv_id = pvid;
19122
         ELSE
19123
            -- Package already exists, hence cannot be used for ripple build
19124
            RETURN return_package_already_exists;
19125
         END IF;
19126
      ELSE
19127
         /* Auto build from Pending area */
19128
 
19129
         -- Find package in pending area
19130
         BEGIN
19131
            SELECT pv.pv_id, pv.dlocked
19132
              INTO pvid, dlocked
19133
              FROM planned pl, package_versions pv, PACKAGES pkg
19134
             WHERE pl.pv_id = pv.pv_id
19135
               AND pv.pkg_id = pkg.pkg_id
19136
               AND pl.rtag_id = rtagid
19137
               AND pkg.pkg_name = pkgname
19138
               AND pv.dlocked = 'A'
19139
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19140
         EXCEPTION
19141
            WHEN NO_DATA_FOUND
19142
            THEN
19143
               pvid := 0;
19144
         END;
19145
 
19146
         IF (pvid = 0)
19147
         THEN
19148
            -- Package does not exist in pending area, hence report it
19149
            RETURN return_package_not_found;
19150
         ELSIF (dlocked != 'A')
19151
         THEN
19152
            -- Package is not approved for autobuild
19153
            RETURN return_not_approved;
19154
         END IF;
19155
      END IF;
19156
 
19157
      BEGIN
19158
         -- Import Dependencies
19159
         import_dependencies (pvid, dependenciesimportlist, userid);
19160
      END;
19161
 
19162
      BEGIN
19163
         -- Split current version in parts
19164
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19165
 
19166
         -- Update Package Details
19167
         UPDATE package_versions pv
19168
            SET pv.pkg_version = newpkgversion,
19169
                pv.v_ext = ssv_ext,
19170
                pv.v_mm = ssv_mm,
19171
                pv.v_nmm = ssv_nmm,
19172
                pv.pkg_label = label
19173
          WHERE pv.pv_id = pvid;
19174
      EXCEPTION
19175
         WHEN DUP_VAL_ON_INDEX
19176
         THEN
19177
            -- Package already exists, hence cannot be used for ripple build
19178
            RETURN return_package_already_exists;
19179
      END;
19180
 
19181
      -- Update the is_autobuildable
19182
      UPDATE package_versions
19183
         SET is_autobuildable = 'Y'
19184
       WHERE pv_id = pvid;
19185
 
19186
      -- Now release package
19187
      pk_environment.auto_make_release (pvid,
19188
                                        rtagid,
19189
                                        userid,
19190
                                        vext,
19191
                                        ssv_ext,
19192
                                        clonefrompvid
19193
                                       );
19194
 
19195
      --Now clean the PLANNED_VERSIONS table
19196
      SELECT pkg_id
19197
        INTO pkgid
19198
        FROM PACKAGES
19199
       WHERE pkg_name = pkgname;
19200
 
19201
      DELETE FROM planned_versions
19202
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
19203
 
19204
      RETURN pvid;
19205
   END;
19206
 
19207
/*-------------------------------------------------------------------------------------------------------*/
19208
   PROCEDURE import_dependencies (
19209
      pvid                     IN   NUMBER,
19210
      dependenciesimportlist   IN   VARCHAR2,
19211
      userid                   IN   NUMBER
19212
   )
19213
   IS
19214
/*
19215
|| DependenciesImportList Format:
19216
|| "pkgA","1.0.0";"pkgB","2.0.0";
19217
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
19218
*/
19219
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
19220
         INDEX BY VARCHAR2 (4000);
19221
 
19222
      seperator         VARCHAR2 (2)           := '||';
19223
      pkgname           VARCHAR2 (4000);
19224
      pkgversion        VARCHAR2 (4000);
19225
      buildtype         VARCHAR2 (50);
19226
      pkgid             NUMBER;
19227
      vext              VARCHAR2 (4000);
19228
      dpvid             NUMBER;
19229
      slist             VARCHAR2 (4000);
19230
      cbuildtypes       tdictionary;
19231
      dependencyrow     NUMBER;
19232
      sdependency       VARCHAR2 (4000);
19233
      first_pos         VARCHAR2 (4000);
19234
      second_pos        VARCHAR2 (4000);
19235
      third_pos         VARCHAR2 (4000);
19236
      forth_pos         VARCHAR2 (4000);
19237
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19238
 
19239
      CURSOR curbuildtype
19240
      IS
19241
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
19242
                dep.build_type
19243
           FROM package_dependencies dep, package_versions dpv
19244
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
19245
 
19246
      recbuildtype      curbuildtype%ROWTYPE;
19247
   BEGIN
19248
      slist := dependenciesimportlist;
19249
 
19250
      -- Preformat String
19251
      IF NOT slist IS NULL
19252
      THEN
19253
         slist := REPLACE (slist, ' ');                      -- Remove spaces
19254
         slist := REPLACE (slist, UTL_TCP.crlf);
19255
         -- Remove new line and carriage-return characters
19256
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
19257
      END IF;
19258
 
19259
      -- Get Current Dependencies
19260
      OPEN curbuildtype;
19261
 
19262
      FETCH curbuildtype
19263
       INTO recbuildtype;
19264
 
19265
      WHILE curbuildtype%FOUND
19266
      LOOP
19267
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
19268
 
19269
         FETCH curbuildtype
19270
          INTO recbuildtype;
19271
      END LOOP;
19272
 
19273
      CLOSE curbuildtype;
19274
 
19275
      -- Separate dependencies with ; separator
19276
      citemcollection := in_list_varchar2 (slist, ';');
19277
 
19278
      BEGIN
19279
         -- Remove old dependencies
19280
         DELETE FROM package_dependencies dep
19281
               WHERE dep.pv_id = pvid;
19282
 
19283
         -- Loop through dependencies
19284
         FOR dependencyrow IN 1 .. citemcollection.COUNT
19285
         LOOP
19286
            -- Extract pkg_name and pkg_version
19287
            sdependency := citemcollection (dependencyrow);
19288
            first_pos := INSTR (sdependency, '"', 1, 1);
19289
            second_pos := INSTR (sdependency, '"', 1, 2);
19290
            third_pos := INSTR (sdependency, '"', 1, 3);
19291
            forth_pos := INSTR (sdependency, '"', 1, 4);
19292
            pkgname :=
19293
               SUBSTR (sdependency,
19294
                       (first_pos + 1),
19295
                       (second_pos - first_pos - 1)
19296
                      );
19297
            pkgversion :=
19298
               SUBSTR (sdependency,
19299
                       (third_pos + 1),
19300
                       (forth_pos - third_pos - 1)
19301
                      );
19302
 
19303
            -- Dependency must exits to be linked against
19304
            BEGIN
19305
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
19306
                 INTO dpvid, pkgid, vext
19307
                 FROM package_versions pv, PACKAGES pkg
19308
                WHERE pv.pkg_id = pkg.pkg_id
19309
                  AND pkg.pkg_name = pkgname
19310
                  AND pv.pkg_version = pkgversion;
19311
            EXCEPTION
19312
               WHEN NO_DATA_FOUND
19313
               THEN
19314
                  raise_application_error
19315
                                  (-20000,
19316
                                      'Dependency ['
19317
                                   || pkgname
19318
                                   || ' '
19319
                                   || pkgversion
19320
                                   || '] does not exist yet and cannot be used!'
19321
                                  );
19322
            END;
19323
 
19324
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
19325
            BEGIN
19326
               buildtype := cbuildtypes (pkgid || seperator || vext);
19327
 
19328
               IF buildtype IS NULL
19329
               THEN
19330
                  -- Set build type to LinkPackageArchive by default
19331
                  buildtype := 'L';
19332
               END IF;
19333
            EXCEPTION
19334
               WHEN NO_DATA_FOUND
19335
               THEN
19336
                  buildtype := 'L';
19337
            END;
19338
 
19339
            -- Insert Dependencies
19340
            update_package_dependency (pvid,
19341
                                       pkgname,
19342
                                       pkgversion,
19343
                                       buildtype,
19344
                                       userid,
19345
 
19346
                                      );
19347
         END LOOP;
19348
      END;
19349
   END;
19350
 
19351
/*-------------------------------------------------------------------------------------------------------*/
19352
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
19353
      RETURN VARCHAR2
19354
   IS
19355
      pkgversion   VARCHAR2 (4000);
19356
   BEGIN
19357
      BEGIN
19358
         SELECT pv.pkg_version
19359
           INTO pkgversion
19360
           FROM PACKAGES pkg, release_content rc, package_versions pv
19361
          WHERE pv.pv_id = rc.pv_id
19362
            AND pkg.pkg_id = pv.pkg_id
19363
            AND pkg.pkg_name = pkgname
19364
            AND rc.rtag_id = rtagid;
19365
 
19366
         RETURN pkgversion;
19367
      END;
19368
   END;
19369
 
19370
/*-------------------------------------------------------------------------------------------------------*/
19371
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
19372
      RETURN VARCHAR2
19373
   IS
19374
      pkgversion   VARCHAR2 (4000);
19375
   BEGIN
19376
      BEGIN
19377
         SELECT pv.pkg_version
19378
           INTO pkgversion
19379
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
19380
          WHERE pv.pv_id = wip.pv_id
19381
            AND pkg.pkg_id = pv.pkg_id
19382
            AND pkg.pkg_name = pkgname
19383
            AND wip.rtag_id = rtagid;
19384
 
19385
         IF pkgversion IS NULL
19386
         THEN
19387
            SELECT pv.pkg_version
19388
              INTO pkgversion
19389
              FROM PACKAGES pkg, planned pl, package_versions pv
19390
             WHERE pv.pv_id = pl.pv_id
19391
               AND pkg.pkg_id = pv.pkg_id
19392
               AND pkg.pkg_name = pkgname
19393
               AND pl.rtag_id = rtagid;
19394
         END IF;
19395
 
19396
         RETURN pkgversion;
19397
      END;
19398
   END;
19399
 
19400
/*-------------------------------------------------------------------------------------------------------*/
19401
   PROCEDURE update_dash_board (rtagid IN NUMBER)
19402
   IS
19403
      projid       NUMBER;
19404
      projiddb     NUMBER;
19405
      total        NUMBER;
19406
      auto_total   NUMBER;
19407
      rtagiddb     NUMBER;
19408
   BEGIN
19409
      SELECT COUNT (*)
19410
        INTO total
19411
        FROM release_content rc, package_versions pv
19412
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
19413
 
19414
      SELECT COUNT (*)
19415
        INTO auto_total
19416
        FROM release_content rc, package_versions pv
19417
       WHERE pv.pv_id = rc.pv_id
19418
         AND pv.is_autobuildable = 'Y'
19419
         AND rc.rtag_id = rtagid;
19420
 
19421
      BEGIN
19422
         SELECT rtag_id
19423
           INTO rtagiddb
19424
           FROM dash_board
19425
          WHERE rtag_id = rtagid;
19426
 
19427
         SELECT proj_id
19428
           INTO projiddb
19429
           FROM dash_board
19430
          WHERE rtag_id = rtagid;
19431
      EXCEPTION
19432
         WHEN NO_DATA_FOUND
19433
         THEN
19434
            rtagiddb := '';
19435
      END;
19436
 
19437
      IF rtagiddb IS NULL
19438
      THEN
19439
         SELECT proj_id
19440
           INTO projid
19441
           FROM release_tags
19442
          WHERE rtag_id = rtagid;
19443
 
19444
         INSERT INTO dash_board
19445
                     (proj_id, rtag_id, last_build_time, automated_packages,
19446
                      total_packages
19447
                     )
19448
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
19449
                      total
19450
                     );
19451
      ELSE
19452
         UPDATE dash_board
19453
            SET last_build_time = ora_sysdatetime,
19454
                automated_packages = auto_total,
19455
                total_packages = total
19456
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
19457
      END IF;
19458
   END;
19459
 
19460
/*-------------------------------------------------------------------------------------------------------*/
19461
   FUNCTION exclude_from_build (
19462
      pvid          IN   NUMBER,
19463
      spkgversion   IN   VARCHAR2,
19464
      rtagid        IN   NUMBER,
19465
      username      IN   VARCHAR2
19466
   )
19467
      RETURN NUMBER
19468
   IS
19469
      userid              NUMBER;
19470
      outerrcode          NUMBER;
19471
      pkgid               NUMBER;
19472
 
19473
      CURSOR dnr_duplicate_cur
19474
      IS
19475
         SELECT *
19476
           FROM do_not_ripple
19477
          WHERE pv_id = pvid AND rtag_id = rtagid;
19478
 
19479
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19480
   BEGIN
19481
      outerrcode := -1;       -- Set default return error code to ERROR state
19482
 
19483
      /*--------------- Business Rules Here -------------------*/
19484
      IF (rtagid IS NULL)
19485
      THEN
19486
         RETURN outerrcode;
19487
--         raise_application_error (-20000, 'RtagId must be supplied.');
19488
      END IF;
19489
 
19490
      IF (pvid IS NULL)
19491
      THEN
19492
         RETURN outerrcode;
19493
--         raise_application_error (-20000, 'PvId must be supplied.');
19494
      END IF;
19495
 
19496
      IF (username IS NULL)
19497
      THEN
19498
         RETURN outerrcode;
19499
--         raise_application_error (-20000, 'UserName must be supplied.');
19500
      END IF;
19501
 
19502
      -- Get user_id
19503
      BEGIN
19504
         SELECT usr.user_id
19505
           INTO userid
19506
           FROM users usr
19507
          WHERE UPPER (usr.user_name) = UPPER (username)
19508
            AND usr.is_disabled IS NULL;
19509
      EXCEPTION
19510
         WHEN NO_DATA_FOUND
19511
         THEN
19512
            RETURN outerrcode;
19513
--            raise_application_error (-20000,
19514
--                                        'UserName '
19515
--                                     || username
19516
--                                     || ' is not valid or disabled.'
19517
--                                    );
19518
      END;
19519
 
19520
      OPEN dnr_duplicate_cur;
19521
 
19522
      FETCH dnr_duplicate_cur
19523
       INTO dnr_duplicate_rec;
19524
 
19525
      IF dnr_duplicate_cur%FOUND
19526
      THEN
19527
         outerrcode := 0;
19528
      END IF;
19529
 
19530
      IF dnr_duplicate_cur%NOTFOUND
19531
      THEN
19532
         /* No duplicate recordset */
19533
         unripple_package (pvid, rtagid, userid);
19534
         outerrcode := 0;                            -- Set return to SUCCESS
19535
      END IF;
19536
 
19537
      CLOSE dnr_duplicate_cur;
19538
 
19539
      SELECT pkg_id
19540
        INTO pkgid
19541
        FROM package_versions
19542
       WHERE pv_id = pvid;
19543
 
19544
      DELETE FROM planned_versions
19545
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19546
 
19547
      RETURN outerrcode;
19548
   END;
19549
 
19550
/*-------------------------------------------------------------------------------------------------------*/
19551
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
19552
   IS
19553
   BEGIN
19554
      INSERT INTO abt_action_log
19555
                  (rcon_id, action_datetime, action
19556
                  )
19557
           VALUES (rconid, ora_sysdatetime, action
19558
                  );
19559
   END;
19560
 
19561
/*-------------------------------------------------------------------------------------------------------*/
19562
   FUNCTION insert_package_metrics (
19563
      rtagid                   IN   NUMBER,
19564
      pkgname                  IN   VARCHAR2,
19565
      vext                     IN   VARCHAR2,
19566
      metricstring             IN   VARCHAR2
19567
   )
19568
      RETURN NUMBER
19569
   IS
19570
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19571
      pvid                     NUMBER                 := 0;
19572
      rownumber                NUMBER;
19573
      rowcontent               VARCHAR2(4000);
19574
      metricname               VARCHAR2(1000);
19575
      metricvalue              VARCHAR2(4000);
19576
      return_insert_error      NUMBER                 := -1;
19577
      return_insert_success    NUMBER                 := 0;
19578
 
19579
      /* Metrics */
19580
      branches                 NUMBER;
19581
      branchlist               VARCHAR2(4000);
19582
      codefiles                NUMBER;
19583
      ignoredfiles             NUMBER;
19584
      directories              NUMBER;
19585
      directorydepth           NUMBER;
19586
      totalfiles               NUMBER;
19587
      makefiles                NUMBER;
19588
      blanklines               NUMBER;
19589
      codelines                NUMBER;
19590
      commentlines             NUMBER;
19591
 
19592
   BEGIN
19593
      /*--------------- Business Rules Here -------------------*/
19594
      IF (rtagid IS NULL)
19595
      THEN
19596
         RETURN return_insert_error;
19597
      END IF;
19598
 
19599
      IF (pkgname IS NULL)
19600
      THEN
19601
         RETURN return_insert_error;
19602
      END IF;
19603
 
19604
      IF (metricstring IS NULL)
19605
      THEN
19606
         RETURN return_insert_error;
19607
      END IF;
19608
 
19609
      BEGIN
19610
         SELECT pv.pv_id
19611
           INTO pvid
19612
           FROM package_versions pv, packages pkg, release_content rc
19613
          WHERE pv.pkg_id = pkg.pkg_id
19614
            AND rc.rtag_id = rtagid
19615
            AND pv.pv_id = rc.pv_id
19616
            AND pkg.pkg_name = pkgname
19617
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19618
      EXCEPTION
19619
           WHEN NO_DATA_FOUND
19620
           THEN
19621
                pvid := 0;
19622
      END;
19623
 
19624
      citemcollection := in_list_varchar2 (metricstring, ';');
19625
 
19626
      FOR rownumber IN 1 .. citemcollection.COUNT
19627
      LOOP
19628
         rowcontent := citemcollection(rownumber);
19629
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
19630
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
19631
 
19632
         IF    metricname = 'ccbranch.count' THEN branches := metricvalue;
19633
         ELSIF metricname = 'ccbranch.list' THEN branchlist := metricvalue;
19634
         ELSIF metricname = 'code.files' THEN codefiles := metricvalue;
19635
         ELSIF metricname = 'code.ignored' THEN ignoredfiles := metricvalue;
19636
         ELSIF metricname = 'count.dir' THEN directories := metricvalue;
19637
         ELSIF metricname = 'count.dirdepth' THEN directorydepth := metricvalue;
19638
         ELSIF metricname = 'count.file' THEN totalfiles := metricvalue;
19639
         ELSIF metricname = 'count.makefile' THEN makefiles := metricvalue;
19640
         ELSIF metricname = 'lines.blank' THEN blanklines := metricvalue;
19641
         ELSIF metricname = 'lines.code' THEN codelines := metricvalue;
19642
         ELSIF metricname = 'lines.comment' THEN commentlines := metricvalue;
19643
         END IF;
19644
      END LOOP;
19645
 
19646
      IF (pvid > 0)
19647
      THEN
19648
         -- Delete any existing entries for this package version to makes sure our data is untainted
19649
         DELETE FROM package_metrics pm
19650
         WHERE pm.pv_id = pvid;
19651
 
19652
         -- Insert the new data into the metrics table
19653
         INSERT INTO package_metrics
19654
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
19655
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
19656
                     )
19657
              VALUES (pvid, branches, branchlist, codefiles, ignoredfiles, directories, directorydepth,
19658
                      totalfiles, makefiles, blanklines, codelines, commentlines, ora_sysdatetime
19659
                     );
19660
 
19661
         -- Now update the Release_Metrics Table
19662
         update_release_metrics(rtagid);
19663
 
19664
         RETURN return_insert_success;
19665
      ELSE
19666
         RETURN return_insert_error;
19667
      END IF;
19668
   END;
19669
 
19670
/*-------------------------------------------------------------------------------------------------------*/
19671
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
19672
   IS
19673
      totalpackages       NUMBER;
19674
      autobuilt           NUMBER;
19675
      linesofcode         NUMBER;
19676
      unittested          NUMBER;
19677
      autotested          NUMBER;
19678
      numOfbranches       NUMBER;
19679
      lastbuildtime       DATE;
19680
   BEGIN
19681
      IF (rtagid > 0)
19682
      THEN
19683
         -- Get the total number of packages in this release and the number of
19684
         -- those that are autobuilt
19685
         SELECT COUNT (DISTINCT rc.pv_id),
19686
                COUNT (DISTINCT autobuilt_qry.pv_id)
19687
           INTO totalpackages, autobuilt
19688
           FROM release_content rc,
19689
                package_versions pv,
19690
                (
19691
                 SELECT rc.pv_id
19692
                   FROM release_content rc,
19693
                        package_versions pv
19694
                  WHERE pv.is_autobuildable = 'Y'
19695
                    AND pv.pv_id = rc.pv_id
19696
                    AND rc.rtag_id = rtagid
19697
                ) autobuilt_qry
19698
          WHERE pv.pv_id = rc.pv_id
19699
            AND rc.rtag_id = rtagid
19700
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
19701
 
19702
         -- Get the build time of the last package built in this release and the
19703
         -- total number of lines of code
19704
         SELECT MAX(pm.created_stamp),
19705
                SUM(pm.code_lines)
19706
           INTO lastbuildtime, linesofcode
19707
           FROM package_metrics pm, release_content rc
19708
          WHERE pm.pv_id = rc.pv_id
19709
            AND rc.rtag_id = rtagid;
19710
 
19711
         -- Get the number of packages with unit tests in this release and the
19712
         -- number of those that are autotested
19713
         SELECT COUNT(DISTINCT ut.pv_id),
19714
                COUNT(DISTINCT autotest_qry.pv_id)
19715
           INTO unittested, autotested
19716
           FROM unit_tests ut,
19717
                release_content rc,
19718
                (
19719
                 SELECT ut.pv_id
19720
                   FROM unit_tests ut, release_content rc
19721
                  WHERE ut.pv_id = rc.pv_id
19722
                    AND rc.rtag_id = rtagid
19723
                    AND ut.test_types_fk = 7
19724
                ) autotest_qry
19725
          WHERE ut.pv_id = rc.pv_id
19726
            AND rc.rtag_id = rtagid
19727
            AND autotest_qry.pv_id (+) = ut.pv_id;
19728
 
19729
         -- Count the number of unique branches in the packages in this release.
19730
--         SELECT COUNT(DISTINCT branch) INTO numOfbranches
19731
--           FROM (
19732
--                SELECT pv_id,
19733
--                       regexp_substr(str, '[^,]+', 1, level) branch,
19734
--                       level lv,
19735
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
19736
--                  FROM (
19737
--                       SELECT pm.pv_id,
19738
--                              ','||pm.branch_list str
19739
--                         FROM package_metrics pm,
19740
--                              release_content rc
19741
--                        WHERE pm.pv_id = rc.pv_id
19742
--                          AND rc.rtag_id = rtagid
19743
--                       )
19744
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
19745
--                )
19746
--          WHERE lv != lg;
19747
 
19748
         UPDATE release_metrics rm
19749
            SET rm.total_packages = totalpackages,
19750
                rm.autobuilt = autobuilt,
19751
                rm.lines_of_code = linesofcode,
19752
                rm.unit_tested = unittested,
19753
                rm.autotested = autotested,
19754
--                rm.branches = numOfbranches,
19755
                rm.last_build_time = lastbuildtime
19756
          WHERE rtag_id = rtagid;
19757
 
19758
         IF (SQL%ROWCOUNT = 0)
19759
         THEN
19760
            INSERT INTO release_metrics
19761
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
19762
                         autotested, last_build_time
19763
                        )
19764
                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
19765
                         autotested, lastbuildtime
19766
                        );
19767
         END IF;
19768
--         IF (SQL%ROWCOUNT = 0)
19769
--         THEN
19770
--            INSERT INTO release_metrics
19771
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
19772
--                         autotested, branches, last_build_time
19773
--                        )
19774
--                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
19775
--                         autotested, numOfbranches, lastbuildtime
19776
--                        );
19777
--         END IF;
19778
--      ELSE
19779
--         raise_application_error (-20000, 'RtagId must be supplied.');
19780
      END IF;
19781
   END;
19782
/*-------------------------------------------------------------------------------------------------------*/
19783
END pk_rmapi;
19784
/
19785
 
19786
CREATE OR REPLACE PACKAGE BODY pk_environment_test
19787
IS
19788
/*
19789
------------------------------
19790
||  Last Modified:  Rupesh Solanki
19791
||  Modified Date:  29/Jan/2007
19792
||  Body Version:   1.1
19793
------------------------------
19794
*/
19795
 
19796
   /*-------------------------------------------------------------------------------------------------------*/
19797
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
19798
      RETURN NUMBER
19799
   IS
19800
   BEGIN
19801
       /*
19802
      || N - unlocked
19803
      || Y - release and locked
19804
      || P - penging approval
19805
      || A - approved package ready for auto-build
19806
      */
19807
      IF cdlock = 'N' OR cdlock = 'R'
19808
      THEN
19809
         -- WORK IN PROGRESS --
19810
         RETURN 0;
19811
      ELSIF cdlock = 'P' OR cdlock = 'A'
19812
      THEN
19813
         -- PENDING --
19814
         RETURN 1;
19815
      ELSIF cdlock = 'Y'
19816
      THEN
19817
         -- RELEASED --
19818
         RETURN 2;
19819
      ELSE
19820
         -- NOT FOUND --
19821
         raise_application_error
19822
                         (-20000,
19823
                             'Cannot decide where to place package. [cDlock='
19824
                          || cdlock
19825
                          || ']'
19826
                         );
19827
      END IF;
19828
   END;
19829
 
19830
/*-------------------------------------------------------------------------------------------------------*/
19831
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
19832
      RETURN NUMBER
19833
   IS
19834
      envtab    NUMBER            := -1;
19835
 
19836
      CURSOR curarea
19837
      IS
19838
         SELECT 2 AS envtab
19839
           FROM release_content rc
19840
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
19841
         UNION
19842
         SELECT 0 AS envtab
19843
           FROM work_in_progress wip
19844
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
19845
         UNION
19846
         SELECT 1 AS envtab
19847
           FROM planned pl
19848
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
19849
 
19850
      recarea   curarea%ROWTYPE;
19851
   BEGIN
19852
      OPEN curarea;
19853
 
19854
      FETCH curarea
19855
       INTO recarea;
19856
 
19857
      IF curarea%FOUND
19858
      THEN
19859
         envtab := recarea.envtab;
19860
      END IF;
19861
 
19862
      CLOSE curarea;
19863
 
19864
      RETURN envtab;
19865
   END;
19866
 
19867
/*-------------------------------------------------------------------------------------------------------*/
19868
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
19869
      RETURN NUMBER
19870
   IS
19871
      ispatch   package_versions.dlocked%TYPE;
19872
      viewid    NUMBER                          := -1;
19873
 
19874
      CURSOR curview
19875
      IS
19876
         SELECT rc.base_view_id AS view_id
19877
           FROM release_content rc
19878
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
19879
         UNION
19880
         SELECT wip.view_id AS view_id
19881
           FROM work_in_progress wip
19882
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
19883
         UNION
19884
         SELECT pl.view_id AS view_id
19885
           FROM planned pl
19886
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
19887
 
19888
      recview   curview%ROWTYPE;
19889
   BEGIN
19890
      -- Get dlock state
19891
      SELECT pv.is_patch
19892
        INTO ispatch
19893
        FROM package_versions pv
19894
       WHERE pv.pv_id = pvid;
19895
 
19896
      -- Decide which view id should package go under.
19897
      IF (ispatch != 'Y') OR (ispatch IS NULL)
19898
      THEN
19899
         -- Get VIEW ID of Package
19900
         OPEN curview;
19901
 
19902
         FETCH curview
19903
          INTO recview;
19904
 
19905
         IF curview%FOUND
19906
         THEN
19907
            viewid := recview.view_id;
19908
         ELSE
19909
            raise_application_error
19910
               (-20000,
19911
                   'Cannot find view_id to proceed. [PvId='
19912
                || pvid
19913
                || ']. The current version may not exist in the release anymore.'
19914
               );
19915
         END IF;
19916
 
19917
         CLOSE curview;
19918
      ELSE
19919
         -- Get VIEW ID of Patch (view id of parent package)
19920
         SELECT rc.base_view_id
19921
           INTO viewid
19922
           FROM release_content rc, package_patches ppv
19923
          WHERE rc.rtag_id = rtagid
19924
            AND rc.pv_id = ppv.pv_id
19925
            AND ppv.patch_id = pvid;
19926
      END IF;
19927
 
19928
      RETURN viewid;
19929
   END;
19930
 
19931
/*-------------------------------------------------------------------------------------------------------*/
19932
   PROCEDURE add_package (
19933
      pvid     IN   NUMBER,
19934
      viewid   IN   NUMBER,
19935
      rtagid   IN   NUMBER,
19936
      userid   IN   NUMBER
19937
   )
19938
   IS
19939
      dlocked   package_versions.dlocked%TYPE;
19940
      envtab    NUMBER;
19941
   BEGIN
19942
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
19943
      THEN
19944
         -- Get dlock state
19945
         SELECT pv.dlocked
19946
           INTO dlocked
19947
           FROM package_versions pv
19948
          WHERE pv.pv_id = pvid;
19949
 
19950
         -- Get which area should go under
19951
         envtab := select_environment_area (dlocked);
19952
         -- Log
19953
         log_action (pvid, 'action', userid, 'Start of Package Add...');
19954
 
19955
         -- Remove Package
19956
         IF envtab = 0
19957
         THEN
19958
            -- WORK IN PROGRESS --
19959
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
19960
         ELSIF envtab = 1
19961
         THEN
19962
            -- PENDING --
19963
            pk_planned.add_package (pvid, viewid, rtagid, userid);
19964
         ELSIF envtab = 2
19965
         THEN
19966
            -- RELEASED --
19967
            -- NOTE: this package will be replaced with matching package
19968
            pk_release.add_package (pvid, viewid, rtagid, userid);
19969
            -- Now do post Release Actions
19970
            pk_release.run_post_actions (pvid, rtagid);
19971
         END IF;
19972
 
19973
         -- Log
19974
         log_action (pvid, 'action', userid, 'End of Package Add...');
19975
      END IF;
19976
   END;
19977
 
19978
/*-------------------------------------------------------------------------------------------------------*/
19979
   PROCEDURE add_package_bulk (
19980
      pvidlist   IN   VARCHAR2,
19981
      viewid     IN   NUMBER,
19982
      rtagid     IN   NUMBER,
19983
      userid     IN   NUMBER
19984
   )
19985
   IS
19986
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
19987
                                                                          ();
19988
      dlocked        package_versions.dlocked%TYPE;
19989
      pvid           NUMBER;
19990
      envtab         NUMBER;
19991
   BEGIN
19992
      /*--------------- Business Rules Here -------------------*/
19993
      IF (pvidlist IS NULL)
19994
      THEN
19995
         raise_application_error (-20000,
19996
                                  'Please select at least one package.'
19997
                                 );
19998
      END IF;
19999
 
20000
/*-------------------------------------------------------*/
20001
      nidcollector := in_list_number (pvidlist);
20002
 
20003
      FOR i IN 1 .. nidcollector.COUNT
20004
      LOOP
20005
         pvid := nidcollector (i);
20006
         add_package (pvid, viewid, rtagid, userid);
20007
      END LOOP;
20008
   END;
20009
 
20010
/*-------------------------------------------------------------------------------------------------------*/
20011
   PROCEDURE replace_package (
20012
      newpvid   IN   NUMBER,
20013
      oldpvid   IN   NUMBER,
20014
      rtagid    IN   NUMBER,
20015
      userid    IN   NUMBER
20016
   )
20017
   IS
20018
      dlocked        package_versions.dlocked%TYPE;
20019
      viewid         NUMBER;
20020
      envtab         NUMBER;
20021
      ROWCOUNT       NUMBER;
20022
      creleasemode   CHAR (1);
20023
      npkgid         NUMBER;
20024
   BEGIN
20025
      /*--------------- Business Rules Here -------------------*/
20026
      -- Check if oldPvId exists. It could have been removed
20027
      SELECT COUNT (pv.pv_id)
20028
        INTO ROWCOUNT
20029
        FROM package_versions pv
20030
       WHERE pv.pv_id = oldpvid;
20031
 
20032
/*-------------------------------------------------------*/
20033
 
20034
      /* This procedure is usually used by "History" option in Release Manager */
20035
 
20036
      -- Get dlock state
20037
      SELECT pv.dlocked
20038
        INTO dlocked
20039
        FROM package_versions pv
20040
       WHERE pv.pv_id = newpvid;
20041
 
20042
      -- Get VIEW_ID ---
20043
      IF ROWCOUNT = 1
20044
      THEN
20045
         viewid := get_view_location (oldpvid, rtagid);
20046
      ELSE
20047
         -- Set ViewID to default
20048
         viewid := 7;
20049
      END IF;
20050
 
20051
      -- Get which area should go under
20052
      envtab := select_environment_area (dlocked);
20053
      -- Log
20054
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
20055
 
20056
      -- Replace package
20057
      IF envtab = 0
20058
      THEN
20059
         -- WORK IN PROGRESS --
20060
 
20061
         -- Delete old package
20062
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
20063
         -- Add new package
20064
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
20065
      ELSIF envtab = 1
20066
      THEN
20067
         -- PENDING --
20068
 
20069
         -- Delete old package
20070
         pk_planned.remove_package (oldpvid, rtagid, userid);
20071
         -- Add new package
20072
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
20073
      ELSIF envtab = 2
20074
      THEN
20075
         -- RELEASED --
20076
 
20077
         -- Delete old package
20078
         pk_release.remove_package (oldpvid, rtagid, userid);
20079
         -- Add new package
20080
         pk_release.add_package (newpvid, viewid, rtagid, userid);
20081
         -- Now do post Release Actions
20082
         pk_release.run_post_actions (newpvid, rtagid);
20083
      END IF;
20084
 
20085
      -- Log
20086
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
20087
   END;
20088
 
20089
/*-------------------------------------------------------------------------------------------------------*/
20090
   FUNCTION remove_package (
20091
      pvid          IN   NUMBER,
20092
      rtagid        IN   NUMBER,
20093
      userid        IN   NUMBER,
20094
      forceremove   IN   CHAR
20095
   )
20096
      RETURN NUMBER
20097
   IS
20098
      envtab        NUMBER;
20099
      isused        BOOLEAN;
20100
      recordcount   NUMBER;
20101
   BEGIN
20102
/*--------------- Business Rules Here -------------------*/
20103
/*-------------------------------------------------------*/
20104
 
20105
      -- Find location of package
20106
      envtab := get_package_area (pvid, rtagid);
20107
 
20108
      -- Remove Package
20109
      IF envtab = 0
20110
      THEN
20111
         -- WORK IN PROGRESS --
20112
         -- Delete package
20113
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
20114
         RETURN 0;
20115
      ELSIF envtab = 1
20116
      THEN
20117
         -- PENDING --
20118
         -- Delete package
20119
         pk_planned.remove_package (pvid, rtagid, userid);
20120
         RETURN 0;
20121
      ELSIF envtab = 2
20122
      THEN
20123
         -- RELEASED --
20124
 
20125
         -- Check if is used by other packages
20126
         isused := TRUE;
20127
 
20128
         IF forceremove = 'N'
20129
         THEN
20130
            SELECT COUNT (pv.pv_id)
20131
              INTO recordcount
20132
              FROM (SELECT dpv.pkg_id, dpv.v_ext
20133
                      FROM release_content rc,
20134
                           package_dependencies dep,
20135
                           package_versions dpv
20136
                     WHERE rc.rtag_id = rtagid
20137
                       AND rc.pv_id = dep.pv_id
20138
                       AND dep.dpv_id = dpv.pv_id) rdep,
20139
                   package_versions pv
20140
             WHERE pv.pkg_id = rdep.pkg_id
20141
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
20142
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
20143
               AND pv.pv_id = pvid;
20144
 
20145
            IF recordcount > 0
20146
            THEN
20147
               RETURN 1;                    -- Return 1 as package being used
20148
            ELSE
20149
               isused := FALSE;
20150
            END IF;
20151
         END IF;
20152
 
20153
         IF forceremove = 'Y' OR NOT isused
20154
         THEN
20155
            -- Delete old package
20156
            pk_release.remove_package (pvid, rtagid, userid);
20157
            -- Now do post Release Actions
20158
            pk_release.run_post_actions (pvid, rtagid);
20159
            RETURN 0;
20160
         END IF;
20161
      END IF;
20162
   END;
20163
 
20164
/*-------------------------------------------------------------------------------------------------------*/
20165
   PROCEDURE get_environment_items (
20166
      viewtype           IN       NUMBER,
20167
      userid             IN       NUMBER,
20168
      rtagid             IN       NUMBER,
20169
      sviewidshowlist    IN       VARCHAR2,
20170
      ntruerecordcount   OUT      NUMBER,
20171
      recordset          OUT      typecur
20172
   )
20173
   IS
20174
   BEGIN
20175
      -- Get true record count because views can give false count
20176
      SELECT COUNT (pl.pv_id)
20177
        INTO ntruerecordcount
20178
        FROM environment_view pl
20179
       WHERE pl.rtag_id = rtagid;
20180
 
20181
      IF viewtype = 1
20182
      THEN
20183
         /*--- GUEST VIEW ---*/
20184
         OPEN recordset FOR
20185
            SELECT   *
20186
                FROM (
20187
                      /* Base Views collapsed */
20188
                      SELECT DISTINCT vi.view_id, vi.view_name,
20189
                                      TO_NUMBER (NULL) AS pkg_state,
20190
                                      TO_NUMBER (NULL) AS deprecated_state,
20191
                                      TO_NUMBER (NULL) AS pv_id,
20192
                                      NULL AS pkg_name, NULL AS pkg_version,
20193
                                      NULL AS dlocked, NULL AS pv_description
20194
                                 FROM environment_view rel, views vi
20195
                                WHERE rel.view_id = vi.view_id
20196
                                  AND rtag_id = rtagid
20197
                                  AND rel.view_id NOT IN (
20198
                                         SELECT *
20199
                                           FROM THE
20200
                                                   (SELECT CAST
20201
                                                              (in_list_number
20202
                                                                  (sviewidshowlist
20203
                                                                  ) AS relmgr_number_tab_t
20204
                                                              )
20205
                                                      FROM DUAL
20206
                                                   ))
20207
                      UNION
20208
                      /* Base Views expanded */
20209
                      SELECT vi.view_id, vi.view_name,
20210
                             DECODE (rel.pkg_state,
20211
                                     NULL, 0,
20212
                                     rel.pkg_state
20213
                                    ) AS pkg_state,
20214
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20215
                             pv.pkg_version, pv.dlocked, pv.pv_description
20216
                        FROM environment_view rel,
20217
                             PACKAGES pkg,
20218
                             package_versions pv,
20219
                             views vi
20220
                       WHERE pv.pkg_id = pkg.pkg_id
20221
                         AND rel.pv_id = pv.pv_id
20222
                         AND rel.view_id = vi.view_id
20223
                         AND rel.view_id IN (
20224
                                SELECT *
20225
                                  FROM THE
20226
                                          (SELECT CAST
20227
                                                     (in_list_number
20228
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20229
                                                     )
20230
                                             FROM DUAL
20231
                                          ))
20232
                         AND rtag_id = rtagid) ord
20233
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20234
      ELSIF viewtype = 2
20235
      THEN
20236
         /*--- PERSONAL VIEW ---*/
20237
         OPEN recordset FOR
20238
            SELECT   *
20239
                FROM (
20240
                      /* Base Views collapsed */
20241
                      SELECT DISTINCT vi.view_id, vi.view_name,
20242
                                      TO_NUMBER (NULL) AS pkg_state,
20243
                                      TO_NUMBER (NULL) AS deprecated_state,
20244
                                      TO_NUMBER (NULL) AS pv_id,
20245
                                      NULL AS pkg_name, NULL AS pkg_version,
20246
                                      NULL AS dlocked, NULL AS pv_description
20247
                                 FROM environment_view rel,
20248
                                      view_settings vs,
20249
                                      views vi
20250
                                WHERE rel.view_id = vi.view_id
20251
                                  AND vs.view_id = rel.view_id
20252
                                  AND vs.user_id = userid
20253
                                  AND rtag_id = rtagid
20254
                                  AND rel.view_id NOT IN (
20255
                                         SELECT *
20256
                                           FROM THE
20257
                                                   (SELECT CAST
20258
                                                              (in_list_number
20259
                                                                  (sviewidshowlist
20260
                                                                  ) AS relmgr_number_tab_t
20261
                                                              )
20262
                                                      FROM DUAL
20263
                                                   ))
20264
                      UNION
20265
                      /* Base Views expanded */
20266
                      SELECT vi.view_id, vi.view_name,
20267
                             DECODE (rel.pkg_state,
20268
                                     NULL, 0,
20269
                                     rel.pkg_state
20270
                                    ) AS pkg_state,
20271
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20272
                             pv.pkg_version, pv.dlocked, pv.pv_description
20273
                        FROM environment_view rel,
20274
                             PACKAGES pkg,
20275
                             package_versions pv,
20276
                             views vi,
20277
                             view_settings vs
20278
                       WHERE pv.pkg_id = pkg.pkg_id
20279
                         AND rel.pv_id = pv.pv_id
20280
                         AND rel.view_id = vi.view_id
20281
                         AND vs.view_id = vi.view_id
20282
                         AND vs.user_id = userid
20283
                         AND rel.view_id IN (
20284
                                SELECT *
20285
                                  FROM THE
20286
                                          (SELECT CAST
20287
                                                     (in_list_number
20288
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20289
                                                     )
20290
                                             FROM DUAL
20291
                                          ))
20292
                         AND rtag_id = rtagid
20293
                      UNION
20294
                      /* Private Views collapsed */
20295
                      SELECT vi.view_id, vi.view_name,
20296
                             TO_NUMBER (NULL) AS pkg_state,
20297
                             TO_NUMBER (NULL) AS deprecated_state,
20298
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20299
                             NULL AS pkg_version, NULL AS dlocked,
20300
                             NULL AS pv_description
20301
                        FROM view_settings vs,
20302
                             view_def vd,
20303
                             views vi,
20304
                             environment_view rel,
20305
                             package_versions pv
20306
                       WHERE vs.view_id = vi.view_id
20307
                         AND rel.pv_id = pv.pv_id
20308
                         AND vd.pkg_id = pv.pkg_id
20309
                         AND vd.view_id = vi.view_id
20310
                         AND vi.base_view = 'N'
20311
                         AND rel.rtag_id = rtagid
20312
                         AND vs.user_id = userid
20313
                         AND vi.view_id NOT IN (
20314
                                SELECT *
20315
                                  FROM THE
20316
                                          (SELECT CAST
20317
                                                     (in_list_number
20318
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20319
                                                     )
20320
                                             FROM DUAL
20321
                                          ))
20322
                      UNION
20323
                      /* Private Views expanded */
20324
                      SELECT vi.view_id, vi.view_name,
20325
                             DECODE (rel.pkg_state,
20326
                                     NULL, 0,
20327
                                     rel.pkg_state
20328
                                    ) AS pkg_state,
20329
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20330
                             pv.pkg_version, pv.dlocked, pv.pv_description
20331
                        FROM users usr,
20332
                             view_settings vs,
20333
                             view_def vd,
20334
                             views vi,
20335
                             environment_view rel,
20336
                             PACKAGES pkg,
20337
                             package_versions pv
20338
                       WHERE vs.user_id = usr.user_id
20339
                         AND vs.view_id = vi.view_id
20340
                         AND vd.view_id = vi.view_id
20341
                         AND pv.pkg_id = pkg.pkg_id
20342
                         AND rel.pv_id = pv.pv_id
20343
                         AND rel.rtag_id = rtagid
20344
                         AND vd.pkg_id = pkg.pkg_id
20345
                         AND vi.base_view = 'N'
20346
                         AND vi.view_id IN (
20347
                                SELECT *
20348
                                  FROM THE
20349
                                          (SELECT CAST
20350
                                                     (in_list_number
20351
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20352
                                                     )
20353
                                             FROM DUAL
20354
                                          ))
20355
                         AND usr.user_id = userid) ord
20356
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20357
      END IF;
20358
   END;
20359
 
20360
/*-------------------------------------------------------------------------------------------------------*/
20361
   PROCEDURE get_released_items (
20362
      viewtype           IN       NUMBER,
20363
      userid             IN       NUMBER,
20364
      rtagid             IN       NUMBER,
20365
      sviewidshowlist    IN       VARCHAR2,
20366
      ntruerecordcount   OUT      NUMBER,
20367
      recordset          OUT      typecur
20368
   )
20369
   IS
20370
   BEGIN
20371
      -- Get true record count because views can give false count
20372
      SELECT COUNT (rc.pv_id)
20373
        INTO ntruerecordcount
20374
        FROM release_content rc
20375
       WHERE rc.rtag_id = rtagid;
20376
 
20377
      IF viewtype = 1
20378
      THEN
20379
         /*--- GUEST VIEW ---*/
20380
         OPEN recordset FOR
20381
            SELECT   *
20382
                FROM (
20383
                      /* Base Views collapsed */
20384
                      SELECT DISTINCT vi.view_id, vi.view_name,
20385
                                      TO_NUMBER (NULL) AS pkg_state,
20386
                                      TO_NUMBER (NULL) AS deprecated_state,
20387
                                      TO_NUMBER (NULL) AS pv_id,
20388
                                      NULL AS pkg_name, NULL AS pkg_version,
20389
                                      NULL AS dlocked, NULL AS pv_description
20390
                                 FROM release_content rel, views vi
20391
                                WHERE rel.base_view_id = vi.view_id
20392
                                  AND rtag_id = rtagid
20393
                                  AND rel.base_view_id NOT IN (
20394
                                         SELECT *
20395
                                           FROM THE
20396
                                                   (SELECT CAST
20397
                                                              (in_list_number
20398
                                                                  (sviewidshowlist
20399
                                                                  ) AS relmgr_number_tab_t
20400
                                                              )
20401
                                                      FROM DUAL
20402
                                                   ))
20403
                      UNION
20404
                      /* Base Views expanded */
20405
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20406
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20407
                             pv.pkg_version, pv.dlocked, pv.pv_description
20408
                        FROM release_content rel,
20409
                             PACKAGES pkg,
20410
                             package_versions pv,
20411
                             views vi
20412
                       WHERE pv.pkg_id = pkg.pkg_id
20413
                         AND rel.pv_id = pv.pv_id
20414
                         AND rel.base_view_id = vi.view_id
20415
                         AND rel.base_view_id IN (
20416
                                SELECT *
20417
                                  FROM THE
20418
                                          (SELECT CAST
20419
                                                     (in_list_number
20420
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20421
                                                     )
20422
                                             FROM DUAL
20423
                                          ))
20424
                         AND rtag_id = rtagid) ord
20425
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20426
      ELSIF viewtype = 2
20427
      THEN
20428
         /*--- PERSONAL VIEW ---*/
20429
         OPEN recordset FOR
20430
            SELECT   *
20431
                FROM (
20432
                      /* Base Views collapsed */
20433
                      SELECT DISTINCT vi.view_id, vi.view_name,
20434
                                      TO_NUMBER (NULL) AS pkg_state,
20435
                                      TO_NUMBER (NULL) AS deprecated_state,
20436
                                      TO_NUMBER (NULL) AS pv_id,
20437
                                      NULL AS pkg_name, NULL AS pkg_version,
20438
                                      NULL AS dlocked, NULL AS pv_description
20439
                                 FROM release_content rel,
20440
                                      view_settings vs,
20441
                                      views vi
20442
                                WHERE rel.base_view_id = vi.view_id
20443
                                  AND vs.view_id = rel.base_view_id
20444
                                  AND vs.user_id = userid
20445
                                  AND rtag_id = rtagid
20446
                                  AND rel.base_view_id NOT IN (
20447
                                         SELECT *
20448
                                           FROM THE
20449
                                                   (SELECT CAST
20450
                                                              (in_list_number
20451
                                                                  (sviewidshowlist
20452
                                                                  ) AS relmgr_number_tab_t
20453
                                                              )
20454
                                                      FROM DUAL
20455
                                                   ))
20456
                      UNION
20457
                      /* Base Views expanded */
20458
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20459
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20460
                             pv.pkg_version, pv.dlocked, pv.pv_description
20461
                        FROM release_content rel,
20462
                             PACKAGES pkg,
20463
                             package_versions pv,
20464
                             views vi,
20465
                             view_settings vs
20466
                       WHERE pv.pkg_id = pkg.pkg_id
20467
                         AND rel.pv_id = pv.pv_id
20468
                         AND rel.base_view_id = vi.view_id
20469
                         AND vs.view_id = vi.view_id
20470
                         AND vs.user_id = userid
20471
                         AND rel.base_view_id IN (
20472
                                SELECT *
20473
                                  FROM THE
20474
                                          (SELECT CAST
20475
                                                     (in_list_number
20476
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20477
                                                     )
20478
                                             FROM DUAL
20479
                                          ))
20480
                         AND rtag_id = rtagid
20481
                      UNION
20482
                      /* Private Views collapsed */
20483
                      SELECT vi.view_id, vi.view_name,
20484
                             TO_NUMBER (NULL) AS pkg_state,
20485
                             TO_NUMBER (NULL) AS deprecated_state,
20486
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20487
                             NULL AS pkg_version, NULL AS dlocked,
20488
                             NULL AS pv_description
20489
                        FROM view_settings vs,
20490
                             view_def vd,
20491
                             views vi,
20492
                             release_content rel,
20493
                             package_versions pv
20494
                       WHERE vs.view_id = vi.view_id
20495
                         AND rel.pv_id = pv.pv_id
20496
                         AND vd.pkg_id = pv.pkg_id
20497
                         AND vd.view_id = vi.view_id
20498
                         AND vi.base_view = 'N'
20499
                         AND rel.rtag_id = rtagid
20500
                         AND vs.user_id = userid
20501
                         AND vi.view_id NOT IN (
20502
                                SELECT *
20503
                                  FROM THE
20504
                                          (SELECT CAST
20505
                                                     (in_list_number
20506
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20507
                                                     )
20508
                                             FROM DUAL
20509
                                          ))
20510
                      UNION
20511
                      /* Private Views expanded */
20512
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20513
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20514
                             pv.pkg_version, pv.dlocked, pv.pv_description
20515
                        FROM users usr,
20516
                             view_settings vs,
20517
                             view_def vd,
20518
                             views vi,
20519
                             release_content rel,
20520
                             PACKAGES pkg,
20521
                             package_versions pv
20522
                       WHERE vs.user_id = usr.user_id
20523
                         AND vs.view_id = vi.view_id
20524
                         AND vd.view_id = vi.view_id
20525
                         AND pv.pkg_id = pkg.pkg_id
20526
                         AND rel.pv_id = pv.pv_id
20527
                         AND rel.rtag_id = rtagid
20528
                         AND vd.pkg_id = pkg.pkg_id
20529
                         AND vi.base_view = 'N'
20530
                         AND vi.view_id IN (
20531
                                SELECT *
20532
                                  FROM THE
20533
                                          (SELECT CAST
20534
                                                     (in_list_number
20535
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20536
                                                     )
20537
                                             FROM DUAL
20538
                                          ))
20539
                         AND usr.user_id = userid) ord
20540
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20541
      END IF;
20542
   END;
20543
 
20544
/*-------------------------------------------------------------------------------------------------------*/
20545
   PROCEDURE get_work_in_progress_items (
20546
      viewtype           IN       NUMBER,
20547
      userid             IN       NUMBER,
20548
      rtagid             IN       NUMBER,
20549
      sviewidshowlist    IN       VARCHAR2,
20550
      ntruerecordcount   OUT      NUMBER,
20551
      recordset          OUT      typecur
20552
   )
20553
   IS
20554
   BEGIN
20555
      -- Get true record count because views can give false count
20556
      SELECT COUNT (wip.pv_id)
20557
        INTO ntruerecordcount
20558
        FROM work_in_progress wip
20559
       WHERE wip.rtag_id = rtagid;
20560
 
20561
      IF viewtype = 1
20562
      THEN
20563
         /*--- GUEST VIEW ---*/
20564
         OPEN recordset FOR
20565
            SELECT   *
20566
                FROM (
20567
                      /* Base Views collapsed */
20568
                      SELECT DISTINCT vi.view_id, vi.view_name,
20569
                                      TO_NUMBER (NULL) AS pkg_state,
20570
                                      TO_NUMBER (NULL) AS deprecated_state,
20571
                                      TO_NUMBER (NULL) AS pv_id,
20572
                                      NULL AS pkg_name, NULL AS pkg_version,
20573
                                      NULL AS dlocked, NULL AS pv_description
20574
                                 FROM work_in_progress rel, views vi
20575
                                WHERE rel.view_id = vi.view_id
20576
                                  AND rtag_id = rtagid
20577
                                  AND rel.view_id NOT IN (
20578
                                         SELECT *
20579
                                           FROM THE
20580
                                                   (SELECT CAST
20581
                                                              (in_list_number
20582
                                                                  (sviewidshowlist
20583
                                                                  ) AS relmgr_number_tab_t
20584
                                                              )
20585
                                                      FROM DUAL
20586
                                                   ))
20587
                      UNION
20588
                      /* Base Views expanded */
20589
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20590
 
20591
                             --rel.pkg_state,
20592
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20593
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20594
                             pv.pv_description
20595
                        FROM work_in_progress rel,
20596
                             PACKAGES pkg,
20597
                             package_versions pv,
20598
                             views vi
20599
                       WHERE pv.pkg_id = pkg.pkg_id
20600
                         AND rel.pv_id = pv.pv_id
20601
                         AND rel.view_id = vi.view_id
20602
                         AND rel.view_id IN (
20603
                                SELECT *
20604
                                  FROM THE
20605
                                          (SELECT CAST
20606
                                                     (in_list_number
20607
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20608
                                                     )
20609
                                             FROM DUAL
20610
                                          ))
20611
                         AND rtag_id = rtagid) ord
20612
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20613
      ELSIF viewtype = 2
20614
      THEN
20615
         /*--- PERSONAL VIEW ---*/
20616
         OPEN recordset FOR
20617
            SELECT   *
20618
                FROM (
20619
                      /* Base Views collapsed */
20620
                      SELECT DISTINCT vi.view_id, vi.view_name,
20621
                                      TO_NUMBER (NULL) AS pkg_state,
20622
                                      TO_NUMBER (NULL) AS deprecated_state,
20623
                                      TO_NUMBER (NULL) AS pv_id,
20624
                                      NULL AS pkg_name, NULL AS pkg_version,
20625
                                      NULL AS dlocked, NULL AS pv_description
20626
                                 FROM work_in_progress rel,
20627
                                      view_settings vs,
20628
                                      views vi
20629
                                WHERE rel.view_id = vi.view_id
20630
                                  AND vs.view_id = rel.view_id
20631
                                  AND vs.user_id = userid
20632
                                  AND rtag_id = rtagid
20633
                                  AND rel.view_id NOT IN (
20634
                                         SELECT *
20635
                                           FROM THE
20636
                                                   (SELECT CAST
20637
                                                              (in_list_number
20638
                                                                  (sviewidshowlist
20639
                                                                  ) AS relmgr_number_tab_t
20640
                                                              )
20641
                                                      FROM DUAL
20642
                                                   ))
20643
                      UNION
20644
                      /* Base Views expanded */
20645
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20646
 
20647
                             --rel.pkg_state,
20648
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20649
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20650
                             pv.pv_description
20651
                        FROM work_in_progress rel,
20652
                             PACKAGES pkg,
20653
                             package_versions pv,
20654
                             views vi,
20655
                             view_settings vs
20656
                       WHERE pv.pkg_id = pkg.pkg_id
20657
                         AND rel.pv_id = pv.pv_id
20658
                         AND rel.view_id = vi.view_id
20659
                         AND vs.view_id = vi.view_id
20660
                         AND vs.user_id = userid
20661
                         AND rel.view_id IN (
20662
                                SELECT *
20663
                                  FROM THE
20664
                                          (SELECT CAST
20665
                                                     (in_list_number
20666
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20667
                                                     )
20668
                                             FROM DUAL
20669
                                          ))
20670
                         AND rtag_id = rtagid
20671
                      UNION
20672
                      /* Private Views collapsed */
20673
                      SELECT vi.view_id, vi.view_name,
20674
                             TO_NUMBER (NULL) AS pkg_state,
20675
                             TO_NUMBER (NULL) AS deprecated_state,
20676
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20677
                             NULL AS pkg_version, NULL AS dlocked,
20678
                             NULL AS pv_description
20679
                        FROM view_settings vs,
20680
                             view_def vd,
20681
                             views vi,
20682
                             work_in_progress rel,
20683
                             package_versions pv
20684
                       WHERE vs.view_id = vi.view_id
20685
                         AND rel.pv_id = pv.pv_id
20686
                         AND vd.pkg_id = pv.pkg_id
20687
                         AND vd.view_id = vi.view_id
20688
                         AND vi.base_view = 'N'
20689
                         AND rel.rtag_id = rtagid
20690
                         AND vs.user_id = userid
20691
                         AND vi.view_id NOT IN (
20692
                                SELECT *
20693
                                  FROM THE
20694
                                          (SELECT CAST
20695
                                                     (in_list_number
20696
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20697
                                                     )
20698
                                             FROM DUAL
20699
                                          ))
20700
                      UNION
20701
                      /* Private Views expanded */
20702
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20703
 
20704
                             --rel.pkg_state,
20705
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20706
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20707
                             pv.pv_description
20708
                        FROM users usr,
20709
                             view_settings vs,
20710
                             view_def vd,
20711
                             views vi,
20712
                             work_in_progress rel,
20713
                             PACKAGES pkg,
20714
                             package_versions pv
20715
                       WHERE vs.user_id = usr.user_id
20716
                         AND vs.view_id = vi.view_id
20717
                         AND vd.view_id = vi.view_id
20718
                         AND pv.pkg_id = pkg.pkg_id
20719
                         AND rel.pv_id = pv.pv_id
20720
                         AND rel.rtag_id = rtagid
20721
                         AND vd.pkg_id = pkg.pkg_id
20722
                         AND vi.base_view = 'N'
20723
                         AND vi.view_id IN (
20724
                                SELECT *
20725
                                  FROM THE
20726
                                          (SELECT CAST
20727
                                                     (in_list_number
20728
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20729
                                                     )
20730
                                             FROM DUAL
20731
                                          ))
20732
                         AND usr.user_id = userid) ord
20733
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20734
      END IF;
20735
   END;
20736
 
20737
/*-------------------------------------------------------------------------------------------------------*/
20738
   PROCEDURE get_pending_items (
20739
      viewtype           IN       NUMBER,
20740
      userid             IN       NUMBER,
20741
      rtagid             IN       NUMBER,
20742
      sviewidshowlist    IN       VARCHAR2,
20743
      ntruerecordcount   OUT      NUMBER,
20744
      recordset          OUT      typecur
20745
   )
20746
   IS
20747
   BEGIN
20748
      -- Get true record count because views can give false count
20749
      SELECT COUNT (pl.pv_id)
20750
        INTO ntruerecordcount
20751
        FROM planned pl
20752
       WHERE pl.rtag_id = rtagid;
20753
 
20754
      IF viewtype = 1
20755
      THEN
20756
         /*--- GUEST VIEW ---*/
20757
         OPEN recordset FOR
20758
            SELECT   *
20759
                FROM (
20760
                      /* Base Views collapsed */
20761
                      SELECT DISTINCT vi.view_id, vi.view_name,
20762
                                      TO_NUMBER (NULL) AS pkg_state,
20763
                                      TO_NUMBER (NULL) AS deprecated_state,
20764
                                      TO_NUMBER (NULL) AS pv_id,
20765
                                      NULL AS pkg_name, NULL AS pkg_version,
20766
                                      NULL AS dlocked, NULL AS pv_description
20767
                                 FROM planned rel, views vi
20768
                                WHERE rel.view_id = vi.view_id
20769
                                  AND rtag_id = rtagid
20770
                                  AND rel.view_id NOT IN (
20771
                                         SELECT *
20772
                                           FROM THE
20773
                                                   (SELECT CAST
20774
                                                              (in_list_number
20775
                                                                  (sviewidshowlist
20776
                                                                  ) AS relmgr_number_tab_t
20777
                                                              )
20778
                                                      FROM DUAL
20779
                                                   ))
20780
                      UNION
20781
                      /* Base Views expanded */
20782
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20783
 
20784
                             --rel.pkg_state,
20785
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20786
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20787
                             pv.pv_description
20788
                        FROM planned rel,
20789
                             PACKAGES pkg,
20790
                             package_versions pv,
20791
                             views vi
20792
                       WHERE pv.pkg_id = pkg.pkg_id
20793
                         AND rel.pv_id = pv.pv_id
20794
                         AND rel.view_id = vi.view_id
20795
                         AND rel.view_id IN (
20796
                                SELECT *
20797
                                  FROM THE
20798
                                          (SELECT CAST
20799
                                                     (in_list_number
20800
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20801
                                                     )
20802
                                             FROM DUAL
20803
                                          ))
20804
                         AND rtag_id = rtagid) ord
20805
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20806
      ELSIF viewtype = 2
20807
      THEN
20808
         /*--- PERSONAL VIEW ---*/
20809
         OPEN recordset FOR
20810
            SELECT   *
20811
                FROM (
20812
                      /* Base Views collapsed */
20813
                      SELECT DISTINCT vi.view_id, vi.view_name,
20814
                                      TO_NUMBER (NULL) AS pkg_state,
20815
                                      TO_NUMBER (NULL) AS deprecated_state,
20816
                                      TO_NUMBER (NULL) AS pv_id,
20817
                                      NULL AS pkg_name, NULL AS pkg_version,
20818
                                      NULL AS dlocked, NULL AS pv_description
20819
                                 FROM planned rel, view_settings vs, views vi
20820
                                WHERE rel.view_id = vi.view_id
20821
                                  AND vs.view_id = rel.view_id
20822
                                  AND vs.user_id = userid
20823
                                  AND rtag_id = rtagid
20824
                                  AND rel.view_id NOT IN (
20825
                                         SELECT *
20826
                                           FROM THE
20827
                                                   (SELECT CAST
20828
                                                              (in_list_number
20829
                                                                  (sviewidshowlist
20830
                                                                  ) AS relmgr_number_tab_t
20831
                                                              )
20832
                                                      FROM DUAL
20833
                                                   ))
20834
                      UNION
20835
                      /* Base Views expanded */
20836
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20837
 
20838
                             --rel.pkg_state,
20839
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20840
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20841
                             pv.pv_description
20842
                        FROM planned rel,
20843
                             PACKAGES pkg,
20844
                             package_versions pv,
20845
                             views vi,
20846
                             view_settings vs
20847
                       WHERE pv.pkg_id = pkg.pkg_id
20848
                         AND rel.pv_id = pv.pv_id
20849
                         AND rel.view_id = vi.view_id
20850
                         AND vs.view_id = vi.view_id
20851
                         AND vs.user_id = userid
20852
                         AND rel.view_id IN (
20853
                                SELECT *
20854
                                  FROM THE
20855
                                          (SELECT CAST
20856
                                                     (in_list_number
20857
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20858
                                                     )
20859
                                             FROM DUAL
20860
                                          ))
20861
                         AND rtag_id = rtagid
20862
                      UNION
20863
                      /* Private Views collapsed */
20864
                      SELECT 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, NULL AS pkg_name,
20868
                             NULL AS pkg_version, NULL AS dlocked,
20869
                             NULL AS pv_description
20870
                        FROM view_settings vs,
20871
                             view_def vd,
20872
                             views vi,
20873
                             planned rel,
20874
                             package_versions pv
20875
                       WHERE vs.view_id = vi.view_id
20876
                         AND rel.pv_id = pv.pv_id
20877
                         AND vd.pkg_id = pv.pkg_id
20878
                         AND vd.view_id = vi.view_id
20879
                         AND vi.base_view = 'N'
20880
                         AND rel.rtag_id = rtagid
20881
                         AND vs.user_id = userid
20882
                         AND vi.view_id NOT IN (
20883
                                SELECT *
20884
                                  FROM THE
20885
                                          (SELECT CAST
20886
                                                     (in_list_number
20887
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20888
                                                     )
20889
                                             FROM DUAL
20890
                                          ))
20891
                      UNION
20892
                      /* Private Views expanded */
20893
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20894
 
20895
                             --rel.pkg_state,
20896
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20897
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20898
                             pv.pv_description
20899
                        FROM users usr,
20900
                             view_settings vs,
20901
                             view_def vd,
20902
                             views vi,
20903
                             planned rel,
20904
                             PACKAGES pkg,
20905
                             package_versions pv
20906
                       WHERE vs.user_id = usr.user_id
20907
                         AND vs.view_id = vi.view_id
20908
                         AND vd.view_id = vi.view_id
20909
                         AND pv.pkg_id = pkg.pkg_id
20910
                         AND rel.pv_id = pv.pv_id
20911
                         AND rel.rtag_id = rtagid
20912
                         AND vd.pkg_id = pkg.pkg_id
20913
                         AND vi.base_view = 'N'
20914
                         AND vi.view_id IN (
20915
                                SELECT *
20916
                                  FROM THE
20917
                                          (SELECT CAST
20918
                                                     (in_list_number
20919
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20920
                                                     )
20921
                                             FROM DUAL
20922
                                          ))
20923
                         AND usr.user_id = userid) ord
20924
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20925
      END IF;
20926
   END;
20927
 
20928
/*-------------------------------------------------------------------------------------------------------*/
20929
   PROCEDURE get_view_content (
20930
      rtagid      IN       NUMBER,
20931
      viewid      IN       NUMBER,
20932
      recordset   OUT      typecur
20933
   )
20934
   IS
20935
      isbaseview   CHAR (1);
20936
   BEGIN
20937
      -- Check if the view is BASE VIEW
20938
      SELECT vi.base_view
20939
        INTO isbaseview
20940
        FROM views vi
20941
       WHERE vi.view_id = viewid;
20942
 
20943
      IF (isbaseview = 'Y')
20944
      THEN
20945
         -- Get Base view content
20946
         OPEN recordset FOR
20947
            SELECT   DECODE (rel.pkg_state,
20948
                             NULL, 0,
20949
                             rel.pkg_state
20950
                            ) AS pkg_state,
20951
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20952
                     pv.pkg_version, pv.dlocked, pv.pv_description,
20953
                     pv.build_type
20954
                FROM environment_view rel, PACKAGES pkg, package_versions pv
20955
               WHERE pv.pkg_id = pkg.pkg_id
20956
                 AND rel.pv_id = pv.pv_id
20957
                 AND rel.view_id = viewid
20958
                 AND rel.rtag_id = rtagid
20959
            ORDER BY UPPER (pkg.pkg_name);
20960
      ELSE
20961
         -- Get non base view content
20962
         OPEN recordset FOR
20963
            SELECT   DECODE (rel.pkg_state,
20964
                             NULL, 0,
20965
                             rel.pkg_state
20966
                            ) AS pkg_state,
20967
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20968
                     pv.pkg_version, pv.dlocked, pv.pv_description,
20969
                     pv.build_type
20970
                FROM environment_view rel,
20971
                     PACKAGES pkg,
20972
                     package_versions pv,
20973
                     view_def vd
20974
               WHERE pv.pkg_id = pkg.pkg_id
20975
                 AND rel.pv_id = pv.pv_id
20976
                 AND rel.rtag_id = rtagid
20977
                 AND vd.view_id = viewid
20978
                 AND vd.pkg_id = pv.pkg_id
20979
            ORDER BY UPPER (pkg.pkg_name);
20980
      END IF;
20981
   END;
20982
 
20983
/*-------------------------------------------------------------------------------------------------------*/
20984
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
20985
      RETURN NUMBER
20986
   IS
20987
      envtab             NUMBER;
20988
      returnvalue        NUMBER;
20989
      return_not_found   NUMBER := -1;
20990
   BEGIN
20991
      envtab := get_package_area (pvid, rtagid);
20992
 
20993
      IF envtab = 0
20994
      THEN
20995
         -- WORK IN PROGRESS --
20996
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
20997
      ELSIF envtab = 1
20998
      THEN
20999
         -- PENDING --
21000
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
21001
      ELSIF envtab = 2
21002
      THEN
21003
         -- RELEASED --
21004
         returnvalue := pk_release.get_package_view (pvid, rtagid);
21005
      ELSE
21006
         -- This may be a Patch not located anywhere but unlocked
21007
         returnvalue := return_not_found;
21008
      END IF;
21009
 
21010
      RETURN returnvalue;
21011
   END;
21012
 
21013
/*-------------------------------------------------------------------------------------------------------*/
21014
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21015
   IS
21016
      viewid          NUMBER;
21017
      envtab          NUMBER;
21018
      ispatch         CHAR (1) := NULL;
21019
      buildtype       CHAR (1) := NULL;
21020
      lastversionid   NUMBER;
21021
   BEGIN
21022
      -- Check if package is patch
21023
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21024
        INTO ispatch, buildtype, lastversionid
21025
        FROM package_versions pv
21026
       WHERE pv.pv_id = pvid;
21027
 
21028
      -- Get ViewId
21029
      viewid := get_package_view (pvid, rtagid);
21030
      -- Remove from current area
21031
      envtab := pk_environment.get_package_area (pvid, rtagid);
21032
 
21033
      -- Make sure that package was in work-in-progress or pending before makeing it release
21034
      -- Exclude patches, ripple builds
21035
      IF (envtab < 0)
21036
      THEN
21037
         -- Not found in work-in-progress or pending
21038
         IF (ispatch IS NULL) AND (buildtype = 'M')
21039
         THEN
21040
            raise_application_error (-20000,
21041
                                     'This package cannot be released here.'
21042
                                    );
21043
         END IF;
21044
      END IF;
21045
 
21046
      -- Log
21047
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21048
 
21049
      IF envtab = 0
21050
      THEN
21051
         -- WORK IN PROGRESS --
21052
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21053
      ELSIF envtab = 1
21054
      THEN
21055
         -- PENDING --
21056
         pk_planned.remove_package (pvid, rtagid, userid);
21057
      END IF;
21058
 
21059
      -- Change package state
21060
      pk_package.change_state (pvid, 'Y', userid);
21061
 
21062
      -- Make sure it is valid BASE VIEW
21063
      IF viewid < 1
21064
      THEN
21065
         viewid := 7;                            -- This is default base view
21066
      END IF;
21067
 
21068
      IF (ispatch IS NULL)
21069
      THEN
21070
         -- Add package to new area
21071
         pk_release.add_package (pvid, viewid, rtagid, userid);
21072
      END IF;
21073
 
21074
      -- Now do post Release Actions
21075
      pk_release.run_post_actions (pvid, rtagid);
21076
 
21077
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21078
      DELETE FROM do_not_ripple
21079
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21080
 
21081
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21082
      DELETE FROM advisory_ripple
21083
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21084
 
21085
      -- Log
21086
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21087
   END;
21088
 
21089
/*-------------------------------------------------------------------------------------------------------*/
21090
   PROCEDURE auto_make_release (
21091
      pvid            IN   NUMBER,
21092
      rtagid          IN   NUMBER,
21093
      userid          IN   NUMBER,
21094
      vext            IN   package_versions.v_ext%TYPE,
21095
      ssv_ext         IN   package_versions.v_ext%TYPE,
21096
      clonefrompvid   IN   NUMBER
21097
   )
21098
   IS
21099
      viewid          NUMBER;
21100
      envtab          NUMBER;
21101
      ispatch         CHAR (1) := NULL;
21102
      buildtype       CHAR (1) := NULL;
21103
      lastversionid   NUMBER;
21104
   BEGIN
21105
      -- Check if package is patch
21106
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21107
        INTO ispatch, buildtype, lastversionid
21108
        FROM package_versions pv
21109
       WHERE pv.pv_id = pvid;
21110
 
21111
      IF vext <> ssv_ext
21112
      THEN
21113
         -- Get ViewId
21114
         viewid := get_package_view (clonefrompvid, rtagid);
21115
         -- Remove from current area
21116
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
21117
      ELSE
21118
         -- Get ViewId
21119
         viewid := get_package_view (pvid, rtagid);
21120
         -- Remove from current area
21121
         envtab := pk_environment.get_package_area (pvid, rtagid);
21122
      END IF;
21123
 
21124
      -- Make sure that package was in work-in-progress or pending before makeing it release
21125
      -- Exclude patches, ripple builds
21126
      IF (envtab < 0)
21127
      THEN
21128
         -- Not found in work-in-progress or pending
21129
         IF (ispatch IS NULL) AND (buildtype = 'M')
21130
         THEN
21131
            raise_application_error (-20000,
21132
                                     'This package cannot be released here.'
21133
                                    );
21134
         END IF;
21135
      END IF;
21136
 
21137
      -- Log
21138
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21139
 
21140
      IF vext <> ssv_ext
21141
      THEN
21142
         IF envtab = 0
21143
         THEN
21144
            -- WORK IN PROGRESS --
21145
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
21146
                                                userid);
21147
         ELSIF envtab = 1
21148
         THEN
21149
            -- PENDING --
21150
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
21151
         ELSIF envtab = 2
21152
         THEN
21153
            -- RELEASED --
21154
            pk_release.remove_package (clonefrompvid, rtagid, userid);
21155
         END IF;
21156
      ELSE
21157
         IF envtab = 0
21158
         THEN
21159
            -- WORK IN PROGRESS --
21160
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
21161
         ELSIF envtab = 1
21162
         THEN
21163
            -- PENDING --
21164
            pk_planned.remove_package (pvid, rtagid, userid);
21165
         END IF;
21166
      END IF;
21167
 
21168
      -- Change package state
21169
      pk_package.change_state (pvid, 'Y', userid);
21170
 
21171
      -- Make sure it is valid BASE VIEW
21172
      IF viewid < 1
21173
      THEN
21174
         viewid := 7;                            -- This is default base view
21175
      END IF;
21176
 
21177
      IF (ispatch IS NULL)
21178
      THEN
21179
         -- Add package to new area
21180
         pk_release.add_package (pvid, viewid, rtagid, userid);
21181
      END IF;
21182
 
21183
      -- Now do post Release Actions
21184
      pk_release.run_post_actions (pvid, rtagid);
21185
      -- Now update the Dash_Board Table
21186
      pk_rmapi.update_dash_board (rtagid);
21187
 
21188
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21189
      DELETE FROM do_not_ripple
21190
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21191
 
21192
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21193
      DELETE FROM advisory_ripple
21194
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21195
 
21196
      -- Log
21197
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21198
   END;
21199
 
21200
/*-------------------------------------------------------------------------------------------------------*/
21201
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21202
   IS
21203
      viewid   NUMBER;
21204
      envtab   NUMBER;
21205
   BEGIN
21206
      -- Get ViewId
21207
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
21208
      viewid := get_package_view (pvid, rtagid);
21209
      -- Remove from current area
21210
      envtab := pk_environment.get_package_area (pvid, rtagid);
21211
      -- Log
21212
      log_action (pvid,
21213
                  'action',
21214
                  userid,
21215
                  'Start of Make Package UnRelease...'
21216
                 );
21217
 
21218
      IF envtab = 2
21219
      THEN
21220
         -- RELEASE AREA --
21221
         pk_release.remove_package (pvid, rtagid, userid);
21222
      ELSIF envtab = 1
21223
      THEN
21224
         -- PENDING --
21225
         pk_planned.remove_package (pvid, rtagid, userid);
21226
      END IF;
21227
 
21228
      -- Change package state
21229
      pk_package.change_state (pvid, 'N', userid);
21230
 
21231
      -- Make sure it is valid BASE VIEW
21232
      IF viewid < 1
21233
      THEN
21234
         viewid := 7;                            -- This is default base view
21235
      END IF;
21236
 
21237
      -- Add package to new area
21238
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21239
      -- Now do post Release Actions
21240
      pk_release.run_post_actions (pvid, rtagid);
21241
      -- Log
21242
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
21243
   END;
21244
 
21245
/*-------------------------------------------------------------------------------------------------------*/
21246
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21247
   IS
21248
      viewid      NUMBER;
21249
      ispatch     CHAR (1) := NULL;
21250
      buildtype   CHAR (1) := NULL;
21251
   BEGIN
21252
      -- Check if package is patch
21253
      SELECT pv.is_patch, pv.build_type
21254
        INTO ispatch, buildtype
21255
        FROM package_versions pv
21256
       WHERE pv.pv_id = pvid;
21257
 
21258
      -- Get ViewId
21259
      viewid := get_package_view (pvid, rtagid);
21260
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
21261
 
21262
      -- Log
21263
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
21264
 
21265
      IF (ispatch IS NULL)
21266
      THEN
21267
         -- Remove from current area
21268
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21269
         -- Change package state
21270
         pk_package.change_state (pvid, 'P', userid);
21271
         -- Add package to new area
21272
         pk_planned.add_package (pvid, viewid, rtagid, userid);
21273
      END IF;
21274
 
21275
      -- Log
21276
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
21277
   END;
21278
 
21279
/*-------------------------------------------------------------------------------------------------------*/
21280
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21281
   IS
21282
   BEGIN
21283
      -- Log
21284
      log_action (pvid,
21285
                  'action',
21286
                  userid,
21287
                  'Start of Package Pending Approval...'
21288
                 );
21289
      -- Change package state
21290
      pk_package.change_state (pvid, 'A', userid);
21291
      -- Log
21292
      log_action (pvid, 'action', userid,
21293
                  'End of Package Pending Approval...');
21294
   END;
21295
 
21296
/*-------------------------------------------------------------------------------------------------------*/
21297
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21298
   IS
21299
      viewid   NUMBER;
21300
   BEGIN
21301
      -- Get ViewId
21302
      viewid := get_package_view (pvid, rtagid);
21303
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
21304
 
21305
      -- Log
21306
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21307
      -- Remove from current area
21308
      pk_planned.remove_package (pvid, rtagid, userid);
21309
      -- Change package state
21310
      pk_package.change_state (pvid, 'R', userid);
21311
      -- Add package to new area
21312
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21313
      -- Log
21314
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21315
   END;
21316
 
21317
/*-------------------------------------------------------------------------------------------------------*/
21318
   PROCEDURE change_package_view (
21319
      pvid        IN   NUMBER,
21320
      rtagid      IN   NUMBER,
21321
      newviewid   IN   NUMBER
21322
   )
21323
   IS
21324
      envtab   NUMBER;
21325
   BEGIN
21326
      envtab := pk_environment.get_package_area (pvid, rtagid);
21327
 
21328
      IF envtab = 0
21329
      THEN
21330
         -- WORK IN PROGRESS --
21331
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
21332
      ELSIF envtab = 1
21333
      THEN
21334
         -- PENDING --
21335
         pk_planned.change_package_view (pvid, rtagid, newviewid);
21336
      ELSIF envtab = 2
21337
      THEN
21338
         -- RELEASED --
21339
         pk_release.change_package_view (pvid, rtagid, newviewid);
21340
      END IF;
21341
   END;
21342
 
21343
/*-------------------------------------------------------------------------------------------------------*/
21344
   PROCEDURE find_package (
21345
      skeyword      IN       VARCHAR2,
21346
      nrtagid       IN       NUMBER,
21347
      nsearcharea   IN       NUMBER,
21348
      recordset     OUT      typecur
21349
   )
21350
   IS
21351
   BEGIN
21352
      IF nsearcharea = 0
21353
      THEN
21354
         /* Search Work In Progress */
21355
         OPEN recordset FOR
21356
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21357
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21358
                     pv.modified_stamp, usr.full_name, usr.user_email
21359
                FROM views vi,
21360
                     work_in_progress rc,
21361
                     PACKAGES pkg,
21362
                     package_versions pv,
21363
                     users usr
21364
               WHERE rc.view_id = vi.view_id
21365
                 AND rc.pv_id = pv.pv_id
21366
                 AND pkg.pkg_id = pv.pkg_id
21367
                 AND pv.modifier_id = usr.user_id
21368
                 AND rc.rtag_id = nrtagid
21369
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21370
            ORDER BY UPPER (pkg.pkg_name);
21371
      ELSIF nsearcharea = 1
21372
      THEN
21373
         /* Search Pending */
21374
         OPEN recordset FOR
21375
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21376
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21377
                     pv.modified_stamp, usr.full_name, usr.user_email
21378
                FROM views vi,
21379
                     planned rc,
21380
                     PACKAGES pkg,
21381
                     package_versions pv,
21382
                     users usr
21383
               WHERE rc.view_id = vi.view_id
21384
                 AND rc.pv_id = pv.pv_id
21385
                 AND pkg.pkg_id = pv.pkg_id
21386
                 AND pv.modifier_id = usr.user_id
21387
                 AND rc.rtag_id = nrtagid
21388
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21389
            ORDER BY UPPER (pkg.pkg_name);
21390
      ELSIF nsearcharea = 2
21391
      THEN
21392
         /* Search Released */
21393
         OPEN recordset FOR
21394
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21395
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21396
                     pv.modified_stamp, usr.full_name, usr.user_email
21397
                FROM views vi,
21398
                     release_content rc,
21399
                     PACKAGES pkg,
21400
                     package_versions pv,
21401
                     users usr
21402
               WHERE rc.base_view_id = vi.view_id
21403
                 AND rc.pv_id = pv.pv_id
21404
                 AND pkg.pkg_id = pv.pkg_id
21405
                 AND pv.modifier_id = usr.user_id
21406
                 AND rc.rtag_id = nrtagid
21407
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21408
            ORDER BY UPPER (pkg.pkg_name);
21409
      ELSIF nsearcharea = 3
21410
      THEN
21411
         /* Search ALL */
21412
         OPEN recordset FOR
21413
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
21414
                     pv.pv_id, pv.pkg_version, pv.comments,
21415
                     pv.modified_stamp, usr.full_name, usr.user_email
21416
                FROM views vi,
21417
                     environment_view rc,
21418
                     PACKAGES pkg,
21419
                     package_versions pv,
21420
                     users usr
21421
               WHERE rc.view_id = vi.view_id
21422
                 AND rc.pv_id = pv.pv_id
21423
                 AND pkg.pkg_id = pv.pkg_id
21424
                 AND pv.modifier_id = usr.user_id
21425
                 AND rc.rtag_id = nrtagid
21426
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21427
            ORDER BY UPPER (pkg.pkg_name);
21428
      END IF;
21429
   END;
21430
 
21431
/*-------------------------------------------------------------------------------------------------------*/
21432
   PROCEDURE find_file (
21433
      skeyword      IN       VARCHAR2,
21434
      nrtagid       IN       NUMBER,
21435
      nsearcharea   IN       NUMBER,
21436
      npagesize     IN       NUMBER,
21437
      recordset     OUT      typecur
21438
   )
21439
   IS
21440
   BEGIN
21441
      IF nsearcharea = 0
21442
      THEN
21443
         /* Search Work In Progress */
21444
         OPEN recordset FOR
21445
            SELECT   qry.*
21446
                FROM (
21447
                      /* File search on Packages */
21448
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21449
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21450
                        FROM work_in_progress rc,
21451
                             PACKAGES pkg,
21452
                             package_versions pv,
21453
                             release_components art
21454
                       WHERE rc.pv_id = art.pv_id
21455
                         AND pv.pkg_id = pkg.pkg_id
21456
                         AND rc.pv_id = pv.pv_id
21457
                         AND rc.rtag_id = nrtagid
21458
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21459
                      UNION ALL
21460
                      /* File search on Products */
21461
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21462
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21463
                        FROM work_in_progress rc,
21464
                             PACKAGES pkg,
21465
                             package_versions pv,
21466
                             product_components art
21467
                       WHERE rc.pv_id = art.pv_id
21468
                         AND pv.pkg_id = pkg.pkg_id
21469
                         AND rc.pv_id = pv.pv_id
21470
                         AND rc.rtag_id = nrtagid
21471
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21472
               WHERE ROWNUM <= npagesize
21473
            ORDER BY UPPER (qry.pkg_name);
21474
      ELSIF nsearcharea = 1
21475
      THEN
21476
         /* Search Pending */
21477
         OPEN recordset FOR
21478
            SELECT   qry.*
21479
                FROM (
21480
                      /* File search on Packages */
21481
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21482
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21483
                        FROM planned rc,
21484
                             PACKAGES pkg,
21485
                             package_versions pv,
21486
                             release_components art
21487
                       WHERE rc.pv_id = art.pv_id
21488
                         AND pv.pkg_id = pkg.pkg_id
21489
                         AND rc.pv_id = pv.pv_id
21490
                         AND rc.rtag_id = nrtagid
21491
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21492
                      UNION ALL
21493
                      /* File search on Products */
21494
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21495
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21496
                        FROM planned rc,
21497
                             PACKAGES pkg,
21498
                             package_versions pv,
21499
                             product_components art
21500
                       WHERE rc.pv_id = art.pv_id
21501
                         AND pv.pkg_id = pkg.pkg_id
21502
                         AND rc.pv_id = pv.pv_id
21503
                         AND rc.rtag_id = nrtagid
21504
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21505
               WHERE ROWNUM <= npagesize
21506
            ORDER BY UPPER (qry.pkg_name);
21507
      ELSIF nsearcharea = 2
21508
      THEN
21509
         /* Search Released */
21510
         OPEN recordset FOR
21511
            SELECT   qry.*
21512
                FROM (
21513
                      /* File search on Packages */
21514
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21515
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21516
                             NULL AS patch_id
21517
                        FROM release_content rc,
21518
                             PACKAGES pkg,
21519
                             package_versions pv,
21520
                             release_components art
21521
                       WHERE rc.pv_id = art.pv_id
21522
                         AND pv.pkg_id = pkg.pkg_id
21523
                         AND rc.pv_id = pv.pv_id
21524
                         AND rc.rtag_id = nrtagid
21525
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21526
                      UNION ALL
21527
                      /* File search on Products */
21528
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21529
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21530
                             NULL AS patch_id
21531
                        FROM release_content rc,
21532
                             PACKAGES pkg,
21533
                             package_versions pv,
21534
                             product_components art
21535
                       WHERE rc.pv_id = art.pv_id
21536
                         AND pv.pkg_id = pkg.pkg_id
21537
                         AND rc.pv_id = pv.pv_id
21538
                         AND rc.rtag_id = nrtagid
21539
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21540
                      UNION ALL
21541
                      /* File search on Patches */
21542
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21543
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21544
                             DECODE (art.file_path,
21545
                                     NULL, pp.patch_id,
21546
                                     NULL
21547
                                    ) AS patch_id
21548
                        FROM release_content rc,
21549
                             PACKAGES pkg,
21550
                             package_versions pv,
21551
                             release_components art,
21552
                             package_patches pp
21553
                       WHERE pv.pv_id = pp.pv_id
21554
                         AND pv.pkg_id = pkg.pkg_id
21555
                         AND rc.rtag_id = nrtagid
21556
                         AND art.pv_id = pp.patch_id
21557
                         AND rc.pv_id = pp.pv_id
21558
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21559
               WHERE ROWNUM <= npagesize
21560
            ORDER BY UPPER (qry.pkg_name);
21561
      ELSIF nsearcharea = 3
21562
      THEN
21563
         /* Search ALL */
21564
         OPEN recordset FOR
21565
            SELECT   qry.*
21566
                FROM (
21567
                      /* File search on Packages */
21568
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21569
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21570
                             NULL AS patch_id
21571
                        FROM environment_view rc,
21572
                             PACKAGES pkg,
21573
                             package_versions pv,
21574
                             release_components art
21575
                       WHERE rc.pv_id = art.pv_id
21576
                         AND pv.pkg_id = pkg.pkg_id
21577
                         AND rc.pv_id = pv.pv_id
21578
                         AND rc.rtag_id = nrtagid
21579
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21580
                      UNION ALL
21581
                      /* File search on Products */
21582
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21583
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21584
                             NULL AS patch_id
21585
                        FROM environment_view rc,
21586
                             PACKAGES pkg,
21587
                             package_versions pv,
21588
                             product_components art
21589
                       WHERE rc.pv_id = art.pv_id
21590
                         AND pv.pkg_id = pkg.pkg_id
21591
                         AND rc.pv_id = pv.pv_id
21592
                         AND rc.rtag_id = nrtagid
21593
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21594
                      UNION ALL
21595
                      /* File search on Patches */
21596
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21597
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21598
                             DECODE (art.file_path,
21599
                                     NULL, pp.patch_id,
21600
                                     NULL
21601
                                    ) AS patch_id
21602
                        FROM release_content rc,
21603
                             PACKAGES pkg,
21604
                             package_versions pv,
21605
                             release_components art,
21606
                             package_patches pp
21607
                       WHERE pv.pv_id = pp.pv_id
21608
                         AND pv.pkg_id = pkg.pkg_id
21609
                         AND rc.rtag_id = nrtagid
21610
                         AND art.pv_id = pp.patch_id
21611
                         AND rc.pv_id = pp.pv_id
21612
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21613
               WHERE ROWNUM <= npagesize
21614
            ORDER BY UPPER (qry.pkg_name);
21615
      END IF;
21616
   END;
21617
 
21618
/*-------------------------------------------------------------------------------------------------------*/
21619
   PROCEDURE get_prodrelease_items (
21620
      rtagid             IN       NUMBER,
21621
      ntruerecordcount   OUT      NUMBER,
21622
      recordset          OUT      typecur
21623
   )
21624
   IS
21625
   BEGIN
21626
      -- Get true record count n the number of integration products
21627
      SELECT COUNT (rc.pv_id)
21628
        INTO ntruerecordcount
21629
        FROM release_content rc
21630
       WHERE rc.rtag_id = rtagid;
21631
 
21632
      OPEN recordset FOR
21633
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
21634
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21635
                  pv.pkg_version, pv.dlocked, pv.pv_description
21636
             FROM release_content rel,
21637
                  PACKAGES pkg,
21638
                  package_versions pv,
21639
                  views vi
21640
            WHERE pv.pkg_id = pkg.pkg_id
21641
              AND rel.pv_id = pv.pv_id
21642
              AND rel.base_view_id = vi.view_id
21643
              AND pv.is_deployable = 'Y'
21644
              AND rtag_id = rtagid
21645
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21646
                                              FROM deployment_manager.os_contents)
21647
              AND rel.product_state IS NULL
21648
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21649
   END;
21650
 
21651
/*-------------------------------------------------------------------------------------------------------*/
21652
   PROCEDURE get_integration_items (
21653
      rtagid             IN       NUMBER,
21654
      ntruerecordcount   OUT      NUMBER,
21655
      recordset          OUT      typecur
21656
   )
21657
   IS
21658
   BEGIN
21659
      -- Get true record count n the number of integration products
21660
      SELECT COUNT (rc.pv_id)
21661
        INTO ntruerecordcount
21662
        FROM release_content rc
21663
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
21664
 
21665
      OPEN recordset FOR
21666
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21667
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21668
                  pv.pkg_version, pv.dlocked, pv.pv_description
21669
             FROM release_content rel,
21670
                  PACKAGES pkg,
21671
                  package_versions pv,
21672
                  views vi
21673
            WHERE pv.pkg_id = pkg.pkg_id
21674
              AND rel.pv_id = pv.pv_id
21675
              AND rel.base_view_id = vi.view_id
21676
              AND pv.is_deployable = 'Y'
21677
              AND rtag_id = rtagid
21678
              AND rel.product_state IN (1, 5)
21679
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21680
   END;
21681
 
21682
/*-------------------------------------------------------------------------------------------------------*/
21683
   PROCEDURE get_test_items (
21684
      rtagid             IN       NUMBER,
21685
      ntruerecordcount   OUT      NUMBER,
21686
      recordset          OUT      typecur
21687
   )
21688
   IS
21689
   BEGIN
21690
      -- Get true record count n the number of test products
21691
      SELECT COUNT (rc.pv_id)
21692
        INTO ntruerecordcount
21693
        FROM release_content rc
21694
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
21695
 
21696
      OPEN recordset FOR
21697
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21698
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21699
                  pv.pkg_version, pv.dlocked, pv.pv_description
21700
             FROM release_content rel,
21701
                  PACKAGES pkg,
21702
                  package_versions pv,
21703
                  views vi
21704
            WHERE pv.pkg_id = pkg.pkg_id
21705
              AND rel.pv_id = pv.pv_id
21706
              AND rel.base_view_id = vi.view_id
21707
              AND pv.is_deployable = 'Y'
21708
              AND rtag_id = rtagid
21709
              AND rel.product_state = 2
21710
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21711
   END;
21712
 
21713
/*-------------------------------------------------------------------------------------------------------*/
21714
   PROCEDURE get_deploy_items (
21715
      rtagid             IN       NUMBER,
21716
      ntruerecordcount   OUT      NUMBER,
21717
      recordset          OUT      typecur
21718
   )
21719
   IS
21720
   BEGIN
21721
      -- Get true record count n the number of deploy products
21722
      SELECT COUNT (rc.pv_id)
21723
        INTO ntruerecordcount
21724
        FROM release_content rc
21725
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
21726
 
21727
      OPEN recordset FOR
21728
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21729
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21730
                  pv.pkg_version, pv.dlocked, pv.pv_description
21731
             FROM release_content rel,
21732
                  PACKAGES pkg,
21733
                  package_versions pv,
21734
                  views vi
21735
            WHERE pv.pkg_id = pkg.pkg_id
21736
              AND rel.pv_id = pv.pv_id
21737
              AND rel.base_view_id = vi.view_id
21738
              AND pv.is_deployable = 'Y'
21739
              AND rtag_id = rtagid
21740
              AND rel.product_state IN (3, 5)
21741
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21742
                                              FROM deployment_manager.os_contents)
21743
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21744
   END;
21745
 
21746
/*-------------------------------------------------------------------------------------------------------*/
21747
   PROCEDURE get_reject_items (
21748
      rtagid             IN       NUMBER,
21749
      ntruerecordcount   OUT      NUMBER,
21750
      recordset          OUT      typecur
21751
   )
21752
   IS
21753
   BEGIN
21754
      -- Get true record count n the number of reject products
21755
      SELECT COUNT (rc.pv_id)
21756
        INTO ntruerecordcount
21757
        FROM release_content rc
21758
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
21759
 
21760
      OPEN recordset FOR
21761
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21762
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21763
                  pv.pkg_version, pv.dlocked, pv.pv_description
21764
             FROM release_content rel,
21765
                  PACKAGES pkg,
21766
                  package_versions pv,
21767
                  views vi
21768
            WHERE pv.pkg_id = pkg.pkg_id
21769
              AND rel.pv_id = pv.pv_id
21770
              AND rel.base_view_id = vi.view_id
21771
              AND pv.is_deployable = 'Y'
21772
              AND rtag_id = rtagid
21773
              AND rel.product_state = 4
21774
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21775
   END;
21776
/*-------------------------------------------------------------------------------------------------------*/
21777
END pk_environment_test;
21778
/
21779