Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
51 mhunt 1
CREATE OR REPLACE TYPE TDICTIONARY;
2
/
3
 
4
CREATE TABLE PACKAGE_BUILD_ENV
5
(
6
  PV_ID NUMBER NOT NULL,
7
  BE_ID NUMBER NOT NULL,
8
  BUILD_TYPE NUMBER
9
)
10
  TABLESPACE "USERS"
11
  LOGGING 
12
  PCTFREE 10
13
  PCTUSED 40
14
  INITRANS 1
15
  MAXTRANS 255
16
  STORAGE
17
  (
18
    INITIAL 128K
19
    MINEXTENTS 1
20
    MAXEXTENTS 2147483645
21
    FREELISTS 1
22
    FREELIST GROUPS 1
23
    BUFFER_POOL DEFAULT
24
  )
25
;
26
 
27
CREATE TABLE NOTIFICATION_HISTORY
28
(
29
  RTAG_ID NUMBER NOT NULL,
30
  PV_ID NUMBER NOT NULL,
31
  USER_ID NUMBER NOT NULL,
32
  DATE_TIME_STAMP DATE NOT NULL
33
, CONSTRAINT PK_NOTIFICATION_HISTORY PRIMARY KEY
34
  (
35
    RTAG_ID,
36
    PV_ID,
37
    USER_ID
38
  )
39
  ENABLE
40
)
41
  TABLESPACE "USERS"
42
  LOGGING 
43
  PCTFREE 10
44
  PCTUSED 40
45
  INITRANS 1
46
  MAXTRANS 255
47
  STORAGE
48
  (
49
    INITIAL 128K
50
    MINEXTENTS 1
51
    MAXEXTENTS 2147483645
52
    FREELISTS 1
53
    FREELIST GROUPS 1
54
    BUFFER_POOL DEFAULT
55
  )
56
;
57
 
58
CREATE TABLE TEMP_ENV_STATES
59
(
60
  SESSION_NUM NUMBER NOT NULL,
61
  LEVEL_NUM NUMBER NOT NULL,
62
  PV_ID NUMBER NOT NULL,
63
  PKG_ID NUMBER NOT NULL,
64
  V_EXT VARCHAR2(50 BYTE),
65
  TES_STATE NUMBER NOT NULL
66
)
67
  TABLESPACE "USERS"
68
  LOGGING 
69
  PCTFREE 10
70
  PCTUSED 40
71
  INITRANS 1
72
  MAXTRANS 255
73
  STORAGE
74
  (
75
    INITIAL 128K
76
    MINEXTENTS 1
77
    MAXEXTENTS 2147483645
78
    FREELISTS 1
79
    FREELIST GROUPS 1
80
    BUFFER_POOL DEFAULT
81
  )
82
;
83
 
84
CREATE TABLE TEMP_TREE_BROWSE
85
(
86
  SESSION_NUM NUMBER,
87
  LEVEL_NUM NUMBER,
88
  PV_ID NUMBER,
89
  PKG_ID NUMBER,
90
  V_EXT VARCHAR2(50 BYTE),
91
  DIRECTION NUMBER
92
)
93
  TABLESPACE "USERS"
94
  LOGGING 
95
  PCTFREE 10
96
  PCTUSED 40
97
  INITRANS 1
98
  MAXTRANS 255
99
  STORAGE
100
  (
101
    INITIAL 64K
102
    MINEXTENTS 1
103
    MAXEXTENTS 2147483645
104
    FREELISTS 1
105
    FREELIST GROUPS 1
106
    BUFFER_POOL DEFAULT
107
  )
108
;
109
 
110
CREATE TABLE IGNORE_WARNINGS
111
(
112
  RTAG_ID NUMBER NOT NULL,
113
  PV_ID NUMBER NOT NULL,
114
  DPV_ID NUMBER NOT NULL,
115
  IS_PATCH_IGNORE CHAR(1 BYTE)
116
)
117
  TABLESPACE "USERS"
118
  LOGGING 
119
  PCTFREE 10
120
  PCTUSED 40
121
  INITRANS 1
122
  MAXTRANS 255
123
  STORAGE
124
  (
125
    INITIAL 128K
126
    MINEXTENTS 1
127
    MAXEXTENTS 2147483645
128
    FREELISTS 1
129
    FREELIST GROUPS 1
130
    BUFFER_POOL DEFAULT
131
  )
132
;
133
 
134
CREATE TABLE DEPRECATED_PACKAGES
135
(
136
  RTAG_ID NUMBER NOT NULL,
137
  PKG_ID NUMBER NOT NULL,
138
  COMMENTS VARCHAR2(4000 BYTE) NOT NULL,
139
  V_EXT VARCHAR2(50 BYTE)
140
)
141
  TABLESPACE "USERS"
142
  LOGGING 
143
  PCTFREE 10
144
  PCTUSED 40
145
  INITRANS 1
146
  MAXTRANS 255
147
  STORAGE
148
  (
149
    INITIAL 64K
150
    MINEXTENTS 1
151
    MAXEXTENTS 2147483645
152
    FREELISTS 1
153
    FREELIST GROUPS 1
154
    BUFFER_POOL DEFAULT
155
  )
156
;
157
 
158
CREATE TABLE MICROSOFTDTPROPERTIES
159
(
160
  ID NUMBER NOT NULL,
161
  OBJECTID NUMBER,
162
  PROPERTY VARCHAR2(64 BYTE) NOT NULL,
163
  VALUE VARCHAR2(255 BYTE),
164
  LVALUE LONG RAW,
165
  VERSION NUMBER DEFAULT (0) NOT NULL
166
, CONSTRAINT MICROSOFT_PK_DTPROPERTIES PRIMARY KEY
167
  (
168
    ID,
169
    PROPERTY
170
  )
171
  ENABLE
172
)
173
  TABLESPACE "USERS"
174
  LOGGING 
175
  PCTFREE 10
176
  PCTUSED 40
177
  INITRANS 1
178
  MAXTRANS 255
179
  STORAGE
180
  (
181
    INITIAL 128K
182
    MINEXTENTS 1
183
    MAXEXTENTS 2147483645
184
    FREELISTS 1
185
    FREELIST GROUPS 1
186
    BUFFER_POOL DEFAULT
187
  )
188
;
189
 
190
CREATE TABLE PACKAGE_DOCUMENTS
191
(
192
  PV_ID NUMBER NOT NULL,
193
  TEST_ID NUMBER,
194
  DOC_ID NUMBER NOT NULL,
195
  DOC_NUM VARCHAR2(50 BYTE) NOT NULL,
196
  IS_LATEST CHAR(1 BYTE)
197
)
198
  TABLESPACE "USERS"
199
  LOGGING 
200
  PCTFREE 10
201
  PCTUSED 40
202
  INITRANS 1
203
  MAXTRANS 255
204
  STORAGE
205
  (
206
    INITIAL 128K
207
    MINEXTENTS 1
208
    MAXEXTENTS 2147483645
209
    FREELISTS 1
210
    FREELIST GROUPS 1
211
    BUFFER_POOL DEFAULT
212
  )
213
;
214
 
215
CREATE TABLE RELEASE_TAGS
216
(
217
  RTAG_ID NUMBER NOT NULL,
218
  VTREE_ID NUMBER,
219
  RTAG_NAME VARCHAR2(50 BYTE) NOT NULL,
220
  DESCRIPTION VARCHAR2(4000 BYTE),
221
  CREATED_STAMP DATE,
222
  CREATOR_ID NUMBER,
223
  OFFICIAL_STAMP DATE,
224
  RELEASOR_ID NUMBER,
225
  OFFICIAL CHAR(1 BYTE) NOT NULL,
226
  REBUILD_ENV CHAR(1 BYTE) NOT NULL,
227
  REBUILD_STAMP NUMBER NOT NULL,
228
  RTAG_VERSION VARCHAR2(4000 BYTE),
229
  RTAG_LIFE_CYCLE NUMBER,
230
  PARENT_RTAG_ID NUMBER NOT NULL,
231
  PROJ_ID NUMBER NOT NULL,
232
  DISPLAY_ORDER NUMBER,
233
  OWNER_EMAIL VARCHAR2(1000 BYTE),
234
  ASSOC_MASS_REF NUMBER,
235
  OWNER_PERSONAL_EMAIL VARCHAR2(1000 BYTE),
236
  CONFIG_SPEC_BRANCH VARCHAR2(4000 BYTE),
237
  PRODUCT_STATE_USED CHAR(1 BYTE)
238
, CONSTRAINT PK_RELEASE_TAGS PRIMARY KEY
239
  (
240
    RTAG_ID
241
  )
242
  ENABLE
243
)
244
  TABLESPACE "SYSTEM"
245
  LOGGING 
246
  PCTFREE 10
247
  PCTUSED 40
248
  INITRANS 1
249
  MAXTRANS 255
250
  STORAGE
251
  (
252
    INITIAL 64K
253
    NEXT 64K
254
    MINEXTENTS 1
255
    MAXEXTENTS 2147483645
256
    PCTINCREASE 0
257
    FREELISTS 1
258
    FREELIST GROUPS 1
259
    BUFFER_POOL DEFAULT
260
  )
261
;
262
 
263
CREATE TABLE BUILD_STANDARDS_ADDENDUM
264
(
265
  BSA_ID NUMBER NOT NULL,
266
  BSA_NAME VARCHAR2(4000 BYTE) NOT NULL,
267
  BS_ID NUMBER NOT NULL
268
, CONSTRAINT BUILD_STANDARDS_ADDENDUM_PK PRIMARY KEY
269
  (
270
    BSA_ID
271
  )
272
  ENABLE
273
)
274
  TABLESPACE "USERS"
275
  LOGGING 
276
  PCTFREE 10
277
  PCTUSED 40
278
  INITRANS 1
279
  MAXTRANS 255
280
  STORAGE
281
  (
282
    INITIAL 64K
283
    MINEXTENTS 1
284
    MAXEXTENTS 2147483645
285
    FREELISTS 1
286
    FREELIST GROUPS 1
287
    BUFFER_POOL DEFAULT
288
  )
289
;
290
 
291
CREATE TABLE UNIT_TESTS
292
(
293
  TEST_ID NUMBER NOT NULL,
294
  PV_ID NUMBER NOT NULL,
295
  TEST_TYPES_FK NUMBER NOT NULL,
296
  TEST_SUMMARY VARCHAR2(4000 BYTE),
297
  COMPLETION_DATE DATE,
298
  COMPLETED_BY NUMBER,
299
  RESULTS_URL VARCHAR2(2000 BYTE),
300
  RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE),
301
  TEST_ACCEPTED CHAR(1 BYTE),
302
  ACCEPTANCE_DATE DATE,
303
  ACCEPTED_BY NUMBER,
304
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
305
  NUMOF_TEST VARCHAR2(50 BYTE)
306
)
307
  TABLESPACE "USERS"
308
  LOGGING 
309
  PCTFREE 10
310
  PCTUSED 40
311
  INITRANS 1
312
  MAXTRANS 255
313
  STORAGE
314
  (
315
    INITIAL 128K
316
    MINEXTENTS 1
317
    MAXEXTENTS 2147483645
318
    FREELISTS 1
319
    FREELIST GROUPS 1
320
    BUFFER_POOL DEFAULT
321
  )
322
;
323
 
324
CREATE TABLE BUILD_ENVIRONMENTS
325
(
326
  BE_ID NUMBER NOT NULL,
327
  BE_NAME VARCHAR2(255 BYTE) NOT NULL
328
, CONSTRAINT PK_BUILD_ENVIRONMENTS PRIMARY KEY
329
  (
330
    BE_ID
331
  )
332
  ENABLE
333
)
334
  TABLESPACE "USERS"
335
  LOGGING 
336
  PCTFREE 10
337
  PCTUSED 40
338
  INITRANS 1
339
  MAXTRANS 255
340
  STORAGE
341
  (
342
    INITIAL 128K
343
    MINEXTENTS 1
344
    MAXEXTENTS 2147483645
345
    FREELISTS 1
346
    FREELIST GROUPS 1
347
    BUFFER_POOL DEFAULT
348
  )
349
;
350
 
351
CREATE TABLE RELEASE_COMPONENTS
352
(
353
  PV_ID NUMBER NOT NULL,
354
  FILE_NAME VARCHAR2(255 BYTE),
355
  FILE_PATH VARCHAR2(2000 BYTE),
356
  BYTE_SIZE NUMBER,
357
  CRC_CKSUM VARCHAR2(50 BYTE),
358
  CRC_MODCRC VARCHAR2(50 BYTE)
359
)
360
  TABLESPACE "USERS"
361
  LOGGING 
362
  PCTFREE 10
363
  PCTUSED 40
364
  INITRANS 1
365
  MAXTRANS 255
366
  STORAGE
367
  (
368
    INITIAL 128K
369
    MINEXTENTS 1
370
    MAXEXTENTS 2147483645
371
    FREELISTS 1
372
    FREELIST GROUPS 1
373
    BUFFER_POOL DEFAULT
374
  )
375
;
376
 
377
CREATE TABLE RIPPLE_FIELD_STATES
378
(
379
  STATE_ID NUMBER NOT NULL,
380
  STATE_ACRONYM CHAR(1 BYTE),
381
  STATE_NAME VARCHAR2(50 BYTE)
382
)
383
  TABLESPACE "USERS"
384
  LOGGING 
385
  PCTFREE 10
386
  PCTUSED 40
387
  INITRANS 1
388
  MAXTRANS 255
389
  STORAGE
390
  (
391
    INITIAL 64K
392
    MINEXTENTS 1
393
    MAXEXTENTS 2147483645
394
    FREELISTS 1
395
    FREELIST GROUPS 1
396
    BUFFER_POOL DEFAULT
397
  )
398
;
399
 
400
CREATE TABLE BUILD_ORDER
401
(
402
  RTAG_ID NUMBER NOT NULL,
403
  STEP_NUM NUMBER NOT NULL,
404
  PV_ID NUMBER NOT NULL,
405
  UNRESOLVED CHAR(1 BYTE)
406
)
407
  TABLESPACE "USERS"
408
  LOGGING 
409
  PCTFREE 10
410
  PCTUSED 40
411
  INITRANS 1
412
  MAXTRANS 255
413
  STORAGE
414
  (
415
    INITIAL 64K
416
    MINEXTENTS 1
417
    MAXEXTENTS 2147483645
418
    FREELISTS 1
419
    FREELIST GROUPS 1
420
    BUFFER_POOL DEFAULT
421
  )
422
;
423
 
424
CREATE TABLE PLANNED
425
(
426
  RTAG_ID NUMBER NOT NULL,
427
  PV_ID NUMBER NOT NULL,
53 mhunt 428
  VIEW_ID NUMBER NOT NULL,
429
  OPERATION CHAR(1 BYTE)
51 mhunt 430
)
431
  TABLESPACE "USERS"
432
  LOGGING 
433
  PCTFREE 10
434
  PCTUSED 40
435
  INITRANS 1
436
  MAXTRANS 255
437
  STORAGE
438
  (
439
    INITIAL 64K
440
    MINEXTENTS 1
441
    MAXEXTENTS 2147483645
442
    FREELISTS 1
443
    FREELIST GROUPS 1
444
    BUFFER_POOL DEFAULT
445
  )
446
;
447
 
448
CREATE TABLE PROJECT_ACTION_LOG
449
(
450
  USER_ID NUMBER NOT NULL,
451
  ACTION_DATETIME DATE NOT NULL,
452
  PROJ_ID NUMBER NOT NULL,
453
  DESCRIPTION VARCHAR2(4000 BYTE),
454
  ACTTYPE_ID NUMBER NOT NULL,
455
  RTAG_ID NUMBER
456
)
457
  TABLESPACE "USERS"
458
  LOGGING 
459
  PCTFREE 10
460
  PCTUSED 40
461
  INITRANS 1
462
  MAXTRANS 255
463
  STORAGE
464
  (
465
    INITIAL 64K
466
    MINEXTENTS 1
467
    MAXEXTENTS 2147483645
468
    FREELISTS 1
469
    FREELIST GROUPS 1
470
    BUFFER_POOL DEFAULT
471
  )
472
;
473
 
474
CREATE TABLE PACKAGE_METRICS
475
(
476
  PV_ID NUMBER NOT NULL,
477
  BRANCHES NUMBER,
478
  BRANCH_LIST VARCHAR2(4000 BYTE),
479
  CODE_FILES NUMBER,
480
  IGNORED_FILES NUMBER,
481
  DIRECTORIES NUMBER,
482
  DIRECTORY_DEPTH NUMBER,
483
  TOTAL_FILES NUMBER,
484
  MAKEFILES NUMBER,
485
  BLANK_LINES NUMBER,
486
  CODE_LINES NUMBER,
487
  COMMENT_LINES NUMBER,
488
  CREATED_STAMP DATE
489
)
490
  TABLESPACE "USERS"
491
  LOGGING 
492
  PCTFREE 10
493
  PCTUSED 40
494
  INITRANS 1
495
  MAXTRANS 255
496
  STORAGE
497
  (
498
    INITIAL 64K
499
    MINEXTENTS 1
500
    MAXEXTENTS 2147483645
501
    FREELISTS 1
502
    FREELIST GROUPS 1
503
    BUFFER_POOL DEFAULT
504
  )
505
;
506
 
507
CREATE TABLE ARCHIVE_DATA
508
(
509
  RTAG_ID NUMBER(*, 0) NOT NULL,
510
  PV_ID NUMBER(*, 0) NOT NULL
511
)
512
  TABLESPACE "USERS"
513
  LOGGING 
514
  PCTFREE 10
515
  PCTUSED 40
516
  INITRANS 1
517
  MAXTRANS 255
518
  STORAGE
519
  (
520
    INITIAL 64K
521
    MINEXTENTS 1
522
    MAXEXTENTS 2147483645
523
    FREELISTS 1
524
    FREELIST GROUPS 1
525
    BUFFER_POOL DEFAULT
526
  )
527
;
528
 
529
CREATE TABLE VIEW_SETTINGS
530
(
531
  USER_ID NUMBER NOT NULL,
532
  VIEW_ID NUMBER NOT NULL
533
)
534
  TABLESPACE "SYSTEM"
535
  LOGGING 
536
  PCTFREE 10
537
  PCTUSED 40
538
  INITRANS 1
539
  MAXTRANS 255
540
  STORAGE
541
  (
542
    INITIAL 64K
543
    NEXT 64K
544
    MINEXTENTS 1
545
    MAXEXTENTS 2147483645
546
    PCTINCREASE 0
547
    FREELISTS 1
548
    FREELIST GROUPS 1
549
    BUFFER_POOL DEFAULT
550
  )
551
;
552
 
553
CREATE TABLE ACTION_TYPE
554
(
555
  ACTTYPE_ID NUMBER NOT NULL,
556
  NAME VARCHAR2(255 BYTE) NOT NULL,
557
  DESCRIPTION VARCHAR2(4000 BYTE)
558
, CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY
559
  (
560
    ACTTYPE_ID
561
  )
562
  ENABLE
563
)
564
  TABLESPACE "USERS"
565
  LOGGING 
566
  PCTFREE 10
567
  PCTUSED 40
568
  INITRANS 1
569
  MAXTRANS 255
570
  STORAGE
571
  (
572
    INITIAL 128K
573
    MINEXTENTS 1
574
    MAXEXTENTS 2147483645
575
    FREELISTS 1
576
    FREELIST GROUPS 1
577
    BUFFER_POOL DEFAULT
578
  )
579
;
580
 
581
CREATE TABLE RUN_LEVEL_SCHEDULE
582
(
583
  SCHEDULED_ID NUMBER NOT NULL,
584
  SCHEDULED_PAUSE DATE,
585
  SCHEDULED_RESUME DATE,
586
  REPEAT CHAR(1 BYTE),
587
  INDEFINITE_PAUSE CHAR(1 BYTE)
588
, PRIMARY KEY
589
  (
590
    SCHEDULED_ID
591
  )
592
  ENABLE
593
)
594
  TABLESPACE "USERS"
595
  LOGGING 
596
  PCTFREE 10
597
  PCTUSED 40
598
  INITRANS 1
599
  MAXTRANS 255
600
  STORAGE
601
  (
602
    INITIAL 64K
603
    MINEXTENTS 1
604
    MAXEXTENTS 2147483645
605
    FREELISTS 1
606
    FREELIST GROUPS 1
607
    BUFFER_POOL DEFAULT
608
  )
609
;
610
 
611
CREATE TABLE VTREES
612
(
613
  VTREE_ID NUMBER NOT NULL,
614
  PROJ_ID NUMBER NOT NULL,
615
  VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,
616
  HIDE CHAR(1 BYTE) NOT NULL
617
, CONSTRAINT PK_VTREES PRIMARY KEY
618
  (
619
    VTREE_ID
620
  )
621
  ENABLE
622
)
623
  TABLESPACE "SYSTEM"
624
  LOGGING 
625
  PCTFREE 10
626
  PCTUSED 40
627
  INITRANS 1
628
  MAXTRANS 255
629
  STORAGE
630
  (
631
    INITIAL 64K
632
    NEXT 64K
633
    MINEXTENTS 1
634
    MAXEXTENTS 2147483645
635
    PCTINCREASE 0
636
    FREELISTS 1
637
    FREELIST GROUPS 1
638
    BUFFER_POOL DEFAULT
639
  )
640
;
641
 
642
CREATE TABLE BUILD_STANDARDS
643
(
644
  BS_ID NUMBER NOT NULL,
645
  BS_NAME VARCHAR2(20 BYTE) NOT NULL
646
, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY
647
  (
648
    BS_ID
649
  )
650
  ENABLE
651
)
652
  TABLESPACE "USERS"
653
  LOGGING 
654
  PCTFREE 10
655
  PCTUSED 40
656
  INITRANS 1
657
  MAXTRANS 255
658
  STORAGE
659
  (
660
    INITIAL 64K
661
    MINEXTENTS 1
662
    MAXEXTENTS 2147483645
663
    FREELISTS 1
664
    FREELIST GROUPS 1
665
    BUFFER_POOL DEFAULT
666
  )
667
;
668
 
669
CREATE TABLE TEMP_SASH
670
(
671
  RTAG_ID NUMBER,
672
  PROJ_ID NUMBER
673
)
674
  TABLESPACE "USERS"
675
  LOGGING 
676
  PCTFREE 10
677
  PCTUSED 40
678
  INITRANS 1
679
  MAXTRANS 255
680
  STORAGE
681
  (
682
    INITIAL 64K
683
    MINEXTENTS 1
684
    MAXEXTENTS 2147483645
685
    FREELISTS 1
686
    FREELIST GROUPS 1
687
    BUFFER_POOL DEFAULT
688
  )
689
;
690
 
691
CREATE TABLE BUILD_MACHINES
692
(
693
  BM_ID NUMBER NOT NULL,
694
  BM_NAME VARCHAR2(20 BYTE) NOT NULL
695
, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY
696
  (
697
    BM_ID
698
  )
699
  ENABLE
700
)
701
  TABLESPACE "USERS"
702
  LOGGING 
703
  PCTFREE 10
704
  PCTUSED 40
705
  INITRANS 1
706
  MAXTRANS 255
707
  STORAGE
708
  (
709
    INITIAL 64K
710
    MINEXTENTS 1
711
    MAXEXTENTS 2147483645
712
    FREELISTS 1
713
    FREELIST GROUPS 1
714
    BUFFER_POOL DEFAULT
715
  )
716
;
717
 
718
CREATE TABLE RELEASE_LINKS
719
(
720
  RTAG_ID NUMBER NOT NULL,
721
  REF_RTAG_ID NUMBER NOT NULL
722
)
723
  TABLESPACE "USERS"
724
  LOGGING 
725
  PCTFREE 10
726
  PCTUSED 40
727
  INITRANS 1
728
  MAXTRANS 255
729
  STORAGE
730
  (
731
    INITIAL 64K
732
    MINEXTENTS 1
733
    MAXEXTENTS 2147483645
734
    FREELISTS 1
735
    FREELIST GROUPS 1
736
    BUFFER_POOL DEFAULT
737
  )
738
;
739
 
740
CREATE TABLE BUILD_ENV_DOCUMENTS
741
(
742
  BE_ID NUMBER NOT NULL,
743
  DOC_NUM VARCHAR2(255 BYTE) NOT NULL
744
)
745
  TABLESPACE "USERS"
746
  LOGGING 
747
  PCTFREE 10
748
  PCTUSED 40
749
  INITRANS 1
750
  MAXTRANS 255
751
  STORAGE
752
  (
753
    INITIAL 128K
754
    MINEXTENTS 1
755
    MAXEXTENTS 2147483645
756
    FREELISTS 1
757
    FREELIST GROUPS 1
758
    BUFFER_POOL DEFAULT
759
  )
760
;
761
 
762
CREATE TABLE PRODUCT_STATES
763
(
764
  STATE_ID NUMBER NOT NULL,
765
  STATE VARCHAR2(4000 BYTE) NOT NULL
766
, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY
767
  (
768
    STATE_ID
769
  )
770
  ENABLE
771
)
772
  TABLESPACE "USERS"
773
  LOGGING 
774
  PCTFREE 10
775
  PCTUSED 40
776
  INITRANS 1
777
  MAXTRANS 255
778
  STORAGE
779
  (
780
    INITIAL 64K
781
    MINEXTENTS 1
782
    MAXEXTENTS 2147483645
783
    FREELISTS 1
784
    FREELIST GROUPS 1
785
    BUFFER_POOL DEFAULT
786
  )
787
;
788
 
789
CREATE TABLE WORLDS
790
(
791
  WORLD_ID NUMBER NOT NULL,
792
  WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,
793
  WORLD_DESC VARCHAR2(255 BYTE)
794
, CONSTRAINT PK_WORLDS PRIMARY KEY
795
  (
796
    WORLD_ID
797
  )
798
  ENABLE
799
)
800
  TABLESPACE "USERS"
801
  LOGGING 
802
  PCTFREE 10
803
  PCTUSED 40
804
  INITRANS 1
805
  MAXTRANS 255
806
  STORAGE
807
  (
808
    INITIAL 128K
809
    MINEXTENTS 1
810
    MAXEXTENTS 2147483645
811
    FREELISTS 1
812
    FREELIST GROUPS 1
813
    BUFFER_POOL DEFAULT
814
  )
815
;
816
 
817
CREATE TABLE ACTION_LOG
818
(
819
  USER_ID NUMBER NOT NULL,
820
  ACTION_DATETIME DATE NOT NULL,
821
  PV_ID NUMBER NOT NULL,
822
  DESCRIPTION VARCHAR2(4000 BYTE),
823
  ACTTYPE_ID NUMBER NOT NULL
824
)
825
  TABLESPACE "USERS"
826
  LOGGING 
827
  PCTFREE 10
828
  PCTUSED 40
829
  INITRANS 1
830
  MAXTRANS 255
831
  STORAGE
832
  (
833
    INITIAL 128K
834
    MINEXTENTS 1
835
    MAXEXTENTS 2147483645
836
    FREELISTS 1
837
    FREELIST GROUPS 1
838
    BUFFER_POOL DEFAULT
839
  )
840
;
841
 
842
CREATE TABLE PROJECT_EXTENTIONS
843
(
844
  PROJ_ID NUMBER NOT NULL,
845
  EXT_NAME VARCHAR2(10 BYTE) NOT NULL
846
)
847
  TABLESPACE "SYSTEM"
848
  LOGGING 
849
  PCTFREE 10
850
  PCTUSED 40
851
  INITRANS 1
852
  MAXTRANS 255
853
  STORAGE
854
  (
855
    INITIAL 64K
856
    NEXT 64K
857
    MINEXTENTS 1
858
    MAXEXTENTS 2147483645
859
    PCTINCREASE 0
860
    FREELISTS 1
861
    FREELIST GROUPS 1
862
    BUFFER_POOL DEFAULT
863
  )
864
;
865
 
866
CREATE TABLE ADDITIONAL_NOTES
867
(
868
  NOTE_ID NUMBER NOT NULL,
869
  PV_ID NUMBER NOT NULL,
870
  NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,
871
  NOTE_BODY VARCHAR2(4000 BYTE),
872
  MOD_DATE DATE NOT NULL,
873
  MOD_USER NUMBER NOT NULL
874
)
875
  TABLESPACE "USERS"
876
  LOGGING 
877
  PCTFREE 10
878
  PCTUSED 40
879
  INITRANS 1
880
  MAXTRANS 255
881
  STORAGE
882
  (
883
    INITIAL 128K
884
    MINEXTENTS 1
885
    MAXEXTENTS 2147483645
886
    FREELISTS 1
887
    FREELIST GROUPS 1
888
    BUFFER_POOL DEFAULT
889
  )
890
;
891
 
892
CREATE TABLE MESSAGE_BOARD
893
(
894
  MSG_ID NUMBER NOT NULL,
895
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
896
  SUBMITION_DATE DATE NOT NULL,
897
  EXPIRY_DATE DATE,
898
  DUE_DATE DATE
899
, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY
900
  (
901
    MSG_ID
902
  )
903
  ENABLE
904
)
905
  TABLESPACE "SYSTEM"
906
  LOGGING 
907
  PCTFREE 10
908
  PCTUSED 40
909
  INITRANS 1
910
  MAXTRANS 255
911
  STORAGE
912
  (
913
    INITIAL 64K
914
    NEXT 64K
915
    MINEXTENTS 1
916
    MAXEXTENTS 2147483645
917
    PCTINCREASE 0
918
    FREELISTS 1
919
    FREELIST GROUPS 1
920
    BUFFER_POOL DEFAULT
921
  )
922
;
923
 
924
CREATE TABLE VTREES_WORLD
925
(
926
  WORLD_ID NUMBER NOT NULL,
927
  VTREE_ID NUMBER NOT NULL
928
)
929
  TABLESPACE "USERS"
930
  LOGGING 
931
  PCTFREE 10
932
  PCTUSED 40
933
  INITRANS 1
934
  MAXTRANS 255
935
  STORAGE
936
  (
937
    INITIAL 128K
938
    MINEXTENTS 1
939
    MAXEXTENTS 2147483645
940
    FREELISTS 1
941
    FREELIST GROUPS 1
942
    BUFFER_POOL DEFAULT
943
  )
944
;
945
 
946
CREATE TABLE CODE_REVIEWS
947
(
948
  PV_ID NUMBER NOT NULL,
949
  DATE_OF_REVIEW DATE,
950
  TIME_SPENT FLOAT(126),
951
  REVIEW_REASON VARCHAR2(4000 BYTE),
952
  RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),
953
  RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),
954
  RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),
955
  RTEAM_AUTHOR VARCHAR2(4000 BYTE),
956
  FILES_REVIEWED VARCHAR2(4000 BYTE),
957
  REVIEW_RESULTS NUMBER,
958
  ISSUES_RAISED VARCHAR2(4000 BYTE),
959
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
960
  FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),
961
  FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),
962
  RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),
963
  RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),
964
  RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),
965
  RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),
966
  RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),
967
  RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),
968
  RBS_S_EXCEP_HANDING CHAR(1 BYTE),
969
  RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),
970
  RBS_S_RESOURCE_MNG CHAR(1 BYTE),
971
  RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),
972
  RBS_S_TRANS_COMPLET CHAR(1 BYTE),
973
  RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),
974
  RBS_S_THREADSAFETY CHAR(1 BYTE),
975
  RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),
976
  RBS_S_RET_VALS CHAR(1 BYTE),
977
  RBS_C_RET_VALS VARCHAR2(4000 BYTE),
978
  RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),
979
  RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),
980
  RBS_S_SQL_STD CHAR(1 BYTE),
981
  RBS_C_SQL_STD VARCHAR2(4000 BYTE),
982
  MNT_S_EXT_REF CHAR(1 BYTE),
983
  MNT_C_EXT_REF VARCHAR2(4000 BYTE),
984
  MNT_S_CLASS_SIZE CHAR(1 BYTE),
985
  MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),
986
  MNT_S_METHOD_SIZE CHAR(1 BYTE),
987
  MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),
988
  MNT_S_APPROP_COMM CHAR(1 BYTE),
989
  MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),
990
  MNT_S_IDENT_NAME_STD CHAR(1 BYTE),
991
  MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),
992
  MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),
993
  MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),
994
  MNT_S_NO_LIT_NUM CHAR(1 BYTE),
995
  MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),
996
  MNT_S_NO_DEAD_CODE CHAR(1 BYTE),
997
  MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),
998
  DEI_S_STD_DES_PATT CHAR(1 BYTE),
999
  DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),
1000
  DEI_S_APPROP_ALGOR CHAR(1 BYTE),
1001
  DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),
1002
  DEI_S_APPROP_OBJ CHAR(1 BYTE),
1003
  DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),
1004
  DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),
1005
  DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),
1006
  DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),
1007
  DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),
1008
  DEI_S_APPROP_LOGGING CHAR(1 BYTE),
1009
  DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE)
1010
)
1011
  TABLESPACE "USERS"
1012
  LOGGING 
1013
  PCTFREE 10
1014
  PCTUSED 40
1015
  INITRANS 1
1016
  MAXTRANS 255
1017
  STORAGE
1018
  (
1019
    INITIAL 128K
1020
    MINEXTENTS 1
1021
    MAXEXTENTS 2147483645
1022
    FREELISTS 1
1023
    FREELIST GROUPS 1
1024
    BUFFER_POOL DEFAULT
1025
  )
1026
;
1027
 
1028
CREATE TABLE PLANNED_VERSIONS
1029
(
1030
  PKG_ID NUMBER,
1031
  PKG_VERSION VARCHAR2(50 BYTE)
1032
)
1033
  TABLESPACE "USERS"
1034
  LOGGING 
1035
  PCTFREE 10
1036
  PCTUSED 40
1037
  INITRANS 1
1038
  MAXTRANS 255
1039
  STORAGE
1040
  (
1041
    INITIAL 64K
1042
    MINEXTENTS 1
1043
    MAXEXTENTS 2147483645
1044
    FREELISTS 1
1045
    FREELIST GROUPS 1
1046
    BUFFER_POOL DEFAULT
1047
  )
1048
;
1049
 
1050
CREATE TABLE VALIDATION_RULES
1051
(
1052
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1053
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1054
  IS_NUMERIC CHAR(1 BYTE),
1055
  MIN_NUMERIC_VALUE NUMBER,
1056
  MAX_NUMERIC_VALUE NUMBER,
1057
  IS_DATE CHAR(1 BYTE),
1058
  START_DATE DATE,
1059
  END_DATE DATE,
1060
  MIN_STRING_LENGTH NUMBER,
1061
  MAX_STRING_LENGTH NUMBER,
1062
  REGEXP VARCHAR2(4000 BYTE),
1063
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1064
)
1065
  TABLESPACE "USERS"
1066
  LOGGING 
1067
  PCTFREE 10
1068
  PCTUSED 40
1069
  INITRANS 1
1070
  MAXTRANS 255
1071
  STORAGE
1072
  (
1073
    INITIAL 128K
1074
    MINEXTENTS 1
1075
    MAXEXTENTS 2147483645
1076
    FREELISTS 1
1077
    FREELIST GROUPS 1
1078
    BUFFER_POOL DEFAULT
1079
  )
1080
;
1081
 
1082
CREATE TABLE DO_NOT_RIPPLE
1083
(
1084
  RTAG_ID NUMBER NOT NULL,
1085
  PV_ID NUMBER NOT NULL
1086
)
1087
  TABLESPACE "USERS"
1088
  LOGGING 
1089
  PCTFREE 10
1090
  PCTUSED 40
1091
  INITRANS 1
1092
  MAXTRANS 255
1093
  STORAGE
1094
  (
1095
    INITIAL 64K
1096
    MINEXTENTS 1
1097
    MAXEXTENTS 2147483645
1098
    FREELISTS 1
1099
    FREELIST GROUPS 1
1100
    BUFFER_POOL DEFAULT
1101
  )
1102
;
1103
 
1104
CREATE TABLE NOTE_MANAGER
1105
(
1106
  NID VARCHAR2(30 BYTE) NOT NULL,
1107
  LAST_USER VARCHAR2(20 BYTE),
1108
  LAST_DATE DATE,
1109
  DESCRIPTION VARCHAR2(4000 BYTE)
1110
, CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY
1111
  (
1112
    NID
1113
  )
1114
  ENABLE
1115
)
1116
  TABLESPACE "USERS"
1117
  LOGGING 
1118
  PCTFREE 10
1119
  PCTUSED 40
1120
  INITRANS 1
1121
  MAXTRANS 255
1122
  STORAGE
1123
  (
1124
    INITIAL 128K
1125
    MINEXTENTS 1
1126
    MAXEXTENTS 2147483645
1127
    FREELISTS 1
1128
    FREELIST GROUPS 1
1129
    BUFFER_POOL DEFAULT
1130
  )
1131
;
1132
 
1133
CREATE TABLE RELEASE_CONTENT
1134
(
1135
  RTAG_ID NUMBER NOT NULL,
1136
  PV_ID NUMBER NOT NULL,
1137
  BASE_VIEW_ID NUMBER NOT NULL,
1138
  INSERT_STAMP DATE NOT NULL,
1139
  INSERTOR_ID NUMBER NOT NULL,
1140
  PKG_STATE NUMBER NOT NULL,
1141
  PKG_ID NUMBER,
1142
  DEPRECATED_STATE NUMBER,
1143
  PRODUCT_STATE NUMBER
1144
)
1145
  TABLESPACE "SYSTEM"
1146
  LOGGING 
1147
  PCTFREE 10
1148
  PCTUSED 40
1149
  INITRANS 1
1150
  MAXTRANS 255
1151
  STORAGE
1152
  (
1153
    INITIAL 64K
1154
    NEXT 64K
1155
    MINEXTENTS 1
1156
    MAXEXTENTS 2147483645
1157
    PCTINCREASE 0
1158
    FREELISTS 1
1159
    FREELIST GROUPS 1
1160
    BUFFER_POOL DEFAULT
1161
  )
1162
;
1163
 
1164
CREATE TABLE PROCESSES
1165
(
1166
  PROC_ID NUMBER NOT NULL,
1167
  PROC_NAME VARCHAR2(255 BYTE) NOT NULL,
1168
  PROC_DESCRIPTION VARCHAR2(255 BYTE),
1169
  RUN_AS VARCHAR2(255 BYTE),
1170
  PKG_OWNER VARCHAR2(4000 BYTE),
1171
  IS_INTERFACE CHAR(1 BYTE)
1172
, CONSTRAINT PROCESSES_PK PRIMARY KEY
1173
  (
1174
    PROC_ID
1175
  )
1176
  ENABLE
1177
)
1178
  TABLESPACE "USERS"
1179
  LOGGING 
1180
  PCTFREE 10
1181
  PCTUSED 40
1182
  INITRANS 1
1183
  MAXTRANS 255
1184
  STORAGE
1185
  (
1186
    INITIAL 128K
1187
    MINEXTENTS 1
1188
    MAXEXTENTS 2147483645
1189
    FREELISTS 1
1190
    FREELIST GROUPS 1
1191
    BUFFER_POOL DEFAULT
1192
  )
1193
;
1194
 
1195
CREATE TABLE RM_PACKAGE_ISSUES
1196
(
1197
  PKG_ID NUMBER,
1198
  PKG_NAME VARCHAR2(50 BYTE),
1199
  PV_ID NUMBER,
1200
  PKG_VERSION VARCHAR2(50 BYTE),
1201
  DPV_ID NUMBER,
1202
  DPKG_NAME VARCHAR2(50 BYTE),
1203
  DPKG_VERSION VARCHAR2(50 BYTE),
1204
  ISS_DB NUMBER,
1205
  ISS_ID NUMBER
1206
)
1207
  TABLESPACE "USERS"
1208
  LOGGING 
1209
  PCTFREE 10
1210
  PCTUSED 40
1211
  INITRANS 1
1212
  MAXTRANS 255
1213
  STORAGE
1214
  (
1215
    INITIAL 64K
1216
    MINEXTENTS 1
1217
    MAXEXTENTS 2147483645
1218
    FREELISTS 1
1219
    FREELIST GROUPS 1
1220
    BUFFER_POOL DEFAULT
1221
  )
1222
;
1223
 
1224
CREATE TABLE PACKAGE_PROCESSES
1225
(
1226
  PV_ID NUMBER NOT NULL,
1227
  PROC_ID NUMBER NOT NULL
1228
)
1229
  TABLESPACE "USERS"
1230
  LOGGING 
1231
  PCTFREE 10
1232
  PCTUSED 40
1233
  INITRANS 1
1234
  MAXTRANS 255
1235
  STORAGE
1236
  (
1237
    INITIAL 64K
1238
    MINEXTENTS 1
1239
    MAXEXTENTS 2147483645
1240
    FREELISTS 1
1241
    FREELIST GROUPS 1
1242
    BUFFER_POOL DEFAULT
1243
  )
1244
;
1245
 
1246
CREATE TABLE ADVISORY_RIPPLE
1247
(
1248
  RTAG_ID NUMBER NOT NULL,
1249
  PV_ID NUMBER NOT NULL
1250
)
1251
  TABLESPACE "USERS"
1252
  LOGGING 
1253
  PCTFREE 10
1254
  PCTUSED 40
1255
  INITRANS 1
1256
  MAXTRANS 255
1257
  STORAGE
1258
  (
1259
    INITIAL 64K
1260
    MINEXTENTS 1
1261
    MAXEXTENTS 2147483645
1262
    FREELISTS 1
1263
    FREELIST GROUPS 1
1264
    BUFFER_POOL DEFAULT
1265
  )
1266
;
1267
 
1268
CREATE TABLE PACKAGE_PATCHES
1269
(
1270
  PV_ID NUMBER NOT NULL,
1271
  PATCH_ID NUMBER NOT NULL,
1272
  INSTALL_ORDER NUMBER NOT NULL,
1273
  PATCH_OBSOLETED_BY NUMBER
1274
)
1275
  TABLESPACE "USERS"
1276
  LOGGING 
1277
  PCTFREE 10
1278
  PCTUSED 40
1279
  INITRANS 1
1280
  MAXTRANS 255
1281
  STORAGE
1282
  (
1283
    INITIAL 128K
1284
    MINEXTENTS 1
1285
    MAXEXTENTS 2147483645
1286
    FREELISTS 1
1287
    FREELIST GROUPS 1
1288
    BUFFER_POOL DEFAULT
1289
  )
1290
;
1291
 
1292
CREATE TABLE PACKAGE_INTEREST
1293
(
1294
  PKG_ID NUMBER NOT NULL,
1295
  PROJ_ID NUMBER NOT NULL,
1296
  USER_ID NUMBER NOT NULL
1297
)
1298
  TABLESPACE "USERS"
1299
  LOGGING 
1300
  PCTFREE 10
1301
  PCTUSED 40
1302
  INITRANS 1
1303
  MAXTRANS 255
1304
  STORAGE
1305
  (
1306
    INITIAL 64K
1307
    MINEXTENTS 1
1308
    MAXEXTENTS 2147483645
1309
    FREELISTS 1
1310
    FREELIST GROUPS 1
1311
    BUFFER_POOL DEFAULT
1312
  )
1313
;
1314
 
1315
CREATE TABLE PLATFORMS
1316
(
1317
  CODE NUMBER NOT NULL,
1318
  NAME VARCHAR2(255 BYTE) NOT NULL
1319
)
1320
  TABLESPACE "USERS"
1321
  LOGGING 
1322
  PCTFREE 10
1323
  PCTUSED 40
1324
  INITRANS 1
1325
  MAXTRANS 255
1326
  STORAGE
1327
  (
1328
    INITIAL 64K
1329
    MINEXTENTS 1
1330
    MAXEXTENTS 2147483645
1331
    FREELISTS 1
1332
    FREELIST GROUPS 1
1333
    BUFFER_POOL DEFAULT
1334
  )
1335
;
1336
 
1337
CREATE TABLE RELEASE_CONFIG
1338
(
1339
  RCON_ID NUMBER NOT NULL,
1340
  RTAG_ID NUMBER NOT NULL,
1341
  GBE_ID NUMBER NOT NULL,
1342
  DAEMON_HOSTNAME VARCHAR2(50 BYTE),
1343
  DAEMON_MODE CHAR(1 CHAR),
1344
  GBE_BUILDFILTER VARCHAR2(255 BYTE)
1345
, PRIMARY KEY
1346
  (
1347
    RCON_ID
1348
  )
1349
  ENABLE
1350
)
1351
  TABLESPACE "USERS"
1352
  LOGGING 
1353
  PCTFREE 10
1354
  PCTUSED 40
1355
  INITRANS 1
1356
  MAXTRANS 255
1357
  STORAGE
1358
  (
1359
    INITIAL 64K
1360
    MINEXTENTS 1
1361
    MAXEXTENTS 2147483645
1362
    FREELISTS 1
1363
    FREELIST GROUPS 1
1364
    BUFFER_POOL DEFAULT
1365
  )
1366
;
1367
 
1368
CREATE TABLE GBE_MACHTYPE
1369
(
1370
  GBE_ID NUMBER NOT NULL,
1371
  GBE_VALUE VARCHAR2(20 BYTE) NOT NULL
1372
, PRIMARY KEY
1373
  (
1374
    GBE_ID
1375
  )
1376
  ENABLE
1377
)
1378
  TABLESPACE "USERS"
1379
  LOGGING 
1380
  PCTFREE 10
1381
  PCTUSED 40
1382
  INITRANS 1
1383
  MAXTRANS 255
1384
  STORAGE
1385
  (
1386
    INITIAL 64K
1387
    MINEXTENTS 1
1388
    MAXEXTENTS 2147483645
1389
    FREELISTS 1
1390
    FREELIST GROUPS 1
1391
    BUFFER_POOL DEFAULT
1392
  )
1393
;
1394
 
1395
CREATE TABLE ARCHIVE_ACTION_LOG
1396
(
1397
  USER_ID NUMBER NOT NULL,
1398
  DATE_TIME_STAMP DATE NOT NULL,
1399
  RTAG_ID NUMBER NOT NULL,
1400
  DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
1401
)
1402
  TABLESPACE "USERS"
1403
  LOGGING 
1404
  PCTFREE 10
1405
  PCTUSED 0
1406
  INITRANS 1
1407
  MAXTRANS 255
1408
  STORAGE
1409
  (
1410
    INITIAL 64K
1411
    MINEXTENTS 1
1412
    MAXEXTENTS 2147483645
1413
    FREELISTS 1
1414
    FREELIST GROUPS 1
1415
    BUFFER_POOL DEFAULT
1416
  )
1417
;
1418
 
1419
CREATE TABLE RELEASE_METRICS
1420
(
1421
  RTAG_ID NUMBER NOT NULL,
1422
  TOTAL_PACKAGES NUMBER,
1423
  AUTOBUILT NUMBER,
1424
  LINES_OF_CODE NUMBER,
1425
  UNIT_TESTED NUMBER,
1426
  AUTOTESTED NUMBER,
1427
  BRANCHES NUMBER,
1428
  LAST_BUILD_TIME DATE
1429
)
1430
  TABLESPACE "USERS"
1431
  LOGGING 
1432
  PCTFREE 10
1433
  PCTUSED 40
1434
  INITRANS 1
1435
  MAXTRANS 255
1436
  STORAGE
1437
  (
1438
    INITIAL 64K
1439
    MINEXTENTS 1
1440
    MAXEXTENTS 2147483645
1441
    FREELISTS 1
1442
    FREELIST GROUPS 1
1443
    BUFFER_POOL DEFAULT
1444
  )
1445
;
1446
 
1447
CREATE TABLE AUTOBUILD_FAILURE
1448
(
1449
  GROUP_EMAIL_ID NUMBER NOT NULL,
1450
  PROJ_ID NUMBER,
1451
  VIEW_ID NUMBER
1452
, PRIMARY KEY
1453
  (
1454
    GROUP_EMAIL_ID
1455
  )
1456
  ENABLE
1457
)
1458
  TABLESPACE "USERS"
1459
  LOGGING 
1460
  PCTFREE 10
1461
  PCTUSED 40
1462
  INITRANS 1
1463
  MAXTRANS 255
1464
  STORAGE
1465
  (
1466
    INITIAL 64K
1467
    MINEXTENTS 1
1468
    MAXEXTENTS 2147483645
1469
    FREELISTS 1
1470
    FREELIST GROUPS 1
1471
    BUFFER_POOL DEFAULT
1472
  )
1473
;
1474
 
1475
CREATE TABLE JIRA_ISSUES
1476
(
1477
  PV_ID NUMBER NOT NULL,
1478
  ISS_KEY VARCHAR2(4000 BYTE),
1479
  DATE_TIME_STAMP DATE
1480
)
1481
  TABLESPACE "SYSTEM"
1482
  LOGGING 
1483
  PCTFREE 10
1484
  PCTUSED 40
1485
  INITRANS 1
1486
  MAXTRANS 255
1487
  STORAGE
1488
  (
1489
    INITIAL 64K
1490
    NEXT 64K
1491
    MINEXTENTS 1
1492
    MAXEXTENTS 2147483645
1493
    PCTINCREASE 0
1494
    FREELISTS 1
1495
    FREELIST GROUPS 1
1496
    BUFFER_POOL DEFAULT
1497
  )
1498
;
1499
 
1500
CREATE TABLE VIEW_DEF
1501
(
1502
  VIEW_ID NUMBER NOT NULL,
1503
  PKG_ID NUMBER NOT NULL
1504
)
1505
  TABLESPACE "SYSTEM"
1506
  LOGGING 
1507
  PCTFREE 10
1508
  PCTUSED 40
1509
  INITRANS 1
1510
  MAXTRANS 255
1511
  STORAGE
1512
  (
1513
    INITIAL 64K
1514
    NEXT 64K
1515
    MINEXTENTS 1
1516
    MAXEXTENTS 2147483645
1517
    PCTINCREASE 0
1518
    FREELISTS 1
1519
    FREELIST GROUPS 1
1520
    BUFFER_POOL DEFAULT
1521
  )
1522
;
1523
 
1524
CREATE TABLE WORK_IN_PROGRESS
1525
(
1526
  RTAG_ID NUMBER NOT NULL,
1527
  PV_ID NUMBER NOT NULL,
1528
  VIEW_ID NUMBER NOT NULL
1529
)
1530
  TABLESPACE "USERS"
1531
  LOGGING 
1532
  PCTFREE 10
1533
  PCTUSED 40
1534
  INITRANS 1
1535
  MAXTRANS 255
1536
  STORAGE
1537
  (
1538
    INITIAL 64K
1539
    MINEXTENTS 1
1540
    MAXEXTENTS 2147483645
1541
    FREELISTS 1
1542
    FREELIST GROUPS 1
1543
    BUFFER_POOL DEFAULT
1544
  )
1545
;
1546
 
1547
CREATE TABLE RUN_LEVEL
1548
(
1549
  RCON_ID NUMBER,
1550
  CURRENT_BUILD_FILES CLOB,
1551
  CURRENT_RUN_LEVEL NUMBER,
1552
  PAUSE NUMBER,
1553
  CURRENT_PKG_ID_BEING_BUILT NUMBER
1554
)
1555
  TABLESPACE "USERS"
1556
  LOGGING 
1557
  PCTFREE 10
1558
  PCTUSED 40
1559
  INITRANS 1
1560
  MAXTRANS 255
1561
  STORAGE
1562
  (
1563
    INITIAL 64K
1564
    MINEXTENTS 1
1565
    MAXEXTENTS 2147483645
1566
    FREELISTS 1
1567
    FREELIST GROUPS 1
1568
    BUFFER_POOL DEFAULT
1569
  )
1570
    LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$
1571
    (
1572
      ENABLE STORAGE IN ROW
1573
      CHUNK 8192
1574
      PCTVERSION 10
1575
      NOCACHE LOGGING
1576
      TABLESPACE USERS
1577
      STORAGE
1578
      (
1579
        INITIAL 64K
1580
        MINEXTENTS 1
1581
        MAXEXTENTS 2147483645
1582
        FREELISTS 1
1583
        FREELIST GROUPS 1
1584
        BUFFER_POOL DEFAULT
1585
      )
1586
    )
1587
;
1588
 
1589
CREATE TABLE TEST_TYPES
1590
(
1591
  TEST_TYPE_ID NUMBER NOT NULL,
1592
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
1593
  DISPLAY_ORDER NUMBER
1594
, CONSTRAINT PK_TEST_TYPES PRIMARY KEY
1595
  (
1596
    TEST_TYPE_ID
1597
  )
1598
  ENABLE
1599
)
1600
  TABLESPACE "USERS"
1601
  LOGGING 
1602
  PCTFREE 10
1603
  PCTUSED 40
1604
  INITRANS 1
1605
  MAXTRANS 255
1606
  STORAGE
1607
  (
1608
    INITIAL 128K
1609
    MINEXTENTS 1
1610
    MAXEXTENTS 2147483645
1611
    FREELISTS 1
1612
    FREELIST GROUPS 1
1613
    BUFFER_POOL DEFAULT
1614
  )
1615
;
1616
 
1617
CREATE TABLE PACKAGE_DEPENDENCIES
1618
(
1619
  PV_ID NUMBER NOT NULL,
1620
  DPV_ID NUMBER NOT NULL,
1621
  PKG_ID NUMBER NOT NULL,
1622
  DPKG_ID NUMBER NOT NULL,
1623
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1624
  DISPLAY_ORDER NUMBER
1625
)
1626
  TABLESPACE "SYSTEM"
1627
  LOGGING 
1628
  PCTFREE 10
1629
  PCTUSED 40
1630
  INITRANS 1
1631
  MAXTRANS 255
1632
  STORAGE
1633
  (
1634
    INITIAL 320K
1635
    NEXT 64K
1636
    MINEXTENTS 1
1637
    MAXEXTENTS 2147483645
1638
    PCTINCREASE 0
1639
    FREELISTS 1
1640
    FREELIST GROUPS 1
1641
    BUFFER_POOL DEFAULT
1642
  )
1643
;
1644
 
1645
CREATE TABLE PRODUCT_COMPONENTS
1646
(
1647
  PV_ID NUMBER NOT NULL,
1648
  OS_ID NUMBER NOT NULL,
1649
  FILE_PATH VARCHAR2(4000 BYTE),
1650
  FILE_NAME VARCHAR2(4000 BYTE),
1651
  DESTINATION_PATH VARCHAR2(4000 BYTE),
1652
  BYTE_SIZE NUMBER,
1653
  CRC_CKSUM VARCHAR2(2000 BYTE)
1654
)
1655
  TABLESPACE "USERS"
1656
  LOGGING 
1657
  PCTFREE 10
1658
  PCTUSED 40
1659
  INITRANS 1
1660
  MAXTRANS 255
1661
  STORAGE
1662
  (
1663
    INITIAL 64K
1664
    MINEXTENTS 1
1665
    MAXEXTENTS 2147483645
1666
    FREELISTS 1
1667
    FREELIST GROUPS 1
1668
    BUFFER_POOL DEFAULT
1669
  )
1670
;
1671
 
1672
CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES
1673
(
1674
  PKG_ID NUMBER,
1675
  PKG_NAME VARCHAR2(50 BYTE),
1676
  PV_ID NUMBER,
1677
  PKG_VERSION VARCHAR2(50 BYTE),
1678
  DPV_ID NUMBER,
1679
  DPKG_NAME VARCHAR2(50 BYTE),
1680
  DPKG_VERSION VARCHAR2(50 BYTE),
1681
  ISS_DB NUMBER,
1682
  ISS_ID NUMBER
1683
)
1684
ON COMMIT PRESERVE ROWS
1685
;
1686
 
1687
CREATE TABLE PACKAGE_BUILD_INFO
1688
(
1689
  PV_ID NUMBER NOT NULL,
1690
  BM_ID NUMBER NOT NULL,
1691
  BSA_ID NUMBER
1692
)
1693
  TABLESPACE "USERS"
1694
  LOGGING 
1695
  PCTFREE 10
1696
  PCTUSED 40
1697
  INITRANS 1
1698
  MAXTRANS 255
1699
  STORAGE
1700
  (
1701
    INITIAL 64K
1702
    MINEXTENTS 1
1703
    MAXEXTENTS 2147483645
1704
    FREELISTS 1
1705
    FREELIST GROUPS 1
1706
    BUFFER_POOL DEFAULT
1707
  )
1708
;
1709
 
1710
CREATE TABLE PACKAGES
1711
(
1712
  PKG_ID NUMBER NOT NULL,
1713
  PKG_NAME VARCHAR2(255 BYTE) NOT NULL,
1714
  SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),
1715
  WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE)
1716
, CONSTRAINT PK_PACKAGES PRIMARY KEY
1717
  (
1718
    PKG_ID
1719
  )
1720
  ENABLE
1721
)
1722
  TABLESPACE "SYSTEM"
1723
  LOGGING 
1724
  PCTFREE 10
1725
  PCTUSED 40
1726
  INITRANS 1
1727
  MAXTRANS 255
1728
  STORAGE
1729
  (
1730
    INITIAL 64K
1731
    NEXT 64K
1732
    MINEXTENTS 1
1733
    MAXEXTENTS 2147483645
1734
    PCTINCREASE 0
1735
    FREELISTS 1
1736
    FREELIST GROUPS 1
1737
    BUFFER_POOL DEFAULT
1738
  )
1739
;
1740
 
1741
CREATE TABLE MEMBERS_GROUP
1742
(
1743
  GROUP_EMAIL_ID NUMBER NOT NULL,
1744
  USER_ID NUMBER
1745
)
1746
  TABLESPACE "USERS"
1747
  LOGGING 
1748
  PCTFREE 10
1749
  PCTUSED 40
1750
  INITRANS 1
1751
  MAXTRANS 255
1752
  STORAGE
1753
  (
1754
    INITIAL 64K
1755
    MINEXTENTS 1
1756
    MAXEXTENTS 2147483645
1757
    FREELISTS 1
1758
    FREELIST GROUPS 1
1759
    BUFFER_POOL DEFAULT
1760
  )
1761
;
1762
 
1763
CREATE TABLE BUILD_SERVICE_CONFIG
1764
(
1765
  SERVICE VARCHAR2(50 BYTE) NOT NULL,
1766
  CONFIG VARCHAR2(2000 BYTE) NOT NULL
1767
)
1768
  TABLESPACE "USERS"
1769
  LOGGING 
1770
  PCTFREE 10
1771
  PCTUSED 40
1772
  INITRANS 1
1773
  MAXTRANS 255
1774
  STORAGE
1775
  (
1776
    INITIAL 64K
1777
    MINEXTENTS 1
1778
    MAXEXTENTS 2147483645
1779
    FREELISTS 1
1780
    FREELIST GROUPS 1
1781
    BUFFER_POOL DEFAULT
1782
  )
1783
;
1784
 
1785
CREATE TABLE PROJECTS
1786
(
1787
  PROJ_ID NUMBER NOT NULL,
1788
  PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,
1789
  BASE_URL VARCHAR2(4000 BYTE)
1790
, CONSTRAINT PK_PROJECTS PRIMARY KEY
1791
  (
1792
    PROJ_ID
1793
  )
1794
  ENABLE
1795
)
1796
  TABLESPACE "SYSTEM"
1797
  LOGGING 
1798
  PCTFREE 10
1799
  PCTUSED 40
1800
  INITRANS 1
1801
  MAXTRANS 255
1802
  STORAGE
1803
  (
1804
    INITIAL 64K
1805
    NEXT 64K
1806
    MINEXTENTS 1
1807
    MAXEXTENTS 2147483645
1808
    PCTINCREASE 0
1809
    FREELISTS 1
1810
    FREELIST GROUPS 1
1811
    BUFFER_POOL DEFAULT
1812
  )
1813
;
1814
 
1815
CREATE TABLE VIEWS
1816
(
1817
  VIEW_ID NUMBER NOT NULL,
1818
  VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,
1819
  OWNER_ID NUMBER NOT NULL,
1820
  BASE_VIEW CHAR(1 BYTE) NOT NULL,
1821
  PUBLIC_READ CHAR(1 BYTE) NOT NULL
1822
, CONSTRAINT PK_VIEWS PRIMARY KEY
1823
  (
1824
    VIEW_ID
1825
  )
1826
  ENABLE
1827
)
1828
  TABLESPACE "SYSTEM"
1829
  LOGGING 
1830
  PCTFREE 10
1831
  PCTUSED 40
1832
  INITRANS 1
1833
  MAXTRANS 255
1834
  STORAGE
1835
  (
1836
    INITIAL 64K
1837
    NEXT 64K
1838
    MINEXTENTS 1
1839
    MAXEXTENTS 2147483645
1840
    PCTINCREASE 0
1841
    FREELISTS 1
1842
    FREELIST GROUPS 1
1843
    BUFFER_POOL DEFAULT
1844
  )
1845
;
1846
 
1847
CREATE TABLE DAEMON_ACTION_LOG
1848
(
1849
  USER_ID NUMBER NOT NULL,
1850
  ACTION_DATETIME DATE,
1851
  RCON_ID NUMBER NOT NULL,
1852
  DESCRIPTION VARCHAR2(4000 BYTE),
1853
  ACTTYPE_ID NUMBER
1854
)
1855
  TABLESPACE "USERS"
1856
  LOGGING 
1857
  PCTFREE 10
1858
  PCTUSED 40
1859
  INITRANS 1
1860
  MAXTRANS 255
1861
  STORAGE
1862
  (
1863
    INITIAL 64K
1864
    MINEXTENTS 1
1865
    MAXEXTENTS 2147483645
1866
    FREELISTS 1
1867
    FREELIST GROUPS 1
1868
    BUFFER_POOL DEFAULT
1869
  )
1870
;
1871
 
1872
CREATE TABLE DASH_BOARD
1873
(
1874
  PROJ_ID NUMBER NOT NULL,
1875
  RTAG_ID NUMBER NOT NULL,
1876
  LAST_BUILD_TIME DATE NOT NULL,
1877
  AUTOMATED_PACKAGES NUMBER NOT NULL,
1878
  TOTAL_PACKAGES NUMBER NOT NULL
1879
)
1880
  TABLESPACE "USERS"
1881
  LOGGING 
1882
  PCTFREE 10
1883
  PCTUSED 40
1884
  INITRANS 1
1885
  MAXTRANS 255
1886
  STORAGE
1887
  (
1888
    INITIAL 64K
1889
    MINEXTENTS 1
1890
    MAXEXTENTS 2147483645
1891
    FREELISTS 1
1892
    FREELIST GROUPS 1
1893
    BUFFER_POOL DEFAULT
1894
  )
1895
;
1896
 
1897
CREATE TABLE ABT_ACTION_LOG
1898
(
1899
  RCON_ID NUMBER NOT NULL,
1900
  ACTION_DATETIME DATE,
1901
  ACTION VARCHAR2(4000 BYTE)
1902
)
1903
  TABLESPACE "USERS"
1904
  LOGGING 
1905
  PCTFREE 10
1906
  PCTUSED 40
1907
  INITRANS 1
1908
  MAXTRANS 255
1909
  STORAGE
1910
  (
1911
    INITIAL 64K
1912
    MINEXTENTS 1
1913
    MAXEXTENTS 2147483645
1914
    FREELISTS 1
1915
    FREELIST GROUPS 1
1916
    BUFFER_POOL DEFAULT
1917
  )
1918
;
1919
 
1920
CREATE TABLE RUNTIME_DEPENDENCIES
1921
(
1922
  PV_ID NUMBER NOT NULL,
1923
  RTD_ID NUMBER,
1924
  RTD_COMMENTS VARCHAR2(2000 BYTE),
1925
  RTD_URL VARCHAR2(2000 BYTE),
1926
  MOD_DATE DATE NOT NULL,
1927
  MOD_USER NUMBER NOT NULL
1928
)
1929
  TABLESPACE "USERS"
1930
  LOGGING 
1931
  PCTFREE 10
1932
  PCTUSED 40
1933
  INITRANS 1
1934
  MAXTRANS 255
1935
  STORAGE
1936
  (
1937
    INITIAL 128K
1938
    MINEXTENTS 1
1939
    MAXEXTENTS 2147483645
1940
    FREELISTS 1
1941
    FREELIST GROUPS 1
1942
    BUFFER_POOL DEFAULT
1943
  )
1944
;
1945
 
1946
CREATE TABLE PACKAGE_VERSIONS
1947
(
1948
  PV_ID NUMBER NOT NULL,
1949
  PKG_ID NUMBER NOT NULL,
1950
  PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,
1951
  DLOCKED CHAR(1 BYTE) NOT NULL,
1952
  RELEASED_AT NUMBER,
1953
  MODIFIED_STAMP DATE,
1954
  MODIFIER_ID NUMBER NOT NULL,
1955
  CREATED_STAMP DATE,
1956
  CREATOR_ID NUMBER NOT NULL,
1957
  COMMENTS VARCHAR2(4000 BYTE),
1958
  V_MM VARCHAR2(50 BYTE),
1959
  V_NMM VARCHAR2(50 BYTE),
1960
  V_EXT VARCHAR2(50 BYTE),
1961
  PKG_LABEL VARCHAR2(60 BYTE),
1962
  SRC_PATH VARCHAR2(2000 BYTE),
1963
  PV_DESCRIPTION VARCHAR2(4000 BYTE),
1964
  OWNER_ID NUMBER NOT NULL,
1965
  PV_OVERVIEW VARCHAR2(4000 BYTE),
1966
  IS_PATCH CHAR(1 BYTE),
1967
  LAST_PV_ID NUMBER NOT NULL,
1968
  RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),
1969
  IS_DEPLOYABLE CHAR(1 BYTE),
1970
  IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),
1971
  IS_OBSOLETE CHAR(1 BYTE),
1972
  OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),
1973
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1974
  CHANGE_TYPE CHAR(1 BYTE),
1975
  LINK VARCHAR2(4000 BYTE),
1976
  PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),
1977
  BS_ID NUMBER,
1978
  IS_AUTOBUILDABLE CHAR(1 BYTE),
1979
  SBOM_PRIORITY CHAR(1 BYTE),
1980
  RIPPLE_FIELD CHAR(1 CHAR),
1981
  MAXIMUM_BUILD_TIME NUMBER,
1982
  ESTIMATED_COMPLETION_TIME DATE
1983
, CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY
1984
  (
1985
    PV_ID
1986
  )
1987
  ENABLE
1988
)
1989
  TABLESPACE "SYSTEM"
1990
  LOGGING 
1991
  PCTFREE 10
1992
  PCTUSED 40
1993
  INITRANS 1
1994
  MAXTRANS 255
1995
  STORAGE
1996
  (
1997
    INITIAL 192K
1998
    NEXT 64K
1999
    MINEXTENTS 1
2000
    MAXEXTENTS 2147483645
2001
    PCTINCREASE 0
2002
    FREELISTS 1
2003
    FREELIST GROUPS 1
2004
    BUFFER_POOL DEFAULT
2005
  )
2006
;
2007
 
2008
CREATE TABLE REPEAT_SCHEDULE
2009
(
2010
  RPT_ID NUMBER NOT NULL,
2011
  REPEAT CHAR(1 BYTE)
2012
, PRIMARY KEY
2013
  (
2014
    RPT_ID
2015
  )
2016
  ENABLE
2017
)
2018
  TABLESPACE "USERS"
2019
  LOGGING 
2020
  PCTFREE 10
2021
  PCTUSED 40
2022
  INITRANS 1
2023
  MAXTRANS 255
2024
  STORAGE
2025
  (
2026
    INITIAL 64K
2027
    MINEXTENTS 1
2028
    MAXEXTENTS 2147483645
2029
    FREELISTS 1
2030
    FREELIST GROUPS 1
2031
    BUFFER_POOL DEFAULT
2032
  )
2033
;
2034
 
2035
CREATE TABLE CODE_REVIEW_URL
2036
(
2037
  CR_ID NUMBER NOT NULL,
2038
  PV_ID NUMBER NOT NULL,
2039
  PROJ_ID NUMBER NOT NULL,
2040
  URL VARCHAR2(4000 BYTE) NOT NULL,
2041
  REASON VARCHAR2(4000 BYTE),
2042
  DATE_OF_REVIEW DATE NOT NULL,
2043
  LAST_MODIFIED DATE
2044
, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY
2045
  (
2046
    CR_ID
2047
  )
2048
  ENABLE
2049
)
2050
  TABLESPACE "USERS"
2051
  LOGGING 
2052
  PCTFREE 10
2053
  PCTUSED 40
2054
  INITRANS 1
2055
  MAXTRANS 255
2056
  STORAGE
2057
  (
2058
    INITIAL 64K
2059
    MINEXTENTS 1
2060
    MAXEXTENTS 2147483645
2061
    FREELISTS 1
2062
    FREELIST GROUPS 1
2063
    BUFFER_POOL DEFAULT
2064
  )
2065
;
2066
 
2067
CREATE TABLE DEF_ACTION_BUTTONS
2068
(
2069
  ABTN_ID NUMBER NOT NULL,
2070
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
2071
  TEXT VARCHAR2(50 BYTE),
2072
  ACTION_LINK VARCHAR2(4000 BYTE),
2073
  EVENT_HANDLER VARCHAR2(4000 BYTE),
2074
  IMG_ENABLED VARCHAR2(1000 BYTE),
2075
  IMG_DISABLED VARCHAR2(1000 BYTE),
2076
  HINT VARCHAR2(255 BYTE),
2077
  VISIBLE CHAR(1 BYTE) NOT NULL,
2078
  ACTIVE CHAR(1 BYTE) NOT NULL,
2079
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
2080
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
2081
  (
2082
    ABTN_ID
2083
  )
2084
  ENABLE
2085
)
2086
  TABLESPACE "USERS"
2087
  LOGGING 
2088
  PCTFREE 10
2089
  PCTUSED 40
2090
  INITRANS 1
2091
  MAXTRANS 255
2092
  STORAGE
2093
  (
2094
    INITIAL 64K
2095
    MINEXTENTS 1
2096
    MAXEXTENTS 2147483645
2097
    FREELISTS 1
2098
    FREELIST GROUPS 1
2099
    BUFFER_POOL DEFAULT
2100
  )
2101
;
2102
 
2103
CREATE TABLE CQ_ISSUES
2104
(
2105
  PV_ID NUMBER NOT NULL,
2106
  ISS_DB NUMBER NOT NULL,
2107
  ISS_ID NUMBER NOT NULL,
2108
  ISS_STATE NUMBER NOT NULL,
2109
  MOD_DATE DATE NOT NULL,
2110
  NOTES VARCHAR2(255 BYTE)
2111
)
2112
  TABLESPACE "SYSTEM"
2113
  LOGGING 
2114
  PCTFREE 10
2115
  PCTUSED 40
2116
  INITRANS 1
2117
  MAXTRANS 255
2118
  STORAGE
2119
  (
2120
    INITIAL 64K
2121
    NEXT 64K
2122
    MINEXTENTS 1
2123
    MAXEXTENTS 2147483645
2124
    PCTINCREASE 0
2125
    FREELISTS 1
2126
    FREELIST GROUPS 1
2127
    BUFFER_POOL DEFAULT
2128
  )
2129
;
2130
 
2131
ALTER TABLE PLANNED
2132
ADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE
2133
(
2134
  PV_ID,
2135
  RTAG_ID
2136
)
2137
 ENABLE
2138
;
2139
 
2140
ALTER TABLE PACKAGE_METRICS
2141
ADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE
2142
(
2143
  PV_ID
2144
)
2145
 ENABLE
2146
;
2147
 
2148
ALTER TABLE RELEASE_METRICS
2149
ADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE
2150
(
2151
  RTAG_ID
2152
)
2153
 ENABLE
2154
;
2155
 
2156
ALTER TABLE PACKAGE_BUILD_ENV
2157
ADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY
2158
(
2159
  BE_ID
2160
)
2161
REFERENCES BUILD_ENVIRONMENTS
2162
(
2163
BE_ID
2164
) ENABLE
2165
;
2166
 
2167
ALTER TABLE PACKAGE_BUILD_ENV
2168
ADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY
2169
(
2170
  PV_ID
2171
)
2172
REFERENCES PACKAGE_VERSIONS
2173
(
2174
PV_ID
2175
) ENABLE
2176
;
2177
 
2178
ALTER TABLE NOTIFICATION_HISTORY
2179
ADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY
2180
(
2181
  PV_ID
2182
)
2183
REFERENCES PACKAGE_VERSIONS
2184
(
2185
PV_ID
2186
) DISABLE
2187
;
2188
 
2189
ALTER TABLE NOTIFICATION_HISTORY
2190
ADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY
2191
(
2192
  RTAG_ID
2193
)
2194
REFERENCES RELEASE_TAGS
2195
(
2196
RTAG_ID
2197
) ENABLE
2198
;
2199
 
2200
ALTER TABLE IGNORE_WARNINGS
2201
ADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY
2202
(
2203
  RTAG_ID
2204
)
2205
REFERENCES RELEASE_TAGS
2206
(
2207
RTAG_ID
2208
) ENABLE
2209
;
2210
 
2211
ALTER TABLE IGNORE_WARNINGS
2212
ADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY
2213
(
2214
  DPV_ID
2215
)
2216
REFERENCES PACKAGE_VERSIONS
2217
(
2218
PV_ID
2219
) ENABLE
2220
;
2221
 
2222
ALTER TABLE IGNORE_WARNINGS
2223
ADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY
2224
(
2225
  PV_ID
2226
)
2227
REFERENCES PACKAGE_VERSIONS
2228
(
2229
PV_ID
2230
) ENABLE
2231
;
2232
 
2233
ALTER TABLE PACKAGE_DOCUMENTS
2234
ADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY
2235
(
2236
  PV_ID
2237
)
2238
REFERENCES PACKAGE_VERSIONS
2239
(
2240
PV_ID
2241
) ENABLE
2242
;
2243
 
2244
ALTER TABLE BUILD_STANDARDS_ADDENDUM
2245
ADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY
2246
(
2247
  BS_ID
2248
)
2249
REFERENCES BUILD_STANDARDS
2250
(
2251
BS_ID
2252
) ENABLE
2253
;
2254
 
2255
ALTER TABLE UNIT_TESTS
2256
ADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY
2257
(
2258
  TEST_TYPES_FK
2259
)
2260
REFERENCES TEST_TYPES
2261
(
2262
TEST_TYPE_ID
2263
) ENABLE
2264
;
2265
 
2266
ALTER TABLE UNIT_TESTS
2267
ADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY
2268
(
2269
  PV_ID
2270
)
2271
REFERENCES PACKAGE_VERSIONS
2272
(
2273
PV_ID
2274
) ENABLE
2275
;
2276
 
2277
ALTER TABLE RELEASE_COMPONENTS
2278
ADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY
2279
(
2280
  PV_ID
2281
)
2282
REFERENCES PACKAGE_VERSIONS
2283
(
2284
PV_ID
2285
) ENABLE
2286
;
2287
 
2288
ALTER TABLE BUILD_ORDER
2289
ADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY
2290
(
2291
  PV_ID
2292
)
2293
REFERENCES PACKAGE_VERSIONS
2294
(
2295
PV_ID
2296
) DISABLE
2297
;
2298
 
2299
ALTER TABLE BUILD_ORDER
2300
ADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY
2301
(
2302
  RTAG_ID
2303
)
2304
REFERENCES RELEASE_TAGS
2305
(
2306
RTAG_ID
2307
) ENABLE
2308
;
2309
 
2310
ALTER TABLE PLANNED
53 mhunt 2311
ADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY
51 mhunt 2312
(
53 mhunt 2313
  RTAG_ID
51 mhunt 2314
)
53 mhunt 2315
REFERENCES RELEASE_TAGS
51 mhunt 2316
(
53 mhunt 2317
RTAG_ID
51 mhunt 2318
) ENABLE
2319
;
2320
 
2321
ALTER TABLE PLANNED
53 mhunt 2322
ADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY
51 mhunt 2323
(
53 mhunt 2324
  PV_ID
51 mhunt 2325
)
53 mhunt 2326
REFERENCES PACKAGE_VERSIONS
51 mhunt 2327
(
53 mhunt 2328
PV_ID
51 mhunt 2329
) ENABLE
2330
;
2331
 
2332
ALTER TABLE PLANNED
2333
ADD CONSTRAINT REFVIEWS55 FOREIGN KEY
2334
(
2335
  VIEW_ID
2336
)
2337
REFERENCES VIEWS
2338
(
2339
VIEW_ID
2340
) ENABLE
2341
;
2342
 
2343
ALTER TABLE PROJECT_ACTION_LOG
2344
ADD FOREIGN KEY
2345
(
2346
  RTAG_ID
2347
)
2348
REFERENCES RELEASE_TAGS
2349
(
2350
RTAG_ID
2351
) DISABLE
2352
;
2353
 
2354
ALTER TABLE PROJECT_ACTION_LOG
2355
ADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY
2356
(
2357
  ACTTYPE_ID
2358
)
2359
REFERENCES ACTION_TYPE
2360
(
2361
ACTTYPE_ID
2362
) ENABLE
2363
;
2364
 
2365
ALTER TABLE PACKAGE_METRICS
2366
ADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY
2367
(
2368
  PV_ID
2369
)
2370
REFERENCES PACKAGE_VERSIONS
2371
(
2372
PV_ID
2373
) ENABLE
2374
;
2375
 
2376
ALTER TABLE RELEASE_LINKS
2377
ADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY
2378
(
2379
  REF_RTAG_ID
2380
)
2381
REFERENCES RELEASE_TAGS
2382
(
2383
RTAG_ID
2384
) ENABLE
2385
;
2386
 
2387
ALTER TABLE RELEASE_LINKS
2388
ADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY
2389
(
2390
  RTAG_ID
2391
)
2392
REFERENCES RELEASE_TAGS
2393
(
2394
RTAG_ID
2395
) ENABLE
2396
;
2397
 
2398
ALTER TABLE BUILD_ENV_DOCUMENTS
2399
ADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY
2400
(
2401
  BE_ID
2402
)
2403
REFERENCES BUILD_ENVIRONMENTS
2404
(
2405
BE_ID
2406
) ENABLE
2407
;
2408
 
2409
ALTER TABLE ACTION_LOG
2410
ADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY
2411
(
2412
  ACTTYPE_ID
2413
)
2414
REFERENCES ACTION_TYPE
2415
(
2416
ACTTYPE_ID
2417
) ENABLE
2418
;
2419
 
2420
ALTER TABLE ADDITIONAL_NOTES
2421
ADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY
2422
(
2423
  PV_ID
2424
)
2425
REFERENCES PACKAGE_VERSIONS
2426
(
2427
PV_ID
2428
) ENABLE
2429
;
2430
 
2431
ALTER TABLE VTREES_WORLD
2432
ADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY
2433
(
2434
  VTREE_ID
2435
)
2436
REFERENCES VTREES
2437
(
2438
VTREE_ID
2439
) ENABLE
2440
;
2441
 
2442
ALTER TABLE VTREES_WORLD
2443
ADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY
2444
(
2445
  WORLD_ID
2446
)
2447
REFERENCES WORLDS
2448
(
2449
WORLD_ID
2450
) ENABLE
2451
;
2452
 
2453
ALTER TABLE CODE_REVIEWS
2454
ADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY
2455
(
2456
  PV_ID
2457
)
2458
REFERENCES PACKAGE_VERSIONS
2459
(
2460
PV_ID
2461
) ENABLE
2462
;
2463
 
2464
ALTER TABLE PLANNED_VERSIONS
2465
ADD FOREIGN KEY
2466
(
2467
  PKG_ID
2468
)
2469
REFERENCES PACKAGES
2470
(
2471
PKG_ID
2472
) ENABLE
2473
;
2474
 
2475
ALTER TABLE DO_NOT_RIPPLE
2476
ADD FOREIGN KEY
2477
(
2478
  PV_ID
2479
)
2480
REFERENCES PACKAGE_VERSIONS
2481
(
2482
PV_ID
2483
) ENABLE
2484
;
2485
 
2486
ALTER TABLE DO_NOT_RIPPLE
2487
ADD FOREIGN KEY
2488
(
2489
  RTAG_ID
2490
)
2491
REFERENCES RELEASE_TAGS
2492
(
2493
RTAG_ID
2494
) ENABLE
2495
;
2496
 
2497
ALTER TABLE RELEASE_CONTENT
2498
ADD FOREIGN KEY
2499
(
2500
  PKG_ID
2501
)
2502
REFERENCES PACKAGES
2503
(
2504
PKG_ID
2505
) ENABLE
2506
;
2507
 
2508
ALTER TABLE RELEASE_CONTENT
2509
ADD FOREIGN KEY
2510
(
2511
  PRODUCT_STATE
2512
)
2513
REFERENCES PRODUCT_STATES
2514
(
2515
STATE_ID
2516
) ENABLE
2517
;
2518
 
2519
ALTER TABLE PACKAGE_PROCESSES
2520
ADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY
2521
(
2522
  PROC_ID
2523
)
2524
REFERENCES PROCESSES
2525
(
2526
PROC_ID
2527
) ENABLE
2528
;
2529
 
2530
ALTER TABLE PACKAGE_PROCESSES
2531
ADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY
2532
(
2533
  PV_ID
2534
)
2535
REFERENCES PACKAGE_VERSIONS
2536
(
2537
PV_ID
2538
) ENABLE
2539
;
2540
 
2541
ALTER TABLE ADVISORY_RIPPLE
2542
ADD FOREIGN KEY
2543
(
2544
  RTAG_ID
2545
)
2546
REFERENCES RELEASE_TAGS
2547
(
2548
RTAG_ID
2549
) ENABLE
2550
;
2551
 
2552
ALTER TABLE ADVISORY_RIPPLE
2553
ADD FOREIGN KEY
2554
(
2555
  PV_ID
2556
)
2557
REFERENCES PACKAGE_VERSIONS
2558
(
2559
PV_ID
2560
) ENABLE
2561
;
2562
 
2563
ALTER TABLE PACKAGE_PATCHES
2564
ADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY
2565
(
2566
  PATCH_ID
2567
)
2568
REFERENCES PACKAGE_VERSIONS
2569
(
2570
PV_ID
2571
) ENABLE
2572
;
2573
 
2574
ALTER TABLE PACKAGE_PATCHES
2575
ADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY
2576
(
2577
  PV_ID
2578
)
2579
REFERENCES PACKAGE_VERSIONS
2580
(
2581
PV_ID
2582
) ENABLE
2583
;
2584
 
2585
ALTER TABLE PACKAGE_INTEREST
2586
ADD FOREIGN KEY
2587
(
2588
  PROJ_ID
2589
)
2590
REFERENCES PROJECTS
2591
(
2592
PROJ_ID
2593
) ENABLE
2594
;
2595
 
2596
ALTER TABLE RELEASE_CONFIG
2597
ADD FOREIGN KEY
2598
(
2599
  RTAG_ID
2600
)
2601
REFERENCES RELEASE_TAGS
2602
(
2603
RTAG_ID
2604
) ENABLE
2605
;
2606
 
2607
ALTER TABLE RELEASE_CONFIG
2608
ADD FOREIGN KEY
2609
(
2610
  GBE_ID
2611
)
2612
REFERENCES GBE_MACHTYPE
2613
(
2614
GBE_ID
2615
) ENABLE
2616
;
2617
 
2618
ALTER TABLE RELEASE_METRICS
2619
ADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY
2620
(
2621
  RTAG_ID
2622
)
2623
REFERENCES RELEASE_TAGS
2624
(
2625
RTAG_ID
2626
) ENABLE
2627
;
2628
 
2629
ALTER TABLE AUTOBUILD_FAILURE
2630
ADD FOREIGN KEY
2631
(
2632
  VIEW_ID
2633
)
2634
REFERENCES VIEWS
2635
(
2636
VIEW_ID
2637
) ENABLE
2638
;
2639
 
2640
ALTER TABLE AUTOBUILD_FAILURE
2641
ADD FOREIGN KEY
2642
(
2643
  PROJ_ID
2644
)
2645
REFERENCES PROJECTS
2646
(
2647
PROJ_ID
2648
) ENABLE
2649
;
2650
 
2651
ALTER TABLE JIRA_ISSUES
2652
ADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY
2653
(
2654
  PV_ID
2655
)
2656
REFERENCES PACKAGE_VERSIONS
2657
(
2658
PV_ID
2659
) ENABLE
2660
;
2661
 
2662
ALTER TABLE WORK_IN_PROGRESS
2663
ADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY
2664
(
2665
  PV_ID
2666
)
2667
REFERENCES PACKAGE_VERSIONS
2668
(
2669
PV_ID
2670
) ENABLE
2671
;
2672
 
2673
ALTER TABLE WORK_IN_PROGRESS
2674
ADD CONSTRAINT REFVIEWS52 FOREIGN KEY
2675
(
2676
  VIEW_ID
2677
)
2678
REFERENCES VIEWS
2679
(
2680
VIEW_ID
2681
) ENABLE
2682
;
2683
 
2684
ALTER TABLE WORK_IN_PROGRESS
2685
ADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY
2686
(
2687
  RTAG_ID
2688
)
2689
REFERENCES RELEASE_TAGS
2690
(
2691
RTAG_ID
2692
) ENABLE
2693
;
2694
 
2695
ALTER TABLE RUN_LEVEL
2696
ADD FOREIGN KEY
2697
(
2698
  RCON_ID
2699
)
2700
REFERENCES RELEASE_CONFIG
2701
(
2702
RCON_ID
2703
) ENABLE
2704
;
2705
 
2706
ALTER TABLE RUN_LEVEL
2707
ADD FOREIGN KEY
2708
(
2709
  CURRENT_PKG_ID_BEING_BUILT
2710
)
2711
REFERENCES PACKAGES
2712
(
2713
PKG_ID
2714
) ENABLE
2715
;
2716
 
2717
ALTER TABLE PRODUCT_COMPONENTS
2718
ADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY
2719
(
2720
  PV_ID
2721
)
2722
REFERENCES PACKAGE_VERSIONS
2723
(
2724
PV_ID
2725
) ENABLE
2726
;
2727
 
2728
ALTER TABLE PACKAGE_BUILD_INFO
2729
ADD FOREIGN KEY
2730
(
2731
  PV_ID
2732
)
2733
REFERENCES PACKAGE_VERSIONS
2734
(
2735
PV_ID
2736
) ENABLE
2737
;
2738
 
2739
ALTER TABLE PACKAGE_BUILD_INFO
2740
ADD FOREIGN KEY
2741
(
2742
  BM_ID
2743
)
2744
REFERENCES BUILD_MACHINES
2745
(
2746
BM_ID
2747
) ENABLE
2748
;
2749
 
2750
ALTER TABLE MEMBERS_GROUP
2751
ADD FOREIGN KEY
2752
(
2753
  GROUP_EMAIL_ID
2754
)
2755
REFERENCES AUTOBUILD_FAILURE
2756
(
2757
GROUP_EMAIL_ID
2758
) ENABLE
2759
;
2760
 
2761
ALTER TABLE DAEMON_ACTION_LOG
2762
ADD FOREIGN KEY
2763
(
2764
  ACTTYPE_ID
2765
)
2766
REFERENCES ACTION_TYPE
2767
(
2768
ACTTYPE_ID
2769
) ENABLE
2770
;
2771
 
2772
ALTER TABLE DAEMON_ACTION_LOG
2773
ADD FOREIGN KEY
2774
(
2775
  RCON_ID
2776
)
2777
REFERENCES RELEASE_CONFIG
2778
(
2779
RCON_ID
2780
) ENABLE
2781
;
2782
 
2783
ALTER TABLE DASH_BOARD
2784
ADD FOREIGN KEY
2785
(
2786
  PROJ_ID
2787
)
2788
REFERENCES PROJECTS
2789
(
2790
PROJ_ID
2791
) ENABLE
2792
;
2793
 
2794
ALTER TABLE DASH_BOARD
2795
ADD FOREIGN KEY
2796
(
2797
  RTAG_ID
2798
)
2799
REFERENCES RELEASE_TAGS
2800
(
2801
RTAG_ID
2802
) ENABLE
2803
;
2804
 
2805
ALTER TABLE ABT_ACTION_LOG
2806
ADD FOREIGN KEY
2807
(
2808
  RCON_ID
2809
)
2810
REFERENCES RELEASE_CONFIG
2811
(
2812
RCON_ID
2813
) ENABLE
2814
;
2815
 
2816
ALTER TABLE RUNTIME_DEPENDENCIES
2817
ADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY
2818
(
2819
  RTD_ID
2820
)
2821
REFERENCES PACKAGE_VERSIONS
2822
(
2823
PV_ID
2824
) ENABLE
2825
;
2826
 
2827
ALTER TABLE RUNTIME_DEPENDENCIES
2828
ADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY
2829
(
2830
  PV_ID
2831
)
2832
REFERENCES PACKAGE_VERSIONS
2833
(
2834
PV_ID
2835
) ENABLE
2836
;
2837
 
2838
ALTER TABLE PACKAGE_VERSIONS
2839
ADD FOREIGN KEY
2840
(
2841
  BS_ID
2842
)
2843
REFERENCES BUILD_STANDARDS
2844
(
2845
BS_ID
2846
) ENABLE
2847
;
2848
 
2849
ALTER TABLE CODE_REVIEW_URL
2850
ADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY
2851
(
2852
  PROJ_ID
2853
)
2854
REFERENCES PROJECTS
2855
(
2856
PROJ_ID
2857
) ENABLE
2858
;
2859
 
2860
ALTER TABLE CODE_REVIEW_URL
2861
ADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY
2862
(
2863
  PV_ID
2864
)
2865
REFERENCES PACKAGE_VERSIONS
2866
(
2867
PV_ID
2868
) ENABLE
2869
;
2870
 
2871
ALTER TABLE CQ_ISSUES
2872
ADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY
2873
(
2874
  PV_ID
2875
)
2876
REFERENCES PACKAGE_VERSIONS
2877
(
2878
PV_ID
2879
) ENABLE
2880
;
2881
 
2882
ALTER TABLE MICROSOFTDTPROPERTIES
2883
ADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK
2884
("PROPERTY" IS NOT NULL)
2885
 ENABLE
2886
;
2887
 
2888
ALTER TABLE MICROSOFTDTPROPERTIES
2889
ADD CONSTRAINT MICROSOFT_NN_ID CHECK
2890
("ID" IS NOT NULL)
2891
 ENABLE
2892
;
2893
 
2894
ALTER TABLE MICROSOFTDTPROPERTIES
2895
ADD CONSTRAINT MICROSOFT_NN_VERSION CHECK
2896
("VERSION" IS NOT NULL)
2897
 ENABLE
2898
;
2899
 
2900
ALTER TABLE RIPPLE_FIELD_STATES
2901
ADD CHECK
2902
("STATE_ACRONYM" IS NOT NULL)
2903
 DISABLE
2904
;
2905
 
2906
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;
2907
 
2908
CREATE OR REPLACE VIEW ENVIRONMENT_VIEW AS SELECT 2 AS ENV_AREA,
2909
    rc.PV_ID,
2910
    rc.RTAG_ID,
2911
    rc.BASE_VIEW_ID AS VIEW_ID,
2912
    rc.PKG_STATE,
2913
 rc.DEPRECATED_STATE,
2914
    rc.INSERTOR_ID,
53 mhunt 2915
    rc.INSERT_STAMP,
2916
    ' ' AS OPERATION
51 mhunt 2917
  FROM RELEASE_CONTENT rc
2918
UNION
2919
SELECT 0 AS ENV_AREA,
2920
    wip.PV_ID,
2921
    wip.RTAG_ID,
2922
    wip.VIEW_ID,
2923
    NULL AS PKG_STATE,
2924
 NULL AS DEPRECATED_STATE,
2925
    NULL AS INSERTOR_ID,
53 mhunt 2926
    NULL AS INSERT_STAMP,
2927
    ' ' AS OPERATION
2928
  FROM WORK_IN_PROGRESS wip
2929
UNION
51 mhunt 2930
SELECT 1 AS ENV_AREA,
2931
    pl.PV_ID,
2932
    pl.RTAG_ID,
2933
    pl.VIEW_ID,
2934
    NULL AS PKG_STATE,
2935
 NULL AS DEPRECATED_STATE,
2936
    NULL AS INSERTOR_ID,
53 mhunt 2937
    NULL AS INSERT_STAMP,
2938
    pl.operation
2939
FROM PLANNED pl;
51 mhunt 2940
 
2941
CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC)  TABLESPACE "USERS"
2942
  LOGGING 
2943
  PCTFREE 10
2944
  INITRANS 2
2945
  MAXTRANS 255
2946
  STORAGE
2947
  (
2948
    INITIAL 128K
2949
    MINEXTENTS 1
2950
    MAXEXTENTS 2147483645
2951
    FREELISTS 1
2952
    FREELIST GROUPS 1
2953
    BUFFER_POOL DEFAULT
2954
  )
2955
;
2956
 
2957
CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
2958
  NOLOGGING 
2959
  PCTFREE 10
2960
  INITRANS 2
2961
  MAXTRANS 255
2962
  STORAGE
2963
  (
2964
    INITIAL 128K
2965
    MINEXTENTS 1
2966
    MAXEXTENTS 2147483645
2967
    FREELISTS 1
2968
    FREELIST GROUPS 1
2969
    BUFFER_POOL DEFAULT
2970
  )
2971
;
2972
 
2973
CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC)  TABLESPACE "USERS"
2974
  NOLOGGING 
2975
  PCTFREE 10
2976
  INITRANS 2
2977
  MAXTRANS 255
2978
  STORAGE
2979
  (
2980
    INITIAL 128K
2981
    MINEXTENTS 1
2982
    MAXEXTENTS 2147483645
2983
    FREELISTS 1
2984
    FREELIST GROUPS 1
2985
    BUFFER_POOL DEFAULT
2986
  )
2987
;
2988
 
2989
CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC)  TABLESPACE "USERS"
2990
  NOLOGGING 
2991
  PCTFREE 10
2992
  INITRANS 2
2993
  MAXTRANS 255
2994
  STORAGE
2995
  (
2996
    INITIAL 128K
2997
    MINEXTENTS 1
2998
    MAXEXTENTS 2147483645
2999
    FREELISTS 1
3000
    FREELIST GROUPS 1
3001
    BUFFER_POOL DEFAULT
3002
  )
3003
;
3004
 
3005
CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC)  TABLESPACE "USERS"
3006
  LOGGING 
3007
  PCTFREE 10
3008
  INITRANS 2
3009
  MAXTRANS 255
3010
  STORAGE
3011
  (
3012
    INITIAL 64K
3013
    MINEXTENTS 1
3014
    MAXEXTENTS 2147483645
3015
    FREELISTS 1
3016
    FREELIST GROUPS 1
3017
    BUFFER_POOL DEFAULT
3018
  )
3019
;
3020
 
3021
CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3022
  LOGGING 
3023
  PCTFREE 10
3024
  INITRANS 2
3025
  MAXTRANS 255
3026
  STORAGE
3027
  (
3028
    INITIAL 64K
3029
    MINEXTENTS 1
3030
    MAXEXTENTS 2147483645
3031
    FREELISTS 1
3032
    FREELIST GROUPS 1
3033
    BUFFER_POOL DEFAULT
3034
  )
3035
;
3036
 
3037
CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC)  TABLESPACE "USERS"
3038
  LOGGING 
3039
  PCTFREE 10
3040
  INITRANS 2
3041
  MAXTRANS 255
3042
  STORAGE
3043
  (
3044
    INITIAL 64K
3045
    MINEXTENTS 1
3046
    MAXEXTENTS 2147483645
3047
    FREELISTS 1
3048
    FREELIST GROUPS 1
3049
    BUFFER_POOL DEFAULT
3050
  )
3051
;
3052
 
3053
CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC)  TABLESPACE "USERS"
3054
  LOGGING 
3055
  PCTFREE 10
3056
  INITRANS 2
3057
  MAXTRANS 255
3058
  STORAGE
3059
  (
3060
    INITIAL 128K
3061
    MINEXTENTS 1
3062
    MAXEXTENTS 2147483645
3063
    FREELISTS 1
3064
    FREELIST GROUPS 1
3065
    BUFFER_POOL DEFAULT
3066
  )
3067
;
3068
 
3069
CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
3070
  LOGGING 
3071
  PCTFREE 10
3072
  INITRANS 2
3073
  MAXTRANS 255
3074
  STORAGE
3075
  (
3076
    INITIAL 128K
3077
    MINEXTENTS 1
3078
    MAXEXTENTS 2147483645
3079
    FREELISTS 1
3080
    FREELIST GROUPS 1
3081
    BUFFER_POOL DEFAULT
3082
  )
3083
;
3084
 
3085
CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC)  TABLESPACE "USERS"
3086
  LOGGING 
3087
  PCTFREE 10
3088
  INITRANS 2
3089
  MAXTRANS 255
3090
  STORAGE
3091
  (
3092
    INITIAL 128K
3093
    MINEXTENTS 1
3094
    MAXEXTENTS 2147483645
3095
    FREELISTS 1
3096
    FREELIST GROUPS 1
3097
    BUFFER_POOL DEFAULT
3098
  )
3099
;
3100
 
3101
CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3102
  LOGGING 
3103
  PCTFREE 10
3104
  INITRANS 2
3105
  MAXTRANS 255
3106
  STORAGE
3107
  (
3108
    INITIAL 128K
3109
    MINEXTENTS 1
3110
    MAXEXTENTS 2147483645
3111
    FREELISTS 1
3112
    FREELIST GROUPS 1
3113
    BUFFER_POOL DEFAULT
3114
  )
3115
;
3116
 
3117
CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3118
  LOGGING 
3119
  PCTFREE 10
3120
  INITRANS 2
3121
  MAXTRANS 255
3122
  STORAGE
3123
  (
3124
    INITIAL 128K
3125
    MINEXTENTS 1
3126
    MAXEXTENTS 2147483645
3127
    FREELISTS 1
3128
    FREELIST GROUPS 1
3129
    BUFFER_POOL DEFAULT
3130
  )
3131
;
3132
 
3133
CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC)  TABLESPACE "USERS"
3134
  LOGGING 
3135
  PCTFREE 10
3136
  INITRANS 2
3137
  MAXTRANS 255
3138
  STORAGE
3139
  (
3140
    INITIAL 64K
3141
    MINEXTENTS 1
3142
    MAXEXTENTS 2147483645
3143
    FREELISTS 1
3144
    FREELIST GROUPS 1
3145
    BUFFER_POOL DEFAULT
3146
  )
3147
;
3148
 
3149
CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC)  TABLESPACE "USERS"
3150
  LOGGING 
3151
  PCTFREE 10
3152
  INITRANS 2
3153
  MAXTRANS 255
3154
  STORAGE
3155
  (
3156
    INITIAL 128K
3157
    MINEXTENTS 1
3158
    MAXEXTENTS 2147483645
3159
    FREELISTS 1
3160
    FREELIST GROUPS 1
3161
    BUFFER_POOL DEFAULT
3162
  )
3163
;
3164
 
3165
CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC)  TABLESPACE "USERS"
3166
  LOGGING 
3167
  PCTFREE 10
3168
  INITRANS 2
3169
  MAXTRANS 255
3170
  STORAGE
3171
  (
3172
    INITIAL 128K
3173
    MINEXTENTS 1
3174
    MAXEXTENTS 2147483645
3175
    FREELISTS 1
3176
    FREELIST GROUPS 1
3177
    BUFFER_POOL DEFAULT
3178
  )
3179
;
3180
 
3181
CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3182
  LOGGING 
3183
  PCTFREE 10
3184
  INITRANS 2
3185
  MAXTRANS 255
3186
  STORAGE
3187
  (
3188
    INITIAL 128K
3189
    MINEXTENTS 1
3190
    MAXEXTENTS 2147483645
3191
    FREELISTS 1
3192
    FREELIST GROUPS 1
3193
    BUFFER_POOL DEFAULT
3194
  )
3195
;
3196
 
3197
CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC)  TABLESPACE "USERS"
3198
  LOGGING 
3199
  PCTFREE 10
3200
  INITRANS 2
3201
  MAXTRANS 255
3202
  STORAGE
3203
  (
3204
    INITIAL 128K
3205
    MINEXTENTS 1
3206
    MAXEXTENTS 2147483645
3207
    FREELISTS 1
3208
    FREELIST GROUPS 1
3209
    BUFFER_POOL DEFAULT
3210
  )
3211
;
3212
 
3213
CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3214
  LOGGING 
3215
  PCTFREE 10
3216
  INITRANS 2
3217
  MAXTRANS 255
3218
  STORAGE
3219
  (
3220
    INITIAL 64K
3221
    MINEXTENTS 1
3222
    MAXEXTENTS 2147483645
3223
    FREELISTS 1
3224
    FREELIST GROUPS 1
3225
    BUFFER_POOL DEFAULT
3226
  )
3227
;
3228
 
3229
CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3230
  LOGGING 
3231
  PCTFREE 10
3232
  INITRANS 2
3233
  MAXTRANS 255
3234
  STORAGE
3235
  (
3236
    INITIAL 64K
3237
    MINEXTENTS 1
3238
    MAXEXTENTS 2147483645
3239
    FREELISTS 1
3240
    FREELIST GROUPS 1
3241
    BUFFER_POOL DEFAULT
3242
  )
3243
;
3244
 
3245
CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC)  TABLESPACE "USERS"
3246
  LOGGING 
3247
  PCTFREE 10
3248
  INITRANS 2
3249
  MAXTRANS 255
3250
  STORAGE
3251
  (
3252
    INITIAL 128K
3253
    MINEXTENTS 1
3254
    MAXEXTENTS 2147483645
3255
    FREELISTS 1
3256
    FREELIST GROUPS 1
3257
    BUFFER_POOL DEFAULT
3258
  )
3259
;
3260
 
3261
CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC)  TABLESPACE "USERS"
3262
  LOGGING 
3263
  PCTFREE 10
3264
  INITRANS 2
3265
  MAXTRANS 255
3266
  STORAGE
3267
  (
3268
    INITIAL 64K
3269
    MINEXTENTS 1
3270
    MAXEXTENTS 2147483645
3271
    FREELISTS 1
3272
    FREELIST GROUPS 1
3273
    BUFFER_POOL DEFAULT
3274
  )
3275
;
3276
 
3277
CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3278
  LOGGING 
3279
  PCTFREE 10
3280
  INITRANS 2
3281
  MAXTRANS 255
3282
  STORAGE
3283
  (
3284
    INITIAL 64K
3285
    MINEXTENTS 1
3286
    MAXEXTENTS 2147483645
3287
    FREELISTS 1
3288
    FREELIST GROUPS 1
3289
    BUFFER_POOL DEFAULT
3290
  )
3291
;
3292
 
3293
CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3294
  LOGGING 
3295
  PCTFREE 10
3296
  INITRANS 2
3297
  MAXTRANS 255
3298
  STORAGE
3299
  (
3300
    INITIAL 64K
3301
    MINEXTENTS 1
3302
    MAXEXTENTS 2147483645
3303
    FREELISTS 1
3304
    FREELIST GROUPS 1
3305
    BUFFER_POOL DEFAULT
3306
  )
3307
;
3308
 
3309
CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC)  TABLESPACE "USERS"
3310
  LOGGING 
3311
  PCTFREE 10
3312
  INITRANS 2
3313
  MAXTRANS 255
3314
  STORAGE
3315
  (
3316
    INITIAL 64K
3317
    MINEXTENTS 1
3318
    MAXEXTENTS 2147483645
3319
    FREELISTS 1
3320
    FREELIST GROUPS 1
3321
    BUFFER_POOL DEFAULT
3322
  )
3323
;
3324
 
3325
CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC)  TABLESPACE "SYSTEM"
3326
  LOGGING 
3327
  PCTFREE 10
3328
  INITRANS 2
3329
  MAXTRANS 255
3330
  STORAGE
3331
  (
3332
    INITIAL 64K
3333
    NEXT 64K
3334
    MINEXTENTS 1
3335
    MAXEXTENTS 2147483645
3336
    PCTINCREASE 0
3337
    FREELISTS 1
3338
    FREELIST GROUPS 1
3339
    BUFFER_POOL DEFAULT
3340
  )
3341
;
3342
 
3343
CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC)  TABLESPACE "SYSTEM"
3344
  LOGGING 
3345
  PCTFREE 10
3346
  INITRANS 2
3347
  MAXTRANS 255
3348
  STORAGE
3349
  (
3350
    INITIAL 64K
3351
    NEXT 64K
3352
    MINEXTENTS 1
3353
    MAXEXTENTS 2147483645
3354
    PCTINCREASE 0
3355
    FREELISTS 1
3356
    FREELIST GROUPS 1
3357
    BUFFER_POOL DEFAULT
3358
  )
3359
;
3360
 
3361
CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC)  TABLESPACE "USERS"
3362
  LOGGING 
3363
  PCTFREE 10
3364
  INITRANS 2
3365
  MAXTRANS 255
3366
  STORAGE
3367
  (
3368
    INITIAL 64K
3369
    MINEXTENTS 1
3370
    MAXEXTENTS 2147483645
3371
    FREELISTS 1
3372
    FREELIST GROUPS 1
3373
    BUFFER_POOL DEFAULT
3374
  )
3375
;
3376
 
3377
CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC)  TABLESPACE "USERS"
3378
  LOGGING 
3379
  PCTFREE 10
3380
  INITRANS 2
3381
  MAXTRANS 255
3382
  STORAGE
3383
  (
3384
    INITIAL 64K
3385
    MINEXTENTS 1
3386
    MAXEXTENTS 2147483645
3387
    FREELISTS 1
3388
    FREELIST GROUPS 1
3389
    BUFFER_POOL DEFAULT
3390
  )
3391
;
3392
 
3393
CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC)  TABLESPACE "USERS"
3394
  LOGGING 
3395
  PCTFREE 10
3396
  INITRANS 2
3397
  MAXTRANS 255
3398
  STORAGE
3399
  (
3400
    INITIAL 64K
3401
    MINEXTENTS 1
3402
    MAXEXTENTS 2147483645
3403
    FREELISTS 1
3404
    FREELIST GROUPS 1
3405
    BUFFER_POOL DEFAULT
3406
  )
3407
;
3408
 
3409
CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3410
  LOGGING 
3411
  PCTFREE 10
3412
  INITRANS 2
3413
  MAXTRANS 255
3414
  STORAGE
3415
  (
3416
    INITIAL 128K
3417
    MINEXTENTS 1
3418
    MAXEXTENTS 2147483645
3419
    FREELISTS 1
3420
    FREELIST GROUPS 1
3421
    BUFFER_POOL DEFAULT
3422
  )
3423
;
3424
 
3425
CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3426
  LOGGING 
3427
  PCTFREE 10
3428
  INITRANS 2
3429
  MAXTRANS 255
3430
  STORAGE
3431
  (
3432
    INITIAL 128K
3433
    MINEXTENTS 1
3434
    MAXEXTENTS 2147483645
3435
    FREELISTS 1
3436
    FREELIST GROUPS 1
3437
    BUFFER_POOL DEFAULT
3438
  )
3439
;
3440
 
3441
CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC)  TABLESPACE "USERS"
3442
  LOGGING 
3443
  PCTFREE 10
3444
  INITRANS 2
3445
  MAXTRANS 255
3446
  STORAGE
3447
  (
3448
    INITIAL 128K
3449
    MINEXTENTS 1
3450
    MAXEXTENTS 2147483645
3451
    FREELISTS 1
3452
    FREELIST GROUPS 1
3453
    BUFFER_POOL DEFAULT
3454
  )
3455
;
3456
 
3457
CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC)  TABLESPACE "SYSTEM"
3458
  LOGGING 
3459
  PCTFREE 10
3460
  INITRANS 2
3461
  MAXTRANS 255
3462
  STORAGE
3463
  (
3464
    INITIAL 64K
3465
    NEXT 64K
3466
    MINEXTENTS 1
3467
    MAXEXTENTS 2147483645
3468
    PCTINCREASE 0
3469
    FREELISTS 1
3470
    FREELIST GROUPS 1
3471
    BUFFER_POOL DEFAULT
3472
  )
3473
;
3474
 
3475
CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC)  TABLESPACE "USERS"
3476
  LOGGING 
3477
  PCTFREE 10
3478
  INITRANS 2
3479
  MAXTRANS 255
3480
  STORAGE
3481
  (
3482
    INITIAL 128K
3483
    MINEXTENTS 1
3484
    MAXEXTENTS 2147483645
3485
    FREELISTS 1
3486
    FREELIST GROUPS 1
3487
    BUFFER_POOL DEFAULT
3488
  )
3489
;
3490
 
3491
CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC)  TABLESPACE "USERS"
3492
  LOGGING 
3493
  PCTFREE 10
3494
  INITRANS 2
3495
  MAXTRANS 255
3496
  STORAGE
3497
  (
3498
    INITIAL 128K
3499
    MINEXTENTS 1
3500
    MAXEXTENTS 2147483645
3501
    FREELISTS 1
3502
    FREELIST GROUPS 1
3503
    BUFFER_POOL DEFAULT
3504
  )
3505
;
3506
 
3507
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "SYSTEM"
3508
  LOGGING 
3509
  PCTFREE 10
3510
  INITRANS 2
3511
  MAXTRANS 255
3512
  STORAGE
3513
  (
3514
    INITIAL 64K
3515
    NEXT 64K
3516
    MINEXTENTS 1
3517
    MAXEXTENTS 2147483645
3518
    PCTINCREASE 0
3519
    FREELISTS 1
3520
    FREELIST GROUPS 1
3521
    BUFFER_POOL DEFAULT
3522
  )
3523
;
3524
 
3525
CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID ASC)  TABLESPACE "USERS"
3526
  LOGGING 
3527
  PCTFREE 10
3528
  INITRANS 2
3529
  MAXTRANS 255
3530
  STORAGE
3531
  (
3532
    INITIAL 128K
3533
    MINEXTENTS 1
3534
    MAXEXTENTS 2147483645
3535
    FREELISTS 1
3536
    FREELIST GROUPS 1
3537
    BUFFER_POOL DEFAULT
3538
  )
3539
;
3540
 
3541
CREATE UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC)  TABLESPACE "USERS"
3542
  LOGGING 
3543
  PCTFREE 10
3544
  INITRANS 2
3545
  MAXTRANS 255
3546
  STORAGE
3547
  (
3548
    INITIAL 128K
3549
    MINEXTENTS 1
3550
    MAXEXTENTS 2147483645
3551
    FREELISTS 1
3552
    FREELIST GROUPS 1
3553
    BUFFER_POOL DEFAULT
3554
  )
3555
;
3556
 
3557
CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
3558
  LOGGING 
3559
  PCTFREE 10
3560
  INITRANS 2
3561
  MAXTRANS 255
3562
  STORAGE
3563
  (
3564
    INITIAL 128K
3565
    MINEXTENTS 1
3566
    MAXEXTENTS 2147483645
3567
    FREELISTS 1
3568
    FREELIST GROUPS 1
3569
    BUFFER_POOL DEFAULT
3570
  )
3571
;
3572
 
3573
CREATE INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_ID ASC)  TABLESPACE "USERS"
3574
  NOLOGGING 
3575
  PCTFREE 10
3576
  INITRANS 2
3577
  MAXTRANS 255
3578
  STORAGE
3579
  (
3580
    INITIAL 128K
3581
    MINEXTENTS 1
3582
    MAXEXTENTS 2147483645
3583
    FREELISTS 1
3584
    FREELIST GROUPS 1
3585
    BUFFER_POOL DEFAULT
3586
  )
3587
;
3588
 
3589
CREATE INDEX INX_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC)  TABLESPACE "USERS"
3590
  NOLOGGING 
3591
  PCTFREE 10
3592
  INITRANS 2
3593
  MAXTRANS 255
3594
  STORAGE
3595
  (
3596
    INITIAL 128K
3597
    MINEXTENTS 1
3598
    MAXEXTENTS 2147483645
3599
    FREELISTS 1
3600
    FREELIST GROUPS 1
3601
    BUFFER_POOL DEFAULT
3602
  )
3603
;
3604
 
3605
CREATE UNIQUE INDEX UNQ_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3606
  NOLOGGING 
3607
  PCTFREE 10
3608
  INITRANS 2
3609
  MAXTRANS 255
3610
  STORAGE
3611
  (
3612
    INITIAL 128K
3613
    MINEXTENTS 1
3614
    MAXEXTENTS 2147483645
3615
    FREELISTS 1
3616
    FREELIST GROUPS 1
3617
    BUFFER_POOL DEFAULT
3618
  )
3619
;
3620
 
3621
CREATE INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC)  TABLESPACE "USERS"
3622
  LOGGING 
3623
  PCTFREE 10
3624
  INITRANS 2
3625
  MAXTRANS 255
3626
  STORAGE
3627
  (
3628
    INITIAL 128K
3629
    MINEXTENTS 1
3630
    MAXEXTENTS 2147483645
3631
    FREELISTS 1
3632
    FREELIST GROUPS 1
3633
    BUFFER_POOL DEFAULT
3634
  )
3635
;
3636
 
3637
CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC)  TABLESPACE "USERS"
3638
  NOLOGGING 
3639
  PCTFREE 10
3640
  INITRANS 2
3641
  MAXTRANS 255
3642
  STORAGE
3643
  (
3644
    INITIAL 128K
3645
    MINEXTENTS 1
3646
    MAXEXTENTS 2147483645
3647
    FREELISTS 1
3648
    FREELIST GROUPS 1
3649
    BUFFER_POOL DEFAULT
3650
  )
3651
;
3652
 
3653
CREATE UNIQUE INDEX UNQ_PLATFORM ON PLATFORMS (NAME ASC)  TABLESPACE "USERS"
3654
  LOGGING 
3655
  PCTFREE 10
3656
  INITRANS 2
3657
  MAXTRANS 255
3658
  STORAGE
3659
  (
3660
    INITIAL 64K
3661
    MINEXTENTS 1
3662
    MAXEXTENTS 2147483645
3663
    FREELISTS 1
3664
    FREELIST GROUPS 1
3665
    BUFFER_POOL DEFAULT
3666
  )
3667
;
3668
 
3669
CREATE UNIQUE INDEX UNQ_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC)  TABLESPACE "SYSTEM"
3670
  LOGGING 
3671
  PCTFREE 10
3672
  INITRANS 2
3673
  MAXTRANS 255
3674
  STORAGE
3675
  (
3676
    INITIAL 64K
3677
    NEXT 64K
3678
    MINEXTENTS 1
3679
    MAXEXTENTS 2147483645
3680
    PCTINCREASE 0
3681
    FREELISTS 1
3682
    FREELIST GROUPS 1
3683
    BUFFER_POOL DEFAULT
3684
  )
3685
;
3686
 
3687
CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3688
  LOGGING 
3689
  PCTFREE 10
3690
  INITRANS 2
3691
  MAXTRANS 255
3692
  STORAGE
3693
  (
3694
    INITIAL 64K
3695
    MINEXTENTS 1
3696
    MAXEXTENTS 2147483645
3697
    FREELISTS 1
3698
    FREELIST GROUPS 1
3699
    BUFFER_POOL DEFAULT
3700
  )
3701
;
3702
 
3703
CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC)  TABLESPACE "USERS"
3704
  LOGGING 
3705
  PCTFREE 10
3706
  INITRANS 2
3707
  MAXTRANS 255
3708
  STORAGE
3709
  (
3710
    INITIAL 128K
3711
    MINEXTENTS 1
3712
    MAXEXTENTS 2147483645
3713
    FREELISTS 1
3714
    FREELIST GROUPS 1
3715
    BUFFER_POOL DEFAULT
3716
  )
3717
;
3718
 
3719
CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC)  TABLESPACE "USERS"
3720
  NOLOGGING 
3721
  PCTFREE 10
3722
  INITRANS 2
3723
  MAXTRANS 255
3724
  STORAGE
3725
  (
3726
    INITIAL 256K
3727
    MINEXTENTS 1
3728
    MAXEXTENTS 2147483645
3729
    FREELISTS 1
3730
    FREELIST GROUPS 1
3731
    BUFFER_POOL DEFAULT
3732
  )
3733
;
3734
 
3735
CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC)  TABLESPACE "USERS"
3736
  NOLOGGING 
3737
  PCTFREE 10
3738
  INITRANS 2
3739
  MAXTRANS 255
3740
  STORAGE
3741
  (
3742
    INITIAL 384K
3743
    MINEXTENTS 1
3744
    MAXEXTENTS 2147483645
3745
    FREELISTS 1
3746
    FREELIST GROUPS 1
3747
    BUFFER_POOL DEFAULT
3748
  )
3749
;
3750
 
3751
CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC)  TABLESPACE "USERS"
3752
  NOLOGGING 
3753
  PCTFREE 10
3754
  INITRANS 2
3755
  MAXTRANS 255
3756
  STORAGE
3757
  (
3758
    INITIAL 256K
3759
    MINEXTENTS 1
3760
    MAXEXTENTS 2147483645
3761
    FREELISTS 1
3762
    FREELIST GROUPS 1
3763
    BUFFER_POOL DEFAULT
3764
  )
3765
;
3766
 
3767
CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC)  TABLESPACE "USERS"
3768
  NOLOGGING 
3769
  PCTFREE 10
3770
  INITRANS 2
3771
  MAXTRANS 255
3772
  STORAGE
3773
  (
3774
    INITIAL 384K
3775
    MINEXTENTS 1
3776
    MAXEXTENTS 2147483645
3777
    FREELISTS 1
3778
    FREELIST GROUPS 1
3779
    BUFFER_POOL DEFAULT
3780
  )
3781
;
3782
 
3783
CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC)  TABLESPACE "SYSTEM"
3784
  LOGGING 
3785
  PCTFREE 10
3786
  INITRANS 2
3787
  MAXTRANS 255
3788
  STORAGE
3789
  (
3790
    INITIAL 384K
3791
    NEXT 64K
3792
    MINEXTENTS 1
3793
    MAXEXTENTS 2147483645
3794
    PCTINCREASE 0
3795
    FREELISTS 1
3796
    FREELIST GROUPS 1
3797
    BUFFER_POOL DEFAULT
3798
  )
3799
;
3800
 
3801
CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3802
  LOGGING 
3803
  PCTFREE 10
3804
  INITRANS 2
3805
  MAXTRANS 255
3806
  STORAGE
3807
  (
3808
    INITIAL 64K
3809
    MINEXTENTS 1
3810
    MAXEXTENTS 2147483645
3811
    FREELISTS 1
3812
    FREELIST GROUPS 1
3813
    BUFFER_POOL DEFAULT
3814
  )
3815
;
3816
 
3817
CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3818
  LOGGING 
3819
  PCTFREE 10
3820
  INITRANS 2
3821
  MAXTRANS 255
3822
  STORAGE
3823
  (
3824
    INITIAL 64K
3825
    MINEXTENTS 1
3826
    MAXEXTENTS 2147483645
3827
    FREELISTS 1
3828
    FREELIST GROUPS 1
3829
    BUFFER_POOL DEFAULT
3830
  )
3831
;
3832
 
3833
CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC)  TABLESPACE "SYSTEM"
3834
  LOGGING 
3835
  PCTFREE 10
3836
  INITRANS 2
3837
  MAXTRANS 255
3838
  STORAGE
3839
  (
3840
    INITIAL 64K
3841
    NEXT 64K
3842
    MINEXTENTS 1
3843
    MAXEXTENTS 2147483645
3844
    PCTINCREASE 0
3845
    FREELISTS 1
3846
    FREELIST GROUPS 1
3847
    BUFFER_POOL DEFAULT
3848
  )
3849
;
3850
 
3851
CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC)  TABLESPACE "SYSTEM"
3852
  LOGGING 
3853
  PCTFREE 10
3854
  INITRANS 2
3855
  MAXTRANS 255
3856
  STORAGE
3857
  (
3858
    INITIAL 64K
3859
    NEXT 64K
3860
    MINEXTENTS 1
3861
    MAXEXTENTS 2147483645
3862
    PCTINCREASE 0
3863
    FREELISTS 1
3864
    FREELIST GROUPS 1
3865
    BUFFER_POOL DEFAULT
3866
  )
3867
;
3868
 
3869
CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC)  TABLESPACE "SYSTEM"
3870
  LOGGING 
3871
  PCTFREE 10
3872
  INITRANS 2
3873
  MAXTRANS 255
3874
  STORAGE
3875
  (
3876
    INITIAL 64K
3877
    NEXT 64K
3878
    MINEXTENTS 1
3879
    MAXEXTENTS 2147483645
3880
    PCTINCREASE 0
3881
    FREELISTS 1
3882
    FREELIST GROUPS 1
3883
    BUFFER_POOL DEFAULT
3884
  )
3885
;
3886
 
3887
CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC)  TABLESPACE "USERS"
3888
  LOGGING 
3889
  PCTFREE 10
3890
  INITRANS 2
3891
  MAXTRANS 255
3892
  STORAGE
3893
  (
3894
    INITIAL 128K
3895
    MINEXTENTS 1
3896
    MAXEXTENTS 2147483645
3897
    FREELISTS 1
3898
    FREELIST GROUPS 1
3899
    BUFFER_POOL DEFAULT
3900
  )
3901
;
3902
 
3903
CREATE INDEX INX_PACKAGES_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID ASC)  TABLESPACE "USERS"
3904
  NOLOGGING 
3905
  PCTFREE 10
3906
  INITRANS 2
3907
  MAXTRANS 255
3908
  STORAGE
3909
  (
3910
    INITIAL 128K
3911
    MINEXTENTS 1
3912
    MAXEXTENTS 2147483645
3913
    FREELISTS 1
3914
    FREELIST GROUPS 1
3915
    BUFFER_POOL DEFAULT
3916
  )
3917
;
3918
 
3919
CREATE INDEX INX_PACKAGES_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION ASC)  TABLESPACE "USERS"
3920
  NOLOGGING 
3921
  PCTFREE 10
3922
  INITRANS 2
3923
  MAXTRANS 255
3924
  STORAGE
3925
  (
3926
    INITIAL 128K
3927
    MINEXTENTS 1
3928
    MAXEXTENTS 2147483645
3929
    FREELISTS 1
3930
    FREELIST GROUPS 1
3931
    BUFFER_POOL DEFAULT
3932
  )
3933
;
3934
 
3935
CREATE INDEX INX_PACKAGES_V_EXT ON PACKAGE_VERSIONS (V_EXT ASC)  TABLESPACE "USERS"
3936
  NOLOGGING 
3937
  PCTFREE 10
3938
  INITRANS 2
3939
  MAXTRANS 255
3940
  STORAGE
3941
  (
3942
    INITIAL 128K
3943
    MINEXTENTS 1
3944
    MAXEXTENTS 2147483645
3945
    FREELISTS 1
3946
    FREELIST GROUPS 1
3947
    BUFFER_POOL DEFAULT
3948
  )
3949
;
3950
 
3951
CREATE INDEX INX_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC)  TABLESPACE "USERS"
3952
  NOLOGGING 
3953
  PCTFREE 10
3954
  INITRANS 2
3955
  MAXTRANS 255
3956
  STORAGE
3957
  (
3958
    INITIAL 128K
3959
    MINEXTENTS 1
3960
    MAXEXTENTS 2147483645
3961
    FREELISTS 1
3962
    FREELIST GROUPS 1
3963
    BUFFER_POOL DEFAULT
3964
  )
3965
;
3966
 
3967
CREATE INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC)  TABLESPACE "USERS"
3968
  NOLOGGING 
3969
  PCTFREE 10
3970
  INITRANS 2
3971
  MAXTRANS 255
3972
  STORAGE
3973
  (
3974
    INITIAL 128K
3975
    MINEXTENTS 1
3976
    MAXEXTENTS 2147483645
3977
    FREELISTS 1
3978
    FREELIST GROUPS 1
3979
    BUFFER_POOL DEFAULT
3980
  )
3981
;
3982
 
3983
CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC)  TABLESPACE "USERS"
3984
  LOGGING 
3985
  PCTFREE 10
3986
  INITRANS 2
3987
  MAXTRANS 255
3988
  STORAGE
3989
  (
3990
    INITIAL 128K
3991
    MINEXTENTS 1
3992
    MAXEXTENTS 2147483645
3993
    FREELISTS 1
3994
    FREELIST GROUPS 1
3995
    BUFFER_POOL DEFAULT
3996
  )
3997
;
3998
 
3999
CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC)  TABLESPACE "SYSTEM"
4000
  LOGGING 
4001
  PCTFREE 10
4002
  INITRANS 2
4003
  MAXTRANS 255
4004
  STORAGE
4005
  (
4006
    INITIAL 128K
4007
    NEXT 64K
4008
    MINEXTENTS 1
4009
    MAXEXTENTS 2147483645
4010
    PCTINCREASE 0
4011
    FREELISTS 1
4012
    FREELIST GROUPS 1
4013
    BUFFER_POOL DEFAULT
4014
  )
4015
;
4016
 
4017
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
4018
  LOGGING 
4019
  PCTFREE 10
4020
  INITRANS 2
4021
  MAXTRANS 255
4022
  STORAGE
4023
  (
4024
    INITIAL 64K
4025
    MINEXTENTS 1
4026
    MAXEXTENTS 2147483645
4027
    FREELISTS 1
4028
    FREELIST GROUPS 1
4029
    BUFFER_POOL DEFAULT
4030
  )
4031
;
4032
 
4033
CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC)  TABLESPACE "USERS"
4034
  LOGGING 
4035
  PCTFREE 10
4036
  INITRANS 2
4037
  MAXTRANS 255
4038
  STORAGE
4039
  (
4040
    INITIAL 128K
4041
    MINEXTENTS 1
4042
    MAXEXTENTS 2147483645
4043
    FREELISTS 1
4044
    FREELIST GROUPS 1
4045
    BUFFER_POOL DEFAULT
4046
  )
4047
;
4048
 
4049
CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4050
 
4051
CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4052
 
4053
CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4054
 
4055
CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4056
 
4057
CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4058
 
4059
CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;
4060
 
4061
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4062
 
4063
CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4064
 
4065
CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;
4066
 
4067
CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4068
 
4069
CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4070
 
4071
CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4072
 
4073
CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;
4074
 
4075
CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4076
 
4077
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4078
 
4079
CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4080
 
4081
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4082
 
4083
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
4084
 
4085
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
4086
 
4087
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
4088
 
4089
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
4090
 
4091
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
4092
 
4093
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
4094
 
4095
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
4096
 
4097
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
4098
 
4099
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
4100
 
4101
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
4102
 
4103
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
4104
 
4105
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
4106
 
4107
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
4108
 
4109
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
4110
 
4111
CREATE OR REPLACE PROCEDURE                 update_deprecation_state(nnrtag_id IN NUMBER) AS
4112
 
4113
recno NUMBER;
4114
 
4115
CURSOR deprecate_cur IS
4116
 
4117
SELECT rc.pv_id
4118
FROM release_content rc
4119
WHERE rtag_id = nnrtag_id
4120
 AND deprecated_state IN(7);
4121
 
4122
deprecate_rec deprecate_cur % rowtype;
4123
 
4124
BEGIN
4125
 
4126
  OPEN deprecate_cur;
4127
 
4128
  FETCH deprecate_cur
4129
  INTO deprecate_rec;
4130
 
4131
  WHILE deprecate_cur % FOUND
4132
  LOOP
4133
 
4134
    SELECT COUNT(*)
4135
    INTO recno
4136
    FROM package_dependencies pd,
4137
      release_content rc
4138
    WHERE pd.pv_id = deprecate_rec.pv_id
4139
     AND rc.pv_id = pd.dpv_id
4140
     AND rc.rtag_id = nnrtag_id
4141
     AND rc.deprecated_state IN(6,   7);
4142
 
4143
    IF recno = 0 THEN
4144
 
4145
      UPDATE release_content
4146
      SET pkg_id = NULL, deprecated_state = NULL
4147
      WHERE pv_id = deprecate_rec.pv_id
4148
       AND rtag_id = nnrtag_id;
4149
 
4150
    END IF;
4151
 
4152
    FETCH deprecate_cur
4153
    INTO deprecate_rec;
4154
  END LOOP;
4155
 
4156
END;
4157
/
4158
 
4159
CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
4160
 
4161
/******************************************************************************
4162
   NAME:       ADD_VIEW_MEMBERS
4163
   PURPOSE:    
4164
 
4165
   REVISIONS:
4166
   Ver        Date        Author           Description
4167
   ---------  ----------  ---------------  ------------------------------------
4168
   1.0        11/04/2006          1. Created this procedure.
4169
 
4170
   NOTES:
4171
 
4172
   Automatically available Auto Replace Keywords:
4173
      Object Name:     ADD_VIEW_MEMBERS
4174
      Sysdate:         11/04/2006
4175
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
4176
      Username:         (set in TOAD Options, Procedure Editor)
4177
      Table Name:       (set in the "New PL/SQL Object" dialog)
4178
 
4179
******************************************************************************/
4180
CURSOR user_cur IS
4181
	SELECT u.USER_ID
4182
	  FROM USERS u
4183
	 WHERE u.USER_ID IN (
4184
	 	   			   	SELECT * 
4185
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
4186
						);
4187
user_rec user_cur%ROWTYPE;
4188
 
4189
 
4190
BEGIN
4191
 
4192
	 OPEN user_cur;
4193
	 FETCH user_cur INTO user_rec;
4194
 
4195
	 WHILE user_cur%FOUND
4196
	 LOOP
4197
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
4198
	 	 VALUES ( nGroupId, user_rec.USER_ID);
4199
 
4200
	 	 FETCH user_cur INTO user_rec;	 
4201
	 END LOOP;	 
4202
 
4203
 
4204
 
4205
END ADD_VIEW_MEMBERS;
4206
/
4207
 
4208
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4209
	   	  		  								  nPkgIdList IN VARCHAR2,
4210
												  nUserId IN NUMBER
4211
	   	  		  								  ) IS
4212
 
4213
/******************************************************************************
4214
   NAME:       ADD_PACKAGE_INTEREST
4215
   PURPOSE:    
4216
 
4217
   REVISIONS:
4218
   Ver        Date        Author           Description
4219
   ---------  ----------  ---------------  ------------------------------------
4220
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4221
 
4222
   NOTES:
4223
 
4224
   Automatically available Auto Replace Keywords:
4225
      Object Name:     ADD_PACKAGE_INTEREST
4226
      Sysdate:         12/05/2006
4227
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4228
      Username:         (set in TOAD Options, Procedure Editor)
4229
      Table Name:       (set in the "New PL/SQL Object" dialog)
4230
 
4231
******************************************************************************/
4232
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4233
   nPkgId NUMBER;
4234
BEGIN
4235
 
4236
	 npkgidcollector := in_list_number2 (nPkgIdList);
4237
 
4238
	FOR i IN 1..npkgidcollector.COUNT
4239
	LOOP
4240
		nPkgId := npkgidcollector(i);
4241
 
4242
	 --- Insert into PACKAGE_INTEREST TABLE
4243
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4244
	 VALUES(nProjId, nPkgId, nUserId);
4245
	END LOOP;	 
4246
 
4247
 
4248
END ADD_PACKAGE_INTEREST_TEST;
4249
/
4250
 
4251
CREATE OR REPLACE PROCEDURE level_n_conflicts (
4252
   nnrtag_id       IN       NUMBER,
4253
   nnsession_num   IN       NUMBER,
4254
   nnrowcnt        OUT      NUMBER,
4255
   nniteration     IN       NUMBER
4256
)
4257
IS
4258
/* ---------------------------------------------------------------------------
4259
    Version: 3.0.1
4260
   --------------------------------------------------------------------------- */
4261
   previteration   NUMBER := nniteration - 1;
4262
BEGIN
4263
   /* ---------  LEVEL 1 CONFILCTS -----------
4264
   || Following states are used:
4265
   || 0 -> NOT FOUND
4266
   || 1 -> MAJOR
4267
   || 2 -> MINOR MINOR
4268
   */
4269
   INSERT INTO temp_env_states
4270
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4271
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4272
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4273
                 FROM package_dependencies dep,
4274
                      package_versions dpv,
4275
                      package_versions pv,
4276
                      release_content rel,
4277
                      temp_env_states tes
4278
                WHERE rel.pv_id = dep.pv_id
4279
                  AND rel.rtag_id = nnrtag_id
4280
                  AND dep.pv_id = pv.pv_id
4281
                  AND dep.dpv_id = dpv.pv_id
4282
                  AND dpv.pkg_id = tes.pkg_id
4283
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4284
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4285
                  AND tes.session_num = nnsession_num
4286
                  AND tes.level_num = previteration
4287
                  AND (dep.pv_id, dep.dpv_id) IN 
4288
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4289
                                                 || packages already stored in Temp Table.
4290
                                                 */
4291
                      (
4292
                         SELECT pd.pv_id, pd.dpv_id
4293
                           FROM package_dependencies pd, release_content rc
4294
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4295
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4296
                         MINUS
4297
                         SELECT igw.pv_id, igw.dpv_id
4298
                           FROM ignore_warnings igw
4299
                          WHERE igw.rtag_id = nnrtag_id);
4300
 
4301
   nnrowcnt := SQL%ROWCOUNT;
4302
END level_n_conflicts;
4303
/
4304
 
4305
CREATE OR REPLACE PROCEDURE Remove_Release_Content ( sPvIdList IN VARCHAR2,
4306
													 sNotPvIdList IN VARCHAR2,
4307
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
4308
/* ---------------------------------------------------------------------------
4309
    Version: 3.0
4310
   --------------------------------------------------------------------------- */
4311
 
4312
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4313
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4314
 
4315
BEGIN
4316
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
4317
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
4318
 
4319
    -- Delete From Release Content
4320
    DELETE
4321
      FROM RELEASE_CONTENT
4322
	 WHERE rtag_id = nRTagId
4323
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4324
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4325
 
4326
 
4327
 
4328
END Remove_Release_Content;
4329
/
4330
 
4331
CREATE OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
4332
 
4333
/* ---------------------------------------------------------------------------
4334
    Version: 3.0.0
4335
   --------------------------------------------------------------------------- */
4336
 
4337
	sPkgName VARCHAR2(4000);
4338
	sVext VARCHAR2(4000);
4339
 
4340
BEGIN
4341
 
4342
	-- Get package details
4343
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
4344
	  FROM PACKAGE_VERSIONS pv,
4345
	  	   PACKAGES pkg
4346
	 WHERE pv.PKG_ID = pkg.PKG_ID
4347
	   AND pv.PV_ID = nPvId;
4348
 
4349
 
4350
	-- Generate Label for automated build
4351
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
4352
 
4353
END GET_AUTOMATED_LABEL;
4354
/
4355
 
4356
CREATE OR REPLACE PACKAGE pk_package
4357
IS
4358
/*
4359
------------------------------
4360
||  Last Modified:  Jeremy Tweddle
4361
||  Modified Date:  24/08/2007
4362
||
4363
------------------------------
4364
*/
4365
   TYPE typecur IS REF CURSOR;
4366
 
4367
/*================================================================================================*/
4368
   PROCEDURE new_version (
4369
      nlastpvid                   IN       NUMBER,
4370
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4371
      cbuildtype                  IN       CHAR,
4372
      nsettopvid                  IN       NUMBER DEFAULT NULL,
4373
      nrtagid                     IN       NUMBER,
4374
      nuserid                     IN       NUMBER,
4375
      enumissues_state_imported   IN       NUMBER,
4376
      returnpvid                  OUT      NUMBER
4377
   );
4378
 
4379
   PROCEDURE change_state (
4380
      pvid       IN   NUMBER,
4381
      newstate   IN   package_versions.dlocked%TYPE,
4382
      userid     IN   NUMBER
4383
   );
4384
 
4385
   PROCEDURE new_patch (
4386
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
4387
      nparentpvid        IN       NUMBER,
4388
      spatchidlist       IN       VARCHAR2,
4389
      nuserid            IN       NUMBER,
4390
      returnpatchid      OUT      NUMBER
4391
   );
4392
 
4393
   PROCEDURE obsolete_patch (
4394
      patchid            IN   NUMBER,
4395
      isobsolete         IN   CHAR,
4396
      obsoletecomments   IN   VARCHAR2,
4397
      userid             IN   NUMBER
4398
   );
4399
 
4400
   PROCEDURE obsolete_patches (
4401
      spatchidlist       IN   VARCHAR2,
4402
      isobsolete         IN   CHAR,
4403
      obsoletecomments   IN   VARCHAR2,
4404
      userid             IN   NUMBER
4405
   );
4406
 
4407
   PROCEDURE destroy_package (
4408
      pvid               IN       NUMBER,
4409
      overridewarnings   IN       CHAR DEFAULT 'N',
4410
      problemstring      OUT      VARCHAR2
4411
   );
4412
 
4413
   PROCEDURE add_process (
4414
      nprocid         IN   processes.proc_id%TYPE,
4415
      shealthtag      IN   processes.proc_name%TYPE,
4416
      sprocdesc       IN   processes.proc_description%TYPE,
4417
      scmdinterface   IN   processes.run_as%TYPE,
4418
      spkgowner       IN   processes.pkg_owner%TYPE,
4419
      sisinterface    IN   processes.is_interface%TYPE,
4420
      npvid           IN   package_processes.pv_id%TYPE,
4421
      nuserid         IN   NUMBER
4422
   );
4423
 
4424
   PROCEDURE add_package_process (
4425
      nprocidlist   IN   VARCHAR2,
4426
      npvid         IN   package_processes.pv_id%TYPE,
4427
      nuserid       IN   NUMBER
4428
   );
4429
 
4430
 
4431
 
4432
   PROCEDURE remove_process (
4433
      nprocid   IN   package_processes.proc_id%TYPE,
4434
      npvid     IN   package_processes.pv_id%TYPE,
4435
      nuserid   IN   NUMBER
4436
   );
4437
 
4438
   PROCEDURE move_package (
4439
   	  npvid  			  IN package_versions.pv_id%TYPE,
4440
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4441
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4442
	  nuserid			  IN NUMBER		 
4443
   ); 
4444
 
4445
   PROCEDURE modify_product_state (
4446
   	  npvid IN package_versions.pv_id%TYPE,
4447
	  nrtagid IN release_tags.rtag_id%TYPE,
4448
	  nstateid IN product_states.state_id%TYPE,
4449
	  nuserid IN NUMBER
4450
   );
4451
 
4452
   PROCEDURE add_code_review_url (
4453
        npvid           IN    NUMBER,
4454
        nprojid         IN    NUMBER,
4455
        surl            IN    VARCHAR2,
4456
        sreason         IN    VARCHAR2,
4457
        ddateofreview   IN    DATE
4458
   );
4459
 
4460
   PROCEDURE update_code_review_url (
4461
        ncrid           IN    NUMBER,
4462
        nprojid         IN    NUMBER,
4463
        surl            IN    VARCHAR2,
4464
        sreason         IN    VARCHAR2
4465
   );
4466
 
4467
   PROCEDURE remove_code_review_url (
4468
        ncrid           IN    NUMBER
4469
   );
4470
/*================================================================================================*/
4471
END pk_package;
4472
/
4473
 
4474
CREATE OR REPLACE PROCEDURE Add_Runtime_Dependency ( NNpv_id IN NUMBER,
4475
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
4476
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4477
                                                     NNuser_id IN NUMBER
4478
                                                    ) IS
4479
/* ---------------------------------------------------------------------------
4480
    Version: 3.1
4481
   --------------------------------------------------------------------------- */
4482
 
4483
    retRTD_ID NUMBER;
4484
 
4485
	CURSOR rtd_cur IS
4486
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
4487
    rtd_rec rtd_cur%ROWTYPE;
4488
 
4489
BEGIN
4490
    --- Seed database with package_name and version if required ---
4491
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
4492
 
4493
	OPEN rtd_cur;
4494
    FETCH rtd_cur INTO rtd_rec;
4495
 
4496
    IF rtd_cur%NOTFOUND
4497
    THEN
4498
		/* Make sure it does not exists already as runtime dependency */
4499
 
4500
		--- Add new Runtime Dependency ---
4501
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
4502
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
4503
 
4504
    	/* LOG ACTION */
4505
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
4506
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
4507
 
4508
	END IF;
4509
 
4510
 
4511
END Add_Runtime_Dependency;
4512
/
4513
 
4514
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4515
	   	  		  								  nPkgIdList IN VARCHAR2,
4516
												  nUserId IN NUMBER
4517
	   	  		  								  ) IS
4518
 
4519
/******************************************************************************
4520
   NAME:       ADD_PACKAGE_INTEREST
4521
   PURPOSE:    
4522
 
4523
   REVISIONS:
4524
   Ver        Date        Author           Description
4525
   ---------  ----------  ---------------  ------------------------------------
4526
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4527
 
4528
   NOTES:
4529
 
4530
   Automatically available Auto Replace Keywords:
4531
      Object Name:     ADD_PACKAGE_INTEREST
4532
      Sysdate:         12/05/2006
4533
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4534
      Username:         (set in TOAD Options, Procedure Editor)
4535
      Table Name:       (set in the "New PL/SQL Object" dialog)
4536
 
4537
******************************************************************************/
4538
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4539
   nPkgId NUMBER;
4540
BEGIN
4541
 
4542
	 npkgidcollector := in_list_number2 (nPkgIdList);
4543
 
4544
	FOR i IN 1..npkgidcollector.COUNT
4545
	LOOP
4546
		nPkgId := npkgidcollector(i);
4547
 
4548
	 --- Insert into PACKAGE_INTEREST TABLE
4549
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4550
	 VALUES(nProjId, nPkgId, nUserId);
4551
	END LOOP;	 
4552
 
4553
 
4554
END ADD_PACKAGE_INTEREST;
4555
/
4556
 
4557
CREATE OR REPLACE FUNCTION CAN_EDIT_PKG_IN_PROJECT ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
4558
 
4559
/* ---------------------------------------------------------------------------
4560
    Version: 3.0.0
4561
   --------------------------------------------------------------------------- */
4562
 
4563
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
4564
	ProjId NUMBER;
4565
	RowCount NUMBER;
4566
	cReleaseMode CHAR(1);
4567
 
4568
BEGIN
4569
 
4570
	--RETURN 1;
4571
 
4572
 
4573
	/*--------------- Business Rules Here -------------------*/
4574
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
4575
		RETURN 0;
4576
	END IF;
4577
	/*-------------------------------------------------------*/
4578
 
4579
 
4580
 
4581
 
4582
 
4583
 
4584
	/*-- First Check. See if package is used through release reference --*/
4585
	SELECT COUNT(rc.PV_ID) INTO RowCount
4586
	  FROM (
4587
	  		SELECT rl.REF_RTAG_ID
4588
			  FROM RELEASE_LINKS rl
4589
			 WHERE rl.RTAG_ID = nRtagId
4590
	  		) rl,
4591
			RELEASE_CONTENT rc
4592
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
4593
	    AND rc.PV_ID = nPvId;			
4594
 
4595
 
4596
	-- Decide if package can be edited  
4597
	IF RowCount > 0 THEN
4598
		-- Package is referenced from other release, hence cannot be edited
4599
		RETURN 0;	
4600
 
4601
	ELSE
4602
 
4603
		-- Check is only done for releases in restrictive mode
4604
		SELECT rt.OFFICIAL INTO cReleaseMode
4605
		  FROM RELEASE_TAGS rt
4606
		 WHERE rt.RTAG_ID = nRtagId;
4607
 
4608
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
4609
			-- Do not do any firther checking,
4610
			-- Package is editable here
4611
			RETURN 1;
4612
		END IF;	
4613
 
4614
	END IF;
4615
 
4616
 
4617
 
4618
 
4619
	/*-- Further checking --*/
4620
	-- Get proj_id
4621
	SELECT rt.PROJ_ID  INTO  ProjId
4622
	  FROM RELEASE_TAGS rt
4623
	 WHERE rt.RTAG_ID = nRtagId;
4624
 
4625
 
4626
 
4627
	BEGIN
4628
 
4629
		-- Get v_ext
4630
		SELECT pv.V_EXT  INTO  Vext
4631
		  FROM PACKAGE_VERSIONS pv
4632
		 WHERE pv.PV_ID = nPvId;  
4633
 
4634
		EXCEPTION
4635
	    	WHEN NO_DATA_FOUND THEN
4636
	       		Vext := NULL;
4637
 
4638
	END;	 
4639
 
4640
 
4641
	--Temp Hack for Step Project
4642
	IF ProjId != 281 THEN
4643
		-- Find if package can be edited in this project
4644
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
4645
	 		FROM PROJECT_EXTENTIONS pe
4646
			WHERE pe.PROJ_ID != ProjId  
4647
	  		AND pe.EXT_NAME = VExt;
4648
	END IF;		
4649
 
4650
 
4651
	-- Decide if package can be edited  
4652
	IF RowCount > 0 THEN
4653
		-- Package extension is found in other projects, hece NOT EDITABLE
4654
		RETURN 0;
4655
	ELSE
4656
		RETURN 1;	
4657
	END IF;
4658
 
4659
 
4660
END CAN_EDIT_PKG_IN_PROJECT;
4661
/
4662
 
4663
CREATE OR REPLACE PACKAGE pk_archive
4664
IS
4665
/*
4666
------------------------------
4667
||  Author:  Rupesh Solanki
4668
||  Date:    26 October 2006
4669
||  Version:   1.0
4670
------------------------------
4671
*/
4672
 
4673
   /*================================================================================================*/
4674
   PROCEDURE populate_packages_table;
4675
 
4676
   PROCEDURE populate_archive_data_table (
4677
      nrtagid   IN   release_tags.rtag_id%TYPE
4678
   );
4679
 
4680
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
4681
 
4682
   PROCEDURE migrate_rtag_to_archive_schema (
4683
      nrtagid   IN   release_tags.rtag_id%TYPE
4684
   );
4685
 
4686
   PROCEDURE clean_up_archive_data_table (
4687
      nrtagid   IN   release_tags.rtag_id%TYPE
4688
   );
4689
 
4690
   PROCEDURE write_action_log (
4691
      nuserid   IN   NUMBER,
4692
      nrtagid   IN   release_tags.rtag_id%TYPE
4693
   );
4694
/*================================================================================================*/
4695
END pk_archive;
4696
/
4697
 
4698
CREATE OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS
4699
 
4700
/* ---------------------------------------------------------------------------
4701
    Version: 3.3
4702
   --------------------------------------------------------------------------- */
4703
    rowCnt NUMBER := 0;
4704
    iteration NUMBER := 2;          -- Iterations counter
4705
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
4706
                                    -- This will prevent infinite loops if cyrcular dependencies are found
4707
    sessionNum NUMBER;
4708
BEGIN
4709
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
4710
 
4711
 
4712
    -- Redo Patch Ignore warnings
4713
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
4714
 
4715
 
4716
    Level_One_Conflicts ( NNrtag_id, sessionNum );
4717
 
4718
    LOOP
4719
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
4720
        iteration := iteration + 1;
4721
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
4722
    END LOOP;
4723
 
4724
    Update_Package_States ( NNrtag_id, sessionNum );
4725
 
4726
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
4727
 
4728
    -- Flag Packages with New Patches Available
4729
    Check_New_Patches ( NNrtag_id );
4730
 
4731
	Clean_Do_Not_Ripple( NNrtag_id );
4732
 
4733
 
4734
	/* Circular Dependency Flag */
4735
    /*
4736
	IF iteration > maxIterations
4737
	THEN
4738
		UPDATE release_tags SET
4739
		   	   circular_dependency = 'Y'
4740
		 WHERE rtag_id = NNrtag_id;
4741
	ELSE
4742
		UPDATE release_tags SET
4743
		   	   circular_dependency = NULL
4744
		 WHERE rtag_id = NNrtag_id;
4745
	END IF;
4746
    */
4747
END Rebuild_Environment;
4748
/
4749
 
4750
CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS
4751
 
4752
/******************************************************************************
4753
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4754
   PURPOSE:    
4755
 
4756
   REVISIONS:
4757
   Ver        Date        Author           Description
4758
   ---------  ----------  ---------------  ------------------------------------
4759
   1.0        6/12/2006          1. Created this procedure.
4760
 
4761
   NOTES:
4762
 
4763
   Automatically available Auto Replace Keywords:
4764
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4765
      Sysdate:         6/12/2006
4766
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4767
      Username:         (set in TOAD Options, Procedure Editor)
4768
      Table Name:       (set in the "New PL/SQL Object" dialog)
4769
 
4770
******************************************************************************/
4771
 
4772
	CURSOR curInfo IS
4773
    SELECT PV_ID
4774
	FROM PACKAGE_BUILD_ENV
4775
	WHERE BE_ID IN (11, 12);
4776
    recInfo curInfo%ROWTYPE;
4777
 
4778
 
4779
BEGIN
4780
 
4781
	OPEN curInfo;
4782
    FETCH curInfo INTO recInfo;
4783
 
4784
	WHILE curInfo%FOUND
4785
	LOOP
4786
 
4787
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4788
		VALUES( recInfo.PV_ID, 2, 5);
4789
 
4790
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4791
 
4792
		FETCH curInfo INTO recInfo;
4793
 
4794
	END LOOP;
4795
 
4796
	CLOSE curInfo;
4797
 
4798
 
4799
 
4800
 
4801
END INSERT_INTO_PACKAGE_BUILD_INFO;
4802
/
4803
 
4804
CREATE OR REPLACE PROCEDURE check_new_patches (
4805
   nrtagid   IN   release_content.rtag_id%TYPE
4806
)
4807
IS
4808
/* ---------------------------------------------------------------------------
4809
    Version: 3.0
4810
   --------------------------------------------------------------------------- */
4811
BEGIN
4812
   /*--------------- Business Rules Here -------------------*/
4813
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
4814
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
4815
   END IF
4816
 
4817
   /*-------------------------------------------------------*/
4818
   UPDATE release_content rc
4819
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
4820
    WHERE rc.pv_id IN (
4821
             SELECT prod.pv_id
4822
               FROM (SELECT   pp.pv_id AS orig_parent_id,
4823
                              COUNT (*) AS num_of_patches
4824
                         FROM release_content rc, package_patches pp
4825
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4826
                     GROUP BY pp.pv_id) orig,
4827
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
4828
                              COUNT (*) AS num_of_patches
4829
                         FROM release_content rc,
4830
                              package_patches pp,
4831
                              package_dependencies dep,
4832
                              package_versions pv,
4833
                              package_patches prodpp
4834
                        WHERE rc.pv_id = pp.pv_id
4835
                          AND rc.rtag_id = nrtagid
4836
                          AND pp.patch_id = dep.dpv_id
4837
                          AND dep.pv_id = pv.pv_id
4838
                          AND pv.is_patch = 'Y'
4839
                          AND pv.dlocked = 'Y'
4840
                          AND prodpp.patch_id = dep.pv_id
4841
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
4842
                    release_content rc
4843
              WHERE orig.orig_parent_id = prod.pv_id
4844
                AND orig.num_of_patches != prod.num_of_patches
4845
                AND rc.rtag_id = nrtagid
4846
                AND rc.pv_id = prod.pv_id
4847
                AND rc.pkg_state = 0
4848
             UNION
4849
             SELECT   prodpp.pv_id
4850
                 FROM release_content rc,
4851
                      package_patches pp,
4852
                      package_dependencies dep,
4853
                      package_versions pv,
4854
                      package_patches prodpp
4855
                WHERE rc.pv_id = pp.pv_id
4856
                  AND rc.rtag_id = nrtagid
4857
                  AND pp.patch_id = dep.dpv_id
4858
                  AND dep.pv_id = pv.pv_id
4859
                  AND pv.is_patch = 'Y'
4860
                  AND pv.dlocked = 'Y'
4861
                  AND prodpp.patch_id = dep.pv_id
4862
             GROUP BY prodpp.pv_id, pp.pv_id
4863
             MINUS
4864
             SELECT   pp.pv_id
4865
                 FROM release_content rc, package_patches pp
4866
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4867
             GROUP BY pp.pv_id);
4868
END check_new_patches;
4869
/
4870
 
4871
CREATE OR REPLACE PROCEDURE Update_Package_Dependency ( NNpv_id IN NUMBER,
4872
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
4873
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4874
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
4875
                                                        NNuser_id IN NUMBER,
4876
                                                        NNdelete_old_dependency IN NUMBER
4877
                                                       ) IS
4878
/* ---------------------------------------------------------------------------
4879
    Version: 3.3
4880
   --------------------------------------------------------------------------- */
4881
 
4882
    retPV_ID NUMBER;
4883
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
4884
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4885
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4886
    NNpkg_id NUMBER;
4887
    NNdpkg_id NUMBER;
4888
 
4889
BEGIN
4890
    --- Seed database with package_name and version if required ---
4891
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
4892
 
4893
    -- get v_ext,pkg_id of current dependency
4894
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
4895
      FROM PACKAGE_VERSIONS
4896
     WHERE pv_id = retPV_ID;
4897
 
4898
    -- get pkg_id of parent package
4899
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
4900
      FROM PACKAGE_VERSIONS
4901
     WHERE pv_id = NNpv_id;
4902
 
4903
 
4904
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
4905
    	( (PvIsPatch IS NOT NULL) )THEN
4906
 
4907
	    IF NNdelete_old_dependency = 1 THEN
4908
	        /* Used for CUSTOM dependency add/edit */
4909
 
4910
	        --- Remove old dependency ---
4911
            IF (PvIsPatch IS NULL) THEN
4912
            	-- Do it for Packages
4913
		        DELETE FROM PACKAGE_DEPENDENCIES
4914
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4915
		            (
4916
		            SELECT dep.*
4917
		              FROM PACKAGE_DEPENDENCIES dep,
4918
		                   PACKAGE_VERSIONS dpv,
4919
		                   PACKAGE_VERSIONS pv
4920
		             WHERE dep.dpv_id = dpv.pv_id
4921
		               AND dep.pv_id = NNpv_id
4922
		               AND pv.pv_id = retPV_ID
4923
		               AND dpv.pkg_id = pv.pkg_id
4924
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
4925
		            );
4926
            ELSE
4927
            	-- Do it for Patches
4928
                DELETE FROM PACKAGE_DEPENDENCIES
4929
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4930
		            (
4931
		            SELECT dep.*
4932
		              FROM PACKAGE_DEPENDENCIES dep
4933
		             WHERE dep.dpv_id = retPV_ID
4934
		               AND dep.pv_id = NNpv_id
4935
		            );
4936
			END IF;
4937
 
4938
	    END IF;
4939
 
4940
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
4941
 
4942
	    --- Add new dependency ---
4943
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
4944
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
4945
 
4946
	END IF;
4947
 
4948
END Update_Package_Dependency;
4949
/
4950
 
4951
CREATE OR REPLACE PACKAGE PK_RMAPI_test IS
4952
/*
4953
------------------------------
4954
||  Last Modified:  S.Vukovic
4955
||  Modified Date:  19/May/2005
4956
||  Spec Version:   2.0
4957
------------------------------
4958
*/
4959
 
4960
	TYPE typeCur IS REF CURSOR;
4961
 
4962
    /*================================================================================================*/
4963
 
4964
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
4965
 
4966
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
4967
 
4968
 
4969
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
4970
							 PkgName IN VARCHAR2, 
4971
							 VExt IN VARCHAR2,
4972
							 NewPkgVersion IN VARCHAR2, 
4973
							 Label IN VARCHAR2,
4974
							 DependenciesImportList IN VARCHAR2,
4975
							 IsRippled IN NUMBER,
4976
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
4977
 
4978
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
4979
 
4980
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
4981
 
4982
	PROCEDURE CQ_TEST;
4983
 
4984
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
4985
	/*================================================================================================*/
4986
 
4987
END PK_RMAPI_test;
4988
/
4989
 
4990
CREATE OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2
4991
IS
4992
/* ---------------------------------------------------------------------------
4993
    Version: 1.0.0
4994
   --------------------------------------------------------------------------- */
4995
BEGIN
4996
    IF is_number(s_version) AND LENGTH(s_version) > 3
4997
    THEN
4998
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
4999
    ELSE
5000
        RETURN s_version;
5001
    END IF;
5002
END get_patch_version;
5003
/
5004
 
5005
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;
5006
/
5007
 
5008
CREATE OR REPLACE PACKAGE PK_APP_UTILS IS
5009
/*
5010
------------------------------
5011
||  Last Modified:  S.Vukovic
5012
||  Modified Date:  26/Apr/2005
5013
||  Spec Version:   1.0
5014
------------------------------
5015
*/
5016
 
5017
	TYPE typeCur IS REF CURSOR;
5018
 
5019
    /*================================================================================================*/
5020
 
5021
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
5022
 
5023
	/*================================================================================================*/
5024
 
5025
END PK_APP_UTILS;
5026
/
5027
 
5028
CREATE OR REPLACE PROCEDURE Log_Project_Action ( nProjId IN NUMBER,
5029
												 enumActionTypeName IN VARCHAR2,
5030
		                                         nUserId IN NUMBER,
5031
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
5032
												 nRtagId IN NUMBER  ) IS
5033
/* ---------------------------------------------------------------------------
5034
    Version: 3.0
5035
   --------------------------------------------------------------------------- */
5036
 
5037
    ActionTypeId NUMBER;
5038
 
5039
BEGIN
5040
 
5041
    -- Get Action Type FK
5042
    SELECT act.ACTTYPE_ID INTO ActionTypeId
5043
      FROM ACTION_TYPE act
5044
     WHERE act.NAME = enumActionTypeName;
5045
 
5046
 
5047
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
5048
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
5049
 
5050
 
5051
END Log_Project_Action;
5052
/
5053
 
5054
CREATE OR REPLACE FUNCTION IN_LIST_VARCHAR2 ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
5055
 
5056
/* ---------------------------------------------------------------------------
5057
    Version: 3.1
5058
   --------------------------------------------------------------------------- */
5059
 
5060
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
5061
	pos				   NUMBER;
5062
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
5063
	val				   VARCHAR2(4000);
5064
 
5065
BEGIN
5066
 
5067
	IF NOT sInList IS NULL
5068
	THEN
5069
		LOOP
5070
	        EXIT WHEN in_list IS NULL;
5071
	        pos := INSTR ( in_list, cSeparator );
5072
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
5073
 
5074
			IF (NOT val IS NULL) THEN
5075
		        cItemCollection.extend;
5076
		        cItemCollection(cItemCollection.count) := val;
5077
			END IF;
5078
 
5079
	        in_list := SUBSTR ( in_list, pos+1 );
5080
		END LOOP;
5081
	END IF;
5082
 
5083
	RETURN cItemCollection;
5084
END IN_LIST_VARCHAR2;
5085
/
5086
 
5087
CREATE OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5088
                                               retPKG_ID OUT NUMBER ) IS
5089
/* ---------------------------------------------------------------------------
5090
    Version: 3.0.0
5091
   --------------------------------------------------------------------------- */
5092
 
5093
    CURSOR packages_cur IS
5094
        SELECT pkg.pkg_id
5095
          FROM packages pkg
5096
         WHERE pkg.pkg_name = SSpkg_name;
5097
    packages_rec packages_cur%ROWTYPE;
5098
 
5099
 
5100
BEGIN
5101
 
5102
    /* ---------------------------------------------------- */
5103
    /* Find if package name exists                          */
5104
    /* ---------------------------------------------------- */
5105
 
5106
    OPEN packages_cur;
5107
    FETCH packages_cur INTO packages_rec;
5108
 
5109
    IF packages_cur%NOTFOUND
5110
    THEN
5111
        -- Create new pkg_name --
5112
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
5113
 
5114
        INSERT INTO packages ( pkg_id, pkg_name )
5115
        VALUES ( retPKG_ID, SSpkg_name );
5116
 
5117
    ELSE
5118
        retPKG_ID := packages_rec.pkg_id;
5119
 
5120
    END IF;
5121
 
5122
 
5123
    CLOSE packages_cur;
5124
 
5125
END New_Package_Name;
5126
/
5127
 
5128
CREATE OR REPLACE PROCEDURE UPDATE_PROCESSES
5129
IS
5130
 
5131
proc_id NUMBER;
5132
/******************************************************************************
5133
   NAME:       DELETE_DO_NOT_RIPPLE
5134
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
5135
               IS RELEASED
5136
 
5137
   REVISIONS:
5138
   Ver        Date        Author           Description
5139
   ---------  ----------  ---------------  ------------------------------------
5140
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
5141
 
5142
   NOTES:
5143
 
5144
   Automatically available Auto Replace Keywords:
5145
      Object Name:     DELETE_DO_NOT_RIPPLE
5146
      Sysdate:         21/04/2006
5147
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
5148
      Username:         (set in TOAD Options, Procedure Editor)
5149
      Table Name:       (set in the "New PL/SQL Object" dialog)
5150
 
5151
******************************************************************************/
5152
   CURSOR ripple_cur
5153
   IS
5154
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
5155
 
5156
   ripple_rec   ripple_cur%ROWTYPE;
5157
BEGIN
5158
   OPEN ripple_cur;
5159
 
5160
   FETCH ripple_cur
5161
    INTO ripple_rec;
5162
 
5163
   WHILE ripple_cur%FOUND
5164
   LOOP
5165
 
5166
 
5167
update deployment_manager.processes_config 
5168
set proc_id = ripple_rec.proc_id
5169
where pkg_health_tag = ripple_rec.proc_name
5170
and cmd_interface IS NULL
5171
and pkg_owner IS NULL
5172
and is_interface IS NULL; 
5173
 
5174
 
5175
      FETCH ripple_cur
5176
       INTO ripple_rec;
5177
   END LOOP;
5178
END UPDATE_PROCESSES;
5179
/
5180
 
5181
CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS
5182
 
5183
/******************************************************************************
5184
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
5185
   PURPOSE:    
5186
 
5187
   REVISIONS:
5188
   Ver        Date        Author           Description
5189
   ---------  ----------  ---------------  ------------------------------------
5190
   1.0        6/12/2006          1. Created this procedure.
5191
 
5192
   NOTES:
5193
 
5194
   Automatically available Auto Replace Keywords:
5195
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
5196
      Sysdate:         6/12/2006
5197
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
5198
      Username:         (set in TOAD Options, Procedure Editor)
5199
      Table Name:       (set in the "New PL/SQL Object" dialog)
5200
 
5201
******************************************************************************/
5202
 
5203
	CURSOR curInfo IS
5204
    SELECT PV_ID
5205
	FROM PACKAGE_BUILD_ENV
5206
	WHERE BE_ID IN (11, 12);
5207
    recInfo curInfo%ROWTYPE;
5208
 
5209
 
5210
BEGIN
5211
 
5212
	OPEN curInfo;
5213
    FETCH curInfo INTO recInfo;
5214
 
5215
	WHILE curInfo%FOUND
5216
	LOOP
5217
 
5218
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
5219
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
5220
 
5221
		FETCH curInfo INTO recInfo;
5222
 
5223
	END LOOP;
5224
 
5225
	CLOSE curInfo;
5226
 
5227
 
5228
 
5229
 
5230
END INSERT_MULTIPLE_STICKY_NOTES;
5231
/
5232
 
5233
CREATE OR REPLACE PACKAGE PK_RELEASE_TEST IS
5234
/*
5235
------------------------------
5236
||  Last Modified:  S.Vukovic
5237
||  Modified Date:  12/Sep/2005
5238
||  Body Version:   3.0
5239
------------------------------
5240
*/
5241
 
5242
	TYPE typeCur IS REF CURSOR;
5243
 
5244
    /*================================================================================================*/
5245
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5246
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
5247
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5248
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5249
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5250
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5251
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5252
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5253
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5254
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5255
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5256
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5257
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5258
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5259
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5260
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5261
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5262
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5263
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5264
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5265
	/*================================================================================================*/
5266
 
5267
END PK_RELEASE_TEST;
5268
/
5269
 
5270
CREATE OR REPLACE FUNCTION ORA_SYSDATETIME
5271
RETURN DATE
5272
IS
5273
/* ---------------------------------------------------------------------------
5274
    Version: 3.0.0
5275
   --------------------------------------------------------------------------- */
5276
BEGIN
5277
 
5278
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
5279
END ORA_SYSDATETIME;
5280
/
5281
 
5282
CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2
5283
IS
5284
/* ---------------------------------------------------------------------------
5285
    Version: 1.0.0
5286
   --------------------------------------------------------------------------- */
5287
BEGIN
5288
    IF is_number(s_version) AND LENGTH(s_version) > 3
5289
    THEN
5290
        RETURN MOD(TO_NUMBER(s_version), 1000);
5291
    ELSE
5292
        RETURN 0;
5293
    END IF;
5294
END get_build_number;
5295
/
5296
 
5297
CREATE OR REPLACE PACKAGE PK_RELEASE IS
5298
/*
5299
------------------------------
5300
||  Last Modified:  S.Vukovic
5301
||  Modified Date:  12/Sep/2005
5302
||  Body Version:   3.0
5303
------------------------------
5304
*/
5305
 
5306
	TYPE typeCur IS REF CURSOR;
5307
 
5308
    /*================================================================================================*/
5309
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5310
	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 );
5311
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5312
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5313
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5314
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5315
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5316
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5317
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5318
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5319
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
5320
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5321
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5322
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5323
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5324
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5325
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5326
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5327
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5328
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5329
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5330
 
5331
	/*================================================================================================*/
5332
 
5333
END PK_RELEASE;
5334
/
5335
 
5336
CREATE OR REPLACE PROCEDURE New_Additional_Note ( pnPv_id IN NUMBER,
5337
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
5338
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
5339
                                                  pnUser_id IN NUMBER,
5340
                                                  outErrCode OUT NUMBER
5341
                                                 ) IS
5342
/* ---------------------------------------------------------------------------
5343
    Version: 3.0.0
5344
   --------------------------------------------------------------------------- */
5345
 
5346
    newID NUMBER;
5347
 
5348
	CURSOR an_duplicate_cur IS
5349
        SELECT note_id
5350
          FROM ADDITIONAL_NOTES
5351
         WHERE pv_id = pnPv_id
5352
           AND note_title = psNote_title;
5353
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
5354
 
5355
BEGIN
5356
	outErrCode := -1;		-- Set default return error code to ERROR state
5357
 
5358
	OPEN an_duplicate_cur;
5359
    FETCH an_duplicate_cur INTO an_duplicate_rec;
5360
 
5361
    IF an_duplicate_cur%NOTFOUND
5362
    THEN
5363
		/* No duplicate titles */
5364
		-- Get new ID --
5365
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
5366
 
5367
		--- Add Additional Note ---
5368
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
5369
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
5370
		outErrCode := 0;		-- Set return to SUCCESS
5371
	END IF;
5372
 
5373
	CLOSE an_duplicate_cur;
5374
END New_Additional_Note;
5375
/
5376
 
5377
CREATE OR REPLACE PROCEDURE                 DEPLOY_TO_RELEASE IS
5378
 
5379
/******************************************************************************
5380
 
5381
 
5382
******************************************************************************/
5383
 
5384
	CURSOR curInfo IS
5385
    SELECT DISTINCT
5386
        qry.DPV_ID
5387
     FROM (
5388
             SELECT dep.*,
5389
                    LEVEL AS LEVEL_NUM
5390
               FROM PACKAGE_DEPENDENCIES dep
5391
             START WITH dep.PV_ID IN ( 
5392
 
5393
                        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,
5394
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
5395
 
5396
                        ) 
5397
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
5398
 		) qry,
5399
 		PACKAGES pkg,
5400
		PACKAGE_VERSIONS pv
5401
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
5402
         and (pv.is_patch is null or pv.is_patch = 'N');
5403
    recInfo curInfo%ROWTYPE;
5404
 
5405
 
5406
BEGIN
5407
 
5408
	OPEN curInfo;
5409
    FETCH curInfo INTO recInfo;
5410
 
5411
	WHILE curInfo%FOUND
5412
	LOOP
5413
 
5414
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
5415
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
5416
 
5417
    FETCH curInfo INTO recInfo;
5418
 
5419
	END LOOP;
5420
 
5421
	CLOSE curInfo;
5422
 
5423
 
5424
 
5425
 
5426
END DEPLOY_TO_RELEASE;
5427
/
5428
 
5429
CREATE OR REPLACE PROCEDURE New_Patch ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5430
 	   	  		  					  	NNparent_id IN NUMBER,
5431
                                        sPatchIdList IN VARCHAR2,
5432
										NNuser_id IN NUMBER ) IS
5433
/* ---------------------------------------------------------------------------
5434
    Version: 3.5
5435
   --------------------------------------------------------------------------- */
5436
 
5437
    patchPv_id    NUMBER;
5438
	parPkg_id	  NUMBER;
5439
    LastInstallOrder NUMBER;
5440
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
5441
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5442
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5443
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5444
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5445
 
5446
	CURSOR parent_cur IS
5447
        SELECT pv.*, pkg.pkg_name
5448
          FROM package_versions pv,
5449
		       packages pkg
5450
         WHERE pv.pv_id = NNparent_id
5451
		   AND pv.pkg_id = pkg.pkg_id;
5452
    parent_rec parent_cur%ROWTYPE;
5453
 
5454
    CURSOR patch_cur IS
5455
        SELECT pv.*, pg.pkg_name
5456
          FROM package_versions pv,
5457
		       packages pg
5458
         WHERE pv.pkg_id = parPkg_id
5459
		   AND pv.pkg_version = SSpatch_version
5460
		   AND pv.pkg_id = pg.pkg_id;
5461
    patch_rec patch_cur%ROWTYPE;
5462
 
5463
	CURSOR releases_cur IS
5464
        SELECT rc.pv_id
5465
		  FROM release_content rc
5466
		 WHERE rc.pv_id = patch_rec.pv_id;
5467
    releases_rec releases_cur%ROWTYPE;
5468
 
5469
 
5470
BEGIN
5471
 
5472
	-- Get Last Install Order
5473
    SELECT Count(*) INTO LastInstallOrder
5474
	  FROM PACKAGE_PATCHES pp
5475
	 WHERE pp.PV_ID = NNparent_id;
5476
 
5477
 
5478
    -- Get parent details
5479
	OPEN parent_cur;
5480
    FETCH parent_cur INTO parent_rec;
5481
	parPkg_id := parent_rec.pkg_id;
5482
 
5483
 
5484
	-- Find if patch exists in database
5485
    OPEN patch_cur;
5486
    FETCH patch_cur INTO patch_rec;
5487
 
5488
 
5489
    -- Parent must be official
5490
    IF parent_rec.dlocked = 'Y' THEN
5491
 
5492
	    IF patch_cur%NOTFOUND
5493
	    THEN
5494
        	isPatchDlocked := 'N';
5495
 
5496
	        -- Create new patch version --
5497
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5498
 
5499
 
5500
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5501
 
5502
	        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 )
5503
				   VALUES (
5504
						   patchPv_id,
5505
	                       parPkg_id,
5506
	                       SSpatch_version,
5507
	                       isPatchDlocked,
5508
	                       ORA_SYSDATE,
5509
	                       NNuser_id,
5510
	                       ORA_SYSDATETIME,
5511
	                       NNuser_id,
5512
	                       SSV_MM,
5513
	                       SSV_NMM,
5514
	                       SSV_EXT,
5515
	                       parent_rec.src_path,
5516
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5517
	                       NNuser_id,
5518
						   'Y',
5519
                           patchPv_id,
5520
						   parent_rec.bs_id,
5521
						   parent_rec.is_autobuildable,
5522
						   parent_rec.ripple_field
5523
 
5524
						   );
5525
 
5526
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5527
		    	   ( SELECT NNparent_id AS pv_id,
5528
				            pv.pv_id AS patch_id,
5529
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5530
				       FROM package_versions pv
5531
					  WHERE pv.pv_id = patchPv_id
5532
					    AND pv.is_patch = 'Y' );
5533
 
5534
	        /* LOG ACTION */
5535
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5536
        			     'Patch version created: '|| SSpatch_version );
5537
 
5538
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5539
        			     'New patch created and attached: '|| SSpatch_version );
5540
 
5541
 
5542
	    ELSE
5543
 
5544
		    patchPv_id := patch_rec.pv_id;
5545
	    	isPatchDlocked := patch_rec.dlocked;
5546
 
5547
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5548
		    OPEN releases_cur;
5549
		    FETCH releases_cur INTO releases_rec;
5550
 
5551
			IF releases_cur%NOTFOUND
5552
	   		THEN
5553
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5554
				UPDATE package_versions SET
5555
					   is_patch = 'Y'
5556
					   WHERE pv_id = patchPv_id;
5557
 
5558
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5559
			    	   ( SELECT NNparent_id AS pv_id,
5560
					            pv.pv_id AS patch_id,
5561
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5562
					       FROM package_versions pv
5563
						  WHERE pv.pv_id = patchPv_id
5564
						    AND pv.is_patch = 'Y' );
5565
 
5566
			END IF;
5567
 
5568
			CLOSE releases_cur;
5569
 
5570
            /* LOG ACTION */
5571
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5572
        			     'Patch version was found and attached: '|| SSpatch_version );
5573
 
5574
	    END IF;
5575
 
5576
 
5577
 
5578
 
5579
    END IF;
5580
 
5581
 
5582
 
5583
    /* Create Patch Dependencies */
5584
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5585
 
5586
 
5587
    -- Make sure patch is unofficial before altering its dependencies
5588
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5589
    	-- Delete Existing Dependencies
5590
        DELETE
5591
          FROM PACKAGE_DEPENDENCIES dep
5592
         WHERE dep.PV_ID = patchPv_id;
5593
 
5594
 
5595
        -- Insert new dependencies
5596
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5597
        SELECT patchPv_id AS PV_ID,
5598
        	   pv.PV_ID AS DPV_ID,
5599
               parPkg_id AS PKG_ID,
5600
               pv.PKG_ID AS DPKG_ID,
5601
               'L' AS BUILD_TYPE
5602
          FROM PACKAGE_VERSIONS pv
5603
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5604
 
5605
 
5606
    END IF;
5607
 
5608
 
5609
    CLOSE parent_cur;
5610
    CLOSE patch_cur;
5611
END New_Patch;
5612
/
5613
 
5614
CREATE OR REPLACE PROCEDURE Ignore_Dependency_Warnings ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
5615
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
5616
                                                         sIgnoreIdList IN VARCHAR2,
5617
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5618
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
5619
/* ---------------------------------------------------------------------------
5620
    Version: 5.0
5621
   --------------------------------------------------------------------------- */
5622
 
5623
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5624
ReleaseLocation VARCHAR2(4000);
5625
ActionTypeId NUMBER;
5626
 
5627
BEGIN
5628
 
5629
 
5630
   	IF (NOT bDoPatchIgnore) THEN
5631
    	/* Manual Ignore Warnings */
5632
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
5633
 
5634
 
5635
        /* Log Action */
5636
        -- Get Release Location
5637
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5638
		  FROM PROJECTS proj,
5639
		  	   RELEASE_TAGS rt
5640
		 WHERE rt.PROJ_ID = proj.PROJ_ID
5641
		   AND rt.RTAG_ID = nRtagId;
5642
 
5643
        -- Get Action Type Id for IGNORE_ON
5644
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5645
	      FROM ACTION_TYPE act
5646
	     WHERE act.NAME = 'ignore_on';
5647
 
5648
        -- Get Ignored (Current MINUS Old)
5649
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5650
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5651
		  FROM (
5652
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5653
		        FROM PACKAGE_VERSIONS pv
5654
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5655
		      MINUS
5656
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5657
		        FROM IGNORE_WARNINGS igw
5658
		       WHERE igw.RTAG_ID = nRtagId
5659
		         AND igw.PV_ID = nPvId
5660
		       ) qry,
5661
		       PACKAGE_VERSIONS pv,
5662
		       PACKAGES pkg,
5663
		       RELEASE_CONTENT rc,
5664
		       PACKAGE_VERSIONS rpv
5665
		 WHERE pv.PKG_ID = pkg.PKG_ID
5666
		   AND rc.RTAG_ID = nRtagId
5667
		   AND rc.PV_ID = rpv.PV_ID
5668
		   AND rpv.PKG_ID = pv.PKG_ID
5669
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5670
		   AND qry.DPV_ID = pv.PV_ID;
5671
 
5672
 
5673
        -- Get Action Type Id for IGNORE_OFF
5674
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5675
	      FROM ACTION_TYPE act
5676
	     WHERE act.NAME = 'ignore_off';
5677
 
5678
        -- Get UnIgnored (Old MINUS Current)
5679
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5680
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5681
		  FROM (
5682
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5683
		          FROM IGNORE_WARNINGS igw
5684
		         WHERE igw.RTAG_ID = nRtagId
5685
		           AND igw.PV_ID = nPvId
5686
                MINUS
5687
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5688
		          FROM PACKAGE_VERSIONS pv
5689
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5690
		       ) qry,
5691
		       PACKAGE_VERSIONS pv,
5692
		       PACKAGES pkg,
5693
		       RELEASE_CONTENT rc,
5694
		       PACKAGE_VERSIONS rpv
5695
		 WHERE pv.PKG_ID = pkg.PKG_ID
5696
		   AND rc.RTAG_ID = nRtagId
5697
		   AND rc.PV_ID = rpv.PV_ID
5698
		   AND rpv.PKG_ID = pv.PKG_ID
5699
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5700
		   AND qry.DPV_ID = pv.PV_ID;
5701
 
5702
 
5703
 
5704
       	-- Delete Current Ignore Warnings
5705
	    DELETE
5706
	      FROM IGNORE_WARNINGS igw
5707
	     WHERE igw.RTAG_ID = nRtagId
5708
	       AND igw.PV_ID = nPvId
5709
	       AND igw.IS_PATCH_IGNORE IS NULL;
5710
 
5711
 
5712
        IF (oIgnoreIdCollector.COUNT > 0) THEN
5713
		    -- Insert Ignore Warnings
5714
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
5715
		    SELECT nRtagId,
5716
	        	   nPvId,
5717
	               pv.PV_ID AS DPV_ID
5718
	          FROM PACKAGE_VERSIONS pv
5719
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5720
        END IF;
5721
 
5722
 
5723
		-- Touch Release if package is in Release Area
5724
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
5725
			Touch_Release (nRtagId);
5726
		END IF;
5727
 
5728
	ELSE
5729
       	/* Patch Ignore Warnings */
5730
 
5731
        -- Delete Current Patch Ignore Warnings
5732
	    DELETE
5733
	      FROM IGNORE_WARNINGS igw
5734
	     WHERE igw.RTAG_ID = nRtagId
5735
	       AND igw.IS_PATCH_IGNORE = 'Y';
5736
 
5737
 
5738
        -- Delete Manual Ignores that need to be Patch Ignores
5739
	    DELETE
5740
	      FROM IGNORE_WARNINGS igw
5741
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
5742
         	(
5743
				SELECT DISTINCT
5744
                       nRtagId,
5745
					   err.PV_ID,
5746
                       err.ERR_DPV AS DPV_ID
5747
				  FROM
5748
				       (
5749
				       /* Full Release Contents used for reference*/
5750
				       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
5751
				         FROM release_content rel, package_versions rpv
5752
				        WHERE rel.pv_id = rpv.pv_id
5753
				          AND rtag_id = nRtagId
5754
				       ) frc,
5755
				       (
5756
				        /* DPV_IDs not fount in release*/
5757
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5758
				          FROM package_dependencies dep
5759
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5760
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5761
				       ) err,
5762
				       (
5763
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5764
				          FROM PACKAGE_PATCHES pp,
5765
				          	   PACKAGE_DEPENDENCIES dep,
5766
				          	   RELEASE_CONTENT rc
5767
				         WHERE rc.RTAG_ID = nRtagId
5768
				           AND rc.PV_ID = pp.PV_ID
5769
				           AND dep.PV_ID = pp.PATCH_ID
5770
				       ) pp,
5771
				       package_versions errpkg,
5772
				       package_versions errpv
5773
				 WHERE err.err_dpv = errpv.pv_id
5774
				   AND errpv.pkg_id = frc.pkg_id(+)
5775
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5776
				   AND err.pv_id = errpkg.pv_id
5777
				   AND err.PV_ID = pp.PV_ID
5778
				   AND frc.PV_ID = pp.DPV_ID
5779
			);
5780
 
5781
        /*
5782
        ---------------------------------------------------
5783
        --  Make sure that select statement above and below are same
5784
        ---------------------------------------------------
5785
        */
5786
 
5787
 
5788
		-- Insert Patch Ignores
5789
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
5790
		SELECT DISTINCT
5791
			   nRtagId,
5792
		       err.PV_ID,
5793
		       err.ERR_DPV AS DPV_ID,
5794
		       'Y'
5795
		  FROM
5796
		       (
5797
		       /* Full Release Contents used for reference*/
5798
		       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
5799
		         FROM release_content rel, package_versions rpv
5800
		        WHERE rel.pv_id = rpv.pv_id
5801
		          AND rtag_id = nRtagId
5802
		       ) frc,
5803
		       (
5804
		        /* DPV_IDs not fount in release*/
5805
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5806
		          FROM package_dependencies dep
5807
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5808
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5809
		       ) err,
5810
		       (
5811
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5812
		          FROM PACKAGE_PATCHES pp,
5813
		          	   PACKAGE_DEPENDENCIES dep,
5814
		          	   RELEASE_CONTENT rc
5815
		         WHERE rc.RTAG_ID = nRtagId
5816
		           AND rc.PV_ID = pp.PV_ID
5817
		           AND dep.PV_ID = pp.PATCH_ID
5818
		       ) pp,
5819
		       package_versions errpkg,
5820
		       package_versions errpv
5821
		 WHERE err.err_dpv = errpv.pv_id
5822
		   AND errpv.pkg_id = frc.pkg_id(+)
5823
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5824
		   AND err.pv_id = errpkg.pv_id
5825
		   AND err.PV_ID = pp.PV_ID
5826
		   AND frc.PV_ID = pp.DPV_ID;
5827
 
5828
 
5829
    END IF;
5830
 
5831
 
5832
END Ignore_Dependency_Warnings;
5833
/
5834
 
5835
CREATE OR REPLACE PROCEDURE UnRipple_Package (
5836
        sPvIdList IN VARCHAR2,
5837
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5838
        nUserId IN NUMBER
5839
    ) IS
5840
/* ---------------------------------------------------------------------------
5841
    Version: 4.1
5842
   --------------------------------------------------------------------------- */
5843
 
5844
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5845
 
5846
BEGIN
5847
 
5848
    IF (sPvIdList IS NULL) THEN
5849
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5850
    END IF;
5851
 
5852
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5853
 
5854
    -- UnRipple Package
5855
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
5856
    SELECT nRtagId, pv.PV_ID
5857
    FROM PACKAGE_VERSIONS pv
5858
    WHERE pv.PV_ID IN (
5859
        SELECT *
5860
        FROM TABLE (
5861
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
5862
        )
5863
    );
5864
 
5865
    /* LOG ACTION */
5866
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
5867
 
5868
END UnRipple_Package;
5869
/
5870
 
5871
CREATE OR REPLACE PROCEDURE set_to_autobuildable (
5872
   nrtagid     IN   NUMBER,
5873
   spvidlist   IN   VARCHAR2
5874
)
5875
IS
5876
/******************************************************************************
5877
   NAME:       SET_TO_AUTOBUILDABLE
5878
   PURPOSE:
5879
 
5880
   REVISIONS:
5881
   Ver        Date        Author           Description
5882
   ---------  ----------  ---------------  ------------------------------------
5883
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
5884
 
5885
   NOTES:
5886
 
5887
   Automatically available Auto Replace Keywords:
5888
      Object Name:     SET_TO_AUTOBUILDABLE
5889
      Sysdate:         15/12/2006
5890
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
5891
      Username:         (set in TOAD Options, Procedure Editor)
5892
      Table Name:       (set in the "New PL/SQL Object" dialog)
5893
 
5894
******************************************************************************/
5895
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
5896
   PvId NUMBER;
5897
BEGIN
5898
 
5899
   npvidcollector := in_list_number2 (spvidlist);
5900
 
5901
   UPDATE package_versions
5902
      SET is_autobuildable = 'N'
5903
    WHERE pv_id IN (SELECT pv_id
5904
                      FROM release_content
5905
                     WHERE rtag_id = nrtagid);
5906
 
5907
 
5908
 
5909
   	FOR i IN 1..npvidcollector.COUNT
5910
	LOOP
5911
		PvId := npvidcollector(i);
5912
 
5913
		UPDATE package_versions
5914
		set is_autobuildable = 'Y'
5915
		where pv_id = PvId;
5916
 
5917
	END LOOP;
5918
 
5919
 
5920
END set_to_autobuildable;
5921
/
5922
 
5923
CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS
5924
/* ---------------------------------------------------------------------------
5925
    Version: 3.0
5926
   --------------------------------------------------------------------------- */
5927
 
5928
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5929
 
5930
BEGIN
5931
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
5932
 
5933
	 -- Touch Release for Rebuild
5934
     UPDATE RELEASE_TAGS rt SET
5935
     	rt.REBUILD_ENV = 'Y',
5936
        rt.REBUILD_STAMP = 0
5937
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5938
 
5939
 
5940
END Touch_Release_Bulk;
5941
/
5942
 
5943
CREATE OR REPLACE PROCEDURE TEST_MARCO IS
5944
/******************************************************************************
5945
   NAME:       TEST_MARCO
5946
   PURPOSE:    
5947
 
5948
   REVISIONS:
5949
   Ver        Date        Author           Description
5950
   ---------  ----------  ---------------  ------------------------------------
5951
   1.0        2/03/2007          1. Created this procedure.
5952
 
5953
   NOTES:
5954
 
5955
   Automatically available Auto Replace Keywords:
5956
      Object Name:     TEST_MARCO
5957
      Sysdate:         2/03/2007
5958
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
5959
      Username:         (set in TOAD Options, Procedure Editor)
5960
      Table Name:       (set in the "New PL/SQL Object" dialog)
5961
 
5962
******************************************************************************/
5963
 
5964
parPv_id    NUMBER;
5965
parPkg_id   NUMBER;
5966
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5967
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5968
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5969
BEGIN
5970
 
5971
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
5972
 
5973
        /* LOG ACTION */
5974
        Log_Action ( parPv_id, 'new_version', 3764,
5975
        			 'New package version: '|| parPv_id || '.' );
5976
 
5977
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
5978
 
5979
     -- Clone Package Version Details --
5980
            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,
5981
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
5982
                SELECT parPv_id         AS pv_id,
5983
                       pv.pkg_id        AS pkg_id,
5984
                       parPv_id || '.'    AS pkg_version,
5985
                       'N'              AS dlocked,
5986
                       Ora_Sysdate      AS created_stamp,
5987
                       3764        AS creator_id,
5988
                       Ora_Sysdatetime  AS modified_stamp,
5989
                       3764        AS modifier_id,
5990
                       SSV_MM          AS V_MM,
5991
                       SSV_NMM         AS V_NMM,
5992
                       SSV_EXT          AS V_EXT,
5993
                       pv.src_path,
5994
                       pv.pv_description,
5995
                       pv.PV_OVERVIEW,
5996
                       112982 	AS LAST_PV_ID,
5997
                       pv.owner_id,
5998
					   pv.BUILD_TYPE,
5999
					   pv.IS_BUILD_ENV_REQUIRED,
6000
					   pv.bs_id,
6001
					   pv.is_autobuildable,
6002
					   pv.IS_DEPLOYABLE
6003
                  FROM PACKAGE_VERSIONS pv
6004
                 WHERE pv.pv_id = 112982;		
6005
 
6006
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6007
 
6008
 
6009
END TEST_MARCO;
6010
/
6011
 
6012
CREATE OR REPLACE PACKAGE PK_BUILDAPI_TEST IS
6013
/*
6014
------------------------------
6015
||  Last Modified:  S.Vukovic
6016
||  Modified Date:  30/Mar/2005
6017
||  Spec Version:   1.0
6018
------------------------------
6019
*/
6020
 
6021
	/*================================================================================================*/
6022
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
6023
								  sOsName IN VARCHAR2,
6024
								  sOrigFilePath IN VARCHAR2,
6025
								  sFileName IN VARCHAR2,
6026
								  sDestFilePath IN VARCHAR2,
6027
								  nByteSize IN NUMBER,
6028
								  sCRCcksum IN VARCHAR2 );
6029
 
6030
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
6031
    /*================================================================================================*/
6032
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
6033
	/*================================================================================================*/
6034
 
6035
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
6036
			  					   	 sWebServer IN VARCHAR2,
6037
									 sMailServer IN VARCHAR2,
6038
									 sMailSender IN VARCHAR2);
6039
	/*================================================================================================*/
6040
 
6041
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
6042
	/*================================================================================================*/
6043
 
6044
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
6045
	/*================================================================================================*/
6046
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
6047
	/*================================================================================================*/	        
6048
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
6049
	/*================================================================================================*/	
6050
 
6051
END PK_BUILDAPI_TEST;
6052
/
6053
 
6054
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
6055
 
6056
/* ---------------------------------------------------------------------------
6057
    Version: 3.0.0
6058
   --------------------------------------------------------------------------- */
6059
 
6060
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6061
	pos				   NUMBER;
6062
	in_list			   VARCHAR2(4000) := sInList || ',';
6063
 
6064
BEGIN
6065
 
6066
	IF NOT sInList IS NULL
6067
	THEN
6068
		LOOP
6069
	        EXIT WHEN in_list IS NULL;
6070
	        pos := INSTR ( in_list, ',' );
6071
	        sync_rtags.extend;
6072
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
6073
	        in_list := SUBSTR ( in_list, pos+1 );
6074
		END LOOP;
6075
	END IF;
6076
 
6077
	RETURN sync_rtags;
6078
END IN_LIST_NUMBER;
6079
/
6080
 
6081
CREATE OR REPLACE PROCEDURE delete_autobuild_failure_info
6082
IS
6083
/******************************************************************************
6084
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
6085
   PURPOSE:
6086
 
6087
   REVISIONS:
6088
   Ver        Date        Author           Description
6089
   ---------  ----------  ---------------  ------------------------------------
6090
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
6091
 
6092
   NOTES:
6093
 
6094
   Automatically available Auto Replace Keywords:
6095
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
6096
      Sysdate:         2/06/2006
6097
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
6098
      Username:         (set in TOAD Options, Procedure Editor)
6099
      Table Name:       (set in the "New PL/SQL Object" dialog)
6100
 
6101
******************************************************************************/
6102
BEGIN
6103
   DELETE FROM autobuild_failure
6104
         WHERE group_email_id NOT IN (SELECT group_email_id
6105
                                        FROM members_group);
6106
END delete_autobuild_failure_info;
6107
/
6108
 
53 mhunt 6109
CREATE OR REPLACE PACKAGE                   "PK_ENVIRONMENT" IS
51 mhunt 6110
/*
6111
------------------------------
53 mhunt 6112
||  Last Modified:  G.Huddy
6113
||  Modified Date:  28/May/2008
6114
||  Spec Version:   1.2
51 mhunt 6115
------------------------------
6116
*/
6117
 
6118
	TYPE typeCur IS REF CURSOR;
6119
 
53 mhunt 6120
	/*================================================================================================*/
51 mhunt 6121
 
6122
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
6123
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6124
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6125
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6126
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6127
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6128
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
53 mhunt 6129
 
51 mhunt 6130
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6131
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6132
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6133
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6134
 
53 mhunt 6135
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
6136
 
51 mhunt 6137
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 6138
 
6139
 
51 mhunt 6140
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6141
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6142
 
6143
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6144
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6145
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
53 mhunt 6146
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6147
 
51 mhunt 6148
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 6149
 
51 mhunt 6150
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
6151
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
53 mhunt 6152
 
6153
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
6154
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
51 mhunt 6155
							 CloneFromPvId IN NUMBER );
53 mhunt 6156
 
51 mhunt 6157
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
53 mhunt 6158
 
6159
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6160
 
51 mhunt 6161
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6162
 
53 mhunt 6163
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6164
 
6165
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
51 mhunt 6166
	/*================================================================================================*/
6167
 
6168
END PK_ENVIRONMENT;
6169
/
6170
 
6171
CREATE OR REPLACE PROCEDURE Clear_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6172
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6173
											 nUserId IN NUMBER ) IS
6174
/* ---------------------------------------------------------------------------
6175
    Version: 4.0
6176
   --------------------------------------------------------------------------- */
6177
 
6178
BEGIN
6179
 
6180
    -- Clear Advisory Ripple Package
6181
    DELETE FROM ADVISORY_RIPPLE
6182
	WHERE PV_ID = nPvId
6183
	AND RTAG_ID = nRtagId;
6184
 
6185
    /* LOG ACTION */
6186
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
6187
 
6188
	/*Rebuild_Environment(nRtagId);*/
6189
 
6190
END Clear_Advisory_Ripple;
6191
/
6192
 
6193
CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6194
											 nUserId IN NUMBER ) IS
6195
/* ---------------------------------------------------------------------------
6196
    Version: 4.0
6197
   --------------------------------------------------------------------------- */
6198
 
6199
BEGIN
6200
 
6201
    -- Lock Package
6202
    UPDATE PACKAGE_VERSIONS pv SET
6203
    	pv.DLOCKED = 'Y'
6204
    WHERE pv.PV_ID = nPvId;
6205
 
6206
    /* LOG ACTION */
6207
   	Log_Action ( nPvId, 'lock_package', nUserId );
6208
 
6209
END Lock_Package;
6210
/
6211
 
6212
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env_Temp ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6213
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6214
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6215
														 ) IS
6216
/* ---------------------------------------------------------------------------
6217
    Last Modified: Rupesh Solanki
6218
	Version: 3.0.1
6219
   --------------------------------------------------------------------------- */
6220
 
6221
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6222
   BsId NUMBER;
6223
   HackBsId NUMBER;
6224
 
6225
 
6226
BEGIN
6227
 
6228
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6229
 
6230
   -- Delete Current Build Env settings
6231
   DELETE FROM PACKAGE_BUILD_ENV
6232
   WHERE pv_id = nPvId;
6233
 
6234
   -- Delet Current Package Build Info Settings
6235
   DELETE FROM PACKAGE_BUILD_INFO
6236
   WHERE pv_id = nPvId;
6237
 
6238
   -- Reset flag to N
6239
   UPDATE PACKAGE_VERSIONS SET
6240
	   IS_BUILD_ENV_REQUIRED = 'N'
6241
   WHERE PV_ID = nPvId;
6242
 
6243
 
6244
   -- Set new Build Env
6245
   IF NOT sBuildEnvIdList IS NULL THEN
6246
	FOR i IN 1..nBsCollector.COUNT
6247
	LOOP   
6248
 
6249
	BsId := nBsCollector(i);
6250
 
6251
	IF nBuildStandard = 2 THEN
6252
	   IF BsId = 1 THEN
6253
	   	  HackBsId := 11;
6254
	   ELSE
6255
	   	  HackBsId := 12;
6256
	   END IF;
6257
 
6258
   	  -- Insert into PACKAGE_BUILD_ENV
6259
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6260
	  SELECT nPvId AS PV_ID,
6261
	  		 be.BE_ID
6262
	    FROM BUILD_ENVIRONMENTS be
6263
	   WHERE be.BE_ID IN ( HackBsId );
6264
 
6265
   	  -- Insert into PACKAGE_BUILD_INFO
6266
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6267
	  SELECT nPvId AS PV_ID,
6268
	  		 be.BM_ID
6269
	    FROM BUILD_MACHINES be
6270
	   WHERE be.BM_ID IN ( BsId );						 
6271
 
6272
	   -- Set flag to Y
6273
	   UPDATE PACKAGE_VERSIONS SET
6274
		   IS_BUILD_ENV_REQUIRED = 'Y'
6275
	   WHERE PV_ID = nPvId;	
6276
 
6277
 
6278
	ELSE
6279
 
6280
   	  -- Insert into PACKAGE_BUILD_ENV
6281
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6282
	  SELECT nPvId AS PV_ID,
6283
	  		 be.BE_ID
6284
	    FROM BUILD_ENVIRONMENTS be
6285
	   WHERE be.BE_ID IN ( BsId );
6286
 
6287
   	  -- Insert into PACKAGE_BUILD_INFO
6288
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6289
	  SELECT nPvId AS PV_ID,
6290
	  		 be.BM_ID
6291
	    FROM BUILD_MACHINES be
6292
	   WHERE be.BM_ID IN ( BsId );						 
6293
 
6294
	   -- Set flag to Y
6295
	   UPDATE PACKAGE_VERSIONS SET
6296
		   IS_BUILD_ENV_REQUIRED = 'Y'
6297
	   WHERE PV_ID = nPvId;
6298
 
6299
	END IF;  
6300
 
6301
 
6302
	END LOOP;	   
6303
 
6304
   END IF;
6305
 
6306
 
6307
END Set_Package_Build_Env_Temp;
6308
/
6309
 
6310
CREATE OR REPLACE PROCEDURE Rename_Package_Version ( NNpv_id IN NUMBER,
6311
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6312
													 cBuildType IN CHAR,
6313
                                                     NNuser_id IN NUMBER,
6314
                                                     errMessage OUT VARCHAR2 ) IS
6315
/* ---------------------------------------------------------------------------
6316
    Version: 3.2
6317
   --------------------------------------------------------------------------- */
6318
 
6319
    sPackageVersion VARCHAR2(4000);
6320
	sLabel VARCHAR2(4000) := NULL;
6321
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
6322
 
6323
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6324
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6325
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6326
 
6327
    CURSOR package_versions_cur IS
6328
        SELECT pv_id
6329
     	  FROM package_versions
6330
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
6331
     	   AND pkg_version = SSpkg_version;
6332
    package_versions_rec package_versions_cur%ROWTYPE;
6333
 
6334
 
6335
BEGIN
6336
 
6337
    /* ---------------------------------------------------- */
6338
    /* Find if package_version exists                       */
6339
    /* ---------------------------------------------------- */
6340
 
6341
	errMessage := NULL;
6342
 
6343
 
6344
	-- Get previous version
6345
	SELECT pv.PKG_VERSION INTO OldPkgVersion
6346
      FROM PACKAGE_VERSIONS pv
6347
     WHERE pv.PV_ID = NNpv_id;
6348
 
6349
 
6350
	sPackageVersion := SSpkg_version;
6351
 
6352
 
6353
	IF OldPkgVersion != sPackageVersion THEN
6354
 
6355
	    OPEN package_versions_cur;
6356
	    FETCH package_versions_cur INTO package_versions_rec;
6357
 
6358
	    IF package_versions_cur%NOTFOUND
6359
	    THEN
6360
 
6361
			-- Split current version in parts
6362
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6363
 
6364
 
6365
		    -- Automated built config
6366
			IF (cBuildType = 'A') THEN
6367
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
6368
			END IF;
6369
 
6370
 
6371
	        -- Packge version not found, hence rename it.
6372
	        UPDATE package_versions
6373
	           SET pkg_version = sPackageVersion,
6374
	               v_mm = SSV_MM,
6375
	               v_nmm = SSV_NMM,
6376
	               v_ext = SSV_EXT,
6377
	               modified_stamp = ORA_SYSDATETIME,
6378
	               modifier_id = NNuser_id,
6379
				   build_type = cBuildType,
6380
				   pkg_label = NULL
6381
	         WHERE pv_id = NNpv_id;
6382
 
6383
 
6384
			IF (cBuildType = 'A') THEN
6385
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
6386
				UPDATE PACKAGE_VERSIONS pv SET
6387
					pv.PKG_LABEL = sLabel
6388
		         WHERE pv_id = NNpv_id;
6389
			END IF;
6390
 
6391
			/* LOG ACTION */
6392
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
6393
 
6394
	    ELSE
6395
	        -- Package version exists. Cannot proceed.
6396
	        errMessage := 'enum_MSG_VERSION_EXISTS';
6397
 
6398
	    END IF;
6399
 
6400
	    CLOSE package_versions_cur;
6401
 
6402
	END IF;
6403
 
6404
 
6405
 
6406
 
6407
END Rename_Package_Version;
6408
/
6409
 
6410
CREATE OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
6411
IS
6412
/* ---------------------------------------------------------------------------
6413
    Version: 3.0.0
6414
   --------------------------------------------------------------------------- */
6415
 
6416
BEGIN
6417
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
6418
    THEN
6419
        RETURN FALSE;
6420
    ELSE
6421
        RETURN TRUE;
6422
    END IF;
6423
 
6424
END IS_VERSION_EXTENSION;
6425
/
6426
 
6427
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6428
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6429
                                                          NNuser_id IN NUMBER,
6430
                                                          retPV_ID OUT NUMBER,
6431
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6432
/* ---------------------------------------------------------------------------
6433
    Version: 4.0
6434
   --------------------------------------------------------------------------- */
6435
 
6436
    parPkg_id   NUMBER;
6437
    parPv_id    NUMBER;
6438
    cloneFrom_pv_id NUMBER;
6439
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6440
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6441
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6442
 
6443
    CURSOR packages_cur IS
6444
        SELECT pkg_id FROM PACKAGES
6445
        WHERE pkg_name = SSpkg_name;
6446
    packages_rec packages_cur%ROWTYPE;
6447
 
6448
    CURSOR package_versions_cur IS
6449
        SELECT pv_id FROM PACKAGE_VERSIONS
6450
        WHERE pkg_id = parPkg_id
6451
        AND pkg_version = SSpkg_version;
6452
    package_versions_rec package_versions_cur%ROWTYPE;
6453
 
6454
    CURSOR clone_package_versions_cur IS
6455
        SELECT MAX(pv_id) AS pv_id
6456
          FROM PACKAGE_VERSIONS
6457
         WHERE pkg_id = parPkg_id
6458
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6459
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6460
 
6461
BEGIN
6462
    /* -------------------------------------------- */
6463
    /* Find if pkg_name exists and seed if required */
6464
    /* -------------------------------------------- */
6465
    OPEN packages_cur;
6466
    FETCH packages_cur INTO packages_rec;
6467
 
6468
    IF packages_cur%NOTFOUND
6469
    THEN
6470
        /* INSERT into packages table */
6471
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6472
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6473
 
6474
    ELSE
6475
        parPkg_id := packages_rec.pkg_id;
6476
 
6477
    END IF;
6478
 
6479
    CLOSE packages_cur;
6480
 
6481
 
6482
 
6483
    /* ---------------------------------------------------- */
6484
    /* Find if package_version exists and seed if required  */
6485
    /* ---------------------------------------------------- */
6486
    OPEN package_versions_cur;
6487
    FETCH package_versions_cur INTO package_versions_rec;
6488
 
6489
    IF package_versions_cur%NOTFOUND
6490
    THEN
6491
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6492
 
6493
        /* LOG ACTION */
6494
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6495
        			 'New package version: '|| SSpkg_version );
6496
 
6497
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6498
 
6499
        /* Find similar pkg_name + ext to clone from */
6500
        OPEN clone_package_versions_cur;
6501
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6502
 
6503
 
6504
        IF NOT clone_package_versions_rec.pv_id IS NULL
6505
        THEN
6506
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6507
			IF ( NOT nCloneFromPvId IS NULL) THEN
6508
            	cloneFrom_pv_id := nCloneFromPvId;
6509
			ELSE
6510
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6511
			END IF;
6512
 
6513
            -- Clone Package Version Details --
6514
            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,
6515
                                           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  )
6516
                SELECT parPv_id         AS pv_id,
6517
                       parPkg_id        AS pkg_id,
6518
                       SSpkg_version    AS pkg_version,
6519
                       'N'              AS dlocked,
6520
                       Ora_Sysdate      AS created_stamp,
6521
                       NNuser_id        AS creator_id,
6522
                       Ora_Sysdatetime  AS modified_stamp,
6523
                       NNuser_id        AS modifier_id,
6524
                       SSV_MM           AS V_MM,
6525
                       SSV_NMM          AS V_NMM,
6526
                       SSV_EXT          AS V_EXT,
6527
                       pv.src_path,
6528
                       pv.pv_description,
6529
                       pv.PV_OVERVIEW,
6530
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6531
                       pv.owner_id,
6532
					   pv.BUILD_TYPE,
6533
					   pv.IS_BUILD_ENV_REQUIRED,
6534
					   pv.BS_ID,
6535
					   pv.is_autobuildable,
6536
					   pv.IS_DEPLOYABLE, 
6537
					   pv.ripple_field
6538
                  FROM PACKAGE_VERSIONS pv
6539
                 WHERE pv.pv_id = cloneFrom_pv_id;
6540
 
6541
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6542
 
6543
        ELSE
6544
            /* BRAND NEW version + ext */
6545
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, owner_id, LAST_PV_ID, BUILD_TYPE, ripple_field )
6546
        	VALUES (
6547
                    parPv_id,
6548
                    parPkg_id,
6549
                    SSpkg_version,
6550
                    'N',
6551
                    Ora_Sysdate,
6552
                    NNuser_id,
6553
                    Ora_Sysdatetime,
6554
                    NNuser_id,
6555
                    SSV_MM,
6556
                    SSV_NMM,
6557
                    SSV_EXT,
6558
                    NNuser_id,
6559
                    parPv_id,
6560
					'M',
6561
					'b'
6562
                   );
6563
 
6564
        END IF;
6565
 
6566
        CLOSE clone_package_versions_cur;
6567
        retPV_ID := parPv_id;
6568
 
6569
    ELSE
6570
        retPV_ID := package_versions_rec.pv_id;
6571
 
6572
    END IF;
6573
 
6574
    CLOSE package_versions_cur;
6575
 
6576
 
6577
 
6578
 
6579
END Seed_Package_Names_Versions;
6580
/
6581
 
6582
CREATE OR REPLACE PROCEDURE Remove_Runtime ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6583
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
6584
                                             nUserId IN NUMBER ) IS
6585
/* ---------------------------------------------------------------------------
6586
    Version: 3.0
6587
   --------------------------------------------------------------------------- */
6588
 
6589
   RuntimeDependency VARCHAR2(4000);
6590
 
6591
BEGIN
6592
 
6593
	-- Get Runtime dependency
6594
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
6595
	  FROM RUNTIME_DEPENDENCIES rtd,
6596
	  	   PACKAGES pkg,
6597
	       PACKAGE_VERSIONS pv
6598
	 WHERE rtd.PV_ID = nPvId
6599
	   AND pv.PKG_ID = pkg.PKG_ID
6600
	   AND rtd.RTD_ID = pv.PV_ID
6601
	   AND rtd.RTD_ID = nRuntimeId;
6602
 
6603
 
6604
	-- Delete Document
6605
    DELETE
6606
      FROM RUNTIME_DEPENDENCIES rtd
6607
     WHERE rtd.PV_ID = nPvId
6608
       AND rtd.RTD_ID = nRuntimeId;
6609
 
6610
 
6611
    /* LOG ACTION */
6612
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
6613
   			     'Runtime package: '|| RuntimeDependency );
6614
 
6615
 
6616
END Remove_Runtime;
6617
/
6618
 
6619
CREATE OR REPLACE PROCEDURE Deprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6620
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6621
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6622
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
6623
											   nUserId IN NUMBER) IS
6624
ext VARCHAR2(50);
6625
 
6626
 
6627
 
6628
 
6629
BEGIN
6630
 
6631
	--Extract the package version extension
6632
	SELECT V_EXT into ext
6633
	FROM PACKAGE_VERSIONS
6634
	WHERE PV_ID = nPvId; 
6635
 
6636
    -- Deprecate Package
6637
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
6638
	VALUES (nRtagId, nPkgId, sComments, ext);
6639
 
6640
	IF ext IS NOT NULL THEN
6641
	   UPDATE RELEASE_CONTENT 
6642
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6643
	   WHERE RTAG_ID = nRtagId
6644
	   AND PV_ID IN (SELECT PV.PV_ID 
6645
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6646
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6647
				  	AND PV.V_EXT = ext
6648
				  	AND PKG.PKG_ID = nPkgId
6649
				 	);						
6650
	ELSE
6651
	   UPDATE RELEASE_CONTENT 
6652
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6653
	   WHERE RTAG_ID = nRtagId
6654
	   AND PV_ID IN (SELECT PV.PV_ID 
6655
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6656
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6657
				  	AND PV.V_EXT IS NULL
6658
				  	AND PKG.PKG_ID = nPkgId
6659
				 	);
6660
	END IF;
6661
 
6662
	UPDATE RELEASE_CONTENT
6663
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
6664
	WHERE RTAG_ID = nRtagId
6665
	AND PV_ID IN (		   SELECT DISTINCT
6666
 	 		  	 		   qry.PV_ID
6667
						        FROM (
6668
								 	  SELECT dep.*,
6669
									  LEVEL AS LEVEL_NUM
6670
									  FROM PACKAGE_DEPENDENCIES dep 
6671
 								START WITH dep.DPV_ID IN ( nPvId ) 
6672
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6673
 								) qry,
6674
								PACKAGES pkg,
6675
								PACKAGE_VERSIONS pv,
6676
								RELEASE_CONTENT rc
6677
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6678
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6679
							 AND rc.DEPRECATED_STATE IS NULL
6680
				 );			 
6681
 
6682
    /* LOG ACTION */
6683
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
6684
 
6685
 
6686
END Deprecate_Package;
6687
/
6688
 
6689
CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (
6690
   nprojid     IN   NUMBER,
6691
   nviewid     IN   NUMBER,
6692
   suserlist   IN   VARCHAR2
6693
)
6694
IS
6695
   groupid   NUMBER;
6696
/******************************************************************************
6697
   NAME:       ADD_AUTOBUILD_FAILURE
6698
   PURPOSE:
6699
 
6700
   REVISIONS:
6701
   Ver        Date        Author           Description
6702
   ---------  ----------  ---------------  ------------------------------------
6703
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
6704
 
6705
   NOTES:
6706
 
6707
   Automatically available Auto Replace Keywords:
6708
      Object Name:     ADD_AUTOBUILD_FAILURE
6709
      Sysdate:         11/04/2006
6710
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
6711
      Username:         (set in TOAD Options, Procedure Editor)
6712
      Table Name:       (set in the "New PL/SQL Object" dialog)
6713
 
6714
******************************************************************************/
6715
BEGIN
6716
   BEGIN
6717
      SELECT group_email_id
6718
        INTO groupid
6719
        FROM autobuild_failure
6720
       WHERE proj_id = nprojid AND view_id = nviewid;
6721
   EXCEPTION
6722
      WHEN NO_DATA_FOUND
6723
      THEN
6724
         --  Create Next Sequence Id ---
6725
         SELECT seq_group_email_id.NEXTVAL
6726
           INTO groupid
6727
           FROM DUAL;
6728
 
6729
         INSERT INTO autobuild_failure
6730
                     (group_email_id, proj_id, view_id
6731
                     )
6732
              VALUES (groupid, nprojid, nviewid
6733
                     );
6734
   END;
6735
 
6736
   add_view_members (groupid, suserlist);
6737
END add_autobuild_failure_info;
6738
/
6739
 
6740
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;
6741
/
6742
 
6743
CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"
6744
as TABLE of VARCHAR2(4000)
6745
/
6746
 
6747
CREATE OR REPLACE PROCEDURE CHANGE_RELEASE_MODE ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
6748
/* ---------------------------------------------------------------------------
6749
    Version: 3.0.0
6750
   --------------------------------------------------------------------------- */
6751
 
6752
	cMode CHAR(1) := NULL;  
6753
	nProjId NUMBER; 
6754
 
6755
BEGIN
6756
 
6757
 
6758
	/*
6759
	Author: Rupesh Solanki
6760
	Modified: 24th October 2006
6761
	Reason: Added the archive mode state into Release Manager 
6762
	||	1 - Open Mode
6763
	||	2 - Restrictive Mode
6764
	||	3 - Closed Mode
6765
	||	4 - CCB Mode
6766
	||	5 - Archive Mode
6767
	*/	
6768
	-- Get project Id
6769
	SELECT rt.PROJ_ID INTO nProjId
6770
	  FROM RELEASE_TAGS rt
6771
	 WHERE rt.RTAG_ID = nRtagId; 
6772
 
6773
	IF nModeCode = 1 THEN
6774
		-- Open Mode
6775
		cMode := 'N';
6776
 
6777
		/* LOG ACTION */
6778
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
6779
 
6780
	ELSIF nModeCode = 2 THEN
6781
		-- Restrictive Mode
6782
		cMode := 'R';
6783
 
6784
		/* LOG ACTION */
6785
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
6786
 
6787
	ELSIF nModeCode = 3 THEN
6788
		-- Closed Mode
6789
		cMode := 'Y';
6790
 
6791
		/* LOG ACTION */
6792
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
6793
 
6794
	ELSIF nModeCode = 4 THEN
6795
		-- CCB Mode
6796
		cMode := 'C';
6797
 
6798
		/* LOG ACTION */
6799
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
6800
 
6801
	ELSIF nModeCode = 5 THEN
6802
		-- Archive Mode
6803
		cMode := 'A';
6804
 
6805
		/* LOG ACTION */
6806
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
6807
 
6808
 
6809
	END IF;
6810
 
6811
 
6812
 
6813
	-- Now update table
6814
	IF NOT cMode IS NULL THEN
6815
		UPDATE RELEASE_TAGS rt SET
6816
		rt.OFFICIAL = cMode
6817
		WHERE rt.RTAG_ID = nRtagId;
6818
 
6819
	END IF;
6820
 
6821
 
6822
END CHANGE_RELEASE_MODE;
6823
/
6824
 
6825
CREATE OR REPLACE PROCEDURE Remove_Document ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6826
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
6827
                                              nUserId IN NUMBER ) IS
6828
/* ---------------------------------------------------------------------------
6829
    Version: 3.0
6830
   --------------------------------------------------------------------------- */
6831
 
6832
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
6833
 
6834
BEGIN
6835
 
6836
	-- Get Doc Num
6837
    SELECT pd.DOC_NUM INTO DocNumber
6838
      FROM PACKAGE_DOCUMENTS pd
6839
     WHERE pd.PV_ID = nPvId
6840
       AND pd.DOC_ID = nDocId;
6841
 
6842
 
6843
	-- Delete Document
6844
    DELETE
6845
      FROM PACKAGE_DOCUMENTS pd
6846
     WHERE pd.PV_ID = nPvId
6847
       AND pd.DOC_ID = nDocId;
6848
 
6849
 
6850
    /* LOG ACTION */
6851
   	Log_Action ( nPvId, 'document_remove', nUserId,
6852
   			     'Document number: '|| DocNumber );
6853
 
6854
 
6855
END Remove_Document;
6856
/
6857
 
6858
CREATE OR REPLACE PROCEDURE Update_Unit_Test ( nTest_id IN NUMBER,
6859
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6860
											   nPv_id IN NUMBER,
6861
											   nUserId IN NUMBER,
6862
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6863
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6864
	                                           sCompletion_date IN VARCHAR2,
6865
											   sDpkg_path IN VARCHAR2,
6866
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6867
											   sResults IN VARCHAR2,
6868
											   outFileName OUT VARCHAR2
6869
                                              ) IS
6870
/* ---------------------------------------------------------------------------
6871
    Version: 3.1.0
6872
   --------------------------------------------------------------------------- */
6873
 
6874
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6875
 
6876
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6877
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6878
 
6879
 
6880
BEGIN
6881
 
6882
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6883
       	ResultsURL := sResults;
6884
       ELSE
6885
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6886
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6887
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6888
           END IF;
6889
       END IF;
6890
 
6891
	--- Update Unit Test ---
6892
    UPDATE UNIT_TESTS SET
6893
           TEST_SUMMARY = sTest_summary,
6894
		   NUMOF_TEST = sNumof_test,
6895
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6896
		   COMPLETED_BY = nUserId,
6897
		   RESULTS_URL = ResultsURL,
6898
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6899
     WHERE TEST_ID = nTest_id
6900
       AND PV_ID = nPv_id;
6901
 
6902
END Update_Unit_Test;
6903
/
6904
 
6905
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Test ( nTest_id IN NUMBER,
6906
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6907
											   nPv_id IN NUMBER,
6908
											   nUserId IN NUMBER,
6909
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6910
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6911
	                                           sCompletion_date IN VARCHAR2,
6912
											   sDpkg_path IN VARCHAR2,
6913
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6914
											   sResults IN VARCHAR2,
6915
											   outFileName OUT VARCHAR2
6916
                                              ) IS
6917
/* ---------------------------------------------------------------------------
6918
    Version: 3.1.0
6919
   --------------------------------------------------------------------------- */
6920
 
6921
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6922
 
6923
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6924
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6925
 
6926
 
6927
BEGIN
6928
 
6929
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6930
       	ResultsURL := sResults;
6931
       ELSE
6932
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6933
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6934
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6935
           END IF;
6936
       END IF;
6937
 
6938
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6939
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
6940
    		sResults_url:= 'doc' || '/' || 
6941
			;
6942
        END IF;*/
6943
	--- Update Unit Test ---
6944
    UPDATE UNIT_TESTS SET
6945
           TEST_SUMMARY = sTest_summary,
6946
		   NUMOF_TEST = sNumof_test,
6947
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6948
		   COMPLETED_BY = nUserId,
6949
		   RESULTS_URL = ResultsURL,
6950
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6951
     WHERE TEST_ID = nTest_id
6952
       AND PV_ID = nPv_id;
6953
 
6954
END Update_Unit_Test_Test;
6955
/
6956
 
6957
CREATE OR REPLACE PROCEDURE Update_Additional_Note ( pnNote_id IN NUMBER,
6958
													 pnPv_id IN NUMBER,
6959
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
6960
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
6961
                                                     pnUser_id IN NUMBER,
6962
                                                     outErrCode OUT NUMBER
6963
                                                    ) IS
6964
/* ---------------------------------------------------------------------------
6965
    Version: 3.0.1
6966
   --------------------------------------------------------------------------- */
6967
 
6968
    newID NUMBER;
6969
 
6970
    /* Disallow duplicate Note Titles */
6971
	CURSOR an_duplicate_cur IS
6972
        SELECT COUNT(*) AS cnt_note
6973
          FROM ADDITIONAL_NOTES
6974
         WHERE pv_id = pnPv_id
6975
           AND note_id != pnNote_id
6976
           AND note_title = psNote_title;
6977
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
6978
 
6979
BEGIN
6980
	outErrCode := -1;		-- Set default return error code to ERROR state
6981
 
6982
	OPEN an_duplicate_cur;
6983
    FETCH an_duplicate_cur INTO an_duplicate_rec;
6984
 
6985
    IF an_duplicate_rec.cnt_note < 1
6986
    THEN
6987
		--- Update Additional Note ---
6988
	    UPDATE ADDITIONAL_NOTES SET
6989
		       note_title = psNote_title,
6990
		       note_body = psNote_body,
6991
		       mod_date = Ora_Sysdate,
6992
		       mod_user = pnUser_id
6993
         WHERE note_id = pnNote_id
6994
           AND pv_id = pnPv_id;
6995
		outErrCode := 0;		-- Set return to SUCCESS
6996
	END IF;
6997
 
6998
	CLOSE an_duplicate_cur;
6999
END Update_Additional_Note;
7000
/
7001
 
7002
CREATE OR REPLACE FUNCTION GET_V_EXT (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
7003
 
7004
/* ---------------------------------------------------------------------------
7005
    Version: 3.0.0
7006
   --------------------------------------------------------------------------- */
7007
 
7008
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
7009
    lastDot NUMBER;
7010
 
7011
BEGIN
7012
    lastDot := INSTR (SSpkg_version, '.', -1);
7013
 
7014
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
7015
    THEN
7016
        -- YES dot separator found --
7017
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
7018
 
7019
        IF IS_VERSION_EXTENSION ( SSV_EXT )
7020
        THEN
7021
            RETURN SSV_EXT;
7022
        ELSE
7023
            RETURN NULL;
7024
        END IF;
7025
 
7026
    ELSE
7027
        -- NO dot separator found --
7028
        RETURN NULL;
7029
    END IF;
7030
 
7031
END GET_V_EXT;
7032
/
7033
 
7034
CREATE OR REPLACE PROCEDURE Update_Runtime_Dependency ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7035
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7036
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7037
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7038
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7039
													    NNuser_id IN NUMBER ) IS
7040
/* ---------------------------------------------------------------------------
7041
    Version: 3.0.1
7042
   --------------------------------------------------------------------------- */
7043
 
7044
    retRTD_ID	NUMBER;
7045
	CURSOR rtd_cur IS
7046
	    SELECT pv.pkg_version, pkg.pkg_name
7047
		  FROM runtime_dependencies rtd,
7048
		       package_versions pv,
7049
			   packages pkg
7050
		 WHERE rtd.rtd_id = pv.pv_id
7051
		   AND pv.pkg_id = pkg.pkg_id
7052
		   AND rtd.pv_id = NNpv_id
7053
		   AND rtd.rtd_id = NNrtd_id;
7054
	   rtd_rec rtd_cur%ROWTYPE;
7055
 
7056
	CURSOR old_rtd_cur IS
7057
	    SELECT pv.pv_id
7058
		  FROM package_versions pv
7059
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7060
		 	   			 	    FROM package_versions rtdpv
7061
							   WHERE rtdpv.pv_id = NNrtd_id )
7062
		   AND pv.pkg_version = SSrtd_version;
7063
	old_rtd_rec old_rtd_cur%ROWTYPE;
7064
 
7065
 
7066
BEGIN
7067
 
7068
    -- Get current runtime dependency details
7069
	OPEN rtd_cur;
7070
    FETCH rtd_cur INTO rtd_rec;
7071
 
7072
 
7073
 
7074
 
7075
	IF rtd_rec.pkg_version != SSrtd_version THEN
7076
           -- Version has changed, hence create new runtime dependency --
7077
	    /* NOTE: You must create new version as updating just a version will affect
7078
		        all packages using this runtime dependency and user does not expect that.
7079
		        It is safer to create new version */
7080
		OPEN old_rtd_cur;
7081
		FETCH old_rtd_cur INTO old_rtd_rec;
7082
 
7083
 
7084
		IF old_rtd_cur%NOTFOUND
7085
		THEN
7086
			-- Version not found, hence Create New version --
7087
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7088
 
7089
			-- Update runtime dependency table --
7090
			UPDATE runtime_dependencies SET
7091
				   rtd_id = retRTD_ID,
7092
				   rtd_url = SSrtd_url,
7093
				   rtd_comments = SSrtd_comments
7094
			 WHERE pv_id = NNpv_id
7095
			   AND rtd_id = NNrtd_id;
7096
 
7097
		ELSE
7098
			-- Update runtime dependency table --
7099
			UPDATE runtime_dependencies SET
7100
				   rtd_id = old_rtd_rec.pv_id,
7101
				   rtd_url = SSrtd_url,
7102
				   rtd_comments = SSrtd_comments
7103
			 WHERE pv_id = NNpv_id
7104
			   AND rtd_id = NNrtd_id;
7105
 
7106
		END IF;
7107
 
7108
 
7109
		CLOSE old_rtd_cur;
7110
 
7111
	ELSE
7112
		--  Version has not changed, hence update everithing except	version --
7113
		UPDATE runtime_dependencies SET
7114
			   rtd_url = SSrtd_url,
7115
			   rtd_comments = SSrtd_comments
7116
		 WHERE pv_id = NNpv_id
7117
		   AND rtd_id = NNrtd_id;
7118
 
7119
 
7120
 
7121
	END IF;
7122
 
7123
 
7124
	CLOSE rtd_cur;
7125
 
7126
END Update_Runtime_Dependency;
7127
/
7128
 
7129
CREATE OR REPLACE PROCEDURE                 UPDATE_MISC_VIEW IS
7130
/******************************************************************************
7131
   NAME:       UPDATE_MISC_VIEW
7132
   PURPOSE:    
7133
 
7134
   REVISIONS:
7135
   Ver        Date        Author           Description
7136
   ---------  ----------  ---------------  ------------------------------------
7137
   1.0        16/03/2007          1. Created this procedure.
7138
 
7139
   NOTES:
7140
 
7141
   Automatically available Auto Replace Keywords:
7142
      Object Name:     UPDATE_MISC_VIEW
7143
      Sysdate:         16/03/2007
7144
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7145
      Username:         (set in TOAD Options, Procedure Editor)
7146
      Table Name:       (set in the "New PL/SQL Object" dialog)
7147
 
7148
******************************************************************************/
7149
   CURSOR view_cur /*Create a record set to store the ripple data*/
7150
   IS
7151
   	 SELECT pkg.pkg_id, rc.base_view_id 
7152
	 FROM package_versions pv, packages pkg, release_content rc
7153
	 where rc.rtag_id = 2362
7154
	 and rc.pv_id = pv.pv_id
7155
	 and pv.pkg_id = pkg.pkg_id;
7156
   view_rec   view_cur%ROWTYPE;
7157
 
7158
 
7159
 
7160
BEGIN
7161
   OPEN view_cur;
7162
 
7163
   FETCH view_cur
7164
    INTO view_rec;
7165
 
7166
   WHILE view_cur%FOUND
7167
   LOOP
7168
 
7169
 
7170
	   update release_content
7171
	   set base_view_id = view_rec.base_view_id
7172
	   where rtag_id = 8027
7173
	   and pv_id IN 
7174
	   (
7175
	   	select pv.pv_id from release_content rc, package_versions pv
7176
		where rc.rtag_id = 8027
7177
		and pv.pv_id = rc.pv_id
7178
		and pv.pkg_id = view_rec.pkg_id 
7179
 
7180
	   );
7181
 
7182
 
7183
 
7184
 
7185
 
7186
 
7187
 
7188
 
7189
 
7190
   FETCH view_cur
7191
   		 INTO view_rec;
7192
   END LOOP;	 
7193
 
7194
 
7195
 
7196
 
7197
 
7198
END UPDATE_MISC_VIEW;
7199
/
7200
 
7201
CREATE OR REPLACE PACKAGE PK_WORK_IN_PROGRESS IS
7202
/*
7203
------------------------------
7204
||  Last Modified:  S.Vukovic
7205
||  Modified Date:  2/May/2005
7206
||  Spec Version:   1.0
7207
------------------------------
7208
*/
7209
 
7210
	TYPE typeCur IS REF CURSOR;
7211
 
7212
    /*================================================================================================*/
7213
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7214
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7215
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
7216
 
7217
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
7218
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
7219
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
7220
	/*================================================================================================*/
7221
 
7222
END PK_WORK_IN_PROGRESS;
7223
/
7224
 
7225
CREATE OR REPLACE PROCEDURE level_one_conflicts (
7226
   nnrtag_id       IN   NUMBER,
7227
   nnsession_num   IN   NUMBER
7228
)
7229
IS
7230
/* ---------------------------------------------------------------------------
7231
    Version: 3.0.0
7232
   --------------------------------------------------------------------------- */
7233
BEGIN
7234
   /* ---------  LEVEL 1 CONFILCTS -----------
7235
   || Following states are used:
7236
   || 0 -> NOT FOUND
7237
   || 1 -> MAJOR
7238
   || 2 -> MINOR MINOR
7239
   */
7240
   INSERT INTO temp_env_states
7241
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
7242
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
7243
                      DECODE (frc.v_nmm,
7244
                              NULL, 0,
7245
                              errpv.v_nmm, DECODE (frc.v_mm,
7246
                                                   errpv.v_mm, NULL,
7247
                                                   2
7248
                                                  ),
7249
                              1
7250
                             ) AS MESSAGE
7251
                 FROM (
7252
                       /* Full Release Contents used for reference*/
7253
                       SELECT rpv.pkg_id,
7254
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
7255
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
7256
                         FROM release_content rel, package_versions rpv
7257
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
7258
                      (
7259
                       /* DPV_IDs not fount in release*/
7260
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
7261
                         FROM package_dependencies dep
7262
                        WHERE dep.pv_id IN (SELECT pv_id
7263
                                              FROM release_content
7264
                                             WHERE rtag_id = nnrtag_id)
7265
                          AND NOT dep.dpv_id IN (SELECT pv_id
7266
                                                   FROM release_content
7267
                                                  WHERE rtag_id = nnrtag_id)
7268
                       MINUS
7269
                       /* MINUS Dependencies to be ignored */
7270
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
7271
                         FROM ignore_warnings igw
7272
                        WHERE rtag_id = nnrtag_id) err,
7273
                      package_versions errpkg,
7274
                      package_versions errpv
7275
                WHERE err.err_dpv = errpv.pv_id
7276
                  AND errpv.pkg_id = frc.pkg_id(+)
7277
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
7278
                  AND err.pv_id = errpkg.pv_id;
7279
END level_one_conflicts;
7280
/
7281
 
7282
CREATE OR REPLACE PROCEDURE CLONED_PROCESSES
7283
IS
7284
 
7285
proc_id NUMBER;
7286
/******************************************************************************
7287
   NAME:       DELETE_DO_NOT_RIPPLE
7288
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7289
               IS RELEASED
7290
 
7291
   REVISIONS:
7292
   Ver        Date        Author           Description
7293
   ---------  ----------  ---------------  ------------------------------------
7294
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7295
 
7296
   NOTES:
7297
 
7298
   Automatically available Auto Replace Keywords:
7299
      Object Name:     DELETE_DO_NOT_RIPPLE
7300
      Sysdate:         21/04/2006
7301
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7302
      Username:         (set in TOAD Options, Procedure Editor)
7303
      Table Name:       (set in the "New PL/SQL Object" dialog)
7304
 
7305
******************************************************************************/
7306
   CURSOR ripple_cur
7307
   IS
7308
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
7309
 
7310
   ripple_rec   ripple_cur%ROWTYPE;
7311
BEGIN
7312
   OPEN ripple_cur;
7313
 
7314
   FETCH ripple_cur
7315
    INTO ripple_rec;
7316
 
7317
   WHILE ripple_cur%FOUND
7318
   LOOP
7319
 
7320
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
7321
 
7322
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
7323
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
7324
 
7325
      FETCH ripple_cur
7326
       INTO ripple_rec;
7327
   END LOOP;
7328
END CLONED_PROCESSES;
7329
/
7330
 
7331
CREATE OR REPLACE PACKAGE pk_package_Test
7332
IS
7333
/*
7334
------------------------------
7335
||  Last Modified:  Rupesh Solanki
7336
||  Modified Date:  18/05/2006
7337
||
7338
------------------------------
7339
*/
7340
   TYPE typecur IS REF CURSOR;
7341
 
7342
/*================================================================================================*/
7343
   PROCEDURE new_version (
7344
      nlastpvid                   IN       NUMBER,
7345
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7346
      cbuildtype                  IN       CHAR,
7347
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7348
      nrtagid                     IN       NUMBER,
7349
      nuserid                     IN       NUMBER,
7350
      enumissues_state_imported   IN       NUMBER,
7351
      returnpvid                  OUT      NUMBER
7352
   );
7353
 
7354
   PROCEDURE change_state (
7355
      pvid       IN   NUMBER,
7356
      newstate   IN   package_versions.dlocked%TYPE,
7357
      userid     IN   NUMBER
7358
   );
7359
 
7360
   PROCEDURE new_patch (
7361
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
7362
      nparentpvid        IN       NUMBER,
7363
      spatchidlist       IN       VARCHAR2,
7364
      nuserid            IN       NUMBER,
7365
      returnpatchid      OUT      NUMBER
7366
   );
7367
 
7368
   PROCEDURE obsolete_patch (
7369
      patchid            IN   NUMBER,
7370
      isobsolete         IN   CHAR,
7371
      obsoletecomments   IN   VARCHAR2,
7372
      userid             IN   NUMBER
7373
   );
7374
 
7375
   PROCEDURE obsolete_patches (
7376
      spatchidlist       IN   VARCHAR2,
7377
      isobsolete         IN   CHAR,
7378
      obsoletecomments   IN   VARCHAR2,
7379
      userid             IN   NUMBER
7380
   );
7381
 
7382
   PROCEDURE destroy_package (
7383
      pvid               IN       NUMBER,
7384
      overridewarnings   IN       CHAR DEFAULT 'N',
7385
      problemstring      OUT      VARCHAR2
7386
   );
7387
 
7388
   PROCEDURE add_process (
7389
      nprocid         IN   processes.proc_id%TYPE,
7390
      shealthtag      IN   processes.proc_name%TYPE,
7391
      sprocdesc       IN   processes.proc_description%TYPE,
7392
      scmdinterface   IN   processes.run_as%TYPE,
7393
      spkgowner       IN   processes.pkg_owner%TYPE,
7394
      sisinterface    IN   processes.is_interface%TYPE,
7395
      npvid           IN   package_processes.pv_id%TYPE,
7396
      nuserid         IN   NUMBER
7397
   );
7398
 
7399
   PROCEDURE add_package_process (
7400
      nprocidlist   IN   VARCHAR2,
7401
      npvid         IN   package_processes.pv_id%TYPE,
7402
      nuserid       IN   NUMBER
7403
   );
7404
 
7405
 
7406
 
7407
   PROCEDURE remove_process (
7408
      nprocid   IN   package_processes.proc_id%TYPE,
7409
      npvid     IN   package_processes.pv_id%TYPE,
7410
      nuserid   IN   NUMBER
7411
   );
7412
 
7413
   PROCEDURE move_package (
7414
   	  npvid  			  IN package_versions.pv_id%TYPE,
7415
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
7416
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
7417
	  nuserid			  IN NUMBER		 
7418
   ); 
7419
 
7420
PROCEDURE modify_product_state (
7421
   	  npvid IN package_versions.pv_id%TYPE,
7422
	  nstateid IN product_states.state_id%TYPE,
7423
	  nuserid IN NUMBER
7424
   );
7425
/*================================================================================================*/
7426
END pk_package_Test;
7427
/
7428
 
7429
CREATE OR REPLACE PROCEDURE Shift_Install_Order ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
7430
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
7431
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
7432
/* ---------------------------------------------------------------------------
7433
    Version: 3.0
7434
   --------------------------------------------------------------------------- */
7435
 
7436
currInstallOrder NUMBER;
7437
FromInstallOrder NUMBER;
7438
 
7439
BEGIN
7440
 
7441
	 -- Get Current Install Order
7442
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
7443
       FROM PACKAGE_PATCHES pp
7444
      WHERE pp.PV_ID = nPvId
7445
        AND pp.PATCH_ID = nPatchId;
7446
 
7447
 
7448
	 IF currInstallOrder > nToInstallOrder
7449
	 THEN
7450
 
7451
		FromInstallOrder := nToInstallOrder;
7452
 
7453
	    -- Shift others Up
7454
		UPDATE PACKAGE_PATCHES pp SET
7455
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
7456
		 WHERE pp.PV_ID = nPvId
7457
           AND pp.PATCH_ID != nPatchId
7458
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
7459
 
7460
 
7461
	 ELSIF currInstallOrder < nToInstallOrder
7462
	 THEN
7463
 
7464
		FromInstallOrder := currInstallOrder + 1;
7465
 
7466
		-- Shift others Down
7467
        UPDATE PACKAGE_PATCHES pp SET
7468
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
7469
		 WHERE pp.PV_ID = nPvId
7470
           AND pp.PATCH_ID != nPatchId
7471
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
7472
 
7473
	 END IF;
7474
 
7475
 
7476
	 -- Move Patch to new install order
7477
     UPDATE PACKAGE_PATCHES pp SET
7478
		    pp.INSTALL_ORDER = nToInstallOrder
7479
	  WHERE pp.PV_ID = nPvId
7480
	    AND pp.PATCH_ID = nPatchId;
7481
 
7482
 
7483
END Shift_Install_Order;
7484
/
7485
 
7486
CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEAN
7487
IS
7488
   temp_num NUMBER;
7489
/* ---------------------------------------------------------------------------
7490
    Version: 1.0.0
7491
   --------------------------------------------------------------------------- */
7492
BEGIN
7493
   temp_num := TO_NUMBER(p_val);
7494
   RETURN true;
7495
EXCEPTION WHEN VALUE_ERROR THEN
7496
   RETURN false;
7497
END IS_NUMBER;
7498
/
7499
 
7500
CREATE OR REPLACE PROCEDURE Basic_Clone ( nFROMpv_id IN NUMBER,
7501
										  nTOpv_id IN NUMBER,
7502
                                          nRtag_id IN NUMBER,
7503
                                          nUser_id IN NUMBER,
7504
                                          nTOpkg_id IN NUMBER DEFAULT NULL,
7505
                                          enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
7506
/* ---------------------------------------------------------------------------
7507
    Version: 3.5
7508
   --------------------------------------------------------------------------- */
7509
 
7510
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
7511
 
7512
BEGIN
7513
 
7514
------------------------------------- Clone Dependencies ---------------------------------------------------
7515
	IF NOT nRtag_id IS NULL
7516
    THEN
7517
		-- Auto Update Dependencies --
7518
		INSERT INTO PACKAGE_DEPENDENCIES
7519
		    SELECT nTOpv_id AS pv_id,
7520
		           DECODE(nUser_id,
7521
		                  frc.modifier_id,
7522
		                  frc.pv_id,
7523
		                  DECODE(frc.dlocked,
7524
		                         'Y',
7525
		                         frc.pv_id,
7526
		                         dep.dpv_id)
7527
		                  ) AS dpv_id,
7528
		           nTOpkg_id AS pkg_id,
7529
		           dep.dpkg_id,
7530
		           dep.build_type,
7531
				   dep.display_order
7532
		      FROM PACKAGE_DEPENDENCIES dep,
7533
		           PACKAGE_VERSIONS pv,
7534
		           (
7535
		           /* Full Release Contents used for reference*/
7536
		           SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
7537
		           FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
7538
		           WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
7539
		           ) frc
7540
		     WHERE dep.pv_id = nFROMpv_id
7541
		       AND dep.dpv_id = pv.pv_id
7542
		       AND pv.pkg_id = frc.pkg_id(+)
7543
		       AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
7544
 
7545
	ELSE
7546
		-- Clone Dependencies --
7547
		INSERT INTO PACKAGE_DEPENDENCIES
7548
		    SELECT nTOpv_id         AS pv_id,
7549
		           dep.dpv_id,
7550
		           nTOpkg_id        AS pkg_id,
7551
		           dep.dpkg_id,
7552
		           dep.build_type,
7553
				   dep.display_order
7554
		      FROM PACKAGE_DEPENDENCIES dep
7555
		     WHERE dep.pv_id = nFROMpv_id;
7556
 
7557
	END IF;
7558
 
7559
----------------------------------------- Clone Issues -------------------------------------------------------
7560
	IF enumISSUES_STATE_IMPORTED IS NULL
7561
	THEN
7562
        /* All Issues */
7563
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7564
	         SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7565
	           FROM CQ_ISSUES
7566
              WHERE pv_id = nFROMpv_id;
7567
	ELSE
7568
    	/* Outstanding Issues Only */
7569
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7570
	        SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7571
	          FROM CQ_ISSUES
7572
             WHERE pv_id = nFROMpv_id
7573
               AND iss_state = enumISSUES_STATE_IMPORTED;
7574
	END IF;
7575
 
7576
 
7577
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
7578
	INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
7579
	    SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
7580
	    FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
7581
 
7582
 
7583
--------------------------------------- Clone Additional Notes ------------------------------------------------
7584
	INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
7585
    	 SELECT an.NOTE_ID,
7586
                nTOpv_id AS PV_ID,
7587
                an.NOTE_TITLE,
7588
                an.NOTE_BODY,
7589
                an.MOD_DATE,
7590
                an.MOD_USER
7591
           FROM ADDITIONAL_NOTES an
7592
          WHERE an.PV_ID = nFROMpv_id;
7593
 
7594
 
7595
-------------------------------------------- Clone Unit Tests -------------------------------------------------
7596
	-- Clone only Automatic unit tests --
7597
	INSERT INTO UNIT_TESTS (
7598
							TEST_ID,
7599
							PV_ID,
7600
							TEST_TYPES_FK,
7601
							TEST_SUMMARY,
7602
							COMPLETION_DATE,
7603
							COMPLETED_BY,
7604
							RESULTS_URL,
7605
							RESULTS_ATTACHMENT_NAME,
7606
							NUMOF_TEST
7607
							)
7608
    	 SELECT ut.TEST_ID,
7609
                nTOpv_id AS PV_ID,
7610
                ut.TEST_TYPES_FK,
7611
                ut.TEST_SUMMARY,
7612
                Ora_Sysdate AS COMPLETION_DATE,
7613
                nUser_id AS COMPLETED_BY,
7614
                ut.RESULTS_URL,
7615
				ut.RESULTS_ATTACHMENT_NAME,
7616
				ut.NUMOF_TEST
7617
           FROM UNIT_TESTS ut
7618
          WHERE ut.PV_ID = nFROMpv_id
7619
            AND ut.TEST_TYPES_FK IN ( 5, 7 );
7620
 
7621
	-- Clone only Interactive Unit Tests --
7622
	INSERT INTO UNIT_TESTS (
7623
		   				    TEST_ID, 
7624
							PV_ID,
7625
							TEST_TYPES_FK,
7626
							TEST_SUMMARY
7627
							)
7628
		SELECT ut.TEST_ID, 
7629
			   nTOpv_id AS PV_ID,
7630
			   ut.TEST_TYPES_FK,
7631
			   ut.TEST_SUMMARY
7632
		  FROM UNIT_TESTS ut
7633
		 WHERE ut.PV_ID = nFROMpv_id
7634
		   AND ut.TEST_TYPES_FK IN (6);
7635
 
7636
 
7637
-------------------------------------------- Clone Package Documents ------------------------------------------
7638
	INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
7639
    	 SELECT nTOpv_id AS PV_ID,
7640
		 		pd.test_id,
7641
				pd.doc_num,
7642
				pd.doc_id,
7643
                pd.IS_LATEST
7644
           FROM PACKAGE_DOCUMENTS pd
7645
          WHERE pd.PV_ID = nFROMpv_id;
7646
 
7647
-------------------------------------------- Clone Build Environments -----------------------------------------
7648
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
7649
	SELECT nTOpv_id AS PV_ID,
7650
		   pkgbe.BE_ID,
7651
		   pkgbe.BUILD_TYPE
7652
	  FROM PACKAGE_BUILD_ENV pkgbe
7653
	 WHERE pkgbe.PV_ID = nFROMpv_id;
7654
---------------------------------------------Clone Package Build Info------------------------------------------
7655
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
7656
	SELECT nTOpv_id AS PV_ID, 
7657
		   pkgbinfo.BM_ID,
7658
		   pkgbinfo.BSA_ID
7659
	  FROM PACKAGE_BUILD_INFO pkgbinfo
7660
	 WHERE pkgbinfo.PV_ID = nFROMpv_id;
7661
---------------------------------------------Clone Package Version Processes-----------------------------------
7662
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
7663
	SELECT nTOpv_id AS PV_ID,
7664
		   pp.PROC_ID
7665
	  FROM PACKAGE_PROCESSES pp
7666
	  WHERE pp.PV_ID = nFROMpv_id;		   
7667
---------------------------------------------------------------------------------------------------------------
7668
 
7669
	/* LOG ACTION */
7670
    SELECT pv.PKG_VERSION INTO FromVersion
7671
      FROM PACKAGE_VERSIONS pv
7672
     WHERE pv.PV_ID = nFROMpv_id;
7673
 
7674
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
7675
    			 'Details cloned from: '|| FromVersion );
7676
 
7677
---------------------------------------------------------------------------------------------------------------
7678
 
7679
END Basic_Clone;
7680
/
7681
 
7682
CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
7683
/* ---------------------------------------------------------------------------
7684
    Version: 3.0.0
7685
   --------------------------------------------------------------------------- */
7686
 
7687
 
7688
BEGIN
7689
 
7690
	 --- Delete From RELEASE_COMPONENTS
7691
	 DELETE FROM RELEASE_COMPONENTS
7692
	 WHERE PV_ID = nPvId;
7693
 
7694
END Remove_Components;
7695
/
7696
 
7697
CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version   ( nPv_id 				IN NUMBER,
7698
														  sSyncRtagsInList		IN VARCHAR2,
7699
				                                          nUser_id 				IN NUMBER ) IS
7700
/* ---------------------------------------------------------------------------
7701
    Version: 3.0.0
7702
   --------------------------------------------------------------------------- */
7703
 
7704
	CURSOR sync_rtags_cur IS
7705
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
7706
		  FROM release_content rc,
7707
		  	   package_versions pv,
7708
		       package_versions opv
7709
		 WHERE rc.pv_id = pv.pv_id
7710
		   AND opv.pkg_id = pv.pkg_id
7711
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
7712
		   AND opv.pv_id = nPv_id
7713
		   AND rtag_id IN ( SELECT *
7714
		   	   		   	      FROM THE (
7715
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
7716
					       		   	    FROM dual
7717
									   )
7718
						  );
7719
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
7720
 
7721
BEGIN
7722
 
7723
	OPEN sync_rtags_cur;
7724
	FETCH sync_rtags_cur INTO sync_rtags_rec;
7725
 
7726
	WHILE sync_rtags_cur%FOUND
7727
	LOOP
7728
		DELETE FROM RELEASE_CONTENT
7729
		 WHERE rtag_id = sync_rtags_rec.rtag_id
7730
	       AND pv_id = sync_rtags_rec.pv_id;
7731
 
7732
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
7733
	   		   VALUES ( sync_rtags_rec.rtag_id,
7734
		       		  	nPv_id,
7735
						sync_rtags_rec.BASE_VIEW_ID,
7736
	           			Ora_Sysdate,
7737
	           			nUser_id,
7738
 
7739
	      	   		   );
7740
 
7741
-- 		UPDATE RELEASE_CONTENT
7742
-- 	       SET pv_id = nPv_id,
7743
-- 	           insert_stamp = Ora_Sysdate,
7744
-- 	           insertor_id = nUser_id
7745
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
7746
-- 	       AND pv_id = sync_rtags_rec.pv_id;
7747
 
7748
		FETCH sync_rtags_cur INTO sync_rtags_rec;
7749
	END LOOP;
7750
 
7751
	CLOSE sync_rtags_cur;
7752
 
7753
END Sync_Projects_New_Version;
7754
/
7755
 
7756
CREATE OR REPLACE PROCEDURE Set_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7757
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7758
											 nUserId IN NUMBER ) IS
7759
/* ---------------------------------------------------------------------------
7760
    Version: 4.0
7761
   --------------------------------------------------------------------------- */
7762
 
7763
BEGIN
7764
 
7765
    -- Set Advisory Ripple Package
7766
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
7767
	VALUES (nRtagId, nPvId);
7768
 
7769
    /* LOG ACTION */
7770
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
7771
 
7772
	/*Rebuild_Environment(nRtagId);*/
7773
 
7774
END Set_Advisory_Ripple;
7775
/
7776
 
7777
CREATE OR REPLACE PACKAGE pk_project IS
7778
/*
7779
------------------------------
7780
||  Last Modified:  J.Tweddle
7781
||  Modified Date:  23/Aug/2007
7782
||  Spec Version:   1.0
7783
------------------------------
7784
*/
7785
 
7786
    TYPE typecur IS REF CURSOR;
7787
 
7788
    /*------------------------------------------------------------------------*/
7789
    PROCEDURE update_base_url (
7790
        nprojid   IN  projects.proj_id%TYPE,
7791
        sbaseurl  IN  VARCHAR2
7792
    );
7793
    /*------------------------------------------------------------------------*/
7794
 
7795
END pk_project;
7796
/
7797
 
7798
CREATE OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT  (
7799
  sender      IN VARCHAR2,
7800
  recipient   IN VARCHAR2,
7801
  ccrecipient IN VARCHAR2,
7802
  subject     IN VARCHAR2,
7803
  message     IN VARCHAR2
7804
  ) IS
7805
 
7806
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
7807
  connection utl_smtp.connection;
7808
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
7809
  header VARCHAR2(1000);
7810
 
7811
BEGIN
7812
 
7813
  --
7814
  -- Start the connection.
7815
  --
7816
  connection := utl_smtp.open_connection(mailhost,25);
7817
 
7818
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
7819
     'From: '||sender||''||crlf||
7820
  'Subject: '||subject||crlf||
7821
       'To: '||recipient||crlf||
7822
       'CC: '||ccrecipient;
7823
 
7824
  --
7825
  -- Handshake with the SMTP server
7826
  --
7827
  utl_smtp.helo(connection, mailhost);
7828
  utl_smtp.mail(connection, sender);
7829
  utl_smtp.rcpt(connection, recipient);
7830
  utl_smtp.rcpt(connection, ccrecipient);
7831
  utl_smtp.open_data(connection);
7832
  --
7833
  -- Write the header
7834
  --
7835
  utl_smtp.write_data(connection, header);
7836
  --
7837
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
7838
  --
7839
  utl_smtp.write_data(connection, crlf ||message);
7840
  utl_smtp.close_data(connection);
7841
  utl_smtp.quit(connection);
7842
 
7843
EXCEPTION
7844
  WHEN UTL_SMTP.INVALID_OPERATION THEN
7845
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
7846
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
7847
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
7848
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
7849
    dbms_output.put_line(' Errors in code for SMTP transaction.');
7850
 
7851
END RELEASE_MANAGER_MAILOUT;
7852
/
7853
 
7854
CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,
7855
	   	  		  					     retSessionNum OUT NUMBER ) IS
7856
 
7857
/* ---------------------------------------------------------------------------
7858
    Version: 3.0.0
7859
   --------------------------------------------------------------------------- */
7860
    rowCnt 			NUMBER := 0;						-- Iterations counter
7861
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
7862
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
7863
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
7864
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
7865
    sessionNum 		NUMBER;
7866
	levelNum		NUMBER;
7867
 
7868
BEGIN
7869
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
7870
 
7871
	/*
7872
	||	   Start UP THE TREE
7873
	*/
7874
 
7875
 
7876
	/* Packages with no dependencies */    
7877
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7878
		SELECT sessionNum AS SESSION_NUM,
7879
			   iteration AS LEVEL_NUM,
7880
			   UP_THE_TREE AS DIRECTION,
7881
			   rc.pv_id, pv.pkg_id, pv.v_ext
7882
		  FROM release_content rc,
7883
		  	   package_versions pv
7884
		 WHERE rc.rtag_id = nRtag_id
7885
		   AND rc.pv_id = pv.pv_id
7886
		 MINUS
7887
		SELECT sessionNum AS SESSION_NUM, 
7888
			   iteration AS LEVEL_NUM,
7889
			   UP_THE_TREE AS DIRECTION,
7890
			   dep.pv_id, pv.pkg_id, pv.v_ext
7891
		  FROM package_dependencies dep,
7892
		  	   package_versions pv
7893
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
7894
		   AND dep.pv_id = pv.pv_id;
7895
 
7896
 
7897
	/* Browse UP the build tree */	   
7898
	iteration := iteration + 1;
7899
    LOOP
7900
 
7901
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7902
			SELECT DISTINCT 
7903
			       sessionNum AS SESSION_NUM,
7904
			       iteration AS LEVEL_NUM,
7905
				   UP_THE_TREE AS DIRECTION, 
7906
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7907
			  FROM (  
7908
			        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
7909
			          FROM package_dependencies dep,
7910
			               release_content rc,
7911
						   package_versions pv,
7912
						   package_versions dpv
7913
			         WHERE dep.pv_id = rc.pv_id
7914
			           AND rc.rtag_id = nRtag_id
7915
					   AND dep.pv_id = pv.pv_id
7916
					   AND dep.dpv_id = dpv.pv_id
7917
					) rdep,
7918
					temp_tree_browse ttb
7919
			 WHERE rdep.dpkg_id  = ttb.pkg_id
7920
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
7921
			   AND ttb.SESSION_NUM = sessionNum
7922
			   AND ttb.LEVEL_NUM = iteration - 1	
7923
			MINUS
7924
			/* Packages with all depencencies NOT matched */  
7925
			SELECT DISTINCT 
7926
			       sessionNum AS SESSION_NUM,
7927
			       iteration AS LEVEL_NUM, 
7928
				   UP_THE_TREE AS DIRECTION,
7929
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7930
			  FROM (  
7931
			        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
7932
			          FROM package_dependencies dep,
7933
			               release_content rc,
7934
						   package_versions pv,
7935
						   package_versions dpv
7936
			         WHERE dep.pv_id = rc.pv_id
7937
			           AND rc.rtag_id = nRtag_id
7938
					   AND dep.pv_id = pv.pv_id
7939
					   AND dep.dpv_id = dpv.pv_id
7940
					) rdep,
7941
					(
7942
					 SELECT tb.*
7943
					   FROM temp_tree_browse tb
7944
					  WHERE tb.SESSION_NUM = sessionNum
7945
					) ttb
7946
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
7947
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
7948
			   AND ttb.SESSION_NUM IS NULL;
7949
 
7950
		rowCnt := SQL%ROWCOUNT;
7951
		IF rowCnt > 0 THEN
7952
           iteration := iteration + 1;
7953
		END IF;
7954
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
7955
    END LOOP;
7956
 
7957
	/*---------------------------------------------------------------------------------------------------------------------*/
7958
 
7959
	/*     Check for unresolved dependencies
7960
	||  
7961
	*/
7962
	/* UNRESOLVED */
7963
	 SELECT COUNT(*) INTO rowCnt
7964
	   FROM (
7965
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
7966
			  FROM release_content rc,
7967
			  	   package_versions pv
7968
			 WHERE rc.rtag_id = nRtag_id
7969
			   AND rc.pv_id = pv.pv_id	   
7970
			MINUS
7971
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
7972
			  FROM temp_tree_browse ttb
7973
			 WHERE ttb.session_num = sessionNum
7974
			);
7975
 
7976
 
7977
 
7978
	 IF rowCnt > 0 
7979
	 THEN
7980
	 	 /*     Circular dependencies detected.
7981
		 ||     Try to resolve build order from the top now.
7982
		 ||		Start DOWN THE TREE
7983
		 */
7984
 
7985
		iteration := 0; 
7986
		 /* Top Level packages */	
7987
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
7988
			SELECT sessionNum AS SESSION_NUM,
7989
			       iteration AS LEVEL_NUM,
7990
				   DOWN_THE_TREE AS DIRECTION,
7991
				   pv.pv_id, pv.pkg_id, pv.v_ext
7992
			  FROM (		   
7993
					/* Packages no one depends on ( Top level packages )*/
7994
					( 
7995
					/* All parents*/ 
7996
					SELECT pv.pkg_id, pv.v_ext
7997
			          FROM package_dependencies dep,
7998
			               release_content rc,
7999
						   package_versions pv
8000
			         WHERE dep.pv_id = rc.pv_id
8001
			           AND rc.rtag_id = nRtag_id
8002
					   AND dep.pv_id = pv.pv_id
8003
					 MINUS
8004
					 /* All children */
8005
					SELECT dpv.pkg_id, dpv.v_ext
8006
			          FROM package_dependencies dep,
8007
			               release_content rc,
8008
						   package_versions dpv
8009
			         WHERE dep.pv_id = rc.pv_id
8010
			           AND rc.rtag_id = nRtag_id
8011
					   AND dep.dpv_id = dpv.pv_id
8012
					 ) 
8013
					 MINUS
8014
					/* Packages with resolved dependencies from UP THE TREE */ 
8015
					SELECT ttb.pkg_id, ttb.v_ext
8016
					  FROM temp_tree_browse ttb
8017
					 WHERE ttb.session_num = sessionNum
8018
				  ) tpkg,
8019
				  package_versions pv,
8020
				  release_content rc
8021
			WHERE rc.rtag_id = nRtag_id
8022
			  AND rc.pv_id = pv.pv_id
8023
			  AND tpkg.pkg_id = pv.pkg_id
8024
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8025
 
8026
 
8027
		 /* Keep taking packages which no one depende on */			  
8028
		 iteration := iteration - 1;  
8029
		 LOOP	  
8030
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8031
					SELECT sessionNum AS SESSION_NUM,
8032
					       iteration AS LEVEL_NUM,
8033
					       DOWN_THE_TREE AS DIRECTION,
8034
					       pv.pv_id, pv.pkg_id, pv.v_ext
8035
					  FROM (		   
8036
					 	/* All Unresolved */
8037
					 	(
8038
					 	SELECT pv.pkg_id, pv.v_ext
8039
					 	  FROM release_content rc,
8040
					 	  	   package_versions pv
8041
					 	 WHERE rc.rtag_id = nRtag_id
8042
					 	   AND rc.pv_id = pv.pv_id	   
8043
					 	MINUS
8044
					 	SELECT ttb.pkg_id, ttb.v_ext
8045
					 	  FROM temp_tree_browse ttb
8046
					 	 WHERE ttb.session_num = sessionNum
8047
					 	)
8048
					 	 MINUS
8049
					 	(  
8050
					 	 /* Children of Unresolved */  
8051
					 	SELECT dpv.pkg_id, dpv.V_EXT
8052
					 	  FROM (
8053
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8054
					 			  FROM release_content rc,
8055
					 			  	   package_versions pv
8056
					 			 WHERE rc.rtag_id = nRtag_id
8057
					 			   AND rc.pv_id = pv.pv_id	   
8058
					 			MINUS
8059
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8060
					 			  FROM temp_tree_browse ttb
8061
					 			 WHERE ttb.session_num = sessionNum
8062
					 		   ) unr,
8063
					 		   package_dependencies dep,
8064
					 		   package_versions dpv
8065
					 	 WHERE unr.pv_id = dep.pv_id
8066
					 	   AND dep.dpv_id = dpv.pv_id
8067
					 	 )  
8068
					   ) tpkg,
8069
					   package_versions pv,
8070
					   release_content rc
8071
					WHERE rc.rtag_id = nRtag_id
8072
					  AND rc.pv_id = pv.pv_id
8073
					  AND tpkg.pkg_id = pv.pkg_id
8074
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8075
 
8076
            rowCnt := SQL%ROWCOUNT;
8077
        	IF rowCnt > 0 THEN
8078
	           iteration := iteration - 1;
8079
			END IF;
8080
            EXIT WHEN (rowCnt < 1);
8081
     	END LOOP;
8082
 
8083
	 END IF;
8084
 
8085
 
8086
	/*---------------------------------------------------------------------------------------------------------------------*/
8087
 
8088
	/* 
8089
	|| 	 Save results from temp table
8090
	*/	
8091
	/* Clean up build_order table */
8092
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
8093
 
8094
	/* Save UP THE TREE */
8095
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8096
		SELECT nRtag_id AS rtag_id,
8097
			   ttb.level_num AS step_num, 
8098
			   ttb.PV_ID
8099
		  FROM temp_tree_browse ttb
8100
		 WHERE ttb.session_num = sessionNum
8101
		   AND ttb.direction = UP_THE_TREE;	
8102
 
8103
	/*Get last step_num */
8104
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
8105
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
8106
 
8107
	/* UNRESOLVED */
8108
	 SELECT COUNT(*) INTO rowCnt
8109
	   FROM (
8110
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8111
			  FROM release_content rc,
8112
			  	   package_versions pv
8113
			 WHERE rc.rtag_id = nRtag_id
8114
			   AND rc.pv_id = pv.pv_id	   
8115
			MINUS
8116
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8117
			  FROM temp_tree_browse ttb
8118
			 WHERE ttb.session_num = sessionNum
8119
			);
8120
 
8121
 
8122
	IF rowCnt > 0
8123
	THEN
8124
		/* Save unresolved packages */
8125
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
8126
		    SELECT  nRtag_id AS rtag_id,
8127
				    levelNum AS step_num, 
8128
				    upv.PV_ID,
8129
					'Y' AS UNRESOLVED
8130
			   FROM (
8131
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8132
					  FROM release_content rc,
8133
					  	   package_versions pv
8134
					 WHERE rc.rtag_id = nRtag_id
8135
					   AND rc.pv_id = pv.pv_id	   
8136
					MINUS
8137
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8138
					  FROM temp_tree_browse ttb
8139
					 WHERE ttb.session_num = sessionNum
8140
					) upv;
8141
	END IF;	
8142
 
8143
	/* Save DOWN THE TREE */
8144
	levelNum := 1000;
8145
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8146
		SELECT nRtag_id AS rtag_id,
8147
			   levelNum + ttb.level_num  AS step_num, 
8148
			   ttb.PV_ID
8149
		  FROM temp_tree_browse ttb
8150
		 WHERE ttb.session_num = sessionNum
8151
		   AND ttb.direction = DOWN_THE_TREE;
8152
 
8153
 
8154
	/*---------------------------------------------------------------------------------------------------------------------*/
8155
 
8156
	/* Clean up temp table */
8157
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
8158
 
8159
	retSessionNum := sessionNum;
8160
END Build_Tree;
8161
/
8162
 
8163
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER2 ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
8164
 
8165
/* ---------------------------------------------------------------------------
8166
    Version: 3.0.0
8167
   --------------------------------------------------------------------------- */
8168
 
8169
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
8170
	pos				   NUMBER;
8171
	in_list			   VARCHAR2(32767) := sInList || ',';
8172
 
8173
BEGIN
8174
 
8175
	IF NOT sInList IS NULL
8176
	THEN
8177
		LOOP
8178
	        EXIT WHEN in_list IS NULL;
8179
	        pos := INSTR ( in_list, ',' );
8180
	        sync_rtags.extend;
8181
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
8182
	        in_list := SUBSTR ( in_list, pos+1 );
8183
		END LOOP;
8184
	END IF;
8185
 
8186
	RETURN sync_rtags;
8187
END IN_LIST_NUMBER2;
8188
/
8189
 
8190
CREATE OR REPLACE PACKAGE pk_buildapi
8191
IS
8192
/*
8193
------------------------------
8194
||  Last Modified:  Rupesh Solanki
8195
||  Modified Date:  26/Jun/2007
8196
||  Spec Version:   3.0
8197
------------------------------
8198
*/
8199
 
8200
   /*================================================================================================*/
8201
   PROCEDURE add_product_component (
8202
      npvid           IN   NUMBER,
8203
      sosname         IN   VARCHAR2,
8204
      sorigfilepath   IN   VARCHAR2,
8205
      sfilename       IN   VARCHAR2,
8206
      sdestfilepath   IN   VARCHAR2,
8207
      nbytesize       IN   NUMBER,
8208
      scrccksum       IN   VARCHAR2
8209
   );
8210
 
8211
   PROCEDURE remove_all_product_components (
8212
      npvid     IN   NUMBER,
8213
      sosname   IN   VARCHAR2
8214
   );
8215
 
8216
/*================================================================================================*/
8217
   FUNCTION get_osid (sosname IN VARCHAR2)
8218
      RETURN NUMBER;
8219
 
8220
/*================================================================================================*/
8221
   PROCEDURE update_build_service (
8222
      sdatabaseserver   IN   VARCHAR2,
8223
      swebserver        IN   VARCHAR2,
8224
      smailserver       IN   VARCHAR2,
8225
      smailsender       IN   VARCHAR2,
8226
      sdiskspace        IN   VARCHAR2,
8227
      ssbommanagement   IN   VARCHAR2
8228
   );
8229
 
8230
/*================================================================================================*/
8231
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
8232
 
8233
/*================================================================================================*/
8234
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
8235
 
8236
/*================================================================================================*/
8237
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
8238
 
8239
/*================================================================================================*/
8240
   PROCEDURE add_daemon (
8241
      sdaemonhostname   IN   VARCHAR2,
8242
      nrtagid           IN   NUMBER,
8243
      ngbeid            IN   NUMBER,
8244
      sgbebuildfilter   IN   VARCHAR2
8245
   );
8246
 
8247
/*================================================================================================*/
8248
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
8249
 
8250
/*================================================================================================*/
8251
   PROCEDURE update_daemon (
8252
      sdaemonhostname   IN   VARCHAR2,
8253
      nrconid           IN   NUMBER,
8254
      ngbeid            IN   NUMBER,
8255
      sgbebuildfilter   IN   VARCHAR2
8256
   );
8257
 
8258
/*================================================================================================*/
8259
   PROCEDURE insert_schedule_info (
8260
      dschedulepause     IN   DATE,
8261
      dscheduleresume    IN   DATE,
8262
      crepeat            IN   VARCHAR2,
8263
      cindefinitepause   IN   VARCHAR2
8264
   );
8265
 
8266
/*================================================================================================*/
8267
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
8268
 
8269
/*================================================================================================*/
8270
   PROCEDURE set_infinite_pause;
8271
 
8272
/*================================================================================================*/
8273
   PROCEDURE set_resume;
8274
 
8275
/*================================================================================================*/
8276
   PROCEDURE delete_out_of_date_schedule;
8277
 
8278
/*================================================================================================*/
8279
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
8280
 
8281
/*================================================================================================*/
8282
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
8283
/*================================================================================================*/
8284
END pk_buildapi;
8285
/
8286
 
8287
CREATE OR REPLACE PROCEDURE Remove_Patch ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
8288
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
8289
                                           nUserId IN NUMBER ) IS
8290
/* ---------------------------------------------------------------------------
8291
    Version: 4.0
8292
   --------------------------------------------------------------------------- */
8293
 
8294
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
8295
 
8296
CURSOR curPatch IS
8297
	SELECT pp.PV_ID,
8298
		   pp.PATCH_ID,
8299
	       ROWNUM AS NEW_INSTALL_ORDER
8300
	  FROM PACKAGE_PATCHES pp
8301
	 WHERE pp.PV_ID = nPvId
8302
	ORDER BY pp.INSTALL_ORDER;
8303
recPatch curPatch%ROWTYPE;
8304
 
8305
BEGIN
8306
 
8307
	 -- Delete Patch
8308
     DELETE
8309
       FROM PACKAGE_PATCHES pp
8310
      WHERE pp.PV_ID = nPvId
8311
        AND pp.PATCH_ID = nPatchId;
8312
 
8313
 
8314
	-- Redo Install Order
8315
    OPEN curPatch;
8316
	FETCH curPatch INTO recPatch;
8317
 
8318
	WHILE curPatch%FOUND
8319
	LOOP
8320
 
8321
		UPDATE PACKAGE_PATCHES pp SET
8322
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
8323
		WHERE pp.PV_ID = nPvId
8324
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
8325
 
8326
		FETCH curPatch INTO recPatch;
8327
	END LOOP;
8328
 
8329
	CLOSE curPatch;
8330
 
8331
 
8332
 
8333
 
8334
    /* LOG ACTION */
8335
    SELECT pv.PKG_VERSION INTO PatchVersion
8336
      FROM PACKAGE_VERSIONS pv
8337
     WHERE pv.PV_ID = nPatchId;
8338
 
8339
   	Log_Action ( nPvId, 'patch_remove', nUserId,
8340
   			     'Version: '|| PatchVersion );
8341
 
8342
END Remove_Patch;
8343
/
8344
 
8345
CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
8346
/
8347
 
8348
CREATE OR REPLACE PROCEDURE Add_Component ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
8349
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
8350
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
8351
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
8352
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
8353
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
8354
                                           ) IS
8355
/* ---------------------------------------------------------------------------
8356
    Version: 3.0.0
8357
   --------------------------------------------------------------------------- */
8358
 
8359
 
8360
BEGIN
8361
 
8362
	 --- Insert into RELEASE_COMPONENTS
8363
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
8364
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
8365
 
8366
 
8367
 
8368
 
8369
END Add_Component;
8370
/
8371
 
8372
CREATE OR REPLACE PROCEDURE ole
8373
IS retval VARCHAR2(40);   
8374
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
8375
DBMS_OUTPUT.PUT_LINE(retval);
8376
/
8377
 
8378
CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,
8379
	   	  		  						 			  nViewId IN NUMBER,
8380
										 			  sUserIdList IN VARCHAR2,
8381
										 			  nUserId IN NUMBER ) IS
8382
 
8383
GroupId NUMBER;													  
8384
 
8385
 
8386
 
8387
/******************************************************************************
8388
   NAME:       UPDATE_VIEW
8389
   PURPOSE:    
8390
 
8391
   REVISIONS:
8392
   Ver        Date        Author           		Description
8393
   ---------  ----------  ---------------  ------------------------------------
8394
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
8395
 
8396
   NOTES:
8397
 
8398
   Automatically available Auto Replace Keywords:
8399
      Object Name:     UPDATE_VIEW
8400
      Sysdate:         10/04/2006
8401
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
8402
      Username:         (set in TOAD Options, Procedure Editor)
8403
      Table Name:       (set in the "New PL/SQL Object" dialog)
8404
 
8405
******************************************************************************/
8406
 
8407
BEGIN
8408
	 SELECT GROUP_EMAIL_ID into GroupId
8409
	 FROM AUTOBUILD_FAILURE
8410
	 WHERE PROJ_ID = nProjId
8411
	 AND VIEW_ID = nViewId;
8412
 
8413
	 DELETE FROM MEMBERS_GROUP
8414
	 WHERE GROUP_EMAIL_ID = GroupId
8415
	 AND USER_ID IN (
8416
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
8417
	 );
8418
 
8419
 
8420
 
8421
END REMOVE_PROJECT_VIEW_OWNER;
8422
/
8423
 
8424
CREATE OR REPLACE PROCEDURE test
8425
IS
8426
 
8427
proc_id NUMBER;
8428
/******************************************************************************
8429
   NAME:       DELETE_DO_NOT_RIPPLE
8430
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8431
               IS RELEASED
8432
 
8433
   REVISIONS:
8434
   Ver        Date        Author           Description
8435
   ---------  ----------  ---------------  ------------------------------------
8436
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8437
 
8438
   NOTES:
8439
 
8440
   Automatically available Auto Replace Keywords:
8441
      Object Name:     DELETE_DO_NOT_RIPPLE
8442
      Sysdate:         21/04/2006
8443
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8444
      Username:         (set in TOAD Options, Procedure Editor)
8445
      Table Name:       (set in the "New PL/SQL Object" dialog)
8446
 
8447
******************************************************************************/
8448
   CURSOR ripple_cur
8449
   IS
8450
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
8451
 
8452
   ripple_rec   ripple_cur%ROWTYPE;
8453
BEGIN
8454
   OPEN ripple_cur;
8455
 
8456
   FETCH ripple_cur
8457
    INTO ripple_rec;
8458
 
8459
   WHILE ripple_cur%FOUND
8460
   LOOP
8461
 
8462
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
8463
 
8464
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
8465
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
8466
 
8467
      FETCH ripple_cur
8468
       INTO ripple_rec;
8469
   END LOOP;
8470
END test;
8471
/
8472
 
8473
CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8474
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
8475
/* ---------------------------------------------------------------------------
8476
    Version: 4.0
8477
   --------------------------------------------------------------------------- */
8478
 
8479
BEGIN
8480
 
8481
    -- Unlock Package
8482
    UPDATE RELEASE_CONTENT rc SET
8483
    	rc.PKG_STATE = 0
8484
    WHERE rc.PV_ID = nPvId
8485
	AND rc.RTAG_ID = nRtagId;
8486
 
8487
    /* LOG ACTION */
8488
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
8489
 
8490
END Change_Package_State;
8491
/
8492
 
8493
CREATE OR REPLACE PACKAGE Rm_Issues AS
8494
 
8495
	TYPE T_Cur IS REF CURSOR;
8496
 
8497
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8498
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
8499
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8500
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
8501
 
8502
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8503
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8504
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
8505
 
8506
END Rm_Issues;
8507
/
8508
 
8509
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
8510
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
8511
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
8512
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
8513
                                            sDpkg_path IN VARCHAR2,
8514
                                            sResults IN VARCHAR2,
8515
                                            sCompletion_date IN VARCHAR2,
8516
                                            nCompleted_by IN NUMBER,
8517
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
8518
											enumTEST_TYPE_NOT_DONE IN NUMBER,
8519
											outFileName OUT VARCHAR2
8520
                                           ) IS
8521
/* ---------------------------------------------------------------------------
8522
    Version: 3.2.0
8523
   --------------------------------------------------------------------------- */
8524
 
8525
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
8526
 
8527
    newID NUMBER;
8528
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
8529
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
8530
 
8531
BEGIN
8532
 
8533
	-- Get new ID --
8534
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
8535
 
8536
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
8537
       	ResultsURL := sResults;
8538
       ELSE
8539
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
8540
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
8541
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
8542
           END IF;
8543
       END IF;
8544
 
8545
	-- Remove NOT_DONE entry if exists
8546
	DELETE FROM UNIT_TESTS
8547
	 WHERE pv_id = nPv_id
8548
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
8549
 
8550
	--- Add Additional Note ---
8551
    INSERT INTO UNIT_TESTS ( TEST_ID,
8552
								PV_ID,
8553
								TEST_TYPES_FK,
8554
								TEST_SUMMARY,
8555
								COMPLETION_DATE,
8556
								COMPLETED_BY,
8557
								RESULTS_URL,
8558
								RESULTS_ATTACHMENT_NAME,
8559
								NUMOF_TEST )
8560
    VALUES (
8561
       	newID,
8562
           nPv_id,
8563
           nTestTypeId,
8564
           sTest_summary,
8565
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
8566
           nCompleted_by,
8567
           ResultsURL,
8568
           ResultsAttachment,
8569
		   sNumOfTest );
8570
 
8571
END New_Unit_Test;
8572
/
8573
 
8574
CREATE OR REPLACE PROCEDURE Ripple_Package (
8575
        sPvIdList IN VARCHAR2,
8576
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
8577
        nUserId IN NUMBER
8578
    ) IS
8579
/* ---------------------------------------------------------------------------
8580
    Version: 4.1
8581
   --------------------------------------------------------------------------- */
8582
 
8583
BEGIN
8584
 
8585
    IF (sPvIdList IS NULL) THEN
8586
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
8587
    END IF;
8588
 
8589
    -- Ripple Package
8590
    DELETE FROM DO_NOT_RIPPLE
8591
    WHERE RTAG_ID = nRtagId
8592
    AND PV_ID IN (
8593
        SELECT *
8594
        FROM THE (
8595
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
8596
            AS RELMGR_NUMBER_TAB_t )
8597
            FROM DUAL
8598
        )
8599
    );
8600
 
8601
    /* LOG ACTION */
8602
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
8603
 
8604
END Ripple_Package;
8605
/
8606
 
8607
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
8608
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
8609
/* ---------------------------------------------------------------------------
8610
    Last Modified: Rupesh Solanki
8611
	Version: 3.0.1
8612
   --------------------------------------------------------------------------- */
8613
 
8614
 
8615
BEGIN
8616
 
8617
   -- Delete Current Build Env settings
8618
   DELETE FROM PACKAGE_BUILD_ENV
8619
   WHERE pv_id = nPvId;
8620
 
8621
   -- Delet Current Package Build Info Settings
8622
   DELETE FROM PACKAGE_BUILD_INFO
8623
   WHERE pv_id = nPvId;
8624
 
8625
   -- Reset flag to N
8626
   UPDATE PACKAGE_VERSIONS SET
8627
	   IS_BUILD_ENV_REQUIRED = 'N'
8628
   WHERE PV_ID = nPvId;
8629
 
8630
 
8631
   -- Set new Build Env
8632
   IF NOT sBuildEnvIdList IS NULL THEN
8633
   	  -- Insert into PACKAGE_BUILD_ENV
8634
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
8635
	  SELECT nPvId AS PV_ID,
8636
	  		 be.BE_ID
8637
	    FROM BUILD_ENVIRONMENTS be
8638
	   WHERE be.BE_ID IN (
8639
	   		 		  	   SELECT *
8640
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8641
	   		 		  	 );
8642
 
8643
   	  -- Insert into PACKAGE_BUILD_INFO
8644
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
8645
	  SELECT nPvId AS PV_ID,
8646
	  		 be.BM_ID
8647
	    FROM BUILD_MACHINES be
8648
	   WHERE be.BM_ID IN (
8649
	   		 		  	   SELECT *
8650
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8651
	   		 		  	 );						 
8652
 
8653
	   -- Set flag to Y
8654
	   UPDATE PACKAGE_VERSIONS SET
8655
		   IS_BUILD_ENV_REQUIRED = 'Y'
8656
	   WHERE PV_ID = nPvId;
8657
 
8658
   END IF;
8659
 
8660
 
8661
END Set_Package_Build_Env;
8662
/
8663
 
8664
CREATE OR REPLACE PROCEDURE Split_Version ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8665
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
8666
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
8667
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
8668
/* ---------------------------------------------------------------------------
8669
    Version: 3.0.0
8670
   --------------------------------------------------------------------------- */
8671
 
8672
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
8673
        INDEX BY BINARY_INTEGER;
8674
 
8675
    version_components VERSION_COMPONENTS_TYPE;
8676
    lastDot NUMBER := 0;
8677
    currDot NUMBER := 0;
8678
 
8679
BEGIN
8680
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
8681
 
8682
    IF ( currDot > 0 )
8683
    THEN
8684
        -- YES dot separator found --
8685
        SSV_EXT := GET_V_EXT( SSpkg_version );
8686
 
8687
        IF NOT SSV_EXT IS NULL
8688
        THEN
8689
            lastDot := currDot;
8690
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
8691
 
8692
            IF ( currDot > 0 )
8693
            THEN
8694
                -- XXXX.M.E
8695
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
8696
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
8697
            ELSE
8698
                -- XXXX.E
8699
                SSV_MM := NULL;
8700
                SSV_NMM := SSpkg_version;
8701
            END IF;
8702
 
8703
        ELSE
8704
            -- XXXX.M
8705
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
8706
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
8707
 
8708
        END IF;
8709
 
8710
    ELSE
8711
        -- NO dot separator found --
8712
        -- XXXXXX
8713
        SSV_MM  := NULL;
8714
        SSV_NMM := SSpkg_version;
8715
        SSV_EXT := NULL;
8716
 
8717
    END IF;
8718
 
8719
END Split_Version;
8720
/
8721
 
8722
CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS
8723
 
8724
/* ---------------------------------------------------------------------------
8725
    Version: 3.0.0
8726
   --------------------------------------------------------------------------- */
8727
 
8728
   returnValue CHAR(1);
8729
 
8730
BEGIN
8731
 
8732
    /*--------------- Business Rules Here -------------------*/
8733
	/*-------------------------------------------------------*/
8734
 
8735
	-- Get release mode
8736
	SELECT rt.OFFICIAL INTO returnValue
8737
	  FROM RELEASE_TAGS rt
8738
	 WHERE rt.RTAG_ID = nRtagId;
8739
 
8740
	RETURN returnValue;
8741
 
8742
END RELEASE_MODE;
8743
/
8744
 
8745
CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
8746
/
8747
 
8748
CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8749
											 nUserId IN NUMBER ) IS
8750
/* ---------------------------------------------------------------------------
8751
    Author: Rupesh Solanki
8752
 
8753
	Version: 4.0
8754
   --------------------------------------------------------------------------- */
8755
   STATE CHAR;
8756
 
8757
BEGIN
8758
 
8759
	SELECT DLOCKED INTO STATE
8760
	FROM PACKAGE_VERSIONS
8761
	WHERE PV_ID = nPvId; 
8762
 
8763
	IF STATE = 'A' THEN --It was made official for autobuilds
8764
		-- Unlock Package
8765
		UPDATE PACKAGE_VERSIONS pv SET
8766
		pv.DLOCKED = 'P'
8767
		WHERE pv.PV_ID = nPvId;	
8768
	ELSE
8769
		-- Unlock Package
8770
		UPDATE PACKAGE_VERSIONS pv SET
8771
		pv.DLOCKED = 'N'
8772
		WHERE pv.PV_ID = nPvId;	
8773
 
8774
	END IF;	   
8775
 
8776
    /* LOG ACTION */
8777
   	Log_Action ( nPvId, 'unlock_package', nUserId );
8778
 
8779
END Unlock_Package;
8780
/
8781
 
53 mhunt 8782
CREATE OR REPLACE PACKAGE                   "PK_PLANNED" IS
51 mhunt 8783
/*
8784
------------------------------
53 mhunt 8785
||  Last Modified:  G.Huddy
8786
||  Modified Date:  28/May/2008
8787
||  Spec Version:   1.1
51 mhunt 8788
------------------------------
8789
*/
8790
 
8791
	TYPE typeCur IS REF CURSOR;
8792
 
8793
    /*================================================================================================*/
8794
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8795
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8796
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 8797
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
51 mhunt 8798
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 8799
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
51 mhunt 8800
	/*================================================================================================*/
8801
 
8802
END PK_PLANNED;
8803
/
8804
 
8805
CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8806
											 nUserId IN NUMBER ) IS
8807
/* ---------------------------------------------------------------------------
8808
    Version: 4.0
8809
   --------------------------------------------------------------------------- */
8810
 
8811
BEGIN
8812
 
8813
    -- Lock Package
8814
    UPDATE PACKAGE_VERSIONS pv SET
8815
    	pv.DLOCKED = 'A'
8816
    WHERE pv.PV_ID = nPvId;
8817
 
8818
    /* LOG ACTION */
8819
   	Log_Action ( nPvId, 'lock_package', nUserId );
8820
END Pending_Package;
8821
/
8822
 
8823
CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)
8824
IS
8825
/******************************************************************************
8826
   NAME:       DELETE_DO_NOT_RIPPLE
8827
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8828
               IS RELEASED
8829
 
8830
   REVISIONS:
8831
   Ver        Date        Author           Description
8832
   ---------  ----------  ---------------  ------------------------------------
8833
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8834
 
8835
   NOTES:
8836
 
8837
   Automatically available Auto Replace Keywords:
8838
      Object Name:     DELETE_DO_NOT_RIPPLE
8839
      Sysdate:         21/04/2006
8840
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8841
      Username:         (set in TOAD Options, Procedure Editor)
8842
      Table Name:       (set in the "New PL/SQL Object" dialog)
8843
 
8844
******************************************************************************/
8845
BEGIN
8846
   DELETE FROM do_not_ripple
8847
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
8848
                                                     FROM release_content
8849
                                                    WHERE rtag_id = nrtagid);
8850
END clean_do_not_ripple;
8851
/
8852
 
8853
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions2 ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
8854
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8855
                                                          NNuser_id IN NUMBER,
8856
                                                          retPV_ID OUT NUMBER,
8857
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
8858
/* ---------------------------------------------------------------------------
8859
    Version: 4.0
8860
   --------------------------------------------------------------------------- */
8861
 
8862
    parPkg_id   NUMBER;
8863
    parPv_id    NUMBER;
8864
    cloneFrom_pv_id NUMBER;
8865
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
8866
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
8867
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
8868
 
8869
    CURSOR packages_cur IS
8870
        SELECT pkg_id FROM PACKAGES
8871
        WHERE pkg_name = SSpkg_name;
8872
    packages_rec packages_cur%ROWTYPE;
8873
 
8874
    CURSOR package_versions_cur IS
8875
        SELECT pv_id FROM PACKAGE_VERSIONS
8876
        WHERE pkg_id = parPkg_id
8877
        AND pkg_version = SSpkg_version;
8878
    package_versions_rec package_versions_cur%ROWTYPE;
8879
 
8880
    CURSOR clone_package_versions_cur IS
8881
        SELECT MAX(pv_id) AS pv_id
8882
          FROM PACKAGE_VERSIONS
8883
         WHERE pkg_id = parPkg_id
8884
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
8885
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
8886
 
8887
BEGIN
8888
    /* -------------------------------------------- */
8889
    /* Find if pkg_name exists and seed if required */
8890
    /* -------------------------------------------- */
8891
    OPEN packages_cur;
8892
    FETCH packages_cur INTO packages_rec;
8893
 
8894
    IF packages_cur%NOTFOUND
8895
    THEN
8896
        /* INSERT into packages table */
8897
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
8898
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
8899
 
8900
    ELSE
8901
        parPkg_id := packages_rec.pkg_id;
8902
 
8903
    END IF;
8904
 
8905
    CLOSE packages_cur;
8906
 
8907
 
8908
 
8909
    /* ---------------------------------------------------- */
8910
    /* Find if package_version exists and seed if required  */
8911
    /* ---------------------------------------------------- */
8912
    OPEN package_versions_cur;
8913
    FETCH package_versions_cur INTO package_versions_rec;
8914
 
8915
    IF package_versions_cur%NOTFOUND
8916
    THEN
8917
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
8918
 
8919
        /* LOG ACTION */
8920
        Log_Action ( parPv_id, 'new_version', NNuser_id,
8921
        			 'New package version: '|| SSpkg_version );
8922
 
8923
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
8924
 
8925
 
8926
 
8927
 
8928
 
8929
            /* CLONE details from similar version  OR  from nCloneFromPvId */
8930
			IF ( NOT nCloneFromPvId IS NULL) THEN
8931
            	cloneFrom_pv_id := nCloneFromPvId;
8932
			ELSE
8933
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
8934
			END IF;
8935
 
8936
            -- Clone Package Version Details --
8937
            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,
8938
                                           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 )
8939
                SELECT parPv_id         AS pv_id,
8940
                       parPkg_id        AS pkg_id,
8941
                       SSpkg_version    AS pkg_version,
8942
                       'N'              AS dlocked,
8943
                       Ora_Sysdate      AS created_stamp,
8944
                       NNuser_id        AS creator_id,
8945
                       Ora_Sysdatetime  AS modified_stamp,
8946
                       NNuser_id        AS modifier_id,
8947
                       SSV_MM           AS V_MM,
8948
                       SSV_NMM          AS V_NMM,
8949
                       SSV_EXT          AS V_EXT,
8950
                       pv.src_path,
8951
                       pv.pv_description,
8952
                       pv.PV_OVERVIEW,
8953
                       cloneFrom_pv_id 	AS LAST_PV_ID,
8954
                       pv.owner_id,
8955
					   pv.BUILD_TYPE,
8956
					   pv.IS_BUILD_ENV_REQUIRED,
8957
					   pv.bs_id,
8958
					   pv.is_autobuildable,
8959
					   pv.IS_DEPLOYABLE,
8960
					   pv.ripple_field
8961
                  FROM PACKAGE_VERSIONS pv
8962
                 WHERE pv.pv_id = cloneFrom_pv_id;
8963
 
8964
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
8965
 
8966
        retPV_ID := parPv_id;
8967
 
8968
    ELSE
8969
        retPV_ID := package_versions_rec.pv_id;
8970
 
8971
    END IF;
8972
 
8973
    CLOSE package_versions_cur;
8974
 
8975
 
8976
 
8977
 
8978
END Seed_Package_Names_Versions2;
8979
/
8980
 
8981
CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) IS
8982
 
8983
    sessionNumber NUMBER := 0;
8984
    iteration NUMBER := 1; 
8985
    rowCnt NUMBER := 0;
8986
    maxIterations 	NUMBER := 50;
8987
 
8988
BEGIN
8989
 
8990
 
8991
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
8992
    SELECT sessionNumber, iteration, rc.PV_ID
8993
      FROM RELEASE_CONTENT rc
8994
     WHERE rc.RTAG_ID = nRtag_id;
8995
 
8996
    iteration := iteration + 1;
8997
    LOOP
8998
 
8999
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9000
		SELECT sessionNumber,     
9001
               iteration,
9002
               dep.DPV_ID
9003
          FROM TEMP_TREE_BROWSE ttb,
9004
               PACKAGE_DEPENDENCIES dep
9005
         WHERE dep.PV_ID = ttb.PV_ID 
9006
           AND ttb.LEVEL_NUM = iteration - 1 
9007
 
9008
         MINUS  
9009
 
9010
        SELECT sessionNumber, iteration, ttb.PV_ID
9011
          FROM TEMP_TREE_BROWSE ttb;   
9012
 
9013
 
9014
 
9015
 
9016
		rowCnt := SQL%ROWCOUNT;
9017
		IF rowCnt > 0 THEN
9018
           iteration := iteration + 1;
9019
		END IF;
9020
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
9021
    END LOOP; 
9022
 
9023
END PAOLO_Build_Tree;
9024
/
9025
 
9026
CREATE OR REPLACE PROCEDURE Log_Action_Bulk ( nPvIdList IN VARCHAR2,
9027
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9028
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
9029
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9030
/* ---------------------------------------------------------------------------
9031
    Version: 3.0
9032
   --------------------------------------------------------------------------- */
9033
 
9034
    ActionTypeId NUMBER;
9035
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9036
 
9037
BEGIN
9038
 
9039
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
9040
 
9041
    -- Get Action Type FK
9042
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9043
      FROM ACTION_TYPE act
9044
     WHERE act.NAME = enumActionTypeName;
9045
 
9046
    -- Log Action
9047
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9048
    SELECT nUserId,
9049
    	   ORA_SYSDATETIME,
9050
           pv.PV_ID,
9051
           sAdditionalComments,
9052
           ActionTypeId
9053
      FROM PACKAGE_VERSIONS pv
9054
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
9055
 
9056
 
9057
END Log_Action_Bulk;
9058
/
9059
 
9060
CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSES
9061
IS
9062
 
9063
proc_id NUMBER;
9064
/******************************************************************************
9065
   NAME:       DELETE_DO_NOT_RIPPLE
9066
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
9067
               IS RELEASED
9068
 
9069
   REVISIONS:
9070
   Ver        Date        Author           Description
9071
   ---------  ----------  ---------------  ------------------------------------
9072
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
9073
 
9074
   NOTES:
9075
 
9076
   Automatically available Auto Replace Keywords:
9077
      Object Name:     DELETE_DO_NOT_RIPPLE
9078
      Sysdate:         21/04/2006
9079
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
9080
      Username:         (set in TOAD Options, Procedure Editor)
9081
      Table Name:       (set in the "New PL/SQL Object" dialog)
9082
 
9083
******************************************************************************/
9084
   CURSOR ripple_cur
9085
   IS
9086
      select distinct proc_id, prod_id from deployment_manager.processes_config;
9087
 
9088
   ripple_rec   ripple_cur%ROWTYPE;
9089
BEGIN
9090
   OPEN ripple_cur;
9091
 
9092
   FETCH ripple_cur
9093
    INTO ripple_rec;
9094
 
9095
   WHILE ripple_cur%FOUND
9096
   LOOP
9097
 
9098
 
9099
 
9100
insert into package_processes (PROC_ID, PV_ID) 
9101
values( ripple_rec.proc_id, ripple_rec.prod_id);
9102
 
9103
      FETCH ripple_cur
9104
       INTO ripple_rec;
9105
   END LOOP;
9106
END CLONED_PACKAGE_PROCESSES;
9107
/
9108
 
9109
CREATE OR REPLACE PACKAGE                 pk_rmapi
9110
IS
9111
/*
9112
------------------------------
9113
||  Last Modified:  Jeremy Tweddle
9114
||  Modified Date:  08/Feb/2008
9115
||  Body Version:   3.3
9116
------------------------------
9117
*/
9118
   TYPE typecur IS REF CURSOR;
9119
 
9120
/*================================================================================================*/
9121
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
9122
      RETURN typecur;
9123
 
9124
   FUNCTION wip_iteration_package (
9125
      projname        VARCHAR2,
9126
      iterationname   VARCHAR2,
9127
      pkgname         VARCHAR2
9128
   )
9129
      RETURN typecur;
9130
 
9131
   FUNCTION auto_make_release (
9132
      rtagid                   IN   NUMBER,
9133
      pkgname                  IN   VARCHAR2,
9134
      vext                     IN   VARCHAR2,
9135
      newpkgversion            IN   VARCHAR2,
9136
      label                    IN   VARCHAR2,
9137
      dependenciesimportlist   IN   VARCHAR2,
9138
      isrippled                IN   NUMBER,
9139
      username                 IN   VARCHAR2
9140
   )
9141
      RETURN NUMBER;
9142
 
9143
   PROCEDURE import_dependencies (
9144
      pvid                     IN   NUMBER,
9145
      dependenciesimportlist   IN   VARCHAR2,
9146
      userid                   IN   NUMBER
9147
   );
9148
 
9149
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
9150
      RETURN VARCHAR2;
9151
 
9152
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
9153
      RETURN VARCHAR2;
9154
 
9155
   PROCEDURE update_dash_board (rtagid IN NUMBER);
9156
 
9157
   FUNCTION exclude_from_build (
9158
      pvid          IN   NUMBER,
9159
      spkgversion   IN   VARCHAR2,
9160
      rtagid        IN   NUMBER,
9161
      username      IN   VARCHAR2
9162
   )
9163
      RETURN NUMBER;
9164
 
9165
/*================================================================================================*/
9166
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
9167
 
9168
   FUNCTION insert_package_metrics (
9169
      rtagid IN NUMBER,
9170
      pkgname IN VARCHAR2,
9171
      vext IN VARCHAR2,
9172
      metricstring IN VARCHAR2
9173
   )
9174
      RETURN NUMBER;
9175
 
9176
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
9177
 
9178
END pk_rmapi;
9179
/
9180
 
9181
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;
9182
/
9183
 
9184
CREATE OR REPLACE PROCEDURE Log_Daemon_Action ( nRconId IN NUMBER,
9185
												 enumActionTypeName IN VARCHAR2,
9186
		                                         nUserId IN NUMBER,
9187
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
9188
/* ---------------------------------------------------------------------------
9189
    Version: 3.0
9190
   --------------------------------------------------------------------------- */
9191
 
9192
    ActionTypeId NUMBER;
9193
 
9194
BEGIN
9195
 
9196
    -- Get Action Type FK
9197
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9198
      FROM ACTION_TYPE act
9199
     WHERE act.NAME = enumActionTypeName;
9200
 
9201
 
9202
    INSERT INTO DAEMON_ACTION_LOG
9203
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
9204
 
9205
 
9206
END Log_Daemon_Action;
9207
/
9208
 
9209
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT_test IS
9210
/*
9211
------------------------------
9212
||  Last Modified:  Rupesh Solanki
9213
||  Modified Date:  29/Jan/2007
9214
||  Spec Version:   1.1
9215
------------------------------
9216
*/
9217
 
9218
	TYPE typeCur IS REF CURSOR;
9219
 
9220
    /*================================================================================================*/
9221
 
9222
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
9223
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9224
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9225
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9226
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9227
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9228
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
9229
 
9230
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9231
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9232
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9233
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9234
 
9235
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
9236
 
9237
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9238
 
9239
 
9240
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9241
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9242
 
9243
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9244
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9245
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9246
 
9247
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
9248
 
9249
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
9250
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
9251
 
9252
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
9253
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
9254
							 CloneFromPvId IN NUMBER );
9255
 
9256
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9257
 
9258
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
9259
 
9260
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9261
 
9262
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
9263
 
9264
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
9265
	/*================================================================================================*/
9266
 
9267
END PK_ENVIRONMENT_test;
9268
/
9269
 
9270
CREATE OR REPLACE PROCEDURE Update_Package_States ( NNrtag_id IN NUMBER,
9271
                                                    NNsession_num IN NUMBER ) IS
9272
/* ---------------------------------------------------------------------------
9273
    Version: 3.0.0
9274
   --------------------------------------------------------------------------- */
9275
 
9276
/* =============  STATE RULES =================== */
9277
/*
9278
   MNR   MRR   MN   MR    |   pkg_state
9279
   ------------------------------------
9280
 
9281
 
9282
 
9283
 
9284
   ------------------------------------
9285
 
9286
 
9287
 
9288
 
9289
   ------------------------------------
9290
    1     0     0     0   |      MINOR_READY
9291
    1     0     0     1   |      MAJOR
9292
    1     0     1     0   |      MINOR
9293
    1     0     1     1   |      MAJOR
9294
   ------------------------------------
9295
    1     1     0     0   |      MAJOR_READY
9296
    1     1     0     1   |      MAJOR
9297
    1     1     1     0   |      MAJOR
9298
    1     1     1     1   |      MAJOR
9299
   ------------------------------------
9300
*/
9301
 
9302
BEGIN
9303
    /*----------------------------------------------
9304
    ||              MINOR READY
9305
    */----------------------------------------------
9306
 
9307
    UPDATE release_content
9308
       SET pkg_state = 4
9309
     WHERE rtag_id = NNrtag_id
9310
       AND pv_id IN
9311
           (
9312
           SELECT DISTINCT pv_id
9313
           FROM temp_env_states
9314
           WHERE session_num = NNsession_num
9315
             AND level_num = 1
9316
             AND tes_state = 2
9317
           );
9318
 
9319
    /*----------------------------------------------
9320
    ||              MAJOR READY
9321
    */----------------------------------------------
9322
    UPDATE release_content
9323
       SET pkg_state = 3
9324
     WHERE rtag_id = NNrtag_id
9325
       AND pv_id IN
9326
           (
9327
           SELECT DISTINCT pv_id
9328
           FROM temp_env_states
9329
           WHERE session_num = NNsession_num
9330
             AND level_num = 1
9331
             AND tes_state IN (0,1)
9332
           );
9333
 
9334
    /*----------------------------------------------
9335
    ||                MINOR
9336
    */----------------------------------------------
9337
    UPDATE release_content
9338
       SET pkg_state = 2
9339
     WHERE rtag_id = NNrtag_id
9340
       AND pv_id IN
9341
           (
9342
           SELECT DISTINCT pv_id
9343
            FROM temp_env_states
9344
            WHERE session_num = NNsession_num
9345
              AND level_num >= 2
9346
              AND tes_state = 2
9347
            MINUS
9348
           SELECT pv_id
9349
             FROM release_content
9350
            WHERE rtag_id = NNrtag_id
9351
              AND pkg_state = 3
9352
           );
9353
 
9354
    /*----------------------------------------------
9355
    ||                MAJOR
9356
    */----------------------------------------------
9357
    UPDATE release_content
9358
       SET pkg_state = 1
9359
     WHERE rtag_id = NNrtag_id
9360
       AND pv_id IN
9361
           (
9362
           SELECT DISTINCT pv_id
9363
           FROM temp_env_states
9364
           WHERE session_num = NNsession_num
9365
             AND level_num >= 2
9366
             AND tes_state IN (0,1)
9367
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
9368
           UNION
9369
           SELECT DISTINCT tes.pv_id
9370
           FROM temp_env_states tes,
9371
                release_content rc
9372
           WHERE tes.session_num = NNsession_num
9373
             AND tes.level_num >= 2
9374
             AND tes.tes_state = 2
9375
             AND rtag_id = NNrtag_id
9376
             AND rc.pv_id = tes.pv_id
9377
             AND rc.pkg_state = 3
9378
           );
9379
 
9380
    /*----------------------------------------------
9381
    ||                 OK
9382
    */----------------------------------------------
9383
    UPDATE release_content
9384
       SET pkg_state = 0
9385
     WHERE rtag_id = NNrtag_id
9386
       AND pv_id IN
9387
           (
9388
           SELECT rc.pv_id
9389
             FROM release_content rc
9390
            WHERE rc.rtag_id = NNrtag_id
9391
              AND NOT rc.pv_id IN
9392
                    (
9393
                     SELECT DISTINCT pv_id
9394
                     FROM temp_env_states WHERE session_num = NNsession_num
9395
                    )
9396
           );
9397
 
9398
 
9399
    /*----------------------------------------------
9400
    ||              ADVISORY RIPPLE - NEW STUFF
9401
    */----------------------------------------------
9402
 /*   UPDATE release_content
9403
       SET pkg_state = 8
9404
     WHERE rtag_id = NNrtag_id
9405
       AND pv_id IN
9406
           (
9407
           SELECT DISTINCT pv_id
9408
           FROM temp_env_states
9409
           WHERE session_num = NNsession_num
9410
             AND level_num = 1
9411
             AND tes_state = 3
9412
           );	*/
9413
 
9414
 
9415
 
9416
    /*----------------------------------------------
9417
    ||              ADVISORY RIPPLE DEPENDANT
9418
    */----------------------------------------------			   
9419
  /*  UPDATE release_content
9420
       SET pkg_state = 9
9421
     WHERE rtag_id = NNrtag_id
9422
       AND pv_id IN
9423
           (
9424
           SELECT DISTINCT pv_id
9425
           FROM temp_env_states
9426
           WHERE session_num = NNsession_num
9427
             AND level_num >= 2
9428
             AND tes_state = 3
9429
           );		*/	   
9430
 
9431
      Update_Deprecation_State (NNrtag_id);
9432
 
9433
END Update_Package_States;
9434
/
9435
 
9436
CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS
9437
 
9438
/******************************************************************************
9439
   NAME:       TO_INSERT_VTREE_ID
9440
   PURPOSE:    
9441
 
9442
   REVISIONS:
9443
   Ver        Date        Author           Description
9444
   ---------  ----------  ---------------  ------------------------------------
9445
   1.0        2/02/2007          1. Created this procedure.
9446
 
9447
   NOTES:
9448
 
9449
   Automatically available Auto Replace Keywords:
9450
      Object Name:     TO_INSERT_VTREE_ID
9451
      Sysdate:         2/02/2007
9452
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
9453
      Username:         (set in TOAD Options, Procedure Editor)
9454
      Table Name:       (set in the "New PL/SQL Object" dialog)
9455
 
9456
******************************************************************************/
9457
VTreeId NUMBER;																			  																	   
9458
 
9459
 
9460
	CURSOR curInfo IS
9461
    SELECT RTAG_ID
9462
	FROM RELEASE_TAGS
9463
	WHERE VTREE_ID IS NULL;
9464
    recInfo curInfo%ROWTYPE;
9465
 
9466
 
9467
BEGIN
9468
 
9469
	OPEN curInfo;
9470
    FETCH curInfo INTO recInfo;
9471
 
9472
	WHILE curInfo%FOUND
9473
	LOOP
9474
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
9475
 
9476
		UPDATE RELEASE_TAGS
9477
		SET VTREE_ID = VTreeId
9478
		WHERE RTAG_ID = recInfo.RTAG_ID;
9479
 
9480
		FETCH curInfo INTO recInfo;
9481
	END LOOP;
9482
 
9483
	CLOSE curInfo;
9484
 
9485
END TO_INSERT_VTREE_ID;
9486
/
9487
 
9488
CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
9489
/
9490
 
9491
CREATE OR REPLACE FUNCTION ORA_SYSDATE
9492
RETURN DATE
9493
IS
9494
/* ---------------------------------------------------------------------------
9495
    Version: 3.0.0
9496
   --------------------------------------------------------------------------- */
9497
BEGIN
9498
 
9499
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
9500
END ORA_SYSDATE;
9501
/
9502
 
9503
CREATE OR REPLACE PROCEDURE Undeprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9504
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9505
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9506
											   	 nUserId IN NUMBER) IS
9507
 
9508
ext VARCHAR2(50);
9509
PvIdList VARCHAR2(32767);
9510
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9511
PvId NUMBER;
9512
sComments VARCHAR2(32767);
9513
 
9514
BEGIN
9515
 
9516
 
9517
 
9518
	--Extract the package extension
9519
	SELECT V_EXT into ext 
9520
	FROM PACKAGE_VERSIONS 
9521
	WHERE PV_ID = nPvId;
9522
 
9523
	--SELECT COMMENTS into sComments 
9524
	--FROM DEPRECATED_PACKAGES
9525
	--WHERE RTAG_ID = nRtagId
9526
	--AND V_EXT = ext
9527
	--AND PKG_ID = nPkgId;
9528
 
9529
	--SELECT PV_ID into PvIdList FROM
9530
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
9531
	--AND PKG_STATE = 6
9532
	--AND PV_ID NOT IN nPvId;
9533
 
9534
 
9535
	IF ext IS NOT NULL THEN
9536
       -- Undeprecate Package
9537
       DELETE FROM DEPRECATED_PACKAGES 
9538
	   WHERE RTAG_ID = nRtagId 
9539
	   AND PKG_ID = nPkgId
9540
	   AND V_EXT = ext;	
9541
 
9542
		UPDATE RELEASE_CONTENT 
9543
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9544
		WHERE RTAG_ID = nRtagId
9545
		AND PV_ID IN (SELECT PV.PV_ID 
9546
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9547
					  WHERE PKG.PKG_ID = PV.PKG_ID
9548
					  AND PKG.PKG_ID = nPkgId
9549
					  AND PV.V_EXT = ext
9550
					  UNION
9551
					  SELECT DISTINCT
9552
	 	 		  	 		   qry.PV_ID
9553
							        FROM (
9554
									 	  SELECT dep.*,
9555
										  LEVEL AS LEVEL_NUM
9556
										  FROM PACKAGE_DEPENDENCIES dep
9557
	 								START WITH dep.DPV_ID IN ( nPvId )
9558
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9559
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9560
	 								) qry,
9561
									PACKAGES pkg,
9562
									PACKAGE_VERSIONS pv,
9563
									RELEASE_CONTENT rc
9564
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9565
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9566
 
9567
					 );	 
9568
 
9569
	ELSE
9570
       -- Undeprecate Package
9571
       DELETE FROM DEPRECATED_PACKAGES 
9572
	   WHERE RTAG_ID = nRtagId 
9573
	   AND PKG_ID = nPkgId
9574
	   AND V_EXT IS NULL;	
9575
 
9576
		UPDATE RELEASE_CONTENT 
9577
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9578
		WHERE RTAG_ID = nRtagId
9579
		AND PV_ID IN (SELECT PV.PV_ID 
9580
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9581
					  WHERE PKG.PKG_ID = PV.PKG_ID
9582
					  AND PKG.PKG_ID = nPkgId
9583
					  AND PV.V_EXT IS NULL
9584
					  UNION
9585
					  SELECT DISTINCT
9586
	 	 		  	 		   qry.PV_ID
9587
							        FROM (
9588
									 	  SELECT dep.*,
9589
										  LEVEL AS LEVEL_NUM
9590
										  FROM PACKAGE_DEPENDENCIES dep
9591
	 								START WITH dep.DPV_ID IN ( nPvId )
9592
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9593
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9594
	 								) qry,
9595
									PACKAGES pkg,
9596
									PACKAGE_VERSIONS pv,
9597
									RELEASE_CONTENT rc
9598
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9599
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9600
 
9601
					 );	 	   
9602
 
9603
	END IF;
9604
 
9605
	--IF PvIdList IS NOT NULL THEN
9606
 
9607
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
9608
 
9609
	 --  FOR i IN 1..nIdCollector.COUNT
9610
	 --  LOOP
9611
	--	   PvId := nIdCollector(i);
9612
 
9613
 
9614
 
9615
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
9616
	--		END LOOP;
9617
	--END IF;
9618
 
9619
	Rebuild_environment(nRtagId);			 
9620
 
9621
 
9622
 
9623
END Undeprecate_Package;
9624
/
9625
 
9626
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Acceptance ( pnTest_id IN NUMBER,
9627
														  pnPv_id IN NUMBER,
9628
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
9629
														  sAcceptanceDate IN VARCHAR2,
9630
														  sAcceptedBy IN NUMBER,
9631
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
9632
														  cUpdateAcceptedStateOnly IN CHAR
9633
					                                     ) IS
9634
/* ---------------------------------------------------------------------------
9635
    Version: 3.0.0
9636
   --------------------------------------------------------------------------- */
9637
 
9638
 
9639
 
9640
BEGIN
9641
	IF cUpdateAcceptedStateOnly = 'Y'
9642
	THEN
9643
		--- Update Accepted State Only ---
9644
		IF ( sAccepted IS NULL )
9645
		THEN
9646
			-- Clear alleptance
9647
			UPDATE UNIT_TESTS SET
9648
		           TEST_ACCEPTED = NULL,
9649
		           ACCEPTANCE_DATE = NULL,
9650
				   ACCEPTED_BY = NULL,
9651
				   REVIEW_COMMENTS = NULL
9652
		     WHERE TEST_ID = pnTest_id
9653
		       AND PV_ID = pnPv_id;
9654
 
9655
	    ELSE
9656
			UPDATE UNIT_TESTS SET
9657
		           TEST_ACCEPTED = sAccepted,
9658
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9659
				   ACCEPTED_BY = sAcceptedBy
9660
		     WHERE TEST_ID = pnTest_id
9661
		       AND PV_ID = pnPv_id;
9662
 
9663
		END IF;
9664
 
9665
 
9666
	ELSE
9667
		--- Update Unit Test Acceptance ---
9668
	    UPDATE UNIT_TESTS SET
9669
	           TEST_ACCEPTED = sAccepted,
9670
			   REVIEW_COMMENTS = sReviewComments,
9671
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9672
			   ACCEPTED_BY = sAcceptedBy
9673
	     WHERE TEST_ID = pnTest_id
9674
	       AND PV_ID = pnPv_id;
9675
 
9676
	END IF;
9677
 
9678
END Update_Unit_Test_Acceptance;
9679
/
9680
 
9681
CREATE OR REPLACE PROCEDURE New_Version ( NNorig_pv_id IN NUMBER,
9682
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
9683
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
9684
                                          NNrtag_id IN NUMBER,
9685
                                          NNuser_id IN NUMBER,
9686
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
9687
                                          retPv_id OUT NUMBER ) IS
9688
 
9689
 
9690
  TO BE REMOVED   !!!										  
9691
 
9692
 
9693
 
9694
 
9695
/* ---------------------------------------------------------------------------
9696
    Version: 3.3
9697
   --------------------------------------------------------------------------- */
9698
 
9699
    ReleaseLocation VARCHAR2(4000);
9700
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
9701
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
9702
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
9703
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
9704
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
9705
    nIssuesTypes NUMBER;
9706
 
9707
    CURSOR package_versions_cur IS
9708
        SELECT pv.pv_id, pv.is_patch
9709
          FROM PACKAGE_VERSIONS pv
9710
         WHERE pv.pkg_version = SSpkg_version
9711
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
9712
    package_versions_rec package_versions_cur%ROWTYPE;
9713
 
9714
    CURSOR clone_package_versions_cur IS
9715
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
9716
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
9717
 
9718
BEGIN
9719
	IF NNsetto_pv_id IS NULL
9720
    THEN
9721
		-- SetToPv_id is not supplied, hence proceed.
9722
 
9723
	    /* ---------------------------------------------------- */
9724
	    /* Find id package_version exists                       */
9725
	    /* ---------------------------------------------------- */
9726
 
9727
	    OPEN package_versions_cur;
9728
	    FETCH package_versions_cur INTO package_versions_rec;
9729
 
9730
	    IF package_versions_cur%NOTFOUND
9731
	    THEN
9732
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
9733
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9734
 
9735
	        OPEN clone_package_versions_cur;
9736
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
9737
	        origPkg_id := clone_package_versions_rec.pkg_id;
9738
	        origDlocked := clone_package_versions_rec.dlocked;
9739
	        CLOSE clone_package_versions_cur;
9740
 
9741
	        -- Clone Package Version Details --
9742
	        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,
9743
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
9744
	            SELECT retPv_id         AS pv_id,
9745
	                   origPkg_id       AS pkg_id,
9746
	                   SSpkg_version    AS pkg_version,
9747
	                   'N'              AS dlocked,
9748
	                   Ora_Sysdate      AS created_stamp,
9749
	                   NNuser_id        AS creator_id,
9750
	                   Ora_Sysdatetime  AS modified_stamp,
9751
	                   NNuser_id        AS modifier_id,
9752
	                   SSV_MM           AS V_MM,
9753
	                   SSV_NMM          AS V_NMM,
9754
	                   SSV_EXT          AS V_EXT,
9755
	                   pv.src_path,
9756
	                   pv.pv_description,
9757
                       pv.PV_OVERVIEW,
9758
                       NNorig_pv_id 	AS LAST_PV_ID,
9759
	                   pv.owner_id,
9760
					   pv.IS_DEPLOYABLE,
9761
					   pv.IS_BUILD_ENV_REQUIRED
9762
	              FROM PACKAGE_VERSIONS pv
9763
	             WHERE pv.pv_id = NNorig_pv_id;
9764
 
9765
 
9766
	        -- Set Issues Type for cloning ---
9767
	        IF origDlocked = 'Y'
9768
	        THEN
9769
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
9770
	        ELSE
9771
            	nIssuesTypes := NULL;
9772
	        END IF;
9773
 
9774
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
9775
 
9776
 
9777
 
9778
	    ELSE
9779
	        retPv_id := package_versions_rec.pv_id;
9780
 
9781
	    END IF;
9782
 
9783
        CLOSE package_versions_cur;
9784
 
9785
	ELSE
9786
    	retPv_id := NNsetto_pv_id;
9787
    END IF;
9788
 
9789
 
9790
    /* ---------------------------------------------------- */
9791
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
9792
    /* ---------------------------------------------------- */
9793
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
9794
	    UPDATE RELEASE_CONTENT
9795
	       SET pv_id = retPv_id,
9796
	           insert_stamp = Ora_Sysdate,
9797
	           insertor_id = NNuser_id
9798
	     WHERE rtag_id = NNrtag_id
9799
	       AND pv_id = NNorig_pv_id;
9800
 
9801
        /* LOG ACTION */
9802
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9803
		  FROM PROJECTS proj,
9804
		  	   VTREES vt,
9805
		       RELEASE_TAGS rt
9806
		 WHERE rt.VTREE_ID = vt.VTREE_ID
9807
		   AND vt.PROJ_ID = proj.PROJ_ID
9808
		   AND rt.RTAG_ID = NNrtag_id;
9809
 
9810
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
9811
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
9812
 
9813
	END IF;
9814
 
9815
 
9816
END New_Version;
9817
/
9818
 
9819
CREATE OR REPLACE PROCEDURE Reset_Ignore_Warnings ( sPvIdList IN VARCHAR2,
9820
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
9821
/* ---------------------------------------------------------------------------
9822
    Version: 5.0
9823
   --------------------------------------------------------------------------- */
9824
 
9825
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9826
 
9827
BEGIN
9828
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
9829
 
9830
    -- Remove Ignore Warnings
9831
     DELETE
9832
       FROM ignore_warnings
9833
	  WHERE (rtag_id, pv_id, dpv_id) IN
9834
	     (
9835
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
9836
	        FROM ignore_warnings igw,
9837
	             package_versions dpv,
9838
	             package_versions pv
9839
	       WHERE igw.dpv_id = dpv.pv_id
9840
	         AND igw.rtag_id = nRTagId
9841
	         AND dpv.pkg_id = pv.pkg_id
9842
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
9843
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
9844
         );
9845
 
9846
END Reset_Ignore_Warnings;
9847
/
9848
 
9849
CREATE OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)IS
9850
Auto CHAR;
9851
/******************************************************************************
9852
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
9853
   PURPOSE:    
9854
 
9855
   REVISIONS:
9856
   Ver        Date        Author           Description
9857
   ---------  ----------  ---------------  ------------------------------------
9858
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
9859
 
9860
   NOTES:
9861
 
9862
   Automatically available Auto Replace Keywords:
9863
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
9864
      Sysdate:         14/12/2006
9865
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
9866
      Username:         (set in TOAD Options, Procedure Editor)
9867
      Table Name:       (set in the "New PL/SQL Object" dialog)
9868
 
9869
******************************************************************************/
9870
BEGIN
9871
 
9872
	 SELECT IS_AUTOBUILDABLE into Auto
9873
	 FROM PACKAGE_VERSIONS 
9874
	 WHERE PV_ID = nPvId;
9875
 
9876
	 IF Auto = 'N' Then
9877
 
9878
	 	UPDATE PACKAGE_VERSIONS
9879
	 	SET IS_AUTOBUILDABLE = 'Y'
9880
	 	WHERE PV_ID = nPvId;
9881
 
9882
 
9883
	 	/* LOG ACTION */
9884
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
9885
 
9886
	 Else
9887
 
9888
		 UPDATE PACKAGE_VERSIONS
9889
		 SET IS_AUTOBUILDABLE = 'N'
9890
		 WHERE PV_ID = nPvId;
9891
 
9892
 
9893
	 	 /* LOG ACTION */
9894
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
9895
 
9896
	 End If;
9897
 
9898
 
9899
 
9900
 
9901
 
9902
 
9903
 
9904
 
9905
END SWITCH_REPRODUCIBLE_PACKAGE;
9906
/
9907
 
9908
CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,
9909
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
9910
												  	nUserId IN NUMBER
9911
	   	  		  									) IS
9912
 
9913
/******************************************************************************
9914
   NAME:       REMOVE_PACKAGE_INTEREST
9915
   PURPOSE:    To remove interest in a given package per project
9916
 
9917
   REVISIONS:
9918
   Ver        Date        Author           Description
9919
   ---------  ----------  ---------------  ------------------------------------
9920
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
9921
 
9922
   NOTES:
9923
 
9924
   Automatically available Auto Replace Keywords:
9925
      Object Name:     REMOVE_PACKAGE_INTEREST
9926
      Sysdate:         12/05/2006
9927
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
9928
      Username:         (set in TOAD Options, Procedure Editor)
9929
      Table Name:       (set in the "New PL/SQL Object" dialog)
9930
 
9931
******************************************************************************/
9932
BEGIN
9933
 
9934
	 --Delete from PACKAGE_INTEREST
9935
	 DELETE FROM PACKAGE_INTEREST
9936
	 WHERE PROJ_ID = nProjId
9937
	 AND PKG_ID = nPkgId
9938
	 AND USER_ID = nUserId;
9939
 
9940
END REMOVE_PACKAGE_INTEREST;
9941
/
9942
 
9943
CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
9944
/* ---------------------------------------------------------------------------
9945
    Version: 3.0
9946
   --------------------------------------------------------------------------- */
9947
 
9948
 
9949
BEGIN
9950
 
9951
	 -- Touch Release for Rebuild
9952
     UPDATE RELEASE_TAGS rt SET
9953
     	rt.REBUILD_ENV = 'Y',
9954
        rt.REBUILD_STAMP = 0
9955
      WHERE rt.RTAG_ID = nRtagId;
9956
 
9957
	COMMIT;	  
9958
 
9959
END Touch_Release;
9960
/
9961
 
9962
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9963
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9964
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
9965
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9966
/* ---------------------------------------------------------------------------
9967
    Version: 3.0
9968
   --------------------------------------------------------------------------- */
9969
 
9970
    ActionTypeId NUMBER;
9971
 
9972
BEGIN
9973
 
9974
    -- Get Action Type FK
9975
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9976
      FROM ACTION_TYPE act
9977
     WHERE act.NAME = enumActionTypeName;
9978
 
9979
 
9980
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9981
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
9982
 
9983
 
9984
END Log_Action;
9985
/
9986
 
9987
CREATE OR REPLACE PACKAGE BODY pk_package
9988
IS
9989
/*
9990
------------------------------
9991
||  Last Modified:  J. Tweddle
9992
||  Modified Date:  24/08/2007
9993
||  Body Version:   1.8
9994
------------------------------
9995
*/
9996
 
9997
   /*-------------------------------------------------------------------------------------------------------*/
9998
   PROCEDURE new_version (
9999
      nlastpvid                   IN       NUMBER,
10000
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
10001
      cbuildtype                  IN       CHAR,
10002
      nsettopvid                  IN       NUMBER DEFAULT NULL,
10003
      nrtagid                     IN       NUMBER,
10004
      nuserid                     IN       NUMBER,
10005
      enumissues_state_imported   IN       NUMBER,
10006
      returnpvid                  OUT      NUMBER
10007
   )
10008
   IS
10009
      origpkg_id                   package_versions.pkg_id%TYPE;
10010
      origdlocked                  package_versions.dlocked%TYPE;
10011
      ssv_mm                       package_versions.v_mm%TYPE;
10012
      ssv_nmm                      package_versions.v_nmm%TYPE;
10013
      ssv_ext                      package_versions.v_ext%TYPE;
10014
      spackageversion              VARCHAR2 (4000);
10015
      nissuestypes                 NUMBER;
10016
      nviewid                      NUMBER;
10017
      reccount                     NUMBER;
10018
      isreleased                   package_versions.dlocked%TYPE       := 'N';
10019
      slabel                       VARCHAR2 (4000)                    := NULL;
10020
 
10021
      CURSOR package_versions_cur
10022
      IS
10023
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
10024
           FROM package_versions pv
10025
          WHERE pv.pkg_version = snewpkgversion
10026
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
10027
                                         FROM package_versions origpv
10028
                                        WHERE origpv.pv_id = nlastpvid);
10029
 
10030
      package_versions_rec         package_versions_cur%ROWTYPE;
10031
 
10032
      CURSOR clone_package_versions_cur
10033
      IS
10034
         SELECT DISTINCT pkg_id, dlocked
10035
                    FROM package_versions
10036
                   WHERE pv_id = nlastpvid;
10037
 
10038
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
10039
   BEGIN
10040
      spackageversion := snewpkgversion;
10041
 
10042
      IF nsettopvid IS NULL
10043
      THEN
10044
         -- SetToPv_id is not supplied, hence proceed.
10045
 
10046
         /* ---------------------------------------------------- */
10047
/* Find id package_version exists                       */
10048
/* ---------------------------------------------------- */
10049
         OPEN package_versions_cur;
10050
 
10051
         FETCH package_versions_cur
10052
          INTO package_versions_rec;
10053
 
10054
         IF package_versions_cur%NOTFOUND
10055
         THEN
10056
            ---  Create brand new package ---
10057
            SELECT seq_pv_id.NEXTVAL
10058
              INTO returnpvid
10059
              FROM DUAL;
10060
 
10061
            -- Split Version to get extention + other
10062
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
10063
 
10064
            -- Get previous package to clone from
10065
            OPEN clone_package_versions_cur;
10066
 
10067
            FETCH clone_package_versions_cur
10068
             INTO clone_package_versions_rec;
10069
 
10070
            origpkg_id := clone_package_versions_rec.pkg_id;
10071
            origdlocked := clone_package_versions_rec.dlocked;
10072
 
10073
            CLOSE clone_package_versions_cur;
10074
 
10075
            -- Automated built config
10076
            IF (cbuildtype = 'A')
10077
            THEN
10078
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
10079
                                    -- Make sure that version is still unique
10080
            END IF;
10081
 
10082
            -- Clone Package Version Details --
10083
            INSERT INTO package_versions
10084
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
10085
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
10086
                         v_ext, src_path, pv_description, pv_overview,
10087
                         last_pv_id, owner_id, is_deployable,
10088
                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
10089
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
10090
                      spackageversion AS pkg_version, 'N' AS dlocked,
10091
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
10092
                      ora_sysdatetime AS modified_stamp,
10093
                      nuserid AS modifier_id, ssv_mm AS v_mm,
10094
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
10095
                      pv.pv_description, pv.pv_overview,
10096
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
10097
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
10098
                 FROM package_versions pv
10099
                WHERE pv.pv_id = nlastpvid;
10100
 
10101
            -- Set Issues Type for cloning ---
10102
            IF origdlocked = 'Y'
10103
            THEN
10104
               nissuestypes := enumissues_state_imported;
10105
            ELSE
10106
               nissuestypes := NULL;
10107
            END IF;
10108
 
10109
            -- Update Label for automated built
10110
            IF (cbuildtype = 'A')
10111
            THEN
10112
               slabel := get_automated_label (returnpvid);
10113
 
10114
               UPDATE package_versions pv
10115
                  SET pv.pkg_label = slabel
10116
                WHERE pv.pv_id = returnpvid;
10117
            END IF;
10118
 
10119
            basic_clone (nlastpvid,
10120
                         returnpvid,
10121
                         nrtagid,
10122
                         nuserid,
10123
                         origpkg_id,
10124
                         nissuestypes
10125
                        );
10126
         ELSE
10127
            --- Package already exists, hence reuse ---
10128
            returnpvid := package_versions_rec.pv_id;
10129
            isreleased := package_versions_rec.dlocked;
10130
         END IF;
10131
 
10132
         CLOSE package_versions_cur;
10133
      ELSE
10134
         returnpvid := nsettopvid;
10135
      END IF;
10136
   END new_version;
10137
 
10138
/*-------------------------------------------------------------------------------------------------------*/
10139
   PROCEDURE change_state (
10140
      pvid       IN   NUMBER,
10141
      newstate   IN   package_versions.dlocked%TYPE,
10142
      userid     IN   NUMBER
10143
   )
10144
   IS
10145
   BEGIN
10146
      -- Set package in Released mode
10147
      UPDATE package_versions pv
10148
         SET pv.dlocked = newstate,
10149
             pv.modified_stamp = ora_sysdatetime,
10150
             pv.modifier_id = userid
10151
       WHERE pv.pv_id = pvid;
10152
 
10153
      -- Log action --
10154
      IF newstate = 'Y'
10155
      THEN
10156
         -- RELEASED --
10157
         log_action (pvid,
10158
                     'makeofficial',
10159
                     userid,
10160
                     'Package state change to: Released'
10161
                    );
10162
      ELSIF newstate = 'N'
10163
      THEN
10164
         -- UNLOCKED --
10165
         log_action (pvid,
10166
                     'makeunofficial',
10167
                     userid,
10168
                     'Package state change to: Ulocked'
10169
                    );
10170
      ELSIF newstate = 'P'
10171
      THEN
10172
         -- PENDING APPROVAL --
10173
         log_action (pvid,
10174
                     'add_to_planned',
10175
                     userid,
10176
                     'Package state change to: Pending Approval'
10177
                    );
10178
      ELSIF newstate = 'R'
10179
      THEN
10180
         -- REJECTED --
10181
         log_action (pvid,
10182
                     'reject_package',
10183
                     userid,
10184
                     'Package state change to: Rejected'
10185
                    );
10186
      ELSIF newstate = 'A'
10187
      THEN
10188
         -- APPROVED --
10189
         log_action (pvid,
10190
                     'approve_package',
10191
                     userid,
10192
                     'Package state change to: Approved'
10193
                    );
10194
      END IF;
10195
   END;
10196
 
10197
/*-------------------------------------------------------------------------------------------------------*/
10198
   PROCEDURE destroy_package (
10199
      pvid               IN       NUMBER,
10200
      overridewarnings   IN       CHAR DEFAULT 'N',
10201
      problemstring      OUT      VARCHAR2
10202
   )
10203
   IS
10204
      LOCKED     CHAR;
10205
      pkgid      NUMBER;
10206
      ROWCOUNT   NUMBER;
10207
   BEGIN
10208
      /*
10209
      || This will destroy all package details from database.
10210
      || It will only be used to remove unwanted work in progress packages,
10211
      || or mestaken versions
10212
      */
10213
 
10214
      /*--------------- Business Rules Here -------------------*/
10215
      problemstring := NULL;
10216
 
10217
      IF overridewarnings = 'N'
10218
      THEN
10219
         -- Package must not be official
10220
         SELECT pv.dlocked
10221
           INTO LOCKED
10222
           FROM package_versions pv
10223
          WHERE pv.pv_id = pvid;
10224
 
10225
         IF LOCKED = 'Y'
10226
         THEN
10227
            problemstring :=
10228
                  problemstring
10229
               || '- Package is locked and released.'
10230
               || UTL_TCP.crlf;
10231
         END IF;
10232
 
10233
         -- Cannot remove if used in BOMs
10234
         SELECT COUNT (osc.prod_id)
10235
           INTO ROWCOUNT
10236
           FROM deployment_manager.os_contents osc
10237
          WHERE osc.prod_id = pvid;
10238
 
10239
         IF ROWCOUNT > 0
10240
         THEN
10241
            problemstring :=
10242
                  problemstring
10243
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
10244
               || UTL_TCP.crlf;
10245
         END IF;
10246
 
10247
         -- Cannot remove if Referenced as build dependency
10248
         SELECT COUNT (dep.pv_id)
10249
           INTO ROWCOUNT
10250
           FROM package_dependencies dep
10251
          WHERE dep.dpv_id = pvid;
10252
 
10253
         IF ROWCOUNT > 0
10254
         THEN
10255
            problemstring :=
10256
                  problemstring
10257
               || '- Package is referenced by other package as build dependency.'
10258
               || UTL_TCP.crlf;
10259
         END IF;
10260
 
10261
         -- Cannot remove if Referenced as runtime dependency
10262
         SELECT COUNT (rd.pv_id)
10263
           INTO ROWCOUNT
10264
           FROM runtime_dependencies rd
10265
          WHERE rd.rtd_id = pvid;
10266
 
10267
         IF ROWCOUNT > 0
10268
         THEN
10269
            problemstring :=
10270
                  problemstring
10271
               || '- Package is referenced by other package as runtime dependency.'
10272
               || UTL_TCP.crlf;
10273
         END IF;
10274
 
10275
         -- Cannot remove if Referenced as patch
10276
         SELECT COUNT (pp.pv_id)
10277
           INTO ROWCOUNT
10278
           FROM package_patches pp
10279
          WHERE pp.patch_id = pvid;
10280
 
10281
         IF ROWCOUNT > 0
10282
         THEN
10283
            problemstring :=
10284
                  problemstring
10285
               || '- Package is used as patch by other package.'
10286
               || UTL_TCP.crlf;
10287
         END IF;
10288
      END IF;
10289
 
10290
/*-------------------------------------------------------*/
10291
      IF (problemstring IS NULL)
10292
      THEN
10293
         --- Remove From Work in Progress
10294
         DELETE FROM work_in_progress wip
10295
               WHERE wip.pv_id = pvid;
10296
 
10297
         --- Remove From Pending
10298
         DELETE FROM planned pl
10299
               WHERE pl.pv_id = pvid;
10300
 
10301
         --- Remove From Released area
10302
         DELETE FROM release_content rc
10303
               WHERE rc.pv_id = pvid;
10304
 
10305
         ---Remove From Package Processes
10306
         DELETE FROM package_processes pp
10307
               WHERE pp.pv_id = pvid;
10308
 
10309
         --- Remove Dependencies
10310
         DELETE FROM package_dependencies dep
10311
               WHERE dep.pv_id = pvid;
10312
 
10313
         DELETE FROM package_dependencies dep
10314
               WHERE dep.dpv_id = pvid;
10315
 
10316
         --- Remove Runtime dependencies
10317
         DELETE FROM runtime_dependencies rtd
10318
               WHERE rtd.pv_id = pvid;
10319
 
10320
         DELETE FROM runtime_dependencies rtd
10321
               WHERE rtd.rtd_id = pvid;
10322
 
10323
         --- Remove components
10324
         DELETE FROM product_components pc
10325
               WHERE pc.pv_id = pvid;
10326
 
10327
         DELETE FROM release_components rc
10328
               WHERE rc.pv_id = pvid;
10329
 
10330
         --- Remove From Notification History
10331
         DELETE FROM notification_history nh
10332
               WHERE nh.pv_id = pvid;
10333
 
10334
         --- Remove From Ignore Warnings
10335
         DELETE FROM ignore_warnings iw
10336
               WHERE iw.pv_id = pvid;
10337
 
10338
         --- Remove From Additional Notes
10339
         DELETE FROM additional_notes an
10340
               WHERE an.pv_id = pvid;
10341
 
10342
         --- Remove From CQ Issues
10343
         DELETE FROM cq_issues cq
10344
               WHERE cq.pv_id = pvid;
10345
 
10346
         --- Remove from Package Patches
10347
         DELETE FROM package_patches pp
10348
               WHERE pp.pv_id = pvid;
10349
 
10350
         DELETE FROM package_patches pp
10351
               WHERE pp.patch_id = pvid;
10352
 
10353
         --- Remove From Package Documents
10354
         DELETE FROM package_documents pd
10355
               WHERE pd.pv_id = pvid;
10356
 
10357
         --- Remove from Code Review
10358
         DELETE FROM code_reviews cr
10359
               WHERE cr.pv_id = pvid;
10360
 
10361
         --- Remove from Code Review URL
10362
         DELETE FROM code_review_url cru
10363
               WHERE cru.pv_id = pvid;
10364
 
10365
         --- Remove from Unit Tests
10366
         DELETE FROM unit_tests ut
10367
               WHERE ut.pv_id = pvid;
10368
 
10369
         --- Remove from Package BuildEnv
10370
         DELETE FROM package_build_env pbe
10371
               WHERE pbe.pv_id = pvid;
10372
 
10373
		 --- Remove from Package Build Info
10374
		 DELETE FROM package_build_info pbi
10375
		 	   WHERE pbi.pv_id = pvid;    
10376
 
10377
 
10378
         --- Remove from Build Order
10379
         DELETE FROM build_order bo
10380
               WHERE bo.pv_id = pvid;
10381
 
10382
         --- Remove from Note Manager
10383
         DELETE FROM note_manager nm
10384
               WHERE nm.nid = pvid;
10385
 
10386
         --- Remove from Action log
10387
         DELETE FROM action_log al
10388
               WHERE al.pv_id = pvid;
10389
 
10390
		 --- Remove from Do Not Ripple 
10391
		 DELETE FROM DO_NOT_RIPPLE dnr
10392
		 	   WHERE dnr.PV_ID = pvid;
10393
 
10394
		 --- Remove from Advisory Ripple 
10395
		 DELETE FROM ADVISORY_RIPPLE ar
10396
		 	   WHERE ar.PV_ID = pvid;			   
10397
 
10398
		 --- Remove from Jira Issues 
10399
		 DELETE FROM JIRA_ISSUES jira
10400
		 	   WHERE jira.PV_ID = pvid;
53 mhunt 10401
 
10402
         --- Remove from Package Metrics
10403
         DELETE FROM package_metrics pm
10404
              WHERE pm.pv_id = pvid;
10405
 
51 mhunt 10406
         --- Finally Remove From Package Versions
10407
         --- Get Package name
10408
         SELECT pv.pkg_id
10409
           INTO pkgid
10410
           FROM package_versions pv
10411
          WHERE pv.pv_id = pvid;
10412
 
10413
         DELETE FROM package_versions pv
10414
               WHERE pv.pv_id = pvid;
10415
 
10416
         --- Remove package name if not used any more
10417
         SELECT COUNT (pv.pv_id)
10418
           INTO ROWCOUNT
10419
           FROM package_versions pv
10420
          WHERE pv.pkg_id = pkgid;
10421
 
10422
         IF ROWCOUNT < 1
10423
         THEN
10424
            DELETE FROM PACKAGES pkg
10425
                  WHERE pkg.pkg_id = pkgid;
10426
         END IF;
10427
      END IF;
10428
   END;
10429
 
10430
/*-------------------------------------------------------------------------------------------------------*/
10431
   PROCEDURE new_patch (
10432
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
10433
      nparentpvid        IN       NUMBER,
10434
      spatchidlist       IN       VARCHAR2,
10435
      nuserid            IN       NUMBER,
10436
      returnpatchid      OUT      NUMBER
10437
   )
10438
   IS
10439
      patchpv_id           NUMBER;
10440
      parpkg_id            NUMBER;
10441
      lastinstallorder     NUMBER;
10442
      ispatchdlocked       package_versions.dlocked%TYPE;
10443
      ssv_mm               package_versions.v_mm%TYPE;
10444
      ssv_nmm              package_versions.v_nmm%TYPE;
10445
      ssv_ext              package_versions.v_ext%TYPE;
10446
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
10447
                                                                          ();
10448
 
10449
      CURSOR parent_cur
10450
      IS
10451
         SELECT pv.*, pkg.pkg_name
10452
           FROM package_versions pv, PACKAGES pkg
10453
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
10454
 
10455
      parent_rec           parent_cur%ROWTYPE;
10456
 
10457
      CURSOR patch_cur
10458
      IS
10459
         SELECT pv.*, pg.pkg_name
10460
           FROM package_versions pv, PACKAGES pg
10461
          WHERE pv.pkg_id = parpkg_id
10462
            AND pv.pkg_version = snewpatchversion
10463
            AND pv.pkg_id = pg.pkg_id;
10464
 
10465
      patch_rec            patch_cur%ROWTYPE;
10466
 
10467
      CURSOR releases_cur
10468
      IS
10469
         SELECT rc.pv_id
10470
           FROM release_content rc
10471
          WHERE rc.pv_id = patch_rec.pv_id;
10472
 
10473
      releases_rec         releases_cur%ROWTYPE;
10474
   BEGIN
10475
      -- Get Last Install Order
10476
      SELECT COUNT (*)
10477
        INTO lastinstallorder
10478
        FROM package_patches pp
10479
       WHERE pp.pv_id = nparentpvid;
10480
 
10481
      -- Get parent details
10482
      OPEN parent_cur;
10483
 
10484
      FETCH parent_cur
10485
       INTO parent_rec;
10486
 
10487
      parpkg_id := parent_rec.pkg_id;
10488
 
10489
      -- Find if patch exists in database
10490
      OPEN patch_cur;
10491
 
10492
      FETCH patch_cur
10493
       INTO patch_rec;
10494
 
10495
      -- Parent must be official
10496
      IF parent_rec.dlocked = 'Y'
10497
      THEN
10498
         IF patch_cur%NOTFOUND
10499
         THEN
10500
            ispatchdlocked := 'N';
10501
 
10502
            -- Create new patch version --
10503
            SELECT seq_pv_id.NEXTVAL
10504
              INTO patchpv_id
10505
              FROM DUAL;
10506
 
10507
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
10508
 
10509
            INSERT INTO package_versions
10510
                        (pv_id, pkg_id, pkg_version,
10511
                         dlocked, created_stamp, creator_id,
10512
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
10513
                         src_path,
10514
                         pv_description,
10515
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
10516
						 is_autobuildable, ripple_field
10517
                        )
10518
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
10519
                         ispatchdlocked, ora_sysdate, nuserid,
10520
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
10521
                         parent_rec.src_path,
10522
                            'This is a patch to '
10523
                         || parent_rec.pkg_name
10524
                         || ' '
10525
                         || parent_rec.pkg_version,
10526
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
10527
                        );
10528
 
10529
            INSERT INTO package_patches
10530
                        (pv_id, patch_id, install_order)
10531
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10532
                       lastinstallorder + 1 AS install_order
10533
                  FROM package_versions pv
10534
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10535
 
10536
            /* LOG ACTION */
10537
            log_action (patchpv_id,
10538
                        'new_version',
10539
                        nuserid,
10540
                        'Patch version created: ' || snewpatchversion
10541
                       );
10542
            log_action (nparentpvid,
10543
                        'patch_add',
10544
                        nuserid,
10545
                        'New patch created and attached: ' || snewpatchversion
10546
                       );
10547
         ELSE
10548
            patchpv_id := patch_rec.pv_id;
10549
            ispatchdlocked := patch_rec.dlocked;
10550
 
10551
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
10552
            OPEN releases_cur;
10553
 
10554
            FETCH releases_cur
10555
             INTO releases_rec;
10556
 
10557
            IF releases_cur%NOTFOUND
10558
            THEN
10559
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
10560
               UPDATE package_versions
10561
                  SET is_patch = 'Y'
10562
                WHERE pv_id = patchpv_id;
10563
 
10564
               INSERT INTO package_patches
10565
                           (pv_id, patch_id, install_order)
10566
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10567
                          lastinstallorder + 1 AS install_order
10568
                     FROM package_versions pv
10569
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
10570
            END IF;
10571
 
10572
            CLOSE releases_cur;
10573
 
10574
            /* LOG ACTION */
10575
            log_action (nparentpvid,
10576
                        'patch_add',
10577
                        nuserid,
10578
                           'Patch version was found and attached: '
10579
                        || snewpatchversion
10580
                       );
10581
         END IF;
10582
      END IF;
10583
 
10584
      /* Create Patch Dependencies */
10585
      opatchdepcollector := in_list_number (spatchidlist);
10586
 
10587
      -- Make sure patch is unofficial before altering its dependencies
10588
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
10589
      THEN
10590
         -- Delete Existing Dependencies
10591
         DELETE FROM package_dependencies dep
10592
               WHERE dep.pv_id = patchpv_id;
10593
 
10594
         -- Insert new dependencies
10595
         INSERT INTO package_dependencies
10596
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
10597
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
10598
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
10599
                   'L' AS build_type
10600
              FROM package_versions pv
10601
             WHERE pv.pv_id IN (
10602
                      SELECT *
10603
                        FROM TABLE
10604
                                (CAST
10605
                                    (opatchdepcollector AS relmgr_number_tab_t)
10606
                                ));
10607
      END IF;
10608
 
10609
      -- Return patch_id
10610
      returnpatchid := patchpv_id;
10611
 
10612
      CLOSE parent_cur;
10613
 
10614
      CLOSE patch_cur;
10615
   EXCEPTION
10616
      WHEN DUP_VAL_ON_INDEX
10617
      THEN
10618
         raise_application_error (-20000,
10619
                                     'Patch version '
10620
                                  || snewpatchversion
10621
                                  || ' already exist.'
10622
                                 );
10623
   END;
10624
 
10625
/*-------------------------------------------------------------------------------------------------------*/
10626
   PROCEDURE obsolete_patch (
10627
      patchid            IN   NUMBER,
10628
      isobsolete         IN   CHAR,
10629
      obsoletecomments   IN   VARCHAR2,
10630
      userid             IN   NUMBER
10631
   )
10632
   IS
10633
   BEGIN
10634
      -- Update patch
10635
      UPDATE package_versions pv
10636
         SET pv.is_obsolete = isobsolete,
10637
             pv.obsolete_comments = obsoletecomments
10638
       WHERE pv.pv_id = patchid;
10639
 
10640
      /*
10641
      -- Update patch children
10642
      UPDATE PACKAGE_VERSIONS pv SET
10643
      pv.IS_OBSOLETE = IsObsolete,
10644
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10645
      WHERE pv.PV_ID IN (
10646
                     SELECT DISTINCT dep.DPV_ID
10647
                       FROM PACKAGE_DEPENDENCIES dep
10648
                      WHERE dep.PV_ID = PatchId
10649
                     );
10650
 
10651
 
10652
      -- Update patch parent
10653
      UPDATE PACKAGE_VERSIONS pv SET
10654
      pv.IS_OBSOLETE = IsObsolete,
10655
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10656
      WHERE pv.PV_ID IN (
10657
                     SELECT DISTINCT dep.PV_ID
10658
                       FROM PACKAGE_DEPENDENCIES dep
10659
                      WHERE dep.DPV_ID = PatchId
10660
                     );
10661
 
10662
         */
10663
 
10664
      /* LOG ACTION */
10665
      IF isobsolete IS NOT NULL
10666
      THEN
10667
         log_action (patchid,
10668
                     'patch_obsolete',
10669
                     userid,
10670
                     'Obsolete patch. ' || obsoletecomments
10671
                    );
10672
      ELSE
10673
         log_action (patchid,
10674
                     'patch_obsolete',
10675
                     userid,
10676
                     'Undo patch obsolete.'
10677
                    );
10678
      END IF;
10679
   END;
10680
 
10681
/*-------------------------------------------------------------------------------------------------------*/
10682
   PROCEDURE obsolete_patches (
10683
      spatchidlist       IN   VARCHAR2,
10684
      isobsolete         IN   CHAR,
10685
      obsoletecomments   IN   VARCHAR2,
10686
      userid             IN   NUMBER
10687
   )
10688
   IS
10689
   BEGIN
10690
      /*--------------- Business Rules Here -------------------*/
10691
      IF spatchidlist IS NULL
10692
      THEN
10693
         raise_application_error (-20000,
10694
                                  'Please select one or more Patches.'
10695
                                 );
10696
      END IF;
10697
 
10698
/*-------------------------------------------------------*/
10699
 
10700
      -- Update patch
10701
      UPDATE package_versions pv
10702
         SET pv.is_obsolete = isobsolete,
10703
             pv.obsolete_comments = obsoletecomments
10704
       WHERE pv.pv_id IN (
10705
                SELECT *
10706
                  FROM THE
10707
                          (SELECT CAST
10708
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
10709
                                     )
10710
                             FROM DUAL
10711
                          ));
10712
   /*
10713
   -- Update patch children
10714
   UPDATE PACKAGE_VERSIONS pv SET
10715
   pv.IS_OBSOLETE = IsObsolete,
10716
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10717
   WHERE pv.PV_ID IN (
10718
                  SELECT DISTINCT dep.DPV_ID
10719
                    FROM PACKAGE_DEPENDENCIES dep
10720
                   WHERE dep.PV_ID = PatchId
10721
                  );
10722
 
10723
 
10724
   -- Update patch parent
10725
   UPDATE PACKAGE_VERSIONS pv SET
10726
   pv.IS_OBSOLETE = IsObsolete,
10727
   pv.OBSOLETE_COMMENTS = ObsoleteComments
10728
   WHERE pv.PV_ID IN (
10729
                  SELECT DISTINCT dep.PV_ID
10730
                    FROM PACKAGE_DEPENDENCIES dep
10731
                   WHERE dep.DPV_ID = PatchId
10732
                  );
10733
 
10734
      */
10735
 
10736
   /* LOG ACTION
10737
   IF IsObsolete IS NOT NULL THEN
10738
         Log_Action ( PatchId, 'patch_obsolete', UserId,
10739
                  'Obsolete patch. '|| ObsoleteComments );
10740
   ELSE
10741
      Log_Action ( PatchId, 'patch_obsolete', UserId,
10742
                  'Undo patch obsolete.' );
10743
   END IF;  */
10744
   END;
10745
 
10746
/*-------------------------------------------------------------------------------------------------------*/
10747
   PROCEDURE add_process (
10748
      nprocid         IN   processes.proc_id%TYPE,
10749
      shealthtag      IN   processes.proc_name%TYPE,
10750
      sprocdesc       IN   processes.proc_description%TYPE,
10751
      scmdinterface   IN   processes.run_as%TYPE,
10752
      spkgowner       IN   processes.pkg_owner%TYPE,
10753
      sisinterface    IN   processes.is_interface%TYPE,
10754
      npvid           IN   package_processes.pv_id%TYPE,
10755
      nuserid         IN   NUMBER
10756
   )
10757
   IS
10758
      pkgname   VARCHAR2 (100);
10759
/*Rupesh Release on 17/05/2006*/
10760
   BEGIN
10761
      INSERT INTO processes
10762
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
10763
                   is_interface
10764
                  )
10765
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
10766
                   sisinterface
10767
                  );
10768
 
10769
      pk_package.add_package_process (nprocid, npvid, nuserid);
10770
   END;
10771
 
10772
/*-------------------------------------------------------------------------------------------------------*/
10773
   PROCEDURE add_package_process (
10774
      nprocidlist   IN   VARCHAR2,
10775
      npvid         IN   package_processes.pv_id%TYPE,
10776
      nuserid       IN   NUMBER
10777
   )
10778
   IS
10779
      processname   VARCHAR2 (4000);
10780
 
10781
/*Rupesh Release on 17/05/2006*/
10782
      CURSOR proc_cur
10783
      IS
10784
         SELECT prc.proc_id
10785
           FROM processes prc
10786
          WHERE prc.proc_id IN (
10787
                   SELECT *
10788
                     FROM THE
10789
                             (SELECT CAST
10790
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
10791
                                        )
10792
                                FROM DUAL
10793
                             ));
10794
 
10795
      proc_rec      proc_cur%ROWTYPE;
10796
   BEGIN
10797
      OPEN proc_cur;
10798
 
10799
      FETCH proc_cur
10800
       INTO proc_rec;
10801
 
10802
      WHILE proc_cur%FOUND
10803
      LOOP
10804
         INSERT INTO package_processes
10805
                     (proc_id, pv_id
10806
                     )
10807
              VALUES (proc_rec.proc_id, npvid
10808
                     );
10809
 
10810
         SELECT prc.proc_name
10811
           INTO processname
10812
           FROM processes prc
10813
          WHERE prc.proc_id = proc_rec.proc_id;
10814
 
10815
         -- Log Action --
10816
         log_action (npvid,
10817
                     'process_add',
10818
                     nuserid,
10819
                     'Added process with health tag ' || processname
10820
                    );
10821
 
10822
         FETCH proc_cur
10823
          INTO proc_rec;
10824
      END LOOP;
10825
   END;
10826
 
10827
/*-------------------------------------------------------------------------------------------------------*/
10828
   PROCEDURE remove_process (
10829
      nprocid   IN   package_processes.proc_id%TYPE,
10830
      npvid     IN   package_processes.pv_id%TYPE,
10831
      nuserid   IN   NUMBER
10832
   )
10833
   IS
10834
      processname   VARCHAR2 (4000);
10835
/* Rupesh Release on 17/05/2006*/
10836
   BEGIN
10837
      SELECT prc.proc_name
10838
        INTO processname
10839
        FROM processes prc
10840
       WHERE prc.proc_id = nprocid;
10841
 
10842
      DELETE FROM package_processes
10843
            WHERE proc_id = nprocid AND pv_id = npvid;
10844
 
10845
      -- Log Action --
10846
      log_action (npvid,
10847
                  'process_remove',
10848
                  nuserid,
10849
                  'Removed process with health tag ' || processname
10850
                 );
10851
   END;
10852
/*-------------------------------------------------------------------------------------------------------*/
10853
  /* 
10854
  Author: Rupesh Solanki
10855
  Purpose: To move package versions from one release to another
10856
  Release: 4th September 2006 
10857
 
10858
  */
10859
  PROCEDURE move_package (
10860
   	  npvid  			  IN package_versions.pv_id%TYPE,
10861
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
10862
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
10863
	  nuserid			  IN NUMBER	
10864
  )	
10865
  IS	
10866
 
10867
  oldrtag_name VARCHAR2(4000);
10868
  newrtag_name VARCHAR2(4000);
10869
 
10870
 
10871
 
10872
  BEGIN
10873
 
10874
 
10875
  SELECT rtag_name into oldrtag_name
10876
  FROM RELEASE_TAGS
10877
  WHERE rtag_id = nrtagid;
10878
 
10879
  SELECT rtag_name into newrtag_name
10880
  FROM RELEASE_TAGS
10881
  WHERE rtag_id = nnewrtagid;
10882
 
10883
  /* Table Work In Progress*/
10884
  	   UPDATE WORK_IN_PROGRESS
10885
	   SET RTAG_ID = nnewrtagid
10886
	   WHERE RTAG_ID = nrtagid
10887
	   AND PV_ID = npvid;
10888
 
10889
  /* Table PLANNED*/	
10890
  	   UPDATE PLANNED
10891
	   SET RTAG_ID = nnewrtagid
10892
	   WHERE RTAG_ID = nrtagid
10893
	   AND PV_ID = npvid;   
10894
 
10895
      -- Log Action --
10896
      log_action (npvid,
10897
                  'move_package_version',
10898
                  nuserid,
10899
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
10900
                 );  	   	     
10901
 
10902
 
10903
  END;
10904
 
10905
/*-------------------------------------------------------------------------------------------------------*/
10906
PROCEDURE modify_product_state (
10907
   	  npvid IN package_versions.pv_id%TYPE,
10908
	  nrtagid IN release_tags.rtag_id%TYPE,
10909
	  nstateid IN product_states.state_id%TYPE,
10910
	  nuserid IN NUMBER
10911
   ) IS
10912
 
10913
   sStateName VARCHAR2(4000);
10914
   sRtagName VARCHAR2(4000);
10915
 
10916
  /* 
10917
  Author: Rupesh Solanki
10918
  Purpose: To modify the product state from integration to test to deployment
10919
  Release: 25th January 2006 
10920
  */   
10921
 
10922
  BEGIN
10923
 
10924
  UPDATE RELEASE_CONTENT
10925
  SET PRODUCT_STATE = nstateid
10926
  WHERE PV_ID = npvid
10927
  AND RTAG_ID = nrtagid;
10928
 
10929
 
10930
  SELECT STATE INTO sStateName
10931
  FROM PRODUCT_STATES 
10932
  WHERE STATE_ID = nstateid;
10933
 
10934
  SELECT RTAG_NAME into sRtagName
10935
  FROM RELEASE_TAGS
10936
  WHERE RTAG_ID = nrtagid;
10937
 
10938
 
10939
  -- Log Action --
10940
  log_action (npvid,
10941
              'modify_product_state',
10942
               nuserid,
10943
               sStateName || ' in '|| sRtagName
10944
              );  
10945
 
10946
 
10947
  END;			  	   	     
10948
/*-------------------------------------------------------------------------------------------------------*/
10949
  PROCEDURE add_code_review_url (
10950
        npvid           IN    NUMBER,
10951
        nprojid         IN    NUMBER,
10952
        surl            IN    VARCHAR2,
10953
        sreason         IN    VARCHAR2,
10954
        ddateofreview   IN    DATE
10955
  ) IS
10956
 
10957
  ncrid NUMBER;
10958
 
10959
  /* 
10960
  Author: Jeremy Tweddle
10961
  Date: 24/Aug/2007 
10962
  */   
10963
 
10964
  BEGIN
10965
 
10966
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
10967
 
10968
 
10969
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
10970
                                    last_modified )
10971
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
10972
 
10973
  END;
10974
/*-------------------------------------------------------------------------------------------------------*/
10975
  PROCEDURE update_code_review_url (
10976
        ncrid           IN    NUMBER,
10977
        nprojid         IN    NUMBER,
10978
        surl            IN    VARCHAR2,
10979
        sreason         IN    VARCHAR2
10980
  ) IS
10981
 
10982
  /* 
10983
  Author: Jeremy Tweddle
10984
  Date: 22/Aug/2007 
10985
  */ 
10986
 
10987
  BEGIN
10988
 
10989
      UPDATE code_review_url
10990
      SET url = surl,
10991
          proj_id = nprojid,
10992
          reason = sreason,
10993
          last_modified = ora_sysdate
10994
      WHERE cr_id = ncrid;
10995
 
10996
  END;
10997
/*-------------------------------------------------------------------------------------------------------*/
10998
  PROCEDURE remove_code_review_url (
10999
        ncrid           IN    NUMBER
11000
  ) IS
11001
 
11002
  /* 
11003
  Author: Jeremy Tweddle
11004
  Date: 22/Aug/2007 
11005
  */
11006
 
11007
  BEGIN
11008
 
11009
      DELETE FROM code_review_url
11010
      WHERE cr_id = ncrid;
11011
 
11012
  END;
11013
/*-------------------------------------------------------------------------------------------------------*/
11014
END pk_package;
11015
/
11016
 
11017
CREATE OR REPLACE PACKAGE BODY                 pk_archive
11018
IS
11019
/*
11020
------------------------------
11021
||  Author:  Rupesh Solanki
11022
||  Date:    26 October 2006
11023
||  Version:   1.0
11024
------------------------------
11025
*/
11026
/*---------------------------*/
11027
PROCEDURE populate_packages_table IS
11028
 
11029
BEGIN
11030
		  INSERT INTO archive_manager.PACKAGES
11031
		  (
11032
		  select * from packages where pkg_id not in 
11033
		  		  (select pkg_id from archive_manager.packages)
11034
		  );
11035
 
11036
          INSERT INTO archive_manager.PROCESSES
11037
          (
11038
          select * from processes where proc_id not in 
11039
            (select proc_id from archive_manager.processes)
11040
          );
11041
 
11042
 
11043
 
11044
END;
11045
/*-------------------------------------------------------------------------------------------------------*/
11046
   PROCEDURE populate_archive_data_table (
11047
      nrtagid   IN   release_tags.rtag_id%TYPE
11048
   )
11049
   IS
11050
/*
11051
Reason: To populate the archive_data table with information regarding the
11052
         number of package versions that exist in other releases.
11053
*/
11054
      numcount      NUMBER;
11055
      numusedby     NUMBER;
11056
      numruntime    NUMBER;
11057
 
11058
      /* Get all the package versions in the release */
11059
      CURSOR archive_cur
11060
      IS
11061
         SELECT pv_id
11062
           FROM release_content
11063
          WHERE rtag_id = nrtagid;
11064
 
11065
      archive_rec   archive_cur%ROWTYPE;
11066
   BEGIN
11067
/*--------------- Business Rules Here -------------------*/
11068
/*-------------------------------------------------------*/
11069
      OPEN archive_cur;
11070
 
11071
      FETCH archive_cur
11072
       INTO archive_rec;
11073
 
11074
      WHILE archive_cur%FOUND
11075
      LOOP
11076
        /* How many packages depend on this package version? */
11077
         SELECT COUNT (*)
11078
           INTO numusedby
11079
           FROM package_dependencies
11080
          WHERE dpv_id = archive_rec.pv_id;
11081
 
11082
        /* How many project releases use this package version?  */
11083
         SELECT COUNT (*)
11084
           INTO numcount
11085
           FROM release_content
11086
          WHERE pv_id = archive_rec.pv_id;
11087
 
11088
        /* How many packages have this package version as runtime
11089
        dependency? */
11090
         SELECT COUNT (*)
11091
           INTO numruntime
11092
           FROM runtime_dependencies
11093
          WHERE rtd_id = archive_rec.pv_id;
11094
 
11095
        /* Insert into the archive_data table if they are not runtime dependant
11096
        and package dependant and they exist in that particular release only*/
11097
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
11098
         THEN
11099
            INSERT INTO archive_data
11100
                        (rtag_id, pv_id
11101
                        )
11102
                 VALUES (nrtagid, archive_rec.pv_id
11103
                        );
11104
         END IF;
11105
 
11106
         FETCH archive_cur
11107
          INTO archive_rec;
11108
      END LOOP;
11109
   END;
11110
 
11111
/*-------------------------------------------------------------------------------------------------------*/
11112
   PROCEDURE migrate_pv_to_archive_schema (
11113
      nrtagid   IN   release_tags.rtag_id%TYPE
11114
   )
11115
   IS
11116
   BEGIN
11117
 
11118
      /* MIGRATION - PACKAGE_VERSIONS */
11119
      INSERT INTO archive_manager.package_versions
11120
         SELECT *
11121
           FROM package_versions
11122
          WHERE pv_id IN (SELECT pv_id
11123
                            FROM archive_data);
11124
 
11125
      /* MIGRATION - PACKAGE_BUILD_ENV */
11126
      INSERT INTO archive_manager.package_build_env
11127
         SELECT *
11128
           FROM package_build_env
11129
          WHERE pv_id IN (SELECT pv_id
11130
                            FROM archive_data);
11131
 
11132
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
11133
      DELETE FROM package_build_env
11134
            WHERE pv_id IN (SELECT pv_id
11135
                              FROM archive_data);
11136
 
11137
      /* MIGRATION - PACKAGE_BUILD_INFO */
11138
      INSERT INTO archive_manager.package_build_info
11139
         SELECT *
11140
           FROM package_build_info
11141
          WHERE pv_id IN (SELECT pv_id
11142
                            FROM archive_data);
11143
 
11144
      /* PURGE DATA FROM PACKAGE_BUILD_info */
11145
      DELETE FROM package_build_info
11146
            WHERE pv_id IN (SELECT pv_id
11147
                              FROM archive_data);							  
11148
 
11149
      /* MIGRATION - UNIT_TESTS  */
11150
      INSERT INTO archive_manager.unit_tests
11151
         SELECT *
11152
           FROM unit_tests
11153
          WHERE pv_id IN (SELECT pv_id
11154
                            FROM archive_data);
11155
 
11156
      /* PURGE DATA FROM UNIT_TESTS*/
11157
      DELETE FROM unit_tests
11158
            WHERE pv_id IN (SELECT pv_id
11159
                              FROM archive_data);
11160
 
11161
      /* MIGRATION - PACKAGE_PROCESSES */
11162
      INSERT INTO archive_manager.package_processes
11163
         SELECT *
11164
           FROM package_processes
11165
          WHERE pv_id IN (SELECT pv_id
11166
                            FROM archive_data);
11167
 
11168
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
11169
      DELETE FROM package_processes
11170
            WHERE pv_id IN (SELECT pv_id
11171
                              FROM archive_data);
11172
 
11173
      /* MIGRATION - PACKAGE_DEPENDENCIES */
11174
      INSERT INTO archive_manager.package_dependencies
11175
         SELECT *
11176
           FROM package_dependencies
11177
          WHERE pv_id IN (SELECT pv_id
11178
                            FROM archive_data);
11179
 
11180
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
11181
      DELETE FROM package_dependencies
11182
            WHERE pv_id IN (SELECT pv_id
11183
                              FROM archive_data);
11184
 
11185
      /* MIGRATION - CODE_REVIEWS */
11186
      INSERT INTO archive_manager.code_reviews
11187
         SELECT *
11188
           FROM code_reviews
11189
          WHERE pv_id IN (SELECT pv_id
11190
                            FROM archive_data);
11191
 
11192
      /* PURGE DATA FROM CODE_REVIEWS*/
11193
      DELETE FROM code_reviews
11194
            WHERE pv_id IN (SELECT pv_id
11195
                              FROM archive_data);
11196
 
11197
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
11198
      INSERT INTO archive_manager.runtime_dependencies
11199
         SELECT *
11200
           FROM runtime_dependencies
11201
          WHERE pv_id IN (SELECT pv_id
11202
                            FROM archive_data);
11203
 
11204
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
11205
      DELETE FROM runtime_dependencies
11206
            WHERE pv_id IN (SELECT pv_id
11207
                              FROM archive_data);
11208
 
11209
      /* MIGRATION - PACKAGE_DOCUMENTS */
11210
      INSERT INTO archive_manager.package_documents
11211
         SELECT *
11212
           FROM package_documents
11213
          WHERE pv_id IN (SELECT pv_id
11214
                            FROM archive_data);
11215
 
11216
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
11217
      DELETE FROM package_documents
11218
            WHERE pv_id IN (SELECT pv_id
11219
                              FROM archive_data);
11220
 
11221
      /* MIGRATION - PACKAGE_PATCHES */
11222
      INSERT INTO archive_manager.package_patches
11223
         SELECT *
11224
           FROM package_patches
11225
          WHERE pv_id IN (SELECT pv_id
11226
                            FROM archive_data);
11227
 
11228
      /* PURGE DATA FROM PACKAGE_PATCHES*/
11229
      DELETE FROM package_patches
11230
            WHERE pv_id IN (SELECT pv_id
11231
                              FROM archive_data);
11232
 
11233
      /* MIGRATION - CQ_ISSUES */
11234
      INSERT INTO archive_manager.cq_issues
11235
         SELECT *
11236
           FROM cq_issues
11237
          WHERE pv_id IN (SELECT pv_id
11238
                            FROM archive_data);
11239
 
11240
      /* PURGE DATA FROM CQ_ISSUES*/
11241
      DELETE FROM cq_issues
11242
            WHERE pv_id IN (SELECT pv_id
11243
                              FROM archive_data);
11244
 
11245
      /* MIGRATION - ADDITIONAL_NOTES */
11246
      INSERT INTO archive_manager.additional_notes
11247
         SELECT *
11248
           FROM additional_notes
11249
          WHERE pv_id IN (SELECT pv_id
11250
                            FROM archive_data);
11251
 
11252
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
11253
      DELETE FROM additional_notes
11254
            WHERE pv_id IN (SELECT pv_id
11255
                              FROM archive_data);
11256
 
11257
      /* MIGRATION - RELEASE_COMPONENTS */
11258
      INSERT INTO archive_manager.release_components
11259
         SELECT *
11260
           FROM release_components
11261
          WHERE pv_id IN (SELECT pv_id
11262
                            FROM archive_data);
11263
 
11264
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
11265
      DELETE FROM release_components
11266
            WHERE pv_id IN (SELECT pv_id
11267
                              FROM archive_data);
11268
 
11269
      /* MIGRATION - IGNORE_WARNINGS */
11270
      INSERT INTO archive_manager.ignore_warnings
11271
         SELECT *
11272
           FROM ignore_warnings
11273
          WHERE pv_id IN (SELECT pv_id
11274
                            FROM archive_data);
11275
 
11276
      /* PURGE DATA FROM IGNORE_WARNINGS*/
11277
      DELETE FROM ignore_warnings
11278
            WHERE pv_id IN (SELECT pv_id
11279
                              FROM archive_data);
11280
 
11281
      /* PURGE DATA FROM WORK_IN_PROGRESS */
11282
      DELETE FROM work_in_progress
11283
            WHERE rtag_id = nrtagid;
11284
 
11285
      /* PURGE DATA FROM PLANNED */
11286
      DELETE FROM planned
11287
            WHERE rtag_id = nrtagid;
11288
 
11289
      /* MIGRATION - JIRA_ISSUES */
11290
      INSERT INTO archive_manager.jira_issues
11291
         SELECT *
11292
           FROM jira_issues
11293
          WHERE pv_id IN (SELECT pv_id
11294
                            FROM archive_data);
11295
 
11296
      /* PURGE DATA FROM JIRA_ISSUES*/
11297
      DELETE FROM jira_issues
11298
            WHERE pv_id IN (SELECT pv_id
11299
                              FROM archive_data);
11300
 
11301
      /* MIGRATION - PRODUCT_COMPONENTS */
11302
      INSERT INTO archive_manager.product_components
11303
         SELECT *
11304
           FROM product_components
11305
          WHERE pv_id IN (SELECT pv_id
11306
                            FROM archive_data);
11307
 
11308
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11309
      DELETE FROM product_components
11310
            WHERE pv_id IN (SELECT pv_id
11311
                              FROM archive_data);
11312
 
11313
      /* MIGRATION - ACTION_LOG */
11314
      INSERT INTO archive_manager.action_log
11315
         SELECT *
11316
           FROM action_log
11317
          WHERE pv_id IN (SELECT pv_id
11318
                            FROM archive_data);
11319
 
11320
      /* PURGE DATA FROM ACTION_LOG*/
11321
      DELETE FROM action_log
11322
            WHERE pv_id IN (SELECT pv_id
11323
                              FROM archive_data);
11324
 
11325
 
11326
   END;
11327
 
11328
/*-------------------------------------------------------------------------------------------------------*/
11329
   PROCEDURE migrate_rtag_to_archive_schema (
11330
      nrtagid   IN   release_tags.rtag_id%TYPE
11331
   )
11332
   IS
11333
   BEGIN
11334
      /* MIGRATION - DO_NOT_RIPPLE */
11335
      INSERT INTO archive_manager.do_not_ripple
11336
         SELECT *
11337
           FROM do_not_ripple dnp
11338
          WHERE rtag_id = nrtagid;
11339
 
11340
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11341
      DELETE FROM do_not_ripple
11342
            WHERE rtag_id = nrtagid;
11343
 
11344
      /* MIGRATION - ADVISORY_RIPPLES*/
11345
      INSERT INTO archive_manager.advisory_ripples
11346
         SELECT *
11347
           FROM advisory_ripple dnp
11348
          WHERE rtag_id = nrtagid;
11349
 
11350
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11351
      DELETE FROM advisory_ripple
11352
            WHERE rtag_id = nrtagid;			
11353
 
11354
      /* MIGRATION - RELEASE_CONTENT */
11355
      INSERT INTO archive_manager.release_content
11356
         SELECT *
11357
           FROM release_content
11358
          WHERE rtag_id = nrtagid;
11359
 
11360
      /* PURGE DATA FROM RELEASE_CONTENT*/
11361
      DELETE FROM release_content
11362
            WHERE rtag_id = nrtagid;
11363
 
11364
      /* MIGRATION - NOTIFICATION_HISTORY */
11365
      INSERT INTO archive_manager.notification_history
11366
         SELECT *
11367
           FROM notification_history
11368
          WHERE rtag_id = nrtagid;
11369
 
11370
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11371
      DELETE FROM notification_history
11372
            WHERE rtag_id = nrtagid;
11373
 
11374
      /* MIGRATION - BUILD_ORDER   */
11375
      INSERT INTO archive_manager.build_order
11376
         SELECT *
11377
           FROM build_order
11378
          WHERE rtag_id = nrtagid;
11379
 
11380
      /* PURGE DATA FROM BUILD_ORDER*/
11381
      DELETE FROM build_order
11382
            WHERE rtag_id = nrtagid;
11383
 
11384
      /* MIGRATION - PROJECT_ACTION_LOG */
11385
      INSERT INTO archive_manager.project_action_log
11386
         SELECT *
11387
           FROM project_action_log
11388
          WHERE rtag_id = nrtagid;
11389
 
11390
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11391
      DELETE FROM project_action_log
11392
            WHERE rtag_id = nrtagid;
11393
 
11394
      /* MIGRATION - DEPRECATED_PACKAGES */
11395
      INSERT INTO archive_manager.deprecated_packages
11396
         SELECT *
11397
           FROM deprecated_packages
11398
          WHERE rtag_id = nrtagid;
11399
 
11400
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11401
      DELETE FROM deprecated_packages
11402
            WHERE rtag_id = nrtagid;
11403
 
11404
      /* MIGRATION - RELEASE_TAGS */
11405
      INSERT INTO archive_manager.release_tags
11406
         SELECT *
11407
           FROM release_tags
11408
          WHERE rtag_id = nrtagid;
11409
 
11410
 
11411
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11412
      DELETE FROM package_versions
11413
            WHERE pv_id IN (SELECT pv_id
11414
                              FROM archive_data);
11415
 
11416
 
11417
   END;
11418
 
11419
/*-------------------------------------------------------------------------------------------------------*/
11420
   PROCEDURE clean_up_archive_data_table (
11421
      nrtagid   IN   release_tags.rtag_id%TYPE
11422
   )
11423
   IS
11424
   BEGIN
11425
      /* Cleaning Up The Archive_Data Table */
11426
      DELETE FROM archive_data
11427
            WHERE rtag_id = nrtagid;
11428
   END;
11429
 
11430
/*-------------------------------------------------------------------------------------------------------*/
11431
   PROCEDURE write_action_log (
11432
      nuserid   IN   NUMBER,
11433
      nrtagid   IN   release_tags.rtag_id%TYPE
11434
   )
11435
   IS
11436
   BEGIN
11437
      /* Write Into Archive_Action_Log Table */
11438
      INSERT INTO archive_action_log
11439
                  (user_id, date_time_stamp, rtag_id,
11440
                   description
11441
                  )
11442
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11443
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11444
                  );
11445
   END;
11446
/*-------------------------------------------------------------------------------------------------------*/
11447
END pk_archive;
11448
/
11449
 
11450
CREATE OR REPLACE PACKAGE BODY pk_rmapi_test
11451
IS
11452
/*
11453
------------------------------
11454
||  Last Modified:  Rupesh Solanki
11455
||  Modified Date:  11 September 2006
11456
||  Body Version:   2.0
11457
------------------------------
11458
*/
11459
 
11460
   /*-------------------------------------------------------------------------------------------------------*/
11461
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11462
      RETURN typecur
11463
   IS
11464
      npvid     NUMBER  := 0;
11465
      RECORDS   typecur;
11466
   BEGIN
11467
      BEGIN
11468
         -- Get PV_ID --
11469
         SELECT pv.pv_id
11470
           INTO npvid
11471
           FROM PACKAGES pkg, package_versions pv
11472
          WHERE pv.pkg_id = pkg.pkg_id
11473
            AND pkg.pkg_name = pkgname
11474
            AND pv.pkg_version = pkgversion;
11475
      EXCEPTION
11476
         WHEN NO_DATA_FOUND
11477
         THEN
11478
            raise_application_error (-20000, 'Package Not Found!');
11479
            --WHEN OTHERS THEN
11480
                  -- Consider logging the error and then re-raise
11481
            RAISE;
11482
      END;
11483
 
11484
      -- Finally get package dependencies --
11485
      OPEN RECORDS FOR
11486
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11487
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11488
          WHERE dep.pv_id = npvid
11489
            AND dpv.pkg_id = dpkg.pkg_id
11490
            AND dpv.pv_id = dep.dpv_id;
11491
 
11492
      RETURN RECORDS;
11493
   END;
11494
 
11495
/*-------------------------------------------------------------------------------------------------------*/
11496
   FUNCTION wip_iteration_package (
11497
      projname        VARCHAR2,
11498
      iterationname   VARCHAR2,
11499
      pkgname         VARCHAR2
11500
   )
11501
      RETURN typecur
11502
   IS
11503
      nrtagid   NUMBER  := 0;
11504
      RECORDS   typecur;
11505
   BEGIN
11506
      BEGIN
11507
         -- Get latest rtag_id --
11508
         SELECT rt.rtag_id
11509
           INTO nrtagid
11510
           FROM projects proj, release_tags rt
11511
          WHERE rt.proj_id = proj.proj_id
11512
            AND UPPER (proj.proj_name) = UPPER (projname)
11513
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
11514
 
11515
         IF (nrtagid IS NULL)
11516
         THEN
11517
            raise_application_error (-20000,
11518
                                     'Work In Progress is Not Found!');
11519
         END IF;
11520
      EXCEPTION
11521
         WHEN NO_DATA_FOUND
11522
         THEN
11523
            raise_application_error (-20000,
11524
                                     'Work In Progress is Not Found!');
11525
            RAISE;
11526
      END;
11527
 
11528
      -- Finally get package dependencies --
11529
      OPEN RECORDS FOR
11530
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
11531
                pv.src_path
11532
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
11533
          WHERE pv.pkg_id = pkg.pkg_id
11534
            AND wip.pv_id = pv.pv_id
11535
            AND wip.rtag_id = nrtagid
11536
            AND pkg.pkg_name = pkgname;
11537
 
11538
      RETURN RECORDS;
11539
   END;
11540
 
11541
/*-------------------------------------------------------------------------------------------------------*/
11542
   FUNCTION auto_make_release (
11543
      rtagid                   IN   NUMBER,
11544
      pkgname                  IN   VARCHAR2,
11545
      vext                     IN   VARCHAR2,
11546
      newpkgversion            IN   VARCHAR2,
11547
      label                    IN   VARCHAR2,
11548
      dependenciesimportlist   IN   VARCHAR2,
11549
      isrippled                IN   NUMBER,
11550
      username                 IN   VARCHAR2
11551
   )
11552
      RETURN NUMBER
11553
   IS
11554
      pvid                            NUMBER                        := 0;
11555
      userid                          NUMBER;
11556
      dlocked                         VARCHAR2 (20)                 := NULL;
11557
      clonefrompvid                   NUMBER;
11558
      ssv_mm                          package_versions.v_mm%TYPE;
11559
      ssv_nmm                         package_versions.v_nmm%TYPE;
11560
      ssv_ext                         package_versions.v_ext%TYPE;
11561
      return_package_not_found        NUMBER                        := -1;
11562
      return_package_already_exists   NUMBER                        := -2;
11563
      return_not_approved             NUMBER                        := -3;
11564
   BEGIN
11565
      /*--------------- Business Rules Here -------------------*/
11566
      IF (rtagid IS NULL)
11567
      THEN
11568
         raise_application_error (-20000, 'RtagId must be supplied.');
11569
      END IF;
11570
 
11571
      IF (pkgname IS NULL)
11572
      THEN
11573
         raise_application_error (-20000, 'PkgName must be supplied.');
11574
      END IF;
11575
 
11576
      IF (newpkgversion IS NULL)
11577
      THEN
11578
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11579
      END IF;
11580
 
11581
      IF (label IS NULL)
11582
      THEN
11583
         raise_application_error (-20000, 'Label must be supplied.');
11584
      END IF;
11585
 
11586
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11587
      THEN
11588
         raise_application_error
11589
            (-20000,
11590
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
11591
            );
11592
      END IF;
11593
 
11594
      IF (username IS NULL)
11595
      THEN
11596
         raise_application_error (-20000, 'UserName must be supplied.');
11597
      END IF;
11598
 
11599
      -- Get user_id
11600
      BEGIN
11601
         SELECT usr.user_id
11602
           INTO userid
11603
           FROM users usr
11604
          WHERE UPPER (usr.user_name) = UPPER (username)
11605
            AND usr.is_disabled IS NULL;
11606
      EXCEPTION
11607
         WHEN NO_DATA_FOUND
11608
         THEN
11609
            raise_application_error (-20000,
11610
                                        'UserName '
11611
                                     || username
11612
                                     || ' is not valid or disabled.'
11613
                                    );
11614
      END;
11615
 
11616
/*-------------------------------------------------------*/
11617
 
11618
      -- Create package if necessary
11619
      IF isrippled = 1
11620
      THEN
11621
         /* Ripple Build */
11622
         BEGIN
11623
            -- Make sure that package does not exist
11624
            SELECT pv.pv_id
11625
              INTO pvid
11626
              FROM package_versions pv, PACKAGES pkg
11627
             WHERE pv.pkg_id = pkg.pkg_id
11628
               AND pkg.pkg_name = pkgname
11629
               AND pv.pkg_version = newpkgversion;
11630
         EXCEPTION
11631
            WHEN NO_DATA_FOUND
11632
            THEN
11633
               pvid := 0;
11634
         END;
11635
 
11636
         IF (pvid = 0)
11637
         THEN
11638
            -- Split current version in parts
11639
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11640
 
11641
            BEGIN
11642
               -- Find package to be replaced with thie ripple package
11643
               IF vext = ssv_ext
11644
               THEN
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 = ssv_ext;
11654
               ELSE
11655
                  SELECT pv.pv_id
11656
                    INTO clonefrompvid
11657
                    FROM PACKAGES pkg, package_versions pv,
11658
                         release_content rc
11659
                   WHERE rc.pv_id = pv.pv_id
11660
                     AND pv.pkg_id = pkg.pkg_id
11661
                     AND rc.rtag_id = rtagid
11662
                     AND pkg.pkg_name = pkgname
11663
                     AND pv.v_ext = vext;
11664
               END IF;
11665
            EXCEPTION
11666
               WHEN NO_DATA_FOUND
11667
               THEN
11668
                  raise_application_error
11669
                                        (-20000,
11670
                                            'Cannot get CloneFromPvId. VExt='
11671
                                         || vext
11672
                                         || ', RtagId='
11673
                                         || rtagid
11674
                                         || ', PkgName='
11675
                                         || pkgname
11676
                                         || ', SSV_EXT='
11677
                                         || ssv_ext
11678
                                        );
11679
            END;
11680
 
11681
            IF vext = ssv_ext
11682
            THEN
11683
               -- Create package
11684
               seed_package_names_versions (pkgname,
11685
                                            newpkgversion,
11686
                                            userid,
11687
                                            pvid,
11688
                                            clonefrompvid
11689
                                           );
11690
            ELSE
11691
               -- Create package
11692
               seed_package_names_versions2 (pkgname,
11693
                                             newpkgversion,
11694
                                             userid,
11695
                                             pvid,
11696
                                             clonefrompvid
11697
                                            );
11698
            END IF;
11699
 
11700
            -- Update Package reason for release
11701
            UPDATE package_versions pv
11702
               SET pv.comments = 'Rippled Build.',
11703
                   pv.build_type = 'Y'
11704
             WHERE pv.pv_id = pvid;
11705
         ELSE
11706
            -- Package already exists, hence cannot be used for ripple build
11707
            RETURN return_package_already_exists;
11708
         END IF;
11709
      ELSE
11710
         /* Auto build from Pending area */
11711
 
11712
         -- Find package in pending area
11713
         BEGIN
11714
            SELECT pv.pv_id, pv.dlocked
11715
              INTO pvid, dlocked
11716
              FROM planned pl, package_versions pv, PACKAGES pkg
11717
             WHERE pl.pv_id = pv.pv_id
11718
               AND pv.pkg_id = pkg.pkg_id
11719
               AND pl.rtag_id = rtagid
11720
               AND pkg.pkg_name = pkgname
11721
               AND pv.dlocked = 'A'
11722
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11723
                                                   NVL (vext, '|LINK_A_NULL|');
11724
         EXCEPTION
11725
            WHEN NO_DATA_FOUND
11726
            THEN
11727
               pvid := 0;
11728
         END;
11729
 
11730
         IF (pvid = 0)
11731
         THEN
11732
            -- Package does not exist in pending area, hence report it
11733
            RETURN return_package_not_found;
11734
         ELSIF (dlocked != 'A')
11735
         THEN
11736
            -- Package is not approved for autobuild
11737
            RETURN return_not_approved;
11738
         END IF;
11739
      END IF;
11740
 
11741
      BEGIN
11742
         -- Import Dependencies
11743
         import_dependencies (pvid, dependenciesimportlist, userid);
11744
      END;
11745
 
11746
      BEGIN
11747
         -- Split current version in parts
11748
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11749
 
11750
         -- Update Package Details
11751
         UPDATE package_versions pv
11752
            SET pv.pkg_version = newpkgversion,
11753
                pv.v_ext = ssv_ext,
11754
                pv.v_mm = ssv_mm,
11755
                pv.v_nmm = ssv_nmm,
11756
                pv.pkg_label = label
11757
          WHERE pv.pv_id = pvid;
11758
      EXCEPTION
11759
         WHEN DUP_VAL_ON_INDEX
11760
         THEN
11761
            -- Package already exists, hence cannot be used for ripple build
11762
            RETURN return_package_already_exists;
11763
      END;
11764
 
11765
	  -- Update the is_autobuildable
11766
	  update package_versions 
11767
	  set is_autobuildable = 'Y'
11768
	  where pv_id = pvid;	  
11769
 
11770
      -- Now release package
11771
      pk_environment.auto_make_release (pvid,
11772
                                        rtagid,
11773
                                        userid,
11774
                                        vext,
11775
                                        ssv_ext,
11776
                                        clonefrompvid
11777
                                       );
11778
 
11779
 
11780
      RETURN pvid;
11781
   END;
11782
 
11783
/*-------------------------------------------------------------------------------------------------------*/
11784
   PROCEDURE import_dependencies (
11785
      pvid                     IN   NUMBER,
11786
      dependenciesimportlist   IN   VARCHAR2,
11787
      userid                   IN   NUMBER
11788
   )
11789
   IS
11790
/*
11791
|| DependenciesImportList Format:
11792
|| "pkgA","1.0.0";"pkgB","2.0.0";
11793
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11794
*/
11795
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11796
         INDEX BY VARCHAR2 (4000);
11797
 
11798
      seperator         VARCHAR2 (2)           := '||';
11799
      pkgname           VARCHAR2 (4000);
11800
      pkgversion        VARCHAR2 (4000);
11801
      buildtype         VARCHAR2 (50);
11802
      pkgid             NUMBER;
11803
      vext              VARCHAR2 (4000);
11804
      dpvid             NUMBER;
11805
      slist             VARCHAR2 (4000);
11806
      cbuildtypes       tdictionary;
11807
      dependencyrow     NUMBER;
11808
      sdependency       VARCHAR2 (4000);
11809
      first_pos         VARCHAR2 (4000);
11810
      second_pos        VARCHAR2 (4000);
11811
      third_pos         VARCHAR2 (4000);
11812
      forth_pos         VARCHAR2 (4000);
11813
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11814
 
11815
      CURSOR curbuildtype
11816
      IS
11817
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11818
                dep.build_type
11819
           FROM package_dependencies dep, package_versions dpv
11820
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11821
 
11822
      recbuildtype      curbuildtype%ROWTYPE;
11823
   BEGIN
11824
      slist := dependenciesimportlist;
11825
 
11826
      -- Preformat String
11827
      IF NOT slist IS NULL
11828
      THEN
11829
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11830
         slist := REPLACE (slist, UTL_TCP.crlf);
11831
                            -- Remove new line and carriage-return characters
11832
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
11833
      END IF;
11834
 
11835
      -- Get Current Dependencies
11836
      OPEN curbuildtype;
11837
 
11838
      FETCH curbuildtype
11839
       INTO recbuildtype;
11840
 
11841
      WHILE curbuildtype%FOUND
11842
      LOOP
11843
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
11844
 
11845
         FETCH curbuildtype
11846
          INTO recbuildtype;
11847
      END LOOP;
11848
 
11849
      CLOSE curbuildtype;
11850
 
11851
      -- Separate dependencies with ; separator
11852
      citemcollection := in_list_varchar2 (slist, ';');
11853
 
11854
      BEGIN
11855
         -- Remove old dependencies
11856
         DELETE FROM package_dependencies dep
11857
               WHERE dep.pv_id = pvid;
11858
 
11859
         -- Loop through dependencies
11860
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11861
         LOOP
11862
            -- Extract pkg_name and pkg_version
11863
            sdependency := citemcollection (dependencyrow);
11864
            first_pos := INSTR (sdependency, '"', 1, 1);
11865
            second_pos := INSTR (sdependency, '"', 1, 2);
11866
            third_pos := INSTR (sdependency, '"', 1, 3);
11867
            forth_pos := INSTR (sdependency, '"', 1, 4);
11868
            pkgname :=
11869
               SUBSTR (sdependency,
11870
                       (first_pos + 1),
11871
                       (second_pos - first_pos - 1)
11872
                      );
11873
            pkgversion :=
11874
               SUBSTR (sdependency,
11875
                       (third_pos + 1),
11876
                       (forth_pos - third_pos - 1)
11877
                      );
11878
 
11879
            -- Dependency must exits to be linked against
11880
            BEGIN
11881
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11882
                 INTO dpvid, pkgid, vext
11883
                 FROM package_versions pv, PACKAGES pkg
11884
                WHERE pv.pkg_id = pkg.pkg_id
11885
                  AND pkg.pkg_name = pkgname
11886
                  AND pv.pkg_version = pkgversion;
11887
            EXCEPTION
11888
               WHEN NO_DATA_FOUND
11889
               THEN
11890
                  raise_application_error
11891
                                  (-20000,
11892
                                      'Dependency ['
11893
                                   || pkgname
11894
                                   || ' '
11895
                                   || pkgversion
11896
                                   || '] does not exist yet and cannot be used!'
11897
                                  );
11898
            END;
11899
 
11900
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11901
            BEGIN
11902
               buildtype := cbuildtypes (pkgid || seperator || vext);
11903
 
11904
               IF buildtype IS NULL
11905
               THEN
11906
                  -- Set build type to LinkPackageArchive by default
11907
                  buildtype := 'L';
11908
               END IF;
11909
            EXCEPTION
11910
               WHEN NO_DATA_FOUND
11911
               THEN
11912
                  buildtype := 'L';
11913
            END;
11914
 
11915
            -- Insert Dependencies
11916
            update_package_dependency (pvid,
11917
                                       pkgname,
11918
                                       pkgversion,
11919
                                       buildtype,
11920
                                       userid,
11921
 
11922
                                      );
11923
         END LOOP;
11924
      END;
11925
   END;
11926
 
11927
/*-------------------------------------------------------------------------------------------------------*/
11928
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11929
      RETURN VARCHAR2
11930
   IS
11931
      pkgversion   VARCHAR2 (4000);
11932
   BEGIN
11933
      BEGIN
11934
         SELECT pv.pkg_version
11935
           INTO pkgversion
11936
           FROM PACKAGES pkg, release_content rc, package_versions pv
11937
          WHERE pv.pv_id = rc.pv_id
11938
            AND pkg.pkg_id = pv.pkg_id
11939
            AND pkg.pkg_name = pkgname
11940
            AND rc.rtag_id = rtagid;
11941
 
11942
         RETURN pkgversion;
11943
      END;
11944
   END;
11945
 
11946
/*-------------------------------------------------------------------------------------------------------*/
11947
PROCEDURE CQ_TEST IS
11948
 
11949
  INPUT NUMBER(8,2);
11950
  RESULT VARCHAR2(50);
11951
BEGIN
11952
  INPUT := 33558440;
11953
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
11954
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
11955
 
11956
 
11957
END;
11958
/*-------------------------------------------------------------------------------------------------------*/
11959
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
11960
 
11961
   projId NUMBER;
11962
   projIdDB NUMBER;
11963
   TOTAL NUMBER;
11964
   AUTO_TOTAL NUMBER;
11965
   rtagIdDB NUMBER;
11966
 
11967
   BEGIN
11968
   		SELECT count(*) INTO TOTAL 
11969
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
11970
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
11971
 
11972
		SELECT count(*) INTO AUTO_TOTAL 
11973
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
11974
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
11975
		and rc.rtag_id = RtagId;
11976
 
11977
		BEGIN
11978
			SELECT RTAG_ID INTO rtagIdDB
11979
			FROM DASH_BOARD
11980
			WHERE RTAG_ID = RtagId;
11981
 
11982
			SELECT PROJ_ID INTO projIdDB
11983
			FROM DASH_BOARD
11984
			WHERE RTAG_ID = RtagId;
11985
            EXCEPTION
11986
               WHEN NO_DATA_FOUND
11987
			   THEN	rtagIdDB := '';
11988
 
11989
		END; 			
11990
 
11991
		IF rtagIdDB IS NULL THEN
11992
			SELECT PROJ_ID INTO projId
11993
			FROM RELEASE_TAGS
11994
			WHERE RTAG_ID = RtagId;
11995
 
11996
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
11997
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
11998
		ELSE
11999
			UPDATE DASH_BOARD
12000
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
12001
				AUTOMATED_PACKAGES = AUTO_TOTAL,
12002
				TOTAL_PACKAGES = TOTAL
12003
			WHERE PROJ_ID = projIdDB
12004
			AND RTAG_ID = rtagIdDB; 	
12005
		END IF;
12006
 
12007
 
12008
 
12009
 
12010
 
12011
 
12012
   END;
12013
 
12014
 
12015
/*-------------------------------------------------------------------------------------------------------*/   
12016
END pk_rmapi_test;
12017
/
12018
 
12019
CREATE OR REPLACE PACKAGE BODY PK_APP_UTILS IS
12020
 
12021
/*
12022
------------------------------
12023
||  Last Modified:  S.Vukovic
12024
||  Modified Date:  26/Apr/2005
12025
||  Body Version:   1.0
12026
------------------------------
12027
*/
12028
 
12029
 
12030
/*-------------------------------------------------------------------------------------------------------*/
12031
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
12032
 
12033
 
12034
BEGIN
12035
 
12036
 
12037
	IF (NOT RtagId IS NULL) THEN
12038
		-- Case with RTAG_ID present
12039
		OPEN records FOR
12040
		SELECT rt.PROJ_ID,
12041
			   rt.RTAG_ID AS RTAG_ID
12042
		  FROM RELEASE_TAGS rt
12043
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
12044
 
12045
	ELSIF (NOT ProjId IS NULL) THEN
12046
		-- Case with PROJ_ID present
12047
		OPEN records FOR
12048
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
12049
			   -1 AS RTAG_ID
12050
		  FROM DUAL;
12051
 
12052
	ELSE
12053
		-- Case with none present
12054
		OPEN records FOR
12055
		SELECT -1 AS PROJ_ID,
12056
			   -1 AS RTAG_ID
12057
		  FROM DUAL;
12058
 
12059
	END IF;
12060
 
12061
 
12062
 
12063
 
12064
   	--RETURN records;
12065
 
12066
END;
12067
/*-------------------------------------------------------------------------------------------------------*/
12068
END PK_APP_UTILS;
12069
/
12070
 
12071
CREATE OR REPLACE PACKAGE BODY PK_RELEASE_TEST IS
12072
 
12073
 
12074
/*
12075
------------------------------
12076
||  Last Modified:  S.Vukovic
12077
||  Modified Date:  12/Sep/2005
12078
||  Body Version:   3.0
12079
------------------------------
12080
*/
12081
 
12082
 
12083
/*-------------------------------------------------------------------------------------------------------*/
12084
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
12085
 
12086
RtagId NUMBER;
12087
ParentRtagId NUMBER;
12088
RecCount NUMBER := 0;
12089
 
12090
 
12091
BEGIN
12092
	/*--------------- Business Rules Here -------------------*/
12093
	-- Check for missing parameters
12094
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
12095
	THEN
12096
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
12097
 
12098
	END IF;
12099
 
12100
 
12101
	-- Check for duplicate Release Names
12102
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12103
	  FROM RELEASE_TAGS rt
12104
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12105
	   AND rt.PROJ_ID = nProjId;
12106
 
12107
	IF (RecCount > 0) THEN
12108
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12109
	END IF;
12110
	/*-------------------------------------------------------*/
12111
 
12112
 
12113
	-- Get rtag_id
12114
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
12115
 
12116
 
12117
 
12118
	-- Get Parent RtagId
12119
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
12120
 
12121
 
12122
	-- Create new release
12123
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
12124
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
12125
							   PARENT_RTAG_ID, PROJ_ID )
12126
	VALUES ( RtagId, 
12127
			 sReleaseName, 
12128
			 sReleaseComments,
12129
			 ORA_SYSDATE,
12130
			 nUserId,
12131
			 'N',
12132
			 'N',
12133
			 0,
12134
			 ParentRtagId,
12135
			 nProjId );
12136
 
12137
	-- Update display Order
12138
	UPDATE_DISPLAY_ORDER ( nProjId );
12139
 
12140
	/* Log Project Action */
12141
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
12142
 
12143
 
12144
	-- Import Release Contents
12145
	IF (NOT nSourceRtagId IS NULL) THEN
12146
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
12147
 
12148
	END IF;
12149
 
12150
 
12151
 
12152
END;
12153
/*-------------------------------------------------------------------------------------------------------*/
12154
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
12155
 
12156
 
12157
BEGIN
12158
 
12159
 
12160
	/*--------------- Business Rules Here -------------------*/
12161
	/*-------------------------------------------------------*/
12162
 
12163
	UPDATE RELEASE_TAGS urt SET
12164
	urt.DISPLAY_ORDER = (
12165
						SELECT qry.REC_NUM
12166
						  FROM (	
12167
								SELECT rel.*, ROWNUM AS REC_NUM
12168
								  FROM (
12169
 
12170
								  		SELECT rt.RTAG_ID, 
12171
											   rt.DISPLAY_ORDER,
12172
										       DECODE( rt.PARENT_RTAG_ID, 
12173
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
12174
										  FROM RELEASE_TAGS rt
12175
										 WHERE rt.PROJ_ID = nProjId 
12176
 
12177
								  		) rel
12178
								START WITH rel.PARENT_RTAG_ID = 0
12179
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
12180
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
12181
								) qry
12182
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
12183
						)
12184
	WHERE urt.PROJ_ID = nProjId;
12185
 
12186
END;
12187
/*-------------------------------------------------------------------------------------------------------*/
12188
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
12189
 
12190
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
12191
	SeqNum NUMBER;
12192
 
12193
BEGIN
12194
 
12195
 
12196
	/*--------------- Business Rules Here -------------------*/
12197
	/*-------------------------------------------------------*/
12198
 
12199
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
12200
 
12201
	-- Set start sequence number
12202
	SeqNum := 1;
12203
 
12204
	FOR i IN 1..nIdCollector.COUNT
12205
	LOOP
12206
 
12207
		-- Update new display order
12208
		UPDATE RELEASE_TAGS rt SET
12209
			rt.DISPLAY_ORDER = SeqNum
12210
		 WHERE rt.PROJ_ID = nProjId
12211
		   AND rt.RTAG_ID = nIdCollector(i);
12212
 
12213
		SeqNum := SeqNum + 1;
12214
 
12215
	END LOOP;
12216
 
12217
END;
12218
/*-------------------------------------------------------------------------------------------------------*/
12219
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
12220
 
12221
RecCount NUMBER := 0;
12222
ProjId NUMBER;
12223
 
12224
BEGIN
12225
 
12226
 
12227
	/*--------------- Business Rules Here -------------------*/
12228
	-- Check for missing parameters
12229
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
12230
	THEN
12231
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
12232
 
12233
	END IF;
12234
 
12235
 
12236
	-- Check for duplicate Release Names
12237
	SELECT rt.PROJ_ID INTO ProjId
12238
	  FROM RELEASE_TAGS rt
12239
	 WHERE rt.RTAG_ID = nRtagId;
12240
 
12241
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12242
	  FROM RELEASE_TAGS rt
12243
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12244
	   AND rt.RTAG_ID != nRtagId
12245
	   AND rt.PROJ_ID = ProjId;
12246
 
12247
 
12248
	IF (RecCount > 0) THEN
12249
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12250
	END IF;
12251
	/*-------------------------------------------------------*/
12252
 
12253
 
12254
 
12255
	-- Update release details
12256
	UPDATE RELEASE_TAGS rt SET
12257
	rt.RTAG_NAME = sReleaseName,
12258
	rt.DESCRIPTION = sReleaseComments,
12259
	rt.PARENT_RTAG_ID = nParentRtagId,
12260
	rt.ASSOC_MASS_REF = nMASSRtagId,
12261
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
12262
	WHERE rt.RTAG_ID = nRtagId; 
12263
 
12264
	-- Update display Order
12265
	UPDATE_DISPLAY_ORDER ( ProjId );
12266
 
12267
	/* Log Project Action */
12268
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
12269
 
12270
 
12271
 
12272
 
12273
END;
12274
/*-------------------------------------------------------------------------------------------------------*/
12275
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12276
 
12277
	RecCount NUMBER := 0;
12278
	sReleaseId VARCHAR2(4000);
12279
	ProjId NUMBER;
12280
 
12281
BEGIN
12282
	/*--------------- Business Rules Here -------------------*/
12283
	IF (nRtagId IS NULL) 
12284
	THEN
12285
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12286
	END IF;
12287
 
12288
 
12289
 
12290
	-- Check for any kids
12291
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
12292
	  FROM RELEASE_TAGS rt
12293
	 WHERE rt.PARENT_RTAG_ID = nRtagId
12294
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
12295
 
12296
	IF (RecCount > 0) THEN
12297
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
12298
	END IF; 
12299
	/*-------------------------------------------------------*/
12300
 
12301
	-- Clear the release contents
12302
	Clean_Release_Contents ( nRtagId, nUserId );
12303
 
12304
	/* Log Project Action */
12305
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
12306
	  FROM RELEASE_TAGS rt
12307
	 WHERE rt.RTAG_ID = nRtagId;
12308
 
12309
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
12310
 
12311
 
12312
	-- Remove Release
12313
	DELETE 
12314
	  FROM RELEASE_TAGS rt
12315
	 WHERE rt.RTAG_ID = nRtagId;
12316
 
12317
 
12318
 
12319
END;
12320
/*-------------------------------------------------------------------------------------------------------*/
12321
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
12322
 
12323
	sSourceLocation VARCHAR2(4000);
12324
	sTargetLocation VARCHAR2(4000);
12325
	ProjId NUMBER;
12326
	cReleaseMode CHAR(1);
12327
 
12328
 
12329
BEGIN
12330
	/*--------------- Business Rules Here -------------------*/
12331
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
12332
	THEN
12333
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
12334
	END IF;
12335
 
12336
	IF (nSourceRtagId = nTargetRtagId) THEN
12337
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
12338
	END IF;
12339
 
12340
 
12341
	-- Check if Target release is in OPEN mode
12342
	SELECT rt.OFFICIAL  INTO  cReleaseMode
12343
	  FROM RELEASE_TAGS rt
12344
	 WHERE rt.RTAG_ID = nTargetRtagId;
12345
 
12346
	IF (cReleaseMode != 'N') THEN
12347
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
12348
	END IF;	 
12349
 
12350
	/*-------------------------------------------------------*/
12351
 
12352
	-- Clean target contents
12353
	Clean_Release_Contents ( nTargetRtagId, nUserId );
12354
 
12355
 
12356
	-- Import Released Area Contents
12357
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
12358
	SELECT nTargetRtagId AS RTAG_ID, 
12359
		   rc.PV_ID, 
12360
		   rc.BASE_VIEW_ID, 
12361
		   rc.INSERT_STAMP, 
12362
		   rc.INSERTOR_ID, 
12363
		   rc.PKG_STATE
12364
	  FROM RELEASE_CONTENT rc
12365
	 WHERE rc.RTAG_ID = nSourceRtagId;
12366
 
12367
 
12368
	-- Import Ignore Warning states
12369
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
12370
	SELECT nTargetRtagId AS RTAG_ID,
12371
	       igw.PV_ID,
12372
	       igw.DPV_ID
12373
	  FROM IGNORE_WARNINGS igw
12374
	 WHERE igw.rtag_id = nSourceRtagId;
12375
 
12376
 
12377
	/* Log Project Action */
12378
	-- Get Source Location
12379
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
12380
	  FROM RELEASE_TAGS rt,
12381
	  	   PROJECTS pr
12382
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12383
	   AND rt.RTAG_ID = nSourceRtagId;
12384
 
12385
	-- Get Target Location
12386
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
12387
	  FROM RELEASE_TAGS rt,
12388
	  	   PROJECTS pr
12389
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12390
	   AND rt.RTAG_ID = nTargetRtagId;	   
12391
 
12392
	-- Get project id   
12393
	SELECT rt.PROJ_ID  INTO  ProjId
12394
	  FROM RELEASE_TAGS rt
12395
	 WHERE rt.RTAG_ID = nTargetRtagId;   
12396
 
12397
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
12398
 
12399
 
12400
END;
12401
/*-------------------------------------------------------------------------------------------------------*/
12402
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12403
 
12404
	RecCount NUMBER;
12405
 
12406
BEGIN
12407
	/*--------------- Business Rules Here -------------------*/
12408
	IF (nRtagId IS NULL) 
12409
	THEN
12410
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12411
	END IF;
12412
 
12413
 
12414
	-- Check if other release references this release
12415
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
12416
	  FROM RELEASE_LINKS rl
12417
	 WHERE rl.REF_RTAG_ID = nRtagId;
12418
 
12419
	IF (RecCount > 0) THEN
12420
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
12421
	END IF; 	
12422
	/*-------------------------------------------------------*/
12423
 
12424
	-- Delete Release links
12425
	DELETE 
12426
	  FROM RELEASE_LINKS rl
12427
	 WHERE rl.RTAG_ID = nRtagId;
12428
 
12429
	-- Delete ignore warning
12430
	DELETE 
12431
	  FROM IGNORE_WARNINGS iw
12432
	 WHERE iw.RTAG_ID = nRtagId;
12433
 
12434
 
12435
	-- Delete Build Order cached calculations	  
12436
	DELETE
12437
	  FROM BUILD_ORDER bo
12438
	 WHERE bo.RTAG_ID = nRtagId;
12439
 
12440
 
12441
	-- Delete Notification History
12442
	DELETE
12443
	  FROM NOTIFICATION_HISTORY nh
12444
	 WHERE nh.RTAG_ID = nRtagId;
12445
 
12446
 
12447
	-- Delete Released Area Contents
12448
	DELETE
12449
	  FROM RELEASE_CONTENT rc
12450
	 WHERE rc.RTAG_ID = nRtagId;
12451
 
12452
 
12453
	-- Delete Work In Progress Area Contents
12454
	DELETE
12455
	  FROM WORK_IN_PROGRESS wip
12456
	 WHERE wip.RTAG_ID = nRtagId;
12457
 
12458
 
12459
	-- Delete Pending Area Contents
12460
	DELETE 
12461
	  FROM PLANNED pl
12462
	 WHERE pl.RTAG_ID = nRtagId;
12463
 
12464
 
12465
END;
12466
/*-------------------------------------------------------------------------------------------------------*/
12467
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
12468
 
12469
	nSourceParentRtagId NUMBER;
12470
 
12471
BEGIN
12472
	/*--------------- Business Rules Here -------------------*/
12473
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
12474
	THEN
12475
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
12476
	END IF;
12477
	/*-------------------------------------------------------*/
12478
 
12479
 
12480
	IF ( nSourceRtagId IS NULL ) THEN
12481
		-- Create new on main branch
12482
		RETURN nRtagId;
12483
 
12484
	ELSE
12485
		-- Create from source rtag_id
12486
 
12487
		-- Find parent of Source RtagId
12488
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
12489
		  FROM RELEASE_TAGS rt
12490
		 WHERE rt.RTAG_ID = nSourceRtagId;
12491
 
12492
		IF (UPPER(cIsBranch) = 'Y') THEN
12493
			RETURN nSourceRtagId;
12494
		ELSE
12495
			IF (nSourceRtagId = nSourceParentRtagId) THEN
12496
				RETURN nRtagId;
12497
			ELSE
12498
				RETURN nSourceParentRtagId;
12499
			END IF;
12500
		END IF;	
12501
 
12502
 
12503
	END IF;
12504
 
12505
 
12506
END;
12507
/*-------------------------------------------------------------------------------------------------------*/
12508
 
12509
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
12510
-- 							 sNextVersion OUT VARCHAR2,
12511
-- 							 nNextLifeCycle OUT NUMBER,
12512
-- 							 nParentRtagId OUT NUMBER,
12513
-- 							 nProjId IN NUMBER ) IS
12514
-- 							
12515
-- SourceBranchCount NUMBER;
12516
-- ProjRootVersion VARCHAR2(4000);
12517
-- LastLifeCycle NUMBER;
12518
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
12519
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
12520
-- 
12521
-- SourceProjId NUMBER; 
12522
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
12523
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
12524
-- 
12525
-- BEGIN
12526
-- 	/*--------------- Business Rules Here -------------------*/
12527
-- 	/*-------------------------------------------------------*/
12528
-- 	
12529
-- 	   
12530
-- 	BEGIN
12531
-- 		-- Get Project root version
12532
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
12533
-- 		  FROM RELEASE_TAGS rt
12534
-- 		 WHERE rt.PROJ_ID = nProjId
12535
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
12536
-- 	   
12537
-- 		EXCEPTION
12538
-- 		WHEN NO_DATA_FOUND THEN
12539
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
12540
-- 	END;		   
12541
-- 	
12542
-- 	
12543
-- 	
12544
-- 	 
12545
-- 	BEGIN
12546
-- 		-- Get info for source rtagid
12547
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
12548
-- 		  FROM RELEASE_TAGS rt
12549
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
12550
-- 	   
12551
-- 		EXCEPTION
12552
-- 		WHEN NO_DATA_FOUND THEN
12553
-- 		SourceProjId := NULL;
12554
-- 		SourceVersion := NULL;
12555
-- 		SourceLifeCycle := NULL;
12556
-- 	END;	  
12557
-- 	
12558
-- 	
12559
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
12560
-- 	
12561
-- 		/* Blank Release Required  OR  Release imported from other project */
12562
-- 		
12563
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
12564
-- 			/* No Releases found in the project, hence calculate next version available.  */
12565
-- 			
12566
-- 			-- Set parent rtag
12567
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
12568
-- 			
12569
-- 			
12570
-- 			BEGIN
12571
-- 				-- Get Next Available Global Root Version 
12572
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
12573
-- 				  FROM RELEASE_TAGS rt
12574
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
12575
-- 				
12576
-- 				-- Set Next Rtag Version
12577
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
12578
-- 				
12579
-- 				-- Restart Lifecycle
12580
-- 				nNextLifeCycle := 0;
12581
-- 				
12582
-- 				
12583
-- 				EXCEPTION
12584
-- 				WHEN NO_DATA_FOUND THEN
12585
-- 				-- Release Manager has no releases, hence start from 1
12586
-- 				sNextVersion := '1';
12587
-- 				nNextLifeCycle := 0;
12588
-- 				
12589
-- 			END;
12590
-- 			
12591
-- 			
12592
-- 					
12593
-- 		ELSE
12594
-- 			/* Releases found in this project. */
12595
-- 							   
12596
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
12597
-- 			  FROM (
12598
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
12599
-- 					  FROM RELEASE_TAGS rt
12600
-- 					 WHERE rt.PROJ_ID = nProjId
12601
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
12602
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
12603
-- 			  		) qry
12604
-- 			 WHERE ROWNUM = 1;		
12605
-- 
12606
-- 			
12607
-- 			-- Set same Rtag Version
12608
-- 			sNextVersion := ProjRootVersion;
12609
-- 			
12610
-- 			-- Increase Lifecycle
12611
-- 			nNextLifeCycle := LastLifeCycle + 1;
12612
-- 		
12613
-- 		END IF;
12614
-- 				
12615
-- 	
12616
-- 		
12617
-- 	ELSE
12618
-- 		/* Create Release From other release within this project */
12619
-- 		
12620
-- 		-- Set parent id
12621
-- 		nParentRtagId := nSourceRtagId;
12622
-- 		
12623
-- 		
12624
-- 		-- Get number of source branches
12625
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
12626
-- 		  FROM RELEASE_TAGS rt
12627
-- 		 WHERE rt.PROJ_ID = nProjId
12628
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
12629
-- 		   
12630
-- 		   
12631
-- 		IF SourceBranchCount = 0 THEN
12632
-- 			/* Release is Head (i.e. Tip on its branch ) */
12633
-- 			
12634
-- 			-- Set Next Rtag Version
12635
-- 			sNextVersion := SourceVersion;
12636
-- 			
12637
-- 			-- Increase Lifecycle
12638
-- 			nNextLifeCycle := SourceLifeCycle + 1;
12639
-- 			
12640
-- 			
12641
-- 		ELSIF SourceBranchCount = 1 THEN
12642
-- 			/* Release IS NOT Head, but can be branched */
12643
-- 			
12644
-- 			-- Set Next Rtag Version
12645
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
12646
-- 			
12647
-- 			-- Reset Lifecycle to 1
12648
-- 			nNextLifeCycle := 1;
12649
-- 			
12650
-- 			
12651
-- 		ELSE	
12652
-- 			-- Limit of two branches is reached
12653
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
12654
-- 			
12655
-- 		END IF;	
12656
-- 			
12657
-- 			
12658
-- 		
12659
-- 		
12660
-- 		
12661
-- 	
12662
-- 	END IF;
12663
-- 	
12664
-- 		
12665
-- END;
12666
 
12667
/*-------------------------------------------------------------------------------------------------------*/
12668
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12669
 
12670
	IsBaseView CHAR(1);
12671
 
12672
BEGIN
12673
 
12674
	-- Check if the view is BASE VIEW
12675
	SELECT vi.BASE_VIEW INTO IsBaseView
12676
	  FROM VIEWS vi
12677
	 WHERE vi.VIEW_ID = ViewId;
12678
 
12679
	IF (IsBaseView = 'Y') THEN 
12680
		-- Get Base view content
12681
		OPEN RecordSet FOR
12682
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12683
			   pv.pv_id, 
12684
			   pkg.pkg_name, 
12685
			   pv.pkg_version, 
12686
			   pv.dlocked, 
12687
			   pv.pv_description,
12688
			   pv.BUILD_TYPE
12689
		  FROM release_content rel,
12690
		       packages pkg,
12691
		       package_versions pv
12692
		 WHERE pv.pkg_id = pkg.pkg_id
12693
		   AND rel.pv_id = pv.pv_id
12694
		   AND rel.BASE_VIEW_ID = ViewId
12695
		   AND rel.RTAG_ID = RtagId
12696
		 ORDER BY UPPER(pkg.PKG_NAME);
12697
 
12698
	ELSE	 
12699
 
12700
	 	-- Get non base view content
12701
		OPEN RecordSet FOR
12702
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12703
			   pv.pv_id, 
12704
			   pkg.pkg_name, 
12705
			   pv.pkg_version, 
12706
			   pv.dlocked, 
12707
			   pv.pv_description,
12708
			   pv.BUILD_TYPE
12709
		  FROM release_content rel,
12710
		       packages pkg,
12711
		       package_versions pv,
12712
			   VIEW_DEF vd
12713
		 WHERE pv.pkg_id = pkg.pkg_id
12714
		   AND rel.pv_id = pv.pv_id
12715
		   AND vd.VIEW_ID = ViewId
12716
		   AND vd.PKG_ID = pv.PKG_ID
12717
		   AND rel.RTAG_ID = RtagId
12718
		 ORDER BY UPPER(pkg.PKG_NAME);		 
12719
 
12720
	END IF;	 	 
12721
 
12722
 
12723
 
12724
 
12725
END;
12726
/*-------------------------------------------------------------------------------------------------------*/
12727
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12728
 
12729
	ReleaseLocation VARCHAR2(4000);
12730
	sPkgVersion VARCHAR2(4000);
12731
	nPkgId NUMBER;
12732
	sVExt VARCHAR2(4000);
12733
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
12734
 
12735
	-- Find package for replacement
12736
	CURSOR curReplacePkg IS
12737
    SELECT pv.PV_ID
12738
	  FROM RELEASE_CONTENT rc,
12739
	  	   PACKAGE_VERSIONS pv
12740
	 WHERE rc.PV_ID = pv.PV_ID
12741
	   AND rc.RTAG_ID = RtagId
12742
	   AND pv.PKG_ID = nPkgId
12743
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
12744
    recReplacePkg curReplacePkg%ROWTYPE;
12745
 
12746
BEGIN
12747
 
12748
	-- Get is_patch, pkg_id and v_ext
12749
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
12750
	  FROM PACKAGE_VERSIONS pv
12751
	 WHERE pv.PV_ID = newPvId;
12752
 
12753
 
12754
	-- Never put patch in relesed area
12755
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
12756
 
12757
		-- Try to get a package to be replaced with this new one.
12758
		-- Use unique constraint of PKG_ID and V_EXT
12759
		OPEN curReplacePkg;
12760
	    FETCH curReplacePkg INTO recReplacePkg;
12761
 
12762
	    IF curReplacePkg%FOUND THEN
12763
			-- Replace package
12764
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
12765
 
12766
		ELSE
12767
			-- Add new package
12768
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
12769
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
12770
 
12771
 
12772
		    /* LOG ACTION */
12773
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12774
			  FROM PROJECTS proj,
12775
			  	   RELEASE_TAGS rt
12776
			 WHERE rt.PROJ_ID = proj.PROJ_ID
12777
			   AND rt.RTAG_ID = RtagId;
12778
 
12779
			SELECT pv.PKG_VERSION INTO sPkgVersion
12780
			  FROM PACKAGE_VERSIONS pv
12781
			 WHERE pv.PV_ID = newPvId;
12782
 
12783
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12784
 
12785
 
12786
		END IF;
12787
 
12788
		CLOSE curReplacePkg;
12789
 
12790
	END IF;
12791
 
12792
END;
12793
/*-------------------------------------------------------------------------------------------------------*/
12794
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12795
 
12796
	ReleaseLocation VARCHAR2(4000);
12797
	sPkgVersion VARCHAR2(4000);
12798
 
12799
BEGIN
12800
 
12801
	-- Replace Package
12802
    UPDATE RELEASE_CONTENT
12803
       SET pv_id = newPvId,
12804
           insert_stamp = Ora_Sysdate,
12805
           insertor_id = UserId
12806
     WHERE rtag_id = RtagId
12807
       AND pv_id = oldPvId;
12808
 
12809
 
12810
    /* LOG ACTION */
12811
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12812
	  FROM PROJECTS proj,
12813
	  	   RELEASE_TAGS rt
12814
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12815
	   AND rt.RTAG_ID = RtagId;
12816
 
12817
	SELECT pv.PKG_VERSION INTO sPkgVersion
12818
	  FROM PACKAGE_VERSIONS pv
12819
	 WHERE pv.PV_ID = newPvId;
12820
 
12821
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
12822
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12823
 
12824
END;
12825
/*-------------------------------------------------------------------------------------------------------*/
12826
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12827
	ReleaseLocation VARCHAR2(4000);
12828
 
12829
BEGIN
12830
 
12831
 
12832
	-- Delete old package
12833
	DELETE
12834
	  FROM RELEASE_CONTENT rc
12835
	 WHERE rc.PV_ID = PvId
12836
	   AND rc.RTAG_ID = RtagId;
12837
 
12838
 
12839
	/* LOG ACTION */
12840
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12841
	  FROM PROJECTS proj,
12842
	       RELEASE_TAGS rt
12843
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12844
	   AND rt.RTAG_ID = RtagId;
12845
 
12846
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12847
 
12848
 
12849
END;
12850
/*-------------------------------------------------------------------------------------------------------*/
12851
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12852
	ReleaseLocation VARCHAR2(4000);
12853
 
12854
	CURSOR curMatchingPackage IS
12855
    SELECT mpv.PV_ID
12856
	  FROM RELEASE_CONTENT rc,
12857
	  	   PACKAGE_VERSIONS mpv,
12858
		   PACKAGE_VERSIONS pv
12859
	 WHERE rc.PV_ID = mpv.PV_ID
12860
	   AND rc.RTAG_ID = RtagId
12861
	   AND pv.PV_ID = PvId
12862
	   AND pv.PKG_ID = mpv.PKG_ID
12863
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
12864
    recMatchingPackage curMatchingPackage%ROWTYPE;
12865
 
12866
BEGIN
12867
 
12868
	OPEN curMatchingPackage;
12869
    FETCH curMatchingPackage INTO recMatchingPackage;
12870
 
12871
    IF curMatchingPackage%FOUND THEN
12872
		-- Delete old package
12873
		DELETE
12874
		  FROM RELEASE_CONTENT rc
12875
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
12876
		   AND rc.RTAG_ID = RtagId;
12877
 
12878
 
12879
		/* LOG ACTION */
12880
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12881
		  FROM PROJECTS proj,
12882
		  	   RELEASE_TAGS rt
12883
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12884
		   AND rt.RTAG_ID = RtagId;
12885
 
12886
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12887
 
12888
	END IF;
12889
 
12890
 
12891
	CLOSE curMatchingPackage;
12892
 
12893
 
12894
 
12895
 
12896
END;
12897
/*-------------------------------------------------------------------------------------------------------*/
12898
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12899
 
12900
	ReturnValue NUMBER;
12901
 
12902
BEGIN
12903
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
12904
	  FROM RELEASE_CONTENT rc
12905
	 WHERE rc.RTAG_ID = RtagId
12906
	   AND rc.PV_ID = PvId;
12907
 
12908
	RETURN ReturnValue;
12909
END;
12910
/*-------------------------------------------------------------------------------------------------------*/
12911
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
12912
 
12913
BEGIN
12914
	-- Reset Ignore warnings up-the-tree
12915
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
12916
 
12917
	-- Refresh Package states
12918
	TOUCH_RELEASE ( RtagId );
12919
 
12920
END;
12921
/*-------------------------------------------------------------------------------------------------------*/
12922
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
12923
	CURSOR curReleases IS
12924
    SELECT rc.RTAG_ID
12925
	  FROM RELEASE_CONTENT rc
12926
	 WHERE rc.PV_ID = PvId;
12927
    recReleases curReleases%ROWTYPE;
12928
 
12929
BEGIN
12930
 
12931
	OPEN curReleases;
12932
    FETCH curReleases INTO recReleases;
12933
 
12934
	WHILE curReleases%FOUND
12935
	LOOP
12936
 
12937
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
12938
 
12939
		FETCH curReleases INTO recReleases;
12940
	END LOOP;
12941
 
12942
	CLOSE curReleases;	
12943
 
12944
END;
12945
/*-------------------------------------------------------------------------------------------------------*/
12946
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12947
 
12948
BEGIN
12949
 
12950
	UPDATE RELEASE_CONTENT rc SET
12951
	rc.BASE_VIEW_ID = NewViewId
12952
	WHERE rc.PV_ID = PvId
12953
	  AND rc.RTAG_ID = RtagId;
12954
 
12955
END;
12956
/*-------------------------------------------------------------------------------------------------------*/
12957
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
12958
 
12959
	RowCount NUMBER;
12960
 
12961
 
12962
	CURSOR curPackageClash IS
12963
	SELECT pkg.PKG_NAME,
12964
		   er.*
12965
	  FROM (
12966
 
12967
	  		/* Get existing referenced packages */
12968
			SELECT pv.PKG_ID,
12969
			       pv.V_EXT
12970
			  FROM RELEASE_LINKS rl,
12971
			  	   RELEASE_CONTENT rc,
12972
			  	   PACKAGE_VERSIONS pv
12973
			 WHERE rl.RTAG_ID = nRtagId
12974
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
12975
			   AND rc.PV_ID = pv.PV_ID
12976
 
12977
	  	    ) er,
12978
			(
12979
 
12980
			/* Get current reference packages */
12981
			SELECT pv.PKG_ID,
12982
			       pv.V_EXT
12983
			  FROM RELEASE_CONTENT rc,
12984
			  	   PACKAGE_VERSIONS pv
12985
			 WHERE rc.RTAG_ID = nRefRtagId
12986
			   AND rc.PV_ID = pv.PV_ID    
12987
 
12988
			) cr,
12989
			PACKAGES PKG
12990
	 WHERE er.PKG_ID = cr.PKG_ID
12991
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
12992
	   AND er.PKG_ID = pkg.PKG_ID;
12993
 
12994
	recPackageClash curPackageClash%ROWTYPE;	   
12995
 
12996
BEGIN
12997
	/*--------------- Business Rules Here -------------------*/
12998
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
12999
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13000
	END IF;
13001
 
13002
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13003
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13004
	END IF;
13005
	/*-------------------------------------------------------*/
13006
	ProblemString := NULL;
13007
 
13008
 
13009
	-- Check if release already has references
13010
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
13011
	  FROM RELEASE_LINKS rl
13012
	 WHERE rl.RTAG_ID = nRtagId;	
13013
 
13014
 
13015
	IF RowCount > 0 THEN
13016
		-- Found existing references
13017
 
13018
		-- Make sure there is no package clashes
13019
		OPEN curPackageClash;
13020
	    FETCH curPackageClash INTO recPackageClash;
13021
 
13022
		IF curPackageClash%FOUND THEN
13023
 
13024
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
13025
 
13026
			WHILE curPackageClash%FOUND
13027
			LOOP
13028
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
13029
 
13030
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
13031
 
13032
				FETCH curPackageClash INTO recPackageClash;
13033
			END LOOP;
13034
 
13035
		END IF;
13036
 
13037
		CLOSE curPackageClash;
13038
 
13039
 
13040
	ELSE
13041
		-- No references found, hence reference a release
13042
 
13043
 
13044
		-- Remove exising package from this release to be referenced
13045
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
13046
 
13047
 
13048
		-- Add new linked packages to release
13049
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13050
		SELECT nRtagId,
13051
			   rc.PV_ID,
13052
			   rc.BASE_VIEW_ID, 
13053
			   rc.INSERT_STAMP, 
13054
			   rc.INSERTOR_ID, 
13055
			   rc.PKG_STATE
13056
		  FROM RELEASE_CONTENT rc
13057
		 WHERE rc.RTAG_ID = nRefRtagId;
13058
 
13059
 
13060
 
13061
		-- Copy ignore warnings for referenced packages
13062
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
13063
		SELECT nRtagId, 
13064
			   iw.PV_ID, 
13065
			   iw.DPV_ID, 
13066
			   iw.IS_PATCH_IGNORE
13067
		  FROM IGNORE_WARNINGS iw,
13068
		  	   RELEASE_CONTENT rc
13069
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
13070
		   AND iw.PV_ID = rc.PV_ID
13071
		   AND rc.RTAG_ID = nRefRtagId;	 
13072
 
13073
 
13074
 
13075
		-- Reference release 
13076
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
13077
		VALUES ( nRtagId, nRefRtagId );		 
13078
 
13079
 
13080
		-- Refresh Package states
13081
		TOUCH_RELEASE ( nRtagId );
13082
 
13083
	END IF;	 
13084
 
13085
 
13086
END;
13087
/*-------------------------------------------------------------------------------------------------------*/
13088
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
13089
 
13090
 
13091
BEGIN
13092
	/*--------------- Business Rules Here -------------------*/
13093
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13094
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13095
	END IF;
13096
 
13097
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13098
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13099
	END IF;
13100
 
13101
	/*-------------------------------------------------------*/
13102
 
13103
 
13104
	-- Remove ignore warnings for those packages who use referenced packages
13105
	DELETE FROM IGNORE_WARNINGS iw
13106
	 WHERE iw.RTAG_ID = nRtagId
13107
	   AND iw.DPV_ID IN (
13108
	   						SELECT dep.DPV_ID
13109
							  FROM (
13110
 
13111
									/* Get referenced packages */
13112
									SELECT pv.PKG_ID,
13113
									       pv.V_EXT
13114
									  FROM RELEASE_CONTENT rc,
13115
									  	   PACKAGE_VERSIONS pv
13116
									 WHERE rc.RTAG_ID = nRefRtagId
13117
									   AND rc.PV_ID = pv.PV_ID    
13118
 
13119
									) cr,
13120
									(
13121
 
13122
									/* Get all dependencies for current release */
13123
									SELECT DISTINCT 
13124
										   pv.PKG_ID,
13125
										   pv.V_EXT,
13126
										   dep.DPV_ID
13127
									  FROM RELEASE_CONTENT rc,
13128
										   PACKAGE_DEPENDENCIES dep,
13129
										   PACKAGE_VERSIONS pv
13130
									 WHERE rc.RTAG_ID = nRtagId
13131
									   AND rc.PV_ID = dep.PV_ID		
13132
									   AND dep.PV_ID = pv.PV_ID	   
13133
 
13134
									) dep
13135
							 WHERE dep.PKG_ID = cr.PKG_ID
13136
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13137
	   					);  
13138
 
13139
 
13140
 
13141
 
13142
	-- Remove ignore warnings for those package which are going to be replaced with the reference
13143
	DELETE FROM IGNORE_WARNINGS iw
13144
	 WHERE iw.RTAG_ID = nRtagId
13145
	   AND iw.PV_ID IN (
13146
						SELECT pv.PV_ID
13147
						  FROM (
13148
 
13149
								/* Get referenced packages */
13150
								SELECT pv.PKG_ID,
13151
								       pv.V_EXT
13152
								  FROM RELEASE_CONTENT rc,
13153
								  	   PACKAGE_VERSIONS pv
13154
								 WHERE rc.RTAG_ID = nRefRtagId
13155
								   AND rc.PV_ID = pv.PV_ID    
13156
 
13157
								) cr,
13158
								RELEASE_CONTENT rc,
13159
								PACKAGE_VERSIONS pv
13160
						 WHERE pv.PKG_ID = cr.PKG_ID
13161
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13162
						   AND rc.RTAG_ID = nRtagId
13163
						   AND rc.PV_ID = pv.PV_ID
13164
						);			
13165
 
13166
 
13167
 
13168
 
13169
 
13170
	-- Remove matching packages from release
13171
	DELETE FROM RELEASE_CONTENT rc
13172
	 WHERE rc.RTAG_ID = nRtagId
13173
	   AND rc.PV_ID IN (
13174
						SELECT pv.PV_ID
13175
						  FROM (
13176
 
13177
								/* Get referenced packages */
13178
								SELECT pv.PKG_ID,
13179
								       pv.V_EXT
13180
								  FROM RELEASE_CONTENT rc,
13181
								  	   PACKAGE_VERSIONS pv
13182
								 WHERE rc.RTAG_ID = nRefRtagId
13183
								   AND rc.PV_ID = pv.PV_ID    
13184
 
13185
								) cr,
13186
								RELEASE_CONTENT rc,
13187
								PACKAGE_VERSIONS pv
13188
						 WHERE pv.PKG_ID = cr.PKG_ID
13189
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13190
						   AND rc.RTAG_ID = nRtagId
13191
						   AND rc.PV_ID = pv.PV_ID
13192
						);	
13193
 
13194
 
13195
 
13196
 
13197
 
13198
	-- Remove Reference release 
13199
	DELETE 
13200
	  FROM RELEASE_LINKS rl
13201
	 WHERE rl.RTAG_ID = nRtagId
13202
	   AND rl.REF_RTAG_ID = nRefRtagId;
13203
 
13204
 
13205
	-- Refresh Package states
13206
	TOUCH_RELEASE ( nRtagId );
13207
 
13208
 
13209
END;
13210
/*-------------------------------------------------------------------------------------------------------*/
13211
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
13212
 
13213
	cReleaseMode CHAR(1);
13214
	cPvMode CHAR(1);
13215
 
13216
BEGIN
13217
 
13218
	-- Get Release Mode
13219
	SELECT rt.OFFICIAL INTO cReleaseMode
13220
	  FROM RELEASE_TAGS rt
13221
	 WHERE rt.RTAG_ID = RtagId;
13222
 
13223
 
13224
	-- Get Package Mode
13225
	SELECT pv.DLOCKED INTO cPvMode
13226
	  FROM PACKAGE_VERSIONS pv
13227
	 WHERE pv.PV_ID = PvId;	 
13228
 
13229
	-- Only check if package is locked 
13230
	IF (cPvMode = 'Y') THEN
13231
 
13232
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
13233
		THEN
13234
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
13235
 
13236
		END IF;
13237
 
13238
	END IF;	
13239
 
13240
 
13241
END;
13242
/*-------------------------------------------------------------------------------------------------------*/
13243
END PK_RELEASE_TEST;
13244
/
13245
 
13246
CREATE OR REPLACE PACKAGE BODY PK_RELEASE IS
13247
 
13248
 
13249
/*
13250
------------------------------
13251
||  Last Modified:  S.Vukovic
13252
||  Modified Date:  12/Sep/2005
13253
||  Body Version:   3.0
13254
------------------------------
13255
*/
13256
 
13257
 
13258
/*-------------------------------------------------------------------------------------------------------*/
13259
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
13260
 
13261
RtagId NUMBER;
13262
ParentRtagId NUMBER;
13263
RecCount NUMBER := 0;
13264
VtreeId NUMBER;
13265
 
13266
 
13267
BEGIN
13268
	/*--------------- Business Rules Here -------------------*/
13269
	-- Check for missing parameters
13270
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
13271
	THEN
13272
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
13273
 
13274
	END IF;
13275
 
13276
 
13277
	-- Check for duplicate Release Names
13278
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13279
	  FROM RELEASE_TAGS rt
13280
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13281
	   AND rt.PROJ_ID = nProjId;
13282
 
13283
	IF (RecCount > 0) THEN
13284
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13285
	END IF;
13286
	/*-------------------------------------------------------*/
13287
 
13288
 
13289
	-- Get rtag_id
13290
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
13291
 
13292
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
13293
 
13294
 
13295
 
13296
	-- Get Parent RtagId
13297
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
13298
 
13299
 
13300
	-- Create new release
13301
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
13302
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
13303
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
13304
	VALUES ( RtagId, 
13305
			 sReleaseName, 
13306
			 sReleaseComments,
13307
			 ORA_SYSDATE,
13308
			 nUserId,
13309
			 'N',
13310
			 'N',
13311
			 0,
13312
			 ParentRtagId,
13313
			 nProjId,
13314
			 VtreeId );
13315
 
13316
	-- Update display Order
13317
	UPDATE_DISPLAY_ORDER ( nProjId );
13318
 
13319
	/* Log Project Action */
13320
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
13321
 
13322
 
13323
	-- Import Release Contents
13324
	IF (NOT nSourceRtagId IS NULL) THEN
13325
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
13326
 
13327
	END IF;
13328
 
13329
 
13330
 
13331
END;
13332
/*-------------------------------------------------------------------------------------------------------*/
13333
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
13334
 
13335
 
13336
BEGIN
13337
 
13338
 
13339
	/*--------------- Business Rules Here -------------------*/
13340
	/*-------------------------------------------------------*/
13341
 
13342
	UPDATE RELEASE_TAGS urt SET
13343
	urt.DISPLAY_ORDER = (
13344
						SELECT qry.REC_NUM
13345
						  FROM (	
13346
								SELECT rel.*, ROWNUM AS REC_NUM
13347
								  FROM (
13348
 
13349
								  		SELECT rt.RTAG_ID, 
13350
											   rt.DISPLAY_ORDER,
13351
										       DECODE( rt.PARENT_RTAG_ID, 
13352
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
13353
										  FROM RELEASE_TAGS rt
13354
										 WHERE rt.PROJ_ID = nProjId 
13355
 
13356
								  		) rel
13357
								START WITH rel.PARENT_RTAG_ID = 0
13358
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
13359
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
13360
								) qry
13361
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
13362
						)
13363
	WHERE urt.PROJ_ID = nProjId;
13364
 
13365
END;
13366
/*-------------------------------------------------------------------------------------------------------*/
13367
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
13368
 
13369
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
13370
	SeqNum NUMBER;
13371
 
13372
BEGIN
13373
 
13374
 
13375
	/*--------------- Business Rules Here -------------------*/
13376
	/*-------------------------------------------------------*/
13377
 
13378
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
13379
 
13380
	-- Set start sequence number
13381
	SeqNum := 1;
13382
 
13383
	FOR i IN 1..nIdCollector.COUNT
13384
	LOOP
13385
 
13386
		-- Update new display order
13387
		UPDATE RELEASE_TAGS rt SET
13388
			rt.DISPLAY_ORDER = SeqNum
13389
		 WHERE rt.PROJ_ID = nProjId
13390
		   AND rt.RTAG_ID = nIdCollector(i);
13391
 
13392
		SeqNum := SeqNum + 1;
13393
 
13394
	END LOOP;
13395
 
13396
END;
13397
/*-------------------------------------------------------------------------------------------------------*/
13398
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
13399
 
13400
RecCount NUMBER := 0;
13401
ProjId NUMBER;
13402
 
13403
BEGIN
13404
 
13405
 
13406
	/*--------------- Business Rules Here -------------------*/
13407
	-- Check for missing parameters
13408
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
13409
	THEN
13410
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
13411
 
13412
	END IF;
13413
 
13414
 
13415
	-- Check for duplicate Release Names
13416
	SELECT rt.PROJ_ID INTO ProjId
13417
	  FROM RELEASE_TAGS rt
13418
	 WHERE rt.RTAG_ID = nRtagId;
13419
 
13420
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13421
	  FROM RELEASE_TAGS rt
13422
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13423
	   AND rt.RTAG_ID != nRtagId
13424
	   AND rt.PROJ_ID = ProjId;
13425
 
13426
 
13427
	IF (RecCount > 0) THEN
13428
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13429
	END IF;
13430
	/*-------------------------------------------------------*/
13431
 
13432
 
13433
 
13434
	-- Update release details
13435
	UPDATE RELEASE_TAGS rt SET
13436
	rt.RTAG_NAME = sReleaseName,
13437
	rt.DESCRIPTION = sReleaseComments,
13438
	rt.PARENT_RTAG_ID = nParentRtagId,
13439
	rt.ASSOC_MASS_REF = nMASSRtagId,
13440
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
13441
	rt.OWNER_EMAIL = sOwnerEmail,
13442
	rt.PRODUCT_STATE_USED = cState
13443
	WHERE rt.RTAG_ID = nRtagId; 
13444
 
13445
	-- Update display Order
13446
	UPDATE_DISPLAY_ORDER ( ProjId );
13447
 
13448
	/* Log Project Action */
13449
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
13450
 
13451
 
13452
 
13453
 
13454
END;
13455
/*-------------------------------------------------------------------------------------------------------*/
13456
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13457
 
13458
	RecCount NUMBER := 0;
13459
	sReleaseId VARCHAR2(4000);
13460
	ProjId NUMBER;
13461
 
13462
BEGIN
13463
	/*--------------- Business Rules Here -------------------*/
13464
	IF (nRtagId IS NULL) 
13465
	THEN
13466
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13467
	END IF;
13468
 
13469
 
13470
 
13471
	-- Check for any kids
13472
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
13473
	  FROM RELEASE_TAGS rt
13474
	 WHERE rt.PARENT_RTAG_ID = nRtagId
13475
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
13476
 
13477
	IF (RecCount > 0) THEN
13478
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
13479
	END IF; 
13480
	/*-------------------------------------------------------*/
13481
 
13482
	-- Clear the release contents
13483
	Clean_Release_Contents ( nRtagId, nUserId );
13484
 
13485
	/* Log Project Action */
13486
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
13487
	  FROM RELEASE_TAGS rt
13488
	 WHERE rt.RTAG_ID = nRtagId;
13489
 
13490
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
13491
 
13492
 
13493
	-- Remove Release
13494
	DELETE 
13495
	  FROM RELEASE_TAGS rt
13496
	 WHERE rt.RTAG_ID = nRtagId;
13497
 
13498
 
13499
 
13500
END;
13501
/*-------------------------------------------------------------------------------------------------------*/
13502
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
13503
 
13504
	sSourceLocation VARCHAR2(4000);
13505
	sTargetLocation VARCHAR2(4000);
13506
	ProjId NUMBER;
13507
	cReleaseMode CHAR(1);
13508
	RconId NUMBER;
13509
 
13510
 
13511
	CURSOR curReleaseConfigs IS
13512
    SELECT *
13513
	  FROM RELEASE_CONFIG rc
13514
	 WHERE rc.RTAG_ID = nSourceRtagId;
13515
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
13516
 
13517
 
13518
BEGIN
13519
	/*--------------- Business Rules Here -------------------*/
13520
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
13521
	THEN
13522
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
13523
	END IF;
13524
 
13525
	IF (nSourceRtagId = nTargetRtagId) THEN
13526
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
13527
	END IF;
13528
 
13529
 
13530
	-- Check if Target release is in OPEN mode
13531
	SELECT rt.OFFICIAL  INTO  cReleaseMode
13532
	  FROM RELEASE_TAGS rt
13533
	 WHERE rt.RTAG_ID = nTargetRtagId;
13534
 
13535
	IF (cReleaseMode != 'N') THEN
13536
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
13537
	END IF;	 
13538
 
13539
	/*-------------------------------------------------------*/
13540
 
13541
	-- Clean target contents
13542
	Clean_Release_Contents ( nTargetRtagId, nUserId );
13543
 
13544
 
13545
	-- Import Released Area Contents
13546
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
13547
	SELECT nTargetRtagId AS RTAG_ID, 
13548
		   rc.PV_ID, 
13549
		   rc.BASE_VIEW_ID, 
13550
		   rc.INSERT_STAMP, 
13551
		   rc.INSERTOR_ID, 
13552
		   rc.PKG_STATE,
13553
		   rc.PKG_ID,
13554
		   rc.DEPRECATED_STATE
13555
	  FROM RELEASE_CONTENT rc
13556
	 WHERE rc.RTAG_ID = nSourceRtagId;
13557
 
13558
 
13559
	--Import Release Configuration Information
13560
	OPEN curReleaseConfigs;
13561
    FETCH curReleaseConfigs INTO recReleaseConfigs;
13562
 
13563
	WHILE curReleaseConfigs%FOUND
13564
	LOOP
13565
 
13566
		-- Get the next rcon id
13567
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
13568
 
13569
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
13570
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
13571
 
13572
		FETCH curReleaseConfigs INTO recReleaseConfigs;
13573
	END LOOP;
13574
 
13575
	CLOSE curReleaseConfigs;		
13576
 
13577
 
13578
 
13579
	-- Import Ignore Warning states
13580
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
13581
	SELECT nTargetRtagId AS RTAG_ID,
13582
	       igw.PV_ID,
13583
	       igw.DPV_ID
13584
	  FROM IGNORE_WARNINGS igw
13585
	 WHERE igw.rtag_id = nSourceRtagId;
13586
 
13587
 
13588
	/* Log Project Action */
13589
	-- Get Source Location
13590
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
13591
	  FROM RELEASE_TAGS rt,
13592
	  	   PROJECTS pr
13593
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13594
	   AND rt.RTAG_ID = nSourceRtagId;
13595
 
13596
	-- Get Target Location
13597
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
13598
	  FROM RELEASE_TAGS rt,
13599
	  	   PROJECTS pr
13600
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13601
	   AND rt.RTAG_ID = nTargetRtagId;	   
13602
 
13603
	-- Get project id   
13604
	SELECT rt.PROJ_ID  INTO  ProjId
13605
	  FROM RELEASE_TAGS rt
13606
	 WHERE rt.RTAG_ID = nTargetRtagId;   
13607
 
13608
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
13609
 
13610
 
13611
END;
13612
/*-------------------------------------------------------------------------------------------------------*/
13613
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13614
 
13615
	RecCount NUMBER;
13616
        rconIdList VARCHAR2(4000);
13617
 
13618
BEGIN
13619
	/*--------------- Business Rules Here -------------------*/
13620
	IF (nRtagId IS NULL) 
13621
	THEN
13622
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13623
	END IF;
13624
 
13625
 
13626
	-- Check if other release references this release
13627
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
13628
	  FROM RELEASE_LINKS rl
13629
	 WHERE rl.REF_RTAG_ID = nRtagId;
13630
 
13631
	IF (RecCount > 0) THEN
13632
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
13633
	END IF; 	
13634
	/*-------------------------------------------------------*/
13635
 
13636
	-- Delete Release links
13637
	DELETE 
13638
	  FROM RELEASE_LINKS rl
13639
	 WHERE rl.RTAG_ID = nRtagId;
13640
 
13641
	-- Delete ignore warning
13642
	DELETE 
13643
	  FROM IGNORE_WARNINGS iw
13644
	 WHERE iw.RTAG_ID = nRtagId;
13645
 
13646
 
13647
	-- Delete Build Order cached calculations	  
13648
	DELETE
13649
	  FROM BUILD_ORDER bo
13650
	 WHERE bo.RTAG_ID = nRtagId;
13651
 
13652
 
13653
	-- Delete Notification History
13654
	DELETE
13655
	  FROM NOTIFICATION_HISTORY nh
13656
	 WHERE nh.RTAG_ID = nRtagId;
13657
 
13658
 
13659
	-- Delete Released Area Contents
13660
	DELETE
13661
	  FROM RELEASE_CONTENT rc
13662
	 WHERE rc.RTAG_ID = nRtagId;
13663
 
13664
 
13665
	-- Delete Work In Progress Area Contents
13666
	DELETE
13667
	  FROM WORK_IN_PROGRESS wip
13668
	 WHERE wip.RTAG_ID = nRtagId;
13669
 
13670
 
13671
	-- Delete Pending Area Contents
13672
	DELETE 
13673
	  FROM PLANNED pl
13674
	 WHERE pl.RTAG_ID = nRtagId;
13675
 
13676
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
13677
	DELETE
13678
	  FROM DEPRECATED_PACKAGES dp
13679
	 WHERE dp.RTAG_ID = nRtagId; 
13680
 
13681
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
13682
	DELETE
13683
	  FROM PROJECT_ACTION_LOG pal
13684
	 WHERE pal.RTAG_ID = nRtagId;
13685
 
13686
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
13687
	DELETE
13688
	  FROM DO_NOT_RIPPLE dnr
13689
	 WHERE dnr.RTAG_ID = nRtagId; 
13690
 
13691
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
13692
	DELETE
13693
	  FROM DASH_BOARD db
13694
	 WHERE db.RTAG_ID = nRtagId;
13695
 
13696
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
13697
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
13698
        LOOP
13699
          rconIdList := rconIdList || rcon.RCON_ID || ',';
13700
        END LOOP;
13701
 
13702
        pk_buildapi.DELETE_DAEMON(rconIdList);
13703
 
13704
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
13705
        DELETE
13706
          FROM RELEASE_METRICS rm
13707
         WHERE rm.RTAG_ID = nRtagId;
13708
 
13709
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
13710
	DELETE
13711
	  FROM RELEASE_CONFIG rc
13712
	 WHERE rc.RTAG_ID = nRtagId;
13713
 
13714
 
13715
 
13716
END;
13717
/*-------------------------------------------------------------------------------------------------------*/
13718
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
13719
 
13720
	nSourceParentRtagId NUMBER;
13721
 
13722
BEGIN
13723
	/*--------------- Business Rules Here -------------------*/
13724
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
13725
	THEN
13726
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
13727
	END IF;
13728
	/*-------------------------------------------------------*/
13729
 
13730
 
13731
	IF ( nSourceRtagId IS NULL ) THEN
13732
		-- Create new on main branch
13733
		RETURN nRtagId;
13734
 
13735
	ELSE
13736
		-- Create from source rtag_id
13737
 
13738
		-- Find parent of Source RtagId
13739
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
13740
		  FROM RELEASE_TAGS rt
13741
		 WHERE rt.RTAG_ID = nSourceRtagId;
13742
 
13743
		IF (UPPER(cIsBranch) = 'Y') THEN
13744
			RETURN nSourceRtagId;
13745
		ELSE
13746
			IF (nSourceRtagId = nSourceParentRtagId) THEN
13747
				RETURN nRtagId;
13748
			ELSE
13749
				RETURN nSourceParentRtagId;
13750
			END IF;
13751
		END IF;	
13752
 
13753
 
13754
	END IF;
13755
 
13756
 
13757
END;
13758
/*-------------------------------------------------------------------------------------------------------*/
13759
 
13760
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
13761
-- 							 sNextVersion OUT VARCHAR2,
13762
-- 							 nNextLifeCycle OUT NUMBER,
13763
-- 							 nParentRtagId OUT NUMBER,
13764
-- 							 nProjId IN NUMBER ) IS
13765
-- 							
13766
-- SourceBranchCount NUMBER;
13767
-- ProjRootVersion VARCHAR2(4000);
13768
-- LastLifeCycle NUMBER;
13769
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
13770
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
13771
-- 
13772
-- SourceProjId NUMBER; 
13773
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
13774
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
13775
-- 
13776
-- BEGIN
13777
-- 	/*--------------- Business Rules Here -------------------*/
13778
-- 	/*-------------------------------------------------------*/
13779
-- 	
13780
-- 	   
13781
-- 	BEGIN
13782
-- 		-- Get Project root version
13783
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
13784
-- 		  FROM RELEASE_TAGS rt
13785
-- 		 WHERE rt.PROJ_ID = nProjId
13786
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
13787
-- 	   
13788
-- 		EXCEPTION
13789
-- 		WHEN NO_DATA_FOUND THEN
13790
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
13791
-- 	END;		   
13792
-- 	
13793
-- 	
13794
-- 	
13795
-- 	 
13796
-- 	BEGIN
13797
-- 		-- Get info for source rtagid
13798
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
13799
-- 		  FROM RELEASE_TAGS rt
13800
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
13801
-- 	   
13802
-- 		EXCEPTION
13803
-- 		WHEN NO_DATA_FOUND THEN
13804
-- 		SourceProjId := NULL;
13805
-- 		SourceVersion := NULL;
13806
-- 		SourceLifeCycle := NULL;
13807
-- 	END;	  
13808
-- 	
13809
-- 	
13810
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
13811
-- 	
13812
-- 		/* Blank Release Required  OR  Release imported from other project */
13813
-- 		
13814
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
13815
-- 			/* No Releases found in the project, hence calculate next version available.  */
13816
-- 			
13817
-- 			-- Set parent rtag
13818
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
13819
-- 			
13820
-- 			
13821
-- 			BEGIN
13822
-- 				-- Get Next Available Global Root Version 
13823
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
13824
-- 				  FROM RELEASE_TAGS rt
13825
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
13826
-- 				
13827
-- 				-- Set Next Rtag Version
13828
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
13829
-- 				
13830
-- 				-- Restart Lifecycle
13831
-- 				nNextLifeCycle := 0;
13832
-- 				
13833
-- 				
13834
-- 				EXCEPTION
13835
-- 				WHEN NO_DATA_FOUND THEN
13836
-- 				-- Release Manager has no releases, hence start from 1
13837
-- 				sNextVersion := '1';
13838
-- 				nNextLifeCycle := 0;
13839
-- 				
13840
-- 			END;
13841
-- 			
13842
-- 			
13843
-- 					
13844
-- 		ELSE
13845
-- 			/* Releases found in this project. */
13846
-- 							   
13847
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
13848
-- 			  FROM (
13849
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
13850
-- 					  FROM RELEASE_TAGS rt
13851
-- 					 WHERE rt.PROJ_ID = nProjId
13852
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
13853
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
13854
-- 			  		) qry
13855
-- 			 WHERE ROWNUM = 1;		
13856
-- 
13857
-- 			
13858
-- 			-- Set same Rtag Version
13859
-- 			sNextVersion := ProjRootVersion;
13860
-- 			
13861
-- 			-- Increase Lifecycle
13862
-- 			nNextLifeCycle := LastLifeCycle + 1;
13863
-- 		
13864
-- 		END IF;
13865
-- 				
13866
-- 	
13867
-- 		
13868
-- 	ELSE
13869
-- 		/* Create Release From other release within this project */
13870
-- 		
13871
-- 		-- Set parent id
13872
-- 		nParentRtagId := nSourceRtagId;
13873
-- 		
13874
-- 		
13875
-- 		-- Get number of source branches
13876
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
13877
-- 		  FROM RELEASE_TAGS rt
13878
-- 		 WHERE rt.PROJ_ID = nProjId
13879
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
13880
-- 		   
13881
-- 		   
13882
-- 		IF SourceBranchCount = 0 THEN
13883
-- 			/* Release is Head (i.e. Tip on its branch ) */
13884
-- 			
13885
-- 			-- Set Next Rtag Version
13886
-- 			sNextVersion := SourceVersion;
13887
-- 			
13888
-- 			-- Increase Lifecycle
13889
-- 			nNextLifeCycle := SourceLifeCycle + 1;
13890
-- 			
13891
-- 			
13892
-- 		ELSIF SourceBranchCount = 1 THEN
13893
-- 			/* Release IS NOT Head, but can be branched */
13894
-- 			
13895
-- 			-- Set Next Rtag Version
13896
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
13897
-- 			
13898
-- 			-- Reset Lifecycle to 1
13899
-- 			nNextLifeCycle := 1;
13900
-- 			
13901
-- 			
13902
-- 		ELSE	
13903
-- 			-- Limit of two branches is reached
13904
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
13905
-- 			
13906
-- 		END IF;	
13907
-- 			
13908
-- 			
13909
-- 		
13910
-- 		
13911
-- 		
13912
-- 	
13913
-- 	END IF;
13914
-- 	
13915
-- 		
13916
-- END;
13917
 
13918
/*-------------------------------------------------------------------------------------------------------*/
13919
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
13920
 
13921
	IsBaseView CHAR(1);
13922
 
13923
BEGIN
13924
 
13925
	-- Check if the view is BASE VIEW
13926
	SELECT vi.BASE_VIEW INTO IsBaseView
13927
	  FROM VIEWS vi
13928
	 WHERE vi.VIEW_ID = ViewId;
13929
 
13930
	IF (IsBaseView = 'Y') THEN 
13931
		-- Get Base view content
13932
		OPEN RecordSet FOR
13933
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13934
			   rel.deprecated_state,
13935
			   pv.pv_id, 
13936
			   pkg.pkg_name, 
13937
			   pv.pkg_version, 
13938
			   pv.dlocked, 
13939
			   pv.pv_description,
13940
			   pv.BUILD_TYPE
13941
		  FROM release_content rel,
13942
		       packages pkg,
13943
		       package_versions pv
13944
		 WHERE pv.pkg_id = pkg.pkg_id
13945
		   AND rel.pv_id = pv.pv_id
13946
		   AND rel.BASE_VIEW_ID = ViewId
13947
		   AND rel.RTAG_ID = RtagId
13948
		 ORDER BY UPPER(pkg.PKG_NAME);
13949
 
13950
	ELSE	 
13951
 
13952
	 	-- Get non base view content
13953
		OPEN RecordSet FOR
13954
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
13955
			   rel.deprecated_state,
13956
			   pv.pv_id, 
13957
			   pkg.pkg_name, 
13958
			   pv.pkg_version, 
13959
			   pv.dlocked, 
13960
			   pv.pv_description,
13961
			   pv.BUILD_TYPE
13962
		  FROM release_content rel,
13963
		       packages pkg,
13964
		       package_versions pv,
13965
			   VIEW_DEF vd
13966
		 WHERE pv.pkg_id = pkg.pkg_id
13967
		   AND rel.pv_id = pv.pv_id
13968
		   AND vd.VIEW_ID = ViewId
13969
		   AND vd.PKG_ID = pv.PKG_ID
13970
		   AND rel.RTAG_ID = RtagId
13971
		 ORDER BY UPPER(pkg.PKG_NAME);		 
13972
 
13973
	END IF;	 	 
13974
 
13975
 
13976
 
13977
 
13978
END;
13979
/*-------------------------------------------------------------------------------------------------------*/
13980
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
13981
 
13982
	ReleaseLocation VARCHAR2(4000);
13983
	sPkgVersion VARCHAR2(4000);
13984
	nPkgId NUMBER;
13985
	sVExt VARCHAR2(4000);
13986
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
13987
 
13988
	-- Find package for replacement
13989
	CURSOR curReplacePkg IS
13990
    SELECT pv.PV_ID
13991
	  FROM RELEASE_CONTENT rc,
13992
	  	   PACKAGE_VERSIONS pv
13993
	 WHERE rc.PV_ID = pv.PV_ID
13994
	   AND rc.RTAG_ID = RtagId
13995
	   AND pv.PKG_ID = nPkgId
13996
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
13997
    recReplacePkg curReplacePkg%ROWTYPE;
13998
 
13999
BEGIN
14000
 
14001
	-- Get is_patch, pkg_id and v_ext
14002
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
14003
	  FROM PACKAGE_VERSIONS pv
14004
	 WHERE pv.PV_ID = newPvId;
14005
 
14006
 
14007
	-- Never put patch in relesed area
14008
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
14009
 
14010
		-- Try to get a package to be replaced with this new one.
14011
		-- Use unique constraint of PKG_ID and V_EXT
14012
		OPEN curReplacePkg;
14013
	    FETCH curReplacePkg INTO recReplacePkg;
14014
 
14015
	    IF curReplacePkg%FOUND THEN
14016
			-- Replace package
14017
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
14018
 
14019
		ELSE
14020
			-- Add new package
14021
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
14022
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
14023
 
14024
 
14025
		    /* LOG ACTION */
14026
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14027
			  FROM PROJECTS proj,
14028
			  	   RELEASE_TAGS rt
14029
			 WHERE rt.PROJ_ID = proj.PROJ_ID
14030
			   AND rt.RTAG_ID = RtagId;
14031
 
14032
			SELECT pv.PKG_VERSION INTO sPkgVersion
14033
			  FROM PACKAGE_VERSIONS pv
14034
			 WHERE pv.PV_ID = newPvId;
14035
 
14036
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14037
 
14038
 
14039
		END IF;
14040
 
14041
		CLOSE curReplacePkg;
14042
 
14043
	END IF;
14044
 
14045
END;
14046
/*-------------------------------------------------------------------------------------------------------*/
14047
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14048
 
14049
	ReleaseLocation VARCHAR2(4000);
14050
	sPkgVersion VARCHAR2(4000);
14051
 
14052
BEGIN
14053
 
14054
	-- Replace Package
14055
    UPDATE RELEASE_CONTENT
14056
       SET pv_id = newPvId,
14057
           insert_stamp = Ora_Sysdate,
14058
           insertor_id = UserId,
14059
		   product_state = NULL
14060
     WHERE rtag_id = RtagId
14061
       AND pv_id = oldPvId;  
14062
 
14063
 
14064
    /* LOG ACTION */
14065
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14066
	  FROM PROJECTS proj,
14067
	  	   RELEASE_TAGS rt
14068
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14069
	   AND rt.RTAG_ID = RtagId;
14070
 
14071
	SELECT pv.PKG_VERSION INTO sPkgVersion
14072
	  FROM PACKAGE_VERSIONS pv
14073
	 WHERE pv.PV_ID = newPvId;
14074
 
14075
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
14076
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14077
 
14078
END;
14079
/*-------------------------------------------------------------------------------------------------------*/
14080
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14081
	ReleaseLocation VARCHAR2(4000);
14082
 
14083
BEGIN
14084
 
14085
 
14086
	-- Delete old package
14087
	DELETE
14088
	  FROM RELEASE_CONTENT rc
14089
	 WHERE rc.PV_ID = PvId
14090
	   AND rc.RTAG_ID = RtagId;
14091
 
14092
 
14093
	/* LOG ACTION */
14094
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14095
	  FROM PROJECTS proj,
14096
	       RELEASE_TAGS rt
14097
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14098
	   AND rt.RTAG_ID = RtagId;
14099
 
14100
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14101
 
14102
 
14103
END;
14104
/*-------------------------------------------------------------------------------------------------------*/
14105
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14106
	ReleaseLocation VARCHAR2(4000);
14107
 
14108
	CURSOR curMatchingPackage IS
14109
    SELECT mpv.PV_ID
14110
	  FROM RELEASE_CONTENT rc,
14111
	  	   PACKAGE_VERSIONS mpv,
14112
		   PACKAGE_VERSIONS pv
14113
	 WHERE rc.PV_ID = mpv.PV_ID
14114
	   AND rc.RTAG_ID = RtagId
14115
	   AND pv.PV_ID = PvId
14116
	   AND pv.PKG_ID = mpv.PKG_ID
14117
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
14118
    recMatchingPackage curMatchingPackage%ROWTYPE;
14119
 
14120
BEGIN
14121
 
14122
	OPEN curMatchingPackage;
14123
    FETCH curMatchingPackage INTO recMatchingPackage;
14124
 
14125
    IF curMatchingPackage%FOUND THEN
14126
		-- Delete old package
14127
		DELETE
14128
		  FROM RELEASE_CONTENT rc
14129
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
14130
		   AND rc.RTAG_ID = RtagId;
14131
 
14132
 
14133
		/* LOG ACTION */
14134
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14135
		  FROM PROJECTS proj,
14136
		  	   RELEASE_TAGS rt
14137
		 WHERE rt.PROJ_ID = proj.PROJ_ID
14138
		   AND rt.RTAG_ID = RtagId;
14139
 
14140
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14141
 
14142
	END IF;
14143
 
14144
 
14145
	CLOSE curMatchingPackage;
14146
 
14147
 
14148
 
14149
 
14150
END;
14151
/*-------------------------------------------------------------------------------------------------------*/
14152
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
14153
 
14154
	ReturnValue NUMBER;
14155
 
14156
BEGIN
14157
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
14158
	  FROM RELEASE_CONTENT rc
14159
	 WHERE rc.RTAG_ID = RtagId
14160
	   AND rc.PV_ID = PvId;
14161
 
14162
	RETURN ReturnValue;
14163
END;
14164
/*-------------------------------------------------------------------------------------------------------*/
14165
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
14166
 
14167
BEGIN
14168
	-- Reset Ignore warnings up-the-tree
14169
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
14170
 
14171
	-- Refresh Package states
14172
	TOUCH_RELEASE ( RtagId );
14173
 
14174
END;
14175
/*-------------------------------------------------------------------------------------------------------*/
14176
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
14177
	CURSOR curReleases IS
14178
    SELECT rc.RTAG_ID
14179
	  FROM RELEASE_CONTENT rc
14180
	 WHERE rc.PV_ID = PvId;
14181
    recReleases curReleases%ROWTYPE;
14182
 
14183
BEGIN
14184
 
14185
	OPEN curReleases;
14186
    FETCH curReleases INTO recReleases;
14187
 
14188
	WHILE curReleases%FOUND
14189
	LOOP
14190
 
14191
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
14192
 
14193
		FETCH curReleases INTO recReleases;
14194
	END LOOP;
14195
 
14196
	CLOSE curReleases;	
14197
 
14198
END;
14199
/*-------------------------------------------------------------------------------------------------------*/
14200
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
14201
 
14202
BEGIN
14203
 
14204
	UPDATE RELEASE_CONTENT rc SET
14205
	rc.BASE_VIEW_ID = NewViewId
14206
	WHERE rc.PV_ID = PvId
14207
	  AND rc.RTAG_ID = RtagId;
14208
 
14209
END;
14210
/*-------------------------------------------------------------------------------------------------------*/
14211
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
14212
 
14213
	RowCount NUMBER;
14214
 
14215
 
14216
	CURSOR curPackageClash IS
14217
	SELECT pkg.PKG_NAME,
14218
		   er.*
14219
	  FROM (
14220
 
14221
	  		/* Get existing referenced packages */
14222
			SELECT pv.PKG_ID,
14223
			       pv.V_EXT
14224
			  FROM RELEASE_LINKS rl,
14225
			  	   RELEASE_CONTENT rc,
14226
			  	   PACKAGE_VERSIONS pv
14227
			 WHERE rl.RTAG_ID = nRtagId
14228
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
14229
			   AND rc.PV_ID = pv.PV_ID
14230
 
14231
	  	    ) er,
14232
			(
14233
 
14234
			/* Get current reference packages */
14235
			SELECT pv.PKG_ID,
14236
			       pv.V_EXT
14237
			  FROM RELEASE_CONTENT rc,
14238
			  	   PACKAGE_VERSIONS pv
14239
			 WHERE rc.RTAG_ID = nRefRtagId
14240
			   AND rc.PV_ID = pv.PV_ID    
14241
 
14242
			) cr,
14243
			PACKAGES PKG
14244
	 WHERE er.PKG_ID = cr.PKG_ID
14245
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14246
	   AND er.PKG_ID = pkg.PKG_ID;
14247
 
14248
	recPackageClash curPackageClash%ROWTYPE;	   
14249
 
14250
BEGIN
14251
	/*--------------- Business Rules Here -------------------*/
14252
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14253
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14254
	END IF;
14255
 
14256
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14257
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14258
	END IF;
14259
	/*-------------------------------------------------------*/
14260
	ProblemString := NULL;
14261
 
14262
 
14263
	-- Check if release already has references
14264
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
14265
	  FROM RELEASE_LINKS rl
14266
	 WHERE rl.RTAG_ID = nRtagId;	
14267
 
14268
 
14269
	IF RowCount > 0 THEN
14270
		-- Found existing references
14271
 
14272
		-- Make sure there is no package clashes
14273
		OPEN curPackageClash;
14274
	    FETCH curPackageClash INTO recPackageClash;
14275
 
14276
		IF curPackageClash%FOUND THEN
14277
 
14278
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
14279
 
14280
			WHILE curPackageClash%FOUND
14281
			LOOP
14282
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
14283
 
14284
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
14285
 
14286
				FETCH curPackageClash INTO recPackageClash;
14287
			END LOOP;
14288
 
14289
		END IF;
14290
 
14291
		CLOSE curPackageClash;
14292
 
14293
 
14294
	ELSE
14295
		-- No references found, hence reference a release
14296
 
14297
 
14298
		-- Remove exising package from this release to be referenced
14299
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
14300
 
14301
 
14302
		-- Add new linked packages to release
14303
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14304
		SELECT nRtagId,
14305
			   rc.PV_ID,
14306
			   rc.BASE_VIEW_ID, 
14307
			   rc.INSERT_STAMP, 
14308
			   rc.INSERTOR_ID, 
14309
			   rc.PKG_STATE
14310
		  FROM RELEASE_CONTENT rc
14311
		 WHERE rc.RTAG_ID = nRefRtagId;
14312
 
14313
 
14314
 
14315
		-- Copy ignore warnings for referenced packages
14316
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
14317
		SELECT nRtagId, 
14318
			   iw.PV_ID, 
14319
			   iw.DPV_ID, 
14320
			   iw.IS_PATCH_IGNORE
14321
		  FROM IGNORE_WARNINGS iw,
14322
		  	   RELEASE_CONTENT rc
14323
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
14324
		   AND iw.PV_ID = rc.PV_ID
14325
		   AND rc.RTAG_ID = nRefRtagId;	 
14326
 
14327
 
14328
 
14329
		-- Reference release 
14330
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
14331
		VALUES ( nRtagId, nRefRtagId );		 
14332
 
14333
 
14334
		-- Refresh Package states
14335
		TOUCH_RELEASE ( nRtagId );
14336
 
14337
	END IF;	 
14338
 
14339
 
14340
END;
14341
/*-------------------------------------------------------------------------------------------------------*/
14342
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
14343
 
14344
 
14345
BEGIN
14346
	/*--------------- Business Rules Here -------------------*/
14347
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14348
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14349
	END IF;
14350
 
14351
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14352
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14353
	END IF;
14354
 
14355
	/*-------------------------------------------------------*/
14356
 
14357
 
14358
	-- Remove ignore warnings for those packages who use referenced packages
14359
	DELETE FROM IGNORE_WARNINGS iw
14360
	 WHERE iw.RTAG_ID = nRtagId
14361
	   AND iw.DPV_ID IN (
14362
	   						SELECT dep.DPV_ID
14363
							  FROM (
14364
 
14365
									/* Get referenced packages */
14366
									SELECT pv.PKG_ID,
14367
									       pv.V_EXT
14368
									  FROM RELEASE_CONTENT rc,
14369
									  	   PACKAGE_VERSIONS pv
14370
									 WHERE rc.RTAG_ID = nRefRtagId
14371
									   AND rc.PV_ID = pv.PV_ID    
14372
 
14373
									) cr,
14374
									(
14375
 
14376
									/* Get all dependencies for current release */
14377
									SELECT DISTINCT 
14378
										   pv.PKG_ID,
14379
										   pv.V_EXT,
14380
										   dep.DPV_ID
14381
									  FROM RELEASE_CONTENT rc,
14382
										   PACKAGE_DEPENDENCIES dep,
14383
										   PACKAGE_VERSIONS pv
14384
									 WHERE rc.RTAG_ID = nRtagId
14385
									   AND rc.PV_ID = dep.PV_ID		
14386
									   AND dep.PV_ID = pv.PV_ID	   
14387
 
14388
									) dep
14389
							 WHERE dep.PKG_ID = cr.PKG_ID
14390
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14391
	   					);  
14392
 
14393
 
14394
 
14395
 
14396
	-- Remove ignore warnings for those package which are going to be replaced with the reference
14397
	DELETE FROM IGNORE_WARNINGS iw
14398
	 WHERE iw.RTAG_ID = nRtagId
14399
	   AND iw.PV_ID IN (
14400
						SELECT pv.PV_ID
14401
						  FROM (
14402
 
14403
								/* Get referenced packages */
14404
								SELECT pv.PKG_ID,
14405
								       pv.V_EXT
14406
								  FROM RELEASE_CONTENT rc,
14407
								  	   PACKAGE_VERSIONS pv
14408
								 WHERE rc.RTAG_ID = nRefRtagId
14409
								   AND rc.PV_ID = pv.PV_ID    
14410
 
14411
								) cr,
14412
								RELEASE_CONTENT rc,
14413
								PACKAGE_VERSIONS pv
14414
						 WHERE pv.PKG_ID = cr.PKG_ID
14415
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14416
						   AND rc.RTAG_ID = nRtagId
14417
						   AND rc.PV_ID = pv.PV_ID
14418
						);			
14419
 
14420
 
14421
 
14422
 
14423
 
14424
	-- Remove matching packages from release
14425
	DELETE FROM RELEASE_CONTENT rc
14426
	 WHERE rc.RTAG_ID = nRtagId
14427
	   AND rc.PV_ID IN (
14428
						SELECT pv.PV_ID
14429
						  FROM (
14430
 
14431
								/* Get referenced packages */
14432
								SELECT pv.PKG_ID,
14433
								       pv.V_EXT
14434
								  FROM RELEASE_CONTENT rc,
14435
								  	   PACKAGE_VERSIONS pv
14436
								 WHERE rc.RTAG_ID = nRefRtagId
14437
								   AND rc.PV_ID = pv.PV_ID    
14438
 
14439
								) cr,
14440
								RELEASE_CONTENT rc,
14441
								PACKAGE_VERSIONS pv
14442
						 WHERE pv.PKG_ID = cr.PKG_ID
14443
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14444
						   AND rc.RTAG_ID = nRtagId
14445
						   AND rc.PV_ID = pv.PV_ID
14446
						);	
14447
 
14448
 
14449
 
14450
 
14451
 
14452
	-- Remove Reference release 
14453
	DELETE 
14454
	  FROM RELEASE_LINKS rl
14455
	 WHERE rl.RTAG_ID = nRtagId
14456
	   AND rl.REF_RTAG_ID = nRefRtagId;
14457
 
14458
 
14459
	-- Refresh Package states
14460
	TOUCH_RELEASE ( nRtagId );
14461
 
14462
 
14463
END;
14464
/*-------------------------------------------------------------------------------------------------------*/
14465
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
14466
 
14467
	cReleaseMode CHAR(1);
14468
	cPvMode CHAR(1);
14469
 
14470
BEGIN
14471
 
14472
	-- Get Release Mode
14473
	SELECT rt.OFFICIAL INTO cReleaseMode
14474
	  FROM RELEASE_TAGS rt
14475
	 WHERE rt.RTAG_ID = RtagId;
14476
 
14477
 
14478
	-- Get Package Mode
14479
	SELECT pv.DLOCKED INTO cPvMode
14480
	  FROM PACKAGE_VERSIONS pv
14481
	 WHERE pv.PV_ID = PvId;	 
14482
 
14483
	-- Only check if package is locked 
14484
	IF (cPvMode = 'Y') THEN
14485
 
14486
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
14487
		THEN
14488
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
14489
 
14490
		END IF;
14491
 
14492
	END IF;	
14493
 
14494
 
14495
END;
14496
 
14497
/*-------------------------------------------------------------------------------------------------------*/
14498
END PK_RELEASE;
14499
/
14500
 
14501
CREATE OR REPLACE PACKAGE BODY PK_BUILDAPI_TEST IS
14502
 
14503
/*
14504
------------------------------
14505
||  Last Modified:  S.Vukovic
14506
||  Modified Date:  30/Mar/2005
14507
||  Body Version:   1.0
14508
------------------------------
14509
*/
14510
 
14511
 
14512
/*-------------------------------------------------------------------------------------------------------*/
14513
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14514
								  sOsName IN VARCHAR2,
14515
								  sOrigFilePath IN VARCHAR2,
14516
								  sFileName IN VARCHAR2,
14517
								  sDestFilePath IN VARCHAR2,
14518
								  nByteSize IN NUMBER,
14519
								  sCRCcksum IN VARCHAR2 ) IS
14520
 
14521
	nOsId NUMBER;
14522
 
14523
BEGIN
14524
	/*--------------- Business Rules Here -------------------*/
14525
	-- OS Name Requirements --
14526
	IF (sOsName IS NULL) THEN
14527
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14528
	END IF;
14529
 
14530
 
14531
	-- File Requirements --
14532
	IF (NOT sFileName IS NULL) THEN
14533
 
14534
		IF (nByteSize IS NULL) THEN
14535
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14536
 
14537
		ELSIF (sCRCcksum IS NULL) THEN
14538
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14539
 
14540
		END IF;
14541
 
14542
	END IF;
14543
 
14544
 
14545
	-- Folder Requirements --
14546
	-- No requirements for now.
14547
 
14548
	/*-------------------------------------------------------*/
14549
 
14550
	-- Get OsId
14551
	nOsId := Get_OsId ( sOsName );
14552
 
14553
 
14554
	-- Insert component entry
14555
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14556
    VALUES (
14557
			  nPvId,
14558
			  nOsId,
14559
			  sOrigFilePath,
14560
			  sFileName,
14561
			  sDestFilePath,
14562
			  nByteSize,
14563
			  sCRCcksum
14564
			);
14565
 
14566
 
14567
	EXCEPTION
14568
    WHEN DUP_VAL_ON_INDEX
14569
	THEN
14570
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14571
 
14572
END;
14573
/*-------------------------------------------------------------------------------------------------------*/
14574
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14575
 
14576
	nOsId NUMBER;
14577
 
14578
BEGIN
14579
	/*--------------- Business Rules Here -------------------*/
14580
	/*-------------------------------------------------------*/
14581
 
14582
	-- Get OsId
14583
	nOsId := Get_OsId ( sOsName );
14584
 
14585
 
14586
	-- Delete component entry
14587
	DELETE
14588
	  FROM PRODUCT_COMPONENTS pc
14589
	 WHERE pc.PV_ID = nPvId
14590
	   AND pc.OS_ID = nOsId;
14591
 
14592
 
14593
END;
14594
/*-------------------------------------------------------------------------------------------------------*/
14595
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14596
	Code NUMBER;
14597
 
14598
BEGIN
14599
 
14600
	-- Get Platform Code --
14601
	SELECT pf.CODE INTO Code
14602
	  FROM PLATFORMS pf
14603
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14604
 
14605
 
14606
	RETURN Code;	   
14607
 
14608
	EXCEPTION
14609
    	WHEN NO_DATA_FOUND THEN
14610
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14611
   	RAISE;
14612
END;
14613
/*-------------------------------------------------------------------------------------------------------*/
14614
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14615
			  					 sWebServer IN VARCHAR2,
14616
								 sMailServer IN VARCHAR2,
14617
								 sMailSender IN VARCHAR2) IS
14618
 
14619
BEGIN
14620
 
14621
 
14622
	 UPDATE BUILD_SERVICE_CONFIG
14623
	 SET CONFIG = sDatabaseServer
14624
	 WHERE SERVICE = 'DATABASE SERVER'; 
14625
 
14626
	 UPDATE BUILD_SERVICE_CONFIG
14627
	 SET CONFIG = sWebServer
14628
	 WHERE SERVICE = 'WEB SERVER'; 
14629
 
14630
	 UPDATE BUILD_SERVICE_CONFIG
14631
	 SET CONFIG = sMailServer
14632
	 WHERE SERVICE = 'MAIL SERVER'; 
14633
 
14634
	 UPDATE BUILD_SERVICE_CONFIG
14635
	 SET CONFIG = sMailSender
14636
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14637
 
14638
 
14639
 
14640
END;
14641
/*-------------------------------------------------------------------------------------------------------*/
14642
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14643
 
14644
GBE_ID NUMBER;
14645
 
14646
BEGIN
14647
 
14648
	-- Get GBE_ID
14649
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14650
 
14651
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14652
	VALUES( GBE_ID, sGBEValue);
14653
 
14654
 
14655
END;
14656
/*-------------------------------------------------------------------------------------------------------*/
14657
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14658
 
14659
BEGIN
14660
 
14661
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14662
 
14663
END;
14664
/*-------------------------------------------------------------------------------------------------------*/
14665
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14666
 
14667
BEGIN
14668
 
14669
	 UPDATE GBE_MACHTYPE
14670
	 SET GBE_VALUE = sGBEValue 
14671
	 WHERE GBE_ID = nGBE_ID;
14672
 
14673
 
14674
END;
14675
/*-------------------------------------------------------------------------------------------------------*/
14676
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14677
 
14678
nRecordNumber NUMBER;
14679
nRconId NUMBER;
14680
BEGIN
14681
	-- Get RCON_ID
14682
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14683
 
14684
        SELECT count(*) INTO nRecordNumber 
14685
        FROM RELEASE_CONFIG
14686
        WHERE RTAG_ID = nRtagId;
14687
 
14688
        IF nRecordNumber = 0 THEN
14689
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14690
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14691
        ELSE
14692
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14693
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14694
        END IF;
14695
 
14696
 
14697
 
14698
END;
14699
/*-------------------------------------------------------------------------------------------------------*/        
14700
END PK_BUILDAPI_TEST;
14701
/
14702
 
53 mhunt 14703
CREATE OR REPLACE PACKAGE BODY                   "PK_ENVIRONMENT"
51 mhunt 14704
IS
14705
/*
14706
------------------------------
53 mhunt 14707
||  Last Modified:  G.Huddy
14708
||  Modified Date:  28/May/2008
14709
||  Body Version:   1.3
51 mhunt 14710
------------------------------
14711
*/
14712
 
14713
   /*-------------------------------------------------------------------------------------------------------*/
14714
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
53 mhunt 14715
	  RETURN NUMBER
51 mhunt 14716
   IS
14717
   BEGIN
53 mhunt 14718
	   /*
14719
	  || N - unlocked
14720
	  || Y - release and locked
14721
	  || P - penging approval
14722
	  || A - approved package ready for auto-build
14723
	  */
14724
	  IF cdlock = 'N' OR cdlock = 'R'
14725
	  THEN
14726
		 -- WORK IN PROGRESS --
14727
		 RETURN 0;
14728
	  ELSIF cdlock = 'P' OR cdlock = 'A'
14729
	  THEN
14730
		 -- PENDING --
14731
		 RETURN 1;
14732
	  ELSIF cdlock = 'Y'
14733
	  THEN
14734
		 -- RELEASED --
14735
		 RETURN 2;
14736
	  ELSE
14737
		 -- NOT FOUND --
14738
		 raise_application_error
14739
						 (-20000,
14740
							 'Cannot decide where to place package. [cDlock='
14741
						  || cdlock
14742
						  || ']'
14743
						 );
14744
	  END IF;
51 mhunt 14745
   END;
14746
 
14747
/*-------------------------------------------------------------------------------------------------------*/
14748
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14749
	  RETURN NUMBER
51 mhunt 14750
   IS
53 mhunt 14751
	  envtab	NUMBER			:= -1;
51 mhunt 14752
 
53 mhunt 14753
	  CURSOR curarea
14754
	  IS
14755
		 SELECT 2 AS envtab
14756
		   FROM release_content rc
14757
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14758
		 UNION
14759
		 SELECT 0 AS envtab
14760
		   FROM work_in_progress wip
14761
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14762
		 UNION
14763
		 SELECT 1 AS envtab
14764
		   FROM planned pl
14765
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14766
 
53 mhunt 14767
	  recarea   curarea%ROWTYPE;
51 mhunt 14768
   BEGIN
53 mhunt 14769
	  OPEN curarea;
51 mhunt 14770
 
53 mhunt 14771
	  FETCH curarea
14772
	   INTO recarea;
51 mhunt 14773
 
53 mhunt 14774
	  IF curarea%FOUND
14775
	  THEN
14776
		 envtab := recarea.envtab;
14777
	  END IF;
51 mhunt 14778
 
53 mhunt 14779
	  CLOSE curarea;
51 mhunt 14780
 
53 mhunt 14781
	  RETURN envtab;
51 mhunt 14782
   END;
14783
 
14784
/*-------------------------------------------------------------------------------------------------------*/
14785
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14786
	  RETURN NUMBER
51 mhunt 14787
   IS
53 mhunt 14788
	  ispatch   package_versions.dlocked%TYPE;
14789
	  viewid	NUMBER						  := -1;
51 mhunt 14790
 
53 mhunt 14791
	  CURSOR curview
14792
	  IS
14793
		 SELECT rc.base_view_id AS view_id
14794
		   FROM release_content rc
14795
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14796
		 UNION
14797
		 SELECT wip.view_id AS view_id
14798
		   FROM work_in_progress wip
14799
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14800
		 UNION
14801
		 SELECT pl.view_id AS view_id
14802
		   FROM planned pl
14803
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14804
 
53 mhunt 14805
	  recview   curview%ROWTYPE;
51 mhunt 14806
   BEGIN
53 mhunt 14807
	  -- Get dlock state
14808
	  SELECT pv.is_patch
14809
		INTO ispatch
14810
		FROM package_versions pv
14811
	   WHERE pv.pv_id = pvid;
51 mhunt 14812
 
53 mhunt 14813
	  -- Decide which view id should package go under.
14814
	  IF (ispatch != 'Y') OR (ispatch IS NULL)
14815
	  THEN
14816
		 -- Get VIEW ID of Package
14817
		 OPEN curview;
51 mhunt 14818
 
53 mhunt 14819
		 FETCH curview
14820
		  INTO recview;
51 mhunt 14821
 
53 mhunt 14822
		 IF curview%FOUND
14823
		 THEN
14824
			viewid := recview.view_id;
14825
		 ELSE
14826
			raise_application_error
14827
			   (-20000,
14828
				   'Cannot find view_id to proceed. [PvId='
14829
				|| pvid
14830
				|| ']. The current version may not exist in the release anymore.'
14831
			   );
14832
		 END IF;
51 mhunt 14833
 
53 mhunt 14834
		 CLOSE curview;
14835
	  ELSE
14836
		 -- Get VIEW ID of Patch (view id of parent package)
14837
		 SELECT rc.base_view_id
14838
		   INTO viewid
14839
		   FROM release_content rc, package_patches ppv
14840
		  WHERE rc.rtag_id = rtagid
14841
			AND rc.pv_id = ppv.pv_id
14842
			AND ppv.patch_id = pvid;
14843
	  END IF;
51 mhunt 14844
 
53 mhunt 14845
	  RETURN viewid;
51 mhunt 14846
   END;
14847
 
14848
/*-------------------------------------------------------------------------------------------------------*/
14849
   PROCEDURE add_package (
53 mhunt 14850
	  pvid	 IN   NUMBER,
14851
	  viewid   IN   NUMBER,
14852
	  rtagid   IN   NUMBER,
14853
	  userid   IN   NUMBER
51 mhunt 14854
   )
14855
   IS
53 mhunt 14856
	  dlocked   package_versions.dlocked%TYPE;
14857
	  envtab	NUMBER;
51 mhunt 14858
   BEGIN
53 mhunt 14859
	  IF can_edit_pkg_in_project (pvid, rtagid) = 1
14860
	  THEN
14861
		 -- Get dlock state
14862
		 SELECT pv.dlocked
14863
		   INTO dlocked
14864
		   FROM package_versions pv
14865
		  WHERE pv.pv_id = pvid;
51 mhunt 14866
 
53 mhunt 14867
		 -- Get which area should go under
14868
		 envtab := select_environment_area (dlocked);
14869
		 -- Log
14870
		 log_action (pvid, 'action', userid, 'Start of Package Add...');
51 mhunt 14871
 
53 mhunt 14872
		 -- Remove Package
14873
		 IF envtab = 0
14874
		 THEN
14875
			-- WORK IN PROGRESS --
14876
			pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
14877
		 ELSIF envtab = 1
14878
		 THEN
14879
			-- PENDING --
14880
			pk_planned.add_package (pvid, viewid, rtagid, userid);
14881
		 ELSIF envtab = 2
14882
		 THEN
14883
			-- RELEASED --
14884
			-- NOTE: this package will be replaced with matching package
14885
			pk_release.add_package (pvid, viewid, rtagid, userid);
14886
			-- Now do post Release Actions
14887
			pk_release.run_post_actions (pvid, rtagid);
14888
		 END IF;
51 mhunt 14889
 
53 mhunt 14890
		 -- Log
14891
		 log_action (pvid, 'action', userid, 'End of Package Add...');
14892
	  END IF;
51 mhunt 14893
   END;
14894
 
14895
/*-------------------------------------------------------------------------------------------------------*/
14896
   PROCEDURE add_package_bulk (
53 mhunt 14897
	  pvidlist   IN   VARCHAR2,
14898
	  viewid	 IN   NUMBER,
14899
	  rtagid	 IN   NUMBER,
14900
	  userid	 IN   NUMBER
51 mhunt 14901
   )
14902
   IS
53 mhunt 14903
	  nidcollector   relmgr_number_tab_t			:= relmgr_number_tab_t
14904
																		  ();
14905
	  dlocked		package_versions.dlocked%TYPE;
14906
	  pvid		   NUMBER;
14907
	  envtab		 NUMBER;
51 mhunt 14908
   BEGIN
53 mhunt 14909
	  /*--------------- Business Rules Here -------------------*/
14910
	  IF (pvidlist IS NULL)
14911
	  THEN
14912
		 raise_application_error (-20000,
14913
								  'Please select at least one package.'
14914
								 );
14915
	  END IF;
51 mhunt 14916
 
14917
/*-------------------------------------------------------*/
53 mhunt 14918
	  nidcollector := in_list_number (pvidlist);
51 mhunt 14919
 
53 mhunt 14920
	  FOR i IN 1 .. nidcollector.COUNT
14921
	  LOOP
14922
		 pvid := nidcollector (i);
14923
		 add_package (pvid, viewid, rtagid, userid);
14924
	  END LOOP;
51 mhunt 14925
   END;
14926
 
14927
/*-------------------------------------------------------------------------------------------------------*/
14928
   PROCEDURE replace_package (
53 mhunt 14929
	  newpvid   IN   NUMBER,
14930
	  oldpvid   IN   NUMBER,
14931
	  rtagid	IN   NUMBER,
14932
	  userid	IN   NUMBER
51 mhunt 14933
   )
14934
   IS
53 mhunt 14935
	  dlocked		package_versions.dlocked%TYPE;
14936
	  viewid		 NUMBER;
14937
	  envtab		 NUMBER;
14938
	  ROWCOUNT	   NUMBER;
14939
	  creleasemode   CHAR (1);
14940
	  npkgid		 NUMBER;
51 mhunt 14941
   BEGIN
53 mhunt 14942
	  /*--------------- Business Rules Here -------------------*/
14943
	  -- Check if oldPvId exists. It could have been removed
14944
	  SELECT COUNT (pv.pv_id)
14945
		INTO ROWCOUNT
14946
		FROM package_versions pv
14947
	   WHERE pv.pv_id = oldpvid;
51 mhunt 14948
 
14949
/*-------------------------------------------------------*/
14950
 
53 mhunt 14951
	  /* This procedure is usually used by "History" option in Release Manager */
51 mhunt 14952
 
53 mhunt 14953
	  -- Get dlock state
14954
	  SELECT pv.dlocked
14955
		INTO dlocked
14956
		FROM package_versions pv
14957
	   WHERE pv.pv_id = newpvid;
51 mhunt 14958
 
53 mhunt 14959
	  -- Get VIEW_ID ---
14960
	  IF ROWCOUNT = 1
14961
	  THEN
14962
		 viewid := get_view_location (oldpvid, rtagid);
14963
	  ELSE
14964
		 -- Set ViewID to default
14965
		 viewid := 7;
14966
	  END IF;
51 mhunt 14967
 
53 mhunt 14968
	  -- Get which area should go under
14969
	  envtab := select_environment_area (dlocked);
14970
	  -- Log
14971
	  log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
51 mhunt 14972
 
53 mhunt 14973
	  -- Replace package
14974
	  IF envtab = 0
14975
	  THEN
14976
		 -- WORK IN PROGRESS --
51 mhunt 14977
 
53 mhunt 14978
		 -- Delete old package
14979
		 pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
14980
		 -- Add new package
14981
		 pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
14982
	  ELSIF envtab = 1
14983
	  THEN
14984
		 -- PENDING --
51 mhunt 14985
 
53 mhunt 14986
		 -- Delete old package
14987
		 pk_planned.remove_package (oldpvid, rtagid, userid);
14988
		 -- Add new package
14989
		 pk_planned.add_package (newpvid, viewid, rtagid, userid);
14990
	  ELSIF envtab = 2
14991
	  THEN
14992
		 -- RELEASED --
51 mhunt 14993
 
53 mhunt 14994
		 -- Delete old package
14995
		 pk_release.remove_package (oldpvid, rtagid, userid);
14996
		 -- Add new package
14997
		 pk_release.add_package (newpvid, viewid, rtagid, userid);
14998
		 -- Now do post Release Actions
14999
		 pk_release.run_post_actions (newpvid, rtagid);
15000
	  END IF;
51 mhunt 15001
 
53 mhunt 15002
	  -- Log
15003
	  log_action (oldpvid, 'action', userid, 'End of Package Replace...');
51 mhunt 15004
   END;
15005
 
15006
/*-------------------------------------------------------------------------------------------------------*/
15007
   FUNCTION remove_package (
53 mhunt 15008
	  pvid		  IN   NUMBER,
15009
	  rtagid		IN   NUMBER,
15010
	  userid		IN   NUMBER,
15011
	  forceremove   IN   CHAR
51 mhunt 15012
   )
53 mhunt 15013
	  RETURN NUMBER
51 mhunt 15014
   IS
53 mhunt 15015
	  envtab		NUMBER;
15016
	  isused		BOOLEAN;
15017
	  recordcount   NUMBER;
51 mhunt 15018
   BEGIN
15019
/*--------------- Business Rules Here -------------------*/
15020
/*-------------------------------------------------------*/
15021
 
53 mhunt 15022
	  -- Find location of package
15023
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15024
 
53 mhunt 15025
	  -- Remove Package
15026
	  IF envtab = 0
15027
	  THEN
15028
		 -- WORK IN PROGRESS --
15029
		 -- Delete package
15030
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
15031
		 RETURN 0;
15032
	  ELSIF envtab = 1
15033
	  THEN
15034
		 -- PENDING --
15035
		 -- Delete package
15036
		 pk_planned.remove_package (pvid, rtagid, userid);
15037
		 RETURN 0;
15038
	  ELSIF envtab = 2
15039
	  THEN
15040
		 -- RELEASED --
51 mhunt 15041
 
53 mhunt 15042
		 -- Check if is used by other packages
15043
		 isused := TRUE;
51 mhunt 15044
 
53 mhunt 15045
		 IF forceremove = 'N'
15046
		 THEN
15047
			SELECT COUNT (pv.pv_id)
15048
			  INTO recordcount
15049
			  FROM (SELECT dpv.pkg_id, dpv.v_ext
15050
					  FROM release_content rc,
15051
						   package_dependencies dep,
15052
						   package_versions dpv
15053
					 WHERE rc.rtag_id = rtagid
15054
					   AND rc.pv_id = dep.pv_id
15055
					   AND dep.dpv_id = dpv.pv_id) rdep,
15056
				   package_versions pv
15057
			 WHERE pv.pkg_id = rdep.pkg_id
15058
			   AND NVL (pv.v_ext, '|LINK_A_NULL|') =
15059
											 NVL (rdep.v_ext, '|LINK_A_NULL|')
15060
			   AND pv.pv_id = pvid;
51 mhunt 15061
 
53 mhunt 15062
			IF recordcount > 0
15063
			THEN
15064
			   RETURN 1;					-- Return 1 as package being used
15065
			ELSE
15066
			   isused := FALSE;
15067
			END IF;
15068
		 END IF;
51 mhunt 15069
 
53 mhunt 15070
		 IF forceremove = 'Y' OR NOT isused
15071
		 THEN
15072
			-- Delete old package
15073
			pk_release.remove_package (pvid, rtagid, userid);
15074
			-- Now do post Release Actions
15075
			pk_release.run_post_actions (pvid, rtagid);
15076
			RETURN 0;
15077
		 END IF;
15078
	  END IF;
51 mhunt 15079
   END;
15080
 
15081
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15082
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15083
 
51 mhunt 15084
   PROCEDURE get_environment_items (
53 mhunt 15085
	  viewtype		   IN	   NUMBER,
15086
	  userid			 IN	   NUMBER,
15087
	  rtagid			 IN	   NUMBER,
15088
	  sviewidshowlist	IN	   VARCHAR2,
15089
	  ntruerecordcount   OUT	  NUMBER,
15090
	  recordset		  OUT	  typecur
51 mhunt 15091
   )
15092
   IS
15093
   BEGIN
53 mhunt 15094
	  -- Get true record count because views can give false count
15095
	  SELECT COUNT (pl.pv_id)
15096
		INTO ntruerecordcount
15097
		FROM environment_view pl
15098
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15099
 
53 mhunt 15100
	  IF viewtype = 1
15101
	  THEN
15102
		 /*--- GUEST VIEW ---*/
15103
		 OPEN recordset FOR
15104
			SELECT   *
15105
				FROM (
15106
					  /* Base Views collapsed */
15107
					  SELECT DISTINCT vi.view_id, vi.view_name,
15108
									  TO_NUMBER (NULL) AS pkg_state,
15109
									  TO_NUMBER (NULL) AS deprecated_state,
15110
									  TO_NUMBER (NULL) AS pv_id,
15111
									  NULL AS pkg_name, NULL AS pkg_version,
15112
									  NULL AS dlocked, NULL AS pv_description,
15113
									  rel.operation
15114
								 FROM environment_view rel, views vi
15115
								WHERE rel.view_id = vi.view_id
15116
								  AND rtag_id = rtagid
15117
								  AND rel.view_id NOT IN (
15118
										 SELECT *
15119
										   FROM THE
15120
												   (SELECT CAST
15121
															  (in_list_number
15122
																  (sviewidshowlist
15123
																  ) AS relmgr_number_tab_t
15124
															  )
15125
													  FROM DUAL
15126
												   ))
15127
					  UNION
15128
					  /* Base Views expanded */
15129
					  SELECT vi.view_id, vi.view_name,
15130
							 DECODE (rel.pkg_state,
15131
									 NULL, 0,
15132
									 rel.pkg_state
15133
									) AS pkg_state,
15134
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15135
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15136
							 rel.operation
15137
						FROM environment_view rel,
15138
							 PACKAGES pkg,
15139
							 package_versions pv,
15140
							 views vi
15141
					   WHERE pv.pkg_id = pkg.pkg_id
15142
						 AND rel.pv_id = pv.pv_id
15143
						 AND rel.view_id = vi.view_id
15144
						 AND rel.view_id IN (
15145
								SELECT *
15146
								  FROM THE
15147
										  (SELECT CAST
15148
													 (in_list_number
15149
															  (sviewidshowlist) AS relmgr_number_tab_t
15150
													 )
15151
											 FROM DUAL
15152
										  ))
15153
						 AND rtag_id = rtagid) ord
15154
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15155
	  ELSIF viewtype = 2
15156
	  THEN
15157
		 /*--- PERSONAL VIEW ---*/
15158
		 OPEN recordset FOR
15159
			SELECT   *
15160
				FROM (
15161
					  /* Base Views collapsed */
15162
					  SELECT DISTINCT vi.view_id, vi.view_name,
15163
									  TO_NUMBER (NULL) AS pkg_state,
15164
									  TO_NUMBER (NULL) AS deprecated_state,
15165
									  TO_NUMBER (NULL) AS pv_id,
15166
									  NULL AS pkg_name, NULL AS pkg_version,
15167
									  NULL AS dlocked, NULL AS pv_description,
15168
									  rel.operation
15169
								 FROM environment_view rel,
15170
									  view_settings vs,
15171
									  views vi
15172
								WHERE rel.view_id = vi.view_id
15173
								  AND vs.view_id = rel.view_id
15174
								  AND vs.user_id = userid
15175
								  AND rtag_id = rtagid
15176
								  AND rel.view_id NOT IN (
15177
										 SELECT *
15178
										   FROM THE
15179
												   (SELECT CAST
15180
															  (in_list_number
15181
																  (sviewidshowlist
15182
																  ) AS relmgr_number_tab_t
15183
															  )
15184
													  FROM DUAL
15185
												   ))
15186
					  UNION
15187
					  /* Base Views expanded */
15188
					  SELECT vi.view_id, vi.view_name,
15189
							 DECODE (rel.pkg_state,
15190
									 NULL, 0,
15191
									 rel.pkg_state
15192
									) AS pkg_state,
15193
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15194
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15195
							 rel.operation
15196
						FROM environment_view rel,
15197
							 PACKAGES pkg,
15198
							 package_versions pv,
15199
							 views vi,
15200
							 view_settings vs
15201
					   WHERE pv.pkg_id = pkg.pkg_id
15202
						 AND rel.pv_id = pv.pv_id
15203
						 AND rel.view_id = vi.view_id
15204
						 AND vs.view_id = vi.view_id
15205
						 AND vs.user_id = userid
15206
						 AND rel.view_id IN (
15207
								SELECT *
15208
								  FROM THE
15209
										  (SELECT CAST
15210
													 (in_list_number
15211
															  (sviewidshowlist) AS relmgr_number_tab_t
15212
													 )
15213
											 FROM DUAL
15214
										  ))
15215
						 AND rtag_id = rtagid
15216
					  UNION
15217
					  /* Private Views collapsed */
15218
					  SELECT vi.view_id, vi.view_name,
15219
							 TO_NUMBER (NULL) AS pkg_state,
15220
							 TO_NUMBER (NULL) AS deprecated_state,
15221
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15222
							 NULL AS pkg_version, NULL AS dlocked,
15223
							 NULL AS pv_description,
15224
							 rel.operation
15225
						FROM view_settings vs,
15226
							 view_def vd,
15227
							 views vi,
15228
							 environment_view rel,
15229
							 package_versions pv
15230
					   WHERE vs.view_id = vi.view_id
15231
						 AND rel.pv_id = pv.pv_id
15232
						 AND vd.pkg_id = pv.pkg_id
15233
						 AND vd.view_id = vi.view_id
15234
						 AND vi.base_view = 'N'
15235
						 AND rel.rtag_id = rtagid
15236
						 AND vs.user_id = userid
15237
						 AND vi.view_id NOT IN (
15238
								SELECT *
15239
								  FROM THE
15240
										  (SELECT CAST
15241
													 (in_list_number
15242
															  (sviewidshowlist) AS relmgr_number_tab_t
15243
													 )
15244
											 FROM DUAL
15245
										  ))
15246
					  UNION
15247
					  /* Private Views expanded */
15248
					  SELECT vi.view_id, vi.view_name,
15249
							 DECODE (rel.pkg_state,
15250
									 NULL, 0,
15251
									 rel.pkg_state
15252
									) AS pkg_state,
15253
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15254
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15255
							 rel.operation
15256
						FROM users usr,
15257
							 view_settings vs,
15258
							 view_def vd,
15259
							 views vi,
15260
							 environment_view rel,
15261
							 PACKAGES pkg,
15262
							 package_versions pv
15263
					   WHERE vs.user_id = usr.user_id
15264
						 AND vs.view_id = vi.view_id
15265
						 AND vd.view_id = vi.view_id
15266
						 AND pv.pkg_id = pkg.pkg_id
15267
						 AND rel.pv_id = pv.pv_id
15268
						 AND rel.rtag_id = rtagid
15269
						 AND vd.pkg_id = pkg.pkg_id
15270
						 AND vi.base_view = 'N'
15271
						 AND vi.view_id IN (
15272
								SELECT *
15273
								  FROM THE
15274
										  (SELECT CAST
15275
													 (in_list_number
15276
															  (sviewidshowlist) AS relmgr_number_tab_t
15277
													 )
15278
											 FROM DUAL
15279
										  ))
15280
						 AND usr.user_id = userid) ord
15281
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15282
	  END IF;
51 mhunt 15283
   END;
15284
 
15285
/*-------------------------------------------------------------------------------------------------------*/
15286
   PROCEDURE get_released_items (
53 mhunt 15287
	  viewtype		   IN	   NUMBER,
15288
	  userid			 IN	   NUMBER,
15289
	  rtagid			 IN	   NUMBER,
15290
	  sviewidshowlist	IN	   VARCHAR2,
15291
	  ntruerecordcount   OUT	  NUMBER,
15292
	  recordset		  OUT	  typecur
51 mhunt 15293
   )
15294
   IS
15295
   BEGIN
53 mhunt 15296
	  -- Get true record count because views can give false count
15297
	  SELECT COUNT (rc.pv_id)
15298
		INTO ntruerecordcount
15299
		FROM release_content rc
15300
	   WHERE rc.rtag_id = rtagid;
51 mhunt 15301
 
53 mhunt 15302
	  IF viewtype = 1
15303
	  THEN
15304
		 /*--- GUEST VIEW ---*/
15305
		 OPEN recordset FOR
15306
			SELECT   *
15307
				FROM (
15308
					  /* Base Views collapsed */
15309
					  SELECT DISTINCT vi.view_id, vi.view_name,
15310
									  TO_NUMBER (NULL) AS pkg_state,
15311
									  TO_NUMBER (NULL) AS deprecated_state,
15312
									  TO_NUMBER (NULL) AS pv_id,
15313
									  NULL AS pkg_name, NULL AS pkg_version,
15314
									  NULL AS dlocked, NULL AS pv_description
15315
								 FROM release_content rel, views vi
15316
								WHERE rel.base_view_id = vi.view_id
15317
								  AND rtag_id = rtagid
15318
								  AND rel.base_view_id NOT IN (
15319
										 SELECT *
15320
										   FROM THE
15321
												   (SELECT CAST
15322
															  (in_list_number
15323
																  (sviewidshowlist
15324
																  ) AS relmgr_number_tab_t
15325
															  )
15326
													  FROM DUAL
15327
												   ))
15328
					  UNION
15329
					  /* Base Views expanded */
15330
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15331
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15332
							 pv.pkg_version, pv.dlocked, pv.pv_description
15333
						FROM release_content rel,
15334
							 PACKAGES pkg,
15335
							 package_versions pv,
15336
							 views vi
15337
					   WHERE pv.pkg_id = pkg.pkg_id
15338
						 AND rel.pv_id = pv.pv_id
15339
						 AND rel.base_view_id = vi.view_id
15340
						 AND rel.base_view_id IN (
15341
								SELECT *
15342
								  FROM THE
15343
										  (SELECT CAST
15344
													 (in_list_number
15345
															  (sviewidshowlist) AS relmgr_number_tab_t
15346
													 )
15347
											 FROM DUAL
15348
										  ))
15349
						 AND rtag_id = rtagid) ord
15350
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15351
	  ELSIF viewtype = 2
15352
	  THEN
15353
		 /*--- PERSONAL VIEW ---*/
15354
		 OPEN recordset FOR
15355
			SELECT   *
15356
				FROM (
15357
					  /* Base Views collapsed */
15358
					  SELECT DISTINCT vi.view_id, vi.view_name,
15359
									  TO_NUMBER (NULL) AS pkg_state,
15360
									  TO_NUMBER (NULL) AS deprecated_state,
15361
									  TO_NUMBER (NULL) AS pv_id,
15362
									  NULL AS pkg_name, NULL AS pkg_version,
15363
									  NULL AS dlocked, NULL AS pv_description
15364
								 FROM release_content rel,
15365
									  view_settings vs,
15366
									  views vi
15367
								WHERE rel.base_view_id = vi.view_id
15368
								  AND vs.view_id = rel.base_view_id
15369
								  AND vs.user_id = userid
15370
								  AND rtag_id = rtagid
15371
								  AND rel.base_view_id NOT IN (
15372
										 SELECT *
15373
										   FROM THE
15374
												   (SELECT CAST
15375
															  (in_list_number
15376
																  (sviewidshowlist
15377
																  ) AS relmgr_number_tab_t
15378
															  )
15379
													  FROM DUAL
15380
												   ))
15381
					  UNION
15382
					  /* Base Views expanded */
15383
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15384
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15385
							 pv.pkg_version, pv.dlocked, pv.pv_description
15386
						FROM release_content rel,
15387
							 PACKAGES pkg,
15388
							 package_versions pv,
15389
							 views vi,
15390
							 view_settings vs
15391
					   WHERE pv.pkg_id = pkg.pkg_id
15392
						 AND rel.pv_id = pv.pv_id
15393
						 AND rel.base_view_id = vi.view_id
15394
						 AND vs.view_id = vi.view_id
15395
						 AND vs.user_id = userid
15396
						 AND rel.base_view_id IN (
15397
								SELECT *
15398
								  FROM THE
15399
										  (SELECT CAST
15400
													 (in_list_number
15401
															  (sviewidshowlist) AS relmgr_number_tab_t
15402
													 )
15403
											 FROM DUAL
15404
										  ))
15405
						 AND rtag_id = rtagid
15406
					  UNION
15407
					  /* Private Views collapsed */
15408
					  SELECT vi.view_id, vi.view_name,
15409
							 TO_NUMBER (NULL) AS pkg_state,
15410
							 TO_NUMBER (NULL) AS deprecated_state,
15411
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15412
							 NULL AS pkg_version, NULL AS dlocked,
15413
							 NULL AS pv_description
15414
						FROM view_settings vs,
15415
							 view_def vd,
15416
							 views vi,
15417
							 release_content rel,
15418
							 package_versions pv
15419
					   WHERE vs.view_id = vi.view_id
15420
						 AND rel.pv_id = pv.pv_id
15421
						 AND vd.pkg_id = pv.pkg_id
15422
						 AND vd.view_id = vi.view_id
15423
						 AND vi.base_view = 'N'
15424
						 AND rel.rtag_id = rtagid
15425
						 AND vs.user_id = userid
15426
						 AND vi.view_id NOT IN (
15427
								SELECT *
15428
								  FROM THE
15429
										  (SELECT CAST
15430
													 (in_list_number
15431
															  (sviewidshowlist) AS relmgr_number_tab_t
15432
													 )
15433
											 FROM DUAL
15434
										  ))
15435
					  UNION
15436
					  /* Private Views expanded */
15437
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15438
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15439
							 pv.pkg_version, pv.dlocked, pv.pv_description
15440
						FROM users usr,
15441
							 view_settings vs,
15442
							 view_def vd,
15443
							 views vi,
15444
							 release_content rel,
15445
							 PACKAGES pkg,
15446
							 package_versions pv
15447
					   WHERE vs.user_id = usr.user_id
15448
						 AND vs.view_id = vi.view_id
15449
						 AND vd.view_id = vi.view_id
15450
						 AND pv.pkg_id = pkg.pkg_id
15451
						 AND rel.pv_id = pv.pv_id
15452
						 AND rel.rtag_id = rtagid
15453
						 AND vd.pkg_id = pkg.pkg_id
15454
						 AND vi.base_view = 'N'
15455
						 AND vi.view_id IN (
15456
								SELECT *
15457
								  FROM THE
15458
										  (SELECT CAST
15459
													 (in_list_number
15460
															  (sviewidshowlist) AS relmgr_number_tab_t
15461
													 )
15462
											 FROM DUAL
15463
										  ))
15464
						 AND usr.user_id = userid) ord
15465
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15466
	  END IF;
51 mhunt 15467
   END;
15468
 
15469
/*-------------------------------------------------------------------------------------------------------*/
15470
   PROCEDURE get_work_in_progress_items (
53 mhunt 15471
	  viewtype		   IN	   NUMBER,
15472
	  userid			 IN	   NUMBER,
15473
	  rtagid			 IN	   NUMBER,
15474
	  sviewidshowlist	IN	   VARCHAR2,
15475
	  ntruerecordcount   OUT	  NUMBER,
15476
	  recordset		  OUT	  typecur
51 mhunt 15477
   )
15478
   IS
15479
   BEGIN
53 mhunt 15480
	  -- Get true record count because views can give false count
15481
	  SELECT COUNT (wip.pv_id)
15482
		INTO ntruerecordcount
15483
		FROM work_in_progress wip
15484
	   WHERE wip.rtag_id = rtagid;
51 mhunt 15485
 
53 mhunt 15486
	  IF viewtype = 1
15487
	  THEN
15488
		 /*--- GUEST VIEW ---*/
15489
		 OPEN recordset FOR
15490
			SELECT   *
15491
				FROM (
15492
					  /* Base Views collapsed */
15493
					  SELECT DISTINCT vi.view_id, vi.view_name,
15494
									  TO_NUMBER (NULL) AS pkg_state,
15495
									  TO_NUMBER (NULL) AS deprecated_state,
15496
									  TO_NUMBER (NULL) AS pv_id,
15497
									  NULL AS pkg_name, NULL AS pkg_version,
15498
									  NULL AS dlocked, NULL AS pv_description
15499
								 FROM work_in_progress rel, views vi
15500
								WHERE rel.view_id = vi.view_id
15501
								  AND rtag_id = rtagid
15502
								  AND rel.view_id NOT IN (
15503
										 SELECT *
15504
										   FROM THE
15505
												   (SELECT CAST
15506
															  (in_list_number
15507
																  (sviewidshowlist
15508
																  ) AS relmgr_number_tab_t
15509
															  )
15510
													  FROM DUAL
15511
												   ))
15512
					  UNION
15513
					  /* Base Views expanded */
15514
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15515
 
15516
							 --rel.pkg_state,
15517
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15518
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15519
							 pv.pv_description
15520
						FROM work_in_progress rel,
15521
							 PACKAGES pkg,
15522
							 package_versions pv,
15523
							 views vi
15524
					   WHERE pv.pkg_id = pkg.pkg_id
15525
						 AND rel.pv_id = pv.pv_id
15526
						 AND rel.view_id = vi.view_id
15527
						 AND rel.view_id IN (
15528
								SELECT *
15529
								  FROM THE
15530
										  (SELECT CAST
15531
													 (in_list_number
15532
															  (sviewidshowlist) AS relmgr_number_tab_t
15533
													 )
15534
											 FROM DUAL
15535
										  ))
15536
						 AND rtag_id = rtagid) ord
15537
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15538
	  ELSIF viewtype = 2
15539
	  THEN
15540
		 /*--- PERSONAL VIEW ---*/
15541
		 OPEN recordset FOR
15542
			SELECT   *
15543
				FROM (
15544
					  /* Base Views collapsed */
15545
					  SELECT DISTINCT vi.view_id, vi.view_name,
15546
									  TO_NUMBER (NULL) AS pkg_state,
15547
									  TO_NUMBER (NULL) AS deprecated_state,
15548
									  TO_NUMBER (NULL) AS pv_id,
15549
									  NULL AS pkg_name, NULL AS pkg_version,
15550
									  NULL AS dlocked, NULL AS pv_description
15551
								 FROM work_in_progress rel,
15552
									  view_settings vs,
15553
									  views vi
15554
								WHERE rel.view_id = vi.view_id
15555
								  AND vs.view_id = rel.view_id
15556
								  AND vs.user_id = userid
15557
								  AND rtag_id = rtagid
15558
								  AND rel.view_id NOT IN (
15559
										 SELECT *
15560
										   FROM THE
15561
												   (SELECT CAST
15562
															  (in_list_number
15563
																  (sviewidshowlist
15564
																  ) AS relmgr_number_tab_t
15565
															  )
15566
													  FROM DUAL
15567
												   ))
15568
					  UNION
15569
					  /* Base Views expanded */
15570
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15571
 
15572
							 --rel.pkg_state,
15573
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15574
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15575
							 pv.pv_description
15576
						FROM work_in_progress rel,
15577
							 PACKAGES pkg,
15578
							 package_versions pv,
15579
							 views vi,
15580
							 view_settings vs
15581
					   WHERE pv.pkg_id = pkg.pkg_id
15582
						 AND rel.pv_id = pv.pv_id
15583
						 AND rel.view_id = vi.view_id
15584
						 AND vs.view_id = vi.view_id
15585
						 AND vs.user_id = userid
15586
						 AND rel.view_id IN (
15587
								SELECT *
15588
								  FROM THE
15589
										  (SELECT CAST
15590
													 (in_list_number
15591
															  (sviewidshowlist) AS relmgr_number_tab_t
15592
													 )
15593
											 FROM DUAL
15594
										  ))
15595
						 AND rtag_id = rtagid
15596
					  UNION
15597
					  /* Private Views collapsed */
15598
					  SELECT vi.view_id, vi.view_name,
15599
							 TO_NUMBER (NULL) AS pkg_state,
15600
							 TO_NUMBER (NULL) AS deprecated_state,
15601
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15602
							 NULL AS pkg_version, NULL AS dlocked,
15603
							 NULL AS pv_description
15604
						FROM view_settings vs,
15605
							 view_def vd,
15606
							 views vi,
15607
							 work_in_progress rel,
15608
							 package_versions pv
15609
					   WHERE vs.view_id = vi.view_id
15610
						 AND rel.pv_id = pv.pv_id
15611
						 AND vd.pkg_id = pv.pkg_id
15612
						 AND vd.view_id = vi.view_id
15613
						 AND vi.base_view = 'N'
15614
						 AND rel.rtag_id = rtagid
15615
						 AND vs.user_id = userid
15616
						 AND vi.view_id NOT IN (
15617
								SELECT *
15618
								  FROM THE
15619
										  (SELECT CAST
15620
													 (in_list_number
15621
															  (sviewidshowlist) AS relmgr_number_tab_t
15622
													 )
15623
											 FROM DUAL
15624
										  ))
15625
					  UNION
15626
					  /* Private Views expanded */
15627
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15628
 
15629
							 --rel.pkg_state,
15630
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15631
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15632
							 pv.pv_description
15633
						FROM users usr,
15634
							 view_settings vs,
15635
							 view_def vd,
15636
							 views vi,
15637
							 work_in_progress rel,
15638
							 PACKAGES pkg,
15639
							 package_versions pv
15640
					   WHERE vs.user_id = usr.user_id
15641
						 AND vs.view_id = vi.view_id
15642
						 AND vd.view_id = vi.view_id
15643
						 AND pv.pkg_id = pkg.pkg_id
15644
						 AND rel.pv_id = pv.pv_id
15645
						 AND rel.rtag_id = rtagid
15646
						 AND vd.pkg_id = pkg.pkg_id
15647
						 AND vi.base_view = 'N'
15648
						 AND vi.view_id IN (
15649
								SELECT *
15650
								  FROM THE
15651
										  (SELECT CAST
15652
													 (in_list_number
15653
															  (sviewidshowlist) AS relmgr_number_tab_t
15654
													 )
15655
											 FROM DUAL
15656
										  ))
15657
						 AND usr.user_id = userid) ord
15658
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15659
	  END IF;
51 mhunt 15660
   END;
15661
 
15662
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15663
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15664
 
51 mhunt 15665
   PROCEDURE get_pending_items (
53 mhunt 15666
	  viewtype		   IN	   NUMBER,
15667
	  userid			 IN	   NUMBER,
15668
	  rtagid			 IN	   NUMBER,
15669
	  sviewidshowlist	IN	   VARCHAR2,
15670
	  ntruerecordcount   OUT	  NUMBER,
15671
	  recordset		  OUT	  typecur
51 mhunt 15672
   )
15673
   IS
15674
   BEGIN
53 mhunt 15675
	  -- Get true record count because views can give false count
15676
	  SELECT COUNT (pl.pv_id)
15677
		INTO ntruerecordcount
15678
		FROM planned pl
15679
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15680
 
53 mhunt 15681
	  IF viewtype = 1
15682
	  THEN
15683
		 /*--- GUEST VIEW ---*/
15684
		 OPEN recordset FOR
15685
			SELECT   *
15686
				FROM (
15687
					  /* Base Views collapsed */
15688
					  SELECT DISTINCT vi.view_id, vi.view_name,
15689
									  TO_NUMBER (NULL) AS pkg_state,
15690
									  TO_NUMBER (NULL) AS deprecated_state,
15691
									  TO_NUMBER (NULL) AS pv_id,
15692
									  NULL AS pkg_name, NULL AS pkg_version,
15693
									  NULL AS dlocked, NULL AS pv_description,
15694
									  rel.operation
15695
								 FROM planned rel, views vi
15696
								WHERE rel.view_id = vi.view_id
15697
								  AND rtag_id = rtagid
15698
								  AND rel.view_id NOT IN (
15699
										 SELECT *
15700
										   FROM THE
15701
												   (SELECT CAST
15702
															  (in_list_number
15703
																  (sviewidshowlist
15704
																  ) AS relmgr_number_tab_t
15705
															  )
15706
													  FROM DUAL
15707
												   ))
15708
					  UNION
15709
					  /* Base Views expanded */
15710
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15711
 
15712
							 --rel.pkg_state,
15713
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15714
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15715
							 pv.pv_description,
15716
							 rel.operation
15717
						FROM planned rel,
15718
							 PACKAGES pkg,
15719
							 package_versions pv,
15720
							 views vi
15721
					   WHERE pv.pkg_id = pkg.pkg_id
15722
						 AND rel.pv_id = pv.pv_id
15723
						 AND rel.view_id = vi.view_id
15724
						 AND rel.view_id IN (
15725
								SELECT *
15726
								  FROM THE
15727
										  (SELECT CAST
15728
													 (in_list_number
15729
															  (sviewidshowlist) AS relmgr_number_tab_t
15730
													 )
15731
											 FROM DUAL
15732
										  ))
15733
						 AND rtag_id = rtagid) ord
15734
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15735
	  ELSIF viewtype = 2
15736
	  THEN
15737
		 /*--- PERSONAL VIEW ---*/
15738
		 OPEN recordset FOR
15739
			SELECT   *
15740
				FROM (
15741
					  /* Base Views collapsed */
15742
					  SELECT DISTINCT vi.view_id, vi.view_name,
15743
									  TO_NUMBER (NULL) AS pkg_state,
15744
									  TO_NUMBER (NULL) AS deprecated_state,
15745
									  TO_NUMBER (NULL) AS pv_id,
15746
									  NULL AS pkg_name, NULL AS pkg_version,
15747
									  NULL AS dlocked, NULL AS pv_description,
15748
									  rel.operation
15749
								 FROM planned rel, view_settings vs, views vi
15750
								WHERE rel.view_id = vi.view_id
15751
								  AND vs.view_id = rel.view_id
15752
								  AND vs.user_id = userid
15753
								  AND rtag_id = rtagid
15754
								  AND rel.view_id NOT IN (
15755
										 SELECT *
15756
										   FROM THE
15757
												   (SELECT CAST
15758
															  (in_list_number
15759
																  (sviewidshowlist
15760
																  ) AS relmgr_number_tab_t
15761
															  )
15762
													  FROM DUAL
15763
												   ))
15764
					  UNION
15765
					  /* Base Views expanded */
15766
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15767
 
15768
							 --rel.pkg_state,
15769
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15770
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15771
							 pv.pv_description,
15772
							 rel.operation
15773
						FROM planned rel,
15774
							 PACKAGES pkg,
15775
							 package_versions pv,
15776
							 views vi,
15777
							 view_settings vs
15778
					   WHERE pv.pkg_id = pkg.pkg_id
15779
						 AND rel.pv_id = pv.pv_id
15780
						 AND rel.view_id = vi.view_id
15781
						 AND vs.view_id = vi.view_id
15782
						 AND vs.user_id = userid
15783
						 AND rel.view_id IN (
15784
								SELECT *
15785
								  FROM THE
15786
										  (SELECT CAST
15787
													 (in_list_number
15788
															  (sviewidshowlist) AS relmgr_number_tab_t
15789
													 )
15790
											 FROM DUAL
15791
										  ))
15792
						 AND rtag_id = rtagid
15793
					  UNION
15794
					  /* Private Views collapsed */
15795
					  SELECT vi.view_id, vi.view_name,
15796
							 TO_NUMBER (NULL) AS pkg_state,
15797
							 TO_NUMBER (NULL) AS deprecated_state,
15798
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15799
							 NULL AS pkg_version, NULL AS dlocked,
15800
							 NULL AS pv_description,
15801
							 rel.operation
15802
						FROM view_settings vs,
15803
							 view_def vd,
15804
							 views vi,
15805
							 planned rel,
15806
							 package_versions pv
15807
					   WHERE vs.view_id = vi.view_id
15808
						 AND rel.pv_id = pv.pv_id
15809
						 AND vd.pkg_id = pv.pkg_id
15810
						 AND vd.view_id = vi.view_id
15811
						 AND vi.base_view = 'N'
15812
						 AND rel.rtag_id = rtagid
15813
						 AND vs.user_id = userid
15814
						 AND vi.view_id NOT IN (
15815
								SELECT *
15816
								  FROM THE
15817
										  (SELECT CAST
15818
													 (in_list_number
15819
															  (sviewidshowlist) AS relmgr_number_tab_t
15820
													 )
15821
											 FROM DUAL
15822
										  ))
15823
					  UNION
15824
					  /* Private Views expanded */
15825
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15826
 
15827
							 --rel.pkg_state,
15828
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15829
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15830
							 pv.pv_description,
15831
							 rel.operation
15832
						FROM users usr,
15833
							 view_settings vs,
15834
							 view_def vd,
15835
							 views vi,
15836
							 planned rel,
15837
							 PACKAGES pkg,
15838
							 package_versions pv
15839
					   WHERE vs.user_id = usr.user_id
15840
						 AND vs.view_id = vi.view_id
15841
						 AND vd.view_id = vi.view_id
15842
						 AND pv.pkg_id = pkg.pkg_id
15843
						 AND rel.pv_id = pv.pv_id
15844
						 AND rel.rtag_id = rtagid
15845
						 AND vd.pkg_id = pkg.pkg_id
15846
						 AND vi.base_view = 'N'
15847
						 AND vi.view_id IN (
15848
								SELECT *
15849
								  FROM THE
15850
										  (SELECT CAST
15851
													 (in_list_number
15852
															  (sviewidshowlist) AS relmgr_number_tab_t
15853
													 )
15854
											 FROM DUAL
15855
										  ))
15856
						 AND usr.user_id = userid) ord
15857
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15858
	  END IF;
51 mhunt 15859
   END;
15860
 
15861
/*-------------------------------------------------------------------------------------------------------*/
15862
   PROCEDURE get_view_content (
53 mhunt 15863
	  rtagid	  IN	   NUMBER,
15864
	  viewid	  IN	   NUMBER,
15865
	  recordset   OUT	  typecur
51 mhunt 15866
   )
15867
   IS
53 mhunt 15868
	  isbaseview   CHAR (1);
51 mhunt 15869
   BEGIN
53 mhunt 15870
	  -- Check if the view is BASE VIEW
15871
	  SELECT vi.base_view
15872
		INTO isbaseview
15873
		FROM views vi
15874
	   WHERE vi.view_id = viewid;
51 mhunt 15875
 
53 mhunt 15876
	  IF (isbaseview = 'Y')
15877
	  THEN
15878
		 -- Get Base view content
15879
		 OPEN recordset FOR
15880
			SELECT   DECODE (rel.pkg_state,
15881
							 NULL, 0,
15882
							 rel.pkg_state
15883
							) AS pkg_state,
15884
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15885
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15886
					 pv.build_type,
15887
					 rel.operation
15888
				FROM environment_view rel, PACKAGES pkg, package_versions pv
15889
			   WHERE pv.pkg_id = pkg.pkg_id
15890
				 AND rel.pv_id = pv.pv_id
15891
				 AND rel.view_id = viewid
15892
				 AND rel.rtag_id = rtagid
15893
			ORDER BY UPPER (pkg.pkg_name);
15894
	  ELSE
15895
		 -- Get non base view content
15896
		 OPEN recordset FOR
15897
			SELECT   DECODE (rel.pkg_state,
15898
							 NULL, 0,
15899
							 rel.pkg_state
15900
							) AS pkg_state,
15901
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15902
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15903
					 pv.build_type,
15904
					 rel.operation
15905
				FROM environment_view rel,
15906
					 PACKAGES pkg,
15907
					 package_versions pv,
15908
					 view_def vd
15909
			   WHERE pv.pkg_id = pkg.pkg_id
15910
				 AND rel.pv_id = pv.pv_id
15911
				 AND rel.rtag_id = rtagid
15912
				 AND vd.view_id = viewid
15913
				 AND vd.pkg_id = pv.pkg_id
15914
			ORDER BY UPPER (pkg.pkg_name);
15915
	  END IF;
51 mhunt 15916
   END;
15917
 
15918
/*-------------------------------------------------------------------------------------------------------*/
15919
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 15920
	  RETURN NUMBER
51 mhunt 15921
   IS
53 mhunt 15922
	  envtab			 NUMBER;
15923
	  returnvalue		NUMBER;
15924
	  return_not_found   NUMBER := -1;
51 mhunt 15925
   BEGIN
53 mhunt 15926
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15927
 
53 mhunt 15928
	  IF envtab = 0
15929
	  THEN
15930
		 -- WORK IN PROGRESS --
15931
		 returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
15932
	  ELSIF envtab = 1
15933
	  THEN
15934
		 -- PENDING --
15935
		 returnvalue := pk_planned.get_package_view (pvid, rtagid);
15936
	  ELSIF envtab = 2
15937
	  THEN
15938
		 -- RELEASED --
15939
		 returnvalue := pk_release.get_package_view (pvid, rtagid);
15940
	  ELSE
15941
		 -- This may be a Patch not located anywhere but unlocked
15942
		 returnvalue := return_not_found;
15943
	  END IF;
51 mhunt 15944
 
53 mhunt 15945
	  RETURN returnvalue;
51 mhunt 15946
   END;
15947
 
15948
/*-------------------------------------------------------------------------------------------------------*/
15949
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
15950
   IS
53 mhunt 15951
	  viewid		  NUMBER;
15952
	  envtab		  NUMBER;
15953
	  ispatch		 CHAR (1) := NULL;
15954
	  buildtype	   CHAR (1) := NULL;
15955
	  lastversionid   NUMBER;
51 mhunt 15956
   BEGIN
53 mhunt 15957
	  -- Check if package is patch
15958
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
15959
		INTO ispatch, buildtype, lastversionid
15960
		FROM package_versions pv
15961
	   WHERE pv.pv_id = pvid;
51 mhunt 15962
 
53 mhunt 15963
	  -- Get ViewId
15964
	  viewid := get_package_view (pvid, rtagid);
15965
	  -- Remove from current area
15966
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 15967
 
53 mhunt 15968
	  -- Make sure that package was in work-in-progress or pending before makeing it release
15969
	  -- Exclude patches, ripple builds
15970
	  IF (envtab < 0)
15971
	  THEN
15972
		 -- Not found in work-in-progress or pending
15973
		 IF (ispatch IS NULL) AND (buildtype = 'M')
15974
		 THEN
15975
			raise_application_error (-20000,
15976
									 'This package cannot be released here.'
15977
									);
15978
		 END IF;
15979
	  END IF;
51 mhunt 15980
 
53 mhunt 15981
	  -- Log
15982
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 15983
 
53 mhunt 15984
	  IF envtab = 0
15985
	  THEN
15986
		 -- WORK IN PROGRESS --
15987
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
15988
	  ELSIF envtab = 1
15989
	  THEN
15990
		 -- PENDING --
15991
		 pk_planned.remove_package (pvid, rtagid, userid);
15992
	  END IF;
51 mhunt 15993
 
53 mhunt 15994
	  -- Change package state
15995
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 15996
 
53 mhunt 15997
	  -- Make sure it is valid BASE VIEW
15998
	  IF viewid < 1
15999
	  THEN
16000
		 viewid := 7;							-- This is default base view
16001
	  END IF;
51 mhunt 16002
 
53 mhunt 16003
	  IF (ispatch IS NULL)
16004
	  THEN
16005
		 -- Add package to new area
16006
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16007
	  END IF;
51 mhunt 16008
 
53 mhunt 16009
	  -- Now do post Release Actions
16010
	  pk_release.run_post_actions (pvid, rtagid);
51 mhunt 16011
 
53 mhunt 16012
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16013
	  DELETE FROM do_not_ripple
16014
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16015
 
53 mhunt 16016
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16017
	  DELETE FROM advisory_ripple
16018
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16019
 
53 mhunt 16020
	  -- Log
16021
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16022
   END;
16023
 
16024
/*-------------------------------------------------------------------------------------------------------*/
16025
   PROCEDURE auto_make_release (
53 mhunt 16026
	  pvid			IN   NUMBER,
16027
	  rtagid		  IN   NUMBER,
16028
	  userid		  IN   NUMBER,
16029
	  vext			IN   package_versions.v_ext%TYPE,
16030
	  ssv_ext		 IN   package_versions.v_ext%TYPE,
16031
	  clonefrompvid   IN   NUMBER
51 mhunt 16032
   )
16033
   IS
53 mhunt 16034
	  viewid		  NUMBER;
16035
	  envtab		  NUMBER;
16036
	  ispatch		 CHAR (1) := NULL;
16037
	  buildtype	   CHAR (1) := NULL;
16038
	  lastversionid   NUMBER;
51 mhunt 16039
   BEGIN
53 mhunt 16040
	  -- Check if package is patch
16041
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16042
		INTO ispatch, buildtype, lastversionid
16043
		FROM package_versions pv
16044
	   WHERE pv.pv_id = pvid;
51 mhunt 16045
 
53 mhunt 16046
	  IF vext <> ssv_ext
16047
	  THEN
16048
		 -- Get ViewId
16049
		 viewid := get_package_view (clonefrompvid, rtagid);
16050
		 -- Remove from current area
16051
		 envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
16052
	  ELSE
16053
		 -- Get ViewId
16054
		 viewid := get_package_view (pvid, rtagid);
16055
		 -- Remove from current area
16056
		 envtab := pk_environment.get_package_area (pvid, rtagid);
16057
	  END IF;
51 mhunt 16058
 
53 mhunt 16059
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16060
	  -- Exclude patches, ripple builds
16061
	  IF (envtab < 0)
16062
	  THEN
16063
		 -- Not found in work-in-progress or pending
16064
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16065
		 THEN
16066
			raise_application_error (-20000,
16067
									 'This package cannot be released here.'
16068
									);
16069
		 END IF;
16070
	  END IF;
51 mhunt 16071
 
53 mhunt 16072
	  -- Log
16073
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16074
 
53 mhunt 16075
	  IF vext <> ssv_ext
16076
	  THEN
16077
		 IF envtab = 0
16078
		 THEN
16079
			-- WORK IN PROGRESS --
16080
			pk_work_in_progress.remove_package (clonefrompvid, rtagid,
16081
												userid);
16082
		 ELSIF envtab = 1
16083
		 THEN
16084
			-- PENDING --
16085
			pk_planned.remove_package (clonefrompvid, rtagid, userid);
16086
		 ELSIF envtab = 2
16087
		 THEN
16088
			-- RELEASED --
16089
			pk_release.remove_package (clonefrompvid, rtagid, userid);
16090
		 END IF;
16091
	  ELSE
16092
		 IF envtab = 0
16093
		 THEN
16094
			-- WORK IN PROGRESS --
16095
			pk_work_in_progress.remove_package (pvid, rtagid, userid);
16096
		 ELSIF envtab = 1
16097
		 THEN
16098
			-- PENDING --
16099
			pk_planned.remove_package (pvid, rtagid, userid);
16100
		 END IF;
16101
	  END IF;
51 mhunt 16102
 
53 mhunt 16103
	  -- Change package state
16104
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16105
 
53 mhunt 16106
	  -- Make sure it is valid BASE VIEW
16107
	  IF viewid < 1
16108
	  THEN
16109
		 viewid := 7;							-- This is default base view
16110
	  END IF;
51 mhunt 16111
 
53 mhunt 16112
	  IF (ispatch IS NULL)
16113
	  THEN
16114
		 -- Add package to new area
16115
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16116
	  END IF;
51 mhunt 16117
 
53 mhunt 16118
	  -- Now do post Release Actions
16119
	  pk_release.run_post_actions (pvid, rtagid);
16120
	  -- Now update the Dash_Board Table (DEPRECATED)
16121
	  pk_rmapi.update_dash_board (rtagid);
51 mhunt 16122
 
53 mhunt 16123
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16124
	  DELETE FROM do_not_ripple
16125
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16126
 
53 mhunt 16127
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16128
	  DELETE FROM advisory_ripple
16129
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16130
 
53 mhunt 16131
	  -- Log
16132
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16133
   END;
16134
 
16135
/*-------------------------------------------------------------------------------------------------------*/
16136
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16137
   IS
53 mhunt 16138
	  viewid   NUMBER;
16139
	  envtab   NUMBER;
51 mhunt 16140
   BEGIN
53 mhunt 16141
	  -- Get ViewId
16142
	  --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
16143
	  viewid := get_package_view (pvid, rtagid);
16144
	  -- Remove from current area
16145
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16146
	  -- Log
16147
	  log_action (pvid,
16148
				  'action',
16149
				  userid,
16150
				  'Start of Make Package UnRelease...'
16151
				 );
51 mhunt 16152
 
53 mhunt 16153
	  IF envtab = 2
16154
	  THEN
16155
		 -- RELEASE AREA --
16156
		 pk_release.remove_package (pvid, rtagid, userid);
16157
	  ELSIF envtab = 1
16158
	  THEN
16159
		 -- PENDING --
16160
		 pk_planned.remove_package (pvid, rtagid, userid);
16161
	  END IF;
51 mhunt 16162
 
53 mhunt 16163
	  -- Change package state
16164
	  pk_package.change_state (pvid, 'N', userid);
51 mhunt 16165
 
53 mhunt 16166
	  -- Make sure it is valid BASE VIEW
16167
	  IF viewid < 1
16168
	  THEN
16169
		 viewid := 7;							-- This is default base view
16170
	  END IF;
51 mhunt 16171
 
53 mhunt 16172
	  -- Add package to new area
16173
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16174
	  -- Now do post Release Actions
16175
	  pk_release.run_post_actions (pvid, rtagid);
16176
	  -- Log
16177
	  log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
51 mhunt 16178
   END;
16179
 
16180
/*-------------------------------------------------------------------------------------------------------*/
16181
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16182
   IS
53 mhunt 16183
	  viewid	  NUMBER;
16184
	  ispatch	 CHAR (1) := NULL;
16185
	  buildtype   CHAR (1) := NULL;
51 mhunt 16186
   BEGIN
53 mhunt 16187
	  -- Check if package is patch
16188
	  SELECT pv.is_patch, pv.build_type
16189
		INTO ispatch, buildtype
16190
		FROM package_versions pv
16191
	   WHERE pv.pv_id = pvid;
51 mhunt 16192
 
53 mhunt 16193
	  -- Get ViewId
16194
	  viewid := get_package_view (pvid, rtagid);
16195
	  --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16196
 
53 mhunt 16197
	  -- Log
16198
	  log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
51 mhunt 16199
 
53 mhunt 16200
	  IF (ispatch IS NULL)
16201
	  THEN
16202
		 -- Remove from current area
16203
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16204
		 -- Change package state
16205
		 pk_package.change_state (pvid, 'P', userid);
16206
		 -- Add package to new area
16207
		 pk_planned.add_package (pvid, viewid, rtagid, userid);
16208
	  END IF;
51 mhunt 16209
 
53 mhunt 16210
	  -- Log
16211
	  log_action (pvid, 'action', userid, 'End of Make Package Pending...');
51 mhunt 16212
   END;
16213
 
16214
/*-------------------------------------------------------------------------------------------------------*/
16215
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16216
   IS
16217
   BEGIN
53 mhunt 16218
	  -- Log
16219
	  log_action (pvid,
16220
				  'action',
16221
				  userid,
16222
				  'Start of Package Pending Approval...'
16223
				 );
16224
	  -- Change package state
16225
	  pk_package.change_state (pvid, 'A', userid);
16226
	  -- Log
16227
	  log_action (pvid, 'action', userid,
16228
				  'End of Package Pending Approval...');
51 mhunt 16229
   END;
16230
 
16231
/*-------------------------------------------------------------------------------------------------------*/
16232
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16233
   IS
53 mhunt 16234
	  viewid   NUMBER;
16235
	  operation CHAR;
51 mhunt 16236
   BEGIN
53 mhunt 16237
	  -- Get ViewId
16238
	  viewid := get_package_view (pvid, rtagid);
16239
	  -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16240
 
53 mhunt 16241
	  -- DEVI-45275
16242
	  -- If the package version is an official version that is to be rejected from a merge operation
16243
	  -- then find out in order to prevent it being added back to work-in-progress table . This will
16244
	  -- be denoted by the operation field in the planned table being A or S
16245
	  operation := ' ';
16246
	  SELECT
16247
	  (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
16248
	  FROM planned pl
16249
	  WHERE pl.PV_ID = pvid
16250
	  AND pl.RTAG_ID = rtagid;
16251
 
16252
	  -- Log
16253
	  log_action (pvid, 'action', userid, 'Start of Reject Package...');
16254
	  -- Remove from current area
16255
	  pk_planned.remove_package (pvid, rtagid, userid);
16256
 
16257
	  -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
16258
	  IF operation <> 'A' AND operation <> 'S'
16259
	  THEN
16260
	  -- Change package state
16261
	  pk_package.change_state (pvid, 'R', userid);
16262
	  -- Add package to new area
16263
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16264
	  ELSE
16265
		log_action (pvid, 'action', userid, 'Rejected Package Merge');
16266
	  END IF;
16267
	  -- Log
16268
	  log_action (pvid, 'action', userid, 'End of Reject Package...');
51 mhunt 16269
   END;
16270
 
16271
/*-------------------------------------------------------------------------------------------------------*/
16272
   PROCEDURE change_package_view (
53 mhunt 16273
	  pvid		IN   NUMBER,
16274
	  rtagid	  IN   NUMBER,
16275
	  newviewid   IN   NUMBER
51 mhunt 16276
   )
16277
   IS
53 mhunt 16278
	  envtab   NUMBER;
51 mhunt 16279
   BEGIN
53 mhunt 16280
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16281
 
53 mhunt 16282
	  IF envtab = 0
16283
	  THEN
16284
		 -- WORK IN PROGRESS --
16285
		 pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
16286
	  ELSIF envtab = 1
16287
	  THEN
16288
		 -- PENDING --
16289
		 pk_planned.change_package_view (pvid, rtagid, newviewid);
16290
	  ELSIF envtab = 2
16291
	  THEN
16292
		 -- RELEASED --
16293
		 pk_release.change_package_view (pvid, rtagid, newviewid);
16294
	  END IF;
51 mhunt 16295
   END;
16296
 
16297
/*-------------------------------------------------------------------------------------------------------*/
16298
   PROCEDURE find_package (
53 mhunt 16299
	  skeyword	  IN	   VARCHAR2,
16300
	  nrtagid	   IN	   NUMBER,
16301
	  nsearcharea   IN	   NUMBER,
16302
	  recordset	 OUT	  typecur
51 mhunt 16303
   )
16304
   IS
16305
   BEGIN
53 mhunt 16306
	  IF nsearcharea = 0
16307
	  THEN
16308
		 /* Search Work In Progress */
16309
		 OPEN recordset FOR
16310
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16311
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16312
					 pv.modified_stamp, usr.full_name, usr.user_email
16313
				FROM views vi,
16314
					 work_in_progress rc,
16315
					 PACKAGES pkg,
16316
					 package_versions pv,
16317
					 users usr
16318
			   WHERE rc.view_id = vi.view_id
16319
				 AND rc.pv_id = pv.pv_id
16320
				 AND pkg.pkg_id = pv.pkg_id
16321
				 AND pv.modifier_id = usr.user_id
16322
				 AND rc.rtag_id = nrtagid
16323
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16324
			ORDER BY UPPER (pkg.pkg_name);
16325
	  ELSIF nsearcharea = 1
16326
	  THEN
16327
		 /* Search Pending */
16328
		 OPEN recordset FOR
16329
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16330
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16331
					 pv.modified_stamp, usr.full_name, usr.user_email
16332
				FROM views vi,
16333
					 planned rc,
16334
					 PACKAGES pkg,
16335
					 package_versions pv,
16336
					 users usr
16337
			   WHERE rc.view_id = vi.view_id
16338
				 AND rc.pv_id = pv.pv_id
16339
				 AND pkg.pkg_id = pv.pkg_id
16340
				 AND pv.modifier_id = usr.user_id
16341
				 AND rc.rtag_id = nrtagid
16342
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16343
			ORDER BY UPPER (pkg.pkg_name);
16344
	  ELSIF nsearcharea = 2
16345
	  THEN
16346
		 /* Search Released */
16347
		 OPEN recordset FOR
16348
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16349
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16350
					 pv.modified_stamp, usr.full_name, usr.user_email
16351
				FROM views vi,
16352
					 release_content rc,
16353
					 PACKAGES pkg,
16354
					 package_versions pv,
16355
					 users usr
16356
			   WHERE rc.base_view_id = vi.view_id
16357
				 AND rc.pv_id = pv.pv_id
16358
				 AND pkg.pkg_id = pv.pkg_id
16359
				 AND pv.modifier_id = usr.user_id
16360
				 AND rc.rtag_id = nrtagid
16361
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16362
			ORDER BY UPPER (pkg.pkg_name);
16363
	  ELSIF nsearcharea = 3
16364
	  THEN
16365
		 /* Search ALL */
16366
		 OPEN recordset FOR
16367
			SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
16368
					 pv.pv_id, pv.pkg_version, pv.comments,
16369
					 pv.modified_stamp, usr.full_name, usr.user_email
16370
				FROM views vi,
16371
					 environment_view rc,
16372
					 PACKAGES pkg,
16373
					 package_versions pv,
16374
					 users usr
16375
			   WHERE rc.view_id = vi.view_id
16376
				 AND rc.pv_id = pv.pv_id
16377
				 AND pkg.pkg_id = pv.pkg_id
16378
				 AND pv.modifier_id = usr.user_id
16379
				 AND rc.rtag_id = nrtagid
16380
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16381
			ORDER BY UPPER (pkg.pkg_name);
16382
	  END IF;
51 mhunt 16383
   END;
16384
 
16385
/*-------------------------------------------------------------------------------------------------------*/
16386
   PROCEDURE find_file (
53 mhunt 16387
	  skeyword	  IN	   VARCHAR2,
16388
	  nrtagid	   IN	   NUMBER,
16389
	  nsearcharea   IN	   NUMBER,
16390
	  npagesize	 IN	   NUMBER,
16391
	  recordset	 OUT	  typecur
51 mhunt 16392
   )
16393
   IS
16394
   BEGIN
53 mhunt 16395
	  IF nsearcharea = 0
16396
	  THEN
16397
		 /* Search Work In Progress */
16398
		 OPEN recordset FOR
16399
			SELECT   qry.*
16400
				FROM (
16401
					  /* File search on Packages */
16402
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16403
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16404
						FROM work_in_progress rc,
16405
							 PACKAGES pkg,
16406
							 package_versions pv,
16407
							 release_components art
16408
					   WHERE rc.pv_id = art.pv_id
16409
						 AND pv.pkg_id = pkg.pkg_id
16410
						 AND rc.pv_id = pv.pv_id
16411
						 AND rc.rtag_id = nrtagid
16412
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16413
					  UNION ALL
16414
					  /* File search on Products */
16415
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16416
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16417
						FROM work_in_progress rc,
16418
							 PACKAGES pkg,
16419
							 package_versions pv,
16420
							 product_components art
16421
					   WHERE rc.pv_id = art.pv_id
16422
						 AND pv.pkg_id = pkg.pkg_id
16423
						 AND rc.pv_id = pv.pv_id
16424
						 AND rc.rtag_id = nrtagid
16425
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16426
			   WHERE ROWNUM <= npagesize
16427
			ORDER BY UPPER (qry.pkg_name);
16428
	  ELSIF nsearcharea = 1
16429
	  THEN
16430
		 /* Search Pending */
16431
		 OPEN recordset FOR
16432
			SELECT   qry.*
16433
				FROM (
16434
					  /* File search on Packages */
16435
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16436
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16437
						FROM planned rc,
16438
							 PACKAGES pkg,
16439
							 package_versions pv,
16440
							 release_components art
16441
					   WHERE rc.pv_id = art.pv_id
16442
						 AND pv.pkg_id = pkg.pkg_id
16443
						 AND rc.pv_id = pv.pv_id
16444
						 AND rc.rtag_id = nrtagid
16445
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16446
					  UNION ALL
16447
					  /* File search on Products */
16448
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16449
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16450
						FROM planned rc,
16451
							 PACKAGES pkg,
16452
							 package_versions pv,
16453
							 product_components art
16454
					   WHERE rc.pv_id = art.pv_id
16455
						 AND pv.pkg_id = pkg.pkg_id
16456
						 AND rc.pv_id = pv.pv_id
16457
						 AND rc.rtag_id = nrtagid
16458
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16459
			   WHERE ROWNUM <= npagesize
16460
			ORDER BY UPPER (qry.pkg_name);
16461
	  ELSIF nsearcharea = 2
16462
	  THEN
16463
		 /* Search Released */
16464
		 OPEN recordset FOR
16465
			SELECT   qry.*
16466
				FROM (
16467
					  /* File search on Packages */
16468
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16469
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16470
							 NULL AS patch_id
16471
						FROM release_content rc,
16472
							 PACKAGES pkg,
16473
							 package_versions pv,
16474
							 release_components art
16475
					   WHERE rc.pv_id = art.pv_id
16476
						 AND pv.pkg_id = pkg.pkg_id
16477
						 AND rc.pv_id = pv.pv_id
16478
						 AND rc.rtag_id = nrtagid
16479
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16480
					  UNION ALL
16481
					  /* File search on Products */
16482
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16483
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16484
							 NULL AS patch_id
16485
						FROM release_content rc,
16486
							 PACKAGES pkg,
16487
							 package_versions pv,
16488
							 product_components art
16489
					   WHERE rc.pv_id = art.pv_id
16490
						 AND pv.pkg_id = pkg.pkg_id
16491
						 AND rc.pv_id = pv.pv_id
16492
						 AND rc.rtag_id = nrtagid
16493
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16494
					  UNION ALL
16495
					  /* File search on Patches */
16496
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16497
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16498
							 DECODE (art.file_path,
16499
									 NULL, pp.patch_id,
16500
									 NULL
16501
									) AS patch_id
16502
						FROM release_content rc,
16503
							 PACKAGES pkg,
16504
							 package_versions pv,
16505
							 release_components art,
16506
							 package_patches pp
16507
					   WHERE pv.pv_id = pp.pv_id
16508
						 AND pv.pkg_id = pkg.pkg_id
16509
						 AND rc.rtag_id = nrtagid
16510
						 AND art.pv_id = pp.patch_id
16511
						 AND rc.pv_id = pp.pv_id
16512
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16513
			   WHERE ROWNUM <= npagesize
16514
			ORDER BY UPPER (qry.pkg_name);
16515
	  ELSIF nsearcharea = 3
16516
	  THEN
16517
		 /* Search ALL */
16518
		 OPEN recordset FOR
16519
			SELECT   qry.*
16520
				FROM (
16521
					  /* File search on Packages */
16522
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16523
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16524
							 NULL AS patch_id
16525
						FROM environment_view rc,
16526
							 PACKAGES pkg,
16527
							 package_versions pv,
16528
							 release_components art
16529
					   WHERE rc.pv_id = art.pv_id
16530
						 AND pv.pkg_id = pkg.pkg_id
16531
						 AND rc.pv_id = pv.pv_id
16532
						 AND rc.rtag_id = nrtagid
16533
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16534
					  UNION ALL
16535
					  /* File search on Products */
16536
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16537
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16538
							 NULL AS patch_id
16539
						FROM environment_view rc,
16540
							 PACKAGES pkg,
16541
							 package_versions pv,
16542
							 product_components art
16543
					   WHERE rc.pv_id = art.pv_id
16544
						 AND pv.pkg_id = pkg.pkg_id
16545
						 AND rc.pv_id = pv.pv_id
16546
						 AND rc.rtag_id = nrtagid
16547
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16548
					  UNION ALL
16549
					  /* File search on Patches */
16550
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16551
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16552
							 DECODE (art.file_path,
16553
									 NULL, pp.patch_id,
16554
									 NULL
16555
									) AS patch_id
16556
						FROM release_content rc,
16557
							 PACKAGES pkg,
16558
							 package_versions pv,
16559
							 release_components art,
16560
							 package_patches pp
16561
					   WHERE pv.pv_id = pp.pv_id
16562
						 AND pv.pkg_id = pkg.pkg_id
16563
						 AND rc.rtag_id = nrtagid
16564
						 AND art.pv_id = pp.patch_id
16565
						 AND rc.pv_id = pp.pv_id
16566
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16567
			   WHERE ROWNUM <= npagesize
16568
			ORDER BY UPPER (qry.pkg_name);
16569
	  END IF;
51 mhunt 16570
   END;
16571
 
16572
/*-------------------------------------------------------------------------------------------------------*/
16573
   PROCEDURE get_prodrelease_items (
53 mhunt 16574
	  rtagid			 IN	   NUMBER,
16575
	  ntruerecordcount   OUT	  NUMBER,
16576
	  recordset		  OUT	  typecur
51 mhunt 16577
   )
16578
   IS
16579
   BEGIN
53 mhunt 16580
	  -- Get true record count n the number of integration products
16581
	  SELECT COUNT (rc.pv_id)
16582
		INTO ntruerecordcount
16583
		FROM release_content rc
16584
	   WHERE rc.rtag_id = rtagid;
51 mhunt 16585
 
53 mhunt 16586
	  OPEN recordset FOR
16587
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,	--rel.pkg_state,
16588
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16589
				  pv.pkg_version, pv.dlocked, pv.pv_description
16590
			 FROM release_content rel,
16591
				  PACKAGES pkg,
16592
				  package_versions pv,
16593
				  views vi
16594
			WHERE pv.pkg_id = pkg.pkg_id
16595
			  AND rel.pv_id = pv.pv_id
16596
			  AND rel.base_view_id = vi.view_id
16597
			  AND pv.is_deployable = 'Y'
16598
			  AND rtag_id = rtagid
16599
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16600
											  FROM deployment_manager.os_contents)
16601
			  AND rel.product_state IS NULL
16602
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16603
   END;
16604
 
16605
/*-------------------------------------------------------------------------------------------------------*/
16606
   PROCEDURE get_integration_items (
53 mhunt 16607
	  rtagid			 IN	   NUMBER,
16608
	  ntruerecordcount   OUT	  NUMBER,
16609
	  recordset		  OUT	  typecur
51 mhunt 16610
   )
16611
   IS
16612
   BEGIN
53 mhunt 16613
	  -- Get true record count n the number of integration products
16614
	  SELECT COUNT (rc.pv_id)
16615
		INTO ntruerecordcount
16616
		FROM release_content rc
16617
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
51 mhunt 16618
 
53 mhunt 16619
	  OPEN recordset FOR
16620
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16621
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16622
				  pv.pkg_version, pv.dlocked, pv.pv_description
16623
			 FROM release_content rel,
16624
				  PACKAGES pkg,
16625
				  package_versions pv,
16626
				  views vi
16627
			WHERE pv.pkg_id = pkg.pkg_id
16628
			  AND rel.pv_id = pv.pv_id
16629
			  AND rel.base_view_id = vi.view_id
16630
			  AND pv.is_deployable = 'Y'
16631
			  AND rtag_id = rtagid
16632
			  AND rel.product_state IN (1, 5)
16633
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16634
   END;
16635
 
16636
/*-------------------------------------------------------------------------------------------------------*/
16637
   PROCEDURE get_test_items (
53 mhunt 16638
	  rtagid			 IN	   NUMBER,
16639
	  ntruerecordcount   OUT	  NUMBER,
16640
	  recordset		  OUT	  typecur
51 mhunt 16641
   )
16642
   IS
16643
   BEGIN
53 mhunt 16644
	  -- Get true record count n the number of test products
16645
	  SELECT COUNT (rc.pv_id)
16646
		INTO ntruerecordcount
16647
		FROM release_content rc
16648
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
51 mhunt 16649
 
53 mhunt 16650
	  OPEN recordset FOR
16651
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16652
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16653
				  pv.pkg_version, pv.dlocked, pv.pv_description
16654
			 FROM release_content rel,
16655
				  PACKAGES pkg,
16656
				  package_versions pv,
16657
				  views vi
16658
			WHERE pv.pkg_id = pkg.pkg_id
16659
			  AND rel.pv_id = pv.pv_id
16660
			  AND rel.base_view_id = vi.view_id
16661
			  AND pv.is_deployable = 'Y'
16662
			  AND rtag_id = rtagid
16663
			  AND rel.product_state = 2
16664
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16665
   END;
16666
 
16667
/*-------------------------------------------------------------------------------------------------------*/
16668
   PROCEDURE get_deploy_items (
53 mhunt 16669
	  rtagid			 IN	   NUMBER,
16670
	  ntruerecordcount   OUT	  NUMBER,
16671
	  recordset		  OUT	  typecur
51 mhunt 16672
   )
16673
   IS
16674
   BEGIN
53 mhunt 16675
	  -- Get true record count n the number of deploy products
16676
	  SELECT COUNT (rc.pv_id)
16677
		INTO ntruerecordcount
16678
		FROM release_content rc
16679
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
51 mhunt 16680
 
53 mhunt 16681
	  OPEN recordset FOR
16682
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16683
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16684
				  pv.pkg_version, pv.dlocked, pv.pv_description
16685
			 FROM release_content rel,
16686
				  PACKAGES pkg,
16687
				  package_versions pv,
16688
				  views vi
16689
			WHERE pv.pkg_id = pkg.pkg_id
16690
			  AND rel.pv_id = pv.pv_id
16691
			  AND rel.base_view_id = vi.view_id
16692
			  AND pv.is_deployable = 'Y'
16693
			  AND rtag_id = rtagid
16694
			  AND rel.product_state IN (3, 5)
16695
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16696
											  FROM deployment_manager.os_contents)
16697
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16698
   END;
16699
 
16700
/*-------------------------------------------------------------------------------------------------------*/
16701
   PROCEDURE get_reject_items (
53 mhunt 16702
	  rtagid			 IN	   NUMBER,
16703
	  ntruerecordcount   OUT	  NUMBER,
16704
	  recordset		  OUT	  typecur
51 mhunt 16705
   )
16706
   IS
16707
   BEGIN
53 mhunt 16708
	  -- Get true record count n the number of reject products
16709
	  SELECT COUNT (rc.pv_id)
16710
		INTO ntruerecordcount
16711
		FROM release_content rc
16712
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
51 mhunt 16713
 
53 mhunt 16714
	  OPEN recordset FOR
16715
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16716
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16717
				  pv.pkg_version, pv.dlocked, pv.pv_description
16718
			 FROM release_content rel,
16719
				  PACKAGES pkg,
16720
				  package_versions pv,
16721
				  views vi
16722
			WHERE pv.pkg_id = pkg.pkg_id
16723
			  AND rel.pv_id = pv.pv_id
16724
			  AND rel.base_view_id = vi.view_id
16725
			  AND pv.is_deployable = 'Y'
16726
			  AND rtag_id = rtagid
16727
			  AND rel.product_state = 4
16728
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16729
   END;
16730
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 16731
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
16732
   -- to the release_content table.
16733
 
16734
  PROCEDURE approve_merge (
16735
	PvId	IN NUMBER,
16736
	RtagId  IN NUMBER,
16737
	UserId  IN NUMBER
16738
  )
16739
  IS
16740
	viewid		  NUMBER;
16741
	envtab		  NUMBER;
16742
	oper			CHAR;
16743
  BEGIN
16744
	   -- Get ViewId
16745
	  viewid := get_package_view (pvid, rtagid);
16746
 
16747
	  -- Get the view tab
16748
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16749
 
16750
	  -- Make sure that package was in pending before merging it to released
16751
	  IF (envtab <> 1)
16752
	  THEN
16753
		 -- Not found in pending
16754
		 raise_application_error (-20000,
16755
								  'This package cannot be released here.'
16756
								 );
16757
	  END IF;
16758
 
16759
	  -- Log
16760
	  log_action (pvid, 'action', userid, 'Start of Package Merge...');
16761
 
16762
	  -- Get the planned operation type A=Add, S=Subtract
16763
	  SELECT ev.operation INTO oper
16764
	  FROM environment_view ev
16765
	  WHERE ev.rtag_id = RtagId
16766
	  AND ev.pv_id = PvId
16767
	  AND (ev.operation = 'A' OR ev.operation = 'S');
16768
 
16769
	  -- Remove from Pending
16770
	  pk_planned.remove_package (PvId, RtagId, UserId);
16771
 
16772
	  -- Either add to the release, or remove from the release as the operation commands
16773
	  IF oper = 'A'
16774
	  THEN
16775
		pk_release.add_package(PvId, viewId, RtagId, UserId);
16776
	  ELSIF oper = 'S'
16777
	  THEN
16778
		  pk_release.remove_package(PvId, RtagId, UserId);
16779
	  END IF;
16780
 
16781
	  touch_release(RtagId);
16782
 
16783
	  -- Log
16784
	  log_action (pvid, 'action', userid, 'End of Package Merge...');
16785
  END;
16786
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 16787
END pk_environment;
16788
/
16789
 
16790
CREATE OR REPLACE PACKAGE BODY PK_WORK_IN_PROGRESS IS
16791
 
16792
/*
16793
------------------------------
16794
||  Last Modified:  S.Vukovic
16795
||  Modified Date:  2/May/2005
16796
||  Body Version:   1.0
16797
------------------------------
16798
*/
16799
 
16800
 
16801
/*-------------------------------------------------------------------------------------------------------*/
16802
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16803
 
16804
	oldPvId NUMBER;
16805
	ReleaseLocation VARCHAR2(4000);
16806
	sLocation VARCHAR2(4000) := NULL;
16807
 
16808
 
16809
BEGIN
16810
	/*--------------- Business Rules Here -------------------*/
16811
	/*-------------------------------------------------------*/
16812
 
16813
	BEGIN
16814
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
16815
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
16816
		  FROM WORK_IN_PROGRESS wip,
16817
		  	   RELEASE_TAGS rt,
16818
			   PROJECTS proj
16819
		 WHERE wip.PV_ID = newPvId
16820
		   AND wip.RTAG_ID = rt.RTAG_ID
16821
		   AND rt.OFFICIAL != 'Y'
16822
		   AND rt.PROJ_ID = proj.PROJ_ID;
16823
 
16824
		EXCEPTION
16825
	    	WHEN NO_DATA_FOUND THEN
16826
	       		sLocation := NULL;
16827
 
16828
	END;	   	   
16829
 
16830
 
16831
 
16832
	IF (sLocation IS NULL)  THEN
16833
 
16834
		-- Add to "Work in progress"
16835
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
16836
		VALUES( RtagId, newPvId, ViewId );
16837
 
16838
 
16839
	    /* LOG ACTION */
16840
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16841
		  FROM PROJECTS proj,
16842
		  	   RELEASE_TAGS rt
16843
		 WHERE rt.PROJ_ID = proj.PROJ_ID
16844
		   AND rt.RTAG_ID = RtagId;
16845
 
16846
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16847
 
16848
	ELSE
16849
 
16850
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
16851
 
16852
	END IF;
16853
 
16854
END;
16855
/*-------------------------------------------------------------------------------------------------------*/
16856
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16857
 
16858
	ReleaseLocation VARCHAR2(4000);
16859
 
16860
BEGIN
16861
 
16862
	/*--------------- Business Rules Here -------------------*/
16863
	/*-------------------------------------------------------*/
16864
 
16865
 
16866
	-- Get release location for logging pusposes
16867
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16868
	  FROM PROJECTS proj,
16869
	  	   RELEASE_TAGS rt
16870
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16871
	   AND rt.RTAG_ID = RtagId;
16872
 
16873
 
16874
	-- Delete from Work In Progress
16875
	DELETE
16876
	  FROM WORK_IN_PROGRESS wip
16877
	 WHERE wip.RTAG_ID = RtagId
16878
	   AND wip.PV_ID = PvId;
16879
 
16880
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
16881
 
16882
 
16883
 
16884
 
16885
END;
16886
/*-------------------------------------------------------------------------------------------------------*/
16887
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
16888
 
16889
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16890
	ReleaseLocation VARCHAR2(4000);
16891
	PvId NUMBER;
16892
 
16893
BEGIN
16894
 
16895
	/*--------------- Business Rules Here -------------------*/
16896
	IF (PvIdList IS NULL)
16897
	THEN
16898
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16899
	END IF;
16900
	/*-------------------------------------------------------*/
16901
 
16902
 
16903
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
16904
 
16905
 
16906
	-- Get release location for logging pusposes
16907
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16908
	  FROM PROJECTS proj,
16909
	  	   RELEASE_TAGS rt
16910
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16911
	   AND rt.RTAG_ID = RtagId;
16912
 
16913
 
16914
	FOR i IN 1..nIdCollector.COUNT
16915
	LOOP
16916
		PvId := nIdCollector(i);
16917
 
16918
		-- Delete from Work In Progress
16919
		DELETE
16920
		  FROM WORK_IN_PROGRESS wip
16921
		 WHERE wip.RTAG_ID = RtagId
16922
		   AND wip.PV_ID = PvId;
16923
 
16924
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16925
 
16926
	END LOOP;
16927
 
16928
 
16929
END;
16930
/*-------------------------------------------------------------------------------------------------------*/
16931
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
16932
 
16933
	ReturnValue NUMBER;
16934
 
16935
BEGIN
16936
	SELECT wip.VIEW_ID INTO ReturnValue
16937
	  FROM WORK_IN_PROGRESS wip
16938
	 WHERE wip.RTAG_ID = RtagId
16939
	   AND wip.PV_ID = PvId;
16940
 
16941
	RETURN ReturnValue;
16942
END;
16943
/*-------------------------------------------------------------------------------------------------------*/
16944
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
16945
 
16946
	IsBaseView CHAR(1);
16947
 
16948
BEGIN
16949
 
16950
	-- Check if the view is BASE VIEW
16951
	SELECT vi.BASE_VIEW INTO IsBaseView
16952
	  FROM VIEWS vi
16953
	 WHERE vi.VIEW_ID = ViewId;
16954
 
16955
	IF (IsBaseView = 'Y') THEN 
16956
		-- Get Base view content
16957
		OPEN RecordSet FOR
16958
		SELECT 0 AS PKG_STATE,
16959
			   NULL AS DEPRECATED_STATE,
16960
			   pv.pv_id, 
16961
			   pkg.pkg_name, 
16962
			   pv.pkg_version, 
16963
			   pv.dlocked, 
16964
			   pv.pv_description,
16965
			   pv.BUILD_TYPE
16966
		  FROM WORK_IN_PROGRESS rel,
16967
		       packages pkg,
16968
		       package_versions pv
16969
		 WHERE pv.pkg_id = pkg.pkg_id
16970
		   AND rel.pv_id = pv.pv_id
16971
		   AND rel.VIEW_ID = ViewId
16972
		   AND rel.RTAG_ID = RtagId
16973
		 ORDER BY UPPER(pkg.PKG_NAME);
16974
 
16975
 
16976
	ELSE	 
16977
 
16978
	 	-- Get non base view content
16979
		OPEN RecordSet FOR
16980
		SELECT 0 AS PKG_STATE,
16981
			   NULL AS DEPRECATED_STATE,
16982
			   pv.pv_id, 
16983
			   pkg.pkg_name, 
16984
			   pv.pkg_version, 
16985
			   pv.dlocked, 
16986
			   pv.pv_description,
16987
			   pv.BUILD_TYPE
16988
		  FROM WORK_IN_PROGRESS rel,
16989
		       packages pkg,
16990
		       package_versions pv,
16991
			   VIEW_DEF vd
16992
		 WHERE pv.pkg_id = pkg.pkg_id
16993
		   AND rel.pv_id = pv.pv_id
16994
		   AND vd.VIEW_ID = ViewId
16995
		   AND vd.PKG_ID = pv.PKG_ID
16996
		   AND rel.RTAG_ID = RtagId
16997
		 ORDER BY UPPER(pkg.PKG_NAME);
16998
 
16999
 
17000
	END IF;	 	
17001
 
17002
 
17003
END;
17004
/*-------------------------------------------------------------------------------------------------------*/
17005
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
17006
 
17007
BEGIN
17008
 
17009
	UPDATE WORK_IN_PROGRESS wip SET
17010
	wip.VIEW_ID = NewViewId
17011
	WHERE wip.PV_ID = PvId
17012
	  AND wip.RTAG_ID = RtagId;
17013
 
17014
END;
17015
/*-------------------------------------------------------------------------------------------------------*/
17016
END PK_WORK_IN_PROGRESS;
17017
/
17018
 
17019
CREATE OR REPLACE PACKAGE BODY pk_package_Test
17020
IS
17021
/*
17022
------------------------------
17023
||  Last Modified:  R. Solanki
17024
||  Modified Date:  09/03/2006
17025
||  Body Version:   1.7
17026
------------------------------
17027
*/
17028
 
17029
   /*-------------------------------------------------------------------------------------------------------*/
17030
   PROCEDURE new_version (
17031
      nlastpvid                   IN       NUMBER,
17032
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
17033
      cbuildtype                  IN       CHAR,
17034
      nsettopvid                  IN       NUMBER DEFAULT NULL,
17035
      nrtagid                     IN       NUMBER,
17036
      nuserid                     IN       NUMBER,
17037
      enumissues_state_imported   IN       NUMBER,
17038
      returnpvid                  OUT      NUMBER
17039
   )
17040
   IS
17041
      origpkg_id                   package_versions.pkg_id%TYPE;
17042
      origdlocked                  package_versions.dlocked%TYPE;
17043
      ssv_mm                       package_versions.v_mm%TYPE;
17044
      ssv_nmm                      package_versions.v_nmm%TYPE;
17045
      ssv_ext                      package_versions.v_ext%TYPE;
17046
      spackageversion              VARCHAR2 (4000);
17047
      nissuestypes                 NUMBER;
17048
      nviewid                      NUMBER;
17049
      reccount                     NUMBER;
17050
      isreleased                   package_versions.dlocked%TYPE       := 'N';
17051
      slabel                       VARCHAR2 (4000)                    := NULL;
17052
 
17053
      CURSOR package_versions_cur
17054
      IS
17055
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
17056
           FROM package_versions pv
17057
          WHERE pv.pkg_version = snewpkgversion
17058
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
17059
                                         FROM package_versions origpv
17060
                                        WHERE origpv.pv_id = nlastpvid);
17061
 
17062
      package_versions_rec         package_versions_cur%ROWTYPE;
17063
 
17064
      CURSOR clone_package_versions_cur
17065
      IS
17066
         SELECT DISTINCT pkg_id, dlocked
17067
                    FROM package_versions
17068
                   WHERE pv_id = nlastpvid;
17069
 
17070
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
17071
   BEGIN
17072
      spackageversion := snewpkgversion;
17073
 
17074
      IF nsettopvid IS NULL
17075
      THEN
17076
         -- SetToPv_id is not supplied, hence proceed.
17077
 
17078
         /* ---------------------------------------------------- */
17079
/* Find id package_version exists                       */
17080
/* ---------------------------------------------------- */
17081
         OPEN package_versions_cur;
17082
 
17083
         FETCH package_versions_cur
17084
          INTO package_versions_rec;
17085
 
17086
         IF package_versions_cur%NOTFOUND
17087
         THEN
17088
            ---  Create brand new package ---
17089
            SELECT seq_pv_id.NEXTVAL
17090
              INTO returnpvid
17091
              FROM DUAL;
17092
 
17093
            -- Split Version to get extention + other
17094
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
17095
 
17096
            -- Get previous package to clone from
17097
            OPEN clone_package_versions_cur;
17098
 
17099
            FETCH clone_package_versions_cur
17100
             INTO clone_package_versions_rec;
17101
 
17102
            origpkg_id := clone_package_versions_rec.pkg_id;
17103
            origdlocked := clone_package_versions_rec.dlocked;
17104
 
17105
            CLOSE clone_package_versions_cur;
17106
 
17107
            -- Automated built config
17108
            IF (cbuildtype = 'A')
17109
            THEN
17110
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
17111
                                    -- Make sure that version is still unique
17112
            END IF;
17113
 
17114
            -- Clone Package Version Details --
17115
            INSERT INTO package_versions
17116
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
17117
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
17118
                         v_ext, src_path, pv_description, pv_overview,
17119
                         last_pv_id, owner_id, is_deployable,
17120
                         is_build_env_required, build_type, bs_id, is_autobuildable)
17121
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
17122
                      spackageversion AS pkg_version, 'N' AS dlocked,
17123
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
17124
                      ora_sysdatetime AS modified_stamp,
17125
                      nuserid AS modifier_id, ssv_mm AS v_mm,
17126
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
17127
                      pv.pv_description, pv.pv_overview,
17128
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
17129
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
17130
                 FROM package_versions pv
17131
                WHERE pv.pv_id = nlastpvid;
17132
 
17133
            -- Set Issues Type for cloning ---
17134
            IF origdlocked = 'Y'
17135
            THEN
17136
               nissuestypes := enumissues_state_imported;
17137
            ELSE
17138
               nissuestypes := NULL;
17139
            END IF;
17140
 
17141
            -- Update Label for automated built
17142
            IF (cbuildtype = 'A')
17143
            THEN
17144
               slabel := get_automated_label (returnpvid);
17145
 
17146
               UPDATE package_versions pv
17147
                  SET pv.pkg_label = slabel
17148
                WHERE pv.pv_id = returnpvid;
17149
            END IF;
17150
 
17151
            basic_clone (nlastpvid,
17152
                         returnpvid,
17153
                         nrtagid,
17154
                         nuserid,
17155
                         origpkg_id,
17156
                         nissuestypes
17157
                        );
17158
         ELSE
17159
            --- Package already exists, hence reuse ---
17160
            returnpvid := package_versions_rec.pv_id;
17161
            isreleased := package_versions_rec.dlocked;
17162
         END IF;
17163
 
17164
         CLOSE package_versions_cur;
17165
      ELSE
17166
         returnpvid := nsettopvid;
17167
      END IF;
17168
   END new_version;
17169
 
17170
/*-------------------------------------------------------------------------------------------------------*/
17171
   PROCEDURE change_state (
17172
      pvid       IN   NUMBER,
17173
      newstate   IN   package_versions.dlocked%TYPE,
17174
      userid     IN   NUMBER
17175
   )
17176
   IS
17177
   BEGIN
17178
      -- Set package in Released mode
17179
      UPDATE package_versions pv
17180
         SET pv.dlocked = newstate,
17181
             pv.modified_stamp = ora_sysdatetime,
17182
             pv.modifier_id = userid
17183
       WHERE pv.pv_id = pvid;
17184
 
17185
      -- Log action --
17186
      IF newstate = 'Y'
17187
      THEN
17188
         -- RELEASED --
17189
         log_action (pvid,
17190
                     'makeofficial',
17191
                     userid,
17192
                     'Package state change to: Released'
17193
                    );
17194
      ELSIF newstate = 'N'
17195
      THEN
17196
         -- UNLOCKED --
17197
         log_action (pvid,
17198
                     'makeunofficial',
17199
                     userid,
17200
                     'Package state change to: Ulocked'
17201
                    );
17202
      ELSIF newstate = 'P'
17203
      THEN
17204
         -- PENDING APPROVAL --
17205
         log_action (pvid,
17206
                     'add_to_planned',
17207
                     userid,
17208
                     'Package state change to: Pending Approval'
17209
                    );
17210
      ELSIF newstate = 'R'
17211
      THEN
17212
         -- REJECTED --
17213
         log_action (pvid,
17214
                     'reject_package',
17215
                     userid,
17216
                     'Package state change to: Rejected'
17217
                    );
17218
      ELSIF newstate = 'A'
17219
      THEN
17220
         -- APPROVED --
17221
         log_action (pvid,
17222
                     'approve_package',
17223
                     userid,
17224
                     'Package state change to: Approved'
17225
                    );
17226
      END IF;
17227
   END;
17228
 
17229
/*-------------------------------------------------------------------------------------------------------*/
17230
   PROCEDURE destroy_package (
17231
      pvid               IN       NUMBER,
17232
      overridewarnings   IN       CHAR DEFAULT 'N',
17233
      problemstring      OUT      VARCHAR2
17234
   )
17235
   IS
17236
      LOCKED     CHAR;
17237
      pkgid      NUMBER;
17238
      ROWCOUNT   NUMBER;
17239
   BEGIN
17240
      /*
17241
      || This will destroy all package details from database.
17242
      || It will only be used to remove unwanted work in progress packages,
17243
      || or mestaken versions
17244
      */
17245
 
17246
      /*--------------- Business Rules Here -------------------*/
17247
      problemstring := NULL;
17248
 
17249
      IF overridewarnings = 'N'
17250
      THEN
17251
         -- Package must not be official
17252
         SELECT pv.dlocked
17253
           INTO LOCKED
17254
           FROM package_versions pv
17255
          WHERE pv.pv_id = pvid;
17256
 
17257
         IF LOCKED = 'Y'
17258
         THEN
17259
            problemstring :=
17260
                  problemstring
17261
               || '- Package is locked and released.'
17262
               || UTL_TCP.crlf;
17263
         END IF;
17264
 
17265
         -- Cannot remove if used in BOMs
17266
         SELECT COUNT (osc.prod_id)
17267
           INTO ROWCOUNT
17268
           FROM deployment_manager.os_contents osc
17269
          WHERE osc.prod_id = pvid;
17270
 
17271
         IF ROWCOUNT > 0
17272
         THEN
17273
            problemstring :=
17274
                  problemstring
17275
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
17276
               || UTL_TCP.crlf;
17277
         END IF;
17278
 
17279
         -- Cannot remove if Referenced as build dependency
17280
         SELECT COUNT (dep.pv_id)
17281
           INTO ROWCOUNT
17282
           FROM package_dependencies dep
17283
          WHERE dep.dpv_id = pvid;
17284
 
17285
         IF ROWCOUNT > 0
17286
         THEN
17287
            problemstring :=
17288
                  problemstring
17289
               || '- Package is referenced by other package as build dependency.'
17290
               || UTL_TCP.crlf;
17291
         END IF;
17292
 
17293
         -- Cannot remove if Referenced as runtime dependency
17294
         SELECT COUNT (rd.pv_id)
17295
           INTO ROWCOUNT
17296
           FROM runtime_dependencies rd
17297
          WHERE rd.rtd_id = pvid;
17298
 
17299
         IF ROWCOUNT > 0
17300
         THEN
17301
            problemstring :=
17302
                  problemstring
17303
               || '- Package is referenced by other package as runtime dependency.'
17304
               || UTL_TCP.crlf;
17305
         END IF;
17306
 
17307
         -- Cannot remove if Referenced as patch
17308
         SELECT COUNT (pp.pv_id)
17309
           INTO ROWCOUNT
17310
           FROM package_patches pp
17311
          WHERE pp.patch_id = pvid;
17312
 
17313
         IF ROWCOUNT > 0
17314
         THEN
17315
            problemstring :=
17316
                  problemstring
17317
               || '- Package is used as patch by other package.'
17318
               || UTL_TCP.crlf;
17319
         END IF;
17320
      END IF;
17321
 
17322
/*-------------------------------------------------------*/
17323
      IF (problemstring IS NULL)
17324
      THEN
17325
         --- Remove From Work in Progress
17326
         DELETE FROM work_in_progress wip
17327
               WHERE wip.pv_id = pvid;
17328
 
17329
         --- Remove From Pending
17330
         DELETE FROM planned pl
17331
               WHERE pl.pv_id = pvid;
17332
 
17333
         --- Remove From Released area
17334
         DELETE FROM release_content rc
17335
               WHERE rc.pv_id = pvid;
17336
 
17337
         ---Remove From Package Processes
17338
         DELETE FROM package_processes pp
17339
               WHERE pp.pv_id = pvid;
17340
 
17341
         --- Remove Dependencies
17342
         DELETE FROM package_dependencies dep
17343
               WHERE dep.pv_id = pvid;
17344
 
17345
         DELETE FROM package_dependencies dep
17346
               WHERE dep.dpv_id = pvid;
17347
 
17348
         --- Remove Runtime dependencies
17349
         DELETE FROM runtime_dependencies rtd
17350
               WHERE rtd.pv_id = pvid;
17351
 
17352
         DELETE FROM runtime_dependencies rtd
17353
               WHERE rtd.rtd_id = pvid;
17354
 
17355
         --- Remove components
17356
         DELETE FROM product_components pc
17357
               WHERE pc.pv_id = pvid;
17358
 
17359
         DELETE FROM release_components rc
17360
               WHERE rc.pv_id = pvid;
17361
 
17362
         --- Remove From Notification History
17363
         DELETE FROM notification_history nh
17364
               WHERE nh.pv_id = pvid;
17365
 
17366
         --- Remove From Ignore Warnings
17367
         DELETE FROM ignore_warnings iw
17368
               WHERE iw.pv_id = pvid;
17369
 
17370
         --- Remove From Additional Notes
17371
         DELETE FROM additional_notes an
17372
               WHERE an.pv_id = pvid;
17373
 
17374
         --- Remove From CQ Issues
17375
         DELETE FROM cq_issues cq
17376
               WHERE cq.pv_id = pvid;
17377
 
17378
         --- Remove from Package Patches
17379
         DELETE FROM package_patches pp
17380
               WHERE pp.pv_id = pvid;
17381
 
17382
         DELETE FROM package_patches pp
17383
               WHERE pp.patch_id = pvid;
17384
 
17385
         --- Remove From Package Documents
17386
         DELETE FROM package_documents pd
17387
               WHERE pd.pv_id = pvid;
17388
 
17389
         --- Remove from Code Review
17390
         DELETE FROM code_reviews cr
17391
               WHERE cr.pv_id = pvid;
17392
 
17393
         --- Remove from Unit Tests
17394
         DELETE FROM unit_tests ut
17395
               WHERE ut.pv_id = pvid;
17396
 
17397
         --- Remove from Package BuildEnv
17398
         DELETE FROM package_build_env pbe
17399
               WHERE pbe.pv_id = pvid;
17400
 
17401
		 --- Remove from Package Build Info
17402
		 DELETE FROM package_build_info pbi
17403
		 	   WHERE pbi.pv_id = pvid;    
17404
 
17405
 
17406
         --- Remove from Build Order
17407
         DELETE FROM build_order bo
17408
               WHERE bo.pv_id = pvid;
17409
 
17410
         --- Remove from Note Manager
17411
         DELETE FROM note_manager nm
17412
               WHERE nm.nid = pvid;
17413
 
17414
         --- Remove from Action log
17415
         DELETE FROM action_log al
17416
               WHERE al.pv_id = pvid;
17417
 
17418
		 --- Remove from Do Not Ripple 
17419
		 DELETE FROM DO_NOT_RIPPLE dnr
17420
		 	   WHERE dnr.PV_ID = pvid;
17421
 
17422
		 --- Remove from Jira Issues 
17423
		 DELETE FROM JIRA_ISSUES jira
17424
		 	   WHERE jira.PV_ID = pvid;
17425
 
17426
         --- Finally Remove From Package Versions
17427
         --- Get Package name
17428
         SELECT pv.pkg_id
17429
           INTO pkgid
17430
           FROM package_versions pv
17431
          WHERE pv.pv_id = pvid;
17432
 
17433
         DELETE FROM package_versions pv
17434
               WHERE pv.pv_id = pvid;
17435
 
17436
         --- Remove package name if not used any more
17437
         SELECT COUNT (pv.pv_id)
17438
           INTO ROWCOUNT
17439
           FROM package_versions pv
17440
          WHERE pv.pkg_id = pkgid;
17441
 
17442
         IF ROWCOUNT < 1
17443
         THEN
17444
            DELETE FROM PACKAGES pkg
17445
                  WHERE pkg.pkg_id = pkgid;
17446
         END IF;
17447
      END IF;
17448
   END;
17449
 
17450
/*-------------------------------------------------------------------------------------------------------*/
17451
   PROCEDURE new_patch (
17452
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
17453
      nparentpvid        IN       NUMBER,
17454
      spatchidlist       IN       VARCHAR2,
17455
      nuserid            IN       NUMBER,
17456
      returnpatchid      OUT      NUMBER
17457
   )
17458
   IS
17459
      patchpv_id           NUMBER;
17460
      parpkg_id            NUMBER;
17461
      lastinstallorder     NUMBER;
17462
      ispatchdlocked       package_versions.dlocked%TYPE;
17463
      ssv_mm               package_versions.v_mm%TYPE;
17464
      ssv_nmm              package_versions.v_nmm%TYPE;
17465
      ssv_ext              package_versions.v_ext%TYPE;
17466
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
17467
                                                                          ();
17468
 
17469
      CURSOR parent_cur
17470
      IS
17471
         SELECT pv.*, pkg.pkg_name
17472
           FROM package_versions pv, PACKAGES pkg
17473
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
17474
 
17475
      parent_rec           parent_cur%ROWTYPE;
17476
 
17477
      CURSOR patch_cur
17478
      IS
17479
         SELECT pv.*, pg.pkg_name
17480
           FROM package_versions pv, PACKAGES pg
17481
          WHERE pv.pkg_id = parpkg_id
17482
            AND pv.pkg_version = snewpatchversion
17483
            AND pv.pkg_id = pg.pkg_id;
17484
 
17485
      patch_rec            patch_cur%ROWTYPE;
17486
 
17487
      CURSOR releases_cur
17488
      IS
17489
         SELECT rc.pv_id
17490
           FROM release_content rc
17491
          WHERE rc.pv_id = patch_rec.pv_id;
17492
 
17493
      releases_rec         releases_cur%ROWTYPE;
17494
   BEGIN
17495
      -- Get Last Install Order
17496
      SELECT COUNT (*)
17497
        INTO lastinstallorder
17498
        FROM package_patches pp
17499
       WHERE pp.pv_id = nparentpvid;
17500
 
17501
      -- Get parent details
17502
      OPEN parent_cur;
17503
 
17504
      FETCH parent_cur
17505
       INTO parent_rec;
17506
 
17507
      parpkg_id := parent_rec.pkg_id;
17508
 
17509
      -- Find if patch exists in database
17510
      OPEN patch_cur;
17511
 
17512
      FETCH patch_cur
17513
       INTO patch_rec;
17514
 
17515
      -- Parent must be official
17516
      IF parent_rec.dlocked = 'Y'
17517
      THEN
17518
         IF patch_cur%NOTFOUND
17519
         THEN
17520
            ispatchdlocked := 'N';
17521
 
17522
            -- Create new patch version --
17523
            SELECT seq_pv_id.NEXTVAL
17524
              INTO patchpv_id
17525
              FROM DUAL;
17526
 
17527
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
17528
 
17529
            INSERT INTO package_versions
17530
                        (pv_id, pkg_id, pkg_version,
17531
                         dlocked, created_stamp, creator_id,
17532
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
17533
                         src_path,
17534
                         pv_description,
17535
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
17536
						 is_autobuildable
17537
                        )
17538
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
17539
                         ispatchdlocked, ora_sysdate, nuserid,
17540
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
17541
                         parent_rec.src_path,
17542
                            'This is a patch to '
17543
                         || parent_rec.pkg_name
17544
                         || ' '
17545
                         || parent_rec.pkg_version,
17546
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
17547
                        );
17548
 
17549
            INSERT INTO package_patches
17550
                        (pv_id, patch_id, install_order)
17551
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17552
                       lastinstallorder + 1 AS install_order
17553
                  FROM package_versions pv
17554
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17555
 
17556
            /* LOG ACTION */
17557
            log_action (patchpv_id,
17558
                        'new_version',
17559
                        nuserid,
17560
                        'Patch version created: ' || snewpatchversion
17561
                       );
17562
            log_action (nparentpvid,
17563
                        'patch_add',
17564
                        nuserid,
17565
                        'New patch created and attached: ' || snewpatchversion
17566
                       );
17567
         ELSE
17568
            patchpv_id := patch_rec.pv_id;
17569
            ispatchdlocked := patch_rec.dlocked;
17570
 
17571
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
17572
            OPEN releases_cur;
17573
 
17574
            FETCH releases_cur
17575
             INTO releases_rec;
17576
 
17577
            IF releases_cur%NOTFOUND
17578
            THEN
17579
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
17580
               UPDATE package_versions
17581
                  SET is_patch = 'Y'
17582
                WHERE pv_id = patchpv_id;
17583
 
17584
               INSERT INTO package_patches
17585
                           (pv_id, patch_id, install_order)
17586
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17587
                          lastinstallorder + 1 AS install_order
17588
                     FROM package_versions pv
17589
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17590
            END IF;
17591
 
17592
            CLOSE releases_cur;
17593
 
17594
            /* LOG ACTION */
17595
            log_action (nparentpvid,
17596
                        'patch_add',
17597
                        nuserid,
17598
                           'Patch version was found and attached: '
17599
                        || snewpatchversion
17600
                       );
17601
         END IF;
17602
      END IF;
17603
 
17604
      /* Create Patch Dependencies */
17605
      opatchdepcollector := in_list_number (spatchidlist);
17606
 
17607
      -- Make sure patch is unofficial before altering its dependencies
17608
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
17609
      THEN
17610
         -- Delete Existing Dependencies
17611
         DELETE FROM package_dependencies dep
17612
               WHERE dep.pv_id = patchpv_id;
17613
 
17614
         -- Insert new dependencies
17615
         INSERT INTO package_dependencies
17616
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
17617
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
17618
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
17619
                   'L' AS build_type
17620
              FROM package_versions pv
17621
             WHERE pv.pv_id IN (
17622
                      SELECT *
17623
                        FROM TABLE
17624
                                (CAST
17625
                                    (opatchdepcollector AS relmgr_number_tab_t)
17626
                                ));
17627
      END IF;
17628
 
17629
      -- Return patch_id
17630
      returnpatchid := patchpv_id;
17631
 
17632
      CLOSE parent_cur;
17633
 
17634
      CLOSE patch_cur;
17635
   EXCEPTION
17636
      WHEN DUP_VAL_ON_INDEX
17637
      THEN
17638
         raise_application_error (-20000,
17639
                                     'Patch version '
17640
                                  || snewpatchversion
17641
                                  || ' already exist.'
17642
                                 );
17643
   END;
17644
 
17645
/*-------------------------------------------------------------------------------------------------------*/
17646
   PROCEDURE obsolete_patch (
17647
      patchid            IN   NUMBER,
17648
      isobsolete         IN   CHAR,
17649
      obsoletecomments   IN   VARCHAR2,
17650
      userid             IN   NUMBER
17651
   )
17652
   IS
17653
   BEGIN
17654
      -- Update patch
17655
      UPDATE package_versions pv
17656
         SET pv.is_obsolete = isobsolete,
17657
             pv.obsolete_comments = obsoletecomments
17658
       WHERE pv.pv_id = patchid;
17659
 
17660
      /*
17661
      -- Update patch children
17662
      UPDATE PACKAGE_VERSIONS pv SET
17663
      pv.IS_OBSOLETE = IsObsolete,
17664
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17665
      WHERE pv.PV_ID IN (
17666
                     SELECT DISTINCT dep.DPV_ID
17667
                       FROM PACKAGE_DEPENDENCIES dep
17668
                      WHERE dep.PV_ID = PatchId
17669
                     );
17670
 
17671
 
17672
      -- Update patch parent
17673
      UPDATE PACKAGE_VERSIONS pv SET
17674
      pv.IS_OBSOLETE = IsObsolete,
17675
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17676
      WHERE pv.PV_ID IN (
17677
                     SELECT DISTINCT dep.PV_ID
17678
                       FROM PACKAGE_DEPENDENCIES dep
17679
                      WHERE dep.DPV_ID = PatchId
17680
                     );
17681
 
17682
         */
17683
 
17684
      /* LOG ACTION */
17685
      IF isobsolete IS NOT NULL
17686
      THEN
17687
         log_action (patchid,
17688
                     'patch_obsolete',
17689
                     userid,
17690
                     'Obsolete patch. ' || obsoletecomments
17691
                    );
17692
      ELSE
17693
         log_action (patchid,
17694
                     'patch_obsolete',
17695
                     userid,
17696
                     'Undo patch obsolete.'
17697
                    );
17698
      END IF;
17699
   END;
17700
 
17701
/*-------------------------------------------------------------------------------------------------------*/
17702
   PROCEDURE obsolete_patches (
17703
      spatchidlist       IN   VARCHAR2,
17704
      isobsolete         IN   CHAR,
17705
      obsoletecomments   IN   VARCHAR2,
17706
      userid             IN   NUMBER
17707
   )
17708
   IS
17709
   BEGIN
17710
      /*--------------- Business Rules Here -------------------*/
17711
      IF spatchidlist IS NULL
17712
      THEN
17713
         raise_application_error (-20000,
17714
                                  'Please select one or more Patches.'
17715
                                 );
17716
      END IF;
17717
 
17718
/*-------------------------------------------------------*/
17719
 
17720
      -- Update patch
17721
      UPDATE package_versions pv
17722
         SET pv.is_obsolete = isobsolete,
17723
             pv.obsolete_comments = obsoletecomments
17724
       WHERE pv.pv_id IN (
17725
                SELECT *
17726
                  FROM THE
17727
                          (SELECT CAST
17728
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
17729
                                     )
17730
                             FROM DUAL
17731
                          ));
17732
   /*
17733
   -- Update patch children
17734
   UPDATE PACKAGE_VERSIONS pv SET
17735
   pv.IS_OBSOLETE = IsObsolete,
17736
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17737
   WHERE pv.PV_ID IN (
17738
                  SELECT DISTINCT dep.DPV_ID
17739
                    FROM PACKAGE_DEPENDENCIES dep
17740
                   WHERE dep.PV_ID = PatchId
17741
                  );
17742
 
17743
 
17744
   -- Update patch parent
17745
   UPDATE PACKAGE_VERSIONS pv SET
17746
   pv.IS_OBSOLETE = IsObsolete,
17747
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17748
   WHERE pv.PV_ID IN (
17749
                  SELECT DISTINCT dep.PV_ID
17750
                    FROM PACKAGE_DEPENDENCIES dep
17751
                   WHERE dep.DPV_ID = PatchId
17752
                  );
17753
 
17754
      */
17755
 
17756
   /* LOG ACTION
17757
   IF IsObsolete IS NOT NULL THEN
17758
         Log_Action ( PatchId, 'patch_obsolete', UserId,
17759
                  'Obsolete patch. '|| ObsoleteComments );
17760
   ELSE
17761
      Log_Action ( PatchId, 'patch_obsolete', UserId,
17762
                  'Undo patch obsolete.' );
17763
   END IF;  */
17764
   END;
17765
 
17766
/*-------------------------------------------------------------------------------------------------------*/
17767
   PROCEDURE add_process (
17768
      nprocid         IN   processes.proc_id%TYPE,
17769
      shealthtag      IN   processes.proc_name%TYPE,
17770
      sprocdesc       IN   processes.proc_description%TYPE,
17771
      scmdinterface   IN   processes.run_as%TYPE,
17772
      spkgowner       IN   processes.pkg_owner%TYPE,
17773
      sisinterface    IN   processes.is_interface%TYPE,
17774
      npvid           IN   package_processes.pv_id%TYPE,
17775
      nuserid         IN   NUMBER
17776
   )
17777
   IS
17778
      pkgname   VARCHAR2 (100);
17779
/*Rupesh Release on 17/05/2006*/
17780
   BEGIN
17781
      INSERT INTO processes
17782
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
17783
                   is_interface
17784
                  )
17785
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
17786
                   sisinterface
17787
                  );
17788
 
17789
      pk_package.add_package_process (nprocid, npvid, nuserid);
17790
   END;
17791
 
17792
/*-------------------------------------------------------------------------------------------------------*/
17793
   PROCEDURE add_package_process (
17794
      nprocidlist   IN   VARCHAR2,
17795
      npvid         IN   package_processes.pv_id%TYPE,
17796
      nuserid       IN   NUMBER
17797
   )
17798
   IS
17799
      processname   VARCHAR2 (4000);
17800
 
17801
/*Rupesh Release on 17/05/2006*/
17802
      CURSOR proc_cur
17803
      IS
17804
         SELECT prc.proc_id
17805
           FROM processes prc
17806
          WHERE prc.proc_id IN (
17807
                   SELECT *
17808
                     FROM THE
17809
                             (SELECT CAST
17810
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
17811
                                        )
17812
                                FROM DUAL
17813
                             ));
17814
 
17815
      proc_rec      proc_cur%ROWTYPE;
17816
   BEGIN
17817
      OPEN proc_cur;
17818
 
17819
      FETCH proc_cur
17820
       INTO proc_rec;
17821
 
17822
      WHILE proc_cur%FOUND
17823
      LOOP
17824
         INSERT INTO package_processes
17825
                     (proc_id, pv_id
17826
                     )
17827
              VALUES (proc_rec.proc_id, npvid
17828
                     );
17829
 
17830
         SELECT prc.proc_name
17831
           INTO processname
17832
           FROM processes prc
17833
          WHERE prc.proc_id = proc_rec.proc_id;
17834
 
17835
         -- Log Action --
17836
         log_action (npvid,
17837
                     'process_add',
17838
                     nuserid,
17839
                     'Added process with health tag ' || processname
17840
                    );
17841
 
17842
         FETCH proc_cur
17843
          INTO proc_rec;
17844
      END LOOP;
17845
   END;
17846
 
17847
/*-------------------------------------------------------------------------------------------------------*/
17848
   PROCEDURE remove_process (
17849
      nprocid   IN   package_processes.proc_id%TYPE,
17850
      npvid     IN   package_processes.pv_id%TYPE,
17851
      nuserid   IN   NUMBER
17852
   )
17853
   IS
17854
      processname   VARCHAR2 (4000);
17855
/* Rupesh Release on 17/05/2006*/
17856
   BEGIN
17857
      SELECT prc.proc_name
17858
        INTO processname
17859
        FROM processes prc
17860
       WHERE prc.proc_id = nprocid;
17861
 
17862
      DELETE FROM package_processes
17863
            WHERE proc_id = nprocid AND pv_id = npvid;
17864
 
17865
      -- Log Action --
17866
      log_action (npvid,
17867
                  'process_remove',
17868
                  nuserid,
17869
                  'Removed process with health tag ' || processname
17870
                 );
17871
   END;
17872
/*-------------------------------------------------------------------------------------------------------*/
17873
  /* 
17874
  Author: Rupesh Solanki
17875
  Purpose: To move package versions from one release to another
17876
  Release: 4th September 2006 
17877
 
17878
  */
17879
  PROCEDURE move_package (
17880
   	  npvid  			  IN package_versions.pv_id%TYPE,
17881
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
17882
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
17883
	  nuserid			  IN NUMBER	
17884
  )	
17885
  IS	
17886
 
17887
  oldrtag_name VARCHAR2(4000);
17888
  newrtag_name VARCHAR2(4000);
17889
 
17890
 
17891
 
17892
  BEGIN
17893
 
17894
 
17895
  SELECT rtag_name into oldrtag_name
17896
  FROM RELEASE_TAGS
17897
  WHERE rtag_id = nrtagid;
17898
 
17899
  SELECT rtag_name into newrtag_name
17900
  FROM RELEASE_TAGS
17901
  WHERE rtag_id = nnewrtagid;
17902
 
17903
  /* Table Work In Progress*/
17904
  	   UPDATE WORK_IN_PROGRESS
17905
	   SET RTAG_ID = nnewrtagid
17906
	   WHERE RTAG_ID = nrtagid
17907
	   AND PV_ID = npvid;
17908
 
17909
  /* Table PLANNED*/	
17910
  	   UPDATE PLANNED
17911
	   SET RTAG_ID = nnewrtagid
17912
	   WHERE RTAG_ID = nrtagid
17913
	   AND PV_ID = npvid;   
17914
 
17915
      -- Log Action --
17916
      log_action (npvid,
17917
                  'move_package_version',
17918
                  nuserid,
17919
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
17920
                 );  	   	     
17921
 
17922
 
17923
  END;
17924
 
17925
/*-------------------------------------------------------------------------------------------------------*/
17926
PROCEDURE modify_product_state (
17927
   	  npvid IN package_versions.pv_id%TYPE,
17928
	  nstateid IN product_states.state_id%TYPE,
17929
	  nuserid IN NUMBER
17930
   ) IS
17931
 
17932
   sStateName VARCHAR(4000);
17933
 
17934
  /* 
17935
  Author: Rupesh Solanki
17936
  Purpose: To modify the product state from integration to test to deployment
17937
  Release: 25th January 2006 
17938
  */   
17939
 
17940
  BEGIN
17941
 
17942
  UPDATE PACKAGE_VERSIONS
17943
  SET PRODUCT_STATE = nstateid
17944
  WHERE PV_ID = npvid;
17945
 
17946
 
17947
  SELECT STATE INTO sStateName
17948
  FROM PRODUCT_STATES 
17949
  WHERE STATE_ID = nstateid;
17950
 
17951
  -- Log Action --
17952
  log_action (npvid,
17953
              'modify_product_state',
17954
               nuserid,
17955
               sStateName
17956
              );  
17957
 
17958
 
17959
  END;			  	   	     
17960
/*-------------------------------------------------------------------------------------------------------*/   
17961
END pk_package_Test;
17962
/
17963
 
17964
CREATE OR REPLACE PACKAGE BODY pk_project IS
17965
/*
17966
------------------------------
17967
||  Last Modified:  J.Tweddle
17968
||  Modified Date:  23/Aug/2007
17969
||  Body Version:   1.0
17970
------------------------------
17971
*/
17972
 
17973
    /*------------------------------------------------------------------------*/
17974
    PROCEDURE update_base_url ( 
17975
        nprojid   IN  projects.proj_id%TYPE,
17976
        sbaseurl  IN  VARCHAR2
17977
        ) IS
17978
    BEGIN
17979
 
17980
        UPDATE projects
17981
        SET base_url = sbaseurl
17982
        WHERE proj_id = nprojid;
17983
 
17984
    END update_base_url;
17985
    /*------------------------------------------------------------------------*/
17986
 
17987
END pk_project;
17988
/
17989
 
17990
CREATE OR REPLACE PACKAGE BODY pk_buildapi
17991
IS
17992
/*
17993
------------------------------
17994
||  Last Modified:  Jeremy Tweddle
17995
||  Modified Date:  14/Dec/2007
17996
||  Body Version:   3.1
17997
------------------------------
17998
*/
17999
 
18000
   /*-------------------------------------------------------------------------------------------------------*/
18001
   PROCEDURE add_product_component (
18002
      npvid           IN   NUMBER,
18003
      sosname         IN   VARCHAR2,
18004
      sorigfilepath   IN   VARCHAR2,
18005
      sfilename       IN   VARCHAR2,
18006
      sdestfilepath   IN   VARCHAR2,
18007
      nbytesize       IN   NUMBER,
18008
      scrccksum       IN   VARCHAR2
18009
   )
18010
   IS
18011
      nosid   NUMBER;
18012
   BEGIN
18013
      /*--------------- Business Rules Here -------------------*/
18014
      -- OS Name Requirements --
18015
      IF (sosname IS NULL)
18016
      THEN
18017
         raise_application_error (-20000, 'OsName cannot be NULL.');
18018
      END IF;
18019
 
18020
      -- File Requirements --
18021
      IF (NOT sfilename IS NULL)
18022
      THEN
18023
         IF (nbytesize IS NULL)
18024
         THEN
18025
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
18026
         ELSIF (scrccksum IS NULL)
18027
         THEN
18028
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
18029
         END IF;
18030
      END IF;
18031
 
18032
      -- Folder Requirements --
18033
      -- No requirements for now.
18034
 
18035
      /*-------------------------------------------------------*/
18036
 
18037
      -- Get OsId
18038
      nosid := get_osid (sosname);
18039
 
18040
      -- Insert component entry
18041
      INSERT INTO product_components
18042
                  (pv_id, os_id, file_path, file_name, destination_path,
18043
                   byte_size, crc_cksum
18044
                  )
18045
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
18046
                   nbytesize, scrccksum
18047
                  );
18048
   EXCEPTION
18049
      WHEN DUP_VAL_ON_INDEX
18050
      THEN
18051
         raise_application_error (-20000,
18052
                                  'Cannot have duplicate product components.'
18053
                                 );
18054
   END;
18055
 
18056
/*-------------------------------------------------------------------------------------------------------*/
18057
   PROCEDURE remove_all_product_components (
18058
      npvid     IN   NUMBER,
18059
      sosname   IN   VARCHAR2
18060
   )
18061
   IS
18062
      nosid   NUMBER;
18063
   BEGIN
18064
/*--------------- Business Rules Here -------------------*/
18065
/*-------------------------------------------------------*/
18066
 
18067
      -- Get OsId
18068
      nosid := get_osid (sosname);
18069
 
18070
      -- Delete component entry
18071
      DELETE FROM product_components pc
18072
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
18073
   END;
18074
 
18075
/*-------------------------------------------------------------------------------------------------------*/
18076
   FUNCTION get_osid (sosname IN VARCHAR2)
18077
      RETURN NUMBER
18078
   IS
18079
      code   NUMBER;
18080
   BEGIN
18081
      -- Get Platform Code --
18082
      SELECT pf.code
18083
        INTO code
18084
        FROM platforms pf
18085
       WHERE UPPER (pf.NAME) = UPPER (sosname);
18086
 
18087
      RETURN code;
18088
   EXCEPTION
18089
      WHEN NO_DATA_FOUND
18090
      THEN
18091
         raise_application_error
18092
            (-20000,
18093
                'Platform '
18094
             || sosname
18095
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
18096
            );
18097
         RAISE;
18098
   END;
18099
 
18100
/*-------------------------------------------------------------------------------------------------------*/
18101
   PROCEDURE update_build_service (
18102
      sdatabaseserver   IN   VARCHAR2,
18103
      swebserver        IN   VARCHAR2,
18104
      smailserver       IN   VARCHAR2,
18105
      smailsender       IN   VARCHAR2,
18106
      sdiskspace        IN   VARCHAR2,
18107
      ssbommanagement   IN   VARCHAR2
18108
   )
18109
   IS
18110
   BEGIN
18111
      UPDATE build_service_config
18112
         SET config = sdatabaseserver
18113
       WHERE service = 'DATABASE SERVER';
18114
 
18115
      UPDATE build_service_config
18116
         SET config = swebserver
18117
       WHERE service = 'WEB SERVER';
18118
 
18119
      UPDATE build_service_config
18120
         SET config = smailserver
18121
       WHERE service = 'MAIL SERVER';
18122
 
18123
      UPDATE build_service_config
18124
         SET config = smailsender
18125
       WHERE service = 'BUILD FAILURE MAIL SENDER';
18126
 
18127
      UPDATE build_service_config
18128
         SET config = sdiskspace
18129
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
18130
 
18131
      UPDATE build_service_config
18132
         SET config = ssbommanagement
18133
       WHERE service = 'SBOM MANAGEMENT';
18134
   END;
18135
 
18136
/*-------------------------------------------------------------------------------------------------------*/
18137
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
18138
   IS
18139
      gbe_id   NUMBER;
18140
   BEGIN
18141
      -- Get GBE_ID
18142
      SELECT seq_gbe_id.NEXTVAL
18143
        INTO gbe_id
18144
        FROM DUAL;
18145
 
18146
      INSERT INTO gbe_machtype
18147
                  (gbe_id, gbe_value
18148
                  )
18149
           VALUES (gbe_id, sgbevalue
18150
                  );
18151
   END;
18152
 
18153
/*-------------------------------------------------------------------------------------------------------*/
18154
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
18155
   IS
18156
   BEGIN
18157
      DELETE FROM gbe_machtype
18158
            WHERE gbe_id = ngbe_id;
18159
   END;
18160
 
18161
/*-------------------------------------------------------------------------------------------------------*/
18162
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
18163
   IS
18164
   BEGIN
18165
      UPDATE gbe_machtype
18166
         SET gbe_value = sgbevalue
18167
       WHERE gbe_id = ngbe_id;
18168
   END;
18169
 
18170
/*-------------------------------------------------------------------------------------------------------*/
18171
   PROCEDURE add_daemon (
18172
      sdaemonhostname   IN   VARCHAR2,
18173
      nrtagid           IN   NUMBER,
18174
      ngbeid            IN   NUMBER,
18175
      sgbebuildfilter   IN   VARCHAR2
18176
   )
18177
   IS
18178
      nrecordnumber   NUMBER;
18179
      nrconid         NUMBER;
18180
   BEGIN
18181
      -- Get RCON_ID
18182
      SELECT seq_rcon_id.NEXTVAL
18183
        INTO nrconid
18184
        FROM DUAL;
18185
 
18186
      SELECT COUNT (*)
18187
        INTO nrecordnumber
18188
        FROM release_config
18189
       WHERE rtag_id = nrtagid;
18190
 
18191
      IF nrecordnumber = 0
18192
      THEN
18193
         INSERT INTO release_config
18194
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18195
                      gbe_id, gbe_buildfilter
18196
                     )
18197
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
18198
                      ngbeid, sgbebuildfilter
18199
                     );
18200
      ELSE
18201
         INSERT INTO release_config
18202
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18203
                      gbe_id, gbe_buildfilter
18204
                     )
18205
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
18206
                      ngbeid, sgbebuildfilter
18207
                     );
18208
      END IF;
18209
   END;
18210
 
18211
/*-------------------------------------------------------------------------------------------------------*/
18212
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
18213
   IS
18214
   BEGIN
18215
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
18216
      DELETE FROM daemon_action_log
18217
            WHERE rcon_id IN (
18218
                     SELECT *
18219
                       FROM THE
18220
                               (SELECT CAST
18221
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18222
                                          )
18223
                                  FROM DUAL
18224
                               ));
18225
 
18226
      DELETE FROM run_level
18227
            WHERE rcon_id IN (
18228
                     SELECT *
18229
                       FROM THE
18230
                               (SELECT CAST
18231
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18232
                                          )
18233
                                  FROM DUAL
18234
                               ));
18235
 
18236
      DELETE FROM abt_action_log
18237
            WHERE rcon_id IN (
18238
                     SELECT *
18239
                       FROM THE
18240
                               (SELECT CAST
18241
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18242
                                          )
18243
                                  FROM DUAL
18244
                               ));
18245
 
18246
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
18247
      DELETE FROM release_config
18248
            WHERE rcon_id IN (
18249
                     SELECT *
18250
                       FROM THE
18251
                               (SELECT CAST
18252
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18253
                                          )
18254
                                  FROM DUAL
18255
                               ));
18256
   END;
18257
 
18258
/*-------------------------------------------------------------------------------------------------------*/
18259
   PROCEDURE update_daemon (
18260
      sdaemonhostname   IN   VARCHAR2,
18261
      nrconid           IN   NUMBER,
18262
      ngbeid            IN   NUMBER,
18263
      sgbebuildfilter   IN   VARCHAR2
18264
   )
18265
   IS
18266
   BEGIN
18267
      UPDATE release_config
18268
         SET daemon_hostname = sdaemonhostname,
18269
             gbe_id = ngbeid,
18270
             gbe_buildfilter = sgbebuildfilter
18271
       WHERE rcon_id = nrconid;
18272
   END;
18273
 
18274
/*-------------------------------------------------------------------------------------------------------*/
18275
   PROCEDURE insert_schedule_info (
18276
      dschedulepause     IN   DATE,
18277
      dscheduleresume    IN   DATE,
18278
      crepeat            IN   VARCHAR2,
18279
      cindefinitepause   IN   VARCHAR2
18280
   )
18281
   IS
18282
      nscheduledid   NUMBER;
18283
   BEGIN
18284
      -- Get Next Available Scheduled Id
18285
      SELECT seq_scheduled_id.NEXTVAL
18286
        INTO nscheduledid
18287
        FROM DUAL;
18288
 
18289
      INSERT INTO run_level_schedule
18290
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
18291
                   cindefinitepause);
18292
   END;
18293
 
18294
/*-------------------------------------------------------------------------------------------------------*/
18295
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
18296
   IS
18297
   BEGIN
18298
      DELETE FROM run_level_schedule
18299
            WHERE scheduled_id = nscheduleid;
18300
   END;
18301
 
18302
/*-------------------------------------------------------------------------------------------------------*/
18303
   PROCEDURE set_infinite_pause
18304
   IS
18305
      nscheduledid   NUMBER;
18306
   BEGIN
18307
      -- Get Next Available Scheduled Id
18308
      SELECT seq_scheduled_id.NEXTVAL
18309
        INTO nscheduledid
18310
        FROM DUAL;
18311
 
18312
      INSERT INTO run_level_schedule
18313
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
18314
   END;
18315
 
18316
/*-------------------------------------------------------------------------------------------------------*/
18317
   PROCEDURE set_resume
18318
   IS
18319
   BEGIN
18320
      DELETE FROM run_level_schedule
18321
            WHERE indefinite_pause = 'P';
18322
   END;
18323
 
18324
/*-------------------------------------------------------------------------------------------------------*/
18325
   PROCEDURE delete_out_of_date_schedule
18326
   IS
18327
   BEGIN
18328
      DELETE FROM run_level_schedule
18329
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
18330
   END;
18331
 
18332
/*-------------------------------------------------------------------------------------------------------*/
18333
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
18334
   IS
18335
   BEGIN
18336
      UPDATE run_level
18337
         SET PAUSE = NULL
18338
       WHERE rcon_id = nrconid;
18339
   END;
18340
 
18341
/*-------------------------------------------------------------------------------------------------------*/
18342
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
18343
   IS
18344
   BEGIN
18345
      UPDATE run_level
18346
         SET PAUSE = 1
18347
       WHERE rcon_id = nrconid;
18348
   END;
18349
/*-------------------------------------------------------------------------------------------------------*/
18350
END pk_buildapi;
18351
/
18352
 
18353
CREATE OR REPLACE PACKAGE BODY Rm_Issues AS
18354
 
18355
-- Private Implementation -----------------------------------------------------
18356
 
18357
 
18358
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18359
	AS
18360
 
18361
	BEGIN
18362
		-- start boundary case
18363
		IF ( XXstart < XX ) THEN
18364
			RETURN 1;
18365
 
18366
		ELSIF ( XXstart = XX ) THEN
18367
 
18368
			-- need to consider YY
18369
			IF ( YYstart < YY ) THEN
18370
				RETURN 1;
18371
 
18372
			ELSIF ( YYstart = YY ) THEN
18373
 
18374
					-- need to consider ZZ
18375
					IF ( ZZstart <= ZZ ) THEN
18376
						RETURN 1;
18377
 
18378
					ELSE
18379
						RETURN 0;
18380
					END IF;
18381
 
18382
			ELSE
18383
				RETURN 0;
18384
			END IF;
18385
		ELSE
18386
			RETURN 0;
18387
		END IF;
18388
	EXCEPTION
18389
		WHEN OTHERS THEN
18390
			RETURN -1;
18391
	END;
18392
 
18393
 
18394
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18395
	AS
18396
 
18397
	BEGIN
18398
		-- end boundary case
18399
		IF ( XX < XXend ) THEN
18400
			RETURN 1;
18401
 
18402
		ELSIF ( XX = XXend ) THEN
18403
 
18404
			-- need to consider YY
18405
			IF ( YY < YYend ) THEN
18406
				RETURN 1;
18407
 
18408
			ELSIF ( YY = YYend ) THEN
18409
 
18410
					-- need to consider ZZ
18411
					IF ( ZZ <= ZZend ) THEN
18412
						RETURN 1;
18413
 
18414
					ELSE
18415
						RETURN 0;
18416
					END IF;
18417
			ELSE
18418
 
18419
				RETURN 0;
18420
			END IF;
18421
		ELSE
18422
			RETURN 0;
18423
		END IF;
18424
	EXCEPTION
18425
		WHEN OTHERS THEN
18426
			RETURN -1;
18427
	END;
18428
 
18429
	/*
18430
	-	version format:		XX.YY.ZZ.abc
18431
	*/
18432
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
18433
	AS
18434
		XXstart		NUMBER	:=	0;
18435
		XXend		NUMBER	:=	0;
18436
		XX			NUMBER	:=	0;
18437
		YYstart		NUMBER	:=	0;
18438
		YYend		NUMBER	:=	0;
18439
		YY			NUMBER	:=	0;
18440
		ZZstart		NUMBER	:=	0;
18441
		ZZend		NUMBER	:=	0;
18442
		ZZ			NUMBER	:=	0;
18443
		first_dot	NUMBER	:=	0;
18444
		second_dot	NUMBER	:=	0;
18445
		third_dot	NUMBER	:=	0;
18446
 
18447
		ProjExtstart	VARCHAR2(10);
18448
		ProjExtend		VARCHAR2(10);
18449
		ProjExt			VARCHAR2(10);
18450
 
18451
	BEGIN
18452
		-- strip the version number
18453
		first_dot :=  INSTR(version_start, '.', 1, 1);
18454
		second_dot :=  INSTR(version_start, '.', 1, 2);
18455
		third_dot :=  INSTR(version_start, '.', 1, 3);
18456
 
18457
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
18458
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18459
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18460
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
18461
 
18462
		first_dot :=  INSTR(version_end, '.', 1, 1);
18463
		second_dot :=  INSTR(version_end, '.', 1, 2);
18464
		third_dot :=  INSTR(version_end, '.', 1, 3);
18465
 
18466
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
18467
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18468
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18469
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
18470
 
18471
		first_dot :=  INSTR(version, '.', 1, 1);
18472
		second_dot :=  INSTR(version, '.', 1, 2);
18473
		third_dot :=  INSTR(version, '.', 1, 3);
18474
 
18475
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
18476
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18477
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18478
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
18479
 
18480
		-- only include versions if all project extensions are the same
18481
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
18482
 
18483
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
18484
				RETURN 1;
18485
			ELSE
18486
				RETURN 0;
18487
			END IF;
18488
		ELSE
18489
			RETURN 0;
18490
		END IF;
18491
 
18492
	EXCEPTION
18493
		WHEN OTHERS THEN
18494
			RETURN -1;
18495
	END;
18496
 
18497
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
18498
	AS
18499
	    pkg_id NUMBER;
18500
	BEGIN
18501
		SELECT
18502
			p.PKG_ID
18503
		INTO
18504
			pkg_id
18505
		FROM
18506
			PACKAGES p
18507
		WHERE
18508
			p.PKG_NAME = pkgName;
18509
 
18510
		RETURN pkg_id;
18511
	EXCEPTION
18512
	    WHEN OTHERS THEN
18513
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
18514
			RETURN -1;
18515
	END;
18516
 
18517
 
18518
-- Public Implementation ------------------------------------------------------
18519
 
18520
	/*
18521
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
18522
	--
18523
	-- INPUT PARAMETERS:
18524
	--
18525
	--		pkg_name  	-  	The name of the top level package to get issues for
18526
	--		version_start	-	The start version for the comparison
18527
	--		version_end	-	The end version for the comparison
18528
	*/
18529
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18530
	AS
18531
		pkgId	NUMBER;
18532
	BEGIN
18533
		-- get pkg_id of the input package:
18534
		pkgId := GetPkgId( pkg_name );
18535
 
18536
		OPEN vCursor FOR
18537
		SELECT
18538
			  pv.PKG_ID,
18539
			  pv.PKG_VERSION,
18540
			  pv.PV_ID,
18541
			  i_pkg.ISS_ID,
18542
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
18543
			  pd.DPKG_ID,
18544
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
18545
			  pd.DPV_ID,
18546
			  i_dpkg.ISS_ID AS ISSUE_ID
18547
		FROM
18548
			 PACKAGE_VERSIONS pv
18549
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
18550
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
18551
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
18552
		WHERE
18553
   			 pv.PKG_ID = pkgId
18554
		AND
18555
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
18556
		AND
18557
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
18558
		ORDER BY
18559
			 pv.PKG_ID,
18560
			 pv.PV_ID,
18561
			 pd.DPKG_ID,
18562
			 pd.DPV_ID;
18563
	EXCEPTION
18564
		WHEN OTHERS THEN
18565
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
18566
	END;
18567
 
18568
 
18569
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
18570
 
18571
	/*
18572
	-- Proc: LoadIssuesTable
18573
	--
18574
	-- Populates Package_Issues table with details of issues from all dependent packages.
18575
	-- This will be for all package versions of the input pkg_name between the
18576
	-- version_start and version_end.
18577
	--
18578
	-- INPUT PARAMETERS:
18579
	--
18580
	--		pkg_name  	-  	The name of the top level package to get issues for
18581
	--		version_start	-	The start version for the comparison
18582
	--		version_end	-	The end version for the comparison
18583
	*/
18584
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18585
	AS
18586
		pkgId	NUMBER;
18587
 
18588
		CURSOR pack_vers_cur IS
18589
			SELECT
18590
				pv.PV_ID,
18591
				pv.PKG_VERSION,
18592
				pv.PKG_ID,
18593
				p.PKG_NAME
18594
			FROM
18595
				PACKAGE_VERSIONS pv
18596
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18597
			WHERE
18598
   				 pv.PKG_ID = pkgId
18599
			AND
18600
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
18601
 
18602
	BEGIN
18603
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18604
 
18605
		-- get the pkg_id we are finding issues for
18606
		pkgId := GetPkgId( pkg_name );
18607
 
18608
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
18609
		FOR pack_ver_rec IN  pack_vers_cur
18610
		LOOP
18611
			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 );
18612
			COMMIT;
18613
		END LOOP;
18614
 
18615
		-- The output cursor - shows the individual versions of the top level package then were reported on
18616
		OPEN vCursor FOR
18617
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18618
/*removed
18619
		SELECT
18620
			PKG_VERSION
18621
		FROM
18622
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
18623
*/
18624
 
18625
 
18626
	EXCEPTION
18627
		WHEN OTHERS THEN
18628
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
18629
	END;
18630
 
18631
 
18632
	/*
18633
	-- Proc: InsertIssuesForDepends
18634
	--
18635
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
18636
	--
18637
	-- INPUT PARAMETERS:
18638
	--
18639
	--		pvID  		-  	The package version id of the package to get issues for
18640
	--		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)
18641
	--		top_pkgName -  	The package name of the top level package
18642
	--		top_pvID  	-  	The package version id of the top level package
18643
	--		top_pkgVer  -  	The package version description of the top level package
18644
	*/
18645
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
18646
	AS
18647
		pkgId		NUMBER;
18648
		issCnt		NUMBER := 0;
18649
		pkgCheck	NUMBER := 0;
18650
		depCheck	NUMBER := 0;
18651
 
18652
		dpkgName	VARCHAR(50);
18653
		dpkgVersion	VARCHAR(50);
18654
 
18655
		CURSOR dep_packs_cur IS
18656
			SELECT
18657
				DPV_ID
18658
			FROM
18659
				PACKAGE_DEPENDENCIES
18660
			WHERE
18661
				PV_ID = pvID;
18662
 
18663
	BEGIN
18664
 
18665
		-- check to see if the package has been processed previously
18666
		SELECT
18667
			COUNT(*)
18668
		INTO
18669
			pkgCheck
18670
		FROM
18671
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18672
		WHERE
18673
			DPV_ID = pvID;
18674
 
18675
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
18676
 
18677
		-- Package not already processed (no cyclic dependency) - process it
18678
		IF ( pkgCheck = 0 ) THEN
18679
 
18680
			-- check to see if this package version has any issues assigned to it
18681
			SELECT
18682
				COUNT(*)
18683
			INTO
18684
				issCnt
18685
			FROM
18686
				CQ_ISSUES i
18687
			WHERE
18688
				i.PV_ID = pvID;
18689
 
18690
			dbms_output.put_line('issCnt: ' || issCnt );
18691
 
18692
			-- Always enter a marker row into the table even if there are no issues for the package.
18693
			-- This allows us to pick up any cyclic dependencies.
18694
			IF ( issCnt > 0 ) THEN
18695
				-- get issues and insert into RM_PACKAGE_ISSUES
18696
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18697
 
18698
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18699
					SELECT DISTINCT
18700
						top_pkgID		AS PKG_ID,
18701
						top_pkgName		AS PKG_NAME,
18702
						top_pvID		AS PV_ID,
18703
						top_pkgVer		AS PKG_VERSION,
18704
						pv.PV_ID		AS DPV_ID,
18705
						p.PKG_NAME		AS DPKG_NAME,
18706
						pv.PKG_VERSION	AS DPKG_VERSION,
18707
						ci.ISS_DB,
18708
						ci.ISS_ID
18709
					FROM
18710
						PACKAGE_VERSIONS pv
18711
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18712
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
18713
					WHERE
18714
						pv.PV_ID = pvID;
18715
 
18716
			ELSE
18717
				-- get the dpkg details - there will always be a row returned here
18718
				SELECT
18719
					p.PKG_NAME
18720
				INTO
18721
					dpkgName
18722
				FROM
18723
					PACKAGE_VERSIONS pv
18724
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18725
				WHERE
18726
	   				 pv.PV_ID = pvID;
18727
 
18728
				SELECT
18729
					pv.PKG_VERSION
18730
				INTO
18731
					dpkgVersion
18732
				FROM
18733
					PACKAGE_VERSIONS pv
18734
				WHERE
18735
	   				 pv.PV_ID = pvID;
18736
 
18737
				-- enter a marker row
18738
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18739
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18740
				VALUES (
18741
					top_pkgID,
18742
					top_pkgName,
18743
					top_pvID,
18744
					top_pkgVer,
18745
					pvID,
18746
					dpkgName,
18747
					dpkgVersion,
18748
					NULL,
18749
					NULL );
18750
 
18751
			END IF;
18752
 
18753
			-- If this package version has dependencies then recurse
18754
			SELECT
18755
				COUNT(*)
18756
			INTO
18757
				depCheck
18758
			FROM
18759
				PACKAGE_DEPENDENCIES
18760
			WHERE
18761
				PV_ID = pvID;
18762
 
18763
			IF ( depCheck > 0 ) THEN
18764
				-- get dependencies and call this function recursively for each one
18765
				FOR dep_rec IN  dep_packs_cur
18766
				LOOP
18767
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
18768
				END LOOP;
18769
 
18770
			END IF;
18771
 
18772
		END IF;
18773
 
18774
	/*EXCEPTION
18775
		WHEN OTHERS THEN
18776
			no exception handling required
18777
	*/
18778
	END;
18779
 
18780
END Rm_Issues;
18781
/
18782
 
53 mhunt 18783
CREATE OR REPLACE PACKAGE BODY                   "PK_PLANNED" IS
51 mhunt 18784
 
18785
/*
18786
------------------------------
53 mhunt 18787
||  Last Modified:  G.Huddy
18788
||  Modified Date:  28/May/2008
18789
||  Body Version:   1.1
51 mhunt 18790
------------------------------
18791
*/
18792
 
18793
 
18794
/*-------------------------------------------------------------------------------------------------------*/
18795
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18796
 
18797
	oldPvId NUMBER;
18798
	ReleaseLocation VARCHAR2(4000);
18799
	IsPatch CHAR(1) := NULL;
18800
	sLocation VARCHAR2(4000) := NULL;
18801
	nRtagIdLocation NUMBER;
18802
 
18803
 
53 mhunt 18804
 
51 mhunt 18805
BEGIN
18806
	/*--------------- Business Rules Here -------------------*/
18807
	/*-------------------------------------------------------*/
18808
 
18809
	BEGIN
18810
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
18811
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
18812
		  FROM PLANNED pl,
53 mhunt 18813
			   RELEASE_TAGS rt,
51 mhunt 18814
			   PROJECTS proj
18815
		 WHERE pl.PV_ID = newPvId
18816
		   AND pl.RTAG_ID = rt.RTAG_ID
18817
		   AND rt.OFFICIAL != 'Y'
18818
		   AND rt.PROJ_ID = proj.PROJ_ID;
18819
 
18820
		EXCEPTION
53 mhunt 18821
			WHEN NO_DATA_FOUND THEN
18822
				sLocation := NULL;
18823
	END;
51 mhunt 18824
 
18825
 
18826
 
18827
	IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
18828
 
18829
		-- Add to "Pending" area
53 mhunt 18830
		INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
18831
		VALUES( RtagId, newPvId, ViewId, 'R' );
51 mhunt 18832
 
18833
 
53 mhunt 18834
		/* LOG ACTION */
51 mhunt 18835
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18836
		  FROM PROJECTS proj,
53 mhunt 18837
			   RELEASE_TAGS rt
51 mhunt 18838
		 WHERE rt.PROJ_ID = proj.PROJ_ID
18839
		   AND rt.RTAG_ID = RtagId;
18840
 
18841
		Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
53 mhunt 18842
 
51 mhunt 18843
	ELSE
18844
 
53 mhunt 18845
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
18846
 
51 mhunt 18847
	END IF;
18848
 
18849
END;
18850
/*-------------------------------------------------------------------------------------------------------*/
18851
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18852
 
18853
	ReleaseLocation VARCHAR2(4000);
18854
 
18855
BEGIN
18856
 
18857
	/*--------------- Business Rules Here -------------------*/
18858
	/*-------------------------------------------------------*/
18859
 
18860
 
18861
	-- Get release location for logging pusposes
18862
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18863
	  FROM PROJECTS proj,
53 mhunt 18864
		   RELEASE_TAGS rt
51 mhunt 18865
	 WHERE rt.PROJ_ID = proj.PROJ_ID
18866
	   AND rt.RTAG_ID = RtagId;
18867
 
18868
 
18869
	-- Delete from Work In Progress
18870
	DELETE
18871
	  FROM PLANNED pl
18872
	 WHERE pl.RTAG_ID = RtagId
18873
	   AND pl.PV_ID = PvId;
18874
 
18875
	Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
18876
 
18877
 
18878
 
18879
 
18880
END;
18881
/*-------------------------------------------------------------------------------------------------------*/
18882
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
18883
 
18884
	ReturnValue NUMBER;
18885
 
18886
BEGIN
18887
	SELECT pl.VIEW_ID INTO ReturnValue
18888
	  FROM PLANNED pl
18889
	 WHERE pl.RTAG_ID = RtagId
18890
	   AND pl.PV_ID = PvId;
18891
 
18892
	RETURN ReturnValue;
18893
END;
18894
/*-------------------------------------------------------------------------------------------------------*/
18895
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
18896
 
18897
	IsBaseView CHAR(1);
53 mhunt 18898
 
51 mhunt 18899
BEGIN
18900
 
18901
	-- Check if the view is BASE VIEW
18902
	SELECT vi.BASE_VIEW INTO IsBaseView
18903
	  FROM VIEWS vi
18904
	 WHERE vi.VIEW_ID = ViewId;
18905
 
53 mhunt 18906
 
18907
	IF (IsBaseView = 'Y') THEN
51 mhunt 18908
		-- Get Base view content
18909
		OPEN RecordSet FOR
18910
		SELECT 0 AS PKG_STATE,
18911
			   NULL AS DEPRECATED_STATE,
53 mhunt 18912
			   pv.pv_id,
18913
			   pkg.pkg_name,
18914
			   pv.pkg_version,
18915
			   pv.dlocked,
51 mhunt 18916
			   pv.pv_description,
53 mhunt 18917
			   pv.BUILD_TYPE,
18918
			   rel.operation
51 mhunt 18919
		  FROM PLANNED rel,
53 mhunt 18920
			   packages pkg,
18921
			   package_versions pv
51 mhunt 18922
		 WHERE pv.pkg_id = pkg.pkg_id
18923
		   AND rel.pv_id = pv.pv_id
18924
		   AND rel.VIEW_ID = ViewId
18925
		   AND rel.RTAG_ID = RtagId
18926
		 ORDER BY UPPER(pkg.PKG_NAME);
18927
 
53 mhunt 18928
	ELSE
18929
 
18930
		-- Get non base view content
51 mhunt 18931
		OPEN RecordSet FOR
18932
		SELECT 0 AS PKG_STATE,
18933
			   NULL AS DEPRECATED_STATE,
53 mhunt 18934
			   pv.pv_id,
18935
			   pkg.pkg_name,
18936
			   pv.pkg_version,
18937
			   pv.dlocked,
51 mhunt 18938
			   pv.pv_description,
53 mhunt 18939
			   pv.BUILD_TYPE,
18940
			   rel.operation
51 mhunt 18941
		  FROM PLANNED rel,
53 mhunt 18942
			   packages pkg,
18943
			   package_versions pv,
51 mhunt 18944
			   VIEW_DEF vd
18945
		 WHERE pv.pkg_id = pkg.pkg_id
18946
		   AND rel.pv_id = pv.pv_id
18947
		   AND rel.RTAG_ID = RtagId
18948
		   AND vd.VIEW_ID = ViewId
18949
		   AND vd.PKG_ID = pv.PKG_ID
18950
		 ORDER BY UPPER(pkg.PKG_NAME);
18951
 
53 mhunt 18952
	END IF;
18953
 
18954
 
51 mhunt 18955
END;
18956
/*-------------------------------------------------------------------------------------------------------*/
18957
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
53 mhunt 18958
 
51 mhunt 18959
BEGIN
53 mhunt 18960
 
51 mhunt 18961
	UPDATE PLANNED pl SET
18962
	pl.VIEW_ID = NewViewId
18963
	WHERE pl.PV_ID = PvId
18964
	  AND pl.RTAG_ID = RtagId;
53 mhunt 18965
 
51 mhunt 18966
END;
18967
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 18968
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
18969
-- version of a package as part of a release-to-release merge operation carried out within release manager.
18970
 
18971
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
18972
 
18973
	ReleaseLocation VARCHAR2(4000);
18974
 
18975
BEGIN
18976
	/*--------------- Business Rules Here -------------------*/
18977
	/*-------------------------------------------------------*/
18978
 
18979
 
18980
	-- Add to "Pending" area
18981
	INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
18982
	VALUES( RtagId, newPvId, ViewId, mergeOperation );
18983
 
18984
 
18985
	/* LOG ACTION */
18986
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18987
	  FROM PROJECTS proj,
18988
		   RELEASE_TAGS rt
18989
	 WHERE rt.PROJ_ID = proj.PROJ_ID
18990
	   AND rt.RTAG_ID = RtagId;
18991
 
18992
	Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
18993
 
18994
END;
18995
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 18996
END PK_PLANNED;
18997
/
18998
 
18999
CREATE OR REPLACE PACKAGE BODY  pk_rmapi
19000
IS
19001
/*
19002
------------------------------
19003
||  Last Modified:  Jeremy Tweddle
19004
||  Modified Date:  08/Feb/2008
19005
||  Body Version:   3.3
19006
------------------------------
19007
*/
19008
 
19009
   /*-------------------------------------------------------------------------------------------------------*/
19010
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
19011
      RETURN typecur
19012
   IS
19013
      npvid     NUMBER  := 0;
19014
      RECORDS   typecur;
19015
   BEGIN
19016
      BEGIN
19017
         -- Get PV_ID --
19018
         SELECT pv.pv_id
19019
           INTO npvid
19020
           FROM PACKAGES pkg, package_versions pv
19021
          WHERE pv.pkg_id = pkg.pkg_id
19022
            AND pkg.pkg_name = pkgname
19023
            AND pv.pkg_version = pkgversion;
19024
      EXCEPTION
19025
         WHEN NO_DATA_FOUND
19026
         THEN
19027
            raise_application_error (-20000, 'Package Not Found!');
19028
            --WHEN OTHERS THEN
19029
                  -- Consider logging the error and then re-raise
19030
            RAISE;
19031
      END;
19032
 
19033
      -- Finally get package dependencies --
19034
      OPEN RECORDS FOR
19035
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
19036
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
19037
          WHERE dep.pv_id = npvid
19038
            AND dpv.pkg_id = dpkg.pkg_id
19039
            AND dpv.pv_id = dep.dpv_id;
19040
 
19041
      RETURN RECORDS;
19042
   END;
19043
 
19044
/*-------------------------------------------------------------------------------------------------------*/
19045
   FUNCTION wip_iteration_package (
19046
      projname        VARCHAR2,
19047
      iterationname   VARCHAR2,
19048
      pkgname         VARCHAR2
19049
   )
19050
      RETURN typecur
19051
   IS
19052
      nrtagid   NUMBER  := 0;
19053
      RECORDS   typecur;
19054
   BEGIN
19055
      BEGIN
19056
         -- Get latest rtag_id --
19057
         SELECT rt.rtag_id
19058
           INTO nrtagid
19059
           FROM projects proj, release_tags rt
19060
          WHERE rt.proj_id = proj.proj_id
19061
            AND UPPER (proj.proj_name) = UPPER (projname)
19062
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
19063
 
19064
         IF (nrtagid IS NULL)
19065
         THEN
19066
            raise_application_error (-20000,
19067
                                     'Work In Progress is Not Found!');
19068
         END IF;
19069
      EXCEPTION
19070
         WHEN NO_DATA_FOUND
19071
         THEN
19072
            raise_application_error (-20000,
19073
                                     'Work In Progress is Not Found!');
19074
            RAISE;
19075
      END;
19076
 
19077
      -- Finally get package dependencies --
19078
      OPEN RECORDS FOR
19079
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
19080
                pv.src_path
19081
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
19082
          WHERE pv.pkg_id = pkg.pkg_id
19083
            AND wip.pv_id = pv.pv_id
19084
            AND wip.rtag_id = nrtagid
19085
            AND pkg.pkg_name = pkgname;
19086
 
19087
      RETURN RECORDS;
19088
   END;
19089
 
19090
/*-------------------------------------------------------------------------------------------------------*/
19091
   FUNCTION auto_make_release (
19092
      rtagid                   IN   NUMBER,
19093
      pkgname                  IN   VARCHAR2,
19094
      vext                     IN   VARCHAR2,
19095
      newpkgversion            IN   VARCHAR2,
19096
      label                    IN   VARCHAR2,
19097
      dependenciesimportlist   IN   VARCHAR2,
19098
      isrippled                IN   NUMBER,
19099
      username                 IN   VARCHAR2
19100
   )
19101
      RETURN NUMBER
19102
   IS
19103
      pkgid                           NUMBER;
19104
      pvid                            NUMBER                        := 0;
19105
      userid                          NUMBER;
19106
      dlocked                         VARCHAR2 (20)                 := NULL;
19107
      clonefrompvid                   NUMBER;
19108
      ssv_mm                          package_versions.v_mm%TYPE;
19109
      ssv_nmm                         package_versions.v_nmm%TYPE;
19110
      ssv_ext                         package_versions.v_ext%TYPE;
19111
      return_package_not_found        NUMBER                        := -1;
19112
      return_package_already_exists   NUMBER                        := -2;
19113
      return_not_approved             NUMBER                        := -3;
19114
   BEGIN
19115
      /*--------------- Business Rules Here -------------------*/
19116
      IF (rtagid IS NULL)
19117
      THEN
19118
         raise_application_error (-20000, 'RtagId must be supplied.');
19119
      END IF;
19120
 
19121
      IF (pkgname IS NULL)
19122
      THEN
19123
         raise_application_error (-20000, 'PkgName must be supplied.');
19124
      END IF;
19125
 
19126
      IF (newpkgversion IS NULL)
19127
      THEN
19128
         raise_application_error (-20000, 'PkgVersion must be supplied.');
19129
      END IF;
19130
 
19131
      IF (label IS NULL)
19132
      THEN
19133
         raise_application_error (-20000, 'Label must be supplied.');
19134
      END IF;
19135
 
19136
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
19137
      THEN
19138
         raise_application_error
19139
            (-20000,
19140
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
19141
            );
19142
      END IF;
19143
 
19144
      IF (username IS NULL)
19145
      THEN
19146
         raise_application_error (-20000, 'UserName must be supplied.');
19147
      END IF;
19148
 
19149
      -- Get user_id
19150
      BEGIN
19151
         SELECT usr.user_id
19152
           INTO userid
19153
           FROM users usr
19154
          WHERE UPPER (usr.user_name) = UPPER (username)
19155
            AND usr.is_disabled IS NULL;
19156
      EXCEPTION
19157
         WHEN NO_DATA_FOUND
19158
         THEN
19159
            raise_application_error (-20000,
19160
                                        'UserName '
19161
                                     || username
19162
                                     || ' is not valid or disabled.'
19163
                                    );
19164
      END;
19165
 
19166
/*-------------------------------------------------------*/
19167
 
19168
      -- Create package if necessary
19169
      IF isrippled = 1
19170
      THEN
19171
         /* Ripple Build */
19172
         BEGIN
19173
            -- Make sure that package does not exist
19174
            SELECT pv.pv_id
19175
              INTO pvid
19176
              FROM package_versions pv, PACKAGES pkg
19177
             WHERE pv.pkg_id = pkg.pkg_id
19178
               AND pkg.pkg_name = pkgname
19179
               AND pv.pkg_version = newpkgversion;
19180
         EXCEPTION
19181
            WHEN NO_DATA_FOUND
19182
            THEN
19183
               pvid := 0;
19184
         END;
19185
 
19186
         IF (pvid = 0)
19187
         THEN
19188
            -- Split current version in parts
19189
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19190
 
19191
            BEGIN
19192
               -- Find package to be replaced with thie ripple package
19193
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19194
               THEN
19195
                  SELECT pv.pv_id
19196
                    INTO clonefrompvid
19197
                    FROM PACKAGES pkg, package_versions pv,
19198
                         release_content rc
19199
                   WHERE rc.pv_id = pv.pv_id
19200
                     AND pv.pkg_id = pkg.pkg_id
19201
                     AND rc.rtag_id = rtagid
19202
                     AND pkg.pkg_name = pkgname
19203
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
19204
               ELSE
19205
                  SELECT pv.pv_id
19206
                    INTO clonefrompvid
19207
                    FROM PACKAGES pkg, package_versions pv,
19208
                         release_content rc
19209
                   WHERE rc.pv_id = pv.pv_id
19210
                     AND pv.pkg_id = pkg.pkg_id
19211
                     AND rc.rtag_id = rtagid
19212
                     AND pkg.pkg_name = pkgname
19213
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19214
               END IF;
19215
            EXCEPTION
19216
               WHEN NO_DATA_FOUND
19217
               THEN
19218
                  raise_application_error
19219
                                        (-20000,
19220
                                            'Cannot get CloneFromPvId. VExt='
19221
                                         || vext
19222
                                         || ', RtagId='
19223
                                         || rtagid
19224
                                         || ', PkgName='
19225
                                         || pkgname
19226
                                         || ', SSV_EXT='
19227
                                         || ssv_ext
19228
                                        );
19229
            END;
19230
 
19231
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19232
            THEN
19233
               -- Create package
19234
               seed_package_names_versions (pkgname,
19235
                                            newpkgversion,
19236
                                            userid,
19237
                                            pvid,
19238
                                            clonefrompvid
19239
                                           );
19240
            ELSE
19241
               -- Create package
19242
               seed_package_names_versions2 (pkgname,
19243
                                             newpkgversion,
19244
                                             userid,
19245
                                             pvid,
19246
                                             clonefrompvid
19247
                                            );
19248
            END IF;
19249
 
19250
            -- Update Package reason for release
19251
            UPDATE package_versions pv
19252
               SET pv.comments = 'Rippled Build.',
19253
                   pv.build_type = 'Y'
19254
             WHERE pv.pv_id = pvid;
19255
         ELSE
19256
            -- Package already exists, hence cannot be used for ripple build
19257
            RETURN return_package_already_exists;
19258
         END IF;
19259
      ELSE
19260
         /* Auto build from Pending area */
19261
 
19262
         -- Find package in pending area
19263
         BEGIN
19264
            SELECT pv.pv_id, pv.dlocked
19265
              INTO pvid, dlocked
19266
              FROM planned pl, package_versions pv, PACKAGES pkg
19267
             WHERE pl.pv_id = pv.pv_id
19268
               AND pv.pkg_id = pkg.pkg_id
19269
               AND pl.rtag_id = rtagid
19270
               AND pkg.pkg_name = pkgname
19271
               AND pv.dlocked = 'A'
19272
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19273
         EXCEPTION
19274
            WHEN NO_DATA_FOUND
19275
            THEN
19276
               pvid := 0;
19277
         END;
19278
 
19279
         IF (pvid = 0)
19280
         THEN
19281
            -- Package does not exist in pending area, hence report it
19282
            RETURN return_package_not_found;
19283
         ELSIF (dlocked != 'A')
19284
         THEN
19285
            -- Package is not approved for autobuild
19286
            RETURN return_not_approved;
19287
         END IF;
19288
      END IF;
19289
 
19290
      BEGIN
19291
         -- Import Dependencies
19292
         import_dependencies (pvid, dependenciesimportlist, userid);
19293
      END;
19294
 
19295
      BEGIN
19296
         -- Split current version in parts
19297
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19298
 
19299
         -- Update Package Details
19300
         UPDATE package_versions pv
19301
            SET pv.pkg_version = newpkgversion,
19302
                pv.v_ext = ssv_ext,
19303
                pv.v_mm = ssv_mm,
19304
                pv.v_nmm = ssv_nmm,
19305
                pv.pkg_label = label
19306
          WHERE pv.pv_id = pvid;
19307
      EXCEPTION
19308
         WHEN DUP_VAL_ON_INDEX
19309
         THEN
19310
            -- Package already exists, hence cannot be used for ripple build
19311
            RETURN return_package_already_exists;
19312
      END;
19313
 
19314
      -- Update the is_autobuildable
19315
      UPDATE package_versions
19316
         SET is_autobuildable = 'Y'
19317
       WHERE pv_id = pvid;
19318
 
19319
      -- Now release package
19320
      pk_environment.auto_make_release (pvid,
19321
                                        rtagid,
19322
                                        userid,
19323
                                        vext,
19324
                                        ssv_ext,
19325
                                        clonefrompvid
19326
                                       );
19327
 
19328
      --Now clean the PLANNED_VERSIONS table
19329
      SELECT pkg_id
19330
        INTO pkgid
19331
        FROM PACKAGES
19332
       WHERE pkg_name = pkgname;
19333
 
19334
      DELETE FROM planned_versions
19335
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
19336
 
19337
      RETURN pvid;
19338
   END;
19339
 
19340
/*-------------------------------------------------------------------------------------------------------*/
19341
   PROCEDURE import_dependencies (
19342
      pvid                     IN   NUMBER,
19343
      dependenciesimportlist   IN   VARCHAR2,
19344
      userid                   IN   NUMBER
19345
   )
19346
   IS
19347
/*
19348
|| DependenciesImportList Format:
19349
|| "pkgA","1.0.0";"pkgB","2.0.0";
19350
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
19351
*/
19352
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
19353
         INDEX BY VARCHAR2 (4000);
19354
 
19355
      seperator         VARCHAR2 (2)           := '||';
19356
      pkgname           VARCHAR2 (4000);
19357
      pkgversion        VARCHAR2 (4000);
19358
      buildtype         VARCHAR2 (50);
19359
      pkgid             NUMBER;
19360
      vext              VARCHAR2 (4000);
19361
      dpvid             NUMBER;
19362
      slist             VARCHAR2 (4000);
19363
      cbuildtypes       tdictionary;
19364
      dependencyrow     NUMBER;
19365
      sdependency       VARCHAR2 (4000);
19366
      first_pos         VARCHAR2 (4000);
19367
      second_pos        VARCHAR2 (4000);
19368
      third_pos         VARCHAR2 (4000);
19369
      forth_pos         VARCHAR2 (4000);
19370
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19371
 
19372
      CURSOR curbuildtype
19373
      IS
19374
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
19375
                dep.build_type
19376
           FROM package_dependencies dep, package_versions dpv
19377
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
19378
 
19379
      recbuildtype      curbuildtype%ROWTYPE;
19380
   BEGIN
19381
      slist := dependenciesimportlist;
19382
 
19383
      -- Preformat String
19384
      IF NOT slist IS NULL
19385
      THEN
19386
         slist := REPLACE (slist, ' ');                      -- Remove spaces
19387
         slist := REPLACE (slist, UTL_TCP.crlf);
19388
         -- Remove new line and carriage-return characters
19389
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
19390
      END IF;
19391
 
19392
      -- Get Current Dependencies
19393
      OPEN curbuildtype;
19394
 
19395
      FETCH curbuildtype
19396
       INTO recbuildtype;
19397
 
19398
      WHILE curbuildtype%FOUND
19399
      LOOP
19400
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
19401
 
19402
         FETCH curbuildtype
19403
          INTO recbuildtype;
19404
      END LOOP;
19405
 
19406
      CLOSE curbuildtype;
19407
 
19408
      -- Separate dependencies with ; separator
19409
      citemcollection := in_list_varchar2 (slist, ';');
19410
 
19411
      BEGIN
19412
         -- Remove old dependencies
19413
         DELETE FROM package_dependencies dep
19414
               WHERE dep.pv_id = pvid;
19415
 
19416
         -- Loop through dependencies
19417
         FOR dependencyrow IN 1 .. citemcollection.COUNT
19418
         LOOP
19419
            -- Extract pkg_name and pkg_version
19420
            sdependency := citemcollection (dependencyrow);
19421
            first_pos := INSTR (sdependency, '"', 1, 1);
19422
            second_pos := INSTR (sdependency, '"', 1, 2);
19423
            third_pos := INSTR (sdependency, '"', 1, 3);
19424
            forth_pos := INSTR (sdependency, '"', 1, 4);
19425
            pkgname :=
19426
               SUBSTR (sdependency,
19427
                       (first_pos + 1),
19428
                       (second_pos - first_pos - 1)
19429
                      );
19430
            pkgversion :=
19431
               SUBSTR (sdependency,
19432
                       (third_pos + 1),
19433
                       (forth_pos - third_pos - 1)
19434
                      );
19435
 
19436
            -- Dependency must exits to be linked against
19437
            BEGIN
19438
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
19439
                 INTO dpvid, pkgid, vext
19440
                 FROM package_versions pv, PACKAGES pkg
19441
                WHERE pv.pkg_id = pkg.pkg_id
19442
                  AND pkg.pkg_name = pkgname
19443
                  AND pv.pkg_version = pkgversion;
19444
            EXCEPTION
19445
               WHEN NO_DATA_FOUND
19446
               THEN
19447
                  raise_application_error
19448
                                  (-20000,
19449
                                      'Dependency ['
19450
                                   || pkgname
19451
                                   || ' '
19452
                                   || pkgversion
19453
                                   || '] does not exist yet and cannot be used!'
19454
                                  );
19455
            END;
19456
 
19457
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
19458
            BEGIN
19459
               buildtype := cbuildtypes (pkgid || seperator || vext);
19460
 
19461
               IF buildtype IS NULL
19462
               THEN
19463
                  -- Set build type to LinkPackageArchive by default
19464
                  buildtype := 'L';
19465
               END IF;
19466
            EXCEPTION
19467
               WHEN NO_DATA_FOUND
19468
               THEN
19469
                  buildtype := 'L';
19470
            END;
19471
 
19472
            -- Insert Dependencies
19473
            update_package_dependency (pvid,
19474
                                       pkgname,
19475
                                       pkgversion,
19476
                                       buildtype,
19477
                                       userid,
19478
 
19479
                                      );
19480
         END LOOP;
19481
      END;
19482
   END;
19483
 
19484
/*-------------------------------------------------------------------------------------------------------*/
19485
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
19486
      RETURN VARCHAR2
19487
   IS
19488
      pkgversion   VARCHAR2 (4000);
19489
   BEGIN
19490
      BEGIN
19491
         SELECT pv.pkg_version
19492
           INTO pkgversion
19493
           FROM PACKAGES pkg, release_content rc, package_versions pv
19494
          WHERE pv.pv_id = rc.pv_id
19495
            AND pkg.pkg_id = pv.pkg_id
19496
            AND pkg.pkg_name = pkgname
19497
            AND rc.rtag_id = rtagid;
19498
 
19499
         RETURN pkgversion;
19500
      END;
19501
   END;
19502
 
19503
/*-------------------------------------------------------------------------------------------------------*/
19504
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
19505
      RETURN VARCHAR2
19506
   IS
19507
      pkgversion   VARCHAR2 (4000);
19508
   BEGIN
19509
      BEGIN
19510
         SELECT pv.pkg_version
19511
           INTO pkgversion
19512
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
19513
          WHERE pv.pv_id = wip.pv_id
19514
            AND pkg.pkg_id = pv.pkg_id
19515
            AND pkg.pkg_name = pkgname
19516
            AND wip.rtag_id = rtagid;
19517
 
19518
         IF pkgversion IS NULL
19519
         THEN
19520
            SELECT pv.pkg_version
19521
              INTO pkgversion
19522
              FROM PACKAGES pkg, planned pl, package_versions pv
19523
             WHERE pv.pv_id = pl.pv_id
19524
               AND pkg.pkg_id = pv.pkg_id
19525
               AND pkg.pkg_name = pkgname
19526
               AND pl.rtag_id = rtagid;
19527
         END IF;
19528
 
19529
         RETURN pkgversion;
19530
      END;
19531
   END;
19532
 
19533
/*-------------------------------------------------------------------------------------------------------*/
19534
   PROCEDURE update_dash_board (rtagid IN NUMBER)
19535
   IS
19536
      projid       NUMBER;
19537
      projiddb     NUMBER;
19538
      total        NUMBER;
19539
      auto_total   NUMBER;
19540
      rtagiddb     NUMBER;
19541
   BEGIN
19542
      SELECT COUNT (*)
19543
        INTO total
19544
        FROM release_content rc, package_versions pv
19545
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
19546
 
19547
      SELECT COUNT (*)
19548
        INTO auto_total
19549
        FROM release_content rc, package_versions pv
19550
       WHERE pv.pv_id = rc.pv_id
19551
         AND pv.is_autobuildable = 'Y'
19552
         AND rc.rtag_id = rtagid;
19553
 
19554
      BEGIN
19555
         SELECT rtag_id
19556
           INTO rtagiddb
19557
           FROM dash_board
19558
          WHERE rtag_id = rtagid;
19559
 
19560
         SELECT proj_id
19561
           INTO projiddb
19562
           FROM dash_board
19563
          WHERE rtag_id = rtagid;
19564
      EXCEPTION
19565
         WHEN NO_DATA_FOUND
19566
         THEN
19567
            rtagiddb := '';
19568
      END;
19569
 
19570
      IF rtagiddb IS NULL
19571
      THEN
19572
         SELECT proj_id
19573
           INTO projid
19574
           FROM release_tags
19575
          WHERE rtag_id = rtagid;
19576
 
19577
         INSERT INTO dash_board
19578
                     (proj_id, rtag_id, last_build_time, automated_packages,
19579
                      total_packages
19580
                     )
19581
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
19582
                      total
19583
                     );
19584
      ELSE
19585
         UPDATE dash_board
19586
            SET last_build_time = ora_sysdatetime,
19587
                automated_packages = auto_total,
19588
                total_packages = total
19589
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
19590
      END IF;
19591
   END;
19592
 
19593
/*-------------------------------------------------------------------------------------------------------*/
19594
   FUNCTION exclude_from_build (
19595
      pvid          IN   NUMBER,
19596
      spkgversion   IN   VARCHAR2,
19597
      rtagid        IN   NUMBER,
19598
      username      IN   VARCHAR2
19599
   )
19600
      RETURN NUMBER
19601
   IS
19602
      userid              NUMBER;
19603
      outerrcode          NUMBER;
19604
      pkgid               NUMBER;
19605
 
19606
      CURSOR dnr_duplicate_cur
19607
      IS
19608
         SELECT *
19609
           FROM do_not_ripple
19610
          WHERE pv_id = pvid AND rtag_id = rtagid;
19611
 
19612
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19613
   BEGIN
19614
      outerrcode := -1;       -- Set default return error code to ERROR state
19615
 
19616
      /*--------------- Business Rules Here -------------------*/
19617
      IF (rtagid IS NULL)
19618
      THEN
19619
         RETURN outerrcode;
19620
--         raise_application_error (-20000, 'RtagId must be supplied.');
19621
      END IF;
19622
 
19623
      IF (pvid IS NULL)
19624
      THEN
19625
         RETURN outerrcode;
19626
--         raise_application_error (-20000, 'PvId must be supplied.');
19627
      END IF;
19628
 
19629
      IF (username IS NULL)
19630
      THEN
19631
         RETURN outerrcode;
19632
--         raise_application_error (-20000, 'UserName must be supplied.');
19633
      END IF;
19634
 
19635
      -- Get user_id
19636
      BEGIN
19637
         SELECT usr.user_id
19638
           INTO userid
19639
           FROM users usr
19640
          WHERE UPPER (usr.user_name) = UPPER (username)
19641
            AND usr.is_disabled IS NULL;
19642
      EXCEPTION
19643
         WHEN NO_DATA_FOUND
19644
         THEN
19645
            RETURN outerrcode;
19646
--            raise_application_error (-20000,
19647
--                                        'UserName '
19648
--                                     || username
19649
--                                     || ' is not valid or disabled.'
19650
--                                    );
19651
      END;
19652
 
19653
      OPEN dnr_duplicate_cur;
19654
 
19655
      FETCH dnr_duplicate_cur
19656
       INTO dnr_duplicate_rec;
19657
 
19658
      IF dnr_duplicate_cur%FOUND
19659
      THEN
19660
         outerrcode := 0;
19661
      END IF;
19662
 
19663
      IF dnr_duplicate_cur%NOTFOUND
19664
      THEN
19665
         /* No duplicate recordset */
19666
         unripple_package (pvid, rtagid, userid);
19667
         outerrcode := 0;                            -- Set return to SUCCESS
19668
      END IF;
19669
 
19670
      CLOSE dnr_duplicate_cur;
19671
 
19672
      SELECT pkg_id
19673
        INTO pkgid
19674
        FROM package_versions
19675
       WHERE pv_id = pvid;
19676
 
19677
      DELETE FROM planned_versions
19678
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19679
 
19680
      RETURN outerrcode;
19681
   END;
19682
 
19683
/*-------------------------------------------------------------------------------------------------------*/
19684
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
19685
   IS
19686
   BEGIN
19687
      INSERT INTO abt_action_log
19688
                  (rcon_id, action_datetime, action
19689
                  )
19690
           VALUES (rconid, ora_sysdatetime, action
19691
                  );
19692
   END;
19693
 
19694
/*-------------------------------------------------------------------------------------------------------*/
19695
   FUNCTION insert_package_metrics (
19696
      rtagid                   IN   NUMBER,
19697
      pkgname                  IN   VARCHAR2,
19698
      vext                     IN   VARCHAR2,
19699
      metricstring             IN   VARCHAR2
19700
   )
19701
      RETURN NUMBER
19702
   IS
19703
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19704
      pvid                     NUMBER                 := 0;
19705
      rownumber                NUMBER;
19706
      rowcontent               VARCHAR2(4000);
19707
      metricname               VARCHAR2(1000);
19708
      metricvalue              VARCHAR2(4000);
19709
      return_insert_error      NUMBER                 := -1;
19710
      return_insert_success    NUMBER                 := 0;
19711
 
19712
      /* Metrics */
19713
      branches                 NUMBER;
19714
      branchlist               VARCHAR2(4000);
19715
      codefiles                NUMBER;
19716
      ignoredfiles             NUMBER;
19717
      directories              NUMBER;
19718
      directorydepth           NUMBER;
19719
      totalfiles               NUMBER;
19720
      makefiles                NUMBER;
19721
      blanklines               NUMBER;
19722
      codelines                NUMBER;
19723
      commentlines             NUMBER;
19724
 
19725
   BEGIN
19726
      /*--------------- Business Rules Here -------------------*/
19727
      IF (rtagid IS NULL)
19728
      THEN
19729
         RETURN return_insert_error;
19730
      END IF;
19731
 
19732
      IF (pkgname IS NULL)
19733
      THEN
19734
         RETURN return_insert_error;
19735
      END IF;
19736
 
19737
      IF (metricstring IS NULL)
19738
      THEN
19739
         RETURN return_insert_error;
19740
      END IF;
19741
 
19742
      BEGIN
19743
         SELECT pv.pv_id
19744
           INTO pvid
19745
           FROM package_versions pv, packages pkg, release_content rc
19746
          WHERE pv.pkg_id = pkg.pkg_id
19747
            AND rc.rtag_id = rtagid
19748
            AND pv.pv_id = rc.pv_id
19749
            AND pkg.pkg_name = pkgname
19750
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19751
      EXCEPTION
19752
           WHEN NO_DATA_FOUND
19753
           THEN
19754
                pvid := 0;
19755
      END;
19756
 
19757
      citemcollection := in_list_varchar2 (metricstring, ';');
19758
 
19759
      FOR rownumber IN 1 .. citemcollection.COUNT
19760
      LOOP
19761
         rowcontent := citemcollection(rownumber);
19762
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
19763
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
19764
 
19765
         IF    metricname = 'ccbranch.count' THEN branches := metricvalue;
19766
         ELSIF metricname = 'ccbranch.list' THEN branchlist := metricvalue;
19767
         ELSIF metricname = 'code.files' THEN codefiles := metricvalue;
19768
         ELSIF metricname = 'code.ignored' THEN ignoredfiles := metricvalue;
19769
         ELSIF metricname = 'count.dir' THEN directories := metricvalue;
19770
         ELSIF metricname = 'count.dirdepth' THEN directorydepth := metricvalue;
19771
         ELSIF metricname = 'count.file' THEN totalfiles := metricvalue;
19772
         ELSIF metricname = 'count.makefile' THEN makefiles := metricvalue;
19773
         ELSIF metricname = 'lines.blank' THEN blanklines := metricvalue;
19774
         ELSIF metricname = 'lines.code' THEN codelines := metricvalue;
19775
         ELSIF metricname = 'lines.comment' THEN commentlines := metricvalue;
19776
         END IF;
19777
      END LOOP;
19778
 
19779
      IF (pvid > 0)
19780
      THEN
19781
         -- Delete any existing entries for this package version to makes sure our data is untainted
19782
         DELETE FROM package_metrics pm
19783
         WHERE pm.pv_id = pvid;
19784
 
19785
         -- Insert the new data into the metrics table
19786
         INSERT INTO package_metrics
19787
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
19788
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
19789
                     )
19790
              VALUES (pvid, branches, branchlist, codefiles, ignoredfiles, directories, directorydepth,
19791
                      totalfiles, makefiles, blanklines, codelines, commentlines, ora_sysdatetime
19792
                     );
19793
 
19794
         -- Now update the Release_Metrics Table
19795
         update_release_metrics(rtagid);
19796
 
19797
         RETURN return_insert_success;
19798
      ELSE
19799
         RETURN return_insert_error;
19800
      END IF;
19801
   END;
19802
 
19803
/*-------------------------------------------------------------------------------------------------------*/
19804
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
19805
   IS
19806
      totalpackages       NUMBER;
19807
      autobuilt           NUMBER;
19808
      linesofcode         NUMBER;
19809
      unittested          NUMBER;
19810
      autotested          NUMBER;
19811
      numOfbranches       NUMBER;
19812
      lastbuildtime       DATE;
19813
   BEGIN
19814
      IF (rtagid > 0)
19815
      THEN
19816
         -- Get the total number of packages in this release and the number of
19817
         -- those that are autobuilt
19818
         SELECT COUNT (DISTINCT rc.pv_id),
19819
                COUNT (DISTINCT autobuilt_qry.pv_id)
19820
           INTO totalpackages, autobuilt
19821
           FROM release_content rc,
19822
                package_versions pv,
19823
                (
19824
                 SELECT rc.pv_id
19825
                   FROM release_content rc,
19826
                        package_versions pv
19827
                  WHERE pv.is_autobuildable = 'Y'
19828
                    AND pv.pv_id = rc.pv_id
19829
                    AND rc.rtag_id = rtagid
19830
                ) autobuilt_qry
19831
          WHERE pv.pv_id = rc.pv_id
19832
            AND rc.rtag_id = rtagid
19833
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
19834
 
19835
         -- Get the build time of the last package built in this release and the
19836
         -- total number of lines of code
19837
         SELECT MAX(pm.created_stamp),
19838
                SUM(pm.code_lines)
19839
           INTO lastbuildtime, linesofcode
19840
           FROM package_metrics pm, release_content rc
19841
          WHERE pm.pv_id = rc.pv_id
19842
            AND rc.rtag_id = rtagid;
19843
 
19844
         -- Get the number of packages with unit tests in this release and the
19845
         -- number of those that are autotested
19846
         SELECT COUNT(DISTINCT ut.pv_id),
19847
                COUNT(DISTINCT autotest_qry.pv_id)
19848
           INTO unittested, autotested
19849
           FROM unit_tests ut,
19850
                release_content rc,
19851
                (
19852
                 SELECT ut.pv_id
19853
                   FROM unit_tests ut, release_content rc
19854
                  WHERE ut.pv_id = rc.pv_id
19855
                    AND rc.rtag_id = rtagid
19856
                    AND ut.test_types_fk = 7
19857
                ) autotest_qry
19858
          WHERE ut.pv_id = rc.pv_id
19859
            AND rc.rtag_id = rtagid
19860
            AND autotest_qry.pv_id (+) = ut.pv_id;
19861
 
19862
         -- Count the number of unique branches in the packages in this release.
19863
--         SELECT COUNT(DISTINCT branch) INTO numOfbranches
19864
--           FROM (
19865
--                SELECT pv_id,
19866
--                       regexp_substr(str, '[^,]+', 1, level) branch,
19867
--                       level lv,
19868
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
19869
--                  FROM (
19870
--                       SELECT pm.pv_id,
19871
--                              ','||pm.branch_list str
19872
--                         FROM package_metrics pm,
19873
--                              release_content rc
19874
--                        WHERE pm.pv_id = rc.pv_id
19875
--                          AND rc.rtag_id = rtagid
19876
--                       )
19877
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
19878
--                )
19879
--          WHERE lv != lg;
19880
 
19881
         UPDATE release_metrics rm
19882
            SET rm.total_packages = totalpackages,
19883
                rm.autobuilt = autobuilt,
19884
                rm.lines_of_code = linesofcode,
19885
                rm.unit_tested = unittested,
19886
                rm.autotested = autotested,
19887
--                rm.branches = numOfbranches,
19888
                rm.last_build_time = lastbuildtime
19889
          WHERE rtag_id = rtagid;
19890
 
19891
         IF (SQL%ROWCOUNT = 0)
19892
         THEN
19893
            INSERT INTO release_metrics
19894
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
19895
                         autotested, last_build_time
19896
                        )
19897
                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
19898
                         autotested, lastbuildtime
19899
                        );
19900
         END IF;
19901
--         IF (SQL%ROWCOUNT = 0)
19902
--         THEN
19903
--            INSERT INTO release_metrics
19904
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
19905
--                         autotested, branches, last_build_time
19906
--                        )
19907
--                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
19908
--                         autotested, numOfbranches, lastbuildtime
19909
--                        );
19910
--         END IF;
19911
--      ELSE
19912
--         raise_application_error (-20000, 'RtagId must be supplied.');
19913
      END IF;
19914
   END;
19915
/*-------------------------------------------------------------------------------------------------------*/
19916
END pk_rmapi;
19917
/
19918
 
19919
CREATE OR REPLACE PACKAGE BODY pk_environment_test
19920
IS
19921
/*
19922
------------------------------
19923
||  Last Modified:  Rupesh Solanki
19924
||  Modified Date:  29/Jan/2007
19925
||  Body Version:   1.1
19926
------------------------------
19927
*/
19928
 
19929
   /*-------------------------------------------------------------------------------------------------------*/
19930
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
19931
      RETURN NUMBER
19932
   IS
19933
   BEGIN
19934
       /*
19935
      || N - unlocked
19936
      || Y - release and locked
19937
      || P - penging approval
19938
      || A - approved package ready for auto-build
19939
      */
19940
      IF cdlock = 'N' OR cdlock = 'R'
19941
      THEN
19942
         -- WORK IN PROGRESS --
19943
         RETURN 0;
19944
      ELSIF cdlock = 'P' OR cdlock = 'A'
19945
      THEN
19946
         -- PENDING --
19947
         RETURN 1;
19948
      ELSIF cdlock = 'Y'
19949
      THEN
19950
         -- RELEASED --
19951
         RETURN 2;
19952
      ELSE
19953
         -- NOT FOUND --
19954
         raise_application_error
19955
                         (-20000,
19956
                             'Cannot decide where to place package. [cDlock='
19957
                          || cdlock
19958
                          || ']'
19959
                         );
19960
      END IF;
19961
   END;
19962
 
19963
/*-------------------------------------------------------------------------------------------------------*/
19964
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
19965
      RETURN NUMBER
19966
   IS
19967
      envtab    NUMBER            := -1;
19968
 
19969
      CURSOR curarea
19970
      IS
19971
         SELECT 2 AS envtab
19972
           FROM release_content rc
19973
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
19974
         UNION
19975
         SELECT 0 AS envtab
19976
           FROM work_in_progress wip
19977
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
19978
         UNION
19979
         SELECT 1 AS envtab
19980
           FROM planned pl
19981
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
19982
 
19983
      recarea   curarea%ROWTYPE;
19984
   BEGIN
19985
      OPEN curarea;
19986
 
19987
      FETCH curarea
19988
       INTO recarea;
19989
 
19990
      IF curarea%FOUND
19991
      THEN
19992
         envtab := recarea.envtab;
19993
      END IF;
19994
 
19995
      CLOSE curarea;
19996
 
19997
      RETURN envtab;
19998
   END;
19999
 
20000
/*-------------------------------------------------------------------------------------------------------*/
20001
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
20002
      RETURN NUMBER
20003
   IS
20004
      ispatch   package_versions.dlocked%TYPE;
20005
      viewid    NUMBER                          := -1;
20006
 
20007
      CURSOR curview
20008
      IS
20009
         SELECT rc.base_view_id AS view_id
20010
           FROM release_content rc
20011
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20012
         UNION
20013
         SELECT wip.view_id AS view_id
20014
           FROM work_in_progress wip
20015
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20016
         UNION
20017
         SELECT pl.view_id AS view_id
20018
           FROM planned pl
20019
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20020
 
20021
      recview   curview%ROWTYPE;
20022
   BEGIN
20023
      -- Get dlock state
20024
      SELECT pv.is_patch
20025
        INTO ispatch
20026
        FROM package_versions pv
20027
       WHERE pv.pv_id = pvid;
20028
 
20029
      -- Decide which view id should package go under.
20030
      IF (ispatch != 'Y') OR (ispatch IS NULL)
20031
      THEN
20032
         -- Get VIEW ID of Package
20033
         OPEN curview;
20034
 
20035
         FETCH curview
20036
          INTO recview;
20037
 
20038
         IF curview%FOUND
20039
         THEN
20040
            viewid := recview.view_id;
20041
         ELSE
20042
            raise_application_error
20043
               (-20000,
20044
                   'Cannot find view_id to proceed. [PvId='
20045
                || pvid
20046
                || ']. The current version may not exist in the release anymore.'
20047
               );
20048
         END IF;
20049
 
20050
         CLOSE curview;
20051
      ELSE
20052
         -- Get VIEW ID of Patch (view id of parent package)
20053
         SELECT rc.base_view_id
20054
           INTO viewid
20055
           FROM release_content rc, package_patches ppv
20056
          WHERE rc.rtag_id = rtagid
20057
            AND rc.pv_id = ppv.pv_id
20058
            AND ppv.patch_id = pvid;
20059
      END IF;
20060
 
20061
      RETURN viewid;
20062
   END;
20063
 
20064
/*-------------------------------------------------------------------------------------------------------*/
20065
   PROCEDURE add_package (
20066
      pvid     IN   NUMBER,
20067
      viewid   IN   NUMBER,
20068
      rtagid   IN   NUMBER,
20069
      userid   IN   NUMBER
20070
   )
20071
   IS
20072
      dlocked   package_versions.dlocked%TYPE;
20073
      envtab    NUMBER;
20074
   BEGIN
20075
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
20076
      THEN
20077
         -- Get dlock state
20078
         SELECT pv.dlocked
20079
           INTO dlocked
20080
           FROM package_versions pv
20081
          WHERE pv.pv_id = pvid;
20082
 
20083
         -- Get which area should go under
20084
         envtab := select_environment_area (dlocked);
20085
         -- Log
20086
         log_action (pvid, 'action', userid, 'Start of Package Add...');
20087
 
20088
         -- Remove Package
20089
         IF envtab = 0
20090
         THEN
20091
            -- WORK IN PROGRESS --
20092
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
20093
         ELSIF envtab = 1
20094
         THEN
20095
            -- PENDING --
20096
            pk_planned.add_package (pvid, viewid, rtagid, userid);
20097
         ELSIF envtab = 2
20098
         THEN
20099
            -- RELEASED --
20100
            -- NOTE: this package will be replaced with matching package
20101
            pk_release.add_package (pvid, viewid, rtagid, userid);
20102
            -- Now do post Release Actions
20103
            pk_release.run_post_actions (pvid, rtagid);
20104
         END IF;
20105
 
20106
         -- Log
20107
         log_action (pvid, 'action', userid, 'End of Package Add...');
20108
      END IF;
20109
   END;
20110
 
20111
/*-------------------------------------------------------------------------------------------------------*/
20112
   PROCEDURE add_package_bulk (
20113
      pvidlist   IN   VARCHAR2,
20114
      viewid     IN   NUMBER,
20115
      rtagid     IN   NUMBER,
20116
      userid     IN   NUMBER
20117
   )
20118
   IS
20119
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
20120
                                                                          ();
20121
      dlocked        package_versions.dlocked%TYPE;
20122
      pvid           NUMBER;
20123
      envtab         NUMBER;
20124
   BEGIN
20125
      /*--------------- Business Rules Here -------------------*/
20126
      IF (pvidlist IS NULL)
20127
      THEN
20128
         raise_application_error (-20000,
20129
                                  'Please select at least one package.'
20130
                                 );
20131
      END IF;
20132
 
20133
/*-------------------------------------------------------*/
20134
      nidcollector := in_list_number (pvidlist);
20135
 
20136
      FOR i IN 1 .. nidcollector.COUNT
20137
      LOOP
20138
         pvid := nidcollector (i);
20139
         add_package (pvid, viewid, rtagid, userid);
20140
      END LOOP;
20141
   END;
20142
 
20143
/*-------------------------------------------------------------------------------------------------------*/
20144
   PROCEDURE replace_package (
20145
      newpvid   IN   NUMBER,
20146
      oldpvid   IN   NUMBER,
20147
      rtagid    IN   NUMBER,
20148
      userid    IN   NUMBER
20149
   )
20150
   IS
20151
      dlocked        package_versions.dlocked%TYPE;
20152
      viewid         NUMBER;
20153
      envtab         NUMBER;
20154
      ROWCOUNT       NUMBER;
20155
      creleasemode   CHAR (1);
20156
      npkgid         NUMBER;
20157
   BEGIN
20158
      /*--------------- Business Rules Here -------------------*/
20159
      -- Check if oldPvId exists. It could have been removed
20160
      SELECT COUNT (pv.pv_id)
20161
        INTO ROWCOUNT
20162
        FROM package_versions pv
20163
       WHERE pv.pv_id = oldpvid;
20164
 
20165
/*-------------------------------------------------------*/
20166
 
20167
      /* This procedure is usually used by "History" option in Release Manager */
20168
 
20169
      -- Get dlock state
20170
      SELECT pv.dlocked
20171
        INTO dlocked
20172
        FROM package_versions pv
20173
       WHERE pv.pv_id = newpvid;
20174
 
20175
      -- Get VIEW_ID ---
20176
      IF ROWCOUNT = 1
20177
      THEN
20178
         viewid := get_view_location (oldpvid, rtagid);
20179
      ELSE
20180
         -- Set ViewID to default
20181
         viewid := 7;
20182
      END IF;
20183
 
20184
      -- Get which area should go under
20185
      envtab := select_environment_area (dlocked);
20186
      -- Log
20187
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
20188
 
20189
      -- Replace package
20190
      IF envtab = 0
20191
      THEN
20192
         -- WORK IN PROGRESS --
20193
 
20194
         -- Delete old package
20195
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
20196
         -- Add new package
20197
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
20198
      ELSIF envtab = 1
20199
      THEN
20200
         -- PENDING --
20201
 
20202
         -- Delete old package
20203
         pk_planned.remove_package (oldpvid, rtagid, userid);
20204
         -- Add new package
20205
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
20206
      ELSIF envtab = 2
20207
      THEN
20208
         -- RELEASED --
20209
 
20210
         -- Delete old package
20211
         pk_release.remove_package (oldpvid, rtagid, userid);
20212
         -- Add new package
20213
         pk_release.add_package (newpvid, viewid, rtagid, userid);
20214
         -- Now do post Release Actions
20215
         pk_release.run_post_actions (newpvid, rtagid);
20216
      END IF;
20217
 
20218
      -- Log
20219
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
20220
   END;
20221
 
20222
/*-------------------------------------------------------------------------------------------------------*/
20223
   FUNCTION remove_package (
20224
      pvid          IN   NUMBER,
20225
      rtagid        IN   NUMBER,
20226
      userid        IN   NUMBER,
20227
      forceremove   IN   CHAR
20228
   )
20229
      RETURN NUMBER
20230
   IS
20231
      envtab        NUMBER;
20232
      isused        BOOLEAN;
20233
      recordcount   NUMBER;
20234
   BEGIN
20235
/*--------------- Business Rules Here -------------------*/
20236
/*-------------------------------------------------------*/
20237
 
20238
      -- Find location of package
20239
      envtab := get_package_area (pvid, rtagid);
20240
 
20241
      -- Remove Package
20242
      IF envtab = 0
20243
      THEN
20244
         -- WORK IN PROGRESS --
20245
         -- Delete package
20246
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
20247
         RETURN 0;
20248
      ELSIF envtab = 1
20249
      THEN
20250
         -- PENDING --
20251
         -- Delete package
20252
         pk_planned.remove_package (pvid, rtagid, userid);
20253
         RETURN 0;
20254
      ELSIF envtab = 2
20255
      THEN
20256
         -- RELEASED --
20257
 
20258
         -- Check if is used by other packages
20259
         isused := TRUE;
20260
 
20261
         IF forceremove = 'N'
20262
         THEN
20263
            SELECT COUNT (pv.pv_id)
20264
              INTO recordcount
20265
              FROM (SELECT dpv.pkg_id, dpv.v_ext
20266
                      FROM release_content rc,
20267
                           package_dependencies dep,
20268
                           package_versions dpv
20269
                     WHERE rc.rtag_id = rtagid
20270
                       AND rc.pv_id = dep.pv_id
20271
                       AND dep.dpv_id = dpv.pv_id) rdep,
20272
                   package_versions pv
20273
             WHERE pv.pkg_id = rdep.pkg_id
20274
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
20275
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
20276
               AND pv.pv_id = pvid;
20277
 
20278
            IF recordcount > 0
20279
            THEN
20280
               RETURN 1;                    -- Return 1 as package being used
20281
            ELSE
20282
               isused := FALSE;
20283
            END IF;
20284
         END IF;
20285
 
20286
         IF forceremove = 'Y' OR NOT isused
20287
         THEN
20288
            -- Delete old package
20289
            pk_release.remove_package (pvid, rtagid, userid);
20290
            -- Now do post Release Actions
20291
            pk_release.run_post_actions (pvid, rtagid);
20292
            RETURN 0;
20293
         END IF;
20294
      END IF;
20295
   END;
20296
 
20297
/*-------------------------------------------------------------------------------------------------------*/
20298
   PROCEDURE get_environment_items (
20299
      viewtype           IN       NUMBER,
20300
      userid             IN       NUMBER,
20301
      rtagid             IN       NUMBER,
20302
      sviewidshowlist    IN       VARCHAR2,
20303
      ntruerecordcount   OUT      NUMBER,
20304
      recordset          OUT      typecur
20305
   )
20306
   IS
20307
   BEGIN
20308
      -- Get true record count because views can give false count
20309
      SELECT COUNT (pl.pv_id)
20310
        INTO ntruerecordcount
20311
        FROM environment_view pl
20312
       WHERE pl.rtag_id = rtagid;
20313
 
20314
      IF viewtype = 1
20315
      THEN
20316
         /*--- GUEST VIEW ---*/
20317
         OPEN recordset FOR
20318
            SELECT   *
20319
                FROM (
20320
                      /* Base Views collapsed */
20321
                      SELECT DISTINCT vi.view_id, vi.view_name,
20322
                                      TO_NUMBER (NULL) AS pkg_state,
20323
                                      TO_NUMBER (NULL) AS deprecated_state,
20324
                                      TO_NUMBER (NULL) AS pv_id,
20325
                                      NULL AS pkg_name, NULL AS pkg_version,
20326
                                      NULL AS dlocked, NULL AS pv_description
20327
                                 FROM environment_view rel, views vi
20328
                                WHERE rel.view_id = vi.view_id
20329
                                  AND rtag_id = rtagid
20330
                                  AND rel.view_id NOT IN (
20331
                                         SELECT *
20332
                                           FROM THE
20333
                                                   (SELECT CAST
20334
                                                              (in_list_number
20335
                                                                  (sviewidshowlist
20336
                                                                  ) AS relmgr_number_tab_t
20337
                                                              )
20338
                                                      FROM DUAL
20339
                                                   ))
20340
                      UNION
20341
                      /* Base Views expanded */
20342
                      SELECT vi.view_id, vi.view_name,
20343
                             DECODE (rel.pkg_state,
20344
                                     NULL, 0,
20345
                                     rel.pkg_state
20346
                                    ) AS pkg_state,
20347
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20348
                             pv.pkg_version, pv.dlocked, pv.pv_description
20349
                        FROM environment_view rel,
20350
                             PACKAGES pkg,
20351
                             package_versions pv,
20352
                             views vi
20353
                       WHERE pv.pkg_id = pkg.pkg_id
20354
                         AND rel.pv_id = pv.pv_id
20355
                         AND rel.view_id = vi.view_id
20356
                         AND rel.view_id IN (
20357
                                SELECT *
20358
                                  FROM THE
20359
                                          (SELECT CAST
20360
                                                     (in_list_number
20361
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20362
                                                     )
20363
                                             FROM DUAL
20364
                                          ))
20365
                         AND rtag_id = rtagid) ord
20366
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20367
      ELSIF viewtype = 2
20368
      THEN
20369
         /*--- PERSONAL VIEW ---*/
20370
         OPEN recordset FOR
20371
            SELECT   *
20372
                FROM (
20373
                      /* Base Views collapsed */
20374
                      SELECT DISTINCT vi.view_id, vi.view_name,
20375
                                      TO_NUMBER (NULL) AS pkg_state,
20376
                                      TO_NUMBER (NULL) AS deprecated_state,
20377
                                      TO_NUMBER (NULL) AS pv_id,
20378
                                      NULL AS pkg_name, NULL AS pkg_version,
20379
                                      NULL AS dlocked, NULL AS pv_description
20380
                                 FROM environment_view rel,
20381
                                      view_settings vs,
20382
                                      views vi
20383
                                WHERE rel.view_id = vi.view_id
20384
                                  AND vs.view_id = rel.view_id
20385
                                  AND vs.user_id = userid
20386
                                  AND rtag_id = rtagid
20387
                                  AND rel.view_id NOT IN (
20388
                                         SELECT *
20389
                                           FROM THE
20390
                                                   (SELECT CAST
20391
                                                              (in_list_number
20392
                                                                  (sviewidshowlist
20393
                                                                  ) AS relmgr_number_tab_t
20394
                                                              )
20395
                                                      FROM DUAL
20396
                                                   ))
20397
                      UNION
20398
                      /* Base Views expanded */
20399
                      SELECT vi.view_id, vi.view_name,
20400
                             DECODE (rel.pkg_state,
20401
                                     NULL, 0,
20402
                                     rel.pkg_state
20403
                                    ) AS pkg_state,
20404
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20405
                             pv.pkg_version, pv.dlocked, pv.pv_description
20406
                        FROM environment_view rel,
20407
                             PACKAGES pkg,
20408
                             package_versions pv,
20409
                             views vi,
20410
                             view_settings vs
20411
                       WHERE pv.pkg_id = pkg.pkg_id
20412
                         AND rel.pv_id = pv.pv_id
20413
                         AND rel.view_id = vi.view_id
20414
                         AND vs.view_id = vi.view_id
20415
                         AND vs.user_id = userid
20416
                         AND rel.view_id IN (
20417
                                SELECT *
20418
                                  FROM THE
20419
                                          (SELECT CAST
20420
                                                     (in_list_number
20421
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20422
                                                     )
20423
                                             FROM DUAL
20424
                                          ))
20425
                         AND rtag_id = rtagid
20426
                      UNION
20427
                      /* Private Views collapsed */
20428
                      SELECT vi.view_id, vi.view_name,
20429
                             TO_NUMBER (NULL) AS pkg_state,
20430
                             TO_NUMBER (NULL) AS deprecated_state,
20431
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20432
                             NULL AS pkg_version, NULL AS dlocked,
20433
                             NULL AS pv_description
20434
                        FROM view_settings vs,
20435
                             view_def vd,
20436
                             views vi,
20437
                             environment_view rel,
20438
                             package_versions pv
20439
                       WHERE vs.view_id = vi.view_id
20440
                         AND rel.pv_id = pv.pv_id
20441
                         AND vd.pkg_id = pv.pkg_id
20442
                         AND vd.view_id = vi.view_id
20443
                         AND vi.base_view = 'N'
20444
                         AND rel.rtag_id = rtagid
20445
                         AND vs.user_id = userid
20446
                         AND vi.view_id NOT IN (
20447
                                SELECT *
20448
                                  FROM THE
20449
                                          (SELECT CAST
20450
                                                     (in_list_number
20451
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20452
                                                     )
20453
                                             FROM DUAL
20454
                                          ))
20455
                      UNION
20456
                      /* Private Views expanded */
20457
                      SELECT vi.view_id, vi.view_name,
20458
                             DECODE (rel.pkg_state,
20459
                                     NULL, 0,
20460
                                     rel.pkg_state
20461
                                    ) AS pkg_state,
20462
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20463
                             pv.pkg_version, pv.dlocked, pv.pv_description
20464
                        FROM users usr,
20465
                             view_settings vs,
20466
                             view_def vd,
20467
                             views vi,
20468
                             environment_view rel,
20469
                             PACKAGES pkg,
20470
                             package_versions pv
20471
                       WHERE vs.user_id = usr.user_id
20472
                         AND vs.view_id = vi.view_id
20473
                         AND vd.view_id = vi.view_id
20474
                         AND pv.pkg_id = pkg.pkg_id
20475
                         AND rel.pv_id = pv.pv_id
20476
                         AND rel.rtag_id = rtagid
20477
                         AND vd.pkg_id = pkg.pkg_id
20478
                         AND vi.base_view = 'N'
20479
                         AND vi.view_id IN (
20480
                                SELECT *
20481
                                  FROM THE
20482
                                          (SELECT CAST
20483
                                                     (in_list_number
20484
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20485
                                                     )
20486
                                             FROM DUAL
20487
                                          ))
20488
                         AND usr.user_id = userid) ord
20489
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20490
      END IF;
20491
   END;
20492
 
20493
/*-------------------------------------------------------------------------------------------------------*/
20494
   PROCEDURE get_released_items (
20495
      viewtype           IN       NUMBER,
20496
      userid             IN       NUMBER,
20497
      rtagid             IN       NUMBER,
20498
      sviewidshowlist    IN       VARCHAR2,
20499
      ntruerecordcount   OUT      NUMBER,
20500
      recordset          OUT      typecur
20501
   )
20502
   IS
20503
   BEGIN
20504
      -- Get true record count because views can give false count
20505
      SELECT COUNT (rc.pv_id)
20506
        INTO ntruerecordcount
20507
        FROM release_content rc
20508
       WHERE rc.rtag_id = rtagid;
20509
 
20510
      IF viewtype = 1
20511
      THEN
20512
         /*--- GUEST VIEW ---*/
20513
         OPEN recordset FOR
20514
            SELECT   *
20515
                FROM (
20516
                      /* Base Views collapsed */
20517
                      SELECT DISTINCT vi.view_id, vi.view_name,
20518
                                      TO_NUMBER (NULL) AS pkg_state,
20519
                                      TO_NUMBER (NULL) AS deprecated_state,
20520
                                      TO_NUMBER (NULL) AS pv_id,
20521
                                      NULL AS pkg_name, NULL AS pkg_version,
20522
                                      NULL AS dlocked, NULL AS pv_description
20523
                                 FROM release_content rel, views vi
20524
                                WHERE rel.base_view_id = vi.view_id
20525
                                  AND rtag_id = rtagid
20526
                                  AND rel.base_view_id NOT IN (
20527
                                         SELECT *
20528
                                           FROM THE
20529
                                                   (SELECT CAST
20530
                                                              (in_list_number
20531
                                                                  (sviewidshowlist
20532
                                                                  ) AS relmgr_number_tab_t
20533
                                                              )
20534
                                                      FROM DUAL
20535
                                                   ))
20536
                      UNION
20537
                      /* Base Views expanded */
20538
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20539
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20540
                             pv.pkg_version, pv.dlocked, pv.pv_description
20541
                        FROM release_content rel,
20542
                             PACKAGES pkg,
20543
                             package_versions pv,
20544
                             views vi
20545
                       WHERE pv.pkg_id = pkg.pkg_id
20546
                         AND rel.pv_id = pv.pv_id
20547
                         AND rel.base_view_id = vi.view_id
20548
                         AND rel.base_view_id IN (
20549
                                SELECT *
20550
                                  FROM THE
20551
                                          (SELECT CAST
20552
                                                     (in_list_number
20553
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20554
                                                     )
20555
                                             FROM DUAL
20556
                                          ))
20557
                         AND rtag_id = rtagid) ord
20558
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20559
      ELSIF viewtype = 2
20560
      THEN
20561
         /*--- PERSONAL VIEW ---*/
20562
         OPEN recordset FOR
20563
            SELECT   *
20564
                FROM (
20565
                      /* Base Views collapsed */
20566
                      SELECT DISTINCT vi.view_id, vi.view_name,
20567
                                      TO_NUMBER (NULL) AS pkg_state,
20568
                                      TO_NUMBER (NULL) AS deprecated_state,
20569
                                      TO_NUMBER (NULL) AS pv_id,
20570
                                      NULL AS pkg_name, NULL AS pkg_version,
20571
                                      NULL AS dlocked, NULL AS pv_description
20572
                                 FROM release_content rel,
20573
                                      view_settings vs,
20574
                                      views vi
20575
                                WHERE rel.base_view_id = vi.view_id
20576
                                  AND vs.view_id = rel.base_view_id
20577
                                  AND vs.user_id = userid
20578
                                  AND rtag_id = rtagid
20579
                                  AND rel.base_view_id NOT IN (
20580
                                         SELECT *
20581
                                           FROM THE
20582
                                                   (SELECT CAST
20583
                                                              (in_list_number
20584
                                                                  (sviewidshowlist
20585
                                                                  ) AS relmgr_number_tab_t
20586
                                                              )
20587
                                                      FROM DUAL
20588
                                                   ))
20589
                      UNION
20590
                      /* Base Views expanded */
20591
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20592
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20593
                             pv.pkg_version, pv.dlocked, pv.pv_description
20594
                        FROM release_content rel,
20595
                             PACKAGES pkg,
20596
                             package_versions pv,
20597
                             views vi,
20598
                             view_settings vs
20599
                       WHERE pv.pkg_id = pkg.pkg_id
20600
                         AND rel.pv_id = pv.pv_id
20601
                         AND rel.base_view_id = vi.view_id
20602
                         AND vs.view_id = vi.view_id
20603
                         AND vs.user_id = userid
20604
                         AND rel.base_view_id IN (
20605
                                SELECT *
20606
                                  FROM THE
20607
                                          (SELECT CAST
20608
                                                     (in_list_number
20609
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20610
                                                     )
20611
                                             FROM DUAL
20612
                                          ))
20613
                         AND rtag_id = rtagid
20614
                      UNION
20615
                      /* Private Views collapsed */
20616
                      SELECT vi.view_id, vi.view_name,
20617
                             TO_NUMBER (NULL) AS pkg_state,
20618
                             TO_NUMBER (NULL) AS deprecated_state,
20619
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20620
                             NULL AS pkg_version, NULL AS dlocked,
20621
                             NULL AS pv_description
20622
                        FROM view_settings vs,
20623
                             view_def vd,
20624
                             views vi,
20625
                             release_content rel,
20626
                             package_versions pv
20627
                       WHERE vs.view_id = vi.view_id
20628
                         AND rel.pv_id = pv.pv_id
20629
                         AND vd.pkg_id = pv.pkg_id
20630
                         AND vd.view_id = vi.view_id
20631
                         AND vi.base_view = 'N'
20632
                         AND rel.rtag_id = rtagid
20633
                         AND vs.user_id = userid
20634
                         AND vi.view_id NOT IN (
20635
                                SELECT *
20636
                                  FROM THE
20637
                                          (SELECT CAST
20638
                                                     (in_list_number
20639
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20640
                                                     )
20641
                                             FROM DUAL
20642
                                          ))
20643
                      UNION
20644
                      /* Private Views expanded */
20645
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20646
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20647
                             pv.pkg_version, pv.dlocked, pv.pv_description
20648
                        FROM users usr,
20649
                             view_settings vs,
20650
                             view_def vd,
20651
                             views vi,
20652
                             release_content rel,
20653
                             PACKAGES pkg,
20654
                             package_versions pv
20655
                       WHERE vs.user_id = usr.user_id
20656
                         AND vs.view_id = vi.view_id
20657
                         AND vd.view_id = vi.view_id
20658
                         AND pv.pkg_id = pkg.pkg_id
20659
                         AND rel.pv_id = pv.pv_id
20660
                         AND rel.rtag_id = rtagid
20661
                         AND vd.pkg_id = pkg.pkg_id
20662
                         AND vi.base_view = 'N'
20663
                         AND vi.view_id IN (
20664
                                SELECT *
20665
                                  FROM THE
20666
                                          (SELECT CAST
20667
                                                     (in_list_number
20668
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20669
                                                     )
20670
                                             FROM DUAL
20671
                                          ))
20672
                         AND usr.user_id = userid) ord
20673
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20674
      END IF;
20675
   END;
20676
 
20677
/*-------------------------------------------------------------------------------------------------------*/
20678
   PROCEDURE get_work_in_progress_items (
20679
      viewtype           IN       NUMBER,
20680
      userid             IN       NUMBER,
20681
      rtagid             IN       NUMBER,
20682
      sviewidshowlist    IN       VARCHAR2,
20683
      ntruerecordcount   OUT      NUMBER,
20684
      recordset          OUT      typecur
20685
   )
20686
   IS
20687
   BEGIN
20688
      -- Get true record count because views can give false count
20689
      SELECT COUNT (wip.pv_id)
20690
        INTO ntruerecordcount
20691
        FROM work_in_progress wip
20692
       WHERE wip.rtag_id = rtagid;
20693
 
20694
      IF viewtype = 1
20695
      THEN
20696
         /*--- GUEST VIEW ---*/
20697
         OPEN recordset FOR
20698
            SELECT   *
20699
                FROM (
20700
                      /* Base Views collapsed */
20701
                      SELECT DISTINCT vi.view_id, vi.view_name,
20702
                                      TO_NUMBER (NULL) AS pkg_state,
20703
                                      TO_NUMBER (NULL) AS deprecated_state,
20704
                                      TO_NUMBER (NULL) AS pv_id,
20705
                                      NULL AS pkg_name, NULL AS pkg_version,
20706
                                      NULL AS dlocked, NULL AS pv_description
20707
                                 FROM work_in_progress rel, views vi
20708
                                WHERE rel.view_id = vi.view_id
20709
                                  AND rtag_id = rtagid
20710
                                  AND rel.view_id NOT IN (
20711
                                         SELECT *
20712
                                           FROM THE
20713
                                                   (SELECT CAST
20714
                                                              (in_list_number
20715
                                                                  (sviewidshowlist
20716
                                                                  ) AS relmgr_number_tab_t
20717
                                                              )
20718
                                                      FROM DUAL
20719
                                                   ))
20720
                      UNION
20721
                      /* Base Views expanded */
20722
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20723
 
20724
                             --rel.pkg_state,
20725
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20726
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20727
                             pv.pv_description
20728
                        FROM work_in_progress rel,
20729
                             PACKAGES pkg,
20730
                             package_versions pv,
20731
                             views vi
20732
                       WHERE pv.pkg_id = pkg.pkg_id
20733
                         AND rel.pv_id = pv.pv_id
20734
                         AND rel.view_id = vi.view_id
20735
                         AND rel.view_id IN (
20736
                                SELECT *
20737
                                  FROM THE
20738
                                          (SELECT CAST
20739
                                                     (in_list_number
20740
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20741
                                                     )
20742
                                             FROM DUAL
20743
                                          ))
20744
                         AND rtag_id = rtagid) ord
20745
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20746
      ELSIF viewtype = 2
20747
      THEN
20748
         /*--- PERSONAL VIEW ---*/
20749
         OPEN recordset FOR
20750
            SELECT   *
20751
                FROM (
20752
                      /* Base Views collapsed */
20753
                      SELECT DISTINCT vi.view_id, vi.view_name,
20754
                                      TO_NUMBER (NULL) AS pkg_state,
20755
                                      TO_NUMBER (NULL) AS deprecated_state,
20756
                                      TO_NUMBER (NULL) AS pv_id,
20757
                                      NULL AS pkg_name, NULL AS pkg_version,
20758
                                      NULL AS dlocked, NULL AS pv_description
20759
                                 FROM work_in_progress rel,
20760
                                      view_settings vs,
20761
                                      views vi
20762
                                WHERE rel.view_id = vi.view_id
20763
                                  AND vs.view_id = rel.view_id
20764
                                  AND vs.user_id = userid
20765
                                  AND rtag_id = rtagid
20766
                                  AND rel.view_id NOT IN (
20767
                                         SELECT *
20768
                                           FROM THE
20769
                                                   (SELECT CAST
20770
                                                              (in_list_number
20771
                                                                  (sviewidshowlist
20772
                                                                  ) AS relmgr_number_tab_t
20773
                                                              )
20774
                                                      FROM DUAL
20775
                                                   ))
20776
                      UNION
20777
                      /* Base Views expanded */
20778
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20779
 
20780
                             --rel.pkg_state,
20781
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20782
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20783
                             pv.pv_description
20784
                        FROM work_in_progress rel,
20785
                             PACKAGES pkg,
20786
                             package_versions pv,
20787
                             views vi,
20788
                             view_settings vs
20789
                       WHERE pv.pkg_id = pkg.pkg_id
20790
                         AND rel.pv_id = pv.pv_id
20791
                         AND rel.view_id = vi.view_id
20792
                         AND vs.view_id = vi.view_id
20793
                         AND vs.user_id = userid
20794
                         AND rel.view_id IN (
20795
                                SELECT *
20796
                                  FROM THE
20797
                                          (SELECT CAST
20798
                                                     (in_list_number
20799
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20800
                                                     )
20801
                                             FROM DUAL
20802
                                          ))
20803
                         AND rtag_id = rtagid
20804
                      UNION
20805
                      /* Private Views collapsed */
20806
                      SELECT vi.view_id, vi.view_name,
20807
                             TO_NUMBER (NULL) AS pkg_state,
20808
                             TO_NUMBER (NULL) AS deprecated_state,
20809
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20810
                             NULL AS pkg_version, NULL AS dlocked,
20811
                             NULL AS pv_description
20812
                        FROM view_settings vs,
20813
                             view_def vd,
20814
                             views vi,
20815
                             work_in_progress rel,
20816
                             package_versions pv
20817
                       WHERE vs.view_id = vi.view_id
20818
                         AND rel.pv_id = pv.pv_id
20819
                         AND vd.pkg_id = pv.pkg_id
20820
                         AND vd.view_id = vi.view_id
20821
                         AND vi.base_view = 'N'
20822
                         AND rel.rtag_id = rtagid
20823
                         AND vs.user_id = userid
20824
                         AND vi.view_id NOT IN (
20825
                                SELECT *
20826
                                  FROM THE
20827
                                          (SELECT CAST
20828
                                                     (in_list_number
20829
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20830
                                                     )
20831
                                             FROM DUAL
20832
                                          ))
20833
                      UNION
20834
                      /* Private Views expanded */
20835
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20836
 
20837
                             --rel.pkg_state,
20838
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20839
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20840
                             pv.pv_description
20841
                        FROM users usr,
20842
                             view_settings vs,
20843
                             view_def vd,
20844
                             views vi,
20845
                             work_in_progress rel,
20846
                             PACKAGES pkg,
20847
                             package_versions pv
20848
                       WHERE vs.user_id = usr.user_id
20849
                         AND vs.view_id = vi.view_id
20850
                         AND vd.view_id = vi.view_id
20851
                         AND pv.pkg_id = pkg.pkg_id
20852
                         AND rel.pv_id = pv.pv_id
20853
                         AND rel.rtag_id = rtagid
20854
                         AND vd.pkg_id = pkg.pkg_id
20855
                         AND vi.base_view = 'N'
20856
                         AND vi.view_id IN (
20857
                                SELECT *
20858
                                  FROM THE
20859
                                          (SELECT CAST
20860
                                                     (in_list_number
20861
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20862
                                                     )
20863
                                             FROM DUAL
20864
                                          ))
20865
                         AND usr.user_id = userid) ord
20866
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20867
      END IF;
20868
   END;
20869
 
20870
/*-------------------------------------------------------------------------------------------------------*/
20871
   PROCEDURE get_pending_items (
20872
      viewtype           IN       NUMBER,
20873
      userid             IN       NUMBER,
20874
      rtagid             IN       NUMBER,
20875
      sviewidshowlist    IN       VARCHAR2,
20876
      ntruerecordcount   OUT      NUMBER,
20877
      recordset          OUT      typecur
20878
   )
20879
   IS
20880
   BEGIN
20881
      -- Get true record count because views can give false count
20882
      SELECT COUNT (pl.pv_id)
20883
        INTO ntruerecordcount
20884
        FROM planned pl
20885
       WHERE pl.rtag_id = rtagid;
20886
 
20887
      IF viewtype = 1
20888
      THEN
20889
         /*--- GUEST VIEW ---*/
20890
         OPEN recordset FOR
20891
            SELECT   *
20892
                FROM (
20893
                      /* Base Views collapsed */
20894
                      SELECT DISTINCT vi.view_id, vi.view_name,
20895
                                      TO_NUMBER (NULL) AS pkg_state,
20896
                                      TO_NUMBER (NULL) AS deprecated_state,
20897
                                      TO_NUMBER (NULL) AS pv_id,
20898
                                      NULL AS pkg_name, NULL AS pkg_version,
20899
                                      NULL AS dlocked, NULL AS pv_description
20900
                                 FROM planned rel, views vi
20901
                                WHERE rel.view_id = vi.view_id
20902
                                  AND rtag_id = rtagid
20903
                                  AND rel.view_id NOT IN (
20904
                                         SELECT *
20905
                                           FROM THE
20906
                                                   (SELECT CAST
20907
                                                              (in_list_number
20908
                                                                  (sviewidshowlist
20909
                                                                  ) AS relmgr_number_tab_t
20910
                                                              )
20911
                                                      FROM DUAL
20912
                                                   ))
20913
                      UNION
20914
                      /* Base Views expanded */
20915
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20916
 
20917
                             --rel.pkg_state,
20918
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20919
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20920
                             pv.pv_description
20921
                        FROM planned rel,
20922
                             PACKAGES pkg,
20923
                             package_versions pv,
20924
                             views vi
20925
                       WHERE pv.pkg_id = pkg.pkg_id
20926
                         AND rel.pv_id = pv.pv_id
20927
                         AND rel.view_id = vi.view_id
20928
                         AND rel.view_id IN (
20929
                                SELECT *
20930
                                  FROM THE
20931
                                          (SELECT CAST
20932
                                                     (in_list_number
20933
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20934
                                                     )
20935
                                             FROM DUAL
20936
                                          ))
20937
                         AND rtag_id = rtagid) ord
20938
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20939
      ELSIF viewtype = 2
20940
      THEN
20941
         /*--- PERSONAL VIEW ---*/
20942
         OPEN recordset FOR
20943
            SELECT   *
20944
                FROM (
20945
                      /* Base Views collapsed */
20946
                      SELECT DISTINCT vi.view_id, vi.view_name,
20947
                                      TO_NUMBER (NULL) AS pkg_state,
20948
                                      TO_NUMBER (NULL) AS deprecated_state,
20949
                                      TO_NUMBER (NULL) AS pv_id,
20950
                                      NULL AS pkg_name, NULL AS pkg_version,
20951
                                      NULL AS dlocked, NULL AS pv_description
20952
                                 FROM planned rel, view_settings vs, views vi
20953
                                WHERE rel.view_id = vi.view_id
20954
                                  AND vs.view_id = rel.view_id
20955
                                  AND vs.user_id = userid
20956
                                  AND rtag_id = rtagid
20957
                                  AND rel.view_id NOT IN (
20958
                                         SELECT *
20959
                                           FROM THE
20960
                                                   (SELECT CAST
20961
                                                              (in_list_number
20962
                                                                  (sviewidshowlist
20963
                                                                  ) AS relmgr_number_tab_t
20964
                                                              )
20965
                                                      FROM DUAL
20966
                                                   ))
20967
                      UNION
20968
                      /* Base Views expanded */
20969
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20970
 
20971
                             --rel.pkg_state,
20972
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20973
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20974
                             pv.pv_description
20975
                        FROM planned rel,
20976
                             PACKAGES pkg,
20977
                             package_versions pv,
20978
                             views vi,
20979
                             view_settings vs
20980
                       WHERE pv.pkg_id = pkg.pkg_id
20981
                         AND rel.pv_id = pv.pv_id
20982
                         AND rel.view_id = vi.view_id
20983
                         AND vs.view_id = vi.view_id
20984
                         AND vs.user_id = userid
20985
                         AND rel.view_id IN (
20986
                                SELECT *
20987
                                  FROM THE
20988
                                          (SELECT CAST
20989
                                                     (in_list_number
20990
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20991
                                                     )
20992
                                             FROM DUAL
20993
                                          ))
20994
                         AND rtag_id = rtagid
20995
                      UNION
20996
                      /* Private Views collapsed */
20997
                      SELECT vi.view_id, vi.view_name,
20998
                             TO_NUMBER (NULL) AS pkg_state,
20999
                             TO_NUMBER (NULL) AS deprecated_state,
21000
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21001
                             NULL AS pkg_version, NULL AS dlocked,
21002
                             NULL AS pv_description
21003
                        FROM view_settings vs,
21004
                             view_def vd,
21005
                             views vi,
21006
                             planned rel,
21007
                             package_versions pv
21008
                       WHERE vs.view_id = vi.view_id
21009
                         AND rel.pv_id = pv.pv_id
21010
                         AND vd.pkg_id = pv.pkg_id
21011
                         AND vd.view_id = vi.view_id
21012
                         AND vi.base_view = 'N'
21013
                         AND rel.rtag_id = rtagid
21014
                         AND vs.user_id = userid
21015
                         AND vi.view_id NOT IN (
21016
                                SELECT *
21017
                                  FROM THE
21018
                                          (SELECT CAST
21019
                                                     (in_list_number
21020
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21021
                                                     )
21022
                                             FROM DUAL
21023
                                          ))
21024
                      UNION
21025
                      /* Private Views expanded */
21026
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21027
 
21028
                             --rel.pkg_state,
21029
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21030
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21031
                             pv.pv_description
21032
                        FROM users usr,
21033
                             view_settings vs,
21034
                             view_def vd,
21035
                             views vi,
21036
                             planned rel,
21037
                             PACKAGES pkg,
21038
                             package_versions pv
21039
                       WHERE vs.user_id = usr.user_id
21040
                         AND vs.view_id = vi.view_id
21041
                         AND vd.view_id = vi.view_id
21042
                         AND pv.pkg_id = pkg.pkg_id
21043
                         AND rel.pv_id = pv.pv_id
21044
                         AND rel.rtag_id = rtagid
21045
                         AND vd.pkg_id = pkg.pkg_id
21046
                         AND vi.base_view = 'N'
21047
                         AND vi.view_id IN (
21048
                                SELECT *
21049
                                  FROM THE
21050
                                          (SELECT CAST
21051
                                                     (in_list_number
21052
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21053
                                                     )
21054
                                             FROM DUAL
21055
                                          ))
21056
                         AND usr.user_id = userid) ord
21057
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21058
      END IF;
21059
   END;
21060
 
21061
/*-------------------------------------------------------------------------------------------------------*/
21062
   PROCEDURE get_view_content (
21063
      rtagid      IN       NUMBER,
21064
      viewid      IN       NUMBER,
21065
      recordset   OUT      typecur
21066
   )
21067
   IS
21068
      isbaseview   CHAR (1);
21069
   BEGIN
21070
      -- Check if the view is BASE VIEW
21071
      SELECT vi.base_view
21072
        INTO isbaseview
21073
        FROM views vi
21074
       WHERE vi.view_id = viewid;
21075
 
21076
      IF (isbaseview = 'Y')
21077
      THEN
21078
         -- Get Base view content
21079
         OPEN recordset FOR
21080
            SELECT   DECODE (rel.pkg_state,
21081
                             NULL, 0,
21082
                             rel.pkg_state
21083
                            ) AS pkg_state,
21084
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21085
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21086
                     pv.build_type
21087
                FROM environment_view rel, PACKAGES pkg, package_versions pv
21088
               WHERE pv.pkg_id = pkg.pkg_id
21089
                 AND rel.pv_id = pv.pv_id
21090
                 AND rel.view_id = viewid
21091
                 AND rel.rtag_id = rtagid
21092
            ORDER BY UPPER (pkg.pkg_name);
21093
      ELSE
21094
         -- Get non base view content
21095
         OPEN recordset FOR
21096
            SELECT   DECODE (rel.pkg_state,
21097
                             NULL, 0,
21098
                             rel.pkg_state
21099
                            ) AS pkg_state,
21100
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21101
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21102
                     pv.build_type
21103
                FROM environment_view rel,
21104
                     PACKAGES pkg,
21105
                     package_versions pv,
21106
                     view_def vd
21107
               WHERE pv.pkg_id = pkg.pkg_id
21108
                 AND rel.pv_id = pv.pv_id
21109
                 AND rel.rtag_id = rtagid
21110
                 AND vd.view_id = viewid
21111
                 AND vd.pkg_id = pv.pkg_id
21112
            ORDER BY UPPER (pkg.pkg_name);
21113
      END IF;
21114
   END;
21115
 
21116
/*-------------------------------------------------------------------------------------------------------*/
21117
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
21118
      RETURN NUMBER
21119
   IS
21120
      envtab             NUMBER;
21121
      returnvalue        NUMBER;
21122
      return_not_found   NUMBER := -1;
21123
   BEGIN
21124
      envtab := get_package_area (pvid, rtagid);
21125
 
21126
      IF envtab = 0
21127
      THEN
21128
         -- WORK IN PROGRESS --
21129
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
21130
      ELSIF envtab = 1
21131
      THEN
21132
         -- PENDING --
21133
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
21134
      ELSIF envtab = 2
21135
      THEN
21136
         -- RELEASED --
21137
         returnvalue := pk_release.get_package_view (pvid, rtagid);
21138
      ELSE
21139
         -- This may be a Patch not located anywhere but unlocked
21140
         returnvalue := return_not_found;
21141
      END IF;
21142
 
21143
      RETURN returnvalue;
21144
   END;
21145
 
21146
/*-------------------------------------------------------------------------------------------------------*/
21147
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21148
   IS
21149
      viewid          NUMBER;
21150
      envtab          NUMBER;
21151
      ispatch         CHAR (1) := NULL;
21152
      buildtype       CHAR (1) := NULL;
21153
      lastversionid   NUMBER;
21154
   BEGIN
21155
      -- Check if package is patch
21156
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21157
        INTO ispatch, buildtype, lastversionid
21158
        FROM package_versions pv
21159
       WHERE pv.pv_id = pvid;
21160
 
21161
      -- Get ViewId
21162
      viewid := get_package_view (pvid, rtagid);
21163
      -- Remove from current area
21164
      envtab := pk_environment.get_package_area (pvid, rtagid);
21165
 
21166
      -- Make sure that package was in work-in-progress or pending before makeing it release
21167
      -- Exclude patches, ripple builds
21168
      IF (envtab < 0)
21169
      THEN
21170
         -- Not found in work-in-progress or pending
21171
         IF (ispatch IS NULL) AND (buildtype = 'M')
21172
         THEN
21173
            raise_application_error (-20000,
21174
                                     'This package cannot be released here.'
21175
                                    );
21176
         END IF;
21177
      END IF;
21178
 
21179
      -- Log
21180
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21181
 
21182
      IF envtab = 0
21183
      THEN
21184
         -- WORK IN PROGRESS --
21185
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21186
      ELSIF envtab = 1
21187
      THEN
21188
         -- PENDING --
21189
         pk_planned.remove_package (pvid, rtagid, userid);
21190
      END IF;
21191
 
21192
      -- Change package state
21193
      pk_package.change_state (pvid, 'Y', userid);
21194
 
21195
      -- Make sure it is valid BASE VIEW
21196
      IF viewid < 1
21197
      THEN
21198
         viewid := 7;                            -- This is default base view
21199
      END IF;
21200
 
21201
      IF (ispatch IS NULL)
21202
      THEN
21203
         -- Add package to new area
21204
         pk_release.add_package (pvid, viewid, rtagid, userid);
21205
      END IF;
21206
 
21207
      -- Now do post Release Actions
21208
      pk_release.run_post_actions (pvid, rtagid);
21209
 
21210
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21211
      DELETE FROM do_not_ripple
21212
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21213
 
21214
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21215
      DELETE FROM advisory_ripple
21216
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21217
 
21218
      -- Log
21219
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21220
   END;
21221
 
21222
/*-------------------------------------------------------------------------------------------------------*/
21223
   PROCEDURE auto_make_release (
21224
      pvid            IN   NUMBER,
21225
      rtagid          IN   NUMBER,
21226
      userid          IN   NUMBER,
21227
      vext            IN   package_versions.v_ext%TYPE,
21228
      ssv_ext         IN   package_versions.v_ext%TYPE,
21229
      clonefrompvid   IN   NUMBER
21230
   )
21231
   IS
21232
      viewid          NUMBER;
21233
      envtab          NUMBER;
21234
      ispatch         CHAR (1) := NULL;
21235
      buildtype       CHAR (1) := NULL;
21236
      lastversionid   NUMBER;
21237
   BEGIN
21238
      -- Check if package is patch
21239
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21240
        INTO ispatch, buildtype, lastversionid
21241
        FROM package_versions pv
21242
       WHERE pv.pv_id = pvid;
21243
 
21244
      IF vext <> ssv_ext
21245
      THEN
21246
         -- Get ViewId
21247
         viewid := get_package_view (clonefrompvid, rtagid);
21248
         -- Remove from current area
21249
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
21250
      ELSE
21251
         -- Get ViewId
21252
         viewid := get_package_view (pvid, rtagid);
21253
         -- Remove from current area
21254
         envtab := pk_environment.get_package_area (pvid, rtagid);
21255
      END IF;
21256
 
21257
      -- Make sure that package was in work-in-progress or pending before makeing it release
21258
      -- Exclude patches, ripple builds
21259
      IF (envtab < 0)
21260
      THEN
21261
         -- Not found in work-in-progress or pending
21262
         IF (ispatch IS NULL) AND (buildtype = 'M')
21263
         THEN
21264
            raise_application_error (-20000,
21265
                                     'This package cannot be released here.'
21266
                                    );
21267
         END IF;
21268
      END IF;
21269
 
21270
      -- Log
21271
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21272
 
21273
      IF vext <> ssv_ext
21274
      THEN
21275
         IF envtab = 0
21276
         THEN
21277
            -- WORK IN PROGRESS --
21278
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
21279
                                                userid);
21280
         ELSIF envtab = 1
21281
         THEN
21282
            -- PENDING --
21283
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
21284
         ELSIF envtab = 2
21285
         THEN
21286
            -- RELEASED --
21287
            pk_release.remove_package (clonefrompvid, rtagid, userid);
21288
         END IF;
21289
      ELSE
21290
         IF envtab = 0
21291
         THEN
21292
            -- WORK IN PROGRESS --
21293
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
21294
         ELSIF envtab = 1
21295
         THEN
21296
            -- PENDING --
21297
            pk_planned.remove_package (pvid, rtagid, userid);
21298
         END IF;
21299
      END IF;
21300
 
21301
      -- Change package state
21302
      pk_package.change_state (pvid, 'Y', userid);
21303
 
21304
      -- Make sure it is valid BASE VIEW
21305
      IF viewid < 1
21306
      THEN
21307
         viewid := 7;                            -- This is default base view
21308
      END IF;
21309
 
21310
      IF (ispatch IS NULL)
21311
      THEN
21312
         -- Add package to new area
21313
         pk_release.add_package (pvid, viewid, rtagid, userid);
21314
      END IF;
21315
 
21316
      -- Now do post Release Actions
21317
      pk_release.run_post_actions (pvid, rtagid);
21318
      -- Now update the Dash_Board Table
21319
      pk_rmapi.update_dash_board (rtagid);
21320
 
21321
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21322
      DELETE FROM do_not_ripple
21323
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21324
 
21325
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21326
      DELETE FROM advisory_ripple
21327
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21328
 
21329
      -- Log
21330
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21331
   END;
21332
 
21333
/*-------------------------------------------------------------------------------------------------------*/
21334
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21335
   IS
21336
      viewid   NUMBER;
21337
      envtab   NUMBER;
21338
   BEGIN
21339
      -- Get ViewId
21340
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
21341
      viewid := get_package_view (pvid, rtagid);
21342
      -- Remove from current area
21343
      envtab := pk_environment.get_package_area (pvid, rtagid);
21344
      -- Log
21345
      log_action (pvid,
21346
                  'action',
21347
                  userid,
21348
                  'Start of Make Package UnRelease...'
21349
                 );
21350
 
21351
      IF envtab = 2
21352
      THEN
21353
         -- RELEASE AREA --
21354
         pk_release.remove_package (pvid, rtagid, userid);
21355
      ELSIF envtab = 1
21356
      THEN
21357
         -- PENDING --
21358
         pk_planned.remove_package (pvid, rtagid, userid);
21359
      END IF;
21360
 
21361
      -- Change package state
21362
      pk_package.change_state (pvid, 'N', userid);
21363
 
21364
      -- Make sure it is valid BASE VIEW
21365
      IF viewid < 1
21366
      THEN
21367
         viewid := 7;                            -- This is default base view
21368
      END IF;
21369
 
21370
      -- Add package to new area
21371
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21372
      -- Now do post Release Actions
21373
      pk_release.run_post_actions (pvid, rtagid);
21374
      -- Log
21375
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
21376
   END;
21377
 
21378
/*-------------------------------------------------------------------------------------------------------*/
21379
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21380
   IS
21381
      viewid      NUMBER;
21382
      ispatch     CHAR (1) := NULL;
21383
      buildtype   CHAR (1) := NULL;
21384
   BEGIN
21385
      -- Check if package is patch
21386
      SELECT pv.is_patch, pv.build_type
21387
        INTO ispatch, buildtype
21388
        FROM package_versions pv
21389
       WHERE pv.pv_id = pvid;
21390
 
21391
      -- Get ViewId
21392
      viewid := get_package_view (pvid, rtagid);
21393
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
21394
 
21395
      -- Log
21396
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
21397
 
21398
      IF (ispatch IS NULL)
21399
      THEN
21400
         -- Remove from current area
21401
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21402
         -- Change package state
21403
         pk_package.change_state (pvid, 'P', userid);
21404
         -- Add package to new area
21405
         pk_planned.add_package (pvid, viewid, rtagid, userid);
21406
      END IF;
21407
 
21408
      -- Log
21409
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
21410
   END;
21411
 
21412
/*-------------------------------------------------------------------------------------------------------*/
21413
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21414
   IS
21415
   BEGIN
21416
      -- Log
21417
      log_action (pvid,
21418
                  'action',
21419
                  userid,
21420
                  'Start of Package Pending Approval...'
21421
                 );
21422
      -- Change package state
21423
      pk_package.change_state (pvid, 'A', userid);
21424
      -- Log
21425
      log_action (pvid, 'action', userid,
21426
                  'End of Package Pending Approval...');
21427
   END;
21428
 
21429
/*-------------------------------------------------------------------------------------------------------*/
21430
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21431
   IS
21432
      viewid   NUMBER;
21433
   BEGIN
21434
      -- Get ViewId
21435
      viewid := get_package_view (pvid, rtagid);
21436
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
21437
 
21438
      -- Log
21439
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21440
      -- Remove from current area
21441
      pk_planned.remove_package (pvid, rtagid, userid);
21442
      -- Change package state
21443
      pk_package.change_state (pvid, 'R', userid);
21444
      -- Add package to new area
21445
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21446
      -- Log
21447
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21448
   END;
21449
 
21450
/*-------------------------------------------------------------------------------------------------------*/
21451
   PROCEDURE change_package_view (
21452
      pvid        IN   NUMBER,
21453
      rtagid      IN   NUMBER,
21454
      newviewid   IN   NUMBER
21455
   )
21456
   IS
21457
      envtab   NUMBER;
21458
   BEGIN
21459
      envtab := pk_environment.get_package_area (pvid, rtagid);
21460
 
21461
      IF envtab = 0
21462
      THEN
21463
         -- WORK IN PROGRESS --
21464
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
21465
      ELSIF envtab = 1
21466
      THEN
21467
         -- PENDING --
21468
         pk_planned.change_package_view (pvid, rtagid, newviewid);
21469
      ELSIF envtab = 2
21470
      THEN
21471
         -- RELEASED --
21472
         pk_release.change_package_view (pvid, rtagid, newviewid);
21473
      END IF;
21474
   END;
21475
 
21476
/*-------------------------------------------------------------------------------------------------------*/
21477
   PROCEDURE find_package (
21478
      skeyword      IN       VARCHAR2,
21479
      nrtagid       IN       NUMBER,
21480
      nsearcharea   IN       NUMBER,
21481
      recordset     OUT      typecur
21482
   )
21483
   IS
21484
   BEGIN
21485
      IF nsearcharea = 0
21486
      THEN
21487
         /* Search Work In Progress */
21488
         OPEN recordset FOR
21489
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21490
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21491
                     pv.modified_stamp, usr.full_name, usr.user_email
21492
                FROM views vi,
21493
                     work_in_progress rc,
21494
                     PACKAGES pkg,
21495
                     package_versions pv,
21496
                     users usr
21497
               WHERE rc.view_id = vi.view_id
21498
                 AND rc.pv_id = pv.pv_id
21499
                 AND pkg.pkg_id = pv.pkg_id
21500
                 AND pv.modifier_id = usr.user_id
21501
                 AND rc.rtag_id = nrtagid
21502
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21503
            ORDER BY UPPER (pkg.pkg_name);
21504
      ELSIF nsearcharea = 1
21505
      THEN
21506
         /* Search Pending */
21507
         OPEN recordset FOR
21508
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21509
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21510
                     pv.modified_stamp, usr.full_name, usr.user_email
21511
                FROM views vi,
21512
                     planned rc,
21513
                     PACKAGES pkg,
21514
                     package_versions pv,
21515
                     users usr
21516
               WHERE rc.view_id = vi.view_id
21517
                 AND rc.pv_id = pv.pv_id
21518
                 AND pkg.pkg_id = pv.pkg_id
21519
                 AND pv.modifier_id = usr.user_id
21520
                 AND rc.rtag_id = nrtagid
21521
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21522
            ORDER BY UPPER (pkg.pkg_name);
21523
      ELSIF nsearcharea = 2
21524
      THEN
21525
         /* Search Released */
21526
         OPEN recordset FOR
21527
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21528
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21529
                     pv.modified_stamp, usr.full_name, usr.user_email
21530
                FROM views vi,
21531
                     release_content rc,
21532
                     PACKAGES pkg,
21533
                     package_versions pv,
21534
                     users usr
21535
               WHERE rc.base_view_id = vi.view_id
21536
                 AND rc.pv_id = pv.pv_id
21537
                 AND pkg.pkg_id = pv.pkg_id
21538
                 AND pv.modifier_id = usr.user_id
21539
                 AND rc.rtag_id = nrtagid
21540
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21541
            ORDER BY UPPER (pkg.pkg_name);
21542
      ELSIF nsearcharea = 3
21543
      THEN
21544
         /* Search ALL */
21545
         OPEN recordset FOR
21546
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
21547
                     pv.pv_id, pv.pkg_version, pv.comments,
21548
                     pv.modified_stamp, usr.full_name, usr.user_email
21549
                FROM views vi,
21550
                     environment_view rc,
21551
                     PACKAGES pkg,
21552
                     package_versions pv,
21553
                     users usr
21554
               WHERE rc.view_id = vi.view_id
21555
                 AND rc.pv_id = pv.pv_id
21556
                 AND pkg.pkg_id = pv.pkg_id
21557
                 AND pv.modifier_id = usr.user_id
21558
                 AND rc.rtag_id = nrtagid
21559
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21560
            ORDER BY UPPER (pkg.pkg_name);
21561
      END IF;
21562
   END;
21563
 
21564
/*-------------------------------------------------------------------------------------------------------*/
21565
   PROCEDURE find_file (
21566
      skeyword      IN       VARCHAR2,
21567
      nrtagid       IN       NUMBER,
21568
      nsearcharea   IN       NUMBER,
21569
      npagesize     IN       NUMBER,
21570
      recordset     OUT      typecur
21571
   )
21572
   IS
21573
   BEGIN
21574
      IF nsearcharea = 0
21575
      THEN
21576
         /* Search Work In Progress */
21577
         OPEN recordset FOR
21578
            SELECT   qry.*
21579
                FROM (
21580
                      /* File search on Packages */
21581
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21582
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21583
                        FROM work_in_progress rc,
21584
                             PACKAGES pkg,
21585
                             package_versions pv,
21586
                             release_components art
21587
                       WHERE rc.pv_id = art.pv_id
21588
                         AND pv.pkg_id = pkg.pkg_id
21589
                         AND rc.pv_id = pv.pv_id
21590
                         AND rc.rtag_id = nrtagid
21591
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21592
                      UNION ALL
21593
                      /* File search on Products */
21594
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21595
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21596
                        FROM work_in_progress rc,
21597
                             PACKAGES pkg,
21598
                             package_versions pv,
21599
                             product_components art
21600
                       WHERE rc.pv_id = art.pv_id
21601
                         AND pv.pkg_id = pkg.pkg_id
21602
                         AND rc.pv_id = pv.pv_id
21603
                         AND rc.rtag_id = nrtagid
21604
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21605
               WHERE ROWNUM <= npagesize
21606
            ORDER BY UPPER (qry.pkg_name);
21607
      ELSIF nsearcharea = 1
21608
      THEN
21609
         /* Search Pending */
21610
         OPEN recordset FOR
21611
            SELECT   qry.*
21612
                FROM (
21613
                      /* File search on Packages */
21614
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21615
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21616
                        FROM planned rc,
21617
                             PACKAGES pkg,
21618
                             package_versions pv,
21619
                             release_components art
21620
                       WHERE rc.pv_id = art.pv_id
21621
                         AND pv.pkg_id = pkg.pkg_id
21622
                         AND rc.pv_id = pv.pv_id
21623
                         AND rc.rtag_id = nrtagid
21624
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21625
                      UNION ALL
21626
                      /* File search on Products */
21627
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21628
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21629
                        FROM planned rc,
21630
                             PACKAGES pkg,
21631
                             package_versions pv,
21632
                             product_components art
21633
                       WHERE rc.pv_id = art.pv_id
21634
                         AND pv.pkg_id = pkg.pkg_id
21635
                         AND rc.pv_id = pv.pv_id
21636
                         AND rc.rtag_id = nrtagid
21637
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21638
               WHERE ROWNUM <= npagesize
21639
            ORDER BY UPPER (qry.pkg_name);
21640
      ELSIF nsearcharea = 2
21641
      THEN
21642
         /* Search Released */
21643
         OPEN recordset FOR
21644
            SELECT   qry.*
21645
                FROM (
21646
                      /* File search on Packages */
21647
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21648
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21649
                             NULL AS patch_id
21650
                        FROM release_content rc,
21651
                             PACKAGES pkg,
21652
                             package_versions pv,
21653
                             release_components art
21654
                       WHERE rc.pv_id = art.pv_id
21655
                         AND pv.pkg_id = pkg.pkg_id
21656
                         AND rc.pv_id = pv.pv_id
21657
                         AND rc.rtag_id = nrtagid
21658
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21659
                      UNION ALL
21660
                      /* File search on Products */
21661
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21662
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21663
                             NULL AS patch_id
21664
                        FROM release_content rc,
21665
                             PACKAGES pkg,
21666
                             package_versions pv,
21667
                             product_components art
21668
                       WHERE rc.pv_id = art.pv_id
21669
                         AND pv.pkg_id = pkg.pkg_id
21670
                         AND rc.pv_id = pv.pv_id
21671
                         AND rc.rtag_id = nrtagid
21672
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21673
                      UNION ALL
21674
                      /* File search on Patches */
21675
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21676
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21677
                             DECODE (art.file_path,
21678
                                     NULL, pp.patch_id,
21679
                                     NULL
21680
                                    ) AS patch_id
21681
                        FROM release_content rc,
21682
                             PACKAGES pkg,
21683
                             package_versions pv,
21684
                             release_components art,
21685
                             package_patches pp
21686
                       WHERE pv.pv_id = pp.pv_id
21687
                         AND pv.pkg_id = pkg.pkg_id
21688
                         AND rc.rtag_id = nrtagid
21689
                         AND art.pv_id = pp.patch_id
21690
                         AND rc.pv_id = pp.pv_id
21691
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21692
               WHERE ROWNUM <= npagesize
21693
            ORDER BY UPPER (qry.pkg_name);
21694
      ELSIF nsearcharea = 3
21695
      THEN
21696
         /* Search ALL */
21697
         OPEN recordset FOR
21698
            SELECT   qry.*
21699
                FROM (
21700
                      /* File search on Packages */
21701
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21702
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21703
                             NULL AS patch_id
21704
                        FROM environment_view rc,
21705
                             PACKAGES pkg,
21706
                             package_versions pv,
21707
                             release_components art
21708
                       WHERE rc.pv_id = art.pv_id
21709
                         AND pv.pkg_id = pkg.pkg_id
21710
                         AND rc.pv_id = pv.pv_id
21711
                         AND rc.rtag_id = nrtagid
21712
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21713
                      UNION ALL
21714
                      /* File search on Products */
21715
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21716
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21717
                             NULL AS patch_id
21718
                        FROM environment_view rc,
21719
                             PACKAGES pkg,
21720
                             package_versions pv,
21721
                             product_components art
21722
                       WHERE rc.pv_id = art.pv_id
21723
                         AND pv.pkg_id = pkg.pkg_id
21724
                         AND rc.pv_id = pv.pv_id
21725
                         AND rc.rtag_id = nrtagid
21726
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21727
                      UNION ALL
21728
                      /* File search on Patches */
21729
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21730
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21731
                             DECODE (art.file_path,
21732
                                     NULL, pp.patch_id,
21733
                                     NULL
21734
                                    ) AS patch_id
21735
                        FROM release_content rc,
21736
                             PACKAGES pkg,
21737
                             package_versions pv,
21738
                             release_components art,
21739
                             package_patches pp
21740
                       WHERE pv.pv_id = pp.pv_id
21741
                         AND pv.pkg_id = pkg.pkg_id
21742
                         AND rc.rtag_id = nrtagid
21743
                         AND art.pv_id = pp.patch_id
21744
                         AND rc.pv_id = pp.pv_id
21745
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21746
               WHERE ROWNUM <= npagesize
21747
            ORDER BY UPPER (qry.pkg_name);
21748
      END IF;
21749
   END;
21750
 
21751
/*-------------------------------------------------------------------------------------------------------*/
21752
   PROCEDURE get_prodrelease_items (
21753
      rtagid             IN       NUMBER,
21754
      ntruerecordcount   OUT      NUMBER,
21755
      recordset          OUT      typecur
21756
   )
21757
   IS
21758
   BEGIN
21759
      -- Get true record count n the number of integration products
21760
      SELECT COUNT (rc.pv_id)
21761
        INTO ntruerecordcount
21762
        FROM release_content rc
21763
       WHERE rc.rtag_id = rtagid;
21764
 
21765
      OPEN recordset FOR
21766
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
21767
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21768
                  pv.pkg_version, pv.dlocked, pv.pv_description
21769
             FROM release_content rel,
21770
                  PACKAGES pkg,
21771
                  package_versions pv,
21772
                  views vi
21773
            WHERE pv.pkg_id = pkg.pkg_id
21774
              AND rel.pv_id = pv.pv_id
21775
              AND rel.base_view_id = vi.view_id
21776
              AND pv.is_deployable = 'Y'
21777
              AND rtag_id = rtagid
21778
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21779
                                              FROM deployment_manager.os_contents)
21780
              AND rel.product_state IS NULL
21781
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21782
   END;
21783
 
21784
/*-------------------------------------------------------------------------------------------------------*/
21785
   PROCEDURE get_integration_items (
21786
      rtagid             IN       NUMBER,
21787
      ntruerecordcount   OUT      NUMBER,
21788
      recordset          OUT      typecur
21789
   )
21790
   IS
21791
   BEGIN
21792
      -- Get true record count n the number of integration products
21793
      SELECT COUNT (rc.pv_id)
21794
        INTO ntruerecordcount
21795
        FROM release_content rc
21796
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
21797
 
21798
      OPEN recordset FOR
21799
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21800
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21801
                  pv.pkg_version, pv.dlocked, pv.pv_description
21802
             FROM release_content rel,
21803
                  PACKAGES pkg,
21804
                  package_versions pv,
21805
                  views vi
21806
            WHERE pv.pkg_id = pkg.pkg_id
21807
              AND rel.pv_id = pv.pv_id
21808
              AND rel.base_view_id = vi.view_id
21809
              AND pv.is_deployable = 'Y'
21810
              AND rtag_id = rtagid
21811
              AND rel.product_state IN (1, 5)
21812
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21813
   END;
21814
 
21815
/*-------------------------------------------------------------------------------------------------------*/
21816
   PROCEDURE get_test_items (
21817
      rtagid             IN       NUMBER,
21818
      ntruerecordcount   OUT      NUMBER,
21819
      recordset          OUT      typecur
21820
   )
21821
   IS
21822
   BEGIN
21823
      -- Get true record count n the number of test products
21824
      SELECT COUNT (rc.pv_id)
21825
        INTO ntruerecordcount
21826
        FROM release_content rc
21827
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
21828
 
21829
      OPEN recordset FOR
21830
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21831
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21832
                  pv.pkg_version, pv.dlocked, pv.pv_description
21833
             FROM release_content rel,
21834
                  PACKAGES pkg,
21835
                  package_versions pv,
21836
                  views vi
21837
            WHERE pv.pkg_id = pkg.pkg_id
21838
              AND rel.pv_id = pv.pv_id
21839
              AND rel.base_view_id = vi.view_id
21840
              AND pv.is_deployable = 'Y'
21841
              AND rtag_id = rtagid
21842
              AND rel.product_state = 2
21843
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21844
   END;
21845
 
21846
/*-------------------------------------------------------------------------------------------------------*/
21847
   PROCEDURE get_deploy_items (
21848
      rtagid             IN       NUMBER,
21849
      ntruerecordcount   OUT      NUMBER,
21850
      recordset          OUT      typecur
21851
   )
21852
   IS
21853
   BEGIN
21854
      -- Get true record count n the number of deploy products
21855
      SELECT COUNT (rc.pv_id)
21856
        INTO ntruerecordcount
21857
        FROM release_content rc
21858
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
21859
 
21860
      OPEN recordset FOR
21861
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21862
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21863
                  pv.pkg_version, pv.dlocked, pv.pv_description
21864
             FROM release_content rel,
21865
                  PACKAGES pkg,
21866
                  package_versions pv,
21867
                  views vi
21868
            WHERE pv.pkg_id = pkg.pkg_id
21869
              AND rel.pv_id = pv.pv_id
21870
              AND rel.base_view_id = vi.view_id
21871
              AND pv.is_deployable = 'Y'
21872
              AND rtag_id = rtagid
21873
              AND rel.product_state IN (3, 5)
21874
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21875
                                              FROM deployment_manager.os_contents)
21876
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21877
   END;
21878
 
21879
/*-------------------------------------------------------------------------------------------------------*/
21880
   PROCEDURE get_reject_items (
21881
      rtagid             IN       NUMBER,
21882
      ntruerecordcount   OUT      NUMBER,
21883
      recordset          OUT      typecur
21884
   )
21885
   IS
21886
   BEGIN
21887
      -- Get true record count n the number of reject products
21888
      SELECT COUNT (rc.pv_id)
21889
        INTO ntruerecordcount
21890
        FROM release_content rc
21891
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
21892
 
21893
      OPEN recordset FOR
21894
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
21895
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21896
                  pv.pkg_version, pv.dlocked, pv.pv_description
21897
             FROM release_content rel,
21898
                  PACKAGES pkg,
21899
                  package_versions pv,
21900
                  views vi
21901
            WHERE pv.pkg_id = pkg.pkg_id
21902
              AND rel.pv_id = pv.pv_id
21903
              AND rel.base_view_id = vi.view_id
21904
              AND pv.is_deployable = 'Y'
21905
              AND rtag_id = rtagid
21906
              AND rel.product_state = 4
21907
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21908
   END;
21909
/*-------------------------------------------------------------------------------------------------------*/
21910
END pk_environment_test;
21911
/
21912