Subversion Repositories DevTools

Rev

Rev 57 | 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
 
57 mhunt 134
CREATE TABLE LICENCING
135
(
136
  PV_ID NUMBER NOT NULL,
137
  LICENCE NUMBER NOT NULL
138
)
139
  TABLESPACE "USERS"
140
  LOGGING 
141
  PCTFREE 10
142
  PCTUSED 40
143
  INITRANS 1
144
  MAXTRANS 255
145
  STORAGE
146
  (
147
    INITIAL 64K
148
    MINEXTENTS 1
149
    MAXEXTENTS 2147483645
150
    FREELISTS 1
151
    FREELIST GROUPS 1
152
    BUFFER_POOL DEFAULT
153
  )
154
;
155
 
51 mhunt 156
CREATE TABLE DEPRECATED_PACKAGES
157
(
158
  RTAG_ID NUMBER NOT NULL,
159
  PKG_ID NUMBER NOT NULL,
160
  COMMENTS VARCHAR2(4000 BYTE) NOT NULL,
161
  V_EXT VARCHAR2(50 BYTE)
162
)
163
  TABLESPACE "USERS"
164
  LOGGING 
165
  PCTFREE 10
166
  PCTUSED 40
167
  INITRANS 1
168
  MAXTRANS 255
169
  STORAGE
170
  (
171
    INITIAL 64K
172
    MINEXTENTS 1
173
    MAXEXTENTS 2147483645
174
    FREELISTS 1
175
    FREELIST GROUPS 1
176
    BUFFER_POOL DEFAULT
177
  )
178
;
179
 
180
CREATE TABLE MICROSOFTDTPROPERTIES
181
(
182
  ID NUMBER NOT NULL,
183
  OBJECTID NUMBER,
184
  PROPERTY VARCHAR2(64 BYTE) NOT NULL,
185
  VALUE VARCHAR2(255 BYTE),
186
  LVALUE LONG RAW,
187
  VERSION NUMBER DEFAULT (0) NOT NULL
188
, CONSTRAINT MICROSOFT_PK_DTPROPERTIES PRIMARY KEY
189
  (
190
    ID,
191
    PROPERTY
192
  )
193
  ENABLE
194
)
195
  TABLESPACE "USERS"
196
  LOGGING 
197
  PCTFREE 10
198
  PCTUSED 40
199
  INITRANS 1
200
  MAXTRANS 255
201
  STORAGE
202
  (
203
    INITIAL 128K
204
    MINEXTENTS 1
205
    MAXEXTENTS 2147483645
206
    FREELISTS 1
207
    FREELIST GROUPS 1
208
    BUFFER_POOL DEFAULT
209
  )
210
;
211
 
212
CREATE TABLE PACKAGE_DOCUMENTS
213
(
214
  PV_ID NUMBER NOT NULL,
215
  TEST_ID NUMBER,
216
  DOC_ID NUMBER NOT NULL,
217
  DOC_NUM VARCHAR2(50 BYTE) NOT NULL,
218
  IS_LATEST CHAR(1 BYTE)
219
)
220
  TABLESPACE "USERS"
221
  LOGGING 
222
  PCTFREE 10
223
  PCTUSED 40
224
  INITRANS 1
225
  MAXTRANS 255
226
  STORAGE
227
  (
228
    INITIAL 128K
229
    MINEXTENTS 1
230
    MAXEXTENTS 2147483645
231
    FREELISTS 1
232
    FREELIST GROUPS 1
233
    BUFFER_POOL DEFAULT
234
  )
235
;
236
 
237
CREATE TABLE RELEASE_TAGS
238
(
239
  RTAG_ID NUMBER NOT NULL,
240
  VTREE_ID NUMBER,
241
  RTAG_NAME VARCHAR2(50 BYTE) NOT NULL,
242
  DESCRIPTION VARCHAR2(4000 BYTE),
243
  CREATED_STAMP DATE,
244
  CREATOR_ID NUMBER,
245
  OFFICIAL_STAMP DATE,
246
  RELEASOR_ID NUMBER,
247
  OFFICIAL CHAR(1 BYTE) NOT NULL,
248
  REBUILD_ENV CHAR(1 BYTE) NOT NULL,
249
  REBUILD_STAMP NUMBER NOT NULL,
250
  RTAG_VERSION VARCHAR2(4000 BYTE),
251
  RTAG_LIFE_CYCLE NUMBER,
252
  PARENT_RTAG_ID NUMBER NOT NULL,
253
  PROJ_ID NUMBER NOT NULL,
254
  DISPLAY_ORDER NUMBER,
255
  OWNER_EMAIL VARCHAR2(1000 BYTE),
256
  ASSOC_MASS_REF NUMBER,
257
  OWNER_PERSONAL_EMAIL VARCHAR2(1000 BYTE),
258
  CONFIG_SPEC_BRANCH VARCHAR2(4000 BYTE),
259
  PRODUCT_STATE_USED CHAR(1 BYTE)
260
, CONSTRAINT PK_RELEASE_TAGS PRIMARY KEY
261
  (
262
    RTAG_ID
263
  )
264
  ENABLE
265
)
59 mhunt 266
  TABLESPACE "USERS"
51 mhunt 267
  LOGGING 
268
  PCTFREE 10
269
  PCTUSED 40
270
  INITRANS 1
271
  MAXTRANS 255
272
  STORAGE
273
  (
274
    INITIAL 64K
275
    MINEXTENTS 1
276
    MAXEXTENTS 2147483645
277
    FREELISTS 1
278
    FREELIST GROUPS 1
279
    BUFFER_POOL DEFAULT
280
  )
281
;
282
 
283
CREATE TABLE BUILD_STANDARDS_ADDENDUM
284
(
285
  BSA_ID NUMBER NOT NULL,
286
  BSA_NAME VARCHAR2(4000 BYTE) NOT NULL,
287
  BS_ID NUMBER NOT NULL
288
, CONSTRAINT BUILD_STANDARDS_ADDENDUM_PK PRIMARY KEY
289
  (
290
    BSA_ID
291
  )
292
  ENABLE
293
)
294
  TABLESPACE "USERS"
295
  LOGGING 
296
  PCTFREE 10
297
  PCTUSED 40
298
  INITRANS 1
299
  MAXTRANS 255
300
  STORAGE
301
  (
302
    INITIAL 64K
303
    MINEXTENTS 1
304
    MAXEXTENTS 2147483645
305
    FREELISTS 1
306
    FREELIST GROUPS 1
307
    BUFFER_POOL DEFAULT
308
  )
309
;
310
 
311
CREATE TABLE UNIT_TESTS
312
(
313
  TEST_ID NUMBER NOT NULL,
314
  PV_ID NUMBER NOT NULL,
315
  TEST_TYPES_FK NUMBER NOT NULL,
316
  TEST_SUMMARY VARCHAR2(4000 BYTE),
317
  COMPLETION_DATE DATE,
318
  COMPLETED_BY NUMBER,
319
  RESULTS_URL VARCHAR2(2000 BYTE),
320
  RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE),
321
  TEST_ACCEPTED CHAR(1 BYTE),
322
  ACCEPTANCE_DATE DATE,
323
  ACCEPTED_BY NUMBER,
324
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
325
  NUMOF_TEST VARCHAR2(50 BYTE)
326
)
327
  TABLESPACE "USERS"
328
  LOGGING 
329
  PCTFREE 10
330
  PCTUSED 40
331
  INITRANS 1
332
  MAXTRANS 255
333
  STORAGE
334
  (
335
    INITIAL 128K
336
    MINEXTENTS 1
337
    MAXEXTENTS 2147483645
338
    FREELISTS 1
339
    FREELIST GROUPS 1
340
    BUFFER_POOL DEFAULT
341
  )
342
;
343
 
344
CREATE TABLE BUILD_ENVIRONMENTS
345
(
346
  BE_ID NUMBER NOT NULL,
347
  BE_NAME VARCHAR2(255 BYTE) NOT NULL
348
, CONSTRAINT PK_BUILD_ENVIRONMENTS PRIMARY KEY
349
  (
350
    BE_ID
351
  )
352
  ENABLE
353
)
354
  TABLESPACE "USERS"
355
  LOGGING 
356
  PCTFREE 10
357
  PCTUSED 40
358
  INITRANS 1
359
  MAXTRANS 255
360
  STORAGE
361
  (
362
    INITIAL 128K
363
    MINEXTENTS 1
364
    MAXEXTENTS 2147483645
365
    FREELISTS 1
366
    FREELIST GROUPS 1
367
    BUFFER_POOL DEFAULT
368
  )
369
;
370
 
57 mhunt 371
CREATE TABLE LICENCES
372
(
373
  LICENCE NUMBER NOT NULL,
374
  NAME VARCHAR2(50 BYTE) NOT NULL
375
, CONSTRAINT PK_LICENCES PRIMARY KEY
376
  (
377
    LICENCE
378
  )
379
  ENABLE
380
)
381
  TABLESPACE "USERS"
382
  LOGGING 
383
  PCTFREE 10
384
  PCTUSED 40
385
  INITRANS 1
386
  MAXTRANS 255
387
  STORAGE
388
  (
389
    INITIAL 64K
390
    MINEXTENTS 1
391
    MAXEXTENTS 2147483645
392
    FREELISTS 1
393
    FREELIST GROUPS 1
394
    BUFFER_POOL DEFAULT
395
  )
396
;
397
 
51 mhunt 398
CREATE TABLE RELEASE_COMPONENTS
399
(
400
  PV_ID NUMBER NOT NULL,
401
  FILE_NAME VARCHAR2(255 BYTE),
402
  FILE_PATH VARCHAR2(2000 BYTE),
403
  BYTE_SIZE NUMBER,
404
  CRC_CKSUM VARCHAR2(50 BYTE),
405
  CRC_MODCRC VARCHAR2(50 BYTE)
406
)
407
  TABLESPACE "USERS"
408
  LOGGING 
409
  PCTFREE 10
410
  PCTUSED 40
411
  INITRANS 1
412
  MAXTRANS 255
413
  STORAGE
414
  (
415
    INITIAL 128K
416
    MINEXTENTS 1
417
    MAXEXTENTS 2147483645
418
    FREELISTS 1
419
    FREELIST GROUPS 1
420
    BUFFER_POOL DEFAULT
421
  )
422
;
423
 
424
CREATE TABLE RIPPLE_FIELD_STATES
425
(
426
  STATE_ID NUMBER NOT NULL,
427
  STATE_ACRONYM CHAR(1 BYTE),
428
  STATE_NAME VARCHAR2(50 BYTE)
429
)
430
  TABLESPACE "USERS"
431
  LOGGING 
432
  PCTFREE 10
433
  PCTUSED 40
434
  INITRANS 1
435
  MAXTRANS 255
436
  STORAGE
437
  (
438
    INITIAL 64K
439
    MINEXTENTS 1
440
    MAXEXTENTS 2147483645
441
    FREELISTS 1
442
    FREELIST GROUPS 1
443
    BUFFER_POOL DEFAULT
444
  )
445
;
446
 
447
CREATE TABLE BUILD_ORDER
448
(
449
  RTAG_ID NUMBER NOT NULL,
450
  STEP_NUM NUMBER NOT NULL,
451
  PV_ID NUMBER NOT NULL,
452
  UNRESOLVED CHAR(1 BYTE)
453
)
454
  TABLESPACE "USERS"
455
  LOGGING 
456
  PCTFREE 10
457
  PCTUSED 40
458
  INITRANS 1
459
  MAXTRANS 255
460
  STORAGE
461
  (
462
    INITIAL 64K
463
    MINEXTENTS 1
464
    MAXEXTENTS 2147483645
465
    FREELISTS 1
466
    FREELIST GROUPS 1
467
    BUFFER_POOL DEFAULT
468
  )
469
;
470
 
471
CREATE TABLE PLANNED
472
(
473
  RTAG_ID NUMBER NOT NULL,
474
  PV_ID NUMBER NOT NULL,
53 mhunt 475
  VIEW_ID NUMBER NOT NULL,
476
  OPERATION CHAR(1 BYTE)
51 mhunt 477
)
478
  TABLESPACE "USERS"
479
  LOGGING 
480
  PCTFREE 10
481
  PCTUSED 40
482
  INITRANS 1
483
  MAXTRANS 255
484
  STORAGE
485
  (
486
    INITIAL 64K
487
    MINEXTENTS 1
488
    MAXEXTENTS 2147483645
489
    FREELISTS 1
490
    FREELIST GROUPS 1
491
    BUFFER_POOL DEFAULT
492
  )
493
;
494
 
495
CREATE TABLE PROJECT_ACTION_LOG
496
(
497
  USER_ID NUMBER NOT NULL,
498
  ACTION_DATETIME DATE NOT NULL,
499
  PROJ_ID NUMBER NOT NULL,
500
  DESCRIPTION VARCHAR2(4000 BYTE),
501
  ACTTYPE_ID NUMBER NOT NULL,
502
  RTAG_ID NUMBER
503
)
504
  TABLESPACE "USERS"
505
  LOGGING 
506
  PCTFREE 10
507
  PCTUSED 40
508
  INITRANS 1
509
  MAXTRANS 255
510
  STORAGE
511
  (
512
    INITIAL 64K
513
    MINEXTENTS 1
514
    MAXEXTENTS 2147483645
515
    FREELISTS 1
516
    FREELIST GROUPS 1
517
    BUFFER_POOL DEFAULT
518
  )
519
;
520
 
521
CREATE TABLE PACKAGE_METRICS
522
(
523
  PV_ID NUMBER NOT NULL,
524
  BRANCHES NUMBER,
525
  BRANCH_LIST VARCHAR2(4000 BYTE),
526
  CODE_FILES NUMBER,
527
  IGNORED_FILES NUMBER,
528
  DIRECTORIES NUMBER,
529
  DIRECTORY_DEPTH NUMBER,
530
  TOTAL_FILES NUMBER,
531
  MAKEFILES NUMBER,
532
  BLANK_LINES NUMBER,
533
  CODE_LINES NUMBER,
534
  COMMENT_LINES NUMBER,
535
  CREATED_STAMP DATE
536
)
537
  TABLESPACE "USERS"
538
  LOGGING 
539
  PCTFREE 10
540
  PCTUSED 40
541
  INITRANS 1
542
  MAXTRANS 255
543
  STORAGE
544
  (
545
    INITIAL 64K
546
    MINEXTENTS 1
547
    MAXEXTENTS 2147483645
548
    FREELISTS 1
549
    FREELIST GROUPS 1
550
    BUFFER_POOL DEFAULT
551
  )
552
;
553
 
554
CREATE TABLE ARCHIVE_DATA
555
(
556
  RTAG_ID NUMBER(*, 0) NOT NULL,
557
  PV_ID NUMBER(*, 0) NOT NULL
558
)
559
  TABLESPACE "USERS"
560
  LOGGING 
561
  PCTFREE 10
562
  PCTUSED 40
563
  INITRANS 1
564
  MAXTRANS 255
565
  STORAGE
566
  (
567
    INITIAL 64K
568
    MINEXTENTS 1
569
    MAXEXTENTS 2147483645
570
    FREELISTS 1
571
    FREELIST GROUPS 1
572
    BUFFER_POOL DEFAULT
573
  )
574
;
575
 
576
CREATE TABLE VIEW_SETTINGS
577
(
578
  USER_ID NUMBER NOT NULL,
579
  VIEW_ID NUMBER NOT NULL
580
)
59 mhunt 581
  TABLESPACE "USERS"
51 mhunt 582
  LOGGING 
583
  PCTFREE 10
584
  PCTUSED 40
585
  INITRANS 1
586
  MAXTRANS 255
587
  STORAGE
588
  (
589
    INITIAL 64K
590
    MINEXTENTS 1
591
    MAXEXTENTS 2147483645
592
    FREELISTS 1
593
    FREELIST GROUPS 1
594
    BUFFER_POOL DEFAULT
595
  )
596
;
597
 
598
CREATE TABLE ACTION_TYPE
599
(
600
  ACTTYPE_ID NUMBER NOT NULL,
601
  NAME VARCHAR2(255 BYTE) NOT NULL,
602
  DESCRIPTION VARCHAR2(4000 BYTE)
603
, CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY
604
  (
605
    ACTTYPE_ID
606
  )
607
  ENABLE
608
)
609
  TABLESPACE "USERS"
610
  LOGGING 
611
  PCTFREE 10
612
  PCTUSED 40
613
  INITRANS 1
614
  MAXTRANS 255
615
  STORAGE
616
  (
617
    INITIAL 128K
618
    MINEXTENTS 1
619
    MAXEXTENTS 2147483645
620
    FREELISTS 1
621
    FREELIST GROUPS 1
622
    BUFFER_POOL DEFAULT
623
  )
624
;
625
 
626
CREATE TABLE RUN_LEVEL_SCHEDULE
627
(
628
  SCHEDULED_ID NUMBER NOT NULL,
629
  SCHEDULED_PAUSE DATE,
630
  SCHEDULED_RESUME DATE,
631
  REPEAT CHAR(1 BYTE),
632
  INDEFINITE_PAUSE CHAR(1 BYTE)
633
, PRIMARY KEY
634
  (
635
    SCHEDULED_ID
636
  )
637
  ENABLE
638
)
639
  TABLESPACE "USERS"
640
  LOGGING 
641
  PCTFREE 10
642
  PCTUSED 40
643
  INITRANS 1
644
  MAXTRANS 255
645
  STORAGE
646
  (
647
    INITIAL 64K
648
    MINEXTENTS 1
649
    MAXEXTENTS 2147483645
650
    FREELISTS 1
651
    FREELIST GROUPS 1
652
    BUFFER_POOL DEFAULT
653
  )
654
;
655
 
656
CREATE TABLE VTREES
657
(
658
  VTREE_ID NUMBER NOT NULL,
659
  PROJ_ID NUMBER NOT NULL,
660
  VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,
661
  HIDE CHAR(1 BYTE) NOT NULL
662
, CONSTRAINT PK_VTREES PRIMARY KEY
663
  (
664
    VTREE_ID
665
  )
666
  ENABLE
667
)
59 mhunt 668
  TABLESPACE "USERS"
51 mhunt 669
  LOGGING 
670
  PCTFREE 10
671
  PCTUSED 40
672
  INITRANS 1
673
  MAXTRANS 255
674
  STORAGE
675
  (
676
    INITIAL 64K
677
    MINEXTENTS 1
678
    MAXEXTENTS 2147483645
679
    FREELISTS 1
680
    FREELIST GROUPS 1
681
    BUFFER_POOL DEFAULT
682
  )
683
;
684
 
685
CREATE TABLE BUILD_STANDARDS
686
(
687
  BS_ID NUMBER NOT NULL,
688
  BS_NAME VARCHAR2(20 BYTE) NOT NULL
689
, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY
690
  (
691
    BS_ID
692
  )
693
  ENABLE
694
)
695
  TABLESPACE "USERS"
696
  LOGGING 
697
  PCTFREE 10
698
  PCTUSED 40
699
  INITRANS 1
700
  MAXTRANS 255
701
  STORAGE
702
  (
703
    INITIAL 64K
704
    MINEXTENTS 1
705
    MAXEXTENTS 2147483645
706
    FREELISTS 1
707
    FREELIST GROUPS 1
708
    BUFFER_POOL DEFAULT
709
  )
710
;
711
 
712
CREATE TABLE TEMP_SASH
713
(
714
  RTAG_ID NUMBER,
715
  PROJ_ID NUMBER
716
)
717
  TABLESPACE "USERS"
718
  LOGGING 
719
  PCTFREE 10
720
  PCTUSED 40
721
  INITRANS 1
722
  MAXTRANS 255
723
  STORAGE
724
  (
725
    INITIAL 64K
726
    MINEXTENTS 1
727
    MAXEXTENTS 2147483645
728
    FREELISTS 1
729
    FREELIST GROUPS 1
730
    BUFFER_POOL DEFAULT
731
  )
732
;
733
 
734
CREATE TABLE BUILD_MACHINES
735
(
736
  BM_ID NUMBER NOT NULL,
737
  BM_NAME VARCHAR2(20 BYTE) NOT NULL
738
, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY
739
  (
740
    BM_ID
741
  )
742
  ENABLE
743
)
744
  TABLESPACE "USERS"
745
  LOGGING 
746
  PCTFREE 10
747
  PCTUSED 40
748
  INITRANS 1
749
  MAXTRANS 255
750
  STORAGE
751
  (
752
    INITIAL 64K
753
    MINEXTENTS 1
754
    MAXEXTENTS 2147483645
755
    FREELISTS 1
756
    FREELIST GROUPS 1
757
    BUFFER_POOL DEFAULT
758
  )
759
;
760
 
761
CREATE TABLE RELEASE_LINKS
762
(
763
  RTAG_ID NUMBER NOT NULL,
764
  REF_RTAG_ID NUMBER NOT NULL
765
)
766
  TABLESPACE "USERS"
767
  LOGGING 
768
  PCTFREE 10
769
  PCTUSED 40
770
  INITRANS 1
771
  MAXTRANS 255
772
  STORAGE
773
  (
774
    INITIAL 64K
775
    MINEXTENTS 1
776
    MAXEXTENTS 2147483645
777
    FREELISTS 1
778
    FREELIST GROUPS 1
779
    BUFFER_POOL DEFAULT
780
  )
781
;
782
 
783
CREATE TABLE BUILD_ENV_DOCUMENTS
784
(
785
  BE_ID NUMBER NOT NULL,
786
  DOC_NUM VARCHAR2(255 BYTE) NOT NULL
787
)
788
  TABLESPACE "USERS"
789
  LOGGING 
790
  PCTFREE 10
791
  PCTUSED 40
792
  INITRANS 1
793
  MAXTRANS 255
794
  STORAGE
795
  (
796
    INITIAL 128K
797
    MINEXTENTS 1
798
    MAXEXTENTS 2147483645
799
    FREELISTS 1
800
    FREELIST GROUPS 1
801
    BUFFER_POOL DEFAULT
802
  )
803
;
804
 
805
CREATE TABLE PRODUCT_STATES
806
(
807
  STATE_ID NUMBER NOT NULL,
808
  STATE VARCHAR2(4000 BYTE) NOT NULL
809
, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY
810
  (
811
    STATE_ID
812
  )
813
  ENABLE
814
)
815
  TABLESPACE "USERS"
816
  LOGGING 
817
  PCTFREE 10
818
  PCTUSED 40
819
  INITRANS 1
820
  MAXTRANS 255
821
  STORAGE
822
  (
823
    INITIAL 64K
824
    MINEXTENTS 1
825
    MAXEXTENTS 2147483645
826
    FREELISTS 1
827
    FREELIST GROUPS 1
828
    BUFFER_POOL DEFAULT
829
  )
830
;
831
 
832
CREATE TABLE WORLDS
833
(
834
  WORLD_ID NUMBER NOT NULL,
835
  WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,
836
  WORLD_DESC VARCHAR2(255 BYTE)
837
, CONSTRAINT PK_WORLDS PRIMARY KEY
838
  (
839
    WORLD_ID
840
  )
841
  ENABLE
842
)
843
  TABLESPACE "USERS"
844
  LOGGING 
845
  PCTFREE 10
846
  PCTUSED 40
847
  INITRANS 1
848
  MAXTRANS 255
849
  STORAGE
850
  (
851
    INITIAL 128K
852
    MINEXTENTS 1
853
    MAXEXTENTS 2147483645
854
    FREELISTS 1
855
    FREELIST GROUPS 1
856
    BUFFER_POOL DEFAULT
857
  )
858
;
859
 
860
CREATE TABLE ACTION_LOG
861
(
862
  USER_ID NUMBER NOT NULL,
863
  ACTION_DATETIME DATE NOT NULL,
864
  PV_ID NUMBER NOT NULL,
865
  DESCRIPTION VARCHAR2(4000 BYTE),
866
  ACTTYPE_ID NUMBER NOT NULL
867
)
868
  TABLESPACE "USERS"
869
  LOGGING 
870
  PCTFREE 10
871
  PCTUSED 40
872
  INITRANS 1
873
  MAXTRANS 255
874
  STORAGE
875
  (
876
    INITIAL 128K
877
    MINEXTENTS 1
878
    MAXEXTENTS 2147483645
879
    FREELISTS 1
880
    FREELIST GROUPS 1
881
    BUFFER_POOL DEFAULT
882
  )
883
;
884
 
885
CREATE TABLE PROJECT_EXTENTIONS
886
(
887
  PROJ_ID NUMBER NOT NULL,
888
  EXT_NAME VARCHAR2(10 BYTE) NOT NULL
889
)
59 mhunt 890
  TABLESPACE "USERS"
51 mhunt 891
  LOGGING 
892
  PCTFREE 10
893
  PCTUSED 40
894
  INITRANS 1
895
  MAXTRANS 255
896
  STORAGE
897
  (
898
    INITIAL 64K
899
    MINEXTENTS 1
900
    MAXEXTENTS 2147483645
901
    FREELISTS 1
902
    FREELIST GROUPS 1
903
    BUFFER_POOL DEFAULT
904
  )
905
;
906
 
907
CREATE TABLE ADDITIONAL_NOTES
908
(
909
  NOTE_ID NUMBER NOT NULL,
910
  PV_ID NUMBER NOT NULL,
911
  NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,
912
  NOTE_BODY VARCHAR2(4000 BYTE),
913
  MOD_DATE DATE NOT NULL,
914
  MOD_USER NUMBER NOT NULL
915
)
916
  TABLESPACE "USERS"
917
  LOGGING 
918
  PCTFREE 10
919
  PCTUSED 40
920
  INITRANS 1
921
  MAXTRANS 255
922
  STORAGE
923
  (
924
    INITIAL 128K
925
    MINEXTENTS 1
926
    MAXEXTENTS 2147483645
927
    FREELISTS 1
928
    FREELIST GROUPS 1
929
    BUFFER_POOL DEFAULT
930
  )
931
;
932
 
933
CREATE TABLE MESSAGE_BOARD
934
(
935
  MSG_ID NUMBER NOT NULL,
936
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
937
  SUBMITION_DATE DATE NOT NULL,
938
  EXPIRY_DATE DATE,
939
  DUE_DATE DATE
940
, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY
941
  (
942
    MSG_ID
943
  )
944
  ENABLE
945
)
59 mhunt 946
  TABLESPACE "USERS"
51 mhunt 947
  LOGGING 
948
  PCTFREE 10
949
  PCTUSED 40
950
  INITRANS 1
951
  MAXTRANS 255
952
  STORAGE
953
  (
954
    INITIAL 64K
955
    MINEXTENTS 1
956
    MAXEXTENTS 2147483645
957
    FREELISTS 1
958
    FREELIST GROUPS 1
959
    BUFFER_POOL DEFAULT
960
  )
961
;
962
 
963
CREATE TABLE VTREES_WORLD
964
(
965
  WORLD_ID NUMBER NOT NULL,
966
  VTREE_ID NUMBER NOT NULL
967
)
968
  TABLESPACE "USERS"
969
  LOGGING 
970
  PCTFREE 10
971
  PCTUSED 40
972
  INITRANS 1
973
  MAXTRANS 255
974
  STORAGE
975
  (
976
    INITIAL 128K
977
    MINEXTENTS 1
978
    MAXEXTENTS 2147483645
979
    FREELISTS 1
980
    FREELIST GROUPS 1
981
    BUFFER_POOL DEFAULT
982
  )
983
;
984
 
985
CREATE TABLE CODE_REVIEWS
986
(
987
  PV_ID NUMBER NOT NULL,
988
  DATE_OF_REVIEW DATE,
989
  TIME_SPENT FLOAT(126),
990
  REVIEW_REASON VARCHAR2(4000 BYTE),
991
  RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),
992
  RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),
993
  RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),
994
  RTEAM_AUTHOR VARCHAR2(4000 BYTE),
995
  FILES_REVIEWED VARCHAR2(4000 BYTE),
996
  REVIEW_RESULTS NUMBER,
997
  ISSUES_RAISED VARCHAR2(4000 BYTE),
998
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
999
  FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),
1000
  FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),
1001
  RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),
1002
  RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),
1003
  RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),
1004
  RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),
1005
  RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),
1006
  RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),
1007
  RBS_S_EXCEP_HANDING CHAR(1 BYTE),
1008
  RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),
1009
  RBS_S_RESOURCE_MNG CHAR(1 BYTE),
1010
  RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),
1011
  RBS_S_TRANS_COMPLET CHAR(1 BYTE),
1012
  RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),
1013
  RBS_S_THREADSAFETY CHAR(1 BYTE),
1014
  RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),
1015
  RBS_S_RET_VALS CHAR(1 BYTE),
1016
  RBS_C_RET_VALS VARCHAR2(4000 BYTE),
1017
  RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),
1018
  RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),
1019
  RBS_S_SQL_STD CHAR(1 BYTE),
1020
  RBS_C_SQL_STD VARCHAR2(4000 BYTE),
1021
  MNT_S_EXT_REF CHAR(1 BYTE),
1022
  MNT_C_EXT_REF VARCHAR2(4000 BYTE),
1023
  MNT_S_CLASS_SIZE CHAR(1 BYTE),
1024
  MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),
1025
  MNT_S_METHOD_SIZE CHAR(1 BYTE),
1026
  MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),
1027
  MNT_S_APPROP_COMM CHAR(1 BYTE),
1028
  MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),
1029
  MNT_S_IDENT_NAME_STD CHAR(1 BYTE),
1030
  MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),
1031
  MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),
1032
  MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),
1033
  MNT_S_NO_LIT_NUM CHAR(1 BYTE),
1034
  MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),
1035
  MNT_S_NO_DEAD_CODE CHAR(1 BYTE),
1036
  MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),
1037
  DEI_S_STD_DES_PATT CHAR(1 BYTE),
1038
  DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),
1039
  DEI_S_APPROP_ALGOR CHAR(1 BYTE),
1040
  DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),
1041
  DEI_S_APPROP_OBJ CHAR(1 BYTE),
1042
  DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),
1043
  DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),
1044
  DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),
1045
  DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),
1046
  DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),
1047
  DEI_S_APPROP_LOGGING CHAR(1 BYTE),
1048
  DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE)
1049
)
1050
  TABLESPACE "USERS"
1051
  LOGGING 
1052
  PCTFREE 10
1053
  PCTUSED 40
1054
  INITRANS 1
1055
  MAXTRANS 255
1056
  STORAGE
1057
  (
1058
    INITIAL 128K
1059
    MINEXTENTS 1
1060
    MAXEXTENTS 2147483645
1061
    FREELISTS 1
1062
    FREELIST GROUPS 1
1063
    BUFFER_POOL DEFAULT
1064
  )
1065
;
1066
 
1067
CREATE TABLE PLANNED_VERSIONS
1068
(
1069
  PKG_ID NUMBER,
1070
  PKG_VERSION VARCHAR2(50 BYTE)
1071
)
1072
  TABLESPACE "USERS"
1073
  LOGGING 
1074
  PCTFREE 10
1075
  PCTUSED 40
1076
  INITRANS 1
1077
  MAXTRANS 255
1078
  STORAGE
1079
  (
1080
    INITIAL 64K
1081
    MINEXTENTS 1
1082
    MAXEXTENTS 2147483645
1083
    FREELISTS 1
1084
    FREELIST GROUPS 1
1085
    BUFFER_POOL DEFAULT
1086
  )
1087
;
1088
 
1089
CREATE TABLE VALIDATION_RULES
1090
(
1091
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1092
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1093
  IS_NUMERIC CHAR(1 BYTE),
1094
  MIN_NUMERIC_VALUE NUMBER,
1095
  MAX_NUMERIC_VALUE NUMBER,
1096
  IS_DATE CHAR(1 BYTE),
1097
  START_DATE DATE,
1098
  END_DATE DATE,
1099
  MIN_STRING_LENGTH NUMBER,
1100
  MAX_STRING_LENGTH NUMBER,
1101
  REGEXP VARCHAR2(4000 BYTE),
1102
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1103
)
1104
  TABLESPACE "USERS"
1105
  LOGGING 
1106
  PCTFREE 10
1107
  PCTUSED 40
1108
  INITRANS 1
1109
  MAXTRANS 255
1110
  STORAGE
1111
  (
1112
    INITIAL 128K
1113
    MINEXTENTS 1
1114
    MAXEXTENTS 2147483645
1115
    FREELISTS 1
1116
    FREELIST GROUPS 1
1117
    BUFFER_POOL DEFAULT
1118
  )
1119
;
1120
 
1121
CREATE TABLE DO_NOT_RIPPLE
1122
(
1123
  RTAG_ID NUMBER NOT NULL,
55 mhunt 1124
  PV_ID NUMBER NOT NULL,
1125
  ROOT_PV_ID NUMBER,
1126
  ROOT_CAUSE VARCHAR2(50 BYTE),
1127
  ROOT_FILE VARCHAR2(100 BYTE)
51 mhunt 1128
)
1129
  TABLESPACE "USERS"
1130
  LOGGING 
1131
  PCTFREE 10
1132
  PCTUSED 40
1133
  INITRANS 1
1134
  MAXTRANS 255
1135
  STORAGE
1136
  (
1137
    INITIAL 64K
1138
    MINEXTENTS 1
1139
    MAXEXTENTS 2147483645
1140
    FREELISTS 1
1141
    FREELIST GROUPS 1
1142
    BUFFER_POOL DEFAULT
1143
  )
1144
;
1145
 
1146
CREATE TABLE NOTE_MANAGER
1147
(
1148
  NID VARCHAR2(30 BYTE) NOT NULL,
1149
  LAST_USER VARCHAR2(20 BYTE),
1150
  LAST_DATE DATE,
1151
  DESCRIPTION VARCHAR2(4000 BYTE)
1152
, CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY
1153
  (
1154
    NID
1155
  )
1156
  ENABLE
1157
)
1158
  TABLESPACE "USERS"
1159
  LOGGING 
1160
  PCTFREE 10
1161
  PCTUSED 40
1162
  INITRANS 1
1163
  MAXTRANS 255
1164
  STORAGE
1165
  (
1166
    INITIAL 128K
1167
    MINEXTENTS 1
1168
    MAXEXTENTS 2147483645
1169
    FREELISTS 1
1170
    FREELIST GROUPS 1
1171
    BUFFER_POOL DEFAULT
1172
  )
1173
;
1174
 
1175
CREATE TABLE RELEASE_CONTENT
1176
(
1177
  RTAG_ID NUMBER NOT NULL,
1178
  PV_ID NUMBER NOT NULL,
1179
  BASE_VIEW_ID NUMBER NOT NULL,
1180
  INSERT_STAMP DATE NOT NULL,
1181
  INSERTOR_ID NUMBER NOT NULL,
1182
  PKG_STATE NUMBER NOT NULL,
1183
  PKG_ID NUMBER,
1184
  DEPRECATED_STATE NUMBER,
1185
  PRODUCT_STATE NUMBER
1186
)
59 mhunt 1187
  TABLESPACE "USERS"
51 mhunt 1188
  LOGGING 
1189
  PCTFREE 10
1190
  PCTUSED 40
1191
  INITRANS 1
1192
  MAXTRANS 255
1193
  STORAGE
1194
  (
1195
    INITIAL 64K
1196
    MINEXTENTS 1
1197
    MAXEXTENTS 2147483645
1198
    FREELISTS 1
1199
    FREELIST GROUPS 1
1200
    BUFFER_POOL DEFAULT
1201
  )
1202
;
1203
 
1204
CREATE TABLE PROCESSES
1205
(
1206
  PROC_ID NUMBER NOT NULL,
1207
  PROC_NAME VARCHAR2(255 BYTE) NOT NULL,
1208
  PROC_DESCRIPTION VARCHAR2(255 BYTE),
1209
  RUN_AS VARCHAR2(255 BYTE),
1210
  PKG_OWNER VARCHAR2(4000 BYTE),
1211
  IS_INTERFACE CHAR(1 BYTE)
1212
, CONSTRAINT PROCESSES_PK PRIMARY KEY
1213
  (
1214
    PROC_ID
1215
  )
1216
  ENABLE
1217
)
1218
  TABLESPACE "USERS"
1219
  LOGGING 
1220
  PCTFREE 10
1221
  PCTUSED 40
1222
  INITRANS 1
1223
  MAXTRANS 255
1224
  STORAGE
1225
  (
1226
    INITIAL 128K
1227
    MINEXTENTS 1
1228
    MAXEXTENTS 2147483645
1229
    FREELISTS 1
1230
    FREELIST GROUPS 1
1231
    BUFFER_POOL DEFAULT
1232
  )
1233
;
1234
 
1235
CREATE TABLE RM_PACKAGE_ISSUES
1236
(
1237
  PKG_ID NUMBER,
1238
  PKG_NAME VARCHAR2(50 BYTE),
1239
  PV_ID NUMBER,
1240
  PKG_VERSION VARCHAR2(50 BYTE),
1241
  DPV_ID NUMBER,
1242
  DPKG_NAME VARCHAR2(50 BYTE),
1243
  DPKG_VERSION VARCHAR2(50 BYTE),
1244
  ISS_DB NUMBER,
1245
  ISS_ID NUMBER
1246
)
1247
  TABLESPACE "USERS"
1248
  LOGGING 
1249
  PCTFREE 10
1250
  PCTUSED 40
1251
  INITRANS 1
1252
  MAXTRANS 255
1253
  STORAGE
1254
  (
1255
    INITIAL 64K
1256
    MINEXTENTS 1
1257
    MAXEXTENTS 2147483645
1258
    FREELISTS 1
1259
    FREELIST GROUPS 1
1260
    BUFFER_POOL DEFAULT
1261
  )
1262
;
1263
 
1264
CREATE TABLE PACKAGE_PROCESSES
1265
(
1266
  PV_ID NUMBER NOT NULL,
1267
  PROC_ID NUMBER NOT NULL
1268
)
1269
  TABLESPACE "USERS"
1270
  LOGGING 
1271
  PCTFREE 10
1272
  PCTUSED 40
1273
  INITRANS 1
1274
  MAXTRANS 255
1275
  STORAGE
1276
  (
1277
    INITIAL 64K
1278
    MINEXTENTS 1
1279
    MAXEXTENTS 2147483645
1280
    FREELISTS 1
1281
    FREELIST GROUPS 1
1282
    BUFFER_POOL DEFAULT
1283
  )
1284
;
1285
 
1286
CREATE TABLE ADVISORY_RIPPLE
1287
(
1288
  RTAG_ID NUMBER NOT NULL,
1289
  PV_ID NUMBER NOT NULL
1290
)
1291
  TABLESPACE "USERS"
1292
  LOGGING 
1293
  PCTFREE 10
1294
  PCTUSED 40
1295
  INITRANS 1
1296
  MAXTRANS 255
1297
  STORAGE
1298
  (
1299
    INITIAL 64K
1300
    MINEXTENTS 1
1301
    MAXEXTENTS 2147483645
1302
    FREELISTS 1
1303
    FREELIST GROUPS 1
1304
    BUFFER_POOL DEFAULT
1305
  )
1306
;
1307
 
1308
CREATE TABLE PACKAGE_PATCHES
1309
(
1310
  PV_ID NUMBER NOT NULL,
1311
  PATCH_ID NUMBER NOT NULL,
1312
  INSTALL_ORDER NUMBER NOT NULL,
1313
  PATCH_OBSOLETED_BY NUMBER
1314
)
1315
  TABLESPACE "USERS"
1316
  LOGGING 
1317
  PCTFREE 10
1318
  PCTUSED 40
1319
  INITRANS 1
1320
  MAXTRANS 255
1321
  STORAGE
1322
  (
1323
    INITIAL 128K
1324
    MINEXTENTS 1
1325
    MAXEXTENTS 2147483645
1326
    FREELISTS 1
1327
    FREELIST GROUPS 1
1328
    BUFFER_POOL DEFAULT
1329
  )
1330
;
1331
 
1332
CREATE TABLE PACKAGE_INTEREST
1333
(
1334
  PKG_ID NUMBER NOT NULL,
1335
  PROJ_ID NUMBER NOT NULL,
1336
  USER_ID NUMBER NOT NULL
1337
)
1338
  TABLESPACE "USERS"
1339
  LOGGING 
1340
  PCTFREE 10
1341
  PCTUSED 40
1342
  INITRANS 1
1343
  MAXTRANS 255
1344
  STORAGE
1345
  (
1346
    INITIAL 64K
1347
    MINEXTENTS 1
1348
    MAXEXTENTS 2147483645
1349
    FREELISTS 1
1350
    FREELIST GROUPS 1
1351
    BUFFER_POOL DEFAULT
1352
  )
1353
;
1354
 
1355
CREATE TABLE PLATFORMS
1356
(
1357
  CODE NUMBER NOT NULL,
1358
  NAME VARCHAR2(255 BYTE) NOT NULL
1359
)
1360
  TABLESPACE "USERS"
1361
  LOGGING 
1362
  PCTFREE 10
1363
  PCTUSED 40
1364
  INITRANS 1
1365
  MAXTRANS 255
1366
  STORAGE
1367
  (
1368
    INITIAL 64K
1369
    MINEXTENTS 1
1370
    MAXEXTENTS 2147483645
1371
    FREELISTS 1
1372
    FREELIST GROUPS 1
1373
    BUFFER_POOL DEFAULT
1374
  )
1375
;
1376
 
1377
CREATE TABLE RELEASE_CONFIG
1378
(
1379
  RCON_ID NUMBER NOT NULL,
1380
  RTAG_ID NUMBER NOT NULL,
1381
  GBE_ID NUMBER NOT NULL,
1382
  DAEMON_HOSTNAME VARCHAR2(50 BYTE),
1383
  DAEMON_MODE CHAR(1 CHAR),
1384
  GBE_BUILDFILTER VARCHAR2(255 BYTE)
1385
, PRIMARY KEY
1386
  (
1387
    RCON_ID
1388
  )
1389
  ENABLE
1390
)
1391
  TABLESPACE "USERS"
1392
  LOGGING 
1393
  PCTFREE 10
1394
  PCTUSED 40
1395
  INITRANS 1
1396
  MAXTRANS 255
1397
  STORAGE
1398
  (
1399
    INITIAL 64K
1400
    MINEXTENTS 1
1401
    MAXEXTENTS 2147483645
1402
    FREELISTS 1
1403
    FREELIST GROUPS 1
1404
    BUFFER_POOL DEFAULT
1405
  )
1406
;
1407
 
1408
CREATE TABLE GBE_MACHTYPE
1409
(
1410
  GBE_ID NUMBER NOT NULL,
1411
  GBE_VALUE VARCHAR2(20 BYTE) NOT NULL
1412
, PRIMARY KEY
1413
  (
1414
    GBE_ID
1415
  )
1416
  ENABLE
1417
)
1418
  TABLESPACE "USERS"
1419
  LOGGING 
1420
  PCTFREE 10
1421
  PCTUSED 40
1422
  INITRANS 1
1423
  MAXTRANS 255
1424
  STORAGE
1425
  (
1426
    INITIAL 64K
1427
    MINEXTENTS 1
1428
    MAXEXTENTS 2147483645
1429
    FREELISTS 1
1430
    FREELIST GROUPS 1
1431
    BUFFER_POOL DEFAULT
1432
  )
1433
;
1434
 
1435
CREATE TABLE ARCHIVE_ACTION_LOG
1436
(
1437
  USER_ID NUMBER NOT NULL,
1438
  DATE_TIME_STAMP DATE NOT NULL,
1439
  RTAG_ID NUMBER NOT NULL,
1440
  DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
1441
)
1442
  TABLESPACE "USERS"
1443
  LOGGING 
1444
  PCTFREE 10
1445
  PCTUSED 0
1446
  INITRANS 1
1447
  MAXTRANS 255
1448
  STORAGE
1449
  (
1450
    INITIAL 64K
1451
    MINEXTENTS 1
1452
    MAXEXTENTS 2147483645
1453
    FREELISTS 1
1454
    FREELIST GROUPS 1
1455
    BUFFER_POOL DEFAULT
1456
  )
1457
;
1458
 
1459
CREATE TABLE RELEASE_METRICS
1460
(
1461
  RTAG_ID NUMBER NOT NULL,
1462
  TOTAL_PACKAGES NUMBER,
1463
  AUTOBUILT NUMBER,
1464
  LINES_OF_CODE NUMBER,
1465
  UNIT_TESTED NUMBER,
1466
  AUTOTESTED NUMBER,
1467
  BRANCHES NUMBER,
1468
  LAST_BUILD_TIME DATE
1469
)
1470
  TABLESPACE "USERS"
1471
  LOGGING 
1472
  PCTFREE 10
1473
  PCTUSED 40
1474
  INITRANS 1
1475
  MAXTRANS 255
1476
  STORAGE
1477
  (
1478
    INITIAL 64K
1479
    MINEXTENTS 1
1480
    MAXEXTENTS 2147483645
1481
    FREELISTS 1
1482
    FREELIST GROUPS 1
1483
    BUFFER_POOL DEFAULT
1484
  )
1485
;
1486
 
1487
CREATE TABLE AUTOBUILD_FAILURE
1488
(
1489
  GROUP_EMAIL_ID NUMBER NOT NULL,
1490
  PROJ_ID NUMBER,
1491
  VIEW_ID NUMBER
1492
, PRIMARY KEY
1493
  (
1494
    GROUP_EMAIL_ID
1495
  )
1496
  ENABLE
1497
)
1498
  TABLESPACE "USERS"
1499
  LOGGING 
1500
  PCTFREE 10
1501
  PCTUSED 40
1502
  INITRANS 1
1503
  MAXTRANS 255
1504
  STORAGE
1505
  (
1506
    INITIAL 64K
1507
    MINEXTENTS 1
1508
    MAXEXTENTS 2147483645
1509
    FREELISTS 1
1510
    FREELIST GROUPS 1
1511
    BUFFER_POOL DEFAULT
1512
  )
1513
;
1514
 
1515
CREATE TABLE JIRA_ISSUES
1516
(
1517
  PV_ID NUMBER NOT NULL,
1518
  ISS_KEY VARCHAR2(4000 BYTE),
1519
  DATE_TIME_STAMP DATE
1520
)
59 mhunt 1521
  TABLESPACE "USERS"
51 mhunt 1522
  LOGGING 
1523
  PCTFREE 10
1524
  PCTUSED 40
1525
  INITRANS 1
1526
  MAXTRANS 255
1527
  STORAGE
1528
  (
1529
    INITIAL 64K
1530
    MINEXTENTS 1
1531
    MAXEXTENTS 2147483645
1532
    FREELISTS 1
1533
    FREELIST GROUPS 1
1534
    BUFFER_POOL DEFAULT
1535
  )
1536
;
1537
 
1538
CREATE TABLE VIEW_DEF
1539
(
1540
  VIEW_ID NUMBER NOT NULL,
1541
  PKG_ID NUMBER NOT NULL
1542
)
59 mhunt 1543
  TABLESPACE "USERS"
51 mhunt 1544
  LOGGING 
1545
  PCTFREE 10
1546
  PCTUSED 40
1547
  INITRANS 1
1548
  MAXTRANS 255
1549
  STORAGE
1550
  (
1551
    INITIAL 64K
1552
    MINEXTENTS 1
1553
    MAXEXTENTS 2147483645
1554
    FREELISTS 1
1555
    FREELIST GROUPS 1
1556
    BUFFER_POOL DEFAULT
1557
  )
1558
;
1559
 
1560
CREATE TABLE WORK_IN_PROGRESS
1561
(
1562
  RTAG_ID NUMBER NOT NULL,
1563
  PV_ID NUMBER NOT NULL,
1564
  VIEW_ID NUMBER NOT NULL
1565
)
1566
  TABLESPACE "USERS"
1567
  LOGGING 
1568
  PCTFREE 10
1569
  PCTUSED 40
1570
  INITRANS 1
1571
  MAXTRANS 255
1572
  STORAGE
1573
  (
1574
    INITIAL 64K
1575
    MINEXTENTS 1
1576
    MAXEXTENTS 2147483645
1577
    FREELISTS 1
1578
    FREELIST GROUPS 1
1579
    BUFFER_POOL DEFAULT
1580
  )
1581
;
1582
 
1583
CREATE TABLE RUN_LEVEL
1584
(
1585
  RCON_ID NUMBER,
1586
  CURRENT_BUILD_FILES CLOB,
1587
  CURRENT_RUN_LEVEL NUMBER,
1588
  PAUSE NUMBER,
1589
  CURRENT_PKG_ID_BEING_BUILT NUMBER
1590
)
1591
  TABLESPACE "USERS"
1592
  LOGGING 
1593
  PCTFREE 10
1594
  PCTUSED 40
1595
  INITRANS 1
1596
  MAXTRANS 255
1597
  STORAGE
1598
  (
1599
    INITIAL 64K
1600
    MINEXTENTS 1
1601
    MAXEXTENTS 2147483645
1602
    FREELISTS 1
1603
    FREELIST GROUPS 1
1604
    BUFFER_POOL DEFAULT
1605
  )
1606
    LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$
1607
    (
1608
      ENABLE STORAGE IN ROW
1609
      CHUNK 8192
1610
      PCTVERSION 10
1611
      NOCACHE LOGGING
1612
      TABLESPACE USERS
1613
      STORAGE
1614
      (
1615
        INITIAL 64K
1616
        MINEXTENTS 1
1617
        MAXEXTENTS 2147483645
1618
        FREELISTS 1
1619
        FREELIST GROUPS 1
1620
        BUFFER_POOL DEFAULT
1621
      )
1622
    )
1623
;
1624
 
1625
CREATE TABLE TEST_TYPES
1626
(
1627
  TEST_TYPE_ID NUMBER NOT NULL,
1628
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
1629
  DISPLAY_ORDER NUMBER
1630
, CONSTRAINT PK_TEST_TYPES PRIMARY KEY
1631
  (
1632
    TEST_TYPE_ID
1633
  )
1634
  ENABLE
1635
)
1636
  TABLESPACE "USERS"
1637
  LOGGING 
1638
  PCTFREE 10
1639
  PCTUSED 40
1640
  INITRANS 1
1641
  MAXTRANS 255
1642
  STORAGE
1643
  (
1644
    INITIAL 128K
1645
    MINEXTENTS 1
1646
    MAXEXTENTS 2147483645
1647
    FREELISTS 1
1648
    FREELIST GROUPS 1
1649
    BUFFER_POOL DEFAULT
1650
  )
1651
;
1652
 
1653
CREATE TABLE PACKAGE_DEPENDENCIES
1654
(
1655
  PV_ID NUMBER NOT NULL,
1656
  DPV_ID NUMBER NOT NULL,
1657
  PKG_ID NUMBER NOT NULL,
1658
  DPKG_ID NUMBER NOT NULL,
1659
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1660
  DISPLAY_ORDER NUMBER
1661
)
59 mhunt 1662
  TABLESPACE "USERS"
51 mhunt 1663
  LOGGING 
1664
  PCTFREE 10
1665
  PCTUSED 40
1666
  INITRANS 1
1667
  MAXTRANS 255
1668
  STORAGE
1669
  (
1670
    INITIAL 320K
1671
    MINEXTENTS 1
1672
    MAXEXTENTS 2147483645
1673
    FREELISTS 1
1674
    FREELIST GROUPS 1
1675
    BUFFER_POOL DEFAULT
1676
  )
1677
;
1678
 
1679
CREATE TABLE PRODUCT_COMPONENTS
1680
(
1681
  PV_ID NUMBER NOT NULL,
1682
  OS_ID NUMBER NOT NULL,
1683
  FILE_PATH VARCHAR2(4000 BYTE),
1684
  FILE_NAME VARCHAR2(4000 BYTE),
1685
  DESTINATION_PATH VARCHAR2(4000 BYTE),
1686
  BYTE_SIZE NUMBER,
1687
  CRC_CKSUM VARCHAR2(2000 BYTE)
1688
)
1689
  TABLESPACE "USERS"
1690
  LOGGING 
1691
  PCTFREE 10
1692
  PCTUSED 40
1693
  INITRANS 1
1694
  MAXTRANS 255
1695
  STORAGE
1696
  (
1697
    INITIAL 64K
1698
    MINEXTENTS 1
1699
    MAXEXTENTS 2147483645
1700
    FREELISTS 1
1701
    FREELIST GROUPS 1
1702
    BUFFER_POOL DEFAULT
1703
  )
1704
;
1705
 
1706
CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES
1707
(
1708
  PKG_ID NUMBER,
1709
  PKG_NAME VARCHAR2(50 BYTE),
1710
  PV_ID NUMBER,
1711
  PKG_VERSION VARCHAR2(50 BYTE),
1712
  DPV_ID NUMBER,
1713
  DPKG_NAME VARCHAR2(50 BYTE),
1714
  DPKG_VERSION VARCHAR2(50 BYTE),
1715
  ISS_DB NUMBER,
1716
  ISS_ID NUMBER
1717
)
1718
ON COMMIT PRESERVE ROWS
1719
;
1720
 
1721
CREATE TABLE PACKAGE_BUILD_INFO
1722
(
1723
  PV_ID NUMBER NOT NULL,
1724
  BM_ID NUMBER NOT NULL,
1725
  BSA_ID NUMBER
1726
)
1727
  TABLESPACE "USERS"
1728
  LOGGING 
1729
  PCTFREE 10
1730
  PCTUSED 40
1731
  INITRANS 1
1732
  MAXTRANS 255
1733
  STORAGE
1734
  (
1735
    INITIAL 64K
1736
    MINEXTENTS 1
1737
    MAXEXTENTS 2147483645
1738
    FREELISTS 1
1739
    FREELIST GROUPS 1
1740
    BUFFER_POOL DEFAULT
1741
  )
1742
;
1743
 
1744
CREATE TABLE PACKAGES
1745
(
1746
  PKG_ID NUMBER NOT NULL,
1747
  PKG_NAME VARCHAR2(255 BYTE) NOT NULL,
1748
  SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),
1749
  WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE)
1750
, CONSTRAINT PK_PACKAGES PRIMARY KEY
1751
  (
1752
    PKG_ID
1753
  )
1754
  ENABLE
1755
)
59 mhunt 1756
  TABLESPACE "USERS"
51 mhunt 1757
  LOGGING 
1758
  PCTFREE 10
1759
  PCTUSED 40
1760
  INITRANS 1
1761
  MAXTRANS 255
1762
  STORAGE
1763
  (
1764
    INITIAL 64K
1765
    MINEXTENTS 1
1766
    MAXEXTENTS 2147483645
1767
    FREELISTS 1
1768
    FREELIST GROUPS 1
1769
    BUFFER_POOL DEFAULT
1770
  )
1771
;
1772
 
1773
CREATE TABLE MEMBERS_GROUP
1774
(
1775
  GROUP_EMAIL_ID NUMBER NOT NULL,
1776
  USER_ID NUMBER
1777
)
1778
  TABLESPACE "USERS"
1779
  LOGGING 
1780
  PCTFREE 10
1781
  PCTUSED 40
1782
  INITRANS 1
1783
  MAXTRANS 255
1784
  STORAGE
1785
  (
1786
    INITIAL 64K
1787
    MINEXTENTS 1
1788
    MAXEXTENTS 2147483645
1789
    FREELISTS 1
1790
    FREELIST GROUPS 1
1791
    BUFFER_POOL DEFAULT
1792
  )
1793
;
1794
 
1795
CREATE TABLE BUILD_SERVICE_CONFIG
1796
(
1797
  SERVICE VARCHAR2(50 BYTE) NOT NULL,
1798
  CONFIG VARCHAR2(2000 BYTE) NOT NULL
1799
)
1800
  TABLESPACE "USERS"
1801
  LOGGING 
1802
  PCTFREE 10
1803
  PCTUSED 40
1804
  INITRANS 1
1805
  MAXTRANS 255
1806
  STORAGE
1807
  (
1808
    INITIAL 64K
1809
    MINEXTENTS 1
1810
    MAXEXTENTS 2147483645
1811
    FREELISTS 1
1812
    FREELIST GROUPS 1
1813
    BUFFER_POOL DEFAULT
1814
  )
1815
;
1816
 
1817
CREATE TABLE PROJECTS
1818
(
1819
  PROJ_ID NUMBER NOT NULL,
1820
  PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,
1821
  BASE_URL VARCHAR2(4000 BYTE)
1822
, CONSTRAINT PK_PROJECTS PRIMARY KEY
1823
  (
1824
    PROJ_ID
1825
  )
1826
  ENABLE
1827
)
59 mhunt 1828
  TABLESPACE "USERS"
51 mhunt 1829
  LOGGING 
1830
  PCTFREE 10
1831
  PCTUSED 40
1832
  INITRANS 1
1833
  MAXTRANS 255
1834
  STORAGE
1835
  (
1836
    INITIAL 64K
1837
    MINEXTENTS 1
1838
    MAXEXTENTS 2147483645
1839
    FREELISTS 1
1840
    FREELIST GROUPS 1
1841
    BUFFER_POOL DEFAULT
1842
  )
1843
;
1844
 
1845
CREATE TABLE VIEWS
1846
(
1847
  VIEW_ID NUMBER NOT NULL,
1848
  VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,
1849
  OWNER_ID NUMBER NOT NULL,
1850
  BASE_VIEW CHAR(1 BYTE) NOT NULL,
1851
  PUBLIC_READ CHAR(1 BYTE) NOT NULL
1852
, CONSTRAINT PK_VIEWS PRIMARY KEY
1853
  (
1854
    VIEW_ID
1855
  )
1856
  ENABLE
1857
)
59 mhunt 1858
  TABLESPACE "USERS"
51 mhunt 1859
  LOGGING 
1860
  PCTFREE 10
1861
  PCTUSED 40
1862
  INITRANS 1
1863
  MAXTRANS 255
1864
  STORAGE
1865
  (
1866
    INITIAL 64K
1867
    MINEXTENTS 1
1868
    MAXEXTENTS 2147483645
1869
    FREELISTS 1
1870
    FREELIST GROUPS 1
1871
    BUFFER_POOL DEFAULT
1872
  )
1873
;
1874
 
1875
CREATE TABLE DAEMON_ACTION_LOG
1876
(
1877
  USER_ID NUMBER NOT NULL,
1878
  ACTION_DATETIME DATE,
1879
  RCON_ID NUMBER NOT NULL,
1880
  DESCRIPTION VARCHAR2(4000 BYTE),
1881
  ACTTYPE_ID NUMBER
1882
)
1883
  TABLESPACE "USERS"
1884
  LOGGING 
1885
  PCTFREE 10
1886
  PCTUSED 40
1887
  INITRANS 1
1888
  MAXTRANS 255
1889
  STORAGE
1890
  (
1891
    INITIAL 64K
1892
    MINEXTENTS 1
1893
    MAXEXTENTS 2147483645
1894
    FREELISTS 1
1895
    FREELIST GROUPS 1
1896
    BUFFER_POOL DEFAULT
1897
  )
1898
;
1899
 
1900
CREATE TABLE DASH_BOARD
1901
(
1902
  PROJ_ID NUMBER NOT NULL,
1903
  RTAG_ID NUMBER NOT NULL,
1904
  LAST_BUILD_TIME DATE NOT NULL,
1905
  AUTOMATED_PACKAGES NUMBER NOT NULL,
1906
  TOTAL_PACKAGES NUMBER NOT NULL
1907
)
1908
  TABLESPACE "USERS"
1909
  LOGGING 
1910
  PCTFREE 10
1911
  PCTUSED 40
1912
  INITRANS 1
1913
  MAXTRANS 255
1914
  STORAGE
1915
  (
1916
    INITIAL 64K
1917
    MINEXTENTS 1
1918
    MAXEXTENTS 2147483645
1919
    FREELISTS 1
1920
    FREELIST GROUPS 1
1921
    BUFFER_POOL DEFAULT
1922
  )
1923
;
1924
 
1925
CREATE TABLE ABT_ACTION_LOG
1926
(
1927
  RCON_ID NUMBER NOT NULL,
1928
  ACTION_DATETIME DATE,
1929
  ACTION VARCHAR2(4000 BYTE)
1930
)
1931
  TABLESPACE "USERS"
1932
  LOGGING 
1933
  PCTFREE 10
1934
  PCTUSED 40
1935
  INITRANS 1
1936
  MAXTRANS 255
1937
  STORAGE
1938
  (
1939
    INITIAL 64K
1940
    MINEXTENTS 1
1941
    MAXEXTENTS 2147483645
1942
    FREELISTS 1
1943
    FREELIST GROUPS 1
1944
    BUFFER_POOL DEFAULT
1945
  )
1946
;
1947
 
1948
CREATE TABLE RUNTIME_DEPENDENCIES
1949
(
1950
  PV_ID NUMBER NOT NULL,
1951
  RTD_ID NUMBER,
1952
  RTD_COMMENTS VARCHAR2(2000 BYTE),
1953
  RTD_URL VARCHAR2(2000 BYTE),
1954
  MOD_DATE DATE NOT NULL,
1955
  MOD_USER NUMBER NOT NULL
1956
)
1957
  TABLESPACE "USERS"
1958
  LOGGING 
1959
  PCTFREE 10
1960
  PCTUSED 40
1961
  INITRANS 1
1962
  MAXTRANS 255
1963
  STORAGE
1964
  (
1965
    INITIAL 128K
1966
    MINEXTENTS 1
1967
    MAXEXTENTS 2147483645
1968
    FREELISTS 1
1969
    FREELIST GROUPS 1
1970
    BUFFER_POOL DEFAULT
1971
  )
1972
;
1973
 
1974
CREATE TABLE PACKAGE_VERSIONS
1975
(
1976
  PV_ID NUMBER NOT NULL,
1977
  PKG_ID NUMBER NOT NULL,
1978
  PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,
1979
  DLOCKED CHAR(1 BYTE) NOT NULL,
1980
  RELEASED_AT NUMBER,
1981
  MODIFIED_STAMP DATE,
1982
  MODIFIER_ID NUMBER NOT NULL,
1983
  CREATED_STAMP DATE,
1984
  CREATOR_ID NUMBER NOT NULL,
1985
  COMMENTS VARCHAR2(4000 BYTE),
1986
  V_MM VARCHAR2(50 BYTE),
1987
  V_NMM VARCHAR2(50 BYTE),
1988
  V_EXT VARCHAR2(50 BYTE),
1989
  PKG_LABEL VARCHAR2(60 BYTE),
1990
  SRC_PATH VARCHAR2(2000 BYTE),
1991
  PV_DESCRIPTION VARCHAR2(4000 BYTE),
1992
  OWNER_ID NUMBER NOT NULL,
1993
  PV_OVERVIEW VARCHAR2(4000 BYTE),
1994
  IS_PATCH CHAR(1 BYTE),
1995
  LAST_PV_ID NUMBER NOT NULL,
1996
  RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),
1997
  IS_DEPLOYABLE CHAR(1 BYTE),
1998
  IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),
1999
  IS_OBSOLETE CHAR(1 BYTE),
2000
  OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),
2001
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
2002
  CHANGE_TYPE CHAR(1 BYTE),
2003
  LINK VARCHAR2(4000 BYTE),
2004
  PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),
2005
  BS_ID NUMBER,
2006
  IS_AUTOBUILDABLE CHAR(1 BYTE),
2007
  SBOM_PRIORITY CHAR(1 BYTE),
2008
  RIPPLE_FIELD CHAR(1 CHAR),
2009
  MAXIMUM_BUILD_TIME NUMBER,
59 mhunt 2010
  ESTIMATED_COMPLETION_TIME DATE,
2011
  MAJOR_LIMIT NUMBER(10, 0),
2012
  MINOR_LIMIT NUMBER(10, 0),
2013
  PATCH_LIMIT NUMBER(10, 0),
2014
  BUILD_NUMBER_LIMIT NUMBER(10, 0)
51 mhunt 2015
, CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY
2016
  (
2017
    PV_ID
2018
  )
2019
  ENABLE
2020
)
59 mhunt 2021
  TABLESPACE "USERS"
51 mhunt 2022
  LOGGING 
2023
  PCTFREE 10
2024
  PCTUSED 40
2025
  INITRANS 1
2026
  MAXTRANS 255
2027
  STORAGE
2028
  (
2029
    INITIAL 192K
2030
    MINEXTENTS 1
2031
    MAXEXTENTS 2147483645
2032
    FREELISTS 1
2033
    FREELIST GROUPS 1
2034
    BUFFER_POOL DEFAULT
2035
  )
2036
;
2037
 
2038
CREATE TABLE REPEAT_SCHEDULE
2039
(
2040
  RPT_ID NUMBER NOT NULL,
2041
  REPEAT CHAR(1 BYTE)
2042
, PRIMARY KEY
2043
  (
2044
    RPT_ID
2045
  )
2046
  ENABLE
2047
)
2048
  TABLESPACE "USERS"
2049
  LOGGING 
2050
  PCTFREE 10
2051
  PCTUSED 40
2052
  INITRANS 1
2053
  MAXTRANS 255
2054
  STORAGE
2055
  (
2056
    INITIAL 64K
2057
    MINEXTENTS 1
2058
    MAXEXTENTS 2147483645
2059
    FREELISTS 1
2060
    FREELIST GROUPS 1
2061
    BUFFER_POOL DEFAULT
2062
  )
2063
;
2064
 
2065
CREATE TABLE CODE_REVIEW_URL
2066
(
2067
  CR_ID NUMBER NOT NULL,
2068
  PV_ID NUMBER NOT NULL,
2069
  PROJ_ID NUMBER NOT NULL,
2070
  URL VARCHAR2(4000 BYTE) NOT NULL,
2071
  REASON VARCHAR2(4000 BYTE),
2072
  DATE_OF_REVIEW DATE NOT NULL,
2073
  LAST_MODIFIED DATE
2074
, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY
2075
  (
2076
    CR_ID
2077
  )
2078
  ENABLE
2079
)
2080
  TABLESPACE "USERS"
2081
  LOGGING 
2082
  PCTFREE 10
2083
  PCTUSED 40
2084
  INITRANS 1
2085
  MAXTRANS 255
2086
  STORAGE
2087
  (
2088
    INITIAL 64K
2089
    MINEXTENTS 1
2090
    MAXEXTENTS 2147483645
2091
    FREELISTS 1
2092
    FREELIST GROUPS 1
2093
    BUFFER_POOL DEFAULT
2094
  )
2095
;
2096
 
2097
CREATE TABLE DEF_ACTION_BUTTONS
2098
(
2099
  ABTN_ID NUMBER NOT NULL,
2100
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
2101
  TEXT VARCHAR2(50 BYTE),
2102
  ACTION_LINK VARCHAR2(4000 BYTE),
2103
  EVENT_HANDLER VARCHAR2(4000 BYTE),
2104
  IMG_ENABLED VARCHAR2(1000 BYTE),
2105
  IMG_DISABLED VARCHAR2(1000 BYTE),
2106
  HINT VARCHAR2(255 BYTE),
2107
  VISIBLE CHAR(1 BYTE) NOT NULL,
2108
  ACTIVE CHAR(1 BYTE) NOT NULL,
2109
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
2110
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
2111
  (
2112
    ABTN_ID
2113
  )
2114
  ENABLE
2115
)
2116
  TABLESPACE "USERS"
2117
  LOGGING 
2118
  PCTFREE 10
2119
  PCTUSED 40
2120
  INITRANS 1
2121
  MAXTRANS 255
2122
  STORAGE
2123
  (
2124
    INITIAL 64K
2125
    MINEXTENTS 1
2126
    MAXEXTENTS 2147483645
2127
    FREELISTS 1
2128
    FREELIST GROUPS 1
2129
    BUFFER_POOL DEFAULT
2130
  )
2131
;
2132
 
2133
CREATE TABLE CQ_ISSUES
2134
(
2135
  PV_ID NUMBER NOT NULL,
2136
  ISS_DB NUMBER NOT NULL,
2137
  ISS_ID NUMBER NOT NULL,
2138
  ISS_STATE NUMBER NOT NULL,
2139
  MOD_DATE DATE NOT NULL,
2140
  NOTES VARCHAR2(255 BYTE)
2141
)
59 mhunt 2142
  TABLESPACE "USERS"
51 mhunt 2143
  LOGGING 
2144
  PCTFREE 10
2145
  PCTUSED 40
2146
  INITRANS 1
2147
  MAXTRANS 255
2148
  STORAGE
2149
  (
2150
    INITIAL 64K
2151
    MINEXTENTS 1
2152
    MAXEXTENTS 2147483645
2153
    FREELISTS 1
2154
    FREELIST GROUPS 1
2155
    BUFFER_POOL DEFAULT
2156
  )
2157
;
2158
 
2159
ALTER TABLE PLANNED
2160
ADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE
2161
(
2162
  PV_ID,
2163
  RTAG_ID
2164
)
2165
 ENABLE
2166
;
2167
 
2168
ALTER TABLE PACKAGE_METRICS
2169
ADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE
2170
(
2171
  PV_ID
2172
)
2173
 ENABLE
2174
;
2175
 
2176
ALTER TABLE RELEASE_METRICS
2177
ADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE
2178
(
2179
  RTAG_ID
2180
)
2181
 ENABLE
2182
;
2183
 
2184
ALTER TABLE PACKAGE_BUILD_ENV
2185
ADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY
2186
(
2187
  BE_ID
2188
)
2189
REFERENCES BUILD_ENVIRONMENTS
2190
(
2191
BE_ID
2192
) ENABLE
2193
;
2194
 
2195
ALTER TABLE PACKAGE_BUILD_ENV
2196
ADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY
2197
(
2198
  PV_ID
2199
)
2200
REFERENCES PACKAGE_VERSIONS
2201
(
2202
PV_ID
2203
) ENABLE
2204
;
2205
 
2206
ALTER TABLE NOTIFICATION_HISTORY
2207
ADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY
2208
(
2209
  PV_ID
2210
)
2211
REFERENCES PACKAGE_VERSIONS
2212
(
2213
PV_ID
2214
) DISABLE
2215
;
2216
 
2217
ALTER TABLE NOTIFICATION_HISTORY
2218
ADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY
2219
(
2220
  RTAG_ID
2221
)
2222
REFERENCES RELEASE_TAGS
2223
(
2224
RTAG_ID
2225
) ENABLE
2226
;
2227
 
2228
ALTER TABLE IGNORE_WARNINGS
2229
ADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY
2230
(
2231
  RTAG_ID
2232
)
2233
REFERENCES RELEASE_TAGS
2234
(
2235
RTAG_ID
2236
) ENABLE
2237
;
2238
 
2239
ALTER TABLE IGNORE_WARNINGS
2240
ADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY
2241
(
2242
  DPV_ID
2243
)
2244
REFERENCES PACKAGE_VERSIONS
2245
(
2246
PV_ID
2247
) ENABLE
2248
;
2249
 
2250
ALTER TABLE IGNORE_WARNINGS
2251
ADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY
2252
(
2253
  PV_ID
2254
)
2255
REFERENCES PACKAGE_VERSIONS
2256
(
2257
PV_ID
2258
) ENABLE
2259
;
2260
 
57 mhunt 2261
ALTER TABLE LICENCING
2262
ADD FOREIGN KEY
2263
(
2264
  PV_ID
2265
)
2266
REFERENCES PACKAGE_VERSIONS
2267
(
2268
PV_ID
2269
) ENABLE
2270
;
2271
 
2272
ALTER TABLE LICENCING
2273
ADD FOREIGN KEY
2274
(
2275
  LICENCE
2276
)
2277
REFERENCES LICENCES
2278
(
2279
LICENCE
2280
) ENABLE
2281
;
2282
 
51 mhunt 2283
ALTER TABLE PACKAGE_DOCUMENTS
2284
ADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY
2285
(
2286
  PV_ID
2287
)
2288
REFERENCES PACKAGE_VERSIONS
2289
(
2290
PV_ID
2291
) ENABLE
2292
;
2293
 
2294
ALTER TABLE BUILD_STANDARDS_ADDENDUM
2295
ADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY
2296
(
2297
  BS_ID
2298
)
2299
REFERENCES BUILD_STANDARDS
2300
(
2301
BS_ID
2302
) ENABLE
2303
;
2304
 
2305
ALTER TABLE UNIT_TESTS
2306
ADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY
2307
(
2308
  TEST_TYPES_FK
2309
)
2310
REFERENCES TEST_TYPES
2311
(
2312
TEST_TYPE_ID
2313
) ENABLE
2314
;
2315
 
2316
ALTER TABLE UNIT_TESTS
2317
ADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY
2318
(
2319
  PV_ID
2320
)
2321
REFERENCES PACKAGE_VERSIONS
2322
(
2323
PV_ID
2324
) ENABLE
2325
;
2326
 
2327
ALTER TABLE RELEASE_COMPONENTS
2328
ADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY
2329
(
2330
  PV_ID
2331
)
2332
REFERENCES PACKAGE_VERSIONS
2333
(
2334
PV_ID
2335
) ENABLE
2336
;
2337
 
2338
ALTER TABLE BUILD_ORDER
2339
ADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY
2340
(
2341
  PV_ID
2342
)
2343
REFERENCES PACKAGE_VERSIONS
2344
(
2345
PV_ID
2346
) DISABLE
2347
;
2348
 
2349
ALTER TABLE BUILD_ORDER
2350
ADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY
2351
(
2352
  RTAG_ID
2353
)
2354
REFERENCES RELEASE_TAGS
2355
(
2356
RTAG_ID
2357
) ENABLE
2358
;
2359
 
2360
ALTER TABLE PLANNED
53 mhunt 2361
ADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY
51 mhunt 2362
(
53 mhunt 2363
  RTAG_ID
51 mhunt 2364
)
53 mhunt 2365
REFERENCES RELEASE_TAGS
51 mhunt 2366
(
53 mhunt 2367
RTAG_ID
51 mhunt 2368
) ENABLE
2369
;
2370
 
2371
ALTER TABLE PLANNED
53 mhunt 2372
ADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY
51 mhunt 2373
(
53 mhunt 2374
  PV_ID
51 mhunt 2375
)
53 mhunt 2376
REFERENCES PACKAGE_VERSIONS
51 mhunt 2377
(
53 mhunt 2378
PV_ID
51 mhunt 2379
) ENABLE
2380
;
2381
 
2382
ALTER TABLE PLANNED
2383
ADD CONSTRAINT REFVIEWS55 FOREIGN KEY
2384
(
2385
  VIEW_ID
2386
)
2387
REFERENCES VIEWS
2388
(
2389
VIEW_ID
2390
) ENABLE
2391
;
2392
 
2393
ALTER TABLE PROJECT_ACTION_LOG
2394
ADD FOREIGN KEY
2395
(
2396
  RTAG_ID
2397
)
2398
REFERENCES RELEASE_TAGS
2399
(
2400
RTAG_ID
2401
) DISABLE
2402
;
2403
 
2404
ALTER TABLE PROJECT_ACTION_LOG
2405
ADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY
2406
(
2407
  ACTTYPE_ID
2408
)
2409
REFERENCES ACTION_TYPE
2410
(
2411
ACTTYPE_ID
2412
) ENABLE
2413
;
2414
 
2415
ALTER TABLE PACKAGE_METRICS
2416
ADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY
2417
(
2418
  PV_ID
2419
)
2420
REFERENCES PACKAGE_VERSIONS
2421
(
2422
PV_ID
2423
) ENABLE
2424
;
2425
 
2426
ALTER TABLE RELEASE_LINKS
2427
ADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY
2428
(
2429
  REF_RTAG_ID
2430
)
2431
REFERENCES RELEASE_TAGS
2432
(
2433
RTAG_ID
2434
) ENABLE
2435
;
2436
 
2437
ALTER TABLE RELEASE_LINKS
2438
ADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY
2439
(
2440
  RTAG_ID
2441
)
2442
REFERENCES RELEASE_TAGS
2443
(
2444
RTAG_ID
2445
) ENABLE
2446
;
2447
 
2448
ALTER TABLE BUILD_ENV_DOCUMENTS
2449
ADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY
2450
(
2451
  BE_ID
2452
)
2453
REFERENCES BUILD_ENVIRONMENTS
2454
(
2455
BE_ID
2456
) ENABLE
2457
;
2458
 
2459
ALTER TABLE ACTION_LOG
2460
ADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY
2461
(
2462
  ACTTYPE_ID
2463
)
2464
REFERENCES ACTION_TYPE
2465
(
2466
ACTTYPE_ID
2467
) ENABLE
2468
;
2469
 
2470
ALTER TABLE ADDITIONAL_NOTES
2471
ADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY
2472
(
2473
  PV_ID
2474
)
2475
REFERENCES PACKAGE_VERSIONS
2476
(
2477
PV_ID
2478
) ENABLE
2479
;
2480
 
2481
ALTER TABLE VTREES_WORLD
2482
ADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY
2483
(
2484
  VTREE_ID
2485
)
2486
REFERENCES VTREES
2487
(
2488
VTREE_ID
2489
) ENABLE
2490
;
2491
 
2492
ALTER TABLE VTREES_WORLD
2493
ADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY
2494
(
2495
  WORLD_ID
2496
)
2497
REFERENCES WORLDS
2498
(
2499
WORLD_ID
2500
) ENABLE
2501
;
2502
 
2503
ALTER TABLE CODE_REVIEWS
2504
ADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY
2505
(
2506
  PV_ID
2507
)
2508
REFERENCES PACKAGE_VERSIONS
2509
(
2510
PV_ID
2511
) ENABLE
2512
;
2513
 
2514
ALTER TABLE PLANNED_VERSIONS
2515
ADD FOREIGN KEY
2516
(
2517
  PKG_ID
2518
)
2519
REFERENCES PACKAGES
2520
(
2521
PKG_ID
2522
) ENABLE
2523
;
2524
 
2525
ALTER TABLE DO_NOT_RIPPLE
2526
ADD FOREIGN KEY
2527
(
2528
  PV_ID
2529
)
2530
REFERENCES PACKAGE_VERSIONS
2531
(
2532
PV_ID
2533
) ENABLE
2534
;
2535
 
2536
ALTER TABLE DO_NOT_RIPPLE
2537
ADD FOREIGN KEY
2538
(
2539
  RTAG_ID
2540
)
2541
REFERENCES RELEASE_TAGS
2542
(
2543
RTAG_ID
2544
) ENABLE
2545
;
2546
 
2547
ALTER TABLE RELEASE_CONTENT
2548
ADD FOREIGN KEY
2549
(
2550
  PKG_ID
2551
)
2552
REFERENCES PACKAGES
2553
(
2554
PKG_ID
2555
) ENABLE
2556
;
2557
 
2558
ALTER TABLE RELEASE_CONTENT
2559
ADD FOREIGN KEY
2560
(
2561
  PRODUCT_STATE
2562
)
2563
REFERENCES PRODUCT_STATES
2564
(
2565
STATE_ID
2566
) ENABLE
2567
;
2568
 
2569
ALTER TABLE PACKAGE_PROCESSES
2570
ADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY
2571
(
2572
  PROC_ID
2573
)
2574
REFERENCES PROCESSES
2575
(
2576
PROC_ID
2577
) ENABLE
2578
;
2579
 
2580
ALTER TABLE PACKAGE_PROCESSES
2581
ADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY
2582
(
2583
  PV_ID
2584
)
2585
REFERENCES PACKAGE_VERSIONS
2586
(
2587
PV_ID
2588
) ENABLE
2589
;
2590
 
2591
ALTER TABLE ADVISORY_RIPPLE
2592
ADD FOREIGN KEY
2593
(
2594
  RTAG_ID
2595
)
2596
REFERENCES RELEASE_TAGS
2597
(
2598
RTAG_ID
2599
) ENABLE
2600
;
2601
 
2602
ALTER TABLE ADVISORY_RIPPLE
2603
ADD FOREIGN KEY
2604
(
2605
  PV_ID
2606
)
2607
REFERENCES PACKAGE_VERSIONS
2608
(
2609
PV_ID
2610
) ENABLE
2611
;
2612
 
2613
ALTER TABLE PACKAGE_PATCHES
2614
ADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY
2615
(
2616
  PATCH_ID
2617
)
2618
REFERENCES PACKAGE_VERSIONS
2619
(
2620
PV_ID
2621
) ENABLE
2622
;
2623
 
2624
ALTER TABLE PACKAGE_PATCHES
2625
ADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY
2626
(
2627
  PV_ID
2628
)
2629
REFERENCES PACKAGE_VERSIONS
2630
(
2631
PV_ID
2632
) ENABLE
2633
;
2634
 
2635
ALTER TABLE PACKAGE_INTEREST
2636
ADD FOREIGN KEY
2637
(
2638
  PROJ_ID
2639
)
2640
REFERENCES PROJECTS
2641
(
2642
PROJ_ID
2643
) ENABLE
2644
;
2645
 
2646
ALTER TABLE RELEASE_CONFIG
2647
ADD FOREIGN KEY
2648
(
2649
  RTAG_ID
2650
)
2651
REFERENCES RELEASE_TAGS
2652
(
2653
RTAG_ID
2654
) ENABLE
2655
;
2656
 
2657
ALTER TABLE RELEASE_CONFIG
2658
ADD FOREIGN KEY
2659
(
2660
  GBE_ID
2661
)
2662
REFERENCES GBE_MACHTYPE
2663
(
2664
GBE_ID
2665
) ENABLE
2666
;
2667
 
2668
ALTER TABLE RELEASE_METRICS
2669
ADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY
2670
(
2671
  RTAG_ID
2672
)
2673
REFERENCES RELEASE_TAGS
2674
(
2675
RTAG_ID
2676
) ENABLE
2677
;
2678
 
2679
ALTER TABLE AUTOBUILD_FAILURE
2680
ADD FOREIGN KEY
2681
(
2682
  VIEW_ID
2683
)
2684
REFERENCES VIEWS
2685
(
2686
VIEW_ID
2687
) ENABLE
2688
;
2689
 
2690
ALTER TABLE AUTOBUILD_FAILURE
2691
ADD FOREIGN KEY
2692
(
2693
  PROJ_ID
2694
)
2695
REFERENCES PROJECTS
2696
(
2697
PROJ_ID
2698
) ENABLE
2699
;
2700
 
2701
ALTER TABLE JIRA_ISSUES
2702
ADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY
2703
(
2704
  PV_ID
2705
)
2706
REFERENCES PACKAGE_VERSIONS
2707
(
2708
PV_ID
2709
) ENABLE
2710
;
2711
 
2712
ALTER TABLE WORK_IN_PROGRESS
2713
ADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY
2714
(
2715
  PV_ID
2716
)
2717
REFERENCES PACKAGE_VERSIONS
2718
(
2719
PV_ID
2720
) ENABLE
2721
;
2722
 
2723
ALTER TABLE WORK_IN_PROGRESS
2724
ADD CONSTRAINT REFVIEWS52 FOREIGN KEY
2725
(
2726
  VIEW_ID
2727
)
2728
REFERENCES VIEWS
2729
(
2730
VIEW_ID
2731
) ENABLE
2732
;
2733
 
2734
ALTER TABLE WORK_IN_PROGRESS
2735
ADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY
2736
(
2737
  RTAG_ID
2738
)
2739
REFERENCES RELEASE_TAGS
2740
(
2741
RTAG_ID
2742
) ENABLE
2743
;
2744
 
2745
ALTER TABLE RUN_LEVEL
2746
ADD FOREIGN KEY
2747
(
2748
  RCON_ID
2749
)
2750
REFERENCES RELEASE_CONFIG
2751
(
2752
RCON_ID
2753
) ENABLE
2754
;
2755
 
2756
ALTER TABLE RUN_LEVEL
2757
ADD FOREIGN KEY
2758
(
2759
  CURRENT_PKG_ID_BEING_BUILT
2760
)
2761
REFERENCES PACKAGES
2762
(
2763
PKG_ID
2764
) ENABLE
2765
;
2766
 
2767
ALTER TABLE PRODUCT_COMPONENTS
2768
ADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY
2769
(
2770
  PV_ID
2771
)
2772
REFERENCES PACKAGE_VERSIONS
2773
(
2774
PV_ID
2775
) ENABLE
2776
;
2777
 
2778
ALTER TABLE PACKAGE_BUILD_INFO
2779
ADD FOREIGN KEY
2780
(
2781
  PV_ID
2782
)
2783
REFERENCES PACKAGE_VERSIONS
2784
(
2785
PV_ID
2786
) ENABLE
2787
;
2788
 
2789
ALTER TABLE PACKAGE_BUILD_INFO
2790
ADD FOREIGN KEY
2791
(
2792
  BM_ID
2793
)
2794
REFERENCES BUILD_MACHINES
2795
(
2796
BM_ID
2797
) ENABLE
2798
;
2799
 
2800
ALTER TABLE MEMBERS_GROUP
2801
ADD FOREIGN KEY
2802
(
2803
  GROUP_EMAIL_ID
2804
)
2805
REFERENCES AUTOBUILD_FAILURE
2806
(
2807
GROUP_EMAIL_ID
2808
) ENABLE
2809
;
2810
 
2811
ALTER TABLE DAEMON_ACTION_LOG
2812
ADD FOREIGN KEY
2813
(
2814
  ACTTYPE_ID
2815
)
2816
REFERENCES ACTION_TYPE
2817
(
2818
ACTTYPE_ID
2819
) ENABLE
2820
;
2821
 
2822
ALTER TABLE DAEMON_ACTION_LOG
2823
ADD FOREIGN KEY
2824
(
2825
  RCON_ID
2826
)
2827
REFERENCES RELEASE_CONFIG
2828
(
2829
RCON_ID
2830
) ENABLE
2831
;
2832
 
2833
ALTER TABLE DASH_BOARD
2834
ADD FOREIGN KEY
2835
(
2836
  PROJ_ID
2837
)
2838
REFERENCES PROJECTS
2839
(
2840
PROJ_ID
2841
) ENABLE
2842
;
2843
 
2844
ALTER TABLE DASH_BOARD
2845
ADD FOREIGN KEY
2846
(
2847
  RTAG_ID
2848
)
2849
REFERENCES RELEASE_TAGS
2850
(
2851
RTAG_ID
2852
) ENABLE
2853
;
2854
 
2855
ALTER TABLE ABT_ACTION_LOG
2856
ADD FOREIGN KEY
2857
(
2858
  RCON_ID
2859
)
2860
REFERENCES RELEASE_CONFIG
2861
(
2862
RCON_ID
2863
) ENABLE
2864
;
2865
 
2866
ALTER TABLE RUNTIME_DEPENDENCIES
2867
ADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY
2868
(
2869
  RTD_ID
2870
)
2871
REFERENCES PACKAGE_VERSIONS
2872
(
2873
PV_ID
2874
) ENABLE
2875
;
2876
 
2877
ALTER TABLE RUNTIME_DEPENDENCIES
2878
ADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY
2879
(
2880
  PV_ID
2881
)
2882
REFERENCES PACKAGE_VERSIONS
2883
(
2884
PV_ID
2885
) ENABLE
2886
;
2887
 
2888
ALTER TABLE PACKAGE_VERSIONS
2889
ADD FOREIGN KEY
2890
(
2891
  BS_ID
2892
)
2893
REFERENCES BUILD_STANDARDS
2894
(
2895
BS_ID
2896
) ENABLE
2897
;
2898
 
2899
ALTER TABLE CODE_REVIEW_URL
2900
ADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY
2901
(
2902
  PROJ_ID
2903
)
2904
REFERENCES PROJECTS
2905
(
2906
PROJ_ID
2907
) ENABLE
2908
;
2909
 
2910
ALTER TABLE CODE_REVIEW_URL
2911
ADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY
2912
(
2913
  PV_ID
2914
)
2915
REFERENCES PACKAGE_VERSIONS
2916
(
2917
PV_ID
2918
) ENABLE
2919
;
2920
 
2921
ALTER TABLE CQ_ISSUES
2922
ADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY
2923
(
2924
  PV_ID
2925
)
2926
REFERENCES PACKAGE_VERSIONS
2927
(
2928
PV_ID
2929
) ENABLE
2930
;
2931
 
2932
ALTER TABLE MICROSOFTDTPROPERTIES
2933
ADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK
2934
("PROPERTY" IS NOT NULL)
2935
 ENABLE
2936
;
2937
 
2938
ALTER TABLE MICROSOFTDTPROPERTIES
2939
ADD CONSTRAINT MICROSOFT_NN_ID CHECK
2940
("ID" IS NOT NULL)
2941
 ENABLE
2942
;
2943
 
2944
ALTER TABLE MICROSOFTDTPROPERTIES
2945
ADD CONSTRAINT MICROSOFT_NN_VERSION CHECK
2946
("VERSION" IS NOT NULL)
2947
 ENABLE
2948
;
2949
 
2950
ALTER TABLE RIPPLE_FIELD_STATES
2951
ADD CHECK
2952
("STATE_ACRONYM" IS NOT NULL)
2953
 DISABLE
2954
;
2955
 
2956
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;
2957
 
2958
CREATE OR REPLACE VIEW ENVIRONMENT_VIEW AS SELECT 2 AS ENV_AREA,
2959
    rc.PV_ID,
2960
    rc.RTAG_ID,
2961
    rc.BASE_VIEW_ID AS VIEW_ID,
2962
    rc.PKG_STATE,
2963
 rc.DEPRECATED_STATE,
2964
    rc.INSERTOR_ID,
53 mhunt 2965
    rc.INSERT_STAMP,
2966
    ' ' AS OPERATION
51 mhunt 2967
  FROM RELEASE_CONTENT rc
2968
UNION
2969
SELECT 0 AS ENV_AREA,
2970
    wip.PV_ID,
2971
    wip.RTAG_ID,
2972
    wip.VIEW_ID,
2973
    NULL AS PKG_STATE,
2974
 NULL AS DEPRECATED_STATE,
2975
    NULL AS INSERTOR_ID,
53 mhunt 2976
    NULL AS INSERT_STAMP,
2977
    ' ' AS OPERATION
2978
  FROM WORK_IN_PROGRESS wip
2979
UNION
51 mhunt 2980
SELECT 1 AS ENV_AREA,
2981
    pl.PV_ID,
2982
    pl.RTAG_ID,
2983
    pl.VIEW_ID,
2984
    NULL AS PKG_STATE,
2985
 NULL AS DEPRECATED_STATE,
2986
    NULL AS INSERTOR_ID,
53 mhunt 2987
    NULL AS INSERT_STAMP,
2988
    pl.operation
59 mhunt 2989
FROM PLANNED pl;
51 mhunt 2990
 
2991
CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC)  TABLESPACE "USERS"
2992
  LOGGING 
2993
  PCTFREE 10
2994
  INITRANS 2
2995
  MAXTRANS 255
2996
  STORAGE
2997
  (
2998
    INITIAL 128K
2999
    MINEXTENTS 1
3000
    MAXEXTENTS 2147483645
3001
    FREELISTS 1
3002
    FREELIST GROUPS 1
3003
    BUFFER_POOL DEFAULT
3004
  )
3005
;
3006
 
3007
CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3008
  NOLOGGING 
3009
  PCTFREE 10
3010
  INITRANS 2
3011
  MAXTRANS 255
3012
  STORAGE
3013
  (
3014
    INITIAL 128K
3015
    MINEXTENTS 1
3016
    MAXEXTENTS 2147483645
3017
    FREELISTS 1
3018
    FREELIST GROUPS 1
3019
    BUFFER_POOL DEFAULT
3020
  )
3021
;
3022
 
3023
CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC)  TABLESPACE "USERS"
3024
  NOLOGGING 
3025
  PCTFREE 10
3026
  INITRANS 2
3027
  MAXTRANS 255
3028
  STORAGE
3029
  (
3030
    INITIAL 128K
3031
    MINEXTENTS 1
3032
    MAXEXTENTS 2147483645
3033
    FREELISTS 1
3034
    FREELIST GROUPS 1
3035
    BUFFER_POOL DEFAULT
3036
  )
3037
;
3038
 
3039
CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC)  TABLESPACE "USERS"
3040
  NOLOGGING 
3041
  PCTFREE 10
3042
  INITRANS 2
3043
  MAXTRANS 255
3044
  STORAGE
3045
  (
3046
    INITIAL 128K
3047
    MINEXTENTS 1
3048
    MAXEXTENTS 2147483645
3049
    FREELISTS 1
3050
    FREELIST GROUPS 1
3051
    BUFFER_POOL DEFAULT
3052
  )
3053
;
3054
 
3055
CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC)  TABLESPACE "USERS"
3056
  LOGGING 
3057
  PCTFREE 10
3058
  INITRANS 2
3059
  MAXTRANS 255
3060
  STORAGE
3061
  (
3062
    INITIAL 64K
3063
    MINEXTENTS 1
3064
    MAXEXTENTS 2147483645
3065
    FREELISTS 1
3066
    FREELIST GROUPS 1
3067
    BUFFER_POOL DEFAULT
3068
  )
3069
;
3070
 
3071
CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3072
  LOGGING 
3073
  PCTFREE 10
3074
  INITRANS 2
3075
  MAXTRANS 255
3076
  STORAGE
3077
  (
3078
    INITIAL 64K
3079
    MINEXTENTS 1
3080
    MAXEXTENTS 2147483645
3081
    FREELISTS 1
3082
    FREELIST GROUPS 1
3083
    BUFFER_POOL DEFAULT
3084
  )
3085
;
3086
 
3087
CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC)  TABLESPACE "USERS"
3088
  LOGGING 
3089
  PCTFREE 10
3090
  INITRANS 2
3091
  MAXTRANS 255
3092
  STORAGE
3093
  (
3094
    INITIAL 64K
3095
    MINEXTENTS 1
3096
    MAXEXTENTS 2147483645
3097
    FREELISTS 1
3098
    FREELIST GROUPS 1
3099
    BUFFER_POOL DEFAULT
3100
  )
3101
;
3102
 
3103
CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC)  TABLESPACE "USERS"
3104
  LOGGING 
3105
  PCTFREE 10
3106
  INITRANS 2
3107
  MAXTRANS 255
3108
  STORAGE
3109
  (
3110
    INITIAL 128K
3111
    MINEXTENTS 1
3112
    MAXEXTENTS 2147483645
3113
    FREELISTS 1
3114
    FREELIST GROUPS 1
3115
    BUFFER_POOL DEFAULT
3116
  )
3117
;
3118
 
3119
CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
3120
  LOGGING 
3121
  PCTFREE 10
3122
  INITRANS 2
3123
  MAXTRANS 255
3124
  STORAGE
3125
  (
3126
    INITIAL 128K
3127
    MINEXTENTS 1
3128
    MAXEXTENTS 2147483645
3129
    FREELISTS 1
3130
    FREELIST GROUPS 1
3131
    BUFFER_POOL DEFAULT
3132
  )
3133
;
3134
 
3135
CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC)  TABLESPACE "USERS"
3136
  LOGGING 
3137
  PCTFREE 10
3138
  INITRANS 2
3139
  MAXTRANS 255
3140
  STORAGE
3141
  (
3142
    INITIAL 128K
3143
    MINEXTENTS 1
3144
    MAXEXTENTS 2147483645
3145
    FREELISTS 1
3146
    FREELIST GROUPS 1
3147
    BUFFER_POOL DEFAULT
3148
  )
3149
;
3150
 
3151
CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3152
  LOGGING 
3153
  PCTFREE 10
3154
  INITRANS 2
3155
  MAXTRANS 255
3156
  STORAGE
3157
  (
3158
    INITIAL 128K
3159
    MINEXTENTS 1
3160
    MAXEXTENTS 2147483645
3161
    FREELISTS 1
3162
    FREELIST GROUPS 1
3163
    BUFFER_POOL DEFAULT
3164
  )
3165
;
3166
 
3167
CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3168
  LOGGING 
3169
  PCTFREE 10
3170
  INITRANS 2
3171
  MAXTRANS 255
3172
  STORAGE
3173
  (
3174
    INITIAL 128K
3175
    MINEXTENTS 1
3176
    MAXEXTENTS 2147483645
3177
    FREELISTS 1
3178
    FREELIST GROUPS 1
3179
    BUFFER_POOL DEFAULT
3180
  )
3181
;
3182
 
3183
CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC)  TABLESPACE "USERS"
3184
  LOGGING 
3185
  PCTFREE 10
3186
  INITRANS 2
3187
  MAXTRANS 255
3188
  STORAGE
3189
  (
3190
    INITIAL 64K
3191
    MINEXTENTS 1
3192
    MAXEXTENTS 2147483645
3193
    FREELISTS 1
3194
    FREELIST GROUPS 1
3195
    BUFFER_POOL DEFAULT
3196
  )
3197
;
3198
 
3199
CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC)  TABLESPACE "USERS"
3200
  LOGGING 
3201
  PCTFREE 10
3202
  INITRANS 2
3203
  MAXTRANS 255
3204
  STORAGE
3205
  (
3206
    INITIAL 128K
3207
    MINEXTENTS 1
3208
    MAXEXTENTS 2147483645
3209
    FREELISTS 1
3210
    FREELIST GROUPS 1
3211
    BUFFER_POOL DEFAULT
3212
  )
3213
;
3214
 
3215
CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC)  TABLESPACE "USERS"
3216
  LOGGING 
3217
  PCTFREE 10
3218
  INITRANS 2
3219
  MAXTRANS 255
3220
  STORAGE
3221
  (
3222
    INITIAL 128K
3223
    MINEXTENTS 1
3224
    MAXEXTENTS 2147483645
3225
    FREELISTS 1
3226
    FREELIST GROUPS 1
3227
    BUFFER_POOL DEFAULT
3228
  )
3229
;
3230
 
3231
CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3232
  LOGGING 
3233
  PCTFREE 10
3234
  INITRANS 2
3235
  MAXTRANS 255
3236
  STORAGE
3237
  (
3238
    INITIAL 128K
3239
    MINEXTENTS 1
3240
    MAXEXTENTS 2147483645
3241
    FREELISTS 1
3242
    FREELIST GROUPS 1
3243
    BUFFER_POOL DEFAULT
3244
  )
3245
;
3246
 
3247
CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC)  TABLESPACE "USERS"
3248
  LOGGING 
3249
  PCTFREE 10
3250
  INITRANS 2
3251
  MAXTRANS 255
3252
  STORAGE
3253
  (
3254
    INITIAL 128K
3255
    MINEXTENTS 1
3256
    MAXEXTENTS 2147483645
3257
    FREELISTS 1
3258
    FREELIST GROUPS 1
3259
    BUFFER_POOL DEFAULT
3260
  )
3261
;
3262
 
3263
CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3264
  LOGGING 
3265
  PCTFREE 10
3266
  INITRANS 2
3267
  MAXTRANS 255
3268
  STORAGE
3269
  (
3270
    INITIAL 64K
3271
    MINEXTENTS 1
3272
    MAXEXTENTS 2147483645
3273
    FREELISTS 1
3274
    FREELIST GROUPS 1
3275
    BUFFER_POOL DEFAULT
3276
  )
3277
;
3278
 
3279
CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3280
  LOGGING 
3281
  PCTFREE 10
3282
  INITRANS 2
3283
  MAXTRANS 255
3284
  STORAGE
3285
  (
3286
    INITIAL 64K
3287
    MINEXTENTS 1
3288
    MAXEXTENTS 2147483645
3289
    FREELISTS 1
3290
    FREELIST GROUPS 1
3291
    BUFFER_POOL DEFAULT
3292
  )
3293
;
3294
 
3295
CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC)  TABLESPACE "USERS"
3296
  LOGGING 
3297
  PCTFREE 10
3298
  INITRANS 2
3299
  MAXTRANS 255
3300
  STORAGE
3301
  (
3302
    INITIAL 128K
3303
    MINEXTENTS 1
3304
    MAXEXTENTS 2147483645
3305
    FREELISTS 1
3306
    FREELIST GROUPS 1
3307
    BUFFER_POOL DEFAULT
3308
  )
3309
;
3310
 
3311
CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC)  TABLESPACE "USERS"
3312
  LOGGING 
3313
  PCTFREE 10
3314
  INITRANS 2
3315
  MAXTRANS 255
3316
  STORAGE
3317
  (
3318
    INITIAL 64K
3319
    MINEXTENTS 1
3320
    MAXEXTENTS 2147483645
3321
    FREELISTS 1
3322
    FREELIST GROUPS 1
3323
    BUFFER_POOL DEFAULT
3324
  )
3325
;
3326
 
3327
CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3328
  LOGGING 
3329
  PCTFREE 10
3330
  INITRANS 2
3331
  MAXTRANS 255
3332
  STORAGE
3333
  (
3334
    INITIAL 64K
3335
    MINEXTENTS 1
3336
    MAXEXTENTS 2147483645
3337
    FREELISTS 1
3338
    FREELIST GROUPS 1
3339
    BUFFER_POOL DEFAULT
3340
  )
3341
;
3342
 
3343
CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3344
  LOGGING 
3345
  PCTFREE 10
3346
  INITRANS 2
3347
  MAXTRANS 255
3348
  STORAGE
3349
  (
3350
    INITIAL 64K
3351
    MINEXTENTS 1
3352
    MAXEXTENTS 2147483645
3353
    FREELISTS 1
3354
    FREELIST GROUPS 1
3355
    BUFFER_POOL DEFAULT
3356
  )
3357
;
3358
 
3359
CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC)  TABLESPACE "USERS"
3360
  LOGGING 
3361
  PCTFREE 10
3362
  INITRANS 2
3363
  MAXTRANS 255
3364
  STORAGE
3365
  (
3366
    INITIAL 64K
3367
    MINEXTENTS 1
3368
    MAXEXTENTS 2147483645
3369
    FREELISTS 1
3370
    FREELIST GROUPS 1
3371
    BUFFER_POOL DEFAULT
3372
  )
3373
;
3374
 
59 mhunt 3375
CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC)  TABLESPACE "USERS"
51 mhunt 3376
  LOGGING 
3377
  PCTFREE 10
3378
  INITRANS 2
3379
  MAXTRANS 255
3380
  STORAGE
3381
  (
3382
    INITIAL 64K
3383
    MINEXTENTS 1
3384
    MAXEXTENTS 2147483645
3385
    FREELISTS 1
3386
    FREELIST GROUPS 1
3387
    BUFFER_POOL DEFAULT
3388
  )
3389
;
3390
 
59 mhunt 3391
CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC)  TABLESPACE "USERS"
51 mhunt 3392
  LOGGING 
3393
  PCTFREE 10
3394
  INITRANS 2
3395
  MAXTRANS 255
3396
  STORAGE
3397
  (
3398
    INITIAL 64K
3399
    MINEXTENTS 1
3400
    MAXEXTENTS 2147483645
3401
    FREELISTS 1
3402
    FREELIST GROUPS 1
3403
    BUFFER_POOL DEFAULT
3404
  )
3405
;
3406
 
3407
CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC)  TABLESPACE "USERS"
3408
  LOGGING 
3409
  PCTFREE 10
3410
  INITRANS 2
3411
  MAXTRANS 255
3412
  STORAGE
3413
  (
3414
    INITIAL 64K
3415
    MINEXTENTS 1
3416
    MAXEXTENTS 2147483645
3417
    FREELISTS 1
3418
    FREELIST GROUPS 1
3419
    BUFFER_POOL DEFAULT
3420
  )
3421
;
3422
 
3423
CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC)  TABLESPACE "USERS"
3424
  LOGGING 
3425
  PCTFREE 10
3426
  INITRANS 2
3427
  MAXTRANS 255
3428
  STORAGE
3429
  (
3430
    INITIAL 64K
3431
    MINEXTENTS 1
3432
    MAXEXTENTS 2147483645
3433
    FREELISTS 1
3434
    FREELIST GROUPS 1
3435
    BUFFER_POOL DEFAULT
3436
  )
3437
;
3438
 
3439
CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC)  TABLESPACE "USERS"
3440
  LOGGING 
3441
  PCTFREE 10
3442
  INITRANS 2
3443
  MAXTRANS 255
3444
  STORAGE
3445
  (
3446
    INITIAL 64K
3447
    MINEXTENTS 1
3448
    MAXEXTENTS 2147483645
3449
    FREELISTS 1
3450
    FREELIST GROUPS 1
3451
    BUFFER_POOL DEFAULT
3452
  )
3453
;
3454
 
3455
CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3456
  LOGGING 
3457
  PCTFREE 10
3458
  INITRANS 2
3459
  MAXTRANS 255
3460
  STORAGE
3461
  (
3462
    INITIAL 128K
3463
    MINEXTENTS 1
3464
    MAXEXTENTS 2147483645
3465
    FREELISTS 1
3466
    FREELIST GROUPS 1
3467
    BUFFER_POOL DEFAULT
3468
  )
3469
;
3470
 
3471
CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3472
  LOGGING 
3473
  PCTFREE 10
3474
  INITRANS 2
3475
  MAXTRANS 255
3476
  STORAGE
3477
  (
3478
    INITIAL 128K
3479
    MINEXTENTS 1
3480
    MAXEXTENTS 2147483645
3481
    FREELISTS 1
3482
    FREELIST GROUPS 1
3483
    BUFFER_POOL DEFAULT
3484
  )
3485
;
3486
 
3487
CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC)  TABLESPACE "USERS"
3488
  LOGGING 
3489
  PCTFREE 10
3490
  INITRANS 2
3491
  MAXTRANS 255
3492
  STORAGE
3493
  (
3494
    INITIAL 128K
3495
    MINEXTENTS 1
3496
    MAXEXTENTS 2147483645
3497
    FREELISTS 1
3498
    FREELIST GROUPS 1
3499
    BUFFER_POOL DEFAULT
3500
  )
3501
;
3502
 
59 mhunt 3503
CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC)  TABLESPACE "USERS"
51 mhunt 3504
  LOGGING 
3505
  PCTFREE 10
3506
  INITRANS 2
3507
  MAXTRANS 255
3508
  STORAGE
3509
  (
3510
    INITIAL 64K
3511
    MINEXTENTS 1
3512
    MAXEXTENTS 2147483645
3513
    FREELISTS 1
3514
    FREELIST GROUPS 1
3515
    BUFFER_POOL DEFAULT
3516
  )
3517
;
3518
 
3519
CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC)  TABLESPACE "USERS"
3520
  LOGGING 
3521
  PCTFREE 10
3522
  INITRANS 2
3523
  MAXTRANS 255
3524
  STORAGE
3525
  (
3526
    INITIAL 128K
3527
    MINEXTENTS 1
3528
    MAXEXTENTS 2147483645
3529
    FREELISTS 1
3530
    FREELIST GROUPS 1
3531
    BUFFER_POOL DEFAULT
3532
  )
3533
;
3534
 
3535
CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC)  TABLESPACE "USERS"
3536
  LOGGING 
3537
  PCTFREE 10
3538
  INITRANS 2
3539
  MAXTRANS 255
3540
  STORAGE
3541
  (
3542
    INITIAL 128K
3543
    MINEXTENTS 1
3544
    MAXEXTENTS 2147483645
3545
    FREELISTS 1
3546
    FREELIST GROUPS 1
3547
    BUFFER_POOL DEFAULT
3548
  )
3549
;
3550
 
59 mhunt 3551
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "USERS"
51 mhunt 3552
  LOGGING 
3553
  PCTFREE 10
3554
  INITRANS 2
3555
  MAXTRANS 255
3556
  STORAGE
3557
  (
3558
    INITIAL 64K
3559
    MINEXTENTS 1
3560
    MAXEXTENTS 2147483645
3561
    FREELISTS 1
3562
    FREELIST GROUPS 1
3563
    BUFFER_POOL DEFAULT
3564
  )
3565
;
3566
 
3567
CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID ASC)  TABLESPACE "USERS"
3568
  LOGGING 
3569
  PCTFREE 10
3570
  INITRANS 2
3571
  MAXTRANS 255
3572
  STORAGE
3573
  (
3574
    INITIAL 128K
3575
    MINEXTENTS 1
3576
    MAXEXTENTS 2147483645
3577
    FREELISTS 1
3578
    FREELIST GROUPS 1
3579
    BUFFER_POOL DEFAULT
3580
  )
3581
;
3582
 
3583
CREATE UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC)  TABLESPACE "USERS"
3584
  LOGGING 
3585
  PCTFREE 10
3586
  INITRANS 2
3587
  MAXTRANS 255
3588
  STORAGE
3589
  (
3590
    INITIAL 128K
3591
    MINEXTENTS 1
3592
    MAXEXTENTS 2147483645
3593
    FREELISTS 1
3594
    FREELIST GROUPS 1
3595
    BUFFER_POOL DEFAULT
3596
  )
3597
;
3598
 
3599
CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
3600
  LOGGING 
3601
  PCTFREE 10
3602
  INITRANS 2
3603
  MAXTRANS 255
3604
  STORAGE
3605
  (
3606
    INITIAL 128K
3607
    MINEXTENTS 1
3608
    MAXEXTENTS 2147483645
3609
    FREELISTS 1
3610
    FREELIST GROUPS 1
3611
    BUFFER_POOL DEFAULT
3612
  )
3613
;
3614
 
3615
CREATE INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_ID ASC)  TABLESPACE "USERS"
3616
  NOLOGGING 
3617
  PCTFREE 10
3618
  INITRANS 2
3619
  MAXTRANS 255
3620
  STORAGE
3621
  (
3622
    INITIAL 128K
3623
    MINEXTENTS 1
3624
    MAXEXTENTS 2147483645
3625
    FREELISTS 1
3626
    FREELIST GROUPS 1
3627
    BUFFER_POOL DEFAULT
3628
  )
3629
;
3630
 
3631
CREATE INDEX INX_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC)  TABLESPACE "USERS"
3632
  NOLOGGING 
3633
  PCTFREE 10
3634
  INITRANS 2
3635
  MAXTRANS 255
3636
  STORAGE
3637
  (
3638
    INITIAL 128K
3639
    MINEXTENTS 1
3640
    MAXEXTENTS 2147483645
3641
    FREELISTS 1
3642
    FREELIST GROUPS 1
3643
    BUFFER_POOL DEFAULT
3644
  )
3645
;
3646
 
3647
CREATE UNIQUE INDEX UNQ_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3648
  NOLOGGING 
3649
  PCTFREE 10
3650
  INITRANS 2
3651
  MAXTRANS 255
3652
  STORAGE
3653
  (
3654
    INITIAL 128K
3655
    MINEXTENTS 1
3656
    MAXEXTENTS 2147483645
3657
    FREELISTS 1
3658
    FREELIST GROUPS 1
3659
    BUFFER_POOL DEFAULT
3660
  )
3661
;
3662
 
3663
CREATE INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC)  TABLESPACE "USERS"
3664
  LOGGING 
3665
  PCTFREE 10
3666
  INITRANS 2
3667
  MAXTRANS 255
3668
  STORAGE
3669
  (
3670
    INITIAL 128K
3671
    MINEXTENTS 1
3672
    MAXEXTENTS 2147483645
3673
    FREELISTS 1
3674
    FREELIST GROUPS 1
3675
    BUFFER_POOL DEFAULT
3676
  )
3677
;
3678
 
3679
CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC)  TABLESPACE "USERS"
3680
  NOLOGGING 
3681
  PCTFREE 10
3682
  INITRANS 2
3683
  MAXTRANS 255
3684
  STORAGE
3685
  (
3686
    INITIAL 128K
3687
    MINEXTENTS 1
3688
    MAXEXTENTS 2147483645
3689
    FREELISTS 1
3690
    FREELIST GROUPS 1
3691
    BUFFER_POOL DEFAULT
3692
  )
3693
;
3694
 
3695
CREATE UNIQUE INDEX UNQ_PLATFORM ON PLATFORMS (NAME ASC)  TABLESPACE "USERS"
3696
  LOGGING 
3697
  PCTFREE 10
3698
  INITRANS 2
3699
  MAXTRANS 255
3700
  STORAGE
3701
  (
3702
    INITIAL 64K
3703
    MINEXTENTS 1
3704
    MAXEXTENTS 2147483645
3705
    FREELISTS 1
3706
    FREELIST GROUPS 1
3707
    BUFFER_POOL DEFAULT
3708
  )
3709
;
3710
 
59 mhunt 3711
CREATE UNIQUE INDEX UNQ_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC)  TABLESPACE "USERS"
51 mhunt 3712
  LOGGING 
3713
  PCTFREE 10
3714
  INITRANS 2
3715
  MAXTRANS 255
3716
  STORAGE
3717
  (
3718
    INITIAL 64K
3719
    MINEXTENTS 1
3720
    MAXEXTENTS 2147483645
3721
    FREELISTS 1
3722
    FREELIST GROUPS 1
3723
    BUFFER_POOL DEFAULT
3724
  )
3725
;
3726
 
3727
CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3728
  LOGGING 
3729
  PCTFREE 10
3730
  INITRANS 2
3731
  MAXTRANS 255
3732
  STORAGE
3733
  (
3734
    INITIAL 64K
3735
    MINEXTENTS 1
3736
    MAXEXTENTS 2147483645
3737
    FREELISTS 1
3738
    FREELIST GROUPS 1
3739
    BUFFER_POOL DEFAULT
3740
  )
3741
;
3742
 
3743
CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC)  TABLESPACE "USERS"
3744
  LOGGING 
3745
  PCTFREE 10
3746
  INITRANS 2
3747
  MAXTRANS 255
3748
  STORAGE
3749
  (
3750
    INITIAL 128K
3751
    MINEXTENTS 1
3752
    MAXEXTENTS 2147483645
3753
    FREELISTS 1
3754
    FREELIST GROUPS 1
3755
    BUFFER_POOL DEFAULT
3756
  )
3757
;
3758
 
3759
CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC)  TABLESPACE "USERS"
3760
  NOLOGGING 
3761
  PCTFREE 10
3762
  INITRANS 2
3763
  MAXTRANS 255
3764
  STORAGE
3765
  (
3766
    INITIAL 256K
3767
    MINEXTENTS 1
3768
    MAXEXTENTS 2147483645
3769
    FREELISTS 1
3770
    FREELIST GROUPS 1
3771
    BUFFER_POOL DEFAULT
3772
  )
3773
;
3774
 
3775
CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC)  TABLESPACE "USERS"
3776
  NOLOGGING 
3777
  PCTFREE 10
3778
  INITRANS 2
3779
  MAXTRANS 255
3780
  STORAGE
3781
  (
3782
    INITIAL 384K
3783
    MINEXTENTS 1
3784
    MAXEXTENTS 2147483645
3785
    FREELISTS 1
3786
    FREELIST GROUPS 1
3787
    BUFFER_POOL DEFAULT
3788
  )
3789
;
3790
 
3791
CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC)  TABLESPACE "USERS"
3792
  NOLOGGING 
3793
  PCTFREE 10
3794
  INITRANS 2
3795
  MAXTRANS 255
3796
  STORAGE
3797
  (
3798
    INITIAL 256K
3799
    MINEXTENTS 1
3800
    MAXEXTENTS 2147483645
3801
    FREELISTS 1
3802
    FREELIST GROUPS 1
3803
    BUFFER_POOL DEFAULT
3804
  )
3805
;
3806
 
3807
CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC)  TABLESPACE "USERS"
3808
  NOLOGGING 
3809
  PCTFREE 10
3810
  INITRANS 2
3811
  MAXTRANS 255
3812
  STORAGE
3813
  (
3814
    INITIAL 384K
3815
    MINEXTENTS 1
3816
    MAXEXTENTS 2147483645
3817
    FREELISTS 1
3818
    FREELIST GROUPS 1
3819
    BUFFER_POOL DEFAULT
3820
  )
3821
;
3822
 
59 mhunt 3823
CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
51 mhunt 3824
  LOGGING 
3825
  PCTFREE 10
3826
  INITRANS 2
3827
  MAXTRANS 255
3828
  STORAGE
3829
  (
3830
    INITIAL 384K
3831
    MINEXTENTS 1
3832
    MAXEXTENTS 2147483645
3833
    FREELISTS 1
3834
    FREELIST GROUPS 1
3835
    BUFFER_POOL DEFAULT
3836
  )
3837
;
3838
 
3839
CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3840
  LOGGING 
3841
  PCTFREE 10
3842
  INITRANS 2
3843
  MAXTRANS 255
3844
  STORAGE
3845
  (
3846
    INITIAL 64K
3847
    MINEXTENTS 1
3848
    MAXEXTENTS 2147483645
3849
    FREELISTS 1
3850
    FREELIST GROUPS 1
3851
    BUFFER_POOL DEFAULT
3852
  )
3853
;
3854
 
3855
CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3856
  LOGGING 
3857
  PCTFREE 10
3858
  INITRANS 2
3859
  MAXTRANS 255
3860
  STORAGE
3861
  (
3862
    INITIAL 64K
3863
    MINEXTENTS 1
3864
    MAXEXTENTS 2147483645
3865
    FREELISTS 1
3866
    FREELIST GROUPS 1
3867
    BUFFER_POOL DEFAULT
3868
  )
3869
;
3870
 
59 mhunt 3871
CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC)  TABLESPACE "USERS"
51 mhunt 3872
  LOGGING 
3873
  PCTFREE 10
3874
  INITRANS 2
3875
  MAXTRANS 255
3876
  STORAGE
3877
  (
3878
    INITIAL 64K
3879
    MINEXTENTS 1
3880
    MAXEXTENTS 2147483645
3881
    FREELISTS 1
3882
    FREELIST GROUPS 1
3883
    BUFFER_POOL DEFAULT
3884
  )
3885
;
3886
 
59 mhunt 3887
CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC)  TABLESPACE "USERS"
51 mhunt 3888
  LOGGING 
3889
  PCTFREE 10
3890
  INITRANS 2
3891
  MAXTRANS 255
3892
  STORAGE
3893
  (
3894
    INITIAL 64K
3895
    MINEXTENTS 1
3896
    MAXEXTENTS 2147483645
3897
    FREELISTS 1
3898
    FREELIST GROUPS 1
3899
    BUFFER_POOL DEFAULT
3900
  )
3901
;
3902
 
59 mhunt 3903
CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC)  TABLESPACE "USERS"
51 mhunt 3904
  LOGGING 
3905
  PCTFREE 10
3906
  INITRANS 2
3907
  MAXTRANS 255
3908
  STORAGE
3909
  (
3910
    INITIAL 64K
3911
    MINEXTENTS 1
3912
    MAXEXTENTS 2147483645
3913
    FREELISTS 1
3914
    FREELIST GROUPS 1
3915
    BUFFER_POOL DEFAULT
3916
  )
3917
;
3918
 
3919
CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC)  TABLESPACE "USERS"
3920
  LOGGING 
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_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID 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_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION 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_EXT ON PACKAGE_VERSIONS (V_EXT 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_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC)  TABLESPACE "USERS"
3984
  NOLOGGING 
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 INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC)  TABLESPACE "USERS"
4000
  NOLOGGING 
4001
  PCTFREE 10
4002
  INITRANS 2
4003
  MAXTRANS 255
4004
  STORAGE
4005
  (
4006
    INITIAL 128K
4007
    MINEXTENTS 1
4008
    MAXEXTENTS 2147483645
4009
    FREELISTS 1
4010
    FREELIST GROUPS 1
4011
    BUFFER_POOL DEFAULT
4012
  )
4013
;
4014
 
4015
CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC)  TABLESPACE "USERS"
4016
  LOGGING 
4017
  PCTFREE 10
4018
  INITRANS 2
4019
  MAXTRANS 255
4020
  STORAGE
4021
  (
4022
    INITIAL 128K
4023
    MINEXTENTS 1
4024
    MAXEXTENTS 2147483645
4025
    FREELISTS 1
4026
    FREELIST GROUPS 1
4027
    BUFFER_POOL DEFAULT
4028
  )
4029
;
4030
 
59 mhunt 4031
CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC)  TABLESPACE "USERS"
51 mhunt 4032
  LOGGING 
4033
  PCTFREE 10
4034
  INITRANS 2
4035
  MAXTRANS 255
4036
  STORAGE
4037
  (
4038
    INITIAL 128K
4039
    MINEXTENTS 1
4040
    MAXEXTENTS 2147483645
4041
    FREELISTS 1
4042
    FREELIST GROUPS 1
4043
    BUFFER_POOL DEFAULT
4044
  )
4045
;
4046
 
4047
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
4048
  LOGGING 
4049
  PCTFREE 10
4050
  INITRANS 2
4051
  MAXTRANS 255
4052
  STORAGE
4053
  (
4054
    INITIAL 64K
4055
    MINEXTENTS 1
4056
    MAXEXTENTS 2147483645
4057
    FREELISTS 1
4058
    FREELIST GROUPS 1
4059
    BUFFER_POOL DEFAULT
4060
  )
4061
;
4062
 
4063
CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC)  TABLESPACE "USERS"
4064
  LOGGING 
4065
  PCTFREE 10
4066
  INITRANS 2
4067
  MAXTRANS 255
4068
  STORAGE
4069
  (
4070
    INITIAL 128K
4071
    MINEXTENTS 1
4072
    MAXEXTENTS 2147483645
4073
    FREELISTS 1
4074
    FREELIST GROUPS 1
4075
    BUFFER_POOL DEFAULT
4076
  )
4077
;
4078
 
4079
CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4080
 
4081
CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4082
 
4083
CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4084
 
4085
CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4086
 
4087
CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4088
 
4089
CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;
4090
 
4091
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4092
 
4093
CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4094
 
4095
CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;
4096
 
4097
CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4098
 
4099
CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4100
 
4101
CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4102
 
4103
CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;
4104
 
4105
CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4106
 
4107
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4108
 
4109
CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4110
 
4111
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4112
 
4113
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
4114
 
4115
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
4116
 
4117
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
4118
 
4119
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
4120
 
4121
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
4122
 
4123
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
4124
 
4125
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
4126
 
4127
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
4128
 
4129
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
4130
 
4131
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
4132
 
4133
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
4134
 
4135
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
4136
 
4137
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
4138
 
4139
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
4140
 
4141
CREATE OR REPLACE PROCEDURE                 update_deprecation_state(nnrtag_id IN NUMBER) AS
4142
 
4143
recno NUMBER;
4144
 
4145
CURSOR deprecate_cur IS
4146
 
4147
SELECT rc.pv_id
4148
FROM release_content rc
4149
WHERE rtag_id = nnrtag_id
4150
 AND deprecated_state IN(7);
4151
 
4152
deprecate_rec deprecate_cur % rowtype;
4153
 
4154
BEGIN
4155
 
4156
  OPEN deprecate_cur;
4157
 
4158
  FETCH deprecate_cur
4159
  INTO deprecate_rec;
4160
 
4161
  WHILE deprecate_cur % FOUND
4162
  LOOP
4163
 
4164
    SELECT COUNT(*)
4165
    INTO recno
4166
    FROM package_dependencies pd,
4167
      release_content rc
4168
    WHERE pd.pv_id = deprecate_rec.pv_id
4169
     AND rc.pv_id = pd.dpv_id
4170
     AND rc.rtag_id = nnrtag_id
4171
     AND rc.deprecated_state IN(6,   7);
4172
 
4173
    IF recno = 0 THEN
4174
 
4175
      UPDATE release_content
4176
      SET pkg_id = NULL, deprecated_state = NULL
4177
      WHERE pv_id = deprecate_rec.pv_id
4178
       AND rtag_id = nnrtag_id;
4179
 
4180
    END IF;
4181
 
4182
    FETCH deprecate_cur
4183
    INTO deprecate_rec;
4184
  END LOOP;
4185
 
4186
END;
4187
/
4188
 
4189
CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
4190
 
4191
/******************************************************************************
4192
   NAME:       ADD_VIEW_MEMBERS
4193
   PURPOSE:    
4194
 
4195
   REVISIONS:
4196
   Ver        Date        Author           Description
4197
   ---------  ----------  ---------------  ------------------------------------
4198
   1.0        11/04/2006          1. Created this procedure.
4199
 
4200
   NOTES:
4201
 
4202
   Automatically available Auto Replace Keywords:
4203
      Object Name:     ADD_VIEW_MEMBERS
4204
      Sysdate:         11/04/2006
4205
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
4206
      Username:         (set in TOAD Options, Procedure Editor)
4207
      Table Name:       (set in the "New PL/SQL Object" dialog)
4208
 
4209
******************************************************************************/
4210
CURSOR user_cur IS
4211
	SELECT u.USER_ID
4212
	  FROM USERS u
4213
	 WHERE u.USER_ID IN (
4214
	 	   			   	SELECT * 
4215
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
4216
						);
4217
user_rec user_cur%ROWTYPE;
4218
 
4219
 
4220
BEGIN
4221
 
4222
	 OPEN user_cur;
4223
	 FETCH user_cur INTO user_rec;
4224
 
4225
	 WHILE user_cur%FOUND
4226
	 LOOP
4227
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
4228
	 	 VALUES ( nGroupId, user_rec.USER_ID);
4229
 
4230
	 	 FETCH user_cur INTO user_rec;	 
4231
	 END LOOP;	 
4232
 
4233
 
4234
 
4235
END ADD_VIEW_MEMBERS;
4236
/
4237
 
4238
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4239
	   	  		  								  nPkgIdList IN VARCHAR2,
4240
												  nUserId IN NUMBER
4241
	   	  		  								  ) IS
4242
 
4243
/******************************************************************************
4244
   NAME:       ADD_PACKAGE_INTEREST
4245
   PURPOSE:    
4246
 
4247
   REVISIONS:
4248
   Ver        Date        Author           Description
4249
   ---------  ----------  ---------------  ------------------------------------
4250
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4251
 
4252
   NOTES:
4253
 
4254
   Automatically available Auto Replace Keywords:
4255
      Object Name:     ADD_PACKAGE_INTEREST
4256
      Sysdate:         12/05/2006
4257
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4258
      Username:         (set in TOAD Options, Procedure Editor)
4259
      Table Name:       (set in the "New PL/SQL Object" dialog)
4260
 
4261
******************************************************************************/
4262
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4263
   nPkgId NUMBER;
4264
BEGIN
4265
 
4266
	 npkgidcollector := in_list_number2 (nPkgIdList);
4267
 
4268
	FOR i IN 1..npkgidcollector.COUNT
4269
	LOOP
4270
		nPkgId := npkgidcollector(i);
4271
 
4272
	 --- Insert into PACKAGE_INTEREST TABLE
4273
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4274
	 VALUES(nProjId, nPkgId, nUserId);
4275
	END LOOP;	 
4276
 
4277
 
4278
END ADD_PACKAGE_INTEREST_TEST;
4279
/
4280
 
4281
CREATE OR REPLACE PROCEDURE level_n_conflicts (
4282
   nnrtag_id       IN       NUMBER,
4283
   nnsession_num   IN       NUMBER,
4284
   nnrowcnt        OUT      NUMBER,
4285
   nniteration     IN       NUMBER
4286
)
4287
IS
4288
/* ---------------------------------------------------------------------------
4289
    Version: 3.0.1
4290
   --------------------------------------------------------------------------- */
4291
   previteration   NUMBER := nniteration - 1;
4292
BEGIN
4293
   /* ---------  LEVEL 1 CONFILCTS -----------
4294
   || Following states are used:
4295
   || 0 -> NOT FOUND
4296
   || 1 -> MAJOR
4297
   || 2 -> MINOR MINOR
4298
   */
4299
   INSERT INTO temp_env_states
4300
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4301
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4302
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4303
                 FROM package_dependencies dep,
4304
                      package_versions dpv,
4305
                      package_versions pv,
4306
                      release_content rel,
4307
                      temp_env_states tes
4308
                WHERE rel.pv_id = dep.pv_id
4309
                  AND rel.rtag_id = nnrtag_id
4310
                  AND dep.pv_id = pv.pv_id
4311
                  AND dep.dpv_id = dpv.pv_id
4312
                  AND dpv.pkg_id = tes.pkg_id
4313
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4314
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4315
                  AND tes.session_num = nnsession_num
4316
                  AND tes.level_num = previteration
4317
                  AND (dep.pv_id, dep.dpv_id) IN 
4318
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4319
                                                 || packages already stored in Temp Table.
4320
                                                 */
4321
                      (
4322
                         SELECT pd.pv_id, pd.dpv_id
4323
                           FROM package_dependencies pd, release_content rc
4324
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4325
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4326
                         MINUS
4327
                         SELECT igw.pv_id, igw.dpv_id
4328
                           FROM ignore_warnings igw
4329
                          WHERE igw.rtag_id = nnrtag_id);
4330
 
4331
   nnrowcnt := SQL%ROWCOUNT;
4332
END level_n_conflicts;
4333
/
4334
 
4335
CREATE OR REPLACE PROCEDURE Remove_Release_Content ( sPvIdList IN VARCHAR2,
4336
													 sNotPvIdList IN VARCHAR2,
4337
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
4338
/* ---------------------------------------------------------------------------
4339
    Version: 3.0
4340
   --------------------------------------------------------------------------- */
4341
 
4342
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4343
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4344
 
4345
BEGIN
4346
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
4347
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
4348
 
4349
    -- Delete From Release Content
4350
    DELETE
4351
      FROM RELEASE_CONTENT
4352
	 WHERE rtag_id = nRTagId
4353
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4354
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4355
 
4356
 
4357
 
4358
END Remove_Release_Content;
4359
/
4360
 
4361
CREATE OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
4362
 
4363
/* ---------------------------------------------------------------------------
4364
    Version: 3.0.0
4365
   --------------------------------------------------------------------------- */
4366
 
4367
	sPkgName VARCHAR2(4000);
4368
	sVext VARCHAR2(4000);
4369
 
4370
BEGIN
4371
 
4372
	-- Get package details
4373
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
4374
	  FROM PACKAGE_VERSIONS pv,
4375
	  	   PACKAGES pkg
4376
	 WHERE pv.PKG_ID = pkg.PKG_ID
4377
	   AND pv.PV_ID = nPvId;
4378
 
4379
 
4380
	-- Generate Label for automated build
4381
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
4382
 
4383
END GET_AUTOMATED_LABEL;
4384
/
4385
 
55 mhunt 4386
CREATE OR REPLACE PROCEDURE UnRipple_Package_Indirect (
4387
        nPvId IN NUMBER,
4388
        nRtagId IN NUMBER,
4389
        nUserId IN NUMBER,
4390
        nrootCausePvId IN NUMBER,
4391
        srootCause IN VARCHAR2,
4392
        srootFile IN VARCHAR2
4393
    ) IS
4394
    ReleaseLocation VARCHAR2(4000);
4395
BEGIN
4396
 
4397
    -- UnRipple Package
4398
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
4399
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
4400
 
4401
    /* LOG ACTION */
4402
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
4403
              FROM PROJECTS proj,
4404
                   RELEASE_TAGS rt
4405
             WHERE rt.RTAG_ID = nRtagId
4406
               AND rt.PROJ_ID = proj.PROJ_ID;
4407
 
4408
    /* LOG ACTION */
4409
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
4410
 
4411
END UnRipple_Package_Indirect;
4412
/
4413
 
51 mhunt 4414
CREATE OR REPLACE PACKAGE pk_package
4415
IS
4416
/*
4417
------------------------------
4418
||  Last Modified:  Jeremy Tweddle
4419
||  Modified Date:  24/08/2007
4420
||
4421
------------------------------
4422
*/
4423
   TYPE typecur IS REF CURSOR;
4424
 
4425
/*================================================================================================*/
4426
   PROCEDURE new_version (
4427
      nlastpvid                   IN       NUMBER,
4428
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4429
      cbuildtype                  IN       CHAR,
4430
      nsettopvid                  IN       NUMBER DEFAULT NULL,
4431
      nrtagid                     IN       NUMBER,
4432
      nuserid                     IN       NUMBER,
4433
      enumissues_state_imported   IN       NUMBER,
4434
      returnpvid                  OUT      NUMBER
4435
   );
4436
 
4437
   PROCEDURE change_state (
4438
      pvid       IN   NUMBER,
4439
      newstate   IN   package_versions.dlocked%TYPE,
4440
      userid     IN   NUMBER
4441
   );
4442
 
4443
   PROCEDURE new_patch (
4444
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
4445
      nparentpvid        IN       NUMBER,
4446
      spatchidlist       IN       VARCHAR2,
4447
      nuserid            IN       NUMBER,
4448
      returnpatchid      OUT      NUMBER
4449
   );
4450
 
4451
   PROCEDURE obsolete_patch (
4452
      patchid            IN   NUMBER,
4453
      isobsolete         IN   CHAR,
4454
      obsoletecomments   IN   VARCHAR2,
4455
      userid             IN   NUMBER
4456
   );
4457
 
4458
   PROCEDURE obsolete_patches (
4459
      spatchidlist       IN   VARCHAR2,
4460
      isobsolete         IN   CHAR,
4461
      obsoletecomments   IN   VARCHAR2,
4462
      userid             IN   NUMBER
4463
   );
4464
 
4465
   PROCEDURE destroy_package (
4466
      pvid               IN       NUMBER,
4467
      overridewarnings   IN       CHAR DEFAULT 'N',
4468
      problemstring      OUT      VARCHAR2
4469
   );
4470
 
4471
   PROCEDURE add_process (
4472
      nprocid         IN   processes.proc_id%TYPE,
4473
      shealthtag      IN   processes.proc_name%TYPE,
4474
      sprocdesc       IN   processes.proc_description%TYPE,
4475
      scmdinterface   IN   processes.run_as%TYPE,
4476
      spkgowner       IN   processes.pkg_owner%TYPE,
4477
      sisinterface    IN   processes.is_interface%TYPE,
4478
      npvid           IN   package_processes.pv_id%TYPE,
4479
      nuserid         IN   NUMBER
4480
   );
4481
 
4482
   PROCEDURE add_package_process (
4483
      nprocidlist   IN   VARCHAR2,
4484
      npvid         IN   package_processes.pv_id%TYPE,
4485
      nuserid       IN   NUMBER
4486
   );
4487
 
4488
 
4489
 
4490
   PROCEDURE remove_process (
4491
      nprocid   IN   package_processes.proc_id%TYPE,
4492
      npvid     IN   package_processes.pv_id%TYPE,
4493
      nuserid   IN   NUMBER
4494
   );
4495
 
4496
   PROCEDURE move_package (
4497
   	  npvid  			  IN package_versions.pv_id%TYPE,
4498
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4499
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4500
	  nuserid			  IN NUMBER		 
4501
   ); 
4502
 
4503
   PROCEDURE modify_product_state (
4504
   	  npvid IN package_versions.pv_id%TYPE,
4505
	  nrtagid IN release_tags.rtag_id%TYPE,
4506
	  nstateid IN product_states.state_id%TYPE,
4507
	  nuserid IN NUMBER
4508
   );
4509
 
4510
   PROCEDURE add_code_review_url (
4511
        npvid           IN    NUMBER,
4512
        nprojid         IN    NUMBER,
4513
        surl            IN    VARCHAR2,
4514
        sreason         IN    VARCHAR2,
4515
        ddateofreview   IN    DATE
4516
   );
4517
 
4518
   PROCEDURE update_code_review_url (
4519
        ncrid           IN    NUMBER,
4520
        nprojid         IN    NUMBER,
4521
        surl            IN    VARCHAR2,
4522
        sreason         IN    VARCHAR2
4523
   );
4524
 
4525
   PROCEDURE remove_code_review_url (
4526
        ncrid           IN    NUMBER
4527
   );
4528
/*================================================================================================*/
4529
END pk_package;
4530
/
4531
 
4532
CREATE OR REPLACE PROCEDURE Add_Runtime_Dependency ( NNpv_id IN NUMBER,
4533
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
4534
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4535
                                                     NNuser_id IN NUMBER
4536
                                                    ) IS
4537
/* ---------------------------------------------------------------------------
4538
    Version: 3.1
4539
   --------------------------------------------------------------------------- */
4540
 
4541
    retRTD_ID NUMBER;
4542
 
4543
	CURSOR rtd_cur IS
4544
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
4545
    rtd_rec rtd_cur%ROWTYPE;
4546
 
4547
BEGIN
4548
    --- Seed database with package_name and version if required ---
4549
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
4550
 
4551
	OPEN rtd_cur;
4552
    FETCH rtd_cur INTO rtd_rec;
4553
 
4554
    IF rtd_cur%NOTFOUND
4555
    THEN
4556
		/* Make sure it does not exists already as runtime dependency */
4557
 
4558
		--- Add new Runtime Dependency ---
4559
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
4560
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
4561
 
4562
    	/* LOG ACTION */
4563
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
4564
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
4565
 
4566
	END IF;
4567
 
4568
 
4569
END Add_Runtime_Dependency;
4570
/
4571
 
4572
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4573
	   	  		  								  nPkgIdList IN VARCHAR2,
4574
												  nUserId IN NUMBER
4575
	   	  		  								  ) IS
4576
 
4577
/******************************************************************************
4578
   NAME:       ADD_PACKAGE_INTEREST
4579
   PURPOSE:    
4580
 
4581
   REVISIONS:
4582
   Ver        Date        Author           Description
4583
   ---------  ----------  ---------------  ------------------------------------
4584
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4585
 
4586
   NOTES:
4587
 
4588
   Automatically available Auto Replace Keywords:
4589
      Object Name:     ADD_PACKAGE_INTEREST
4590
      Sysdate:         12/05/2006
4591
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4592
      Username:         (set in TOAD Options, Procedure Editor)
4593
      Table Name:       (set in the "New PL/SQL Object" dialog)
4594
 
4595
******************************************************************************/
4596
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4597
   nPkgId NUMBER;
4598
BEGIN
4599
 
4600
	 npkgidcollector := in_list_number2 (nPkgIdList);
4601
 
4602
	FOR i IN 1..npkgidcollector.COUNT
4603
	LOOP
4604
		nPkgId := npkgidcollector(i);
4605
 
4606
	 --- Insert into PACKAGE_INTEREST TABLE
4607
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4608
	 VALUES(nProjId, nPkgId, nUserId);
4609
	END LOOP;	 
4610
 
4611
 
4612
END ADD_PACKAGE_INTEREST;
4613
/
4614
 
4615
CREATE OR REPLACE FUNCTION CAN_EDIT_PKG_IN_PROJECT ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
4616
 
4617
/* ---------------------------------------------------------------------------
4618
    Version: 3.0.0
4619
   --------------------------------------------------------------------------- */
4620
 
4621
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
4622
	ProjId NUMBER;
4623
	RowCount NUMBER;
4624
	cReleaseMode CHAR(1);
4625
 
4626
BEGIN
4627
 
4628
	--RETURN 1;
4629
 
4630
 
4631
	/*--------------- Business Rules Here -------------------*/
4632
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
4633
		RETURN 0;
4634
	END IF;
4635
	/*-------------------------------------------------------*/
4636
 
4637
 
4638
 
4639
 
4640
 
4641
 
4642
	/*-- First Check. See if package is used through release reference --*/
4643
	SELECT COUNT(rc.PV_ID) INTO RowCount
4644
	  FROM (
4645
	  		SELECT rl.REF_RTAG_ID
4646
			  FROM RELEASE_LINKS rl
4647
			 WHERE rl.RTAG_ID = nRtagId
4648
	  		) rl,
4649
			RELEASE_CONTENT rc
4650
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
4651
	    AND rc.PV_ID = nPvId;			
4652
 
4653
 
4654
	-- Decide if package can be edited  
4655
	IF RowCount > 0 THEN
4656
		-- Package is referenced from other release, hence cannot be edited
4657
		RETURN 0;	
4658
 
4659
	ELSE
4660
 
4661
		-- Check is only done for releases in restrictive mode
4662
		SELECT rt.OFFICIAL INTO cReleaseMode
4663
		  FROM RELEASE_TAGS rt
4664
		 WHERE rt.RTAG_ID = nRtagId;
4665
 
4666
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
4667
			-- Do not do any firther checking,
4668
			-- Package is editable here
4669
			RETURN 1;
4670
		END IF;	
4671
 
4672
	END IF;
4673
 
4674
 
4675
 
4676
 
4677
	/*-- Further checking --*/
4678
	-- Get proj_id
4679
	SELECT rt.PROJ_ID  INTO  ProjId
4680
	  FROM RELEASE_TAGS rt
4681
	 WHERE rt.RTAG_ID = nRtagId;
4682
 
4683
 
4684
 
4685
	BEGIN
4686
 
4687
		-- Get v_ext
4688
		SELECT pv.V_EXT  INTO  Vext
4689
		  FROM PACKAGE_VERSIONS pv
4690
		 WHERE pv.PV_ID = nPvId;  
4691
 
4692
		EXCEPTION
4693
	    	WHEN NO_DATA_FOUND THEN
4694
	       		Vext := NULL;
4695
 
4696
	END;	 
4697
 
4698
 
4699
	--Temp Hack for Step Project
4700
	IF ProjId != 281 THEN
4701
		-- Find if package can be edited in this project
4702
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
4703
	 		FROM PROJECT_EXTENTIONS pe
4704
			WHERE pe.PROJ_ID != ProjId  
4705
	  		AND pe.EXT_NAME = VExt;
4706
	END IF;		
4707
 
4708
 
4709
	-- Decide if package can be edited  
4710
	IF RowCount > 0 THEN
4711
		-- Package extension is found in other projects, hece NOT EDITABLE
4712
		RETURN 0;
4713
	ELSE
4714
		RETURN 1;	
4715
	END IF;
4716
 
4717
 
4718
END CAN_EDIT_PKG_IN_PROJECT;
4719
/
4720
 
4721
CREATE OR REPLACE PACKAGE pk_archive
4722
IS
4723
/*
4724
------------------------------
4725
||  Author:  Rupesh Solanki
4726
||  Date:    26 October 2006
4727
||  Version:   1.0
4728
------------------------------
4729
*/
4730
 
4731
   /*================================================================================================*/
4732
   PROCEDURE populate_packages_table;
4733
 
4734
   PROCEDURE populate_archive_data_table (
4735
      nrtagid   IN   release_tags.rtag_id%TYPE
4736
   );
4737
 
4738
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
4739
 
4740
   PROCEDURE migrate_rtag_to_archive_schema (
4741
      nrtagid   IN   release_tags.rtag_id%TYPE
4742
   );
4743
 
4744
   PROCEDURE clean_up_archive_data_table (
4745
      nrtagid   IN   release_tags.rtag_id%TYPE
4746
   );
4747
 
4748
   PROCEDURE write_action_log (
4749
      nuserid   IN   NUMBER,
4750
      nrtagid   IN   release_tags.rtag_id%TYPE
4751
   );
4752
/*================================================================================================*/
4753
END pk_archive;
4754
/
4755
 
4756
CREATE OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS
4757
 
4758
/* ---------------------------------------------------------------------------
4759
    Version: 3.3
4760
   --------------------------------------------------------------------------- */
4761
    rowCnt NUMBER := 0;
4762
    iteration NUMBER := 2;          -- Iterations counter
4763
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
4764
                                    -- This will prevent infinite loops if cyrcular dependencies are found
4765
    sessionNum NUMBER;
4766
BEGIN
4767
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
4768
 
4769
 
4770
    -- Redo Patch Ignore warnings
4771
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
4772
 
4773
 
4774
    Level_One_Conflicts ( NNrtag_id, sessionNum );
4775
 
4776
    LOOP
4777
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
4778
        iteration := iteration + 1;
4779
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
4780
    END LOOP;
4781
 
4782
    Update_Package_States ( NNrtag_id, sessionNum );
4783
 
4784
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
4785
 
4786
    -- Flag Packages with New Patches Available
4787
    Check_New_Patches ( NNrtag_id );
4788
 
4789
	Clean_Do_Not_Ripple( NNrtag_id );
4790
 
4791
 
4792
	/* Circular Dependency Flag */
4793
    /*
4794
	IF iteration > maxIterations
4795
	THEN
4796
		UPDATE release_tags SET
4797
		   	   circular_dependency = 'Y'
4798
		 WHERE rtag_id = NNrtag_id;
4799
	ELSE
4800
		UPDATE release_tags SET
4801
		   	   circular_dependency = NULL
4802
		 WHERE rtag_id = NNrtag_id;
4803
	END IF;
4804
    */
4805
END Rebuild_Environment;
4806
/
4807
 
4808
CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS
4809
 
4810
/******************************************************************************
4811
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4812
   PURPOSE:    
4813
 
4814
   REVISIONS:
4815
   Ver        Date        Author           Description
4816
   ---------  ----------  ---------------  ------------------------------------
4817
   1.0        6/12/2006          1. Created this procedure.
4818
 
4819
   NOTES:
4820
 
4821
   Automatically available Auto Replace Keywords:
4822
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4823
      Sysdate:         6/12/2006
4824
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4825
      Username:         (set in TOAD Options, Procedure Editor)
4826
      Table Name:       (set in the "New PL/SQL Object" dialog)
4827
 
4828
******************************************************************************/
4829
 
4830
	CURSOR curInfo IS
4831
    SELECT PV_ID
4832
	FROM PACKAGE_BUILD_ENV
4833
	WHERE BE_ID IN (11, 12);
4834
    recInfo curInfo%ROWTYPE;
4835
 
4836
 
4837
BEGIN
4838
 
4839
	OPEN curInfo;
4840
    FETCH curInfo INTO recInfo;
4841
 
4842
	WHILE curInfo%FOUND
4843
	LOOP
4844
 
4845
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4846
		VALUES( recInfo.PV_ID, 2, 5);
4847
 
4848
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4849
 
4850
		FETCH curInfo INTO recInfo;
4851
 
4852
	END LOOP;
4853
 
4854
	CLOSE curInfo;
4855
 
4856
 
4857
 
4858
 
4859
END INSERT_INTO_PACKAGE_BUILD_INFO;
4860
/
4861
 
4862
CREATE OR REPLACE PROCEDURE check_new_patches (
4863
   nrtagid   IN   release_content.rtag_id%TYPE
4864
)
4865
IS
4866
/* ---------------------------------------------------------------------------
4867
    Version: 3.0
4868
   --------------------------------------------------------------------------- */
4869
BEGIN
4870
   /*--------------- Business Rules Here -------------------*/
4871
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
4872
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
4873
   END IF
4874
 
4875
   /*-------------------------------------------------------*/
4876
   UPDATE release_content rc
4877
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
4878
    WHERE rc.pv_id IN (
4879
             SELECT prod.pv_id
4880
               FROM (SELECT   pp.pv_id AS orig_parent_id,
4881
                              COUNT (*) AS num_of_patches
4882
                         FROM release_content rc, package_patches pp
4883
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4884
                     GROUP BY pp.pv_id) orig,
4885
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
4886
                              COUNT (*) AS num_of_patches
4887
                         FROM release_content rc,
4888
                              package_patches pp,
4889
                              package_dependencies dep,
4890
                              package_versions pv,
4891
                              package_patches prodpp
4892
                        WHERE rc.pv_id = pp.pv_id
4893
                          AND rc.rtag_id = nrtagid
4894
                          AND pp.patch_id = dep.dpv_id
4895
                          AND dep.pv_id = pv.pv_id
4896
                          AND pv.is_patch = 'Y'
4897
                          AND pv.dlocked = 'Y'
4898
                          AND prodpp.patch_id = dep.pv_id
4899
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
4900
                    release_content rc
4901
              WHERE orig.orig_parent_id = prod.pv_id
4902
                AND orig.num_of_patches != prod.num_of_patches
4903
                AND rc.rtag_id = nrtagid
4904
                AND rc.pv_id = prod.pv_id
4905
                AND rc.pkg_state = 0
4906
             UNION
4907
             SELECT   prodpp.pv_id
4908
                 FROM release_content rc,
4909
                      package_patches pp,
4910
                      package_dependencies dep,
4911
                      package_versions pv,
4912
                      package_patches prodpp
4913
                WHERE rc.pv_id = pp.pv_id
4914
                  AND rc.rtag_id = nrtagid
4915
                  AND pp.patch_id = dep.dpv_id
4916
                  AND dep.pv_id = pv.pv_id
4917
                  AND pv.is_patch = 'Y'
4918
                  AND pv.dlocked = 'Y'
4919
                  AND prodpp.patch_id = dep.pv_id
4920
             GROUP BY prodpp.pv_id, pp.pv_id
4921
             MINUS
4922
             SELECT   pp.pv_id
4923
                 FROM release_content rc, package_patches pp
4924
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4925
             GROUP BY pp.pv_id);
4926
END check_new_patches;
4927
/
4928
 
4929
CREATE OR REPLACE PROCEDURE Update_Package_Dependency ( NNpv_id IN NUMBER,
4930
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
4931
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4932
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
4933
                                                        NNuser_id IN NUMBER,
4934
                                                        NNdelete_old_dependency IN NUMBER
4935
                                                       ) IS
4936
/* ---------------------------------------------------------------------------
4937
    Version: 3.3
4938
   --------------------------------------------------------------------------- */
4939
 
4940
    retPV_ID NUMBER;
4941
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
4942
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4943
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4944
    NNpkg_id NUMBER;
4945
    NNdpkg_id NUMBER;
4946
 
4947
BEGIN
4948
    --- Seed database with package_name and version if required ---
4949
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
4950
 
4951
    -- get v_ext,pkg_id of current dependency
4952
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
4953
      FROM PACKAGE_VERSIONS
4954
     WHERE pv_id = retPV_ID;
4955
 
4956
    -- get pkg_id of parent package
4957
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
4958
      FROM PACKAGE_VERSIONS
4959
     WHERE pv_id = NNpv_id;
4960
 
4961
 
4962
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
4963
    	( (PvIsPatch IS NOT NULL) )THEN
4964
 
4965
	    IF NNdelete_old_dependency = 1 THEN
4966
	        /* Used for CUSTOM dependency add/edit */
4967
 
4968
	        --- Remove old dependency ---
4969
            IF (PvIsPatch IS NULL) THEN
4970
            	-- Do it for Packages
4971
		        DELETE FROM PACKAGE_DEPENDENCIES
4972
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4973
		            (
4974
		            SELECT dep.*
4975
		              FROM PACKAGE_DEPENDENCIES dep,
4976
		                   PACKAGE_VERSIONS dpv,
4977
		                   PACKAGE_VERSIONS pv
4978
		             WHERE dep.dpv_id = dpv.pv_id
4979
		               AND dep.pv_id = NNpv_id
4980
		               AND pv.pv_id = retPV_ID
4981
		               AND dpv.pkg_id = pv.pkg_id
4982
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
4983
		            );
4984
            ELSE
4985
            	-- Do it for Patches
4986
                DELETE FROM PACKAGE_DEPENDENCIES
4987
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
4988
		            (
4989
		            SELECT dep.*
4990
		              FROM PACKAGE_DEPENDENCIES dep
4991
		             WHERE dep.dpv_id = retPV_ID
4992
		               AND dep.pv_id = NNpv_id
4993
		            );
4994
			END IF;
4995
 
4996
	    END IF;
4997
 
4998
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
4999
 
5000
	    --- Add new dependency ---
5001
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
5002
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
5003
 
5004
	END IF;
5005
 
5006
END Update_Package_Dependency;
5007
/
5008
 
5009
CREATE OR REPLACE PACKAGE PK_RMAPI_test IS
5010
/*
5011
------------------------------
5012
||  Last Modified:  S.Vukovic
5013
||  Modified Date:  19/May/2005
5014
||  Spec Version:   2.0
5015
------------------------------
5016
*/
5017
 
5018
	TYPE typeCur IS REF CURSOR;
5019
 
5020
    /*================================================================================================*/
5021
 
5022
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
5023
 
5024
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
5025
 
5026
 
5027
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
5028
							 PkgName IN VARCHAR2, 
5029
							 VExt IN VARCHAR2,
5030
							 NewPkgVersion IN VARCHAR2, 
5031
							 Label IN VARCHAR2,
5032
							 DependenciesImportList IN VARCHAR2,
5033
							 IsRippled IN NUMBER,
5034
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
5035
 
5036
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
5037
 
5038
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
5039
 
5040
	PROCEDURE CQ_TEST;
5041
 
5042
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
5043
	/*================================================================================================*/
5044
 
5045
END PK_RMAPI_test;
5046
/
5047
 
5048
CREATE OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2
5049
IS
5050
/* ---------------------------------------------------------------------------
5051
    Version: 1.0.0
5052
   --------------------------------------------------------------------------- */
5053
BEGIN
5054
    IF is_number(s_version) AND LENGTH(s_version) > 3
5055
    THEN
5056
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
5057
    ELSE
5058
        RETURN s_version;
5059
    END IF;
5060
END get_patch_version;
5061
/
5062
 
5063
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;
5064
/
5065
 
5066
CREATE OR REPLACE PACKAGE PK_APP_UTILS IS
5067
/*
5068
------------------------------
5069
||  Last Modified:  S.Vukovic
5070
||  Modified Date:  26/Apr/2005
5071
||  Spec Version:   1.0
5072
------------------------------
5073
*/
5074
 
5075
	TYPE typeCur IS REF CURSOR;
5076
 
5077
    /*================================================================================================*/
5078
 
5079
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
5080
 
5081
	/*================================================================================================*/
5082
 
5083
END PK_APP_UTILS;
5084
/
5085
 
5086
CREATE OR REPLACE PROCEDURE Log_Project_Action ( nProjId IN NUMBER,
5087
												 enumActionTypeName IN VARCHAR2,
5088
		                                         nUserId IN NUMBER,
5089
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
5090
												 nRtagId IN NUMBER  ) IS
5091
/* ---------------------------------------------------------------------------
5092
    Version: 3.0
5093
   --------------------------------------------------------------------------- */
5094
 
5095
    ActionTypeId NUMBER;
5096
 
5097
BEGIN
5098
 
5099
    -- Get Action Type FK
5100
    SELECT act.ACTTYPE_ID INTO ActionTypeId
5101
      FROM ACTION_TYPE act
5102
     WHERE act.NAME = enumActionTypeName;
5103
 
5104
 
5105
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
5106
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
5107
 
5108
 
5109
END Log_Project_Action;
5110
/
5111
 
5112
CREATE OR REPLACE FUNCTION IN_LIST_VARCHAR2 ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
5113
 
5114
/* ---------------------------------------------------------------------------
5115
    Version: 3.1
5116
   --------------------------------------------------------------------------- */
5117
 
5118
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
5119
	pos				   NUMBER;
5120
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
5121
	val				   VARCHAR2(4000);
5122
 
5123
BEGIN
5124
 
5125
	IF NOT sInList IS NULL
5126
	THEN
5127
		LOOP
5128
	        EXIT WHEN in_list IS NULL;
5129
	        pos := INSTR ( in_list, cSeparator );
5130
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
5131
 
5132
			IF (NOT val IS NULL) THEN
5133
		        cItemCollection.extend;
5134
		        cItemCollection(cItemCollection.count) := val;
5135
			END IF;
5136
 
5137
	        in_list := SUBSTR ( in_list, pos+1 );
5138
		END LOOP;
5139
	END IF;
5140
 
5141
	RETURN cItemCollection;
5142
END IN_LIST_VARCHAR2;
5143
/
5144
 
5145
CREATE OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5146
                                               retPKG_ID OUT NUMBER ) IS
5147
/* ---------------------------------------------------------------------------
5148
    Version: 3.0.0
5149
   --------------------------------------------------------------------------- */
5150
 
5151
    CURSOR packages_cur IS
5152
        SELECT pkg.pkg_id
5153
          FROM packages pkg
5154
         WHERE pkg.pkg_name = SSpkg_name;
5155
    packages_rec packages_cur%ROWTYPE;
5156
 
5157
 
5158
BEGIN
5159
 
5160
    /* ---------------------------------------------------- */
5161
    /* Find if package name exists                          */
5162
    /* ---------------------------------------------------- */
5163
 
5164
    OPEN packages_cur;
5165
    FETCH packages_cur INTO packages_rec;
5166
 
5167
    IF packages_cur%NOTFOUND
5168
    THEN
5169
        -- Create new pkg_name --
5170
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
5171
 
5172
        INSERT INTO packages ( pkg_id, pkg_name )
5173
        VALUES ( retPKG_ID, SSpkg_name );
5174
 
5175
    ELSE
5176
        retPKG_ID := packages_rec.pkg_id;
5177
 
5178
    END IF;
5179
 
5180
 
5181
    CLOSE packages_cur;
5182
 
5183
END New_Package_Name;
5184
/
5185
 
5186
CREATE OR REPLACE PROCEDURE UPDATE_PROCESSES
5187
IS
5188
 
5189
proc_id NUMBER;
5190
/******************************************************************************
5191
   NAME:       DELETE_DO_NOT_RIPPLE
5192
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
5193
               IS RELEASED
5194
 
5195
   REVISIONS:
5196
   Ver        Date        Author           Description
5197
   ---------  ----------  ---------------  ------------------------------------
5198
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
5199
 
5200
   NOTES:
5201
 
5202
   Automatically available Auto Replace Keywords:
5203
      Object Name:     DELETE_DO_NOT_RIPPLE
5204
      Sysdate:         21/04/2006
5205
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
5206
      Username:         (set in TOAD Options, Procedure Editor)
5207
      Table Name:       (set in the "New PL/SQL Object" dialog)
5208
 
5209
******************************************************************************/
5210
   CURSOR ripple_cur
5211
   IS
5212
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
5213
 
5214
   ripple_rec   ripple_cur%ROWTYPE;
5215
BEGIN
5216
   OPEN ripple_cur;
5217
 
5218
   FETCH ripple_cur
5219
    INTO ripple_rec;
5220
 
5221
   WHILE ripple_cur%FOUND
5222
   LOOP
5223
 
5224
 
5225
update deployment_manager.processes_config 
5226
set proc_id = ripple_rec.proc_id
5227
where pkg_health_tag = ripple_rec.proc_name
5228
and cmd_interface IS NULL
5229
and pkg_owner IS NULL
5230
and is_interface IS NULL; 
5231
 
5232
 
5233
      FETCH ripple_cur
5234
       INTO ripple_rec;
5235
   END LOOP;
5236
END UPDATE_PROCESSES;
5237
/
5238
 
5239
CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS
5240
 
5241
/******************************************************************************
5242
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
5243
   PURPOSE:    
5244
 
5245
   REVISIONS:
5246
   Ver        Date        Author           Description
5247
   ---------  ----------  ---------------  ------------------------------------
5248
   1.0        6/12/2006          1. Created this procedure.
5249
 
5250
   NOTES:
5251
 
5252
   Automatically available Auto Replace Keywords:
5253
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
5254
      Sysdate:         6/12/2006
5255
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
5256
      Username:         (set in TOAD Options, Procedure Editor)
5257
      Table Name:       (set in the "New PL/SQL Object" dialog)
5258
 
5259
******************************************************************************/
5260
 
5261
	CURSOR curInfo IS
5262
    SELECT PV_ID
5263
	FROM PACKAGE_BUILD_ENV
5264
	WHERE BE_ID IN (11, 12);
5265
    recInfo curInfo%ROWTYPE;
5266
 
5267
 
5268
BEGIN
5269
 
5270
	OPEN curInfo;
5271
    FETCH curInfo INTO recInfo;
5272
 
5273
	WHILE curInfo%FOUND
5274
	LOOP
5275
 
5276
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
5277
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
5278
 
5279
		FETCH curInfo INTO recInfo;
5280
 
5281
	END LOOP;
5282
 
5283
	CLOSE curInfo;
5284
 
5285
 
5286
 
5287
 
5288
END INSERT_MULTIPLE_STICKY_NOTES;
5289
/
5290
 
5291
CREATE OR REPLACE PACKAGE PK_RELEASE_TEST IS
5292
/*
5293
------------------------------
5294
||  Last Modified:  S.Vukovic
5295
||  Modified Date:  12/Sep/2005
5296
||  Body Version:   3.0
5297
------------------------------
5298
*/
5299
 
5300
	TYPE typeCur IS REF CURSOR;
5301
 
5302
    /*================================================================================================*/
5303
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5304
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
5305
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5306
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5307
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5308
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5309
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5310
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5311
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5312
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5313
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5314
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5315
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5316
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5317
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5318
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5319
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5320
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5321
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5322
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5323
	/*================================================================================================*/
5324
 
5325
END PK_RELEASE_TEST;
5326
/
5327
 
5328
CREATE OR REPLACE FUNCTION ORA_SYSDATETIME
5329
RETURN DATE
5330
IS
5331
/* ---------------------------------------------------------------------------
5332
    Version: 3.0.0
5333
   --------------------------------------------------------------------------- */
5334
BEGIN
5335
 
5336
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
5337
END ORA_SYSDATETIME;
5338
/
5339
 
5340
CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2
5341
IS
5342
/* ---------------------------------------------------------------------------
5343
    Version: 1.0.0
5344
   --------------------------------------------------------------------------- */
5345
BEGIN
5346
    IF is_number(s_version) AND LENGTH(s_version) > 3
5347
    THEN
5348
        RETURN MOD(TO_NUMBER(s_version), 1000);
5349
    ELSE
5350
        RETURN 0;
5351
    END IF;
5352
END get_build_number;
5353
/
5354
 
5355
CREATE OR REPLACE PACKAGE PK_RELEASE IS
5356
/*
5357
------------------------------
5358
||  Last Modified:  S.Vukovic
5359
||  Modified Date:  12/Sep/2005
5360
||  Body Version:   3.0
5361
------------------------------
5362
*/
5363
 
5364
	TYPE typeCur IS REF CURSOR;
5365
 
5366
    /*================================================================================================*/
5367
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5368
	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 );
5369
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5370
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5371
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5372
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5373
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5374
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5375
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5376
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5377
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
5378
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5379
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5380
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5381
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5382
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5383
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5384
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5385
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5386
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5387
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5388
 
5389
	/*================================================================================================*/
5390
 
5391
END PK_RELEASE;
5392
/
5393
 
5394
CREATE OR REPLACE PROCEDURE New_Additional_Note ( pnPv_id IN NUMBER,
5395
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
5396
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
5397
                                                  pnUser_id IN NUMBER,
5398
                                                  outErrCode OUT NUMBER
5399
                                                 ) IS
5400
/* ---------------------------------------------------------------------------
5401
    Version: 3.0.0
5402
   --------------------------------------------------------------------------- */
5403
 
5404
    newID NUMBER;
5405
 
5406
	CURSOR an_duplicate_cur IS
5407
        SELECT note_id
5408
          FROM ADDITIONAL_NOTES
5409
         WHERE pv_id = pnPv_id
5410
           AND note_title = psNote_title;
5411
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
5412
 
5413
BEGIN
5414
	outErrCode := -1;		-- Set default return error code to ERROR state
5415
 
5416
	OPEN an_duplicate_cur;
5417
    FETCH an_duplicate_cur INTO an_duplicate_rec;
5418
 
5419
    IF an_duplicate_cur%NOTFOUND
5420
    THEN
5421
		/* No duplicate titles */
5422
		-- Get new ID --
5423
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
5424
 
5425
		--- Add Additional Note ---
5426
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
5427
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
5428
		outErrCode := 0;		-- Set return to SUCCESS
5429
	END IF;
5430
 
5431
	CLOSE an_duplicate_cur;
5432
END New_Additional_Note;
5433
/
5434
 
5435
CREATE OR REPLACE PROCEDURE                 DEPLOY_TO_RELEASE IS
5436
 
5437
/******************************************************************************
5438
 
5439
 
5440
******************************************************************************/
5441
 
5442
	CURSOR curInfo IS
5443
    SELECT DISTINCT
5444
        qry.DPV_ID
5445
     FROM (
5446
             SELECT dep.*,
5447
                    LEVEL AS LEVEL_NUM
5448
               FROM PACKAGE_DEPENDENCIES dep
5449
             START WITH dep.PV_ID IN ( 
5450
 
5451
                        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,
5452
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
5453
 
5454
                        ) 
5455
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
5456
 		) qry,
5457
 		PACKAGES pkg,
5458
		PACKAGE_VERSIONS pv
5459
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
5460
         and (pv.is_patch is null or pv.is_patch = 'N');
5461
    recInfo curInfo%ROWTYPE;
5462
 
5463
 
5464
BEGIN
5465
 
5466
	OPEN curInfo;
5467
    FETCH curInfo INTO recInfo;
5468
 
5469
	WHILE curInfo%FOUND
5470
	LOOP
5471
 
5472
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
5473
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
5474
 
5475
    FETCH curInfo INTO recInfo;
5476
 
5477
	END LOOP;
5478
 
5479
	CLOSE curInfo;
5480
 
5481
 
5482
 
5483
 
5484
END DEPLOY_TO_RELEASE;
5485
/
5486
 
5487
CREATE OR REPLACE PROCEDURE New_Patch ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5488
 	   	  		  					  	NNparent_id IN NUMBER,
5489
                                        sPatchIdList IN VARCHAR2,
5490
										NNuser_id IN NUMBER ) IS
5491
/* ---------------------------------------------------------------------------
5492
    Version: 3.5
5493
   --------------------------------------------------------------------------- */
5494
 
5495
    patchPv_id    NUMBER;
5496
	parPkg_id	  NUMBER;
5497
    LastInstallOrder NUMBER;
5498
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
5499
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5500
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5501
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5502
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5503
 
5504
	CURSOR parent_cur IS
5505
        SELECT pv.*, pkg.pkg_name
5506
          FROM package_versions pv,
5507
		       packages pkg
5508
         WHERE pv.pv_id = NNparent_id
5509
		   AND pv.pkg_id = pkg.pkg_id;
5510
    parent_rec parent_cur%ROWTYPE;
5511
 
5512
    CURSOR patch_cur IS
5513
        SELECT pv.*, pg.pkg_name
5514
          FROM package_versions pv,
5515
		       packages pg
5516
         WHERE pv.pkg_id = parPkg_id
5517
		   AND pv.pkg_version = SSpatch_version
5518
		   AND pv.pkg_id = pg.pkg_id;
5519
    patch_rec patch_cur%ROWTYPE;
5520
 
5521
	CURSOR releases_cur IS
5522
        SELECT rc.pv_id
5523
		  FROM release_content rc
5524
		 WHERE rc.pv_id = patch_rec.pv_id;
5525
    releases_rec releases_cur%ROWTYPE;
5526
 
5527
 
5528
BEGIN
5529
 
5530
	-- Get Last Install Order
5531
    SELECT Count(*) INTO LastInstallOrder
5532
	  FROM PACKAGE_PATCHES pp
5533
	 WHERE pp.PV_ID = NNparent_id;
5534
 
5535
 
5536
    -- Get parent details
5537
	OPEN parent_cur;
5538
    FETCH parent_cur INTO parent_rec;
5539
	parPkg_id := parent_rec.pkg_id;
5540
 
5541
 
5542
	-- Find if patch exists in database
5543
    OPEN patch_cur;
5544
    FETCH patch_cur INTO patch_rec;
5545
 
5546
 
5547
    -- Parent must be official
5548
    IF parent_rec.dlocked = 'Y' THEN
5549
 
5550
	    IF patch_cur%NOTFOUND
5551
	    THEN
5552
        	isPatchDlocked := 'N';
5553
 
5554
	        -- Create new patch version --
5555
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5556
 
5557
 
5558
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5559
 
5560
	        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 )
5561
				   VALUES (
5562
						   patchPv_id,
5563
	                       parPkg_id,
5564
	                       SSpatch_version,
5565
	                       isPatchDlocked,
5566
	                       ORA_SYSDATE,
5567
	                       NNuser_id,
5568
	                       ORA_SYSDATETIME,
5569
	                       NNuser_id,
5570
	                       SSV_MM,
5571
	                       SSV_NMM,
5572
	                       SSV_EXT,
5573
	                       parent_rec.src_path,
5574
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5575
	                       NNuser_id,
5576
						   'Y',
5577
                           patchPv_id,
5578
						   parent_rec.bs_id,
5579
						   parent_rec.is_autobuildable,
5580
						   parent_rec.ripple_field
5581
 
5582
						   );
5583
 
5584
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5585
		    	   ( SELECT NNparent_id AS pv_id,
5586
				            pv.pv_id AS patch_id,
5587
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5588
				       FROM package_versions pv
5589
					  WHERE pv.pv_id = patchPv_id
5590
					    AND pv.is_patch = 'Y' );
5591
 
5592
	        /* LOG ACTION */
5593
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5594
        			     'Patch version created: '|| SSpatch_version );
5595
 
5596
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5597
        			     'New patch created and attached: '|| SSpatch_version );
5598
 
5599
 
5600
	    ELSE
5601
 
5602
		    patchPv_id := patch_rec.pv_id;
5603
	    	isPatchDlocked := patch_rec.dlocked;
5604
 
5605
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5606
		    OPEN releases_cur;
5607
		    FETCH releases_cur INTO releases_rec;
5608
 
5609
			IF releases_cur%NOTFOUND
5610
	   		THEN
5611
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5612
				UPDATE package_versions SET
5613
					   is_patch = 'Y'
5614
					   WHERE pv_id = patchPv_id;
5615
 
5616
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5617
			    	   ( SELECT NNparent_id AS pv_id,
5618
					            pv.pv_id AS patch_id,
5619
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5620
					       FROM package_versions pv
5621
						  WHERE pv.pv_id = patchPv_id
5622
						    AND pv.is_patch = 'Y' );
5623
 
5624
			END IF;
5625
 
5626
			CLOSE releases_cur;
5627
 
5628
            /* LOG ACTION */
5629
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5630
        			     'Patch version was found and attached: '|| SSpatch_version );
5631
 
5632
	    END IF;
5633
 
5634
 
5635
 
5636
 
5637
    END IF;
5638
 
5639
 
5640
 
5641
    /* Create Patch Dependencies */
5642
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5643
 
5644
 
5645
    -- Make sure patch is unofficial before altering its dependencies
5646
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5647
    	-- Delete Existing Dependencies
5648
        DELETE
5649
          FROM PACKAGE_DEPENDENCIES dep
5650
         WHERE dep.PV_ID = patchPv_id;
5651
 
5652
 
5653
        -- Insert new dependencies
5654
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5655
        SELECT patchPv_id AS PV_ID,
5656
        	   pv.PV_ID AS DPV_ID,
5657
               parPkg_id AS PKG_ID,
5658
               pv.PKG_ID AS DPKG_ID,
5659
               'L' AS BUILD_TYPE
5660
          FROM PACKAGE_VERSIONS pv
5661
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5662
 
5663
 
5664
    END IF;
5665
 
5666
 
5667
    CLOSE parent_cur;
5668
    CLOSE patch_cur;
5669
END New_Patch;
5670
/
5671
 
5672
CREATE OR REPLACE PROCEDURE Ignore_Dependency_Warnings ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
5673
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
5674
                                                         sIgnoreIdList IN VARCHAR2,
5675
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5676
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
5677
/* ---------------------------------------------------------------------------
5678
    Version: 5.0
5679
   --------------------------------------------------------------------------- */
5680
 
5681
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5682
ReleaseLocation VARCHAR2(4000);
5683
ActionTypeId NUMBER;
5684
 
5685
BEGIN
5686
 
5687
 
5688
   	IF (NOT bDoPatchIgnore) THEN
5689
    	/* Manual Ignore Warnings */
5690
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
5691
 
5692
 
5693
        /* Log Action */
5694
        -- Get Release Location
5695
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5696
		  FROM PROJECTS proj,
5697
		  	   RELEASE_TAGS rt
5698
		 WHERE rt.PROJ_ID = proj.PROJ_ID
5699
		   AND rt.RTAG_ID = nRtagId;
5700
 
5701
        -- Get Action Type Id for IGNORE_ON
5702
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5703
	      FROM ACTION_TYPE act
5704
	     WHERE act.NAME = 'ignore_on';
5705
 
5706
        -- Get Ignored (Current MINUS Old)
5707
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5708
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5709
		  FROM (
5710
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5711
		        FROM PACKAGE_VERSIONS pv
5712
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5713
		      MINUS
5714
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5715
		        FROM IGNORE_WARNINGS igw
5716
		       WHERE igw.RTAG_ID = nRtagId
5717
		         AND igw.PV_ID = nPvId
5718
		       ) qry,
5719
		       PACKAGE_VERSIONS pv,
5720
		       PACKAGES pkg,
5721
		       RELEASE_CONTENT rc,
5722
		       PACKAGE_VERSIONS rpv
5723
		 WHERE pv.PKG_ID = pkg.PKG_ID
5724
		   AND rc.RTAG_ID = nRtagId
5725
		   AND rc.PV_ID = rpv.PV_ID
5726
		   AND rpv.PKG_ID = pv.PKG_ID
5727
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5728
		   AND qry.DPV_ID = pv.PV_ID;
5729
 
5730
 
5731
        -- Get Action Type Id for IGNORE_OFF
5732
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5733
	      FROM ACTION_TYPE act
5734
	     WHERE act.NAME = 'ignore_off';
5735
 
5736
        -- Get UnIgnored (Old MINUS Current)
5737
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5738
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5739
		  FROM (
5740
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5741
		          FROM IGNORE_WARNINGS igw
5742
		         WHERE igw.RTAG_ID = nRtagId
5743
		           AND igw.PV_ID = nPvId
5744
                MINUS
5745
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5746
		          FROM PACKAGE_VERSIONS pv
5747
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5748
		       ) qry,
5749
		       PACKAGE_VERSIONS pv,
5750
		       PACKAGES pkg,
5751
		       RELEASE_CONTENT rc,
5752
		       PACKAGE_VERSIONS rpv
5753
		 WHERE pv.PKG_ID = pkg.PKG_ID
5754
		   AND rc.RTAG_ID = nRtagId
5755
		   AND rc.PV_ID = rpv.PV_ID
5756
		   AND rpv.PKG_ID = pv.PKG_ID
5757
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5758
		   AND qry.DPV_ID = pv.PV_ID;
5759
 
5760
 
5761
 
5762
       	-- Delete Current Ignore Warnings
5763
	    DELETE
5764
	      FROM IGNORE_WARNINGS igw
5765
	     WHERE igw.RTAG_ID = nRtagId
5766
	       AND igw.PV_ID = nPvId
5767
	       AND igw.IS_PATCH_IGNORE IS NULL;
5768
 
5769
 
5770
        IF (oIgnoreIdCollector.COUNT > 0) THEN
5771
		    -- Insert Ignore Warnings
5772
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
5773
		    SELECT nRtagId,
5774
	        	   nPvId,
5775
	               pv.PV_ID AS DPV_ID
5776
	          FROM PACKAGE_VERSIONS pv
5777
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5778
        END IF;
5779
 
5780
 
5781
		-- Touch Release if package is in Release Area
5782
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
5783
			Touch_Release (nRtagId);
5784
		END IF;
5785
 
5786
	ELSE
5787
       	/* Patch Ignore Warnings */
5788
 
5789
        -- Delete Current Patch Ignore Warnings
5790
	    DELETE
5791
	      FROM IGNORE_WARNINGS igw
5792
	     WHERE igw.RTAG_ID = nRtagId
5793
	       AND igw.IS_PATCH_IGNORE = 'Y';
5794
 
5795
 
5796
        -- Delete Manual Ignores that need to be Patch Ignores
5797
	    DELETE
5798
	      FROM IGNORE_WARNINGS igw
5799
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
5800
         	(
5801
				SELECT DISTINCT
5802
                       nRtagId,
5803
					   err.PV_ID,
5804
                       err.ERR_DPV AS DPV_ID
5805
				  FROM
5806
				       (
5807
				       /* Full Release Contents used for reference*/
5808
				       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
5809
				         FROM release_content rel, package_versions rpv
5810
				        WHERE rel.pv_id = rpv.pv_id
5811
				          AND rtag_id = nRtagId
5812
				       ) frc,
5813
				       (
5814
				        /* DPV_IDs not fount in release*/
5815
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5816
				          FROM package_dependencies dep
5817
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5818
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5819
				       ) err,
5820
				       (
5821
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5822
				          FROM PACKAGE_PATCHES pp,
5823
				          	   PACKAGE_DEPENDENCIES dep,
5824
				          	   RELEASE_CONTENT rc
5825
				         WHERE rc.RTAG_ID = nRtagId
5826
				           AND rc.PV_ID = pp.PV_ID
5827
				           AND dep.PV_ID = pp.PATCH_ID
5828
				       ) pp,
5829
				       package_versions errpkg,
5830
				       package_versions errpv
5831
				 WHERE err.err_dpv = errpv.pv_id
5832
				   AND errpv.pkg_id = frc.pkg_id(+)
5833
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5834
				   AND err.pv_id = errpkg.pv_id
5835
				   AND err.PV_ID = pp.PV_ID
5836
				   AND frc.PV_ID = pp.DPV_ID
5837
			);
5838
 
5839
        /*
5840
        ---------------------------------------------------
5841
        --  Make sure that select statement above and below are same
5842
        ---------------------------------------------------
5843
        */
5844
 
5845
 
5846
		-- Insert Patch Ignores
5847
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
5848
		SELECT DISTINCT
5849
			   nRtagId,
5850
		       err.PV_ID,
5851
		       err.ERR_DPV AS DPV_ID,
5852
		       'Y'
5853
		  FROM
5854
		       (
5855
		       /* Full Release Contents used for reference*/
5856
		       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
5857
		         FROM release_content rel, package_versions rpv
5858
		        WHERE rel.pv_id = rpv.pv_id
5859
		          AND rtag_id = nRtagId
5860
		       ) frc,
5861
		       (
5862
		        /* DPV_IDs not fount in release*/
5863
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5864
		          FROM package_dependencies dep
5865
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5866
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5867
		       ) err,
5868
		       (
5869
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5870
		          FROM PACKAGE_PATCHES pp,
5871
		          	   PACKAGE_DEPENDENCIES dep,
5872
		          	   RELEASE_CONTENT rc
5873
		         WHERE rc.RTAG_ID = nRtagId
5874
		           AND rc.PV_ID = pp.PV_ID
5875
		           AND dep.PV_ID = pp.PATCH_ID
5876
		       ) pp,
5877
		       package_versions errpkg,
5878
		       package_versions errpv
5879
		 WHERE err.err_dpv = errpv.pv_id
5880
		   AND errpv.pkg_id = frc.pkg_id(+)
5881
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5882
		   AND err.pv_id = errpkg.pv_id
5883
		   AND err.PV_ID = pp.PV_ID
5884
		   AND frc.PV_ID = pp.DPV_ID;
5885
 
5886
 
5887
    END IF;
5888
 
5889
 
5890
END Ignore_Dependency_Warnings;
5891
/
5892
 
5893
CREATE OR REPLACE PROCEDURE UnRipple_Package (
5894
        sPvIdList IN VARCHAR2,
5895
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5896
        nUserId IN NUMBER
5897
    ) IS
5898
/* ---------------------------------------------------------------------------
5899
    Version: 4.1
5900
   --------------------------------------------------------------------------- */
5901
 
5902
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5903
 
5904
BEGIN
5905
 
5906
    IF (sPvIdList IS NULL) THEN
5907
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5908
    END IF;
5909
 
5910
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5911
 
5912
    -- UnRipple Package
5913
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
5914
    SELECT nRtagId, pv.PV_ID
5915
    FROM PACKAGE_VERSIONS pv
5916
    WHERE pv.PV_ID IN (
5917
        SELECT *
5918
        FROM TABLE (
5919
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
5920
        )
5921
    );
5922
 
5923
    /* LOG ACTION */
5924
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
5925
 
5926
END UnRipple_Package;
5927
/
5928
 
5929
CREATE OR REPLACE PROCEDURE set_to_autobuildable (
5930
   nrtagid     IN   NUMBER,
5931
   spvidlist   IN   VARCHAR2
5932
)
5933
IS
5934
/******************************************************************************
5935
   NAME:       SET_TO_AUTOBUILDABLE
5936
   PURPOSE:
5937
 
5938
   REVISIONS:
5939
   Ver        Date        Author           Description
5940
   ---------  ----------  ---------------  ------------------------------------
5941
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
5942
 
5943
   NOTES:
5944
 
5945
   Automatically available Auto Replace Keywords:
5946
      Object Name:     SET_TO_AUTOBUILDABLE
5947
      Sysdate:         15/12/2006
5948
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
5949
      Username:         (set in TOAD Options, Procedure Editor)
5950
      Table Name:       (set in the "New PL/SQL Object" dialog)
5951
 
5952
******************************************************************************/
5953
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
5954
   PvId NUMBER;
5955
BEGIN
5956
 
5957
   npvidcollector := in_list_number2 (spvidlist);
5958
 
5959
   UPDATE package_versions
5960
      SET is_autobuildable = 'N'
5961
    WHERE pv_id IN (SELECT pv_id
5962
                      FROM release_content
5963
                     WHERE rtag_id = nrtagid);
5964
 
5965
 
5966
 
5967
   	FOR i IN 1..npvidcollector.COUNT
5968
	LOOP
5969
		PvId := npvidcollector(i);
5970
 
5971
		UPDATE package_versions
5972
		set is_autobuildable = 'Y'
5973
		where pv_id = PvId;
5974
 
5975
	END LOOP;
5976
 
5977
 
5978
END set_to_autobuildable;
5979
/
5980
 
5981
CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS
5982
/* ---------------------------------------------------------------------------
5983
    Version: 3.0
5984
   --------------------------------------------------------------------------- */
5985
 
5986
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5987
 
5988
BEGIN
5989
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
5990
 
5991
	 -- Touch Release for Rebuild
5992
     UPDATE RELEASE_TAGS rt SET
5993
     	rt.REBUILD_ENV = 'Y',
5994
        rt.REBUILD_STAMP = 0
5995
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5996
 
5997
 
5998
END Touch_Release_Bulk;
5999
/
6000
 
6001
CREATE OR REPLACE PROCEDURE TEST_MARCO IS
6002
/******************************************************************************
6003
   NAME:       TEST_MARCO
6004
   PURPOSE:    
6005
 
6006
   REVISIONS:
6007
   Ver        Date        Author           Description
6008
   ---------  ----------  ---------------  ------------------------------------
6009
   1.0        2/03/2007          1. Created this procedure.
6010
 
6011
   NOTES:
6012
 
6013
   Automatically available Auto Replace Keywords:
6014
      Object Name:     TEST_MARCO
6015
      Sysdate:         2/03/2007
6016
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
6017
      Username:         (set in TOAD Options, Procedure Editor)
6018
      Table Name:       (set in the "New PL/SQL Object" dialog)
6019
 
6020
******************************************************************************/
6021
 
6022
parPv_id    NUMBER;
6023
parPkg_id   NUMBER;
6024
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6025
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6026
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6027
BEGIN
6028
 
6029
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6030
 
6031
        /* LOG ACTION */
6032
        Log_Action ( parPv_id, 'new_version', 3764,
6033
        			 'New package version: '|| parPv_id || '.' );
6034
 
6035
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
6036
 
6037
     -- Clone Package Version Details --
6038
            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,
6039
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
6040
                SELECT parPv_id         AS pv_id,
6041
                       pv.pkg_id        AS pkg_id,
6042
                       parPv_id || '.'    AS pkg_version,
6043
                       'N'              AS dlocked,
6044
                       Ora_Sysdate      AS created_stamp,
6045
                       3764        AS creator_id,
6046
                       Ora_Sysdatetime  AS modified_stamp,
6047
                       3764        AS modifier_id,
6048
                       SSV_MM          AS V_MM,
6049
                       SSV_NMM         AS V_NMM,
6050
                       SSV_EXT          AS V_EXT,
6051
                       pv.src_path,
6052
                       pv.pv_description,
6053
                       pv.PV_OVERVIEW,
6054
                       112982 	AS LAST_PV_ID,
6055
                       pv.owner_id,
6056
					   pv.BUILD_TYPE,
6057
					   pv.IS_BUILD_ENV_REQUIRED,
6058
					   pv.bs_id,
6059
					   pv.is_autobuildable,
6060
					   pv.IS_DEPLOYABLE
6061
                  FROM PACKAGE_VERSIONS pv
6062
                 WHERE pv.pv_id = 112982;		
6063
 
6064
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6065
 
6066
 
6067
END TEST_MARCO;
6068
/
6069
 
6070
CREATE OR REPLACE PACKAGE PK_BUILDAPI_TEST IS
6071
/*
6072
------------------------------
6073
||  Last Modified:  S.Vukovic
6074
||  Modified Date:  30/Mar/2005
6075
||  Spec Version:   1.0
6076
------------------------------
6077
*/
6078
 
6079
	/*================================================================================================*/
6080
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
6081
								  sOsName IN VARCHAR2,
6082
								  sOrigFilePath IN VARCHAR2,
6083
								  sFileName IN VARCHAR2,
6084
								  sDestFilePath IN VARCHAR2,
6085
								  nByteSize IN NUMBER,
6086
								  sCRCcksum IN VARCHAR2 );
6087
 
6088
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
6089
    /*================================================================================================*/
6090
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
6091
	/*================================================================================================*/
6092
 
6093
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
6094
			  					   	 sWebServer IN VARCHAR2,
6095
									 sMailServer IN VARCHAR2,
6096
									 sMailSender IN VARCHAR2);
6097
	/*================================================================================================*/
6098
 
6099
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
6100
	/*================================================================================================*/
6101
 
6102
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
6103
	/*================================================================================================*/
6104
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
6105
	/*================================================================================================*/	        
6106
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
6107
	/*================================================================================================*/	
6108
 
6109
END PK_BUILDAPI_TEST;
6110
/
6111
 
6112
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
6113
 
6114
/* ---------------------------------------------------------------------------
6115
    Version: 3.0.0
6116
   --------------------------------------------------------------------------- */
6117
 
6118
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6119
	pos				   NUMBER;
6120
	in_list			   VARCHAR2(4000) := sInList || ',';
6121
 
6122
BEGIN
6123
 
6124
	IF NOT sInList IS NULL
6125
	THEN
6126
		LOOP
6127
	        EXIT WHEN in_list IS NULL;
6128
	        pos := INSTR ( in_list, ',' );
6129
	        sync_rtags.extend;
6130
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
6131
	        in_list := SUBSTR ( in_list, pos+1 );
6132
		END LOOP;
6133
	END IF;
6134
 
6135
	RETURN sync_rtags;
6136
END IN_LIST_NUMBER;
6137
/
6138
 
6139
CREATE OR REPLACE PROCEDURE delete_autobuild_failure_info
6140
IS
6141
/******************************************************************************
6142
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
6143
   PURPOSE:
6144
 
6145
   REVISIONS:
6146
   Ver        Date        Author           Description
6147
   ---------  ----------  ---------------  ------------------------------------
6148
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
6149
 
6150
   NOTES:
6151
 
6152
   Automatically available Auto Replace Keywords:
6153
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
6154
      Sysdate:         2/06/2006
6155
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
6156
      Username:         (set in TOAD Options, Procedure Editor)
6157
      Table Name:       (set in the "New PL/SQL Object" dialog)
6158
 
6159
******************************************************************************/
6160
BEGIN
6161
   DELETE FROM autobuild_failure
6162
         WHERE group_email_id NOT IN (SELECT group_email_id
6163
                                        FROM members_group);
6164
END delete_autobuild_failure_info;
6165
/
6166
 
53 mhunt 6167
CREATE OR REPLACE PACKAGE                   "PK_ENVIRONMENT" IS
51 mhunt 6168
/*
6169
------------------------------
53 mhunt 6170
||  Last Modified:  G.Huddy
6171
||  Modified Date:  28/May/2008
6172
||  Spec Version:   1.2
51 mhunt 6173
------------------------------
6174
*/
6175
 
6176
	TYPE typeCur IS REF CURSOR;
6177
 
53 mhunt 6178
	/*================================================================================================*/
51 mhunt 6179
 
6180
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
6181
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6182
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6183
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6184
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6185
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6186
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
53 mhunt 6187
 
51 mhunt 6188
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6189
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6190
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6191
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6192
 
53 mhunt 6193
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
6194
 
51 mhunt 6195
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 6196
 
6197
 
51 mhunt 6198
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6199
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6200
 
6201
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6202
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6203
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
53 mhunt 6204
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6205
 
51 mhunt 6206
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 6207
 
51 mhunt 6208
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
6209
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
53 mhunt 6210
 
6211
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
6212
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
51 mhunt 6213
							 CloneFromPvId IN NUMBER );
53 mhunt 6214
 
51 mhunt 6215
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
53 mhunt 6216
 
6217
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6218
 
51 mhunt 6219
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6220
 
53 mhunt 6221
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6222
 
6223
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
51 mhunt 6224
	/*================================================================================================*/
6225
 
6226
END PK_ENVIRONMENT;
6227
/
6228
 
6229
CREATE OR REPLACE PROCEDURE Clear_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6230
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6231
											 nUserId IN NUMBER ) IS
6232
/* ---------------------------------------------------------------------------
6233
    Version: 4.0
6234
   --------------------------------------------------------------------------- */
6235
 
6236
BEGIN
6237
 
6238
    -- Clear Advisory Ripple Package
6239
    DELETE FROM ADVISORY_RIPPLE
6240
	WHERE PV_ID = nPvId
6241
	AND RTAG_ID = nRtagId;
6242
 
6243
    /* LOG ACTION */
6244
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
6245
 
6246
	/*Rebuild_Environment(nRtagId);*/
6247
 
6248
END Clear_Advisory_Ripple;
6249
/
6250
 
6251
CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6252
											 nUserId IN NUMBER ) IS
6253
/* ---------------------------------------------------------------------------
6254
    Version: 4.0
6255
   --------------------------------------------------------------------------- */
6256
 
6257
BEGIN
6258
 
6259
    -- Lock Package
6260
    UPDATE PACKAGE_VERSIONS pv SET
6261
    	pv.DLOCKED = 'Y'
6262
    WHERE pv.PV_ID = nPvId;
6263
 
6264
    /* LOG ACTION */
6265
   	Log_Action ( nPvId, 'lock_package', nUserId );
6266
 
6267
END Lock_Package;
6268
/
6269
 
6270
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env_Temp ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6271
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6272
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6273
														 ) IS
6274
/* ---------------------------------------------------------------------------
6275
    Last Modified: Rupesh Solanki
6276
	Version: 3.0.1
6277
   --------------------------------------------------------------------------- */
6278
 
6279
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6280
   BsId NUMBER;
6281
   HackBsId NUMBER;
6282
 
6283
 
6284
BEGIN
6285
 
6286
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6287
 
6288
   -- Delete Current Build Env settings
6289
   DELETE FROM PACKAGE_BUILD_ENV
6290
   WHERE pv_id = nPvId;
6291
 
6292
   -- Delet Current Package Build Info Settings
6293
   DELETE FROM PACKAGE_BUILD_INFO
6294
   WHERE pv_id = nPvId;
6295
 
6296
   -- Reset flag to N
6297
   UPDATE PACKAGE_VERSIONS SET
6298
	   IS_BUILD_ENV_REQUIRED = 'N'
6299
   WHERE PV_ID = nPvId;
6300
 
6301
 
6302
   -- Set new Build Env
6303
   IF NOT sBuildEnvIdList IS NULL THEN
6304
	FOR i IN 1..nBsCollector.COUNT
6305
	LOOP   
6306
 
6307
	BsId := nBsCollector(i);
6308
 
6309
	IF nBuildStandard = 2 THEN
6310
	   IF BsId = 1 THEN
6311
	   	  HackBsId := 11;
6312
	   ELSE
6313
	   	  HackBsId := 12;
6314
	   END IF;
6315
 
6316
   	  -- Insert into PACKAGE_BUILD_ENV
6317
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6318
	  SELECT nPvId AS PV_ID,
6319
	  		 be.BE_ID
6320
	    FROM BUILD_ENVIRONMENTS be
6321
	   WHERE be.BE_ID IN ( HackBsId );
6322
 
6323
   	  -- Insert into PACKAGE_BUILD_INFO
6324
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6325
	  SELECT nPvId AS PV_ID,
6326
	  		 be.BM_ID
6327
	    FROM BUILD_MACHINES be
6328
	   WHERE be.BM_ID IN ( BsId );						 
6329
 
6330
	   -- Set flag to Y
6331
	   UPDATE PACKAGE_VERSIONS SET
6332
		   IS_BUILD_ENV_REQUIRED = 'Y'
6333
	   WHERE PV_ID = nPvId;	
6334
 
6335
 
6336
	ELSE
6337
 
6338
   	  -- Insert into PACKAGE_BUILD_ENV
6339
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6340
	  SELECT nPvId AS PV_ID,
6341
	  		 be.BE_ID
6342
	    FROM BUILD_ENVIRONMENTS be
6343
	   WHERE be.BE_ID IN ( BsId );
6344
 
6345
   	  -- Insert into PACKAGE_BUILD_INFO
6346
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6347
	  SELECT nPvId AS PV_ID,
6348
	  		 be.BM_ID
6349
	    FROM BUILD_MACHINES be
6350
	   WHERE be.BM_ID IN ( BsId );						 
6351
 
6352
	   -- Set flag to Y
6353
	   UPDATE PACKAGE_VERSIONS SET
6354
		   IS_BUILD_ENV_REQUIRED = 'Y'
6355
	   WHERE PV_ID = nPvId;
6356
 
6357
	END IF;  
6358
 
6359
 
6360
	END LOOP;	   
6361
 
6362
   END IF;
6363
 
6364
 
6365
END Set_Package_Build_Env_Temp;
6366
/
6367
 
6368
CREATE OR REPLACE PROCEDURE Rename_Package_Version ( NNpv_id IN NUMBER,
6369
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6370
													 cBuildType IN CHAR,
6371
                                                     NNuser_id IN NUMBER,
6372
                                                     errMessage OUT VARCHAR2 ) IS
6373
/* ---------------------------------------------------------------------------
6374
    Version: 3.2
6375
   --------------------------------------------------------------------------- */
6376
 
6377
    sPackageVersion VARCHAR2(4000);
6378
	sLabel VARCHAR2(4000) := NULL;
6379
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
6380
 
6381
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6382
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6383
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6384
 
6385
    CURSOR package_versions_cur IS
6386
        SELECT pv_id
6387
     	  FROM package_versions
6388
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
6389
     	   AND pkg_version = SSpkg_version;
6390
    package_versions_rec package_versions_cur%ROWTYPE;
6391
 
6392
 
6393
BEGIN
6394
 
6395
    /* ---------------------------------------------------- */
6396
    /* Find if package_version exists                       */
6397
    /* ---------------------------------------------------- */
6398
 
6399
	errMessage := NULL;
6400
 
6401
 
6402
	-- Get previous version
6403
	SELECT pv.PKG_VERSION INTO OldPkgVersion
6404
      FROM PACKAGE_VERSIONS pv
6405
     WHERE pv.PV_ID = NNpv_id;
6406
 
6407
 
6408
	sPackageVersion := SSpkg_version;
6409
 
6410
 
6411
	IF OldPkgVersion != sPackageVersion THEN
6412
 
6413
	    OPEN package_versions_cur;
6414
	    FETCH package_versions_cur INTO package_versions_rec;
6415
 
6416
	    IF package_versions_cur%NOTFOUND
6417
	    THEN
6418
 
6419
			-- Split current version in parts
6420
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6421
 
6422
 
6423
		    -- Automated built config
6424
			IF (cBuildType = 'A') THEN
6425
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
6426
			END IF;
6427
 
6428
 
6429
	        -- Packge version not found, hence rename it.
6430
	        UPDATE package_versions
6431
	           SET pkg_version = sPackageVersion,
6432
	               v_mm = SSV_MM,
6433
	               v_nmm = SSV_NMM,
6434
	               v_ext = SSV_EXT,
6435
	               modified_stamp = ORA_SYSDATETIME,
6436
	               modifier_id = NNuser_id,
6437
				   build_type = cBuildType,
6438
				   pkg_label = NULL
6439
	         WHERE pv_id = NNpv_id;
6440
 
6441
 
6442
			IF (cBuildType = 'A') THEN
6443
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
6444
				UPDATE PACKAGE_VERSIONS pv SET
6445
					pv.PKG_LABEL = sLabel
6446
		         WHERE pv_id = NNpv_id;
6447
			END IF;
6448
 
6449
			/* LOG ACTION */
6450
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
6451
 
6452
	    ELSE
6453
	        -- Package version exists. Cannot proceed.
6454
	        errMessage := 'enum_MSG_VERSION_EXISTS';
6455
 
6456
	    END IF;
6457
 
6458
	    CLOSE package_versions_cur;
6459
 
6460
	END IF;
6461
 
6462
 
6463
 
6464
 
6465
END Rename_Package_Version;
6466
/
6467
 
6468
CREATE OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
6469
IS
6470
/* ---------------------------------------------------------------------------
6471
    Version: 3.0.0
6472
   --------------------------------------------------------------------------- */
6473
 
6474
BEGIN
6475
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
6476
    THEN
6477
        RETURN FALSE;
6478
    ELSE
6479
        RETURN TRUE;
6480
    END IF;
6481
 
6482
END IS_VERSION_EXTENSION;
6483
/
6484
 
6485
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6486
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6487
                                                          NNuser_id IN NUMBER,
6488
                                                          retPV_ID OUT NUMBER,
6489
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6490
/* ---------------------------------------------------------------------------
6491
    Version: 4.0
6492
   --------------------------------------------------------------------------- */
6493
 
6494
    parPkg_id   NUMBER;
6495
    parPv_id    NUMBER;
6496
    cloneFrom_pv_id NUMBER;
6497
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6498
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6499
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6500
 
6501
    CURSOR packages_cur IS
6502
        SELECT pkg_id FROM PACKAGES
6503
        WHERE pkg_name = SSpkg_name;
6504
    packages_rec packages_cur%ROWTYPE;
6505
 
6506
    CURSOR package_versions_cur IS
6507
        SELECT pv_id FROM PACKAGE_VERSIONS
6508
        WHERE pkg_id = parPkg_id
6509
        AND pkg_version = SSpkg_version;
6510
    package_versions_rec package_versions_cur%ROWTYPE;
6511
 
6512
    CURSOR clone_package_versions_cur IS
6513
        SELECT MAX(pv_id) AS pv_id
6514
          FROM PACKAGE_VERSIONS
6515
         WHERE pkg_id = parPkg_id
6516
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6517
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6518
 
6519
BEGIN
6520
    /* -------------------------------------------- */
6521
    /* Find if pkg_name exists and seed if required */
6522
    /* -------------------------------------------- */
6523
    OPEN packages_cur;
6524
    FETCH packages_cur INTO packages_rec;
6525
 
6526
    IF packages_cur%NOTFOUND
6527
    THEN
6528
        /* INSERT into packages table */
6529
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6530
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6531
 
6532
    ELSE
6533
        parPkg_id := packages_rec.pkg_id;
6534
 
6535
    END IF;
6536
 
6537
    CLOSE packages_cur;
6538
 
6539
 
6540
 
6541
    /* ---------------------------------------------------- */
6542
    /* Find if package_version exists and seed if required  */
6543
    /* ---------------------------------------------------- */
6544
    OPEN package_versions_cur;
6545
    FETCH package_versions_cur INTO package_versions_rec;
6546
 
6547
    IF package_versions_cur%NOTFOUND
6548
    THEN
6549
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6550
 
6551
        /* LOG ACTION */
6552
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6553
        			 'New package version: '|| SSpkg_version );
6554
 
6555
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6556
 
6557
        /* Find similar pkg_name + ext to clone from */
6558
        OPEN clone_package_versions_cur;
6559
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6560
 
6561
 
6562
        IF NOT clone_package_versions_rec.pv_id IS NULL
6563
        THEN
6564
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6565
			IF ( NOT nCloneFromPvId IS NULL) THEN
6566
            	cloneFrom_pv_id := nCloneFromPvId;
6567
			ELSE
6568
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6569
			END IF;
6570
 
6571
            -- Clone Package Version Details --
6572
            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,
6573
                                           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  )
6574
                SELECT parPv_id         AS pv_id,
6575
                       parPkg_id        AS pkg_id,
6576
                       SSpkg_version    AS pkg_version,
6577
                       'N'              AS dlocked,
6578
                       Ora_Sysdate      AS created_stamp,
6579
                       NNuser_id        AS creator_id,
6580
                       Ora_Sysdatetime  AS modified_stamp,
6581
                       NNuser_id        AS modifier_id,
6582
                       SSV_MM           AS V_MM,
6583
                       SSV_NMM          AS V_NMM,
6584
                       SSV_EXT          AS V_EXT,
6585
                       pv.src_path,
6586
                       pv.pv_description,
6587
                       pv.PV_OVERVIEW,
6588
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6589
                       pv.owner_id,
6590
					   pv.BUILD_TYPE,
6591
					   pv.IS_BUILD_ENV_REQUIRED,
6592
					   pv.BS_ID,
6593
					   pv.is_autobuildable,
6594
					   pv.IS_DEPLOYABLE, 
6595
					   pv.ripple_field
6596
                  FROM PACKAGE_VERSIONS pv
6597
                 WHERE pv.pv_id = cloneFrom_pv_id;
6598
 
6599
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6600
 
6601
        ELSE
6602
            /* BRAND NEW version + ext */
6603
            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 )
6604
        	VALUES (
6605
                    parPv_id,
6606
                    parPkg_id,
6607
                    SSpkg_version,
6608
                    'N',
6609
                    Ora_Sysdate,
6610
                    NNuser_id,
6611
                    Ora_Sysdatetime,
6612
                    NNuser_id,
6613
                    SSV_MM,
6614
                    SSV_NMM,
6615
                    SSV_EXT,
6616
                    NNuser_id,
6617
                    parPv_id,
6618
					'M',
6619
					'b'
6620
                   );
6621
 
6622
        END IF;
6623
 
6624
        CLOSE clone_package_versions_cur;
6625
        retPV_ID := parPv_id;
6626
 
6627
    ELSE
6628
        retPV_ID := package_versions_rec.pv_id;
6629
 
6630
    END IF;
6631
 
6632
    CLOSE package_versions_cur;
6633
 
6634
 
6635
 
6636
 
6637
END Seed_Package_Names_Versions;
6638
/
6639
 
6640
CREATE OR REPLACE PROCEDURE Remove_Runtime ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6641
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
6642
                                             nUserId IN NUMBER ) IS
6643
/* ---------------------------------------------------------------------------
6644
    Version: 3.0
6645
   --------------------------------------------------------------------------- */
6646
 
6647
   RuntimeDependency VARCHAR2(4000);
6648
 
6649
BEGIN
6650
 
6651
	-- Get Runtime dependency
6652
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
6653
	  FROM RUNTIME_DEPENDENCIES rtd,
6654
	  	   PACKAGES pkg,
6655
	       PACKAGE_VERSIONS pv
6656
	 WHERE rtd.PV_ID = nPvId
6657
	   AND pv.PKG_ID = pkg.PKG_ID
6658
	   AND rtd.RTD_ID = pv.PV_ID
6659
	   AND rtd.RTD_ID = nRuntimeId;
6660
 
6661
 
6662
	-- Delete Document
6663
    DELETE
6664
      FROM RUNTIME_DEPENDENCIES rtd
6665
     WHERE rtd.PV_ID = nPvId
6666
       AND rtd.RTD_ID = nRuntimeId;
6667
 
6668
 
6669
    /* LOG ACTION */
6670
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
6671
   			     'Runtime package: '|| RuntimeDependency );
6672
 
6673
 
6674
END Remove_Runtime;
6675
/
6676
 
6677
CREATE OR REPLACE PROCEDURE Deprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6678
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6679
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6680
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
6681
											   nUserId IN NUMBER) IS
6682
ext VARCHAR2(50);
6683
 
6684
 
6685
 
6686
 
6687
BEGIN
6688
 
6689
	--Extract the package version extension
6690
	SELECT V_EXT into ext
6691
	FROM PACKAGE_VERSIONS
6692
	WHERE PV_ID = nPvId; 
6693
 
6694
    -- Deprecate Package
6695
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
6696
	VALUES (nRtagId, nPkgId, sComments, ext);
6697
 
6698
	IF ext IS NOT NULL THEN
6699
	   UPDATE RELEASE_CONTENT 
6700
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6701
	   WHERE RTAG_ID = nRtagId
6702
	   AND PV_ID IN (SELECT PV.PV_ID 
6703
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6704
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6705
				  	AND PV.V_EXT = ext
6706
				  	AND PKG.PKG_ID = nPkgId
6707
				 	);						
6708
	ELSE
6709
	   UPDATE RELEASE_CONTENT 
6710
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6711
	   WHERE RTAG_ID = nRtagId
6712
	   AND PV_ID IN (SELECT PV.PV_ID 
6713
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6714
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6715
				  	AND PV.V_EXT IS NULL
6716
				  	AND PKG.PKG_ID = nPkgId
6717
				 	);
6718
	END IF;
6719
 
6720
	UPDATE RELEASE_CONTENT
6721
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
6722
	WHERE RTAG_ID = nRtagId
6723
	AND PV_ID IN (		   SELECT DISTINCT
6724
 	 		  	 		   qry.PV_ID
6725
						        FROM (
6726
								 	  SELECT dep.*,
6727
									  LEVEL AS LEVEL_NUM
6728
									  FROM PACKAGE_DEPENDENCIES dep 
6729
 								START WITH dep.DPV_ID IN ( nPvId ) 
6730
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6731
 								) qry,
6732
								PACKAGES pkg,
6733
								PACKAGE_VERSIONS pv,
6734
								RELEASE_CONTENT rc
6735
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6736
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6737
							 AND rc.DEPRECATED_STATE IS NULL
6738
				 );			 
6739
 
6740
    /* LOG ACTION */
6741
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
6742
 
6743
 
6744
END Deprecate_Package;
6745
/
6746
 
6747
CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (
6748
   nprojid     IN   NUMBER,
6749
   nviewid     IN   NUMBER,
6750
   suserlist   IN   VARCHAR2
6751
)
6752
IS
6753
   groupid   NUMBER;
6754
/******************************************************************************
6755
   NAME:       ADD_AUTOBUILD_FAILURE
6756
   PURPOSE:
6757
 
6758
   REVISIONS:
6759
   Ver        Date        Author           Description
6760
   ---------  ----------  ---------------  ------------------------------------
6761
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
6762
 
6763
   NOTES:
6764
 
6765
   Automatically available Auto Replace Keywords:
6766
      Object Name:     ADD_AUTOBUILD_FAILURE
6767
      Sysdate:         11/04/2006
6768
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
6769
      Username:         (set in TOAD Options, Procedure Editor)
6770
      Table Name:       (set in the "New PL/SQL Object" dialog)
6771
 
6772
******************************************************************************/
6773
BEGIN
6774
   BEGIN
6775
      SELECT group_email_id
6776
        INTO groupid
6777
        FROM autobuild_failure
6778
       WHERE proj_id = nprojid AND view_id = nviewid;
6779
   EXCEPTION
6780
      WHEN NO_DATA_FOUND
6781
      THEN
6782
         --  Create Next Sequence Id ---
6783
         SELECT seq_group_email_id.NEXTVAL
6784
           INTO groupid
6785
           FROM DUAL;
6786
 
6787
         INSERT INTO autobuild_failure
6788
                     (group_email_id, proj_id, view_id
6789
                     )
6790
              VALUES (groupid, nprojid, nviewid
6791
                     );
6792
   END;
6793
 
6794
   add_view_members (groupid, suserlist);
6795
END add_autobuild_failure_info;
6796
/
6797
 
6798
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;
6799
/
6800
 
6801
CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"
6802
as TABLE of VARCHAR2(4000)
6803
/
6804
 
6805
CREATE OR REPLACE PROCEDURE CHANGE_RELEASE_MODE ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
6806
/* ---------------------------------------------------------------------------
6807
    Version: 3.0.0
6808
   --------------------------------------------------------------------------- */
6809
 
6810
	cMode CHAR(1) := NULL;  
6811
	nProjId NUMBER; 
6812
 
6813
BEGIN
6814
 
6815
 
6816
	/*
6817
	Author: Rupesh Solanki
6818
	Modified: 24th October 2006
6819
	Reason: Added the archive mode state into Release Manager 
6820
	||	1 - Open Mode
6821
	||	2 - Restrictive Mode
6822
	||	3 - Closed Mode
6823
	||	4 - CCB Mode
6824
	||	5 - Archive Mode
6825
	*/	
6826
	-- Get project Id
6827
	SELECT rt.PROJ_ID INTO nProjId
6828
	  FROM RELEASE_TAGS rt
6829
	 WHERE rt.RTAG_ID = nRtagId; 
6830
 
6831
	IF nModeCode = 1 THEN
6832
		-- Open Mode
6833
		cMode := 'N';
6834
 
6835
		/* LOG ACTION */
6836
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
6837
 
6838
	ELSIF nModeCode = 2 THEN
6839
		-- Restrictive Mode
6840
		cMode := 'R';
6841
 
6842
		/* LOG ACTION */
6843
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
6844
 
6845
	ELSIF nModeCode = 3 THEN
6846
		-- Closed Mode
6847
		cMode := 'Y';
6848
 
6849
		/* LOG ACTION */
6850
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
6851
 
6852
	ELSIF nModeCode = 4 THEN
6853
		-- CCB Mode
6854
		cMode := 'C';
6855
 
6856
		/* LOG ACTION */
6857
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
6858
 
6859
	ELSIF nModeCode = 5 THEN
6860
		-- Archive Mode
6861
		cMode := 'A';
6862
 
6863
		/* LOG ACTION */
6864
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
6865
 
6866
 
6867
	END IF;
6868
 
6869
 
6870
 
6871
	-- Now update table
6872
	IF NOT cMode IS NULL THEN
6873
		UPDATE RELEASE_TAGS rt SET
6874
		rt.OFFICIAL = cMode
6875
		WHERE rt.RTAG_ID = nRtagId;
6876
 
6877
	END IF;
6878
 
6879
 
6880
END CHANGE_RELEASE_MODE;
6881
/
6882
 
6883
CREATE OR REPLACE PROCEDURE Remove_Document ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6884
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
6885
                                              nUserId IN NUMBER ) IS
6886
/* ---------------------------------------------------------------------------
6887
    Version: 3.0
6888
   --------------------------------------------------------------------------- */
6889
 
6890
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
6891
 
6892
BEGIN
6893
 
6894
	-- Get Doc Num
6895
    SELECT pd.DOC_NUM INTO DocNumber
6896
      FROM PACKAGE_DOCUMENTS pd
6897
     WHERE pd.PV_ID = nPvId
6898
       AND pd.DOC_ID = nDocId;
6899
 
6900
 
6901
	-- Delete Document
6902
    DELETE
6903
      FROM PACKAGE_DOCUMENTS pd
6904
     WHERE pd.PV_ID = nPvId
6905
       AND pd.DOC_ID = nDocId;
6906
 
6907
 
6908
    /* LOG ACTION */
6909
   	Log_Action ( nPvId, 'document_remove', nUserId,
6910
   			     'Document number: '|| DocNumber );
6911
 
6912
 
6913
END Remove_Document;
6914
/
6915
 
6916
CREATE OR REPLACE PROCEDURE Update_Unit_Test ( nTest_id IN NUMBER,
6917
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6918
											   nPv_id IN NUMBER,
6919
											   nUserId IN NUMBER,
6920
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6921
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6922
	                                           sCompletion_date IN VARCHAR2,
6923
											   sDpkg_path IN VARCHAR2,
6924
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6925
											   sResults IN VARCHAR2,
6926
											   outFileName OUT VARCHAR2
6927
                                              ) IS
6928
/* ---------------------------------------------------------------------------
6929
    Version: 3.1.0
6930
   --------------------------------------------------------------------------- */
6931
 
6932
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6933
 
6934
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6935
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6936
 
6937
 
6938
BEGIN
6939
 
6940
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6941
       	ResultsURL := sResults;
6942
       ELSE
6943
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6944
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6945
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6946
           END IF;
6947
       END IF;
6948
 
6949
	--- Update Unit Test ---
6950
    UPDATE UNIT_TESTS SET
6951
           TEST_SUMMARY = sTest_summary,
6952
		   NUMOF_TEST = sNumof_test,
6953
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6954
		   COMPLETED_BY = nUserId,
6955
		   RESULTS_URL = ResultsURL,
6956
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
6957
     WHERE TEST_ID = nTest_id
6958
       AND PV_ID = nPv_id;
6959
 
6960
END Update_Unit_Test;
6961
/
6962
 
6963
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Test ( nTest_id IN NUMBER,
6964
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6965
											   nPv_id IN NUMBER,
6966
											   nUserId IN NUMBER,
6967
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6968
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6969
	                                           sCompletion_date IN VARCHAR2,
6970
											   sDpkg_path IN VARCHAR2,
6971
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6972
											   sResults IN VARCHAR2,
6973
											   outFileName OUT VARCHAR2
6974
                                              ) IS
6975
/* ---------------------------------------------------------------------------
6976
    Version: 3.1.0
6977
   --------------------------------------------------------------------------- */
6978
 
6979
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6980
 
6981
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6982
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6983
 
6984
 
6985
BEGIN
6986
 
6987
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6988
       	ResultsURL := sResults;
6989
       ELSE
6990
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6991
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6992
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6993
           END IF;
6994
       END IF;
6995
 
6996
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6997
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
6998
    		sResults_url:= 'doc' || '/' || 
6999
			;
7000
        END IF;*/
7001
	--- Update Unit Test ---
7002
    UPDATE UNIT_TESTS SET
7003
           TEST_SUMMARY = sTest_summary,
7004
		   NUMOF_TEST = sNumof_test,
7005
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
7006
		   COMPLETED_BY = nUserId,
7007
		   RESULTS_URL = ResultsURL,
7008
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
7009
     WHERE TEST_ID = nTest_id
7010
       AND PV_ID = nPv_id;
7011
 
7012
END Update_Unit_Test_Test;
7013
/
7014
 
7015
CREATE OR REPLACE PROCEDURE Update_Additional_Note ( pnNote_id IN NUMBER,
7016
													 pnPv_id IN NUMBER,
7017
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
7018
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
7019
                                                     pnUser_id IN NUMBER,
7020
                                                     outErrCode OUT NUMBER
7021
                                                    ) IS
7022
/* ---------------------------------------------------------------------------
7023
    Version: 3.0.1
7024
   --------------------------------------------------------------------------- */
7025
 
7026
    newID NUMBER;
7027
 
7028
    /* Disallow duplicate Note Titles */
7029
	CURSOR an_duplicate_cur IS
7030
        SELECT COUNT(*) AS cnt_note
7031
          FROM ADDITIONAL_NOTES
7032
         WHERE pv_id = pnPv_id
7033
           AND note_id != pnNote_id
7034
           AND note_title = psNote_title;
7035
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
7036
 
7037
BEGIN
7038
	outErrCode := -1;		-- Set default return error code to ERROR state
7039
 
7040
	OPEN an_duplicate_cur;
7041
    FETCH an_duplicate_cur INTO an_duplicate_rec;
7042
 
7043
    IF an_duplicate_rec.cnt_note < 1
7044
    THEN
7045
		--- Update Additional Note ---
7046
	    UPDATE ADDITIONAL_NOTES SET
7047
		       note_title = psNote_title,
7048
		       note_body = psNote_body,
7049
		       mod_date = Ora_Sysdate,
7050
		       mod_user = pnUser_id
7051
         WHERE note_id = pnNote_id
7052
           AND pv_id = pnPv_id;
7053
		outErrCode := 0;		-- Set return to SUCCESS
7054
	END IF;
7055
 
7056
	CLOSE an_duplicate_cur;
7057
END Update_Additional_Note;
7058
/
7059
 
7060
CREATE OR REPLACE FUNCTION GET_V_EXT (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
7061
 
7062
/* ---------------------------------------------------------------------------
7063
    Version: 3.0.0
7064
   --------------------------------------------------------------------------- */
7065
 
7066
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
7067
    lastDot NUMBER;
7068
 
7069
BEGIN
7070
    lastDot := INSTR (SSpkg_version, '.', -1);
7071
 
7072
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
7073
    THEN
7074
        -- YES dot separator found --
7075
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
7076
 
7077
        IF IS_VERSION_EXTENSION ( SSV_EXT )
7078
        THEN
7079
            RETURN SSV_EXT;
7080
        ELSE
7081
            RETURN NULL;
7082
        END IF;
7083
 
7084
    ELSE
7085
        -- NO dot separator found --
7086
        RETURN NULL;
7087
    END IF;
7088
 
7089
END GET_V_EXT;
7090
/
7091
 
7092
CREATE OR REPLACE PROCEDURE Update_Runtime_Dependency ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7093
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7094
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7095
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7096
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7097
													    NNuser_id IN NUMBER ) IS
7098
/* ---------------------------------------------------------------------------
7099
    Version: 3.0.1
7100
   --------------------------------------------------------------------------- */
7101
 
7102
    retRTD_ID	NUMBER;
7103
	CURSOR rtd_cur IS
7104
	    SELECT pv.pkg_version, pkg.pkg_name
7105
		  FROM runtime_dependencies rtd,
7106
		       package_versions pv,
7107
			   packages pkg
7108
		 WHERE rtd.rtd_id = pv.pv_id
7109
		   AND pv.pkg_id = pkg.pkg_id
7110
		   AND rtd.pv_id = NNpv_id
7111
		   AND rtd.rtd_id = NNrtd_id;
7112
	   rtd_rec rtd_cur%ROWTYPE;
7113
 
7114
	CURSOR old_rtd_cur IS
7115
	    SELECT pv.pv_id
7116
		  FROM package_versions pv
7117
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7118
		 	   			 	    FROM package_versions rtdpv
7119
							   WHERE rtdpv.pv_id = NNrtd_id )
7120
		   AND pv.pkg_version = SSrtd_version;
7121
	old_rtd_rec old_rtd_cur%ROWTYPE;
7122
 
7123
 
7124
BEGIN
7125
 
7126
    -- Get current runtime dependency details
7127
	OPEN rtd_cur;
7128
    FETCH rtd_cur INTO rtd_rec;
7129
 
7130
 
7131
 
7132
 
7133
	IF rtd_rec.pkg_version != SSrtd_version THEN
7134
           -- Version has changed, hence create new runtime dependency --
7135
	    /* NOTE: You must create new version as updating just a version will affect
7136
		        all packages using this runtime dependency and user does not expect that.
7137
		        It is safer to create new version */
7138
		OPEN old_rtd_cur;
7139
		FETCH old_rtd_cur INTO old_rtd_rec;
7140
 
7141
 
7142
		IF old_rtd_cur%NOTFOUND
7143
		THEN
7144
			-- Version not found, hence Create New version --
7145
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7146
 
7147
			-- Update runtime dependency table --
7148
			UPDATE runtime_dependencies SET
7149
				   rtd_id = retRTD_ID,
7150
				   rtd_url = SSrtd_url,
7151
				   rtd_comments = SSrtd_comments
7152
			 WHERE pv_id = NNpv_id
7153
			   AND rtd_id = NNrtd_id;
7154
 
7155
		ELSE
7156
			-- Update runtime dependency table --
7157
			UPDATE runtime_dependencies SET
7158
				   rtd_id = old_rtd_rec.pv_id,
7159
				   rtd_url = SSrtd_url,
7160
				   rtd_comments = SSrtd_comments
7161
			 WHERE pv_id = NNpv_id
7162
			   AND rtd_id = NNrtd_id;
7163
 
7164
		END IF;
7165
 
7166
 
7167
		CLOSE old_rtd_cur;
7168
 
7169
	ELSE
7170
		--  Version has not changed, hence update everithing except	version --
7171
		UPDATE runtime_dependencies SET
7172
			   rtd_url = SSrtd_url,
7173
			   rtd_comments = SSrtd_comments
7174
		 WHERE pv_id = NNpv_id
7175
		   AND rtd_id = NNrtd_id;
7176
 
7177
 
7178
 
7179
	END IF;
7180
 
7181
 
7182
	CLOSE rtd_cur;
7183
 
7184
END Update_Runtime_Dependency;
7185
/
7186
 
7187
CREATE OR REPLACE PROCEDURE                 UPDATE_MISC_VIEW IS
7188
/******************************************************************************
7189
   NAME:       UPDATE_MISC_VIEW
7190
   PURPOSE:    
7191
 
7192
   REVISIONS:
7193
   Ver        Date        Author           Description
7194
   ---------  ----------  ---------------  ------------------------------------
7195
   1.0        16/03/2007          1. Created this procedure.
7196
 
7197
   NOTES:
7198
 
7199
   Automatically available Auto Replace Keywords:
7200
      Object Name:     UPDATE_MISC_VIEW
7201
      Sysdate:         16/03/2007
7202
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7203
      Username:         (set in TOAD Options, Procedure Editor)
7204
      Table Name:       (set in the "New PL/SQL Object" dialog)
7205
 
7206
******************************************************************************/
7207
   CURSOR view_cur /*Create a record set to store the ripple data*/
7208
   IS
7209
   	 SELECT pkg.pkg_id, rc.base_view_id 
7210
	 FROM package_versions pv, packages pkg, release_content rc
7211
	 where rc.rtag_id = 2362
7212
	 and rc.pv_id = pv.pv_id
7213
	 and pv.pkg_id = pkg.pkg_id;
7214
   view_rec   view_cur%ROWTYPE;
7215
 
7216
 
7217
 
7218
BEGIN
7219
   OPEN view_cur;
7220
 
7221
   FETCH view_cur
7222
    INTO view_rec;
7223
 
7224
   WHILE view_cur%FOUND
7225
   LOOP
7226
 
7227
 
7228
	   update release_content
7229
	   set base_view_id = view_rec.base_view_id
7230
	   where rtag_id = 8027
7231
	   and pv_id IN 
7232
	   (
7233
	   	select pv.pv_id from release_content rc, package_versions pv
7234
		where rc.rtag_id = 8027
7235
		and pv.pv_id = rc.pv_id
7236
		and pv.pkg_id = view_rec.pkg_id 
7237
 
7238
	   );
7239
 
7240
 
7241
 
7242
 
7243
 
7244
 
7245
 
7246
 
7247
 
7248
   FETCH view_cur
7249
   		 INTO view_rec;
7250
   END LOOP;	 
7251
 
7252
 
7253
 
7254
 
7255
 
7256
END UPDATE_MISC_VIEW;
7257
/
7258
 
7259
CREATE OR REPLACE PACKAGE PK_WORK_IN_PROGRESS IS
7260
/*
7261
------------------------------
7262
||  Last Modified:  S.Vukovic
7263
||  Modified Date:  2/May/2005
7264
||  Spec Version:   1.0
7265
------------------------------
7266
*/
7267
 
7268
	TYPE typeCur IS REF CURSOR;
7269
 
7270
    /*================================================================================================*/
7271
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7272
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7273
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
7274
 
7275
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
7276
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
7277
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
7278
	/*================================================================================================*/
7279
 
7280
END PK_WORK_IN_PROGRESS;
7281
/
7282
 
7283
CREATE OR REPLACE PROCEDURE level_one_conflicts (
7284
   nnrtag_id       IN   NUMBER,
7285
   nnsession_num   IN   NUMBER
7286
)
7287
IS
7288
/* ---------------------------------------------------------------------------
7289
    Version: 3.0.0
7290
   --------------------------------------------------------------------------- */
7291
BEGIN
7292
   /* ---------  LEVEL 1 CONFILCTS -----------
7293
   || Following states are used:
7294
   || 0 -> NOT FOUND
7295
   || 1 -> MAJOR
7296
   || 2 -> MINOR MINOR
7297
   */
7298
   INSERT INTO temp_env_states
7299
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
7300
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
7301
                      DECODE (frc.v_nmm,
7302
                              NULL, 0,
7303
                              errpv.v_nmm, DECODE (frc.v_mm,
7304
                                                   errpv.v_mm, NULL,
7305
                                                   2
7306
                                                  ),
7307
                              1
7308
                             ) AS MESSAGE
7309
                 FROM (
7310
                       /* Full Release Contents used for reference*/
7311
                       SELECT rpv.pkg_id,
7312
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
7313
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
7314
                         FROM release_content rel, package_versions rpv
7315
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
7316
                      (
7317
                       /* DPV_IDs not fount in release*/
7318
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
7319
                         FROM package_dependencies dep
7320
                        WHERE dep.pv_id IN (SELECT pv_id
7321
                                              FROM release_content
7322
                                             WHERE rtag_id = nnrtag_id)
7323
                          AND NOT dep.dpv_id IN (SELECT pv_id
7324
                                                   FROM release_content
7325
                                                  WHERE rtag_id = nnrtag_id)
7326
                       MINUS
7327
                       /* MINUS Dependencies to be ignored */
7328
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
7329
                         FROM ignore_warnings igw
7330
                        WHERE rtag_id = nnrtag_id) err,
7331
                      package_versions errpkg,
7332
                      package_versions errpv
7333
                WHERE err.err_dpv = errpv.pv_id
7334
                  AND errpv.pkg_id = frc.pkg_id(+)
7335
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
7336
                  AND err.pv_id = errpkg.pv_id;
7337
END level_one_conflicts;
7338
/
7339
 
7340
CREATE OR REPLACE PROCEDURE CLONED_PROCESSES
7341
IS
7342
 
7343
proc_id NUMBER;
7344
/******************************************************************************
7345
   NAME:       DELETE_DO_NOT_RIPPLE
7346
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7347
               IS RELEASED
7348
 
7349
   REVISIONS:
7350
   Ver        Date        Author           Description
7351
   ---------  ----------  ---------------  ------------------------------------
7352
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7353
 
7354
   NOTES:
7355
 
7356
   Automatically available Auto Replace Keywords:
7357
      Object Name:     DELETE_DO_NOT_RIPPLE
7358
      Sysdate:         21/04/2006
7359
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7360
      Username:         (set in TOAD Options, Procedure Editor)
7361
      Table Name:       (set in the "New PL/SQL Object" dialog)
7362
 
7363
******************************************************************************/
7364
   CURSOR ripple_cur
7365
   IS
7366
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
7367
 
7368
   ripple_rec   ripple_cur%ROWTYPE;
7369
BEGIN
7370
   OPEN ripple_cur;
7371
 
7372
   FETCH ripple_cur
7373
    INTO ripple_rec;
7374
 
7375
   WHILE ripple_cur%FOUND
7376
   LOOP
7377
 
7378
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
7379
 
7380
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
7381
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
7382
 
7383
      FETCH ripple_cur
7384
       INTO ripple_rec;
7385
   END LOOP;
7386
END CLONED_PROCESSES;
7387
/
7388
 
7389
CREATE OR REPLACE PACKAGE pk_package_Test
7390
IS
7391
/*
7392
------------------------------
7393
||  Last Modified:  Rupesh Solanki
7394
||  Modified Date:  18/05/2006
7395
||
7396
------------------------------
7397
*/
7398
   TYPE typecur IS REF CURSOR;
7399
 
7400
/*================================================================================================*/
7401
   PROCEDURE new_version (
7402
      nlastpvid                   IN       NUMBER,
7403
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7404
      cbuildtype                  IN       CHAR,
7405
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7406
      nrtagid                     IN       NUMBER,
7407
      nuserid                     IN       NUMBER,
7408
      enumissues_state_imported   IN       NUMBER,
7409
      returnpvid                  OUT      NUMBER
7410
   );
7411
 
7412
   PROCEDURE change_state (
7413
      pvid       IN   NUMBER,
7414
      newstate   IN   package_versions.dlocked%TYPE,
7415
      userid     IN   NUMBER
7416
   );
7417
 
7418
   PROCEDURE new_patch (
7419
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
7420
      nparentpvid        IN       NUMBER,
7421
      spatchidlist       IN       VARCHAR2,
7422
      nuserid            IN       NUMBER,
7423
      returnpatchid      OUT      NUMBER
7424
   );
7425
 
7426
   PROCEDURE obsolete_patch (
7427
      patchid            IN   NUMBER,
7428
      isobsolete         IN   CHAR,
7429
      obsoletecomments   IN   VARCHAR2,
7430
      userid             IN   NUMBER
7431
   );
7432
 
7433
   PROCEDURE obsolete_patches (
7434
      spatchidlist       IN   VARCHAR2,
7435
      isobsolete         IN   CHAR,
7436
      obsoletecomments   IN   VARCHAR2,
7437
      userid             IN   NUMBER
7438
   );
7439
 
7440
   PROCEDURE destroy_package (
7441
      pvid               IN       NUMBER,
7442
      overridewarnings   IN       CHAR DEFAULT 'N',
7443
      problemstring      OUT      VARCHAR2
7444
   );
7445
 
7446
   PROCEDURE add_process (
7447
      nprocid         IN   processes.proc_id%TYPE,
7448
      shealthtag      IN   processes.proc_name%TYPE,
7449
      sprocdesc       IN   processes.proc_description%TYPE,
7450
      scmdinterface   IN   processes.run_as%TYPE,
7451
      spkgowner       IN   processes.pkg_owner%TYPE,
7452
      sisinterface    IN   processes.is_interface%TYPE,
7453
      npvid           IN   package_processes.pv_id%TYPE,
7454
      nuserid         IN   NUMBER
7455
   );
7456
 
7457
   PROCEDURE add_package_process (
7458
      nprocidlist   IN   VARCHAR2,
7459
      npvid         IN   package_processes.pv_id%TYPE,
7460
      nuserid       IN   NUMBER
7461
   );
7462
 
7463
 
7464
 
7465
   PROCEDURE remove_process (
7466
      nprocid   IN   package_processes.proc_id%TYPE,
7467
      npvid     IN   package_processes.pv_id%TYPE,
7468
      nuserid   IN   NUMBER
7469
   );
7470
 
7471
   PROCEDURE move_package (
7472
   	  npvid  			  IN package_versions.pv_id%TYPE,
7473
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
7474
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
7475
	  nuserid			  IN NUMBER		 
7476
   ); 
7477
 
7478
PROCEDURE modify_product_state (
7479
   	  npvid IN package_versions.pv_id%TYPE,
7480
	  nstateid IN product_states.state_id%TYPE,
7481
	  nuserid IN NUMBER
7482
   );
7483
/*================================================================================================*/
7484
END pk_package_Test;
7485
/
7486
 
7487
CREATE OR REPLACE PROCEDURE Shift_Install_Order ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
7488
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
7489
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
7490
/* ---------------------------------------------------------------------------
7491
    Version: 3.0
7492
   --------------------------------------------------------------------------- */
7493
 
7494
currInstallOrder NUMBER;
7495
FromInstallOrder NUMBER;
7496
 
7497
BEGIN
7498
 
7499
	 -- Get Current Install Order
7500
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
7501
       FROM PACKAGE_PATCHES pp
7502
      WHERE pp.PV_ID = nPvId
7503
        AND pp.PATCH_ID = nPatchId;
7504
 
7505
 
7506
	 IF currInstallOrder > nToInstallOrder
7507
	 THEN
7508
 
7509
		FromInstallOrder := nToInstallOrder;
7510
 
7511
	    -- Shift others Up
7512
		UPDATE PACKAGE_PATCHES pp SET
7513
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
7514
		 WHERE pp.PV_ID = nPvId
7515
           AND pp.PATCH_ID != nPatchId
7516
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
7517
 
7518
 
7519
	 ELSIF currInstallOrder < nToInstallOrder
7520
	 THEN
7521
 
7522
		FromInstallOrder := currInstallOrder + 1;
7523
 
7524
		-- Shift others Down
7525
        UPDATE PACKAGE_PATCHES pp SET
7526
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
7527
		 WHERE pp.PV_ID = nPvId
7528
           AND pp.PATCH_ID != nPatchId
7529
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
7530
 
7531
	 END IF;
7532
 
7533
 
7534
	 -- Move Patch to new install order
7535
     UPDATE PACKAGE_PATCHES pp SET
7536
		    pp.INSTALL_ORDER = nToInstallOrder
7537
	  WHERE pp.PV_ID = nPvId
7538
	    AND pp.PATCH_ID = nPatchId;
7539
 
7540
 
7541
END Shift_Install_Order;
7542
/
7543
 
7544
CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEAN
7545
IS
7546
   temp_num NUMBER;
7547
/* ---------------------------------------------------------------------------
7548
    Version: 1.0.0
7549
   --------------------------------------------------------------------------- */
7550
BEGIN
7551
   temp_num := TO_NUMBER(p_val);
7552
   RETURN true;
7553
EXCEPTION WHEN VALUE_ERROR THEN
7554
   RETURN false;
7555
END IS_NUMBER;
7556
/
7557
 
57 mhunt 7558
CREATE OR REPLACE PROCEDURE                   "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
7559
                        nTOpv_id IN NUMBER,
7560
                        nRtag_id IN NUMBER,
7561
                        nUser_id IN NUMBER,
7562
                        nTOpkg_id IN NUMBER DEFAULT NULL,
7563
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
7564
 
7565
   /* ---------------------------------------------------------------------------
7566
   ||  Last Modified:  G.Huddy
7567
   ||  Modified Date:  19/Aug/2008
7568
   ||  Version      :  3.6 (added licencing cloning)
51 mhunt 7569
   --------------------------------------------------------------------------- */
7570
 
7571
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
59 mhunt 7572
major NUMBER;
7573
minor NUMBER;
7574
patch NUMBER;
7575
buildn NUMBER;
51 mhunt 7576
BEGIN
59 mhunt 7577
------------------------------------- Limits ---------------------------------------------------
7578
   select major_limit, minor_limit, patch_limit, build_number_limit
7579
   into major, minor, patch, buildn
7580
   from package_versions where pv_id=nFROMpv_id;
7581
    UPDATE package_versions SET
7582
           major_limit = major,
7583
           minor_limit = minor,
7584
           patch_limit = patch,
7585
           build_number_limit = buildn
7586
     WHERE PV_ID = nTOpv_id;
51 mhunt 7587
------------------------------------- Clone Dependencies ---------------------------------------------------
57 mhunt 7588
   IF NOT nRtag_id IS NULL
7589
   THEN
7590
      -- Auto Update Dependencies --
7591
      INSERT INTO PACKAGE_DEPENDENCIES
7592
           SELECT nTOpv_id AS pv_id,
7593
                  DECODE(nUser_id,
7594
                         frc.modifier_id,
7595
                         frc.pv_id,
7596
                         DECODE(frc.dlocked,
7597
                                'Y',
7598
                                frc.pv_id,
7599
                                dep.dpv_id)
7600
                         ) AS dpv_id,
7601
                  nTOpkg_id AS pkg_id,
7602
                  dep.dpkg_id,
7603
                  dep.build_type,
7604
                  dep.display_order
7605
             FROM PACKAGE_DEPENDENCIES dep,
7606
                  PACKAGE_VERSIONS pv,
7607
                  (
7608
                  /* Full Release Contents used for reference*/
7609
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
7610
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
7611
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
7612
                  ) frc
7613
            WHERE dep.pv_id = nFROMpv_id
7614
              AND dep.dpv_id = pv.pv_id
7615
              AND pv.pkg_id = frc.pkg_id(+)
7616
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
7617
   ELSE
7618
      -- Clone Dependencies --
7619
      INSERT INTO PACKAGE_DEPENDENCIES
7620
           SELECT nTOpv_id         AS pv_id,
7621
                  dep.dpv_id,
7622
                  nTOpkg_id        AS pkg_id,
7623
                  dep.dpkg_id,
7624
                  dep.build_type,
7625
                  dep.display_order
7626
             FROM PACKAGE_DEPENDENCIES dep
7627
            WHERE dep.pv_id = nFROMpv_id;
51 mhunt 7628
 
57 mhunt 7629
   END IF;
51 mhunt 7630
 
7631
----------------------------------------- Clone Issues -------------------------------------------------------
57 mhunt 7632
   IF enumISSUES_STATE_IMPORTED IS NULL
7633
   THEN
51 mhunt 7634
        /* All Issues */
57 mhunt 7635
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7636
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7637
              FROM CQ_ISSUES
7638
             WHERE pv_id = nFROMpv_id;
7639
   ELSE
7640
       /* Outstanding Issues Only */
7641
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7642
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7643
              FROM CQ_ISSUES
51 mhunt 7644
             WHERE pv_id = nFROMpv_id
7645
               AND iss_state = enumISSUES_STATE_IMPORTED;
57 mhunt 7646
   END IF;
51 mhunt 7647
 
7648
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
57 mhunt 7649
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
7650
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
7651
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
51 mhunt 7652
 
7653
--------------------------------------- Clone Additional Notes ------------------------------------------------
57 mhunt 7654
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
7655
        SELECT an.NOTE_ID,
7656
               nTOpv_id AS PV_ID,
7657
               an.NOTE_TITLE,
7658
               an.NOTE_BODY,
7659
               an.MOD_DATE,
7660
               an.MOD_USER
7661
          FROM ADDITIONAL_NOTES an
7662
         WHERE an.PV_ID = nFROMpv_id;
51 mhunt 7663
 
7664
-------------------------------------------- Clone Unit Tests -------------------------------------------------
57 mhunt 7665
   -- Clone only Automatic unit tests --
7666
   INSERT INTO UNIT_TESTS (
7667
                           TEST_ID,
7668
                           PV_ID,
7669
                           TEST_TYPES_FK,
7670
                           TEST_SUMMARY,
7671
                           COMPLETION_DATE,
7672
                           COMPLETED_BY,
7673
                           RESULTS_URL,
7674
                           RESULTS_ATTACHMENT_NAME,
7675
                           NUMOF_TEST
7676
                          )
7677
        SELECT ut.TEST_ID,
7678
               nTOpv_id AS PV_ID,
7679
               ut.TEST_TYPES_FK,
7680
               ut.TEST_SUMMARY,
7681
               Ora_Sysdate AS COMPLETION_DATE,
7682
               nUser_id AS COMPLETED_BY,
7683
               ut.RESULTS_URL,
7684
               ut.RESULTS_ATTACHMENT_NAME,
7685
               ut.NUMOF_TEST
7686
          FROM UNIT_TESTS ut
7687
         WHERE ut.PV_ID = nFROMpv_id
7688
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
51 mhunt 7689
 
57 mhunt 7690
    -- Clone only Interactive Unit Tests --
7691
    INSERT INTO UNIT_TESTS (
7692
                            TEST_ID,
7693
                            PV_ID,
7694
                            TEST_TYPES_FK,
7695
                            TEST_SUMMARY
7696
                           )
7697
       SELECT ut.TEST_ID,
7698
              nTOpv_id AS PV_ID,
7699
              ut.TEST_TYPES_FK,
7700
              ut.TEST_SUMMARY
7701
         FROM UNIT_TESTS ut
7702
        WHERE ut.PV_ID = nFROMpv_id
7703
          AND ut.TEST_TYPES_FK IN (6);
7704
 
51 mhunt 7705
-------------------------------------------- Clone Package Documents ------------------------------------------
57 mhunt 7706
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
7707
        SELECT nTOpv_id AS PV_ID,
7708
               pd.test_id,
7709
               pd.doc_num,
7710
               pd.doc_id,
7711
               pd.IS_LATEST
7712
          FROM PACKAGE_DOCUMENTS pd
7713
         WHERE pd.PV_ID = nFROMpv_id;
51 mhunt 7714
 
7715
-------------------------------------------- Clone Build Environments -----------------------------------------
7716
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
57 mhunt 7717
    SELECT nTOpv_id AS PV_ID,
7718
           pkgbe.BE_ID,
7719
           pkgbe.BUILD_TYPE
7720
      FROM PACKAGE_BUILD_ENV pkgbe
7721
     WHERE pkgbe.PV_ID = nFROMpv_id;
51 mhunt 7722
---------------------------------------------Clone Package Build Info------------------------------------------
7723
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
57 mhunt 7724
    SELECT nTOpv_id AS PV_ID,
7725
           pkgbinfo.BM_ID,
7726
           pkgbinfo.BSA_ID
7727
      FROM PACKAGE_BUILD_INFO pkgbinfo
7728
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
51 mhunt 7729
---------------------------------------------Clone Package Version Processes-----------------------------------
7730
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
57 mhunt 7731
    SELECT nTOpv_id AS PV_ID,
7732
           pp.PROC_ID
7733
      FROM PACKAGE_PROCESSES pp
7734
     WHERE pp.PV_ID = nFROMpv_id;
7735
---------------------------------------------Clone Licencing Associations-----------------------------------
7736
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
51 mhunt 7737
---------------------------------------------------------------------------------------------------------------
7738
 
57 mhunt 7739
    /* LOG ACTION */
51 mhunt 7740
    SELECT pv.PKG_VERSION INTO FromVersion
7741
      FROM PACKAGE_VERSIONS pv
7742
     WHERE pv.PV_ID = nFROMpv_id;
7743
 
7744
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
57 mhunt 7745
                 'Details cloned from: '|| FromVersion );
51 mhunt 7746
 
7747
---------------------------------------------------------------------------------------------------------------
7748
 
7749
END Basic_Clone;
7750
/
7751
 
7752
CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
7753
/* ---------------------------------------------------------------------------
7754
    Version: 3.0.0
7755
   --------------------------------------------------------------------------- */
7756
 
7757
 
7758
BEGIN
7759
 
7760
	 --- Delete From RELEASE_COMPONENTS
7761
	 DELETE FROM RELEASE_COMPONENTS
7762
	 WHERE PV_ID = nPvId;
7763
 
7764
END Remove_Components;
7765
/
7766
 
7767
CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version   ( nPv_id 				IN NUMBER,
7768
														  sSyncRtagsInList		IN VARCHAR2,
7769
				                                          nUser_id 				IN NUMBER ) IS
7770
/* ---------------------------------------------------------------------------
7771
    Version: 3.0.0
7772
   --------------------------------------------------------------------------- */
7773
 
7774
	CURSOR sync_rtags_cur IS
7775
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
7776
		  FROM release_content rc,
7777
		  	   package_versions pv,
7778
		       package_versions opv
7779
		 WHERE rc.pv_id = pv.pv_id
7780
		   AND opv.pkg_id = pv.pkg_id
7781
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
7782
		   AND opv.pv_id = nPv_id
7783
		   AND rtag_id IN ( SELECT *
7784
		   	   		   	      FROM THE (
7785
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
7786
					       		   	    FROM dual
7787
									   )
7788
						  );
7789
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
7790
 
7791
BEGIN
7792
 
7793
	OPEN sync_rtags_cur;
7794
	FETCH sync_rtags_cur INTO sync_rtags_rec;
7795
 
7796
	WHILE sync_rtags_cur%FOUND
7797
	LOOP
7798
		DELETE FROM RELEASE_CONTENT
7799
		 WHERE rtag_id = sync_rtags_rec.rtag_id
7800
	       AND pv_id = sync_rtags_rec.pv_id;
7801
 
7802
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
7803
	   		   VALUES ( sync_rtags_rec.rtag_id,
7804
		       		  	nPv_id,
7805
						sync_rtags_rec.BASE_VIEW_ID,
7806
	           			Ora_Sysdate,
7807
	           			nUser_id,
7808
 
7809
	      	   		   );
7810
 
7811
-- 		UPDATE RELEASE_CONTENT
7812
-- 	       SET pv_id = nPv_id,
7813
-- 	           insert_stamp = Ora_Sysdate,
7814
-- 	           insertor_id = nUser_id
7815
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
7816
-- 	       AND pv_id = sync_rtags_rec.pv_id;
7817
 
7818
		FETCH sync_rtags_cur INTO sync_rtags_rec;
7819
	END LOOP;
7820
 
7821
	CLOSE sync_rtags_cur;
7822
 
7823
END Sync_Projects_New_Version;
7824
/
7825
 
7826
CREATE OR REPLACE PROCEDURE Set_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7827
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7828
											 nUserId IN NUMBER ) IS
7829
/* ---------------------------------------------------------------------------
7830
    Version: 4.0
7831
   --------------------------------------------------------------------------- */
7832
 
7833
BEGIN
7834
 
7835
    -- Set Advisory Ripple Package
7836
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
7837
	VALUES (nRtagId, nPvId);
7838
 
7839
    /* LOG ACTION */
7840
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
7841
 
7842
	/*Rebuild_Environment(nRtagId);*/
7843
 
7844
END Set_Advisory_Ripple;
7845
/
7846
 
7847
CREATE OR REPLACE PACKAGE pk_project IS
7848
/*
7849
------------------------------
7850
||  Last Modified:  J.Tweddle
7851
||  Modified Date:  23/Aug/2007
7852
||  Spec Version:   1.0
7853
------------------------------
7854
*/
7855
 
7856
    TYPE typecur IS REF CURSOR;
7857
 
7858
    /*------------------------------------------------------------------------*/
7859
    PROCEDURE update_base_url (
7860
        nprojid   IN  projects.proj_id%TYPE,
7861
        sbaseurl  IN  VARCHAR2
7862
    );
7863
    /*------------------------------------------------------------------------*/
7864
 
7865
END pk_project;
7866
/
7867
 
7868
CREATE OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT  (
7869
  sender      IN VARCHAR2,
7870
  recipient   IN VARCHAR2,
7871
  ccrecipient IN VARCHAR2,
7872
  subject     IN VARCHAR2,
7873
  message     IN VARCHAR2
7874
  ) IS
7875
 
7876
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
7877
  connection utl_smtp.connection;
7878
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
7879
  header VARCHAR2(1000);
7880
 
7881
BEGIN
7882
 
7883
  --
7884
  -- Start the connection.
7885
  --
7886
  connection := utl_smtp.open_connection(mailhost,25);
7887
 
7888
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
7889
     'From: '||sender||''||crlf||
7890
  'Subject: '||subject||crlf||
7891
       'To: '||recipient||crlf||
7892
       'CC: '||ccrecipient;
7893
 
7894
  --
7895
  -- Handshake with the SMTP server
7896
  --
7897
  utl_smtp.helo(connection, mailhost);
7898
  utl_smtp.mail(connection, sender);
7899
  utl_smtp.rcpt(connection, recipient);
7900
  utl_smtp.rcpt(connection, ccrecipient);
7901
  utl_smtp.open_data(connection);
7902
  --
7903
  -- Write the header
7904
  --
7905
  utl_smtp.write_data(connection, header);
7906
  --
7907
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
7908
  --
7909
  utl_smtp.write_data(connection, crlf ||message);
7910
  utl_smtp.close_data(connection);
7911
  utl_smtp.quit(connection);
7912
 
7913
EXCEPTION
7914
  WHEN UTL_SMTP.INVALID_OPERATION THEN
7915
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
7916
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
7917
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
7918
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
7919
    dbms_output.put_line(' Errors in code for SMTP transaction.');
7920
 
7921
END RELEASE_MANAGER_MAILOUT;
7922
/
7923
 
7924
CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,
7925
	   	  		  					     retSessionNum OUT NUMBER ) IS
7926
 
7927
/* ---------------------------------------------------------------------------
7928
    Version: 3.0.0
7929
   --------------------------------------------------------------------------- */
7930
    rowCnt 			NUMBER := 0;						-- Iterations counter
7931
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
7932
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
7933
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
7934
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
7935
    sessionNum 		NUMBER;
7936
	levelNum		NUMBER;
7937
 
7938
BEGIN
7939
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
7940
 
7941
	/*
7942
	||	   Start UP THE TREE
7943
	*/
7944
 
7945
 
7946
	/* Packages with no dependencies */    
7947
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7948
		SELECT sessionNum AS SESSION_NUM,
7949
			   iteration AS LEVEL_NUM,
7950
			   UP_THE_TREE AS DIRECTION,
7951
			   rc.pv_id, pv.pkg_id, pv.v_ext
7952
		  FROM release_content rc,
7953
		  	   package_versions pv
7954
		 WHERE rc.rtag_id = nRtag_id
7955
		   AND rc.pv_id = pv.pv_id
7956
		 MINUS
7957
		SELECT sessionNum AS SESSION_NUM, 
7958
			   iteration AS LEVEL_NUM,
7959
			   UP_THE_TREE AS DIRECTION,
7960
			   dep.pv_id, pv.pkg_id, pv.v_ext
7961
		  FROM package_dependencies dep,
7962
		  	   package_versions pv
7963
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
7964
		   AND dep.pv_id = pv.pv_id;
7965
 
7966
 
7967
	/* Browse UP the build tree */	   
7968
	iteration := iteration + 1;
7969
    LOOP
7970
 
7971
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7972
			SELECT DISTINCT 
7973
			       sessionNum AS SESSION_NUM,
7974
			       iteration AS LEVEL_NUM,
7975
				   UP_THE_TREE AS DIRECTION, 
7976
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
7977
			  FROM (  
7978
			        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
7979
			          FROM package_dependencies dep,
7980
			               release_content rc,
7981
						   package_versions pv,
7982
						   package_versions dpv
7983
			         WHERE dep.pv_id = rc.pv_id
7984
			           AND rc.rtag_id = nRtag_id
7985
					   AND dep.pv_id = pv.pv_id
7986
					   AND dep.dpv_id = dpv.pv_id
7987
					) rdep,
7988
					temp_tree_browse ttb
7989
			 WHERE rdep.dpkg_id  = ttb.pkg_id
7990
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
7991
			   AND ttb.SESSION_NUM = sessionNum
7992
			   AND ttb.LEVEL_NUM = iteration - 1	
7993
			MINUS
7994
			/* Packages with all depencencies NOT matched */  
7995
			SELECT DISTINCT 
7996
			       sessionNum AS SESSION_NUM,
7997
			       iteration AS LEVEL_NUM, 
7998
				   UP_THE_TREE AS DIRECTION,
7999
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
8000
			  FROM (  
8001
			        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
8002
			          FROM package_dependencies dep,
8003
			               release_content rc,
8004
						   package_versions pv,
8005
						   package_versions dpv
8006
			         WHERE dep.pv_id = rc.pv_id
8007
			           AND rc.rtag_id = nRtag_id
8008
					   AND dep.pv_id = pv.pv_id
8009
					   AND dep.dpv_id = dpv.pv_id
8010
					) rdep,
8011
					(
8012
					 SELECT tb.*
8013
					   FROM temp_tree_browse tb
8014
					  WHERE tb.SESSION_NUM = sessionNum
8015
					) ttb
8016
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
8017
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
8018
			   AND ttb.SESSION_NUM IS NULL;
8019
 
8020
		rowCnt := SQL%ROWCOUNT;
8021
		IF rowCnt > 0 THEN
8022
           iteration := iteration + 1;
8023
		END IF;
8024
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
8025
    END LOOP;
8026
 
8027
	/*---------------------------------------------------------------------------------------------------------------------*/
8028
 
8029
	/*     Check for unresolved dependencies
8030
	||  
8031
	*/
8032
	/* UNRESOLVED */
8033
	 SELECT COUNT(*) INTO rowCnt
8034
	   FROM (
8035
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8036
			  FROM release_content rc,
8037
			  	   package_versions pv
8038
			 WHERE rc.rtag_id = nRtag_id
8039
			   AND rc.pv_id = pv.pv_id	   
8040
			MINUS
8041
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8042
			  FROM temp_tree_browse ttb
8043
			 WHERE ttb.session_num = sessionNum
8044
			);
8045
 
8046
 
8047
 
8048
	 IF rowCnt > 0 
8049
	 THEN
8050
	 	 /*     Circular dependencies detected.
8051
		 ||     Try to resolve build order from the top now.
8052
		 ||		Start DOWN THE TREE
8053
		 */
8054
 
8055
		iteration := 0; 
8056
		 /* Top Level packages */	
8057
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
8058
			SELECT sessionNum AS SESSION_NUM,
8059
			       iteration AS LEVEL_NUM,
8060
				   DOWN_THE_TREE AS DIRECTION,
8061
				   pv.pv_id, pv.pkg_id, pv.v_ext
8062
			  FROM (		   
8063
					/* Packages no one depends on ( Top level packages )*/
8064
					( 
8065
					/* All parents*/ 
8066
					SELECT pv.pkg_id, pv.v_ext
8067
			          FROM package_dependencies dep,
8068
			               release_content rc,
8069
						   package_versions pv
8070
			         WHERE dep.pv_id = rc.pv_id
8071
			           AND rc.rtag_id = nRtag_id
8072
					   AND dep.pv_id = pv.pv_id
8073
					 MINUS
8074
					 /* All children */
8075
					SELECT dpv.pkg_id, dpv.v_ext
8076
			          FROM package_dependencies dep,
8077
			               release_content rc,
8078
						   package_versions dpv
8079
			         WHERE dep.pv_id = rc.pv_id
8080
			           AND rc.rtag_id = nRtag_id
8081
					   AND dep.dpv_id = dpv.pv_id
8082
					 ) 
8083
					 MINUS
8084
					/* Packages with resolved dependencies from UP THE TREE */ 
8085
					SELECT ttb.pkg_id, ttb.v_ext
8086
					  FROM temp_tree_browse ttb
8087
					 WHERE ttb.session_num = sessionNum
8088
				  ) tpkg,
8089
				  package_versions pv,
8090
				  release_content rc
8091
			WHERE rc.rtag_id = nRtag_id
8092
			  AND rc.pv_id = pv.pv_id
8093
			  AND tpkg.pkg_id = pv.pkg_id
8094
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8095
 
8096
 
8097
		 /* Keep taking packages which no one depende on */			  
8098
		 iteration := iteration - 1;  
8099
		 LOOP	  
8100
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8101
					SELECT sessionNum AS SESSION_NUM,
8102
					       iteration AS LEVEL_NUM,
8103
					       DOWN_THE_TREE AS DIRECTION,
8104
					       pv.pv_id, pv.pkg_id, pv.v_ext
8105
					  FROM (		   
8106
					 	/* All Unresolved */
8107
					 	(
8108
					 	SELECT pv.pkg_id, pv.v_ext
8109
					 	  FROM release_content rc,
8110
					 	  	   package_versions pv
8111
					 	 WHERE rc.rtag_id = nRtag_id
8112
					 	   AND rc.pv_id = pv.pv_id	   
8113
					 	MINUS
8114
					 	SELECT ttb.pkg_id, ttb.v_ext
8115
					 	  FROM temp_tree_browse ttb
8116
					 	 WHERE ttb.session_num = sessionNum
8117
					 	)
8118
					 	 MINUS
8119
					 	(  
8120
					 	 /* Children of Unresolved */  
8121
					 	SELECT dpv.pkg_id, dpv.V_EXT
8122
					 	  FROM (
8123
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8124
					 			  FROM release_content rc,
8125
					 			  	   package_versions pv
8126
					 			 WHERE rc.rtag_id = nRtag_id
8127
					 			   AND rc.pv_id = pv.pv_id	   
8128
					 			MINUS
8129
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8130
					 			  FROM temp_tree_browse ttb
8131
					 			 WHERE ttb.session_num = sessionNum
8132
					 		   ) unr,
8133
					 		   package_dependencies dep,
8134
					 		   package_versions dpv
8135
					 	 WHERE unr.pv_id = dep.pv_id
8136
					 	   AND dep.dpv_id = dpv.pv_id
8137
					 	 )  
8138
					   ) tpkg,
8139
					   package_versions pv,
8140
					   release_content rc
8141
					WHERE rc.rtag_id = nRtag_id
8142
					  AND rc.pv_id = pv.pv_id
8143
					  AND tpkg.pkg_id = pv.pkg_id
8144
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8145
 
8146
            rowCnt := SQL%ROWCOUNT;
8147
        	IF rowCnt > 0 THEN
8148
	           iteration := iteration - 1;
8149
			END IF;
8150
            EXIT WHEN (rowCnt < 1);
8151
     	END LOOP;
8152
 
8153
	 END IF;
8154
 
8155
 
8156
	/*---------------------------------------------------------------------------------------------------------------------*/
8157
 
8158
	/* 
8159
	|| 	 Save results from temp table
8160
	*/	
8161
	/* Clean up build_order table */
8162
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
8163
 
8164
	/* Save UP THE TREE */
8165
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8166
		SELECT nRtag_id AS rtag_id,
8167
			   ttb.level_num AS step_num, 
8168
			   ttb.PV_ID
8169
		  FROM temp_tree_browse ttb
8170
		 WHERE ttb.session_num = sessionNum
8171
		   AND ttb.direction = UP_THE_TREE;	
8172
 
8173
	/*Get last step_num */
8174
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
8175
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
8176
 
8177
	/* UNRESOLVED */
8178
	 SELECT COUNT(*) INTO rowCnt
8179
	   FROM (
8180
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8181
			  FROM release_content rc,
8182
			  	   package_versions pv
8183
			 WHERE rc.rtag_id = nRtag_id
8184
			   AND rc.pv_id = pv.pv_id	   
8185
			MINUS
8186
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8187
			  FROM temp_tree_browse ttb
8188
			 WHERE ttb.session_num = sessionNum
8189
			);
8190
 
8191
 
8192
	IF rowCnt > 0
8193
	THEN
8194
		/* Save unresolved packages */
8195
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
8196
		    SELECT  nRtag_id AS rtag_id,
8197
				    levelNum AS step_num, 
8198
				    upv.PV_ID,
8199
					'Y' AS UNRESOLVED
8200
			   FROM (
8201
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8202
					  FROM release_content rc,
8203
					  	   package_versions pv
8204
					 WHERE rc.rtag_id = nRtag_id
8205
					   AND rc.pv_id = pv.pv_id	   
8206
					MINUS
8207
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8208
					  FROM temp_tree_browse ttb
8209
					 WHERE ttb.session_num = sessionNum
8210
					) upv;
8211
	END IF;	
8212
 
8213
	/* Save DOWN THE TREE */
8214
	levelNum := 1000;
8215
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8216
		SELECT nRtag_id AS rtag_id,
8217
			   levelNum + ttb.level_num  AS step_num, 
8218
			   ttb.PV_ID
8219
		  FROM temp_tree_browse ttb
8220
		 WHERE ttb.session_num = sessionNum
8221
		   AND ttb.direction = DOWN_THE_TREE;
8222
 
8223
 
8224
	/*---------------------------------------------------------------------------------------------------------------------*/
8225
 
8226
	/* Clean up temp table */
8227
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
8228
 
8229
	retSessionNum := sessionNum;
8230
END Build_Tree;
8231
/
8232
 
8233
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER2 ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
8234
 
8235
/* ---------------------------------------------------------------------------
8236
    Version: 3.0.0
8237
   --------------------------------------------------------------------------- */
8238
 
8239
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
8240
	pos				   NUMBER;
8241
	in_list			   VARCHAR2(32767) := sInList || ',';
8242
 
8243
BEGIN
8244
 
8245
	IF NOT sInList IS NULL
8246
	THEN
8247
		LOOP
8248
	        EXIT WHEN in_list IS NULL;
8249
	        pos := INSTR ( in_list, ',' );
8250
	        sync_rtags.extend;
8251
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
8252
	        in_list := SUBSTR ( in_list, pos+1 );
8253
		END LOOP;
8254
	END IF;
8255
 
8256
	RETURN sync_rtags;
8257
END IN_LIST_NUMBER2;
8258
/
8259
 
8260
CREATE OR REPLACE PACKAGE pk_buildapi
8261
IS
8262
/*
8263
------------------------------
8264
||  Last Modified:  Rupesh Solanki
8265
||  Modified Date:  26/Jun/2007
8266
||  Spec Version:   3.0
8267
------------------------------
8268
*/
8269
 
8270
   /*================================================================================================*/
8271
   PROCEDURE add_product_component (
8272
      npvid           IN   NUMBER,
8273
      sosname         IN   VARCHAR2,
8274
      sorigfilepath   IN   VARCHAR2,
8275
      sfilename       IN   VARCHAR2,
8276
      sdestfilepath   IN   VARCHAR2,
8277
      nbytesize       IN   NUMBER,
8278
      scrccksum       IN   VARCHAR2
8279
   );
8280
 
8281
   PROCEDURE remove_all_product_components (
8282
      npvid     IN   NUMBER,
8283
      sosname   IN   VARCHAR2
8284
   );
8285
 
8286
/*================================================================================================*/
8287
   FUNCTION get_osid (sosname IN VARCHAR2)
8288
      RETURN NUMBER;
8289
 
8290
/*================================================================================================*/
8291
   PROCEDURE update_build_service (
8292
      sdatabaseserver   IN   VARCHAR2,
8293
      swebserver        IN   VARCHAR2,
8294
      smailserver       IN   VARCHAR2,
8295
      smailsender       IN   VARCHAR2,
8296
      sdiskspace        IN   VARCHAR2,
8297
      ssbommanagement   IN   VARCHAR2
8298
   );
8299
 
8300
/*================================================================================================*/
8301
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
8302
 
8303
/*================================================================================================*/
8304
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
8305
 
8306
/*================================================================================================*/
8307
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
8308
 
8309
/*================================================================================================*/
8310
   PROCEDURE add_daemon (
8311
      sdaemonhostname   IN   VARCHAR2,
8312
      nrtagid           IN   NUMBER,
8313
      ngbeid            IN   NUMBER,
8314
      sgbebuildfilter   IN   VARCHAR2
8315
   );
8316
 
8317
/*================================================================================================*/
8318
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
8319
 
8320
/*================================================================================================*/
8321
   PROCEDURE update_daemon (
8322
      sdaemonhostname   IN   VARCHAR2,
8323
      nrconid           IN   NUMBER,
8324
      ngbeid            IN   NUMBER,
8325
      sgbebuildfilter   IN   VARCHAR2
8326
   );
8327
 
8328
/*================================================================================================*/
8329
   PROCEDURE insert_schedule_info (
8330
      dschedulepause     IN   DATE,
8331
      dscheduleresume    IN   DATE,
8332
      crepeat            IN   VARCHAR2,
8333
      cindefinitepause   IN   VARCHAR2
8334
   );
8335
 
8336
/*================================================================================================*/
8337
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
8338
 
8339
/*================================================================================================*/
8340
   PROCEDURE set_infinite_pause;
8341
 
8342
/*================================================================================================*/
8343
   PROCEDURE set_resume;
8344
 
8345
/*================================================================================================*/
8346
   PROCEDURE delete_out_of_date_schedule;
8347
 
8348
/*================================================================================================*/
8349
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
8350
 
8351
/*================================================================================================*/
8352
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
8353
/*================================================================================================*/
8354
END pk_buildapi;
8355
/
8356
 
8357
CREATE OR REPLACE PROCEDURE Remove_Patch ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
8358
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
8359
                                           nUserId IN NUMBER ) IS
8360
/* ---------------------------------------------------------------------------
8361
    Version: 4.0
8362
   --------------------------------------------------------------------------- */
8363
 
8364
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
8365
 
8366
CURSOR curPatch IS
8367
	SELECT pp.PV_ID,
8368
		   pp.PATCH_ID,
8369
	       ROWNUM AS NEW_INSTALL_ORDER
8370
	  FROM PACKAGE_PATCHES pp
8371
	 WHERE pp.PV_ID = nPvId
8372
	ORDER BY pp.INSTALL_ORDER;
8373
recPatch curPatch%ROWTYPE;
8374
 
8375
BEGIN
8376
 
8377
	 -- Delete Patch
8378
     DELETE
8379
       FROM PACKAGE_PATCHES pp
8380
      WHERE pp.PV_ID = nPvId
8381
        AND pp.PATCH_ID = nPatchId;
8382
 
8383
 
8384
	-- Redo Install Order
8385
    OPEN curPatch;
8386
	FETCH curPatch INTO recPatch;
8387
 
8388
	WHILE curPatch%FOUND
8389
	LOOP
8390
 
8391
		UPDATE PACKAGE_PATCHES pp SET
8392
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
8393
		WHERE pp.PV_ID = nPvId
8394
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
8395
 
8396
		FETCH curPatch INTO recPatch;
8397
	END LOOP;
8398
 
8399
	CLOSE curPatch;
8400
 
8401
 
8402
 
8403
 
8404
    /* LOG ACTION */
8405
    SELECT pv.PKG_VERSION INTO PatchVersion
8406
      FROM PACKAGE_VERSIONS pv
8407
     WHERE pv.PV_ID = nPatchId;
8408
 
8409
   	Log_Action ( nPvId, 'patch_remove', nUserId,
8410
   			     'Version: '|| PatchVersion );
8411
 
8412
END Remove_Patch;
8413
/
8414
 
8415
CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
8416
/
8417
 
8418
CREATE OR REPLACE PROCEDURE Add_Component ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
8419
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
8420
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
8421
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
8422
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
8423
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
8424
                                           ) IS
8425
/* ---------------------------------------------------------------------------
8426
    Version: 3.0.0
8427
   --------------------------------------------------------------------------- */
8428
 
8429
 
8430
BEGIN
8431
 
8432
	 --- Insert into RELEASE_COMPONENTS
8433
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
8434
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
8435
 
8436
 
8437
 
8438
 
8439
END Add_Component;
8440
/
8441
 
8442
CREATE OR REPLACE PROCEDURE ole
8443
IS retval VARCHAR2(40);   
8444
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
8445
DBMS_OUTPUT.PUT_LINE(retval);
8446
/
8447
 
8448
CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,
8449
	   	  		  						 			  nViewId IN NUMBER,
8450
										 			  sUserIdList IN VARCHAR2,
8451
										 			  nUserId IN NUMBER ) IS
8452
 
8453
GroupId NUMBER;													  
8454
 
8455
 
8456
 
8457
/******************************************************************************
8458
   NAME:       UPDATE_VIEW
8459
   PURPOSE:    
8460
 
8461
   REVISIONS:
8462
   Ver        Date        Author           		Description
8463
   ---------  ----------  ---------------  ------------------------------------
8464
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
8465
 
8466
   NOTES:
8467
 
8468
   Automatically available Auto Replace Keywords:
8469
      Object Name:     UPDATE_VIEW
8470
      Sysdate:         10/04/2006
8471
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
8472
      Username:         (set in TOAD Options, Procedure Editor)
8473
      Table Name:       (set in the "New PL/SQL Object" dialog)
8474
 
8475
******************************************************************************/
8476
 
8477
BEGIN
8478
	 SELECT GROUP_EMAIL_ID into GroupId
8479
	 FROM AUTOBUILD_FAILURE
8480
	 WHERE PROJ_ID = nProjId
8481
	 AND VIEW_ID = nViewId;
8482
 
8483
	 DELETE FROM MEMBERS_GROUP
8484
	 WHERE GROUP_EMAIL_ID = GroupId
8485
	 AND USER_ID IN (
8486
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
8487
	 );
8488
 
8489
 
8490
 
8491
END REMOVE_PROJECT_VIEW_OWNER;
8492
/
8493
 
8494
CREATE OR REPLACE PROCEDURE test
8495
IS
8496
 
8497
proc_id NUMBER;
8498
/******************************************************************************
8499
   NAME:       DELETE_DO_NOT_RIPPLE
8500
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8501
               IS RELEASED
8502
 
8503
   REVISIONS:
8504
   Ver        Date        Author           Description
8505
   ---------  ----------  ---------------  ------------------------------------
8506
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8507
 
8508
   NOTES:
8509
 
8510
   Automatically available Auto Replace Keywords:
8511
      Object Name:     DELETE_DO_NOT_RIPPLE
8512
      Sysdate:         21/04/2006
8513
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8514
      Username:         (set in TOAD Options, Procedure Editor)
8515
      Table Name:       (set in the "New PL/SQL Object" dialog)
8516
 
8517
******************************************************************************/
8518
   CURSOR ripple_cur
8519
   IS
8520
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
8521
 
8522
   ripple_rec   ripple_cur%ROWTYPE;
8523
BEGIN
8524
   OPEN ripple_cur;
8525
 
8526
   FETCH ripple_cur
8527
    INTO ripple_rec;
8528
 
8529
   WHILE ripple_cur%FOUND
8530
   LOOP
8531
 
8532
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
8533
 
8534
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
8535
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
8536
 
8537
      FETCH ripple_cur
8538
       INTO ripple_rec;
8539
   END LOOP;
8540
END test;
8541
/
8542
 
8543
CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8544
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
8545
/* ---------------------------------------------------------------------------
8546
    Version: 4.0
8547
   --------------------------------------------------------------------------- */
8548
 
8549
BEGIN
8550
 
8551
    -- Unlock Package
8552
    UPDATE RELEASE_CONTENT rc SET
8553
    	rc.PKG_STATE = 0
8554
    WHERE rc.PV_ID = nPvId
8555
	AND rc.RTAG_ID = nRtagId;
8556
 
8557
    /* LOG ACTION */
8558
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
8559
 
8560
END Change_Package_State;
8561
/
8562
 
8563
CREATE OR REPLACE PACKAGE Rm_Issues AS
8564
 
8565
	TYPE T_Cur IS REF CURSOR;
8566
 
8567
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8568
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
8569
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8570
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
8571
 
8572
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8573
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8574
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
8575
 
8576
END Rm_Issues;
8577
/
8578
 
8579
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
8580
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
8581
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
8582
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
8583
                                            sDpkg_path IN VARCHAR2,
8584
                                            sResults IN VARCHAR2,
8585
                                            sCompletion_date IN VARCHAR2,
8586
                                            nCompleted_by IN NUMBER,
8587
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
8588
											enumTEST_TYPE_NOT_DONE IN NUMBER,
8589
											outFileName OUT VARCHAR2
8590
                                           ) IS
8591
/* ---------------------------------------------------------------------------
8592
    Version: 3.2.0
8593
   --------------------------------------------------------------------------- */
8594
 
8595
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
8596
 
8597
    newID NUMBER;
8598
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
8599
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
8600
 
8601
BEGIN
8602
 
8603
	-- Get new ID --
8604
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
8605
 
8606
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
8607
       	ResultsURL := sResults;
8608
       ELSE
8609
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
8610
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
8611
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
8612
           END IF;
8613
       END IF;
8614
 
8615
	-- Remove NOT_DONE entry if exists
8616
	DELETE FROM UNIT_TESTS
8617
	 WHERE pv_id = nPv_id
8618
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
8619
 
8620
	--- Add Additional Note ---
8621
    INSERT INTO UNIT_TESTS ( TEST_ID,
8622
								PV_ID,
8623
								TEST_TYPES_FK,
8624
								TEST_SUMMARY,
8625
								COMPLETION_DATE,
8626
								COMPLETED_BY,
8627
								RESULTS_URL,
8628
								RESULTS_ATTACHMENT_NAME,
8629
								NUMOF_TEST )
8630
    VALUES (
8631
       	newID,
8632
           nPv_id,
8633
           nTestTypeId,
8634
           sTest_summary,
8635
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
8636
           nCompleted_by,
8637
           ResultsURL,
8638
           ResultsAttachment,
8639
		   sNumOfTest );
8640
 
8641
END New_Unit_Test;
8642
/
8643
 
8644
CREATE OR REPLACE PROCEDURE Ripple_Package (
8645
        sPvIdList IN VARCHAR2,
8646
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
8647
        nUserId IN NUMBER
8648
    ) IS
8649
/* ---------------------------------------------------------------------------
8650
    Version: 4.1
8651
   --------------------------------------------------------------------------- */
8652
 
8653
BEGIN
8654
 
8655
    IF (sPvIdList IS NULL) THEN
8656
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
8657
    END IF;
8658
 
8659
    -- Ripple Package
8660
    DELETE FROM DO_NOT_RIPPLE
8661
    WHERE RTAG_ID = nRtagId
8662
    AND PV_ID IN (
8663
        SELECT *
8664
        FROM THE (
8665
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
8666
            AS RELMGR_NUMBER_TAB_t )
8667
            FROM DUAL
8668
        )
8669
    );
8670
 
8671
    /* LOG ACTION */
8672
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
8673
 
8674
END Ripple_Package;
8675
/
8676
 
8677
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
8678
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
8679
/* ---------------------------------------------------------------------------
8680
    Last Modified: Rupesh Solanki
8681
	Version: 3.0.1
8682
   --------------------------------------------------------------------------- */
8683
 
8684
 
8685
BEGIN
8686
 
8687
   -- Delete Current Build Env settings
8688
   DELETE FROM PACKAGE_BUILD_ENV
8689
   WHERE pv_id = nPvId;
8690
 
8691
   -- Delet Current Package Build Info Settings
8692
   DELETE FROM PACKAGE_BUILD_INFO
8693
   WHERE pv_id = nPvId;
8694
 
8695
   -- Reset flag to N
8696
   UPDATE PACKAGE_VERSIONS SET
8697
	   IS_BUILD_ENV_REQUIRED = 'N'
8698
   WHERE PV_ID = nPvId;
8699
 
8700
 
8701
   -- Set new Build Env
8702
   IF NOT sBuildEnvIdList IS NULL THEN
8703
   	  -- Insert into PACKAGE_BUILD_ENV
8704
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
8705
	  SELECT nPvId AS PV_ID,
8706
	  		 be.BE_ID
8707
	    FROM BUILD_ENVIRONMENTS be
8708
	   WHERE be.BE_ID IN (
8709
	   		 		  	   SELECT *
8710
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8711
	   		 		  	 );
8712
 
8713
   	  -- Insert into PACKAGE_BUILD_INFO
8714
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
8715
	  SELECT nPvId AS PV_ID,
8716
	  		 be.BM_ID
8717
	    FROM BUILD_MACHINES be
8718
	   WHERE be.BM_ID IN (
8719
	   		 		  	   SELECT *
8720
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8721
	   		 		  	 );						 
8722
 
8723
	   -- Set flag to Y
8724
	   UPDATE PACKAGE_VERSIONS SET
8725
		   IS_BUILD_ENV_REQUIRED = 'Y'
8726
	   WHERE PV_ID = nPvId;
8727
 
8728
   END IF;
8729
 
8730
 
8731
END Set_Package_Build_Env;
8732
/
8733
 
8734
CREATE OR REPLACE PROCEDURE Split_Version ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8735
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
8736
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
8737
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
8738
/* ---------------------------------------------------------------------------
8739
    Version: 3.0.0
8740
   --------------------------------------------------------------------------- */
8741
 
8742
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
8743
        INDEX BY BINARY_INTEGER;
8744
 
8745
    version_components VERSION_COMPONENTS_TYPE;
8746
    lastDot NUMBER := 0;
8747
    currDot NUMBER := 0;
8748
 
8749
BEGIN
8750
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
8751
 
8752
    IF ( currDot > 0 )
8753
    THEN
8754
        -- YES dot separator found --
8755
        SSV_EXT := GET_V_EXT( SSpkg_version );
8756
 
8757
        IF NOT SSV_EXT IS NULL
8758
        THEN
8759
            lastDot := currDot;
8760
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
8761
 
8762
            IF ( currDot > 0 )
8763
            THEN
8764
                -- XXXX.M.E
8765
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
8766
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
8767
            ELSE
8768
                -- XXXX.E
8769
                SSV_MM := NULL;
8770
                SSV_NMM := SSpkg_version;
8771
            END IF;
8772
 
8773
        ELSE
8774
            -- XXXX.M
8775
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
8776
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
8777
 
8778
        END IF;
8779
 
8780
    ELSE
8781
        -- NO dot separator found --
8782
        -- XXXXXX
8783
        SSV_MM  := NULL;
8784
        SSV_NMM := SSpkg_version;
8785
        SSV_EXT := NULL;
8786
 
8787
    END IF;
8788
 
8789
END Split_Version;
8790
/
8791
 
8792
CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS
8793
 
8794
/* ---------------------------------------------------------------------------
8795
    Version: 3.0.0
8796
   --------------------------------------------------------------------------- */
8797
 
8798
   returnValue CHAR(1);
8799
 
8800
BEGIN
8801
 
8802
    /*--------------- Business Rules Here -------------------*/
8803
	/*-------------------------------------------------------*/
8804
 
8805
	-- Get release mode
8806
	SELECT rt.OFFICIAL INTO returnValue
8807
	  FROM RELEASE_TAGS rt
8808
	 WHERE rt.RTAG_ID = nRtagId;
8809
 
8810
	RETURN returnValue;
8811
 
8812
END RELEASE_MODE;
8813
/
8814
 
8815
CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
8816
/
8817
 
8818
CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8819
											 nUserId IN NUMBER ) IS
8820
/* ---------------------------------------------------------------------------
8821
    Author: Rupesh Solanki
8822
 
8823
	Version: 4.0
8824
   --------------------------------------------------------------------------- */
8825
   STATE CHAR;
8826
 
8827
BEGIN
8828
 
8829
	SELECT DLOCKED INTO STATE
8830
	FROM PACKAGE_VERSIONS
8831
	WHERE PV_ID = nPvId; 
8832
 
8833
	IF STATE = 'A' THEN --It was made official for autobuilds
8834
		-- Unlock Package
8835
		UPDATE PACKAGE_VERSIONS pv SET
8836
		pv.DLOCKED = 'P'
8837
		WHERE pv.PV_ID = nPvId;	
8838
	ELSE
8839
		-- Unlock Package
8840
		UPDATE PACKAGE_VERSIONS pv SET
8841
		pv.DLOCKED = 'N'
8842
		WHERE pv.PV_ID = nPvId;	
8843
 
8844
	END IF;	   
8845
 
8846
    /* LOG ACTION */
8847
   	Log_Action ( nPvId, 'unlock_package', nUserId );
8848
 
8849
END Unlock_Package;
8850
/
8851
 
53 mhunt 8852
CREATE OR REPLACE PACKAGE                   "PK_PLANNED" IS
51 mhunt 8853
/*
8854
------------------------------
53 mhunt 8855
||  Last Modified:  G.Huddy
8856
||  Modified Date:  28/May/2008
8857
||  Spec Version:   1.1
51 mhunt 8858
------------------------------
8859
*/
8860
 
8861
	TYPE typeCur IS REF CURSOR;
8862
 
8863
    /*================================================================================================*/
8864
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8865
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8866
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 8867
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
51 mhunt 8868
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 8869
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
51 mhunt 8870
	/*================================================================================================*/
8871
 
8872
END PK_PLANNED;
8873
/
8874
 
8875
CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8876
											 nUserId IN NUMBER ) IS
8877
/* ---------------------------------------------------------------------------
8878
    Version: 4.0
8879
   --------------------------------------------------------------------------- */
8880
 
8881
BEGIN
8882
 
8883
    -- Lock Package
8884
    UPDATE PACKAGE_VERSIONS pv SET
8885
    	pv.DLOCKED = 'A'
8886
    WHERE pv.PV_ID = nPvId;
8887
 
8888
    /* LOG ACTION */
8889
   	Log_Action ( nPvId, 'lock_package', nUserId );
8890
END Pending_Package;
8891
/
8892
 
8893
CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)
8894
IS
8895
/******************************************************************************
8896
   NAME:       DELETE_DO_NOT_RIPPLE
8897
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8898
               IS RELEASED
8899
 
8900
   REVISIONS:
8901
   Ver        Date        Author           Description
8902
   ---------  ----------  ---------------  ------------------------------------
8903
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8904
 
8905
   NOTES:
8906
 
8907
   Automatically available Auto Replace Keywords:
8908
      Object Name:     DELETE_DO_NOT_RIPPLE
8909
      Sysdate:         21/04/2006
8910
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8911
      Username:         (set in TOAD Options, Procedure Editor)
8912
      Table Name:       (set in the "New PL/SQL Object" dialog)
8913
 
8914
******************************************************************************/
8915
BEGIN
8916
   DELETE FROM do_not_ripple
8917
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
8918
                                                     FROM release_content
8919
                                                    WHERE rtag_id = nrtagid);
8920
END clean_do_not_ripple;
8921
/
8922
 
8923
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions2 ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
8924
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8925
                                                          NNuser_id IN NUMBER,
8926
                                                          retPV_ID OUT NUMBER,
8927
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
8928
/* ---------------------------------------------------------------------------
8929
    Version: 4.0
8930
   --------------------------------------------------------------------------- */
8931
 
8932
    parPkg_id   NUMBER;
8933
    parPv_id    NUMBER;
8934
    cloneFrom_pv_id NUMBER;
8935
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
8936
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
8937
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
8938
 
8939
    CURSOR packages_cur IS
8940
        SELECT pkg_id FROM PACKAGES
8941
        WHERE pkg_name = SSpkg_name;
8942
    packages_rec packages_cur%ROWTYPE;
8943
 
8944
    CURSOR package_versions_cur IS
8945
        SELECT pv_id FROM PACKAGE_VERSIONS
8946
        WHERE pkg_id = parPkg_id
8947
        AND pkg_version = SSpkg_version;
8948
    package_versions_rec package_versions_cur%ROWTYPE;
8949
 
8950
    CURSOR clone_package_versions_cur IS
8951
        SELECT MAX(pv_id) AS pv_id
8952
          FROM PACKAGE_VERSIONS
8953
         WHERE pkg_id = parPkg_id
8954
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
8955
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
8956
 
8957
BEGIN
8958
    /* -------------------------------------------- */
8959
    /* Find if pkg_name exists and seed if required */
8960
    /* -------------------------------------------- */
8961
    OPEN packages_cur;
8962
    FETCH packages_cur INTO packages_rec;
8963
 
8964
    IF packages_cur%NOTFOUND
8965
    THEN
8966
        /* INSERT into packages table */
8967
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
8968
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
8969
 
8970
    ELSE
8971
        parPkg_id := packages_rec.pkg_id;
8972
 
8973
    END IF;
8974
 
8975
    CLOSE packages_cur;
8976
 
8977
 
8978
 
8979
    /* ---------------------------------------------------- */
8980
    /* Find if package_version exists and seed if required  */
8981
    /* ---------------------------------------------------- */
8982
    OPEN package_versions_cur;
8983
    FETCH package_versions_cur INTO package_versions_rec;
8984
 
8985
    IF package_versions_cur%NOTFOUND
8986
    THEN
8987
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
8988
 
8989
        /* LOG ACTION */
8990
        Log_Action ( parPv_id, 'new_version', NNuser_id,
8991
        			 'New package version: '|| SSpkg_version );
8992
 
8993
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
8994
 
8995
 
8996
 
8997
 
8998
 
8999
            /* CLONE details from similar version  OR  from nCloneFromPvId */
9000
			IF ( NOT nCloneFromPvId IS NULL) THEN
9001
            	cloneFrom_pv_id := nCloneFromPvId;
9002
			ELSE
9003
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
9004
			END IF;
9005
 
9006
            -- Clone Package Version Details --
9007
            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,
9008
                                           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 )
9009
                SELECT parPv_id         AS pv_id,
9010
                       parPkg_id        AS pkg_id,
9011
                       SSpkg_version    AS pkg_version,
9012
                       'N'              AS dlocked,
9013
                       Ora_Sysdate      AS created_stamp,
9014
                       NNuser_id        AS creator_id,
9015
                       Ora_Sysdatetime  AS modified_stamp,
9016
                       NNuser_id        AS modifier_id,
9017
                       SSV_MM           AS V_MM,
9018
                       SSV_NMM          AS V_NMM,
9019
                       SSV_EXT          AS V_EXT,
9020
                       pv.src_path,
9021
                       pv.pv_description,
9022
                       pv.PV_OVERVIEW,
9023
                       cloneFrom_pv_id 	AS LAST_PV_ID,
9024
                       pv.owner_id,
9025
					   pv.BUILD_TYPE,
9026
					   pv.IS_BUILD_ENV_REQUIRED,
9027
					   pv.bs_id,
9028
					   pv.is_autobuildable,
9029
					   pv.IS_DEPLOYABLE,
9030
					   pv.ripple_field
9031
                  FROM PACKAGE_VERSIONS pv
9032
                 WHERE pv.pv_id = cloneFrom_pv_id;
9033
 
9034
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
9035
 
9036
        retPV_ID := parPv_id;
9037
 
9038
    ELSE
9039
        retPV_ID := package_versions_rec.pv_id;
9040
 
9041
    END IF;
9042
 
9043
    CLOSE package_versions_cur;
9044
 
9045
 
9046
 
9047
 
9048
END Seed_Package_Names_Versions2;
9049
/
9050
 
9051
CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) IS
9052
 
9053
    sessionNumber NUMBER := 0;
9054
    iteration NUMBER := 1; 
9055
    rowCnt NUMBER := 0;
9056
    maxIterations 	NUMBER := 50;
9057
 
9058
BEGIN
9059
 
9060
 
9061
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9062
    SELECT sessionNumber, iteration, rc.PV_ID
9063
      FROM RELEASE_CONTENT rc
9064
     WHERE rc.RTAG_ID = nRtag_id;
9065
 
9066
    iteration := iteration + 1;
9067
    LOOP
9068
 
9069
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9070
		SELECT sessionNumber,     
9071
               iteration,
9072
               dep.DPV_ID
9073
          FROM TEMP_TREE_BROWSE ttb,
9074
               PACKAGE_DEPENDENCIES dep
9075
         WHERE dep.PV_ID = ttb.PV_ID 
9076
           AND ttb.LEVEL_NUM = iteration - 1 
9077
 
9078
         MINUS  
9079
 
9080
        SELECT sessionNumber, iteration, ttb.PV_ID
9081
          FROM TEMP_TREE_BROWSE ttb;   
9082
 
9083
 
9084
 
9085
 
9086
		rowCnt := SQL%ROWCOUNT;
9087
		IF rowCnt > 0 THEN
9088
           iteration := iteration + 1;
9089
		END IF;
9090
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
9091
    END LOOP; 
9092
 
9093
END PAOLO_Build_Tree;
9094
/
9095
 
9096
CREATE OR REPLACE PROCEDURE Log_Action_Bulk ( nPvIdList IN VARCHAR2,
9097
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9098
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
9099
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9100
/* ---------------------------------------------------------------------------
9101
    Version: 3.0
9102
   --------------------------------------------------------------------------- */
9103
 
9104
    ActionTypeId NUMBER;
9105
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9106
 
9107
BEGIN
9108
 
9109
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
9110
 
9111
    -- Get Action Type FK
9112
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9113
      FROM ACTION_TYPE act
9114
     WHERE act.NAME = enumActionTypeName;
9115
 
9116
    -- Log Action
9117
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9118
    SELECT nUserId,
9119
    	   ORA_SYSDATETIME,
9120
           pv.PV_ID,
9121
           sAdditionalComments,
9122
           ActionTypeId
9123
      FROM PACKAGE_VERSIONS pv
9124
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
9125
 
9126
 
9127
END Log_Action_Bulk;
9128
/
9129
 
9130
CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSES
9131
IS
9132
 
9133
proc_id NUMBER;
9134
/******************************************************************************
9135
   NAME:       DELETE_DO_NOT_RIPPLE
9136
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
9137
               IS RELEASED
9138
 
9139
   REVISIONS:
9140
   Ver        Date        Author           Description
9141
   ---------  ----------  ---------------  ------------------------------------
9142
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
9143
 
9144
   NOTES:
9145
 
9146
   Automatically available Auto Replace Keywords:
9147
      Object Name:     DELETE_DO_NOT_RIPPLE
9148
      Sysdate:         21/04/2006
9149
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
9150
      Username:         (set in TOAD Options, Procedure Editor)
9151
      Table Name:       (set in the "New PL/SQL Object" dialog)
9152
 
9153
******************************************************************************/
9154
   CURSOR ripple_cur
9155
   IS
9156
      select distinct proc_id, prod_id from deployment_manager.processes_config;
9157
 
9158
   ripple_rec   ripple_cur%ROWTYPE;
9159
BEGIN
9160
   OPEN ripple_cur;
9161
 
9162
   FETCH ripple_cur
9163
    INTO ripple_rec;
9164
 
9165
   WHILE ripple_cur%FOUND
9166
   LOOP
9167
 
9168
 
9169
 
9170
insert into package_processes (PROC_ID, PV_ID) 
9171
values( ripple_rec.proc_id, ripple_rec.prod_id);
9172
 
9173
      FETCH ripple_cur
9174
       INTO ripple_rec;
9175
   END LOOP;
9176
END CLONED_PACKAGE_PROCESSES;
9177
/
9178
 
57 mhunt 9179
CREATE OR REPLACE PACKAGE                   "PK_RMAPI"
51 mhunt 9180
IS
9181
/*
9182
------------------------------
9183
||  Last Modified:  Jeremy Tweddle
9184
||  Modified Date:  08/Feb/2008
9185
||  Body Version:   3.3
9186
------------------------------
9187
*/
9188
   TYPE typecur IS REF CURSOR;
9189
 
9190
/*================================================================================================*/
9191
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
9192
      RETURN typecur;
9193
 
9194
   FUNCTION wip_iteration_package (
9195
      projname        VARCHAR2,
9196
      iterationname   VARCHAR2,
9197
      pkgname         VARCHAR2
9198
   )
9199
      RETURN typecur;
9200
 
9201
   FUNCTION auto_make_release (
9202
      rtagid                   IN   NUMBER,
9203
      pkgname                  IN   VARCHAR2,
9204
      vext                     IN   VARCHAR2,
9205
      newpkgversion            IN   VARCHAR2,
9206
      label                    IN   VARCHAR2,
9207
      dependenciesimportlist   IN   VARCHAR2,
9208
      isrippled                IN   NUMBER,
9209
      username                 IN   VARCHAR2
9210
   )
9211
      RETURN NUMBER;
9212
 
9213
   PROCEDURE import_dependencies (
9214
      pvid                     IN   NUMBER,
9215
      dependenciesimportlist   IN   VARCHAR2,
9216
      userid                   IN   NUMBER
9217
   );
9218
 
9219
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
9220
      RETURN VARCHAR2;
9221
 
9222
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
9223
      RETURN VARCHAR2;
9224
 
9225
   PROCEDURE update_dash_board (rtagid IN NUMBER);
9226
 
9227
   FUNCTION exclude_from_build (
9228
      pvid          IN   NUMBER,
9229
      spkgversion   IN   VARCHAR2,
9230
      rtagid        IN   NUMBER,
9231
      username      IN   VARCHAR2
9232
   )
9233
      RETURN NUMBER;
9234
 
55 mhunt 9235
   FUNCTION exclude_indirect_from_build (
9236
      pvid          IN   NUMBER,
9237
      spkgversion   IN   VARCHAR2,
9238
      rtagid        IN   NUMBER,
9239
      username      IN   VARCHAR2,
9240
      rootpvid      IN   NUMBER,
9241
      rootcause     IN   VARCHAR2,
9242
      rootfile      IN   VARCHAR2
9243
   )
9244
      RETURN NUMBER;
51 mhunt 9245
/*================================================================================================*/
9246
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
57 mhunt 9247
 
51 mhunt 9248
   FUNCTION insert_package_metrics (
9249
      rtagid IN NUMBER,
9250
      pkgname IN VARCHAR2,
9251
      vext IN VARCHAR2,
9252
      metricstring IN VARCHAR2
9253
   )
9254
      RETURN NUMBER;
57 mhunt 9255
 
51 mhunt 9256
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
57 mhunt 9257
 
51 mhunt 9258
END pk_rmapi;
9259
/
9260
 
9261
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;
9262
/
9263
 
9264
CREATE OR REPLACE PROCEDURE Log_Daemon_Action ( nRconId IN NUMBER,
9265
												 enumActionTypeName IN VARCHAR2,
9266
		                                         nUserId IN NUMBER,
9267
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
9268
/* ---------------------------------------------------------------------------
9269
    Version: 3.0
9270
   --------------------------------------------------------------------------- */
9271
 
9272
    ActionTypeId NUMBER;
9273
 
9274
BEGIN
9275
 
9276
    -- Get Action Type FK
9277
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9278
      FROM ACTION_TYPE act
9279
     WHERE act.NAME = enumActionTypeName;
9280
 
9281
 
9282
    INSERT INTO DAEMON_ACTION_LOG
9283
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
9284
 
9285
 
9286
END Log_Daemon_Action;
9287
/
9288
 
9289
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT_test IS
9290
/*
9291
------------------------------
9292
||  Last Modified:  Rupesh Solanki
9293
||  Modified Date:  29/Jan/2007
9294
||  Spec Version:   1.1
9295
------------------------------
9296
*/
9297
 
9298
	TYPE typeCur IS REF CURSOR;
9299
 
9300
    /*================================================================================================*/
9301
 
9302
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
9303
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9304
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9305
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9306
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9307
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9308
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
9309
 
9310
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9311
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9312
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9313
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9314
 
9315
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
9316
 
9317
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9318
 
9319
 
9320
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9321
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9322
 
9323
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9324
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9325
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9326
 
9327
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
9328
 
9329
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
9330
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
9331
 
9332
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
9333
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
9334
							 CloneFromPvId IN NUMBER );
9335
 
9336
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9337
 
9338
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
9339
 
9340
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9341
 
9342
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
9343
 
9344
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
9345
	/*================================================================================================*/
9346
 
9347
END PK_ENVIRONMENT_test;
9348
/
9349
 
9350
CREATE OR REPLACE PROCEDURE Update_Package_States ( NNrtag_id IN NUMBER,
9351
                                                    NNsession_num IN NUMBER ) IS
9352
/* ---------------------------------------------------------------------------
9353
    Version: 3.0.0
9354
   --------------------------------------------------------------------------- */
9355
 
9356
/* =============  STATE RULES =================== */
9357
/*
9358
   MNR   MRR   MN   MR    |   pkg_state
9359
   ------------------------------------
9360
 
9361
 
9362
 
9363
 
9364
   ------------------------------------
9365
 
9366
 
9367
 
9368
 
9369
   ------------------------------------
9370
    1     0     0     0   |      MINOR_READY
9371
    1     0     0     1   |      MAJOR
9372
    1     0     1     0   |      MINOR
9373
    1     0     1     1   |      MAJOR
9374
   ------------------------------------
9375
    1     1     0     0   |      MAJOR_READY
9376
    1     1     0     1   |      MAJOR
9377
    1     1     1     0   |      MAJOR
9378
    1     1     1     1   |      MAJOR
9379
   ------------------------------------
9380
*/
9381
 
9382
BEGIN
9383
    /*----------------------------------------------
9384
    ||              MINOR READY
9385
    */----------------------------------------------
9386
 
9387
    UPDATE release_content
9388
       SET pkg_state = 4
9389
     WHERE rtag_id = NNrtag_id
9390
       AND pv_id IN
9391
           (
9392
           SELECT DISTINCT pv_id
9393
           FROM temp_env_states
9394
           WHERE session_num = NNsession_num
9395
             AND level_num = 1
9396
             AND tes_state = 2
9397
           );
9398
 
9399
    /*----------------------------------------------
9400
    ||              MAJOR READY
9401
    */----------------------------------------------
9402
    UPDATE release_content
9403
       SET pkg_state = 3
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 IN (0,1)
9412
           );
9413
 
9414
    /*----------------------------------------------
9415
    ||                MINOR
9416
    */----------------------------------------------
9417
    UPDATE release_content
9418
       SET pkg_state = 2
9419
     WHERE rtag_id = NNrtag_id
9420
       AND pv_id IN
9421
           (
9422
           SELECT DISTINCT pv_id
9423
            FROM temp_env_states
9424
            WHERE session_num = NNsession_num
9425
              AND level_num >= 2
9426
              AND tes_state = 2
9427
            MINUS
9428
           SELECT pv_id
9429
             FROM release_content
9430
            WHERE rtag_id = NNrtag_id
9431
              AND pkg_state = 3
9432
           );
9433
 
9434
    /*----------------------------------------------
9435
    ||                MAJOR
9436
    */----------------------------------------------
9437
    UPDATE release_content
9438
       SET pkg_state = 1
9439
     WHERE rtag_id = NNrtag_id
9440
       AND pv_id IN
9441
           (
9442
           SELECT DISTINCT pv_id
9443
           FROM temp_env_states
9444
           WHERE session_num = NNsession_num
9445
             AND level_num >= 2
9446
             AND tes_state IN (0,1)
9447
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
9448
           UNION
9449
           SELECT DISTINCT tes.pv_id
9450
           FROM temp_env_states tes,
9451
                release_content rc
9452
           WHERE tes.session_num = NNsession_num
9453
             AND tes.level_num >= 2
9454
             AND tes.tes_state = 2
9455
             AND rtag_id = NNrtag_id
9456
             AND rc.pv_id = tes.pv_id
9457
             AND rc.pkg_state = 3
9458
           );
9459
 
9460
    /*----------------------------------------------
9461
    ||                 OK
9462
    */----------------------------------------------
9463
    UPDATE release_content
9464
       SET pkg_state = 0
9465
     WHERE rtag_id = NNrtag_id
9466
       AND pv_id IN
9467
           (
9468
           SELECT rc.pv_id
9469
             FROM release_content rc
9470
            WHERE rc.rtag_id = NNrtag_id
9471
              AND NOT rc.pv_id IN
9472
                    (
9473
                     SELECT DISTINCT pv_id
9474
                     FROM temp_env_states WHERE session_num = NNsession_num
9475
                    )
9476
           );
9477
 
9478
 
9479
    /*----------------------------------------------
9480
    ||              ADVISORY RIPPLE - NEW STUFF
9481
    */----------------------------------------------
9482
 /*   UPDATE release_content
9483
       SET pkg_state = 8
9484
     WHERE rtag_id = NNrtag_id
9485
       AND pv_id IN
9486
           (
9487
           SELECT DISTINCT pv_id
9488
           FROM temp_env_states
9489
           WHERE session_num = NNsession_num
9490
             AND level_num = 1
9491
             AND tes_state = 3
9492
           );	*/
9493
 
9494
 
9495
 
9496
    /*----------------------------------------------
9497
    ||              ADVISORY RIPPLE DEPENDANT
9498
    */----------------------------------------------			   
9499
  /*  UPDATE release_content
9500
       SET pkg_state = 9
9501
     WHERE rtag_id = NNrtag_id
9502
       AND pv_id IN
9503
           (
9504
           SELECT DISTINCT pv_id
9505
           FROM temp_env_states
9506
           WHERE session_num = NNsession_num
9507
             AND level_num >= 2
9508
             AND tes_state = 3
9509
           );		*/	   
9510
 
9511
      Update_Deprecation_State (NNrtag_id);
9512
 
9513
END Update_Package_States;
9514
/
9515
 
9516
CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS
9517
 
9518
/******************************************************************************
9519
   NAME:       TO_INSERT_VTREE_ID
9520
   PURPOSE:    
9521
 
9522
   REVISIONS:
9523
   Ver        Date        Author           Description
9524
   ---------  ----------  ---------------  ------------------------------------
9525
   1.0        2/02/2007          1. Created this procedure.
9526
 
9527
   NOTES:
9528
 
9529
   Automatically available Auto Replace Keywords:
9530
      Object Name:     TO_INSERT_VTREE_ID
9531
      Sysdate:         2/02/2007
9532
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
9533
      Username:         (set in TOAD Options, Procedure Editor)
9534
      Table Name:       (set in the "New PL/SQL Object" dialog)
9535
 
9536
******************************************************************************/
9537
VTreeId NUMBER;																			  																	   
9538
 
9539
 
9540
	CURSOR curInfo IS
9541
    SELECT RTAG_ID
9542
	FROM RELEASE_TAGS
9543
	WHERE VTREE_ID IS NULL;
9544
    recInfo curInfo%ROWTYPE;
9545
 
9546
 
9547
BEGIN
9548
 
9549
	OPEN curInfo;
9550
    FETCH curInfo INTO recInfo;
9551
 
9552
	WHILE curInfo%FOUND
9553
	LOOP
9554
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
9555
 
9556
		UPDATE RELEASE_TAGS
9557
		SET VTREE_ID = VTreeId
9558
		WHERE RTAG_ID = recInfo.RTAG_ID;
9559
 
9560
		FETCH curInfo INTO recInfo;
9561
	END LOOP;
9562
 
9563
	CLOSE curInfo;
9564
 
9565
END TO_INSERT_VTREE_ID;
9566
/
9567
 
9568
CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
9569
/
9570
 
57 mhunt 9571
CREATE OR REPLACE PACKAGE                   "PK_LICENCING" IS
9572
/*
9573
------------------------------
9574
||  Last Modified:  G.Huddy
9575
||  Modified Date:  19/Aug/2008
9576
||  Spec Version:   1.0
9577
------------------------------
9578
*/
9579
 
9580
   TYPE typeCur IS REF CURSOR;
9581
 
9582
    /*================================================================================================*/
9583
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
9584
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
9585
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
9586
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
9587
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
9588
   /*================================================================================================*/
9589
 
9590
END PK_LICENCING;
9591
/
9592
 
51 mhunt 9593
CREATE OR REPLACE FUNCTION ORA_SYSDATE
9594
RETURN DATE
9595
IS
9596
/* ---------------------------------------------------------------------------
9597
    Version: 3.0.0
9598
   --------------------------------------------------------------------------- */
9599
BEGIN
9600
 
9601
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
9602
END ORA_SYSDATE;
9603
/
9604
 
9605
CREATE OR REPLACE PROCEDURE Undeprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9606
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9607
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9608
											   	 nUserId IN NUMBER) IS
9609
 
9610
ext VARCHAR2(50);
9611
PvIdList VARCHAR2(32767);
9612
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9613
PvId NUMBER;
9614
sComments VARCHAR2(32767);
9615
 
9616
BEGIN
9617
 
9618
 
9619
 
9620
	--Extract the package extension
9621
	SELECT V_EXT into ext 
9622
	FROM PACKAGE_VERSIONS 
9623
	WHERE PV_ID = nPvId;
9624
 
9625
	--SELECT COMMENTS into sComments 
9626
	--FROM DEPRECATED_PACKAGES
9627
	--WHERE RTAG_ID = nRtagId
9628
	--AND V_EXT = ext
9629
	--AND PKG_ID = nPkgId;
9630
 
9631
	--SELECT PV_ID into PvIdList FROM
9632
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
9633
	--AND PKG_STATE = 6
9634
	--AND PV_ID NOT IN nPvId;
9635
 
9636
 
9637
	IF ext IS NOT NULL THEN
9638
       -- Undeprecate Package
9639
       DELETE FROM DEPRECATED_PACKAGES 
9640
	   WHERE RTAG_ID = nRtagId 
9641
	   AND PKG_ID = nPkgId
9642
	   AND V_EXT = ext;	
9643
 
9644
		UPDATE RELEASE_CONTENT 
9645
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9646
		WHERE RTAG_ID = nRtagId
9647
		AND PV_ID IN (SELECT PV.PV_ID 
9648
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9649
					  WHERE PKG.PKG_ID = PV.PKG_ID
9650
					  AND PKG.PKG_ID = nPkgId
9651
					  AND PV.V_EXT = ext
9652
					  UNION
9653
					  SELECT DISTINCT
9654
	 	 		  	 		   qry.PV_ID
9655
							        FROM (
9656
									 	  SELECT dep.*,
9657
										  LEVEL AS LEVEL_NUM
9658
										  FROM PACKAGE_DEPENDENCIES dep
9659
	 								START WITH dep.DPV_ID IN ( nPvId )
9660
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9661
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9662
	 								) qry,
9663
									PACKAGES pkg,
9664
									PACKAGE_VERSIONS pv,
9665
									RELEASE_CONTENT rc
9666
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9667
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9668
 
9669
					 );	 
9670
 
9671
	ELSE
9672
       -- Undeprecate Package
9673
       DELETE FROM DEPRECATED_PACKAGES 
9674
	   WHERE RTAG_ID = nRtagId 
9675
	   AND PKG_ID = nPkgId
9676
	   AND V_EXT IS NULL;	
9677
 
9678
		UPDATE RELEASE_CONTENT 
9679
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9680
		WHERE RTAG_ID = nRtagId
9681
		AND PV_ID IN (SELECT PV.PV_ID 
9682
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9683
					  WHERE PKG.PKG_ID = PV.PKG_ID
9684
					  AND PKG.PKG_ID = nPkgId
9685
					  AND PV.V_EXT IS NULL
9686
					  UNION
9687
					  SELECT DISTINCT
9688
	 	 		  	 		   qry.PV_ID
9689
							        FROM (
9690
									 	  SELECT dep.*,
9691
										  LEVEL AS LEVEL_NUM
9692
										  FROM PACKAGE_DEPENDENCIES dep
9693
	 								START WITH dep.DPV_ID IN ( nPvId )
9694
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9695
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9696
	 								) qry,
9697
									PACKAGES pkg,
9698
									PACKAGE_VERSIONS pv,
9699
									RELEASE_CONTENT rc
9700
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9701
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9702
 
9703
					 );	 	   
9704
 
9705
	END IF;
9706
 
9707
	--IF PvIdList IS NOT NULL THEN
9708
 
9709
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
9710
 
9711
	 --  FOR i IN 1..nIdCollector.COUNT
9712
	 --  LOOP
9713
	--	   PvId := nIdCollector(i);
9714
 
9715
 
9716
 
9717
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
9718
	--		END LOOP;
9719
	--END IF;
9720
 
9721
	Rebuild_environment(nRtagId);			 
9722
 
9723
 
9724
 
9725
END Undeprecate_Package;
9726
/
9727
 
9728
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Acceptance ( pnTest_id IN NUMBER,
9729
														  pnPv_id IN NUMBER,
9730
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
9731
														  sAcceptanceDate IN VARCHAR2,
9732
														  sAcceptedBy IN NUMBER,
9733
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
9734
														  cUpdateAcceptedStateOnly IN CHAR
9735
					                                     ) IS
9736
/* ---------------------------------------------------------------------------
9737
    Version: 3.0.0
9738
   --------------------------------------------------------------------------- */
9739
 
9740
 
9741
 
9742
BEGIN
9743
	IF cUpdateAcceptedStateOnly = 'Y'
9744
	THEN
9745
		--- Update Accepted State Only ---
9746
		IF ( sAccepted IS NULL )
9747
		THEN
9748
			-- Clear alleptance
9749
			UPDATE UNIT_TESTS SET
9750
		           TEST_ACCEPTED = NULL,
9751
		           ACCEPTANCE_DATE = NULL,
9752
				   ACCEPTED_BY = NULL,
9753
				   REVIEW_COMMENTS = NULL
9754
		     WHERE TEST_ID = pnTest_id
9755
		       AND PV_ID = pnPv_id;
9756
 
9757
	    ELSE
9758
			UPDATE UNIT_TESTS SET
9759
		           TEST_ACCEPTED = sAccepted,
9760
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9761
				   ACCEPTED_BY = sAcceptedBy
9762
		     WHERE TEST_ID = pnTest_id
9763
		       AND PV_ID = pnPv_id;
9764
 
9765
		END IF;
9766
 
9767
 
9768
	ELSE
9769
		--- Update Unit Test Acceptance ---
9770
	    UPDATE UNIT_TESTS SET
9771
	           TEST_ACCEPTED = sAccepted,
9772
			   REVIEW_COMMENTS = sReviewComments,
9773
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9774
			   ACCEPTED_BY = sAcceptedBy
9775
	     WHERE TEST_ID = pnTest_id
9776
	       AND PV_ID = pnPv_id;
9777
 
9778
	END IF;
9779
 
9780
END Update_Unit_Test_Acceptance;
9781
/
9782
 
9783
CREATE OR REPLACE PROCEDURE New_Version ( NNorig_pv_id IN NUMBER,
9784
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
9785
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
9786
                                          NNrtag_id IN NUMBER,
9787
                                          NNuser_id IN NUMBER,
9788
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
9789
                                          retPv_id OUT NUMBER ) IS
9790
 
9791
 
9792
  TO BE REMOVED   !!!										  
9793
 
9794
 
9795
 
9796
 
9797
/* ---------------------------------------------------------------------------
9798
    Version: 3.3
9799
   --------------------------------------------------------------------------- */
9800
 
9801
    ReleaseLocation VARCHAR2(4000);
9802
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
9803
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
9804
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
9805
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
9806
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
9807
    nIssuesTypes NUMBER;
9808
 
9809
    CURSOR package_versions_cur IS
9810
        SELECT pv.pv_id, pv.is_patch
9811
          FROM PACKAGE_VERSIONS pv
9812
         WHERE pv.pkg_version = SSpkg_version
9813
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
9814
    package_versions_rec package_versions_cur%ROWTYPE;
9815
 
9816
    CURSOR clone_package_versions_cur IS
9817
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
9818
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
9819
 
9820
BEGIN
9821
	IF NNsetto_pv_id IS NULL
9822
    THEN
9823
		-- SetToPv_id is not supplied, hence proceed.
9824
 
9825
	    /* ---------------------------------------------------- */
9826
	    /* Find id package_version exists                       */
9827
	    /* ---------------------------------------------------- */
9828
 
9829
	    OPEN package_versions_cur;
9830
	    FETCH package_versions_cur INTO package_versions_rec;
9831
 
9832
	    IF package_versions_cur%NOTFOUND
9833
	    THEN
9834
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
9835
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9836
 
9837
	        OPEN clone_package_versions_cur;
9838
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
9839
	        origPkg_id := clone_package_versions_rec.pkg_id;
9840
	        origDlocked := clone_package_versions_rec.dlocked;
9841
	        CLOSE clone_package_versions_cur;
9842
 
9843
	        -- Clone Package Version Details --
9844
	        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,
9845
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
9846
	            SELECT retPv_id         AS pv_id,
9847
	                   origPkg_id       AS pkg_id,
9848
	                   SSpkg_version    AS pkg_version,
9849
	                   'N'              AS dlocked,
9850
	                   Ora_Sysdate      AS created_stamp,
9851
	                   NNuser_id        AS creator_id,
9852
	                   Ora_Sysdatetime  AS modified_stamp,
9853
	                   NNuser_id        AS modifier_id,
9854
	                   SSV_MM           AS V_MM,
9855
	                   SSV_NMM          AS V_NMM,
9856
	                   SSV_EXT          AS V_EXT,
9857
	                   pv.src_path,
9858
	                   pv.pv_description,
9859
                       pv.PV_OVERVIEW,
9860
                       NNorig_pv_id 	AS LAST_PV_ID,
9861
	                   pv.owner_id,
9862
					   pv.IS_DEPLOYABLE,
9863
					   pv.IS_BUILD_ENV_REQUIRED
9864
	              FROM PACKAGE_VERSIONS pv
9865
	             WHERE pv.pv_id = NNorig_pv_id;
9866
 
9867
 
9868
	        -- Set Issues Type for cloning ---
9869
	        IF origDlocked = 'Y'
9870
	        THEN
9871
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
9872
	        ELSE
9873
            	nIssuesTypes := NULL;
9874
	        END IF;
9875
 
9876
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
9877
 
9878
 
9879
 
9880
	    ELSE
9881
	        retPv_id := package_versions_rec.pv_id;
9882
 
9883
	    END IF;
9884
 
9885
        CLOSE package_versions_cur;
9886
 
9887
	ELSE
9888
    	retPv_id := NNsetto_pv_id;
9889
    END IF;
9890
 
9891
 
9892
    /* ---------------------------------------------------- */
9893
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
9894
    /* ---------------------------------------------------- */
9895
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
9896
	    UPDATE RELEASE_CONTENT
9897
	       SET pv_id = retPv_id,
9898
	           insert_stamp = Ora_Sysdate,
9899
	           insertor_id = NNuser_id
9900
	     WHERE rtag_id = NNrtag_id
9901
	       AND pv_id = NNorig_pv_id;
9902
 
9903
        /* LOG ACTION */
9904
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9905
		  FROM PROJECTS proj,
9906
		  	   VTREES vt,
9907
		       RELEASE_TAGS rt
9908
		 WHERE rt.VTREE_ID = vt.VTREE_ID
9909
		   AND vt.PROJ_ID = proj.PROJ_ID
9910
		   AND rt.RTAG_ID = NNrtag_id;
9911
 
9912
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
9913
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
9914
 
9915
	END IF;
9916
 
9917
 
9918
END New_Version;
9919
/
9920
 
9921
CREATE OR REPLACE PROCEDURE Reset_Ignore_Warnings ( sPvIdList IN VARCHAR2,
9922
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
9923
/* ---------------------------------------------------------------------------
9924
    Version: 5.0
9925
   --------------------------------------------------------------------------- */
9926
 
9927
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9928
 
9929
BEGIN
9930
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
9931
 
9932
    -- Remove Ignore Warnings
9933
     DELETE
9934
       FROM ignore_warnings
9935
	  WHERE (rtag_id, pv_id, dpv_id) IN
9936
	     (
9937
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
9938
	        FROM ignore_warnings igw,
9939
	             package_versions dpv,
9940
	             package_versions pv
9941
	       WHERE igw.dpv_id = dpv.pv_id
9942
	         AND igw.rtag_id = nRTagId
9943
	         AND dpv.pkg_id = pv.pkg_id
9944
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
9945
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
9946
         );
9947
 
9948
END Reset_Ignore_Warnings;
9949
/
9950
 
9951
CREATE OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)IS
9952
Auto CHAR;
9953
/******************************************************************************
9954
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
9955
   PURPOSE:    
9956
 
9957
   REVISIONS:
9958
   Ver        Date        Author           Description
9959
   ---------  ----------  ---------------  ------------------------------------
9960
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
9961
 
9962
   NOTES:
9963
 
9964
   Automatically available Auto Replace Keywords:
9965
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
9966
      Sysdate:         14/12/2006
9967
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
9968
      Username:         (set in TOAD Options, Procedure Editor)
9969
      Table Name:       (set in the "New PL/SQL Object" dialog)
9970
 
9971
******************************************************************************/
9972
BEGIN
9973
 
9974
	 SELECT IS_AUTOBUILDABLE into Auto
9975
	 FROM PACKAGE_VERSIONS 
9976
	 WHERE PV_ID = nPvId;
9977
 
9978
	 IF Auto = 'N' Then
9979
 
9980
	 	UPDATE PACKAGE_VERSIONS
9981
	 	SET IS_AUTOBUILDABLE = 'Y'
9982
	 	WHERE PV_ID = nPvId;
9983
 
9984
 
9985
	 	/* LOG ACTION */
9986
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
9987
 
9988
	 Else
9989
 
9990
		 UPDATE PACKAGE_VERSIONS
9991
		 SET IS_AUTOBUILDABLE = 'N'
9992
		 WHERE PV_ID = nPvId;
9993
 
9994
 
9995
	 	 /* LOG ACTION */
9996
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
9997
 
9998
	 End If;
9999
 
10000
 
10001
 
10002
 
10003
 
10004
 
10005
 
10006
 
10007
END SWITCH_REPRODUCIBLE_PACKAGE;
10008
/
10009
 
10010
CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,
10011
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
10012
												  	nUserId IN NUMBER
10013
	   	  		  									) IS
10014
 
10015
/******************************************************************************
10016
   NAME:       REMOVE_PACKAGE_INTEREST
10017
   PURPOSE:    To remove interest in a given package per project
10018
 
10019
   REVISIONS:
10020
   Ver        Date        Author           Description
10021
   ---------  ----------  ---------------  ------------------------------------
10022
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
10023
 
10024
   NOTES:
10025
 
10026
   Automatically available Auto Replace Keywords:
10027
      Object Name:     REMOVE_PACKAGE_INTEREST
10028
      Sysdate:         12/05/2006
10029
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
10030
      Username:         (set in TOAD Options, Procedure Editor)
10031
      Table Name:       (set in the "New PL/SQL Object" dialog)
10032
 
10033
******************************************************************************/
10034
BEGIN
10035
 
10036
	 --Delete from PACKAGE_INTEREST
10037
	 DELETE FROM PACKAGE_INTEREST
10038
	 WHERE PROJ_ID = nProjId
10039
	 AND PKG_ID = nPkgId
10040
	 AND USER_ID = nUserId;
10041
 
10042
END REMOVE_PACKAGE_INTEREST;
10043
/
10044
 
10045
CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
10046
/* ---------------------------------------------------------------------------
10047
    Version: 3.0
10048
   --------------------------------------------------------------------------- */
10049
 
10050
 
10051
BEGIN
10052
 
10053
	 -- Touch Release for Rebuild
10054
     UPDATE RELEASE_TAGS rt SET
10055
     	rt.REBUILD_ENV = 'Y',
10056
        rt.REBUILD_STAMP = 0
10057
      WHERE rt.RTAG_ID = nRtagId;
10058
 
10059
	COMMIT;	  
10060
 
10061
END Touch_Release;
10062
/
10063
 
10064
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
10065
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
10066
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
10067
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
10068
/* ---------------------------------------------------------------------------
10069
    Version: 3.0
10070
   --------------------------------------------------------------------------- */
10071
 
10072
    ActionTypeId NUMBER;
10073
 
10074
BEGIN
10075
 
10076
    -- Get Action Type FK
10077
    SELECT act.ACTTYPE_ID INTO ActionTypeId
10078
      FROM ACTION_TYPE act
10079
     WHERE act.NAME = enumActionTypeName;
10080
 
10081
 
10082
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
10083
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
10084
 
10085
 
10086
END Log_Action;
10087
/
10088
 
57 mhunt 10089
CREATE OR REPLACE PACKAGE BODY                   "PK_PACKAGE"
51 mhunt 10090
IS
57 mhunt 10091
   /*
10092
   ------------------------------
10093
   ||  Last Modified:  G.Huddy
10094
   ||  Modified Date:  20/08/2008
10095
   ||  Body Version:   1.9 - added licencing removal to destroy_package()
10096
   ------------------------------
10097
   */
51 mhunt 10098
 
10099
   /*-------------------------------------------------------------------------------------------------------*/
10100
   PROCEDURE new_version (
10101
      nlastpvid                   IN       NUMBER,
10102
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
10103
      cbuildtype                  IN       CHAR,
10104
      nsettopvid                  IN       NUMBER DEFAULT NULL,
10105
      nrtagid                     IN       NUMBER,
10106
      nuserid                     IN       NUMBER,
10107
      enumissues_state_imported   IN       NUMBER,
10108
      returnpvid                  OUT      NUMBER
10109
   )
10110
   IS
57 mhunt 10111
      origpkg_id                  package_versions.pkg_id%TYPE;
10112
      origdlocked                 package_versions.dlocked%TYPE;
10113
      ssv_mm                      package_versions.v_mm%TYPE;
10114
      ssv_nmm                     package_versions.v_nmm%TYPE;
10115
      ssv_ext                     package_versions.v_ext%TYPE;
10116
      spackageversion             VARCHAR2 (4000);
10117
      nissuestypes                NUMBER;
10118
      nviewid                     NUMBER;
10119
      reccount                    NUMBER;
10120
      isreleased                  package_versions.dlocked%TYPE := 'N';
10121
      slabel                      VARCHAR2 (4000)               := NULL;
51 mhunt 10122
 
10123
      CURSOR package_versions_cur
10124
      IS
10125
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
10126
           FROM package_versions pv
10127
          WHERE pv.pkg_version = snewpkgversion
10128
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
10129
                                         FROM package_versions origpv
10130
                                        WHERE origpv.pv_id = nlastpvid);
10131
 
57 mhunt 10132
      package_versions_rec package_versions_cur%ROWTYPE;
51 mhunt 10133
 
10134
      CURSOR clone_package_versions_cur
10135
      IS
10136
         SELECT DISTINCT pkg_id, dlocked
10137
                    FROM package_versions
10138
                   WHERE pv_id = nlastpvid;
10139
 
57 mhunt 10140
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
51 mhunt 10141
   BEGIN
10142
      spackageversion := snewpkgversion;
10143
 
10144
      IF nsettopvid IS NULL
10145
      THEN
10146
         -- SetToPv_id is not supplied, hence proceed.
10147
 
10148
         /* ---------------------------------------------------- */
57 mhunt 10149
         /* Find id package_version exists                       */
10150
         /* ---------------------------------------------------- */
51 mhunt 10151
         OPEN package_versions_cur;
10152
 
10153
         FETCH package_versions_cur
10154
          INTO package_versions_rec;
10155
 
10156
         IF package_versions_cur%NOTFOUND
10157
         THEN
10158
            ---  Create brand new package ---
10159
            SELECT seq_pv_id.NEXTVAL
10160
              INTO returnpvid
10161
              FROM DUAL;
10162
 
10163
            -- Split Version to get extention + other
10164
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
10165
 
10166
            -- Get previous package to clone from
10167
            OPEN clone_package_versions_cur;
10168
 
10169
            FETCH clone_package_versions_cur
10170
             INTO clone_package_versions_rec;
10171
 
10172
            origpkg_id := clone_package_versions_rec.pkg_id;
10173
            origdlocked := clone_package_versions_rec.dlocked;
10174
 
10175
            CLOSE clone_package_versions_cur;
10176
 
10177
            -- Automated built config
10178
            IF (cbuildtype = 'A')
10179
            THEN
10180
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
57 mhunt 10181
               -- Make sure that version is still unique
51 mhunt 10182
            END IF;
10183
 
10184
            -- Clone Package Version Details --
57 mhunt 10185
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
10186
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
10187
                                         v_ext, src_path, pv_description, pv_overview,
10188
                                         last_pv_id, owner_id, is_deployable,
10189
                                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
10190
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
10191
                        spackageversion AS pkg_version, 'N' AS dlocked,
10192
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
10193
                        ora_sysdatetime AS modified_stamp,
10194
                        nuserid AS modifier_id, ssv_mm AS v_mm,
10195
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
10196
                        pv.pv_description, pv.pv_overview,
10197
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
10198
                        pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
10199
                   FROM package_versions pv
10200
                  WHERE pv.pv_id = nlastpvid;
51 mhunt 10201
 
10202
            -- Set Issues Type for cloning ---
10203
            IF origdlocked = 'Y'
10204
            THEN
10205
               nissuestypes := enumissues_state_imported;
10206
            ELSE
10207
               nissuestypes := NULL;
10208
            END IF;
10209
 
10210
            -- Update Label for automated built
10211
            IF (cbuildtype = 'A')
10212
            THEN
10213
               slabel := get_automated_label (returnpvid);
10214
 
10215
               UPDATE package_versions pv
10216
                  SET pv.pkg_label = slabel
10217
                WHERE pv.pv_id = returnpvid;
10218
            END IF;
10219
 
10220
            basic_clone (nlastpvid,
10221
                         returnpvid,
10222
                         nrtagid,
10223
                         nuserid,
10224
                         origpkg_id,
10225
                         nissuestypes
10226
                        );
10227
         ELSE
10228
            --- Package already exists, hence reuse ---
10229
            returnpvid := package_versions_rec.pv_id;
10230
            isreleased := package_versions_rec.dlocked;
10231
         END IF;
10232
 
10233
         CLOSE package_versions_cur;
10234
      ELSE
10235
         returnpvid := nsettopvid;
10236
      END IF;
10237
   END new_version;
10238
 
10239
/*-------------------------------------------------------------------------------------------------------*/
10240
   PROCEDURE change_state (
10241
      pvid       IN   NUMBER,
10242
      newstate   IN   package_versions.dlocked%TYPE,
10243
      userid     IN   NUMBER
10244
   )
10245
   IS
10246
   BEGIN
10247
      -- Set package in Released mode
10248
      UPDATE package_versions pv
10249
         SET pv.dlocked = newstate,
10250
             pv.modified_stamp = ora_sysdatetime,
10251
             pv.modifier_id = userid
10252
       WHERE pv.pv_id = pvid;
10253
 
10254
      -- Log action --
10255
      IF newstate = 'Y'
10256
      THEN
10257
         -- RELEASED --
10258
         log_action (pvid,
10259
                     'makeofficial',
10260
                     userid,
10261
                     'Package state change to: Released'
10262
                    );
10263
      ELSIF newstate = 'N'
10264
      THEN
10265
         -- UNLOCKED --
10266
         log_action (pvid,
10267
                     'makeunofficial',
10268
                     userid,
10269
                     'Package state change to: Ulocked'
10270
                    );
10271
      ELSIF newstate = 'P'
10272
      THEN
10273
         -- PENDING APPROVAL --
10274
         log_action (pvid,
10275
                     'add_to_planned',
10276
                     userid,
10277
                     'Package state change to: Pending Approval'
10278
                    );
10279
      ELSIF newstate = 'R'
10280
      THEN
10281
         -- REJECTED --
10282
         log_action (pvid,
10283
                     'reject_package',
10284
                     userid,
10285
                     'Package state change to: Rejected'
10286
                    );
10287
      ELSIF newstate = 'A'
10288
      THEN
10289
         -- APPROVED --
10290
         log_action (pvid,
10291
                     'approve_package',
10292
                     userid,
10293
                     'Package state change to: Approved'
10294
                    );
10295
      END IF;
10296
   END;
10297
 
10298
/*-------------------------------------------------------------------------------------------------------*/
10299
   PROCEDURE destroy_package (
10300
      pvid               IN       NUMBER,
10301
      overridewarnings   IN       CHAR DEFAULT 'N',
10302
      problemstring      OUT      VARCHAR2
10303
   )
10304
   IS
10305
      LOCKED     CHAR;
10306
      pkgid      NUMBER;
10307
      ROWCOUNT   NUMBER;
10308
   BEGIN
10309
      /*
10310
      || This will destroy all package details from database.
10311
      || It will only be used to remove unwanted work in progress packages,
10312
      || or mestaken versions
10313
      */
10314
 
10315
      /*--------------- Business Rules Here -------------------*/
10316
      problemstring := NULL;
10317
 
10318
      IF overridewarnings = 'N'
10319
      THEN
10320
         -- Package must not be official
10321
         SELECT pv.dlocked
10322
           INTO LOCKED
10323
           FROM package_versions pv
10324
          WHERE pv.pv_id = pvid;
10325
 
10326
         IF LOCKED = 'Y'
10327
         THEN
10328
            problemstring :=
10329
                  problemstring
10330
               || '- Package is locked and released.'
10331
               || UTL_TCP.crlf;
10332
         END IF;
10333
 
10334
         -- Cannot remove if used in BOMs
10335
         SELECT COUNT (osc.prod_id)
10336
           INTO ROWCOUNT
10337
           FROM deployment_manager.os_contents osc
10338
          WHERE osc.prod_id = pvid;
10339
 
10340
         IF ROWCOUNT > 0
10341
         THEN
10342
            problemstring :=
10343
                  problemstring
10344
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
10345
               || UTL_TCP.crlf;
10346
         END IF;
10347
 
10348
         -- Cannot remove if Referenced as build dependency
10349
         SELECT COUNT (dep.pv_id)
10350
           INTO ROWCOUNT
10351
           FROM package_dependencies dep
10352
          WHERE dep.dpv_id = pvid;
10353
 
10354
         IF ROWCOUNT > 0
10355
         THEN
10356
            problemstring :=
10357
                  problemstring
10358
               || '- Package is referenced by other package as build dependency.'
10359
               || UTL_TCP.crlf;
10360
         END IF;
10361
 
10362
         -- Cannot remove if Referenced as runtime dependency
10363
         SELECT COUNT (rd.pv_id)
10364
           INTO ROWCOUNT
10365
           FROM runtime_dependencies rd
10366
          WHERE rd.rtd_id = pvid;
10367
 
10368
         IF ROWCOUNT > 0
10369
         THEN
10370
            problemstring :=
10371
                  problemstring
10372
               || '- Package is referenced by other package as runtime dependency.'
10373
               || UTL_TCP.crlf;
10374
         END IF;
10375
 
10376
         -- Cannot remove if Referenced as patch
10377
         SELECT COUNT (pp.pv_id)
10378
           INTO ROWCOUNT
10379
           FROM package_patches pp
10380
          WHERE pp.patch_id = pvid;
10381
 
10382
         IF ROWCOUNT > 0
10383
         THEN
10384
            problemstring :=
10385
                  problemstring
10386
               || '- Package is used as patch by other package.'
10387
               || UTL_TCP.crlf;
10388
         END IF;
10389
      END IF;
10390
 
10391
/*-------------------------------------------------------*/
10392
      IF (problemstring IS NULL)
10393
      THEN
10394
         --- Remove From Work in Progress
10395
         DELETE FROM work_in_progress wip
10396
               WHERE wip.pv_id = pvid;
10397
 
10398
         --- Remove From Pending
10399
         DELETE FROM planned pl
10400
               WHERE pl.pv_id = pvid;
10401
 
10402
         --- Remove From Released area
10403
         DELETE FROM release_content rc
10404
               WHERE rc.pv_id = pvid;
10405
 
10406
         ---Remove From Package Processes
10407
         DELETE FROM package_processes pp
10408
               WHERE pp.pv_id = pvid;
10409
 
10410
         --- Remove Dependencies
10411
         DELETE FROM package_dependencies dep
10412
               WHERE dep.pv_id = pvid;
10413
 
10414
         DELETE FROM package_dependencies dep
10415
               WHERE dep.dpv_id = pvid;
10416
 
10417
         --- Remove Runtime dependencies
10418
         DELETE FROM runtime_dependencies rtd
10419
               WHERE rtd.pv_id = pvid;
10420
 
10421
         DELETE FROM runtime_dependencies rtd
10422
               WHERE rtd.rtd_id = pvid;
10423
 
10424
         --- Remove components
10425
         DELETE FROM product_components pc
10426
               WHERE pc.pv_id = pvid;
10427
 
10428
         DELETE FROM release_components rc
10429
               WHERE rc.pv_id = pvid;
10430
 
10431
         --- Remove From Notification History
10432
         DELETE FROM notification_history nh
10433
               WHERE nh.pv_id = pvid;
10434
 
10435
         --- Remove From Ignore Warnings
10436
         DELETE FROM ignore_warnings iw
10437
               WHERE iw.pv_id = pvid;
10438
 
10439
         --- Remove From Additional Notes
10440
         DELETE FROM additional_notes an
10441
               WHERE an.pv_id = pvid;
10442
 
10443
         --- Remove From CQ Issues
10444
         DELETE FROM cq_issues cq
10445
               WHERE cq.pv_id = pvid;
10446
 
10447
         --- Remove from Package Patches
10448
         DELETE FROM package_patches pp
10449
               WHERE pp.pv_id = pvid;
10450
 
10451
         DELETE FROM package_patches pp
10452
               WHERE pp.patch_id = pvid;
10453
 
10454
         --- Remove From Package Documents
10455
         DELETE FROM package_documents pd
10456
               WHERE pd.pv_id = pvid;
10457
 
10458
         --- Remove from Code Review
10459
         DELETE FROM code_reviews cr
10460
               WHERE cr.pv_id = pvid;
57 mhunt 10461
 
51 mhunt 10462
         --- Remove from Code Review URL
10463
         DELETE FROM code_review_url cru
10464
               WHERE cru.pv_id = pvid;
10465
 
10466
         --- Remove from Unit Tests
10467
         DELETE FROM unit_tests ut
10468
               WHERE ut.pv_id = pvid;
10469
 
10470
         --- Remove from Package BuildEnv
10471
         DELETE FROM package_build_env pbe
10472
               WHERE pbe.pv_id = pvid;
10473
 
57 mhunt 10474
         --- Remove from Package Build Info
10475
         DELETE FROM package_build_info pbi
10476
               WHERE pbi.pv_id = pvid;
10477
 
51 mhunt 10478
         --- Remove from Build Order
10479
         DELETE FROM build_order bo
10480
               WHERE bo.pv_id = pvid;
10481
 
57 mhunt 10482
         --- Remove from Licencing
10483
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
10484
 
51 mhunt 10485
         --- Remove from Note Manager
10486
         DELETE FROM note_manager nm
10487
               WHERE nm.nid = pvid;
10488
 
10489
         --- Remove from Action log
10490
         DELETE FROM action_log al
10491
               WHERE al.pv_id = pvid;
57 mhunt 10492
 
10493
         --- Remove from Do Not Ripple
10494
         DELETE FROM DO_NOT_RIPPLE dnr
10495
               WHERE dnr.PV_ID = pvid;
10496
 
10497
         --- Remove from Advisory Ripple
10498
         DELETE FROM ADVISORY_RIPPLE ar
10499
               WHERE ar.PV_ID = pvid;
10500
 
10501
         --- Remove from Jira Issues
10502
         DELETE FROM JIRA_ISSUES jira
10503
               WHERE jira.PV_ID = pvid;
10504
 
53 mhunt 10505
         --- Remove from Package Metrics
10506
         DELETE FROM package_metrics pm
10507
              WHERE pm.pv_id = pvid;
57 mhunt 10508
 
51 mhunt 10509
         --- Finally Remove From Package Versions
10510
         --- Get Package name
10511
         SELECT pv.pkg_id
10512
           INTO pkgid
10513
           FROM package_versions pv
10514
          WHERE pv.pv_id = pvid;
10515
 
10516
         DELETE FROM package_versions pv
10517
               WHERE pv.pv_id = pvid;
10518
 
10519
         --- Remove package name if not used any more
10520
         SELECT COUNT (pv.pv_id)
10521
           INTO ROWCOUNT
10522
           FROM package_versions pv
10523
          WHERE pv.pkg_id = pkgid;
10524
 
10525
         IF ROWCOUNT < 1
10526
         THEN
10527
            DELETE FROM PACKAGES pkg
10528
                  WHERE pkg.pkg_id = pkgid;
10529
         END IF;
10530
      END IF;
10531
   END;
10532
 
10533
/*-------------------------------------------------------------------------------------------------------*/
10534
   PROCEDURE new_patch (
10535
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
10536
      nparentpvid        IN       NUMBER,
10537
      spatchidlist       IN       VARCHAR2,
10538
      nuserid            IN       NUMBER,
10539
      returnpatchid      OUT      NUMBER
10540
   )
10541
   IS
10542
      patchpv_id           NUMBER;
10543
      parpkg_id            NUMBER;
10544
      lastinstallorder     NUMBER;
10545
      ispatchdlocked       package_versions.dlocked%TYPE;
10546
      ssv_mm               package_versions.v_mm%TYPE;
10547
      ssv_nmm              package_versions.v_nmm%TYPE;
10548
      ssv_ext              package_versions.v_ext%TYPE;
57 mhunt 10549
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
51 mhunt 10550
 
10551
      CURSOR parent_cur
10552
      IS
10553
         SELECT pv.*, pkg.pkg_name
10554
           FROM package_versions pv, PACKAGES pkg
10555
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
10556
 
57 mhunt 10557
      parent_rec parent_cur%ROWTYPE;
51 mhunt 10558
 
10559
      CURSOR patch_cur
10560
      IS
10561
         SELECT pv.*, pg.pkg_name
10562
           FROM package_versions pv, PACKAGES pg
10563
          WHERE pv.pkg_id = parpkg_id
10564
            AND pv.pkg_version = snewpatchversion
10565
            AND pv.pkg_id = pg.pkg_id;
10566
 
57 mhunt 10567
      patch_rec  patch_cur%ROWTYPE;
51 mhunt 10568
 
10569
      CURSOR releases_cur
10570
      IS
10571
         SELECT rc.pv_id
10572
           FROM release_content rc
10573
          WHERE rc.pv_id = patch_rec.pv_id;
10574
 
57 mhunt 10575
      releases_rec releases_cur%ROWTYPE;
51 mhunt 10576
   BEGIN
10577
      -- Get Last Install Order
10578
      SELECT COUNT (*)
10579
        INTO lastinstallorder
10580
        FROM package_patches pp
10581
       WHERE pp.pv_id = nparentpvid;
10582
 
10583
      -- Get parent details
10584
      OPEN parent_cur;
10585
 
10586
      FETCH parent_cur
10587
       INTO parent_rec;
10588
 
10589
      parpkg_id := parent_rec.pkg_id;
10590
 
10591
      -- Find if patch exists in database
10592
      OPEN patch_cur;
10593
 
10594
      FETCH patch_cur
10595
       INTO patch_rec;
10596
 
10597
      -- Parent must be official
10598
      IF parent_rec.dlocked = 'Y'
10599
      THEN
10600
         IF patch_cur%NOTFOUND
10601
         THEN
10602
            ispatchdlocked := 'N';
10603
 
10604
            -- Create new patch version --
10605
            SELECT seq_pv_id.NEXTVAL
10606
              INTO patchpv_id
10607
              FROM DUAL;
10608
 
10609
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
10610
 
10611
            INSERT INTO package_versions
10612
                        (pv_id, pkg_id, pkg_version,
10613
                         dlocked, created_stamp, creator_id,
10614
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
10615
                         src_path,
10616
                         pv_description,
10617
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
57 mhunt 10618
                         is_autobuildable, ripple_field
51 mhunt 10619
                        )
10620
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
10621
                         ispatchdlocked, ora_sysdate, nuserid,
10622
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
10623
                         parent_rec.src_path,
10624
                            'This is a patch to '
10625
                         || parent_rec.pkg_name
10626
                         || ' '
10627
                         || parent_rec.pkg_version,
10628
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
10629
                        );
10630
 
10631
            INSERT INTO package_patches
10632
                        (pv_id, patch_id, install_order)
57 mhunt 10633
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10634
                        lastinstallorder + 1 AS install_order
10635
                   FROM package_versions pv
10636
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
51 mhunt 10637
 
10638
            /* LOG ACTION */
10639
            log_action (patchpv_id,
10640
                        'new_version',
10641
                        nuserid,
10642
                        'Patch version created: ' || snewpatchversion
10643
                       );
10644
            log_action (nparentpvid,
10645
                        'patch_add',
10646
                        nuserid,
10647
                        'New patch created and attached: ' || snewpatchversion
10648
                       );
10649
         ELSE
10650
            patchpv_id := patch_rec.pv_id;
10651
            ispatchdlocked := patch_rec.dlocked;
10652
 
10653
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
10654
            OPEN releases_cur;
10655
 
10656
            FETCH releases_cur
10657
             INTO releases_rec;
10658
 
10659
            IF releases_cur%NOTFOUND
10660
            THEN
10661
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
10662
               UPDATE package_versions
10663
                  SET is_patch = 'Y'
10664
                WHERE pv_id = patchpv_id;
10665
 
10666
               INSERT INTO package_patches
10667
                           (pv_id, patch_id, install_order)
57 mhunt 10668
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10669
                           lastinstallorder + 1 AS install_order
10670
                      FROM package_versions pv
10671
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
51 mhunt 10672
            END IF;
10673
 
10674
            CLOSE releases_cur;
10675
 
10676
            /* LOG ACTION */
10677
            log_action (nparentpvid,
10678
                        'patch_add',
10679
                        nuserid,
10680
                           'Patch version was found and attached: '
10681
                        || snewpatchversion
10682
                       );
10683
         END IF;
10684
      END IF;
10685
 
10686
      /* Create Patch Dependencies */
10687
      opatchdepcollector := in_list_number (spatchidlist);
10688
 
10689
      -- Make sure patch is unofficial before altering its dependencies
10690
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
10691
      THEN
10692
         -- Delete Existing Dependencies
10693
         DELETE FROM package_dependencies dep
10694
               WHERE dep.pv_id = patchpv_id;
10695
 
10696
         -- Insert new dependencies
10697
         INSERT INTO package_dependencies
10698
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
57 mhunt 10699
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
10700
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
10701
                     'L' AS build_type
10702
                FROM package_versions pv
10703
               WHERE pv.pv_id IN (
51 mhunt 10704
                      SELECT *
10705
                        FROM TABLE
10706
                                (CAST
10707
                                    (opatchdepcollector AS relmgr_number_tab_t)
10708
                                ));
10709
      END IF;
10710
 
10711
      -- Return patch_id
10712
      returnpatchid := patchpv_id;
10713
 
10714
      CLOSE parent_cur;
10715
 
10716
      CLOSE patch_cur;
10717
   EXCEPTION
10718
      WHEN DUP_VAL_ON_INDEX
10719
      THEN
10720
         raise_application_error (-20000,
10721
                                     'Patch version '
10722
                                  || snewpatchversion
10723
                                  || ' already exist.'
10724
                                 );
10725
   END;
10726
 
10727
/*-------------------------------------------------------------------------------------------------------*/
10728
   PROCEDURE obsolete_patch (
10729
      patchid            IN   NUMBER,
10730
      isobsolete         IN   CHAR,
10731
      obsoletecomments   IN   VARCHAR2,
10732
      userid             IN   NUMBER
10733
   )
10734
   IS
10735
   BEGIN
10736
      -- Update patch
10737
      UPDATE package_versions pv
10738
         SET pv.is_obsolete = isobsolete,
10739
             pv.obsolete_comments = obsoletecomments
10740
       WHERE pv.pv_id = patchid;
10741
 
10742
      /*
10743
      -- Update patch children
10744
      UPDATE PACKAGE_VERSIONS pv SET
10745
      pv.IS_OBSOLETE = IsObsolete,
10746
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10747
      WHERE pv.PV_ID IN (
10748
                     SELECT DISTINCT dep.DPV_ID
10749
                       FROM PACKAGE_DEPENDENCIES dep
10750
                      WHERE dep.PV_ID = PatchId
10751
                     );
10752
 
10753
 
10754
      -- Update patch parent
10755
      UPDATE PACKAGE_VERSIONS pv SET
10756
      pv.IS_OBSOLETE = IsObsolete,
10757
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10758
      WHERE pv.PV_ID IN (
10759
                     SELECT DISTINCT dep.PV_ID
10760
                       FROM PACKAGE_DEPENDENCIES dep
10761
                      WHERE dep.DPV_ID = PatchId
10762
                     );
10763
 
57 mhunt 10764
      */
51 mhunt 10765
 
10766
      /* LOG ACTION */
10767
      IF isobsolete IS NOT NULL
10768
      THEN
10769
         log_action (patchid,
10770
                     'patch_obsolete',
10771
                     userid,
10772
                     'Obsolete patch. ' || obsoletecomments
10773
                    );
10774
      ELSE
10775
         log_action (patchid,
10776
                     'patch_obsolete',
10777
                     userid,
10778
                     'Undo patch obsolete.'
10779
                    );
10780
      END IF;
10781
   END;
10782
 
10783
/*-------------------------------------------------------------------------------------------------------*/
10784
   PROCEDURE obsolete_patches (
10785
      spatchidlist       IN   VARCHAR2,
10786
      isobsolete         IN   CHAR,
10787
      obsoletecomments   IN   VARCHAR2,
10788
      userid             IN   NUMBER
10789
   )
10790
   IS
10791
   BEGIN
10792
      /*--------------- Business Rules Here -------------------*/
10793
      IF spatchidlist IS NULL
10794
      THEN
10795
         raise_application_error (-20000,
10796
                                  'Please select one or more Patches.'
10797
                                 );
10798
      END IF;
10799
 
10800
/*-------------------------------------------------------*/
10801
 
10802
      -- Update patch
10803
      UPDATE package_versions pv
10804
         SET pv.is_obsolete = isobsolete,
10805
             pv.obsolete_comments = obsoletecomments
10806
       WHERE pv.pv_id IN (
10807
                SELECT *
10808
                  FROM THE
10809
                          (SELECT CAST
10810
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
10811
                                     )
10812
                             FROM DUAL
10813
                          ));
57 mhunt 10814
      /*
10815
      -- Update patch children
10816
      UPDATE PACKAGE_VERSIONS pv SET
10817
      pv.IS_OBSOLETE = IsObsolete,
10818
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10819
      WHERE pv.PV_ID IN (
10820
                     SELECT DISTINCT dep.DPV_ID
10821
                       FROM PACKAGE_DEPENDENCIES dep
10822
                      WHERE dep.PV_ID = PatchId
10823
                     );
51 mhunt 10824
 
10825
 
57 mhunt 10826
      -- Update patch parent
10827
      UPDATE PACKAGE_VERSIONS pv SET
10828
      pv.IS_OBSOLETE = IsObsolete,
10829
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10830
      WHERE pv.PV_ID IN (
10831
                     SELECT DISTINCT dep.PV_ID
10832
                       FROM PACKAGE_DEPENDENCIES dep
10833
                      WHERE dep.DPV_ID = PatchId
10834
                     );
51 mhunt 10835
 
10836
      */
10837
 
57 mhunt 10838
      /* LOG ACTION
10839
      IF IsObsolete IS NOT NULL THEN
51 mhunt 10840
         Log_Action ( PatchId, 'patch_obsolete', UserId,
57 mhunt 10841
                     'Obsolete patch. '|| ObsoleteComments );
10842
      ELSE
10843
         Log_Action ( PatchId, 'patch_obsolete', UserId,
10844
                     'Undo patch obsolete.' );
10845
      END IF;  */
51 mhunt 10846
   END;
10847
 
10848
/*-------------------------------------------------------------------------------------------------------*/
10849
   PROCEDURE add_process (
10850
      nprocid         IN   processes.proc_id%TYPE,
10851
      shealthtag      IN   processes.proc_name%TYPE,
10852
      sprocdesc       IN   processes.proc_description%TYPE,
10853
      scmdinterface   IN   processes.run_as%TYPE,
10854
      spkgowner       IN   processes.pkg_owner%TYPE,
10855
      sisinterface    IN   processes.is_interface%TYPE,
10856
      npvid           IN   package_processes.pv_id%TYPE,
10857
      nuserid         IN   NUMBER
10858
   )
10859
   IS
10860
      pkgname   VARCHAR2 (100);
57 mhunt 10861
 
51 mhunt 10862
   BEGIN
10863
      INSERT INTO processes
10864
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
10865
                   is_interface
10866
                  )
10867
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
10868
                   sisinterface
10869
                  );
10870
 
10871
      pk_package.add_package_process (nprocid, npvid, nuserid);
10872
   END;
10873
 
10874
/*-------------------------------------------------------------------------------------------------------*/
10875
   PROCEDURE add_package_process (
10876
      nprocidlist   IN   VARCHAR2,
10877
      npvid         IN   package_processes.pv_id%TYPE,
10878
      nuserid       IN   NUMBER
10879
   )
10880
   IS
10881
      processname   VARCHAR2 (4000);
10882
 
10883
      CURSOR proc_cur
10884
      IS
10885
         SELECT prc.proc_id
10886
           FROM processes prc
10887
          WHERE prc.proc_id IN (
10888
                   SELECT *
10889
                     FROM THE
10890
                             (SELECT CAST
10891
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
10892
                                        )
10893
                                FROM DUAL
10894
                             ));
10895
 
57 mhunt 10896
      proc_rec  proc_cur%ROWTYPE;
51 mhunt 10897
   BEGIN
10898
      OPEN proc_cur;
10899
 
10900
      FETCH proc_cur
10901
       INTO proc_rec;
10902
 
10903
      WHILE proc_cur%FOUND
10904
      LOOP
57 mhunt 10905
         INSERT INTO package_processes (proc_id, pv_id)
10906
              VALUES (proc_rec.proc_id, npvid);
51 mhunt 10907
 
10908
         SELECT prc.proc_name
10909
           INTO processname
10910
           FROM processes prc
10911
          WHERE prc.proc_id = proc_rec.proc_id;
10912
 
10913
         -- Log Action --
10914
         log_action (npvid,
10915
                     'process_add',
10916
                     nuserid,
10917
                     'Added process with health tag ' || processname
10918
                    );
10919
 
10920
         FETCH proc_cur
10921
          INTO proc_rec;
10922
      END LOOP;
10923
   END;
10924
 
10925
/*-------------------------------------------------------------------------------------------------------*/
10926
   PROCEDURE remove_process (
10927
      nprocid   IN   package_processes.proc_id%TYPE,
10928
      npvid     IN   package_processes.pv_id%TYPE,
10929
      nuserid   IN   NUMBER
10930
   )
10931
   IS
10932
      processname   VARCHAR2 (4000);
10933
   BEGIN
10934
      SELECT prc.proc_name
10935
        INTO processname
10936
        FROM processes prc
10937
       WHERE prc.proc_id = nprocid;
10938
 
10939
      DELETE FROM package_processes
10940
            WHERE proc_id = nprocid AND pv_id = npvid;
10941
 
10942
      -- Log Action --
10943
      log_action (npvid,
10944
                  'process_remove',
10945
                  nuserid,
10946
                  'Removed process with health tag ' || processname
10947
                 );
10948
   END;
10949
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 10950
   /*
10951
   ** Author: Rupesh Solanki
10952
   ** Purpose: To move package versions from one release to another
10953
   ** Release: 4th September 2006
10954
   */
10955
   PROCEDURE move_package (
10956
      npvid        IN package_versions.pv_id%TYPE,
10957
      nrtagid      IN release_tags.rtag_id%TYPE,
10958
      nnewrtagid   IN release_tags.rtag_id%TYPE,
10959
      nuserid      IN NUMBER
10960
   )
10961
   IS
51 mhunt 10962
 
57 mhunt 10963
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
10964
 
10965
   BEGIN
10966
      SELECT rtag_name into oldrtag_name
10967
      FROM RELEASE_TAGS
10968
      WHERE rtag_id = nrtagid;
10969
 
10970
      SELECT rtag_name into newrtag_name
10971
      FROM RELEASE_TAGS
10972
      WHERE rtag_id = nnewrtagid;
10973
 
10974
      /* Table Work In Progress*/
10975
      UPDATE WORK_IN_PROGRESS
10976
      SET RTAG_ID = nnewrtagid
10977
      WHERE RTAG_ID = nrtagid
10978
      AND PV_ID = npvid;
10979
 
10980
      /* Table PLANNED*/
10981
      UPDATE PLANNED
10982
      SET RTAG_ID = nnewrtagid
10983
      WHERE RTAG_ID = nrtagid
10984
      AND PV_ID = npvid;
10985
 
51 mhunt 10986
      -- Log Action --
10987
      log_action (npvid,
10988
                  'move_package_version',
10989
                  nuserid,
10990
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
57 mhunt 10991
                 );
10992
   END;
10993
 
51 mhunt 10994
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 10995
   /*
10996
   ** Author: Rupesh Solanki
10997
   ** Purpose: To modify the product state from integration to test to deployment
10998
   ** Release: 25th January 2006
10999
   */
11000
   PROCEDURE modify_product_state (
11001
      npvid    IN package_versions.pv_id%TYPE,
11002
      nrtagid  IN release_tags.rtag_id%TYPE,
11003
      nstateid IN product_states.state_id%TYPE,
11004
      nuserid  IN NUMBER
51 mhunt 11005
   ) IS
57 mhunt 11006
 
11007
      sStateName VARCHAR2(4000);
11008
      sRtagName VARCHAR2(4000);
11009
 
11010
   BEGIN
11011
 
11012
      UPDATE RELEASE_CONTENT
11013
      SET PRODUCT_STATE = nstateid
11014
      WHERE PV_ID = npvid
11015
      AND RTAG_ID = nrtagid;
11016
 
11017
 
11018
      SELECT STATE INTO sStateName
11019
      FROM PRODUCT_STATES
11020
      WHERE STATE_ID = nstateid;
11021
 
11022
      SELECT RTAG_NAME into sRtagName
11023
      FROM RELEASE_TAGS
11024
      WHERE RTAG_ID = nrtagid;
11025
 
11026
 
11027
      -- Log Action --
11028
      log_action (npvid,
11029
                  'modify_product_state',
11030
                     nuserid,
11031
                     sStateName || ' in '|| sRtagName
11032
                  );
11033
   END;
51 mhunt 11034
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11035
   /*
11036
   ** Author: Jeremy Tweddle
11037
   ** Date: 24/Aug/2007
11038
   */
11039
   PROCEDURE add_code_review_url (
11040
      npvid           IN    NUMBER,
11041
      nprojid         IN    NUMBER,
11042
      surl            IN    VARCHAR2,
11043
      sreason         IN    VARCHAR2,
11044
      ddateofreview   IN    DATE
11045
   ) IS
11046
 
11047
      ncrid NUMBER;
11048
 
11049
   BEGIN
11050
 
51 mhunt 11051
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
57 mhunt 11052
 
51 mhunt 11053
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
11054
                                    last_modified )
11055
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
57 mhunt 11056
 
11057
   END;
51 mhunt 11058
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11059
   /*
11060
   ** Author: Jeremy Tweddle
11061
   ** Date: 22/Aug/2007
11062
   */
11063
   PROCEDURE update_code_review_url (
11064
      ncrid           IN    NUMBER,
11065
      nprojid         IN    NUMBER,
11066
      surl            IN    VARCHAR2,
11067
      sreason         IN    VARCHAR2
11068
   ) IS
11069
 
11070
   BEGIN
11071
 
51 mhunt 11072
      UPDATE code_review_url
11073
      SET url = surl,
11074
          proj_id = nprojid,
11075
          reason = sreason,
11076
          last_modified = ora_sysdate
11077
      WHERE cr_id = ncrid;
57 mhunt 11078
 
11079
   END;
51 mhunt 11080
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11081
   /*
11082
   ** Author: Jeremy Tweddle
11083
   ** Date: 22/Aug/2007
11084
   */
11085
   PROCEDURE remove_code_review_url (
11086
      ncrid  IN    NUMBER
11087
   ) IS
11088
 
11089
   BEGIN
51 mhunt 11090
      DELETE FROM code_review_url
11091
      WHERE cr_id = ncrid;
57 mhunt 11092
   END;
51 mhunt 11093
/*-------------------------------------------------------------------------------------------------------*/
11094
END pk_package;
11095
/
11096
 
11097
CREATE OR REPLACE PACKAGE BODY                 pk_archive
11098
IS
11099
/*
11100
------------------------------
11101
||  Author:  Rupesh Solanki
11102
||  Date:    26 October 2006
11103
||  Version:   1.0
11104
------------------------------
11105
*/
11106
/*---------------------------*/
11107
PROCEDURE populate_packages_table IS
11108
 
11109
BEGIN
11110
		  INSERT INTO archive_manager.PACKAGES
11111
		  (
11112
		  select * from packages where pkg_id not in 
11113
		  		  (select pkg_id from archive_manager.packages)
11114
		  );
11115
 
11116
          INSERT INTO archive_manager.PROCESSES
11117
          (
11118
          select * from processes where proc_id not in 
11119
            (select proc_id from archive_manager.processes)
11120
          );
11121
 
11122
 
11123
 
11124
END;
11125
/*-------------------------------------------------------------------------------------------------------*/
11126
   PROCEDURE populate_archive_data_table (
11127
      nrtagid   IN   release_tags.rtag_id%TYPE
11128
   )
11129
   IS
11130
/*
11131
Reason: To populate the archive_data table with information regarding the
11132
         number of package versions that exist in other releases.
11133
*/
11134
      numcount      NUMBER;
11135
      numusedby     NUMBER;
11136
      numruntime    NUMBER;
11137
 
11138
      /* Get all the package versions in the release */
11139
      CURSOR archive_cur
11140
      IS
11141
         SELECT pv_id
11142
           FROM release_content
11143
          WHERE rtag_id = nrtagid;
11144
 
11145
      archive_rec   archive_cur%ROWTYPE;
11146
   BEGIN
11147
/*--------------- Business Rules Here -------------------*/
11148
/*-------------------------------------------------------*/
11149
      OPEN archive_cur;
11150
 
11151
      FETCH archive_cur
11152
       INTO archive_rec;
11153
 
11154
      WHILE archive_cur%FOUND
11155
      LOOP
11156
        /* How many packages depend on this package version? */
11157
         SELECT COUNT (*)
11158
           INTO numusedby
11159
           FROM package_dependencies
11160
          WHERE dpv_id = archive_rec.pv_id;
11161
 
11162
        /* How many project releases use this package version?  */
11163
         SELECT COUNT (*)
11164
           INTO numcount
11165
           FROM release_content
11166
          WHERE pv_id = archive_rec.pv_id;
11167
 
11168
        /* How many packages have this package version as runtime
11169
        dependency? */
11170
         SELECT COUNT (*)
11171
           INTO numruntime
11172
           FROM runtime_dependencies
11173
          WHERE rtd_id = archive_rec.pv_id;
11174
 
11175
        /* Insert into the archive_data table if they are not runtime dependant
11176
        and package dependant and they exist in that particular release only*/
11177
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
11178
         THEN
11179
            INSERT INTO archive_data
11180
                        (rtag_id, pv_id
11181
                        )
11182
                 VALUES (nrtagid, archive_rec.pv_id
11183
                        );
11184
         END IF;
11185
 
11186
         FETCH archive_cur
11187
          INTO archive_rec;
11188
      END LOOP;
11189
   END;
11190
 
11191
/*-------------------------------------------------------------------------------------------------------*/
11192
   PROCEDURE migrate_pv_to_archive_schema (
11193
      nrtagid   IN   release_tags.rtag_id%TYPE
11194
   )
11195
   IS
11196
   BEGIN
11197
 
11198
      /* MIGRATION - PACKAGE_VERSIONS */
11199
      INSERT INTO archive_manager.package_versions
11200
         SELECT *
11201
           FROM package_versions
11202
          WHERE pv_id IN (SELECT pv_id
11203
                            FROM archive_data);
11204
 
11205
      /* MIGRATION - PACKAGE_BUILD_ENV */
11206
      INSERT INTO archive_manager.package_build_env
11207
         SELECT *
11208
           FROM package_build_env
11209
          WHERE pv_id IN (SELECT pv_id
11210
                            FROM archive_data);
11211
 
11212
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
11213
      DELETE FROM package_build_env
11214
            WHERE pv_id IN (SELECT pv_id
11215
                              FROM archive_data);
11216
 
11217
      /* MIGRATION - PACKAGE_BUILD_INFO */
11218
      INSERT INTO archive_manager.package_build_info
11219
         SELECT *
11220
           FROM package_build_info
11221
          WHERE pv_id IN (SELECT pv_id
11222
                            FROM archive_data);
11223
 
11224
      /* PURGE DATA FROM PACKAGE_BUILD_info */
11225
      DELETE FROM package_build_info
11226
            WHERE pv_id IN (SELECT pv_id
11227
                              FROM archive_data);							  
11228
 
11229
      /* MIGRATION - UNIT_TESTS  */
11230
      INSERT INTO archive_manager.unit_tests
11231
         SELECT *
11232
           FROM unit_tests
11233
          WHERE pv_id IN (SELECT pv_id
11234
                            FROM archive_data);
11235
 
11236
      /* PURGE DATA FROM UNIT_TESTS*/
11237
      DELETE FROM unit_tests
11238
            WHERE pv_id IN (SELECT pv_id
11239
                              FROM archive_data);
11240
 
11241
      /* MIGRATION - PACKAGE_PROCESSES */
11242
      INSERT INTO archive_manager.package_processes
11243
         SELECT *
11244
           FROM package_processes
11245
          WHERE pv_id IN (SELECT pv_id
11246
                            FROM archive_data);
11247
 
11248
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
11249
      DELETE FROM package_processes
11250
            WHERE pv_id IN (SELECT pv_id
11251
                              FROM archive_data);
11252
 
11253
      /* MIGRATION - PACKAGE_DEPENDENCIES */
11254
      INSERT INTO archive_manager.package_dependencies
11255
         SELECT *
11256
           FROM package_dependencies
11257
          WHERE pv_id IN (SELECT pv_id
11258
                            FROM archive_data);
11259
 
11260
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
11261
      DELETE FROM package_dependencies
11262
            WHERE pv_id IN (SELECT pv_id
11263
                              FROM archive_data);
11264
 
11265
      /* MIGRATION - CODE_REVIEWS */
11266
      INSERT INTO archive_manager.code_reviews
11267
         SELECT *
11268
           FROM code_reviews
11269
          WHERE pv_id IN (SELECT pv_id
11270
                            FROM archive_data);
11271
 
11272
      /* PURGE DATA FROM CODE_REVIEWS*/
11273
      DELETE FROM code_reviews
11274
            WHERE pv_id IN (SELECT pv_id
11275
                              FROM archive_data);
11276
 
11277
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
11278
      INSERT INTO archive_manager.runtime_dependencies
11279
         SELECT *
11280
           FROM runtime_dependencies
11281
          WHERE pv_id IN (SELECT pv_id
11282
                            FROM archive_data);
11283
 
11284
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
11285
      DELETE FROM runtime_dependencies
11286
            WHERE pv_id IN (SELECT pv_id
11287
                              FROM archive_data);
11288
 
11289
      /* MIGRATION - PACKAGE_DOCUMENTS */
11290
      INSERT INTO archive_manager.package_documents
11291
         SELECT *
11292
           FROM package_documents
11293
          WHERE pv_id IN (SELECT pv_id
11294
                            FROM archive_data);
11295
 
11296
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
11297
      DELETE FROM package_documents
11298
            WHERE pv_id IN (SELECT pv_id
11299
                              FROM archive_data);
11300
 
11301
      /* MIGRATION - PACKAGE_PATCHES */
11302
      INSERT INTO archive_manager.package_patches
11303
         SELECT *
11304
           FROM package_patches
11305
          WHERE pv_id IN (SELECT pv_id
11306
                            FROM archive_data);
11307
 
11308
      /* PURGE DATA FROM PACKAGE_PATCHES*/
11309
      DELETE FROM package_patches
11310
            WHERE pv_id IN (SELECT pv_id
11311
                              FROM archive_data);
11312
 
11313
      /* MIGRATION - CQ_ISSUES */
11314
      INSERT INTO archive_manager.cq_issues
11315
         SELECT *
11316
           FROM cq_issues
11317
          WHERE pv_id IN (SELECT pv_id
11318
                            FROM archive_data);
11319
 
11320
      /* PURGE DATA FROM CQ_ISSUES*/
11321
      DELETE FROM cq_issues
11322
            WHERE pv_id IN (SELECT pv_id
11323
                              FROM archive_data);
11324
 
11325
      /* MIGRATION - ADDITIONAL_NOTES */
11326
      INSERT INTO archive_manager.additional_notes
11327
         SELECT *
11328
           FROM additional_notes
11329
          WHERE pv_id IN (SELECT pv_id
11330
                            FROM archive_data);
11331
 
11332
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
11333
      DELETE FROM additional_notes
11334
            WHERE pv_id IN (SELECT pv_id
11335
                              FROM archive_data);
11336
 
11337
      /* MIGRATION - RELEASE_COMPONENTS */
11338
      INSERT INTO archive_manager.release_components
11339
         SELECT *
11340
           FROM release_components
11341
          WHERE pv_id IN (SELECT pv_id
11342
                            FROM archive_data);
11343
 
11344
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
11345
      DELETE FROM release_components
11346
            WHERE pv_id IN (SELECT pv_id
11347
                              FROM archive_data);
11348
 
11349
      /* MIGRATION - IGNORE_WARNINGS */
11350
      INSERT INTO archive_manager.ignore_warnings
11351
         SELECT *
11352
           FROM ignore_warnings
11353
          WHERE pv_id IN (SELECT pv_id
11354
                            FROM archive_data);
11355
 
11356
      /* PURGE DATA FROM IGNORE_WARNINGS*/
11357
      DELETE FROM ignore_warnings
11358
            WHERE pv_id IN (SELECT pv_id
11359
                              FROM archive_data);
11360
 
11361
      /* PURGE DATA FROM WORK_IN_PROGRESS */
11362
      DELETE FROM work_in_progress
11363
            WHERE rtag_id = nrtagid;
11364
 
11365
      /* PURGE DATA FROM PLANNED */
11366
      DELETE FROM planned
11367
            WHERE rtag_id = nrtagid;
11368
 
11369
      /* MIGRATION - JIRA_ISSUES */
11370
      INSERT INTO archive_manager.jira_issues
11371
         SELECT *
11372
           FROM jira_issues
11373
          WHERE pv_id IN (SELECT pv_id
11374
                            FROM archive_data);
11375
 
11376
      /* PURGE DATA FROM JIRA_ISSUES*/
11377
      DELETE FROM jira_issues
11378
            WHERE pv_id IN (SELECT pv_id
11379
                              FROM archive_data);
11380
 
11381
      /* MIGRATION - PRODUCT_COMPONENTS */
11382
      INSERT INTO archive_manager.product_components
11383
         SELECT *
11384
           FROM product_components
11385
          WHERE pv_id IN (SELECT pv_id
11386
                            FROM archive_data);
11387
 
11388
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11389
      DELETE FROM product_components
11390
            WHERE pv_id IN (SELECT pv_id
11391
                              FROM archive_data);
11392
 
11393
      /* MIGRATION - ACTION_LOG */
11394
      INSERT INTO archive_manager.action_log
11395
         SELECT *
11396
           FROM action_log
11397
          WHERE pv_id IN (SELECT pv_id
11398
                            FROM archive_data);
11399
 
11400
      /* PURGE DATA FROM ACTION_LOG*/
11401
      DELETE FROM action_log
11402
            WHERE pv_id IN (SELECT pv_id
11403
                              FROM archive_data);
11404
 
11405
 
11406
   END;
11407
 
11408
/*-------------------------------------------------------------------------------------------------------*/
11409
   PROCEDURE migrate_rtag_to_archive_schema (
11410
      nrtagid   IN   release_tags.rtag_id%TYPE
11411
   )
11412
   IS
11413
   BEGIN
11414
      /* MIGRATION - DO_NOT_RIPPLE */
11415
      INSERT INTO archive_manager.do_not_ripple
11416
         SELECT *
11417
           FROM do_not_ripple dnp
11418
          WHERE rtag_id = nrtagid;
11419
 
11420
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11421
      DELETE FROM do_not_ripple
11422
            WHERE rtag_id = nrtagid;
11423
 
11424
      /* MIGRATION - ADVISORY_RIPPLES*/
11425
      INSERT INTO archive_manager.advisory_ripples
11426
         SELECT *
11427
           FROM advisory_ripple dnp
11428
          WHERE rtag_id = nrtagid;
11429
 
11430
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11431
      DELETE FROM advisory_ripple
11432
            WHERE rtag_id = nrtagid;			
11433
 
11434
      /* MIGRATION - RELEASE_CONTENT */
11435
      INSERT INTO archive_manager.release_content
11436
         SELECT *
11437
           FROM release_content
11438
          WHERE rtag_id = nrtagid;
11439
 
11440
      /* PURGE DATA FROM RELEASE_CONTENT*/
11441
      DELETE FROM release_content
11442
            WHERE rtag_id = nrtagid;
11443
 
11444
      /* MIGRATION - NOTIFICATION_HISTORY */
11445
      INSERT INTO archive_manager.notification_history
11446
         SELECT *
11447
           FROM notification_history
11448
          WHERE rtag_id = nrtagid;
11449
 
11450
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11451
      DELETE FROM notification_history
11452
            WHERE rtag_id = nrtagid;
11453
 
11454
      /* MIGRATION - BUILD_ORDER   */
11455
      INSERT INTO archive_manager.build_order
11456
         SELECT *
11457
           FROM build_order
11458
          WHERE rtag_id = nrtagid;
11459
 
11460
      /* PURGE DATA FROM BUILD_ORDER*/
11461
      DELETE FROM build_order
11462
            WHERE rtag_id = nrtagid;
11463
 
11464
      /* MIGRATION - PROJECT_ACTION_LOG */
11465
      INSERT INTO archive_manager.project_action_log
11466
         SELECT *
11467
           FROM project_action_log
11468
          WHERE rtag_id = nrtagid;
11469
 
11470
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11471
      DELETE FROM project_action_log
11472
            WHERE rtag_id = nrtagid;
11473
 
11474
      /* MIGRATION - DEPRECATED_PACKAGES */
11475
      INSERT INTO archive_manager.deprecated_packages
11476
         SELECT *
11477
           FROM deprecated_packages
11478
          WHERE rtag_id = nrtagid;
11479
 
11480
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11481
      DELETE FROM deprecated_packages
11482
            WHERE rtag_id = nrtagid;
11483
 
11484
      /* MIGRATION - RELEASE_TAGS */
11485
      INSERT INTO archive_manager.release_tags
11486
         SELECT *
11487
           FROM release_tags
11488
          WHERE rtag_id = nrtagid;
11489
 
11490
 
11491
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11492
      DELETE FROM package_versions
11493
            WHERE pv_id IN (SELECT pv_id
11494
                              FROM archive_data);
11495
 
11496
 
11497
   END;
11498
 
11499
/*-------------------------------------------------------------------------------------------------------*/
11500
   PROCEDURE clean_up_archive_data_table (
11501
      nrtagid   IN   release_tags.rtag_id%TYPE
11502
   )
11503
   IS
11504
   BEGIN
11505
      /* Cleaning Up The Archive_Data Table */
11506
      DELETE FROM archive_data
11507
            WHERE rtag_id = nrtagid;
11508
   END;
11509
 
11510
/*-------------------------------------------------------------------------------------------------------*/
11511
   PROCEDURE write_action_log (
11512
      nuserid   IN   NUMBER,
11513
      nrtagid   IN   release_tags.rtag_id%TYPE
11514
   )
11515
   IS
11516
   BEGIN
11517
      /* Write Into Archive_Action_Log Table */
11518
      INSERT INTO archive_action_log
11519
                  (user_id, date_time_stamp, rtag_id,
11520
                   description
11521
                  )
11522
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11523
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11524
                  );
11525
   END;
11526
/*-------------------------------------------------------------------------------------------------------*/
11527
END pk_archive;
11528
/
11529
 
11530
CREATE OR REPLACE PACKAGE BODY pk_rmapi_test
11531
IS
11532
/*
11533
------------------------------
11534
||  Last Modified:  Rupesh Solanki
11535
||  Modified Date:  11 September 2006
11536
||  Body Version:   2.0
11537
------------------------------
11538
*/
11539
 
11540
   /*-------------------------------------------------------------------------------------------------------*/
11541
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11542
      RETURN typecur
11543
   IS
11544
      npvid     NUMBER  := 0;
11545
      RECORDS   typecur;
11546
   BEGIN
11547
      BEGIN
11548
         -- Get PV_ID --
11549
         SELECT pv.pv_id
11550
           INTO npvid
11551
           FROM PACKAGES pkg, package_versions pv
11552
          WHERE pv.pkg_id = pkg.pkg_id
11553
            AND pkg.pkg_name = pkgname
11554
            AND pv.pkg_version = pkgversion;
11555
      EXCEPTION
11556
         WHEN NO_DATA_FOUND
11557
         THEN
11558
            raise_application_error (-20000, 'Package Not Found!');
11559
            --WHEN OTHERS THEN
11560
                  -- Consider logging the error and then re-raise
11561
            RAISE;
11562
      END;
11563
 
11564
      -- Finally get package dependencies --
11565
      OPEN RECORDS FOR
11566
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11567
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11568
          WHERE dep.pv_id = npvid
11569
            AND dpv.pkg_id = dpkg.pkg_id
11570
            AND dpv.pv_id = dep.dpv_id;
11571
 
11572
      RETURN RECORDS;
11573
   END;
11574
 
11575
/*-------------------------------------------------------------------------------------------------------*/
11576
   FUNCTION wip_iteration_package (
11577
      projname        VARCHAR2,
11578
      iterationname   VARCHAR2,
11579
      pkgname         VARCHAR2
11580
   )
11581
      RETURN typecur
11582
   IS
11583
      nrtagid   NUMBER  := 0;
11584
      RECORDS   typecur;
11585
   BEGIN
11586
      BEGIN
11587
         -- Get latest rtag_id --
11588
         SELECT rt.rtag_id
11589
           INTO nrtagid
11590
           FROM projects proj, release_tags rt
11591
          WHERE rt.proj_id = proj.proj_id
11592
            AND UPPER (proj.proj_name) = UPPER (projname)
11593
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
11594
 
11595
         IF (nrtagid IS NULL)
11596
         THEN
11597
            raise_application_error (-20000,
11598
                                     'Work In Progress is Not Found!');
11599
         END IF;
11600
      EXCEPTION
11601
         WHEN NO_DATA_FOUND
11602
         THEN
11603
            raise_application_error (-20000,
11604
                                     'Work In Progress is Not Found!');
11605
            RAISE;
11606
      END;
11607
 
11608
      -- Finally get package dependencies --
11609
      OPEN RECORDS FOR
11610
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
11611
                pv.src_path
11612
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
11613
          WHERE pv.pkg_id = pkg.pkg_id
11614
            AND wip.pv_id = pv.pv_id
11615
            AND wip.rtag_id = nrtagid
11616
            AND pkg.pkg_name = pkgname;
11617
 
11618
      RETURN RECORDS;
11619
   END;
11620
 
11621
/*-------------------------------------------------------------------------------------------------------*/
11622
   FUNCTION auto_make_release (
11623
      rtagid                   IN   NUMBER,
11624
      pkgname                  IN   VARCHAR2,
11625
      vext                     IN   VARCHAR2,
11626
      newpkgversion            IN   VARCHAR2,
11627
      label                    IN   VARCHAR2,
11628
      dependenciesimportlist   IN   VARCHAR2,
11629
      isrippled                IN   NUMBER,
11630
      username                 IN   VARCHAR2
11631
   )
11632
      RETURN NUMBER
11633
   IS
11634
      pvid                            NUMBER                        := 0;
11635
      userid                          NUMBER;
11636
      dlocked                         VARCHAR2 (20)                 := NULL;
11637
      clonefrompvid                   NUMBER;
11638
      ssv_mm                          package_versions.v_mm%TYPE;
11639
      ssv_nmm                         package_versions.v_nmm%TYPE;
11640
      ssv_ext                         package_versions.v_ext%TYPE;
11641
      return_package_not_found        NUMBER                        := -1;
11642
      return_package_already_exists   NUMBER                        := -2;
11643
      return_not_approved             NUMBER                        := -3;
11644
   BEGIN
11645
      /*--------------- Business Rules Here -------------------*/
11646
      IF (rtagid IS NULL)
11647
      THEN
11648
         raise_application_error (-20000, 'RtagId must be supplied.');
11649
      END IF;
11650
 
11651
      IF (pkgname IS NULL)
11652
      THEN
11653
         raise_application_error (-20000, 'PkgName must be supplied.');
11654
      END IF;
11655
 
11656
      IF (newpkgversion IS NULL)
11657
      THEN
11658
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11659
      END IF;
11660
 
11661
      IF (label IS NULL)
11662
      THEN
11663
         raise_application_error (-20000, 'Label must be supplied.');
11664
      END IF;
11665
 
11666
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11667
      THEN
11668
         raise_application_error
11669
            (-20000,
11670
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
11671
            );
11672
      END IF;
11673
 
11674
      IF (username IS NULL)
11675
      THEN
11676
         raise_application_error (-20000, 'UserName must be supplied.');
11677
      END IF;
11678
 
11679
      -- Get user_id
11680
      BEGIN
11681
         SELECT usr.user_id
11682
           INTO userid
11683
           FROM users usr
11684
          WHERE UPPER (usr.user_name) = UPPER (username)
11685
            AND usr.is_disabled IS NULL;
11686
      EXCEPTION
11687
         WHEN NO_DATA_FOUND
11688
         THEN
11689
            raise_application_error (-20000,
11690
                                        'UserName '
11691
                                     || username
11692
                                     || ' is not valid or disabled.'
11693
                                    );
11694
      END;
11695
 
11696
/*-------------------------------------------------------*/
11697
 
11698
      -- Create package if necessary
11699
      IF isrippled = 1
11700
      THEN
11701
         /* Ripple Build */
11702
         BEGIN
11703
            -- Make sure that package does not exist
11704
            SELECT pv.pv_id
11705
              INTO pvid
11706
              FROM package_versions pv, PACKAGES pkg
11707
             WHERE pv.pkg_id = pkg.pkg_id
11708
               AND pkg.pkg_name = pkgname
11709
               AND pv.pkg_version = newpkgversion;
11710
         EXCEPTION
11711
            WHEN NO_DATA_FOUND
11712
            THEN
11713
               pvid := 0;
11714
         END;
11715
 
11716
         IF (pvid = 0)
11717
         THEN
11718
            -- Split current version in parts
11719
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11720
 
11721
            BEGIN
11722
               -- Find package to be replaced with thie ripple package
11723
               IF vext = ssv_ext
11724
               THEN
11725
                  SELECT pv.pv_id
11726
                    INTO clonefrompvid
11727
                    FROM PACKAGES pkg, package_versions pv,
11728
                         release_content rc
11729
                   WHERE rc.pv_id = pv.pv_id
11730
                     AND pv.pkg_id = pkg.pkg_id
11731
                     AND rc.rtag_id = rtagid
11732
                     AND pkg.pkg_name = pkgname
11733
                     AND pv.v_ext = ssv_ext;
11734
               ELSE
11735
                  SELECT pv.pv_id
11736
                    INTO clonefrompvid
11737
                    FROM PACKAGES pkg, package_versions pv,
11738
                         release_content rc
11739
                   WHERE rc.pv_id = pv.pv_id
11740
                     AND pv.pkg_id = pkg.pkg_id
11741
                     AND rc.rtag_id = rtagid
11742
                     AND pkg.pkg_name = pkgname
11743
                     AND pv.v_ext = vext;
11744
               END IF;
11745
            EXCEPTION
11746
               WHEN NO_DATA_FOUND
11747
               THEN
11748
                  raise_application_error
11749
                                        (-20000,
11750
                                            'Cannot get CloneFromPvId. VExt='
11751
                                         || vext
11752
                                         || ', RtagId='
11753
                                         || rtagid
11754
                                         || ', PkgName='
11755
                                         || pkgname
11756
                                         || ', SSV_EXT='
11757
                                         || ssv_ext
11758
                                        );
11759
            END;
11760
 
11761
            IF vext = ssv_ext
11762
            THEN
11763
               -- Create package
11764
               seed_package_names_versions (pkgname,
11765
                                            newpkgversion,
11766
                                            userid,
11767
                                            pvid,
11768
                                            clonefrompvid
11769
                                           );
11770
            ELSE
11771
               -- Create package
11772
               seed_package_names_versions2 (pkgname,
11773
                                             newpkgversion,
11774
                                             userid,
11775
                                             pvid,
11776
                                             clonefrompvid
11777
                                            );
11778
            END IF;
11779
 
11780
            -- Update Package reason for release
11781
            UPDATE package_versions pv
11782
               SET pv.comments = 'Rippled Build.',
11783
                   pv.build_type = 'Y'
11784
             WHERE pv.pv_id = pvid;
11785
         ELSE
11786
            -- Package already exists, hence cannot be used for ripple build
11787
            RETURN return_package_already_exists;
11788
         END IF;
11789
      ELSE
11790
         /* Auto build from Pending area */
11791
 
11792
         -- Find package in pending area
11793
         BEGIN
11794
            SELECT pv.pv_id, pv.dlocked
11795
              INTO pvid, dlocked
11796
              FROM planned pl, package_versions pv, PACKAGES pkg
11797
             WHERE pl.pv_id = pv.pv_id
11798
               AND pv.pkg_id = pkg.pkg_id
11799
               AND pl.rtag_id = rtagid
11800
               AND pkg.pkg_name = pkgname
11801
               AND pv.dlocked = 'A'
11802
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11803
                                                   NVL (vext, '|LINK_A_NULL|');
11804
         EXCEPTION
11805
            WHEN NO_DATA_FOUND
11806
            THEN
11807
               pvid := 0;
11808
         END;
11809
 
11810
         IF (pvid = 0)
11811
         THEN
11812
            -- Package does not exist in pending area, hence report it
11813
            RETURN return_package_not_found;
11814
         ELSIF (dlocked != 'A')
11815
         THEN
11816
            -- Package is not approved for autobuild
11817
            RETURN return_not_approved;
11818
         END IF;
11819
      END IF;
11820
 
11821
      BEGIN
11822
         -- Import Dependencies
11823
         import_dependencies (pvid, dependenciesimportlist, userid);
11824
      END;
11825
 
11826
      BEGIN
11827
         -- Split current version in parts
11828
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11829
 
11830
         -- Update Package Details
11831
         UPDATE package_versions pv
11832
            SET pv.pkg_version = newpkgversion,
11833
                pv.v_ext = ssv_ext,
11834
                pv.v_mm = ssv_mm,
11835
                pv.v_nmm = ssv_nmm,
11836
                pv.pkg_label = label
11837
          WHERE pv.pv_id = pvid;
11838
      EXCEPTION
11839
         WHEN DUP_VAL_ON_INDEX
11840
         THEN
11841
            -- Package already exists, hence cannot be used for ripple build
11842
            RETURN return_package_already_exists;
11843
      END;
11844
 
11845
	  -- Update the is_autobuildable
11846
	  update package_versions 
11847
	  set is_autobuildable = 'Y'
11848
	  where pv_id = pvid;	  
11849
 
11850
      -- Now release package
11851
      pk_environment.auto_make_release (pvid,
11852
                                        rtagid,
11853
                                        userid,
11854
                                        vext,
11855
                                        ssv_ext,
11856
                                        clonefrompvid
11857
                                       );
11858
 
11859
 
11860
      RETURN pvid;
11861
   END;
11862
 
11863
/*-------------------------------------------------------------------------------------------------------*/
11864
   PROCEDURE import_dependencies (
11865
      pvid                     IN   NUMBER,
11866
      dependenciesimportlist   IN   VARCHAR2,
11867
      userid                   IN   NUMBER
11868
   )
11869
   IS
11870
/*
11871
|| DependenciesImportList Format:
11872
|| "pkgA","1.0.0";"pkgB","2.0.0";
11873
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11874
*/
11875
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11876
         INDEX BY VARCHAR2 (4000);
11877
 
11878
      seperator         VARCHAR2 (2)           := '||';
11879
      pkgname           VARCHAR2 (4000);
11880
      pkgversion        VARCHAR2 (4000);
11881
      buildtype         VARCHAR2 (50);
11882
      pkgid             NUMBER;
11883
      vext              VARCHAR2 (4000);
11884
      dpvid             NUMBER;
11885
      slist             VARCHAR2 (4000);
11886
      cbuildtypes       tdictionary;
11887
      dependencyrow     NUMBER;
11888
      sdependency       VARCHAR2 (4000);
11889
      first_pos         VARCHAR2 (4000);
11890
      second_pos        VARCHAR2 (4000);
11891
      third_pos         VARCHAR2 (4000);
11892
      forth_pos         VARCHAR2 (4000);
11893
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11894
 
11895
      CURSOR curbuildtype
11896
      IS
11897
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11898
                dep.build_type
11899
           FROM package_dependencies dep, package_versions dpv
11900
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11901
 
11902
      recbuildtype      curbuildtype%ROWTYPE;
11903
   BEGIN
11904
      slist := dependenciesimportlist;
11905
 
11906
      -- Preformat String
11907
      IF NOT slist IS NULL
11908
      THEN
11909
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11910
         slist := REPLACE (slist, UTL_TCP.crlf);
11911
                            -- Remove new line and carriage-return characters
11912
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
11913
      END IF;
11914
 
11915
      -- Get Current Dependencies
11916
      OPEN curbuildtype;
11917
 
11918
      FETCH curbuildtype
11919
       INTO recbuildtype;
11920
 
11921
      WHILE curbuildtype%FOUND
11922
      LOOP
11923
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
11924
 
11925
         FETCH curbuildtype
11926
          INTO recbuildtype;
11927
      END LOOP;
11928
 
11929
      CLOSE curbuildtype;
11930
 
11931
      -- Separate dependencies with ; separator
11932
      citemcollection := in_list_varchar2 (slist, ';');
11933
 
11934
      BEGIN
11935
         -- Remove old dependencies
11936
         DELETE FROM package_dependencies dep
11937
               WHERE dep.pv_id = pvid;
11938
 
11939
         -- Loop through dependencies
11940
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11941
         LOOP
11942
            -- Extract pkg_name and pkg_version
11943
            sdependency := citemcollection (dependencyrow);
11944
            first_pos := INSTR (sdependency, '"', 1, 1);
11945
            second_pos := INSTR (sdependency, '"', 1, 2);
11946
            third_pos := INSTR (sdependency, '"', 1, 3);
11947
            forth_pos := INSTR (sdependency, '"', 1, 4);
11948
            pkgname :=
11949
               SUBSTR (sdependency,
11950
                       (first_pos + 1),
11951
                       (second_pos - first_pos - 1)
11952
                      );
11953
            pkgversion :=
11954
               SUBSTR (sdependency,
11955
                       (third_pos + 1),
11956
                       (forth_pos - third_pos - 1)
11957
                      );
11958
 
11959
            -- Dependency must exits to be linked against
11960
            BEGIN
11961
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11962
                 INTO dpvid, pkgid, vext
11963
                 FROM package_versions pv, PACKAGES pkg
11964
                WHERE pv.pkg_id = pkg.pkg_id
11965
                  AND pkg.pkg_name = pkgname
11966
                  AND pv.pkg_version = pkgversion;
11967
            EXCEPTION
11968
               WHEN NO_DATA_FOUND
11969
               THEN
11970
                  raise_application_error
11971
                                  (-20000,
11972
                                      'Dependency ['
11973
                                   || pkgname
11974
                                   || ' '
11975
                                   || pkgversion
11976
                                   || '] does not exist yet and cannot be used!'
11977
                                  );
11978
            END;
11979
 
11980
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11981
            BEGIN
11982
               buildtype := cbuildtypes (pkgid || seperator || vext);
11983
 
11984
               IF buildtype IS NULL
11985
               THEN
11986
                  -- Set build type to LinkPackageArchive by default
11987
                  buildtype := 'L';
11988
               END IF;
11989
            EXCEPTION
11990
               WHEN NO_DATA_FOUND
11991
               THEN
11992
                  buildtype := 'L';
11993
            END;
11994
 
11995
            -- Insert Dependencies
11996
            update_package_dependency (pvid,
11997
                                       pkgname,
11998
                                       pkgversion,
11999
                                       buildtype,
12000
                                       userid,
12001
 
12002
                                      );
12003
         END LOOP;
12004
      END;
12005
   END;
12006
 
12007
/*-------------------------------------------------------------------------------------------------------*/
12008
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
12009
      RETURN VARCHAR2
12010
   IS
12011
      pkgversion   VARCHAR2 (4000);
12012
   BEGIN
12013
      BEGIN
12014
         SELECT pv.pkg_version
12015
           INTO pkgversion
12016
           FROM PACKAGES pkg, release_content rc, package_versions pv
12017
          WHERE pv.pv_id = rc.pv_id
12018
            AND pkg.pkg_id = pv.pkg_id
12019
            AND pkg.pkg_name = pkgname
12020
            AND rc.rtag_id = rtagid;
12021
 
12022
         RETURN pkgversion;
12023
      END;
12024
   END;
12025
 
12026
/*-------------------------------------------------------------------------------------------------------*/
12027
PROCEDURE CQ_TEST IS
12028
 
12029
  INPUT NUMBER(8,2);
12030
  RESULT VARCHAR2(50);
12031
BEGIN
12032
  INPUT := 33558440;
12033
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
12034
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
12035
 
12036
 
12037
END;
12038
/*-------------------------------------------------------------------------------------------------------*/
12039
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
12040
 
12041
   projId NUMBER;
12042
   projIdDB NUMBER;
12043
   TOTAL NUMBER;
12044
   AUTO_TOTAL NUMBER;
12045
   rtagIdDB NUMBER;
12046
 
12047
   BEGIN
12048
   		SELECT count(*) INTO TOTAL 
12049
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12050
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
12051
 
12052
		SELECT count(*) INTO AUTO_TOTAL 
12053
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12054
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
12055
		and rc.rtag_id = RtagId;
12056
 
12057
		BEGIN
12058
			SELECT RTAG_ID INTO rtagIdDB
12059
			FROM DASH_BOARD
12060
			WHERE RTAG_ID = RtagId;
12061
 
12062
			SELECT PROJ_ID INTO projIdDB
12063
			FROM DASH_BOARD
12064
			WHERE RTAG_ID = RtagId;
12065
            EXCEPTION
12066
               WHEN NO_DATA_FOUND
12067
			   THEN	rtagIdDB := '';
12068
 
12069
		END; 			
12070
 
12071
		IF rtagIdDB IS NULL THEN
12072
			SELECT PROJ_ID INTO projId
12073
			FROM RELEASE_TAGS
12074
			WHERE RTAG_ID = RtagId;
12075
 
12076
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
12077
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
12078
		ELSE
12079
			UPDATE DASH_BOARD
12080
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
12081
				AUTOMATED_PACKAGES = AUTO_TOTAL,
12082
				TOTAL_PACKAGES = TOTAL
12083
			WHERE PROJ_ID = projIdDB
12084
			AND RTAG_ID = rtagIdDB; 	
12085
		END IF;
12086
 
12087
 
12088
 
12089
 
12090
 
12091
 
12092
   END;
12093
 
12094
 
12095
/*-------------------------------------------------------------------------------------------------------*/   
12096
END pk_rmapi_test;
12097
/
12098
 
12099
CREATE OR REPLACE PACKAGE BODY PK_APP_UTILS IS
12100
 
12101
/*
12102
------------------------------
12103
||  Last Modified:  S.Vukovic
12104
||  Modified Date:  26/Apr/2005
12105
||  Body Version:   1.0
12106
------------------------------
12107
*/
12108
 
12109
 
12110
/*-------------------------------------------------------------------------------------------------------*/
12111
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
12112
 
12113
 
12114
BEGIN
12115
 
12116
 
12117
	IF (NOT RtagId IS NULL) THEN
12118
		-- Case with RTAG_ID present
12119
		OPEN records FOR
12120
		SELECT rt.PROJ_ID,
12121
			   rt.RTAG_ID AS RTAG_ID
12122
		  FROM RELEASE_TAGS rt
12123
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
12124
 
12125
	ELSIF (NOT ProjId IS NULL) THEN
12126
		-- Case with PROJ_ID present
12127
		OPEN records FOR
12128
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
12129
			   -1 AS RTAG_ID
12130
		  FROM DUAL;
12131
 
12132
	ELSE
12133
		-- Case with none present
12134
		OPEN records FOR
12135
		SELECT -1 AS PROJ_ID,
12136
			   -1 AS RTAG_ID
12137
		  FROM DUAL;
12138
 
12139
	END IF;
12140
 
12141
 
12142
 
12143
 
12144
   	--RETURN records;
12145
 
12146
END;
12147
/*-------------------------------------------------------------------------------------------------------*/
12148
END PK_APP_UTILS;
12149
/
12150
 
12151
CREATE OR REPLACE PACKAGE BODY PK_RELEASE_TEST IS
12152
 
12153
 
12154
/*
12155
------------------------------
12156
||  Last Modified:  S.Vukovic
12157
||  Modified Date:  12/Sep/2005
12158
||  Body Version:   3.0
12159
------------------------------
12160
*/
12161
 
12162
 
12163
/*-------------------------------------------------------------------------------------------------------*/
12164
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
12165
 
12166
RtagId NUMBER;
12167
ParentRtagId NUMBER;
12168
RecCount NUMBER := 0;
12169
 
12170
 
12171
BEGIN
12172
	/*--------------- Business Rules Here -------------------*/
12173
	-- Check for missing parameters
12174
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
12175
	THEN
12176
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
12177
 
12178
	END IF;
12179
 
12180
 
12181
	-- Check for duplicate Release Names
12182
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12183
	  FROM RELEASE_TAGS rt
12184
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12185
	   AND rt.PROJ_ID = nProjId;
12186
 
12187
	IF (RecCount > 0) THEN
12188
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12189
	END IF;
12190
	/*-------------------------------------------------------*/
12191
 
12192
 
12193
	-- Get rtag_id
12194
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
12195
 
12196
 
12197
 
12198
	-- Get Parent RtagId
12199
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
12200
 
12201
 
12202
	-- Create new release
12203
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
12204
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
12205
							   PARENT_RTAG_ID, PROJ_ID )
12206
	VALUES ( RtagId, 
12207
			 sReleaseName, 
12208
			 sReleaseComments,
12209
			 ORA_SYSDATE,
12210
			 nUserId,
12211
			 'N',
12212
			 'N',
12213
			 0,
12214
			 ParentRtagId,
12215
			 nProjId );
12216
 
12217
	-- Update display Order
12218
	UPDATE_DISPLAY_ORDER ( nProjId );
12219
 
12220
	/* Log Project Action */
12221
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
12222
 
12223
 
12224
	-- Import Release Contents
12225
	IF (NOT nSourceRtagId IS NULL) THEN
12226
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
12227
 
12228
	END IF;
12229
 
12230
 
12231
 
12232
END;
12233
/*-------------------------------------------------------------------------------------------------------*/
12234
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
12235
 
12236
 
12237
BEGIN
12238
 
12239
 
12240
	/*--------------- Business Rules Here -------------------*/
12241
	/*-------------------------------------------------------*/
12242
 
12243
	UPDATE RELEASE_TAGS urt SET
12244
	urt.DISPLAY_ORDER = (
12245
						SELECT qry.REC_NUM
12246
						  FROM (	
12247
								SELECT rel.*, ROWNUM AS REC_NUM
12248
								  FROM (
12249
 
12250
								  		SELECT rt.RTAG_ID, 
12251
											   rt.DISPLAY_ORDER,
12252
										       DECODE( rt.PARENT_RTAG_ID, 
12253
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
12254
										  FROM RELEASE_TAGS rt
12255
										 WHERE rt.PROJ_ID = nProjId 
12256
 
12257
								  		) rel
12258
								START WITH rel.PARENT_RTAG_ID = 0
12259
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
12260
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
12261
								) qry
12262
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
12263
						)
12264
	WHERE urt.PROJ_ID = nProjId;
12265
 
12266
END;
12267
/*-------------------------------------------------------------------------------------------------------*/
12268
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
12269
 
12270
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
12271
	SeqNum NUMBER;
12272
 
12273
BEGIN
12274
 
12275
 
12276
	/*--------------- Business Rules Here -------------------*/
12277
	/*-------------------------------------------------------*/
12278
 
12279
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
12280
 
12281
	-- Set start sequence number
12282
	SeqNum := 1;
12283
 
12284
	FOR i IN 1..nIdCollector.COUNT
12285
	LOOP
12286
 
12287
		-- Update new display order
12288
		UPDATE RELEASE_TAGS rt SET
12289
			rt.DISPLAY_ORDER = SeqNum
12290
		 WHERE rt.PROJ_ID = nProjId
12291
		   AND rt.RTAG_ID = nIdCollector(i);
12292
 
12293
		SeqNum := SeqNum + 1;
12294
 
12295
	END LOOP;
12296
 
12297
END;
12298
/*-------------------------------------------------------------------------------------------------------*/
12299
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
12300
 
12301
RecCount NUMBER := 0;
12302
ProjId NUMBER;
12303
 
12304
BEGIN
12305
 
12306
 
12307
	/*--------------- Business Rules Here -------------------*/
12308
	-- Check for missing parameters
12309
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
12310
	THEN
12311
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
12312
 
12313
	END IF;
12314
 
12315
 
12316
	-- Check for duplicate Release Names
12317
	SELECT rt.PROJ_ID INTO ProjId
12318
	  FROM RELEASE_TAGS rt
12319
	 WHERE rt.RTAG_ID = nRtagId;
12320
 
12321
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12322
	  FROM RELEASE_TAGS rt
12323
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12324
	   AND rt.RTAG_ID != nRtagId
12325
	   AND rt.PROJ_ID = ProjId;
12326
 
12327
 
12328
	IF (RecCount > 0) THEN
12329
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12330
	END IF;
12331
	/*-------------------------------------------------------*/
12332
 
12333
 
12334
 
12335
	-- Update release details
12336
	UPDATE RELEASE_TAGS rt SET
12337
	rt.RTAG_NAME = sReleaseName,
12338
	rt.DESCRIPTION = sReleaseComments,
12339
	rt.PARENT_RTAG_ID = nParentRtagId,
12340
	rt.ASSOC_MASS_REF = nMASSRtagId,
12341
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
12342
	WHERE rt.RTAG_ID = nRtagId; 
12343
 
12344
	-- Update display Order
12345
	UPDATE_DISPLAY_ORDER ( ProjId );
12346
 
12347
	/* Log Project Action */
12348
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
12349
 
12350
 
12351
 
12352
 
12353
END;
12354
/*-------------------------------------------------------------------------------------------------------*/
12355
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12356
 
12357
	RecCount NUMBER := 0;
12358
	sReleaseId VARCHAR2(4000);
12359
	ProjId NUMBER;
12360
 
12361
BEGIN
12362
	/*--------------- Business Rules Here -------------------*/
12363
	IF (nRtagId IS NULL) 
12364
	THEN
12365
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12366
	END IF;
12367
 
12368
 
12369
 
12370
	-- Check for any kids
12371
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
12372
	  FROM RELEASE_TAGS rt
12373
	 WHERE rt.PARENT_RTAG_ID = nRtagId
12374
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
12375
 
12376
	IF (RecCount > 0) THEN
12377
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
12378
	END IF; 
12379
	/*-------------------------------------------------------*/
12380
 
12381
	-- Clear the release contents
12382
	Clean_Release_Contents ( nRtagId, nUserId );
12383
 
12384
	/* Log Project Action */
12385
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
12386
	  FROM RELEASE_TAGS rt
12387
	 WHERE rt.RTAG_ID = nRtagId;
12388
 
12389
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
12390
 
12391
 
12392
	-- Remove Release
12393
	DELETE 
12394
	  FROM RELEASE_TAGS rt
12395
	 WHERE rt.RTAG_ID = nRtagId;
12396
 
12397
 
12398
 
12399
END;
12400
/*-------------------------------------------------------------------------------------------------------*/
12401
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
12402
 
12403
	sSourceLocation VARCHAR2(4000);
12404
	sTargetLocation VARCHAR2(4000);
12405
	ProjId NUMBER;
12406
	cReleaseMode CHAR(1);
12407
 
12408
 
12409
BEGIN
12410
	/*--------------- Business Rules Here -------------------*/
12411
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
12412
	THEN
12413
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
12414
	END IF;
12415
 
12416
	IF (nSourceRtagId = nTargetRtagId) THEN
12417
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
12418
	END IF;
12419
 
12420
 
12421
	-- Check if Target release is in OPEN mode
12422
	SELECT rt.OFFICIAL  INTO  cReleaseMode
12423
	  FROM RELEASE_TAGS rt
12424
	 WHERE rt.RTAG_ID = nTargetRtagId;
12425
 
12426
	IF (cReleaseMode != 'N') THEN
12427
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
12428
	END IF;	 
12429
 
12430
	/*-------------------------------------------------------*/
12431
 
12432
	-- Clean target contents
12433
	Clean_Release_Contents ( nTargetRtagId, nUserId );
12434
 
12435
 
12436
	-- Import Released Area Contents
12437
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
12438
	SELECT nTargetRtagId AS RTAG_ID, 
12439
		   rc.PV_ID, 
12440
		   rc.BASE_VIEW_ID, 
12441
		   rc.INSERT_STAMP, 
12442
		   rc.INSERTOR_ID, 
12443
		   rc.PKG_STATE
12444
	  FROM RELEASE_CONTENT rc
12445
	 WHERE rc.RTAG_ID = nSourceRtagId;
12446
 
12447
 
12448
	-- Import Ignore Warning states
12449
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
12450
	SELECT nTargetRtagId AS RTAG_ID,
12451
	       igw.PV_ID,
12452
	       igw.DPV_ID
12453
	  FROM IGNORE_WARNINGS igw
12454
	 WHERE igw.rtag_id = nSourceRtagId;
12455
 
12456
 
12457
	/* Log Project Action */
12458
	-- Get Source Location
12459
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
12460
	  FROM RELEASE_TAGS rt,
12461
	  	   PROJECTS pr
12462
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12463
	   AND rt.RTAG_ID = nSourceRtagId;
12464
 
12465
	-- Get Target Location
12466
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
12467
	  FROM RELEASE_TAGS rt,
12468
	  	   PROJECTS pr
12469
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12470
	   AND rt.RTAG_ID = nTargetRtagId;	   
12471
 
12472
	-- Get project id   
12473
	SELECT rt.PROJ_ID  INTO  ProjId
12474
	  FROM RELEASE_TAGS rt
12475
	 WHERE rt.RTAG_ID = nTargetRtagId;   
12476
 
12477
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
12478
 
12479
 
12480
END;
12481
/*-------------------------------------------------------------------------------------------------------*/
12482
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12483
 
12484
	RecCount NUMBER;
12485
 
12486
BEGIN
12487
	/*--------------- Business Rules Here -------------------*/
12488
	IF (nRtagId IS NULL) 
12489
	THEN
12490
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12491
	END IF;
12492
 
12493
 
12494
	-- Check if other release references this release
12495
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
12496
	  FROM RELEASE_LINKS rl
12497
	 WHERE rl.REF_RTAG_ID = nRtagId;
12498
 
12499
	IF (RecCount > 0) THEN
12500
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
12501
	END IF; 	
12502
	/*-------------------------------------------------------*/
12503
 
12504
	-- Delete Release links
12505
	DELETE 
12506
	  FROM RELEASE_LINKS rl
12507
	 WHERE rl.RTAG_ID = nRtagId;
12508
 
12509
	-- Delete ignore warning
12510
	DELETE 
12511
	  FROM IGNORE_WARNINGS iw
12512
	 WHERE iw.RTAG_ID = nRtagId;
12513
 
12514
 
12515
	-- Delete Build Order cached calculations	  
12516
	DELETE
12517
	  FROM BUILD_ORDER bo
12518
	 WHERE bo.RTAG_ID = nRtagId;
12519
 
12520
 
12521
	-- Delete Notification History
12522
	DELETE
12523
	  FROM NOTIFICATION_HISTORY nh
12524
	 WHERE nh.RTAG_ID = nRtagId;
12525
 
12526
 
12527
	-- Delete Released Area Contents
12528
	DELETE
12529
	  FROM RELEASE_CONTENT rc
12530
	 WHERE rc.RTAG_ID = nRtagId;
12531
 
12532
 
12533
	-- Delete Work In Progress Area Contents
12534
	DELETE
12535
	  FROM WORK_IN_PROGRESS wip
12536
	 WHERE wip.RTAG_ID = nRtagId;
12537
 
12538
 
12539
	-- Delete Pending Area Contents
12540
	DELETE 
12541
	  FROM PLANNED pl
12542
	 WHERE pl.RTAG_ID = nRtagId;
12543
 
12544
 
12545
END;
12546
/*-------------------------------------------------------------------------------------------------------*/
12547
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
12548
 
12549
	nSourceParentRtagId NUMBER;
12550
 
12551
BEGIN
12552
	/*--------------- Business Rules Here -------------------*/
12553
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
12554
	THEN
12555
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
12556
	END IF;
12557
	/*-------------------------------------------------------*/
12558
 
12559
 
12560
	IF ( nSourceRtagId IS NULL ) THEN
12561
		-- Create new on main branch
12562
		RETURN nRtagId;
12563
 
12564
	ELSE
12565
		-- Create from source rtag_id
12566
 
12567
		-- Find parent of Source RtagId
12568
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
12569
		  FROM RELEASE_TAGS rt
12570
		 WHERE rt.RTAG_ID = nSourceRtagId;
12571
 
12572
		IF (UPPER(cIsBranch) = 'Y') THEN
12573
			RETURN nSourceRtagId;
12574
		ELSE
12575
			IF (nSourceRtagId = nSourceParentRtagId) THEN
12576
				RETURN nRtagId;
12577
			ELSE
12578
				RETURN nSourceParentRtagId;
12579
			END IF;
12580
		END IF;	
12581
 
12582
 
12583
	END IF;
12584
 
12585
 
12586
END;
12587
/*-------------------------------------------------------------------------------------------------------*/
12588
 
12589
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
12590
-- 							 sNextVersion OUT VARCHAR2,
12591
-- 							 nNextLifeCycle OUT NUMBER,
12592
-- 							 nParentRtagId OUT NUMBER,
12593
-- 							 nProjId IN NUMBER ) IS
12594
-- 							
12595
-- SourceBranchCount NUMBER;
12596
-- ProjRootVersion VARCHAR2(4000);
12597
-- LastLifeCycle NUMBER;
12598
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
12599
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
12600
-- 
12601
-- SourceProjId NUMBER; 
12602
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
12603
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
12604
-- 
12605
-- BEGIN
12606
-- 	/*--------------- Business Rules Here -------------------*/
12607
-- 	/*-------------------------------------------------------*/
12608
-- 	
12609
-- 	   
12610
-- 	BEGIN
12611
-- 		-- Get Project root version
12612
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
12613
-- 		  FROM RELEASE_TAGS rt
12614
-- 		 WHERE rt.PROJ_ID = nProjId
12615
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
12616
-- 	   
12617
-- 		EXCEPTION
12618
-- 		WHEN NO_DATA_FOUND THEN
12619
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
12620
-- 	END;		   
12621
-- 	
12622
-- 	
12623
-- 	
12624
-- 	 
12625
-- 	BEGIN
12626
-- 		-- Get info for source rtagid
12627
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
12628
-- 		  FROM RELEASE_TAGS rt
12629
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
12630
-- 	   
12631
-- 		EXCEPTION
12632
-- 		WHEN NO_DATA_FOUND THEN
12633
-- 		SourceProjId := NULL;
12634
-- 		SourceVersion := NULL;
12635
-- 		SourceLifeCycle := NULL;
12636
-- 	END;	  
12637
-- 	
12638
-- 	
12639
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
12640
-- 	
12641
-- 		/* Blank Release Required  OR  Release imported from other project */
12642
-- 		
12643
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
12644
-- 			/* No Releases found in the project, hence calculate next version available.  */
12645
-- 			
12646
-- 			-- Set parent rtag
12647
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
12648
-- 			
12649
-- 			
12650
-- 			BEGIN
12651
-- 				-- Get Next Available Global Root Version 
12652
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
12653
-- 				  FROM RELEASE_TAGS rt
12654
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
12655
-- 				
12656
-- 				-- Set Next Rtag Version
12657
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
12658
-- 				
12659
-- 				-- Restart Lifecycle
12660
-- 				nNextLifeCycle := 0;
12661
-- 				
12662
-- 				
12663
-- 				EXCEPTION
12664
-- 				WHEN NO_DATA_FOUND THEN
12665
-- 				-- Release Manager has no releases, hence start from 1
12666
-- 				sNextVersion := '1';
12667
-- 				nNextLifeCycle := 0;
12668
-- 				
12669
-- 			END;
12670
-- 			
12671
-- 			
12672
-- 					
12673
-- 		ELSE
12674
-- 			/* Releases found in this project. */
12675
-- 							   
12676
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
12677
-- 			  FROM (
12678
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
12679
-- 					  FROM RELEASE_TAGS rt
12680
-- 					 WHERE rt.PROJ_ID = nProjId
12681
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
12682
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
12683
-- 			  		) qry
12684
-- 			 WHERE ROWNUM = 1;		
12685
-- 
12686
-- 			
12687
-- 			-- Set same Rtag Version
12688
-- 			sNextVersion := ProjRootVersion;
12689
-- 			
12690
-- 			-- Increase Lifecycle
12691
-- 			nNextLifeCycle := LastLifeCycle + 1;
12692
-- 		
12693
-- 		END IF;
12694
-- 				
12695
-- 	
12696
-- 		
12697
-- 	ELSE
12698
-- 		/* Create Release From other release within this project */
12699
-- 		
12700
-- 		-- Set parent id
12701
-- 		nParentRtagId := nSourceRtagId;
12702
-- 		
12703
-- 		
12704
-- 		-- Get number of source branches
12705
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
12706
-- 		  FROM RELEASE_TAGS rt
12707
-- 		 WHERE rt.PROJ_ID = nProjId
12708
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
12709
-- 		   
12710
-- 		   
12711
-- 		IF SourceBranchCount = 0 THEN
12712
-- 			/* Release is Head (i.e. Tip on its branch ) */
12713
-- 			
12714
-- 			-- Set Next Rtag Version
12715
-- 			sNextVersion := SourceVersion;
12716
-- 			
12717
-- 			-- Increase Lifecycle
12718
-- 			nNextLifeCycle := SourceLifeCycle + 1;
12719
-- 			
12720
-- 			
12721
-- 		ELSIF SourceBranchCount = 1 THEN
12722
-- 			/* Release IS NOT Head, but can be branched */
12723
-- 			
12724
-- 			-- Set Next Rtag Version
12725
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
12726
-- 			
12727
-- 			-- Reset Lifecycle to 1
12728
-- 			nNextLifeCycle := 1;
12729
-- 			
12730
-- 			
12731
-- 		ELSE	
12732
-- 			-- Limit of two branches is reached
12733
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
12734
-- 			
12735
-- 		END IF;	
12736
-- 			
12737
-- 			
12738
-- 		
12739
-- 		
12740
-- 		
12741
-- 	
12742
-- 	END IF;
12743
-- 	
12744
-- 		
12745
-- END;
12746
 
12747
/*-------------------------------------------------------------------------------------------------------*/
12748
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12749
 
12750
	IsBaseView CHAR(1);
12751
 
12752
BEGIN
12753
 
12754
	-- Check if the view is BASE VIEW
12755
	SELECT vi.BASE_VIEW INTO IsBaseView
12756
	  FROM VIEWS vi
12757
	 WHERE vi.VIEW_ID = ViewId;
12758
 
12759
	IF (IsBaseView = 'Y') THEN 
12760
		-- Get Base view content
12761
		OPEN RecordSet FOR
12762
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12763
			   pv.pv_id, 
12764
			   pkg.pkg_name, 
12765
			   pv.pkg_version, 
12766
			   pv.dlocked, 
12767
			   pv.pv_description,
12768
			   pv.BUILD_TYPE
12769
		  FROM release_content rel,
12770
		       packages pkg,
12771
		       package_versions pv
12772
		 WHERE pv.pkg_id = pkg.pkg_id
12773
		   AND rel.pv_id = pv.pv_id
12774
		   AND rel.BASE_VIEW_ID = ViewId
12775
		   AND rel.RTAG_ID = RtagId
12776
		 ORDER BY UPPER(pkg.PKG_NAME);
12777
 
12778
	ELSE	 
12779
 
12780
	 	-- Get non base view content
12781
		OPEN RecordSet FOR
12782
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12783
			   pv.pv_id, 
12784
			   pkg.pkg_name, 
12785
			   pv.pkg_version, 
12786
			   pv.dlocked, 
12787
			   pv.pv_description,
12788
			   pv.BUILD_TYPE
12789
		  FROM release_content rel,
12790
		       packages pkg,
12791
		       package_versions pv,
12792
			   VIEW_DEF vd
12793
		 WHERE pv.pkg_id = pkg.pkg_id
12794
		   AND rel.pv_id = pv.pv_id
12795
		   AND vd.VIEW_ID = ViewId
12796
		   AND vd.PKG_ID = pv.PKG_ID
12797
		   AND rel.RTAG_ID = RtagId
12798
		 ORDER BY UPPER(pkg.PKG_NAME);		 
12799
 
12800
	END IF;	 	 
12801
 
12802
 
12803
 
12804
 
12805
END;
12806
/*-------------------------------------------------------------------------------------------------------*/
12807
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12808
 
12809
	ReleaseLocation VARCHAR2(4000);
12810
	sPkgVersion VARCHAR2(4000);
12811
	nPkgId NUMBER;
12812
	sVExt VARCHAR2(4000);
12813
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
12814
 
12815
	-- Find package for replacement
12816
	CURSOR curReplacePkg IS
12817
    SELECT pv.PV_ID
12818
	  FROM RELEASE_CONTENT rc,
12819
	  	   PACKAGE_VERSIONS pv
12820
	 WHERE rc.PV_ID = pv.PV_ID
12821
	   AND rc.RTAG_ID = RtagId
12822
	   AND pv.PKG_ID = nPkgId
12823
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
12824
    recReplacePkg curReplacePkg%ROWTYPE;
12825
 
12826
BEGIN
12827
 
12828
	-- Get is_patch, pkg_id and v_ext
12829
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
12830
	  FROM PACKAGE_VERSIONS pv
12831
	 WHERE pv.PV_ID = newPvId;
12832
 
12833
 
12834
	-- Never put patch in relesed area
12835
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
12836
 
12837
		-- Try to get a package to be replaced with this new one.
12838
		-- Use unique constraint of PKG_ID and V_EXT
12839
		OPEN curReplacePkg;
12840
	    FETCH curReplacePkg INTO recReplacePkg;
12841
 
12842
	    IF curReplacePkg%FOUND THEN
12843
			-- Replace package
12844
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
12845
 
12846
		ELSE
12847
			-- Add new package
12848
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
12849
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
12850
 
12851
 
12852
		    /* LOG ACTION */
12853
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12854
			  FROM PROJECTS proj,
12855
			  	   RELEASE_TAGS rt
12856
			 WHERE rt.PROJ_ID = proj.PROJ_ID
12857
			   AND rt.RTAG_ID = RtagId;
12858
 
12859
			SELECT pv.PKG_VERSION INTO sPkgVersion
12860
			  FROM PACKAGE_VERSIONS pv
12861
			 WHERE pv.PV_ID = newPvId;
12862
 
12863
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12864
 
12865
 
12866
		END IF;
12867
 
12868
		CLOSE curReplacePkg;
12869
 
12870
	END IF;
12871
 
12872
END;
12873
/*-------------------------------------------------------------------------------------------------------*/
12874
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12875
 
12876
	ReleaseLocation VARCHAR2(4000);
12877
	sPkgVersion VARCHAR2(4000);
12878
 
12879
BEGIN
12880
 
12881
	-- Replace Package
12882
    UPDATE RELEASE_CONTENT
12883
       SET pv_id = newPvId,
12884
           insert_stamp = Ora_Sysdate,
12885
           insertor_id = UserId
12886
     WHERE rtag_id = RtagId
12887
       AND pv_id = oldPvId;
12888
 
12889
 
12890
    /* LOG ACTION */
12891
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12892
	  FROM PROJECTS proj,
12893
	  	   RELEASE_TAGS rt
12894
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12895
	   AND rt.RTAG_ID = RtagId;
12896
 
12897
	SELECT pv.PKG_VERSION INTO sPkgVersion
12898
	  FROM PACKAGE_VERSIONS pv
12899
	 WHERE pv.PV_ID = newPvId;
12900
 
12901
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
12902
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12903
 
12904
END;
12905
/*-------------------------------------------------------------------------------------------------------*/
12906
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12907
	ReleaseLocation VARCHAR2(4000);
12908
 
12909
BEGIN
12910
 
12911
 
12912
	-- Delete old package
12913
	DELETE
12914
	  FROM RELEASE_CONTENT rc
12915
	 WHERE rc.PV_ID = PvId
12916
	   AND rc.RTAG_ID = RtagId;
12917
 
12918
 
12919
	/* LOG ACTION */
12920
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12921
	  FROM PROJECTS proj,
12922
	       RELEASE_TAGS rt
12923
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12924
	   AND rt.RTAG_ID = RtagId;
12925
 
12926
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12927
 
12928
 
12929
END;
12930
/*-------------------------------------------------------------------------------------------------------*/
12931
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12932
	ReleaseLocation VARCHAR2(4000);
12933
 
12934
	CURSOR curMatchingPackage IS
12935
    SELECT mpv.PV_ID
12936
	  FROM RELEASE_CONTENT rc,
12937
	  	   PACKAGE_VERSIONS mpv,
12938
		   PACKAGE_VERSIONS pv
12939
	 WHERE rc.PV_ID = mpv.PV_ID
12940
	   AND rc.RTAG_ID = RtagId
12941
	   AND pv.PV_ID = PvId
12942
	   AND pv.PKG_ID = mpv.PKG_ID
12943
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
12944
    recMatchingPackage curMatchingPackage%ROWTYPE;
12945
 
12946
BEGIN
12947
 
12948
	OPEN curMatchingPackage;
12949
    FETCH curMatchingPackage INTO recMatchingPackage;
12950
 
12951
    IF curMatchingPackage%FOUND THEN
12952
		-- Delete old package
12953
		DELETE
12954
		  FROM RELEASE_CONTENT rc
12955
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
12956
		   AND rc.RTAG_ID = RtagId;
12957
 
12958
 
12959
		/* LOG ACTION */
12960
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12961
		  FROM PROJECTS proj,
12962
		  	   RELEASE_TAGS rt
12963
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12964
		   AND rt.RTAG_ID = RtagId;
12965
 
12966
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12967
 
12968
	END IF;
12969
 
12970
 
12971
	CLOSE curMatchingPackage;
12972
 
12973
 
12974
 
12975
 
12976
END;
12977
/*-------------------------------------------------------------------------------------------------------*/
12978
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12979
 
12980
	ReturnValue NUMBER;
12981
 
12982
BEGIN
12983
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
12984
	  FROM RELEASE_CONTENT rc
12985
	 WHERE rc.RTAG_ID = RtagId
12986
	   AND rc.PV_ID = PvId;
12987
 
12988
	RETURN ReturnValue;
12989
END;
12990
/*-------------------------------------------------------------------------------------------------------*/
12991
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
12992
 
12993
BEGIN
12994
	-- Reset Ignore warnings up-the-tree
12995
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
12996
 
12997
	-- Refresh Package states
12998
	TOUCH_RELEASE ( RtagId );
12999
 
13000
END;
13001
/*-------------------------------------------------------------------------------------------------------*/
13002
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
13003
	CURSOR curReleases IS
13004
    SELECT rc.RTAG_ID
13005
	  FROM RELEASE_CONTENT rc
13006
	 WHERE rc.PV_ID = PvId;
13007
    recReleases curReleases%ROWTYPE;
13008
 
13009
BEGIN
13010
 
13011
	OPEN curReleases;
13012
    FETCH curReleases INTO recReleases;
13013
 
13014
	WHILE curReleases%FOUND
13015
	LOOP
13016
 
13017
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
13018
 
13019
		FETCH curReleases INTO recReleases;
13020
	END LOOP;
13021
 
13022
	CLOSE curReleases;	
13023
 
13024
END;
13025
/*-------------------------------------------------------------------------------------------------------*/
13026
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
13027
 
13028
BEGIN
13029
 
13030
	UPDATE RELEASE_CONTENT rc SET
13031
	rc.BASE_VIEW_ID = NewViewId
13032
	WHERE rc.PV_ID = PvId
13033
	  AND rc.RTAG_ID = RtagId;
13034
 
13035
END;
13036
/*-------------------------------------------------------------------------------------------------------*/
13037
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
13038
 
13039
	RowCount NUMBER;
13040
 
13041
 
13042
	CURSOR curPackageClash IS
13043
	SELECT pkg.PKG_NAME,
13044
		   er.*
13045
	  FROM (
13046
 
13047
	  		/* Get existing referenced packages */
13048
			SELECT pv.PKG_ID,
13049
			       pv.V_EXT
13050
			  FROM RELEASE_LINKS rl,
13051
			  	   RELEASE_CONTENT rc,
13052
			  	   PACKAGE_VERSIONS pv
13053
			 WHERE rl.RTAG_ID = nRtagId
13054
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
13055
			   AND rc.PV_ID = pv.PV_ID
13056
 
13057
	  	    ) er,
13058
			(
13059
 
13060
			/* Get current reference packages */
13061
			SELECT pv.PKG_ID,
13062
			       pv.V_EXT
13063
			  FROM RELEASE_CONTENT rc,
13064
			  	   PACKAGE_VERSIONS pv
13065
			 WHERE rc.RTAG_ID = nRefRtagId
13066
			   AND rc.PV_ID = pv.PV_ID    
13067
 
13068
			) cr,
13069
			PACKAGES PKG
13070
	 WHERE er.PKG_ID = cr.PKG_ID
13071
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13072
	   AND er.PKG_ID = pkg.PKG_ID;
13073
 
13074
	recPackageClash curPackageClash%ROWTYPE;	   
13075
 
13076
BEGIN
13077
	/*--------------- Business Rules Here -------------------*/
13078
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13079
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13080
	END IF;
13081
 
13082
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13083
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13084
	END IF;
13085
	/*-------------------------------------------------------*/
13086
	ProblemString := NULL;
13087
 
13088
 
13089
	-- Check if release already has references
13090
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
13091
	  FROM RELEASE_LINKS rl
13092
	 WHERE rl.RTAG_ID = nRtagId;	
13093
 
13094
 
13095
	IF RowCount > 0 THEN
13096
		-- Found existing references
13097
 
13098
		-- Make sure there is no package clashes
13099
		OPEN curPackageClash;
13100
	    FETCH curPackageClash INTO recPackageClash;
13101
 
13102
		IF curPackageClash%FOUND THEN
13103
 
13104
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
13105
 
13106
			WHILE curPackageClash%FOUND
13107
			LOOP
13108
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
13109
 
13110
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
13111
 
13112
				FETCH curPackageClash INTO recPackageClash;
13113
			END LOOP;
13114
 
13115
		END IF;
13116
 
13117
		CLOSE curPackageClash;
13118
 
13119
 
13120
	ELSE
13121
		-- No references found, hence reference a release
13122
 
13123
 
13124
		-- Remove exising package from this release to be referenced
13125
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
13126
 
13127
 
13128
		-- Add new linked packages to release
13129
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13130
		SELECT nRtagId,
13131
			   rc.PV_ID,
13132
			   rc.BASE_VIEW_ID, 
13133
			   rc.INSERT_STAMP, 
13134
			   rc.INSERTOR_ID, 
13135
			   rc.PKG_STATE
13136
		  FROM RELEASE_CONTENT rc
13137
		 WHERE rc.RTAG_ID = nRefRtagId;
13138
 
13139
 
13140
 
13141
		-- Copy ignore warnings for referenced packages
13142
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
13143
		SELECT nRtagId, 
13144
			   iw.PV_ID, 
13145
			   iw.DPV_ID, 
13146
			   iw.IS_PATCH_IGNORE
13147
		  FROM IGNORE_WARNINGS iw,
13148
		  	   RELEASE_CONTENT rc
13149
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
13150
		   AND iw.PV_ID = rc.PV_ID
13151
		   AND rc.RTAG_ID = nRefRtagId;	 
13152
 
13153
 
13154
 
13155
		-- Reference release 
13156
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
13157
		VALUES ( nRtagId, nRefRtagId );		 
13158
 
13159
 
13160
		-- Refresh Package states
13161
		TOUCH_RELEASE ( nRtagId );
13162
 
13163
	END IF;	 
13164
 
13165
 
13166
END;
13167
/*-------------------------------------------------------------------------------------------------------*/
13168
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
13169
 
13170
 
13171
BEGIN
13172
	/*--------------- Business Rules Here -------------------*/
13173
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13174
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13175
	END IF;
13176
 
13177
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13178
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13179
	END IF;
13180
 
13181
	/*-------------------------------------------------------*/
13182
 
13183
 
13184
	-- Remove ignore warnings for those packages who use referenced packages
13185
	DELETE FROM IGNORE_WARNINGS iw
13186
	 WHERE iw.RTAG_ID = nRtagId
13187
	   AND iw.DPV_ID IN (
13188
	   						SELECT dep.DPV_ID
13189
							  FROM (
13190
 
13191
									/* Get referenced packages */
13192
									SELECT pv.PKG_ID,
13193
									       pv.V_EXT
13194
									  FROM RELEASE_CONTENT rc,
13195
									  	   PACKAGE_VERSIONS pv
13196
									 WHERE rc.RTAG_ID = nRefRtagId
13197
									   AND rc.PV_ID = pv.PV_ID    
13198
 
13199
									) cr,
13200
									(
13201
 
13202
									/* Get all dependencies for current release */
13203
									SELECT DISTINCT 
13204
										   pv.PKG_ID,
13205
										   pv.V_EXT,
13206
										   dep.DPV_ID
13207
									  FROM RELEASE_CONTENT rc,
13208
										   PACKAGE_DEPENDENCIES dep,
13209
										   PACKAGE_VERSIONS pv
13210
									 WHERE rc.RTAG_ID = nRtagId
13211
									   AND rc.PV_ID = dep.PV_ID		
13212
									   AND dep.PV_ID = pv.PV_ID	   
13213
 
13214
									) dep
13215
							 WHERE dep.PKG_ID = cr.PKG_ID
13216
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13217
	   					);  
13218
 
13219
 
13220
 
13221
 
13222
	-- Remove ignore warnings for those package which are going to be replaced with the reference
13223
	DELETE FROM IGNORE_WARNINGS iw
13224
	 WHERE iw.RTAG_ID = nRtagId
13225
	   AND iw.PV_ID IN (
13226
						SELECT pv.PV_ID
13227
						  FROM (
13228
 
13229
								/* Get referenced packages */
13230
								SELECT pv.PKG_ID,
13231
								       pv.V_EXT
13232
								  FROM RELEASE_CONTENT rc,
13233
								  	   PACKAGE_VERSIONS pv
13234
								 WHERE rc.RTAG_ID = nRefRtagId
13235
								   AND rc.PV_ID = pv.PV_ID    
13236
 
13237
								) cr,
13238
								RELEASE_CONTENT rc,
13239
								PACKAGE_VERSIONS pv
13240
						 WHERE pv.PKG_ID = cr.PKG_ID
13241
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13242
						   AND rc.RTAG_ID = nRtagId
13243
						   AND rc.PV_ID = pv.PV_ID
13244
						);			
13245
 
13246
 
13247
 
13248
 
13249
 
13250
	-- Remove matching packages from release
13251
	DELETE FROM RELEASE_CONTENT rc
13252
	 WHERE rc.RTAG_ID = nRtagId
13253
	   AND rc.PV_ID IN (
13254
						SELECT pv.PV_ID
13255
						  FROM (
13256
 
13257
								/* Get referenced packages */
13258
								SELECT pv.PKG_ID,
13259
								       pv.V_EXT
13260
								  FROM RELEASE_CONTENT rc,
13261
								  	   PACKAGE_VERSIONS pv
13262
								 WHERE rc.RTAG_ID = nRefRtagId
13263
								   AND rc.PV_ID = pv.PV_ID    
13264
 
13265
								) cr,
13266
								RELEASE_CONTENT rc,
13267
								PACKAGE_VERSIONS pv
13268
						 WHERE pv.PKG_ID = cr.PKG_ID
13269
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13270
						   AND rc.RTAG_ID = nRtagId
13271
						   AND rc.PV_ID = pv.PV_ID
13272
						);	
13273
 
13274
 
13275
 
13276
 
13277
 
13278
	-- Remove Reference release 
13279
	DELETE 
13280
	  FROM RELEASE_LINKS rl
13281
	 WHERE rl.RTAG_ID = nRtagId
13282
	   AND rl.REF_RTAG_ID = nRefRtagId;
13283
 
13284
 
13285
	-- Refresh Package states
13286
	TOUCH_RELEASE ( nRtagId );
13287
 
13288
 
13289
END;
13290
/*-------------------------------------------------------------------------------------------------------*/
13291
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
13292
 
13293
	cReleaseMode CHAR(1);
13294
	cPvMode CHAR(1);
13295
 
13296
BEGIN
13297
 
13298
	-- Get Release Mode
13299
	SELECT rt.OFFICIAL INTO cReleaseMode
13300
	  FROM RELEASE_TAGS rt
13301
	 WHERE rt.RTAG_ID = RtagId;
13302
 
13303
 
13304
	-- Get Package Mode
13305
	SELECT pv.DLOCKED INTO cPvMode
13306
	  FROM PACKAGE_VERSIONS pv
13307
	 WHERE pv.PV_ID = PvId;	 
13308
 
13309
	-- Only check if package is locked 
13310
	IF (cPvMode = 'Y') THEN
13311
 
13312
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
13313
		THEN
13314
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
13315
 
13316
		END IF;
13317
 
13318
	END IF;	
13319
 
13320
 
13321
END;
13322
/*-------------------------------------------------------------------------------------------------------*/
13323
END PK_RELEASE_TEST;
13324
/
13325
 
13326
CREATE OR REPLACE PACKAGE BODY PK_RELEASE IS
13327
 
13328
 
13329
/*
13330
------------------------------
13331
||  Last Modified:  S.Vukovic
13332
||  Modified Date:  12/Sep/2005
13333
||  Body Version:   3.0
13334
------------------------------
13335
*/
13336
 
13337
 
13338
/*-------------------------------------------------------------------------------------------------------*/
13339
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
13340
 
13341
RtagId NUMBER;
13342
ParentRtagId NUMBER;
13343
RecCount NUMBER := 0;
13344
VtreeId NUMBER;
13345
 
13346
 
13347
BEGIN
13348
	/*--------------- Business Rules Here -------------------*/
13349
	-- Check for missing parameters
13350
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
13351
	THEN
13352
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
13353
 
13354
	END IF;
13355
 
13356
 
13357
	-- Check for duplicate Release Names
13358
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13359
	  FROM RELEASE_TAGS rt
13360
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13361
	   AND rt.PROJ_ID = nProjId;
13362
 
13363
	IF (RecCount > 0) THEN
13364
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13365
	END IF;
13366
	/*-------------------------------------------------------*/
13367
 
13368
 
13369
	-- Get rtag_id
13370
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
13371
 
13372
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
13373
 
13374
 
13375
 
13376
	-- Get Parent RtagId
13377
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
13378
 
13379
 
13380
	-- Create new release
13381
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
13382
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
13383
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
13384
	VALUES ( RtagId, 
13385
			 sReleaseName, 
13386
			 sReleaseComments,
13387
			 ORA_SYSDATE,
13388
			 nUserId,
13389
			 'N',
13390
			 'N',
13391
			 0,
13392
			 ParentRtagId,
13393
			 nProjId,
13394
			 VtreeId );
13395
 
13396
	-- Update display Order
13397
	UPDATE_DISPLAY_ORDER ( nProjId );
13398
 
13399
	/* Log Project Action */
13400
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
13401
 
13402
 
13403
	-- Import Release Contents
13404
	IF (NOT nSourceRtagId IS NULL) THEN
13405
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
13406
 
13407
	END IF;
13408
 
13409
 
13410
 
13411
END;
13412
/*-------------------------------------------------------------------------------------------------------*/
13413
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
13414
 
13415
 
13416
BEGIN
13417
 
13418
 
13419
	/*--------------- Business Rules Here -------------------*/
13420
	/*-------------------------------------------------------*/
13421
 
13422
	UPDATE RELEASE_TAGS urt SET
13423
	urt.DISPLAY_ORDER = (
13424
						SELECT qry.REC_NUM
13425
						  FROM (	
13426
								SELECT rel.*, ROWNUM AS REC_NUM
13427
								  FROM (
13428
 
13429
								  		SELECT rt.RTAG_ID, 
13430
											   rt.DISPLAY_ORDER,
13431
										       DECODE( rt.PARENT_RTAG_ID, 
13432
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
13433
										  FROM RELEASE_TAGS rt
13434
										 WHERE rt.PROJ_ID = nProjId 
13435
 
13436
								  		) rel
13437
								START WITH rel.PARENT_RTAG_ID = 0
13438
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
13439
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
13440
								) qry
13441
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
13442
						)
13443
	WHERE urt.PROJ_ID = nProjId;
13444
 
13445
END;
13446
/*-------------------------------------------------------------------------------------------------------*/
13447
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
13448
 
13449
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
13450
	SeqNum NUMBER;
13451
 
13452
BEGIN
13453
 
13454
 
13455
	/*--------------- Business Rules Here -------------------*/
13456
	/*-------------------------------------------------------*/
13457
 
13458
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
13459
 
13460
	-- Set start sequence number
13461
	SeqNum := 1;
13462
 
13463
	FOR i IN 1..nIdCollector.COUNT
13464
	LOOP
13465
 
13466
		-- Update new display order
13467
		UPDATE RELEASE_TAGS rt SET
13468
			rt.DISPLAY_ORDER = SeqNum
13469
		 WHERE rt.PROJ_ID = nProjId
13470
		   AND rt.RTAG_ID = nIdCollector(i);
13471
 
13472
		SeqNum := SeqNum + 1;
13473
 
13474
	END LOOP;
13475
 
13476
END;
13477
/*-------------------------------------------------------------------------------------------------------*/
13478
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
13479
 
13480
RecCount NUMBER := 0;
13481
ProjId NUMBER;
13482
 
13483
BEGIN
13484
 
13485
 
13486
	/*--------------- Business Rules Here -------------------*/
13487
	-- Check for missing parameters
13488
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
13489
	THEN
13490
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
13491
 
13492
	END IF;
13493
 
13494
 
13495
	-- Check for duplicate Release Names
13496
	SELECT rt.PROJ_ID INTO ProjId
13497
	  FROM RELEASE_TAGS rt
13498
	 WHERE rt.RTAG_ID = nRtagId;
13499
 
13500
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13501
	  FROM RELEASE_TAGS rt
13502
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13503
	   AND rt.RTAG_ID != nRtagId
13504
	   AND rt.PROJ_ID = ProjId;
13505
 
13506
 
13507
	IF (RecCount > 0) THEN
13508
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13509
	END IF;
13510
	/*-------------------------------------------------------*/
13511
 
13512
 
13513
 
13514
	-- Update release details
13515
	UPDATE RELEASE_TAGS rt SET
13516
	rt.RTAG_NAME = sReleaseName,
13517
	rt.DESCRIPTION = sReleaseComments,
13518
	rt.PARENT_RTAG_ID = nParentRtagId,
13519
	rt.ASSOC_MASS_REF = nMASSRtagId,
13520
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
13521
	rt.OWNER_EMAIL = sOwnerEmail,
13522
	rt.PRODUCT_STATE_USED = cState
13523
	WHERE rt.RTAG_ID = nRtagId; 
13524
 
13525
	-- Update display Order
13526
	UPDATE_DISPLAY_ORDER ( ProjId );
13527
 
13528
	/* Log Project Action */
13529
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
13530
 
13531
 
13532
 
13533
 
13534
END;
13535
/*-------------------------------------------------------------------------------------------------------*/
13536
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13537
 
13538
	RecCount NUMBER := 0;
13539
	sReleaseId VARCHAR2(4000);
13540
	ProjId NUMBER;
13541
 
13542
BEGIN
13543
	/*--------------- Business Rules Here -------------------*/
13544
	IF (nRtagId IS NULL) 
13545
	THEN
13546
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13547
	END IF;
13548
 
13549
 
13550
 
13551
	-- Check for any kids
13552
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
13553
	  FROM RELEASE_TAGS rt
13554
	 WHERE rt.PARENT_RTAG_ID = nRtagId
13555
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
13556
 
13557
	IF (RecCount > 0) THEN
13558
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
13559
	END IF; 
13560
	/*-------------------------------------------------------*/
13561
 
13562
	-- Clear the release contents
13563
	Clean_Release_Contents ( nRtagId, nUserId );
13564
 
13565
	/* Log Project Action */
13566
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
13567
	  FROM RELEASE_TAGS rt
13568
	 WHERE rt.RTAG_ID = nRtagId;
13569
 
13570
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
13571
 
13572
 
13573
	-- Remove Release
13574
	DELETE 
13575
	  FROM RELEASE_TAGS rt
13576
	 WHERE rt.RTAG_ID = nRtagId;
13577
 
13578
 
13579
 
13580
END;
13581
/*-------------------------------------------------------------------------------------------------------*/
13582
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
13583
 
13584
	sSourceLocation VARCHAR2(4000);
13585
	sTargetLocation VARCHAR2(4000);
13586
	ProjId NUMBER;
13587
	cReleaseMode CHAR(1);
13588
	RconId NUMBER;
13589
 
13590
 
13591
	CURSOR curReleaseConfigs IS
13592
    SELECT *
13593
	  FROM RELEASE_CONFIG rc
13594
	 WHERE rc.RTAG_ID = nSourceRtagId;
13595
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
13596
 
13597
 
13598
BEGIN
13599
	/*--------------- Business Rules Here -------------------*/
13600
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
13601
	THEN
13602
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
13603
	END IF;
13604
 
13605
	IF (nSourceRtagId = nTargetRtagId) THEN
13606
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
13607
	END IF;
13608
 
13609
 
13610
	-- Check if Target release is in OPEN mode
13611
	SELECT rt.OFFICIAL  INTO  cReleaseMode
13612
	  FROM RELEASE_TAGS rt
13613
	 WHERE rt.RTAG_ID = nTargetRtagId;
13614
 
13615
	IF (cReleaseMode != 'N') THEN
13616
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
13617
	END IF;	 
13618
 
13619
	/*-------------------------------------------------------*/
13620
 
13621
	-- Clean target contents
13622
	Clean_Release_Contents ( nTargetRtagId, nUserId );
13623
 
13624
 
13625
	-- Import Released Area Contents
13626
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
13627
	SELECT nTargetRtagId AS RTAG_ID, 
13628
		   rc.PV_ID, 
13629
		   rc.BASE_VIEW_ID, 
13630
		   rc.INSERT_STAMP, 
13631
		   rc.INSERTOR_ID, 
13632
		   rc.PKG_STATE,
13633
		   rc.PKG_ID,
13634
		   rc.DEPRECATED_STATE
13635
	  FROM RELEASE_CONTENT rc
13636
	 WHERE rc.RTAG_ID = nSourceRtagId;
13637
 
13638
 
13639
	--Import Release Configuration Information
13640
	OPEN curReleaseConfigs;
13641
    FETCH curReleaseConfigs INTO recReleaseConfigs;
13642
 
13643
	WHILE curReleaseConfigs%FOUND
13644
	LOOP
13645
 
13646
		-- Get the next rcon id
13647
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
13648
 
13649
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
13650
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
13651
 
13652
		FETCH curReleaseConfigs INTO recReleaseConfigs;
13653
	END LOOP;
13654
 
13655
	CLOSE curReleaseConfigs;		
13656
 
13657
 
13658
 
13659
	-- Import Ignore Warning states
13660
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
13661
	SELECT nTargetRtagId AS RTAG_ID,
13662
	       igw.PV_ID,
13663
	       igw.DPV_ID
13664
	  FROM IGNORE_WARNINGS igw
13665
	 WHERE igw.rtag_id = nSourceRtagId;
13666
 
13667
 
13668
	/* Log Project Action */
13669
	-- Get Source Location
13670
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
13671
	  FROM RELEASE_TAGS rt,
13672
	  	   PROJECTS pr
13673
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13674
	   AND rt.RTAG_ID = nSourceRtagId;
13675
 
13676
	-- Get Target Location
13677
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
13678
	  FROM RELEASE_TAGS rt,
13679
	  	   PROJECTS pr
13680
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13681
	   AND rt.RTAG_ID = nTargetRtagId;	   
13682
 
13683
	-- Get project id   
13684
	SELECT rt.PROJ_ID  INTO  ProjId
13685
	  FROM RELEASE_TAGS rt
13686
	 WHERE rt.RTAG_ID = nTargetRtagId;   
13687
 
13688
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
13689
 
13690
 
13691
END;
13692
/*-------------------------------------------------------------------------------------------------------*/
13693
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13694
 
13695
	RecCount NUMBER;
13696
        rconIdList VARCHAR2(4000);
13697
 
13698
BEGIN
13699
	/*--------------- Business Rules Here -------------------*/
13700
	IF (nRtagId IS NULL) 
13701
	THEN
13702
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13703
	END IF;
13704
 
13705
 
13706
	-- Check if other release references this release
13707
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
13708
	  FROM RELEASE_LINKS rl
13709
	 WHERE rl.REF_RTAG_ID = nRtagId;
13710
 
13711
	IF (RecCount > 0) THEN
13712
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
13713
	END IF; 	
13714
	/*-------------------------------------------------------*/
13715
 
13716
	-- Delete Release links
13717
	DELETE 
13718
	  FROM RELEASE_LINKS rl
13719
	 WHERE rl.RTAG_ID = nRtagId;
13720
 
13721
	-- Delete ignore warning
13722
	DELETE 
13723
	  FROM IGNORE_WARNINGS iw
13724
	 WHERE iw.RTAG_ID = nRtagId;
13725
 
13726
 
13727
	-- Delete Build Order cached calculations	  
13728
	DELETE
13729
	  FROM BUILD_ORDER bo
13730
	 WHERE bo.RTAG_ID = nRtagId;
13731
 
13732
 
13733
	-- Delete Notification History
13734
	DELETE
13735
	  FROM NOTIFICATION_HISTORY nh
13736
	 WHERE nh.RTAG_ID = nRtagId;
13737
 
13738
 
13739
	-- Delete Released Area Contents
13740
	DELETE
13741
	  FROM RELEASE_CONTENT rc
13742
	 WHERE rc.RTAG_ID = nRtagId;
13743
 
13744
 
13745
	-- Delete Work In Progress Area Contents
13746
	DELETE
13747
	  FROM WORK_IN_PROGRESS wip
13748
	 WHERE wip.RTAG_ID = nRtagId;
13749
 
13750
 
13751
	-- Delete Pending Area Contents
13752
	DELETE 
13753
	  FROM PLANNED pl
13754
	 WHERE pl.RTAG_ID = nRtagId;
13755
 
13756
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
13757
	DELETE
13758
	  FROM DEPRECATED_PACKAGES dp
13759
	 WHERE dp.RTAG_ID = nRtagId; 
13760
 
13761
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
13762
	DELETE
13763
	  FROM PROJECT_ACTION_LOG pal
13764
	 WHERE pal.RTAG_ID = nRtagId;
13765
 
13766
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
13767
	DELETE
13768
	  FROM DO_NOT_RIPPLE dnr
13769
	 WHERE dnr.RTAG_ID = nRtagId; 
13770
 
13771
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
13772
	DELETE
13773
	  FROM DASH_BOARD db
13774
	 WHERE db.RTAG_ID = nRtagId;
13775
 
13776
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
13777
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
13778
        LOOP
13779
          rconIdList := rconIdList || rcon.RCON_ID || ',';
13780
        END LOOP;
13781
 
13782
        pk_buildapi.DELETE_DAEMON(rconIdList);
13783
 
13784
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
13785
        DELETE
13786
          FROM RELEASE_METRICS rm
13787
         WHERE rm.RTAG_ID = nRtagId;
13788
 
13789
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
13790
	DELETE
13791
	  FROM RELEASE_CONFIG rc
13792
	 WHERE rc.RTAG_ID = nRtagId;
13793
 
13794
 
13795
 
13796
END;
13797
/*-------------------------------------------------------------------------------------------------------*/
13798
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
13799
 
13800
	nSourceParentRtagId NUMBER;
13801
 
13802
BEGIN
13803
	/*--------------- Business Rules Here -------------------*/
13804
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
13805
	THEN
13806
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
13807
	END IF;
13808
	/*-------------------------------------------------------*/
13809
 
13810
 
13811
	IF ( nSourceRtagId IS NULL ) THEN
13812
		-- Create new on main branch
13813
		RETURN nRtagId;
13814
 
13815
	ELSE
13816
		-- Create from source rtag_id
13817
 
13818
		-- Find parent of Source RtagId
13819
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
13820
		  FROM RELEASE_TAGS rt
13821
		 WHERE rt.RTAG_ID = nSourceRtagId;
13822
 
13823
		IF (UPPER(cIsBranch) = 'Y') THEN
13824
			RETURN nSourceRtagId;
13825
		ELSE
13826
			IF (nSourceRtagId = nSourceParentRtagId) THEN
13827
				RETURN nRtagId;
13828
			ELSE
13829
				RETURN nSourceParentRtagId;
13830
			END IF;
13831
		END IF;	
13832
 
13833
 
13834
	END IF;
13835
 
13836
 
13837
END;
13838
/*-------------------------------------------------------------------------------------------------------*/
13839
 
13840
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
13841
-- 							 sNextVersion OUT VARCHAR2,
13842
-- 							 nNextLifeCycle OUT NUMBER,
13843
-- 							 nParentRtagId OUT NUMBER,
13844
-- 							 nProjId IN NUMBER ) IS
13845
-- 							
13846
-- SourceBranchCount NUMBER;
13847
-- ProjRootVersion VARCHAR2(4000);
13848
-- LastLifeCycle NUMBER;
13849
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
13850
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
13851
-- 
13852
-- SourceProjId NUMBER; 
13853
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
13854
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
13855
-- 
13856
-- BEGIN
13857
-- 	/*--------------- Business Rules Here -------------------*/
13858
-- 	/*-------------------------------------------------------*/
13859
-- 	
13860
-- 	   
13861
-- 	BEGIN
13862
-- 		-- Get Project root version
13863
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
13864
-- 		  FROM RELEASE_TAGS rt
13865
-- 		 WHERE rt.PROJ_ID = nProjId
13866
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
13867
-- 	   
13868
-- 		EXCEPTION
13869
-- 		WHEN NO_DATA_FOUND THEN
13870
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
13871
-- 	END;		   
13872
-- 	
13873
-- 	
13874
-- 	
13875
-- 	 
13876
-- 	BEGIN
13877
-- 		-- Get info for source rtagid
13878
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
13879
-- 		  FROM RELEASE_TAGS rt
13880
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
13881
-- 	   
13882
-- 		EXCEPTION
13883
-- 		WHEN NO_DATA_FOUND THEN
13884
-- 		SourceProjId := NULL;
13885
-- 		SourceVersion := NULL;
13886
-- 		SourceLifeCycle := NULL;
13887
-- 	END;	  
13888
-- 	
13889
-- 	
13890
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
13891
-- 	
13892
-- 		/* Blank Release Required  OR  Release imported from other project */
13893
-- 		
13894
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
13895
-- 			/* No Releases found in the project, hence calculate next version available.  */
13896
-- 			
13897
-- 			-- Set parent rtag
13898
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
13899
-- 			
13900
-- 			
13901
-- 			BEGIN
13902
-- 				-- Get Next Available Global Root Version 
13903
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
13904
-- 				  FROM RELEASE_TAGS rt
13905
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
13906
-- 				
13907
-- 				-- Set Next Rtag Version
13908
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
13909
-- 				
13910
-- 				-- Restart Lifecycle
13911
-- 				nNextLifeCycle := 0;
13912
-- 				
13913
-- 				
13914
-- 				EXCEPTION
13915
-- 				WHEN NO_DATA_FOUND THEN
13916
-- 				-- Release Manager has no releases, hence start from 1
13917
-- 				sNextVersion := '1';
13918
-- 				nNextLifeCycle := 0;
13919
-- 				
13920
-- 			END;
13921
-- 			
13922
-- 			
13923
-- 					
13924
-- 		ELSE
13925
-- 			/* Releases found in this project. */
13926
-- 							   
13927
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
13928
-- 			  FROM (
13929
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
13930
-- 					  FROM RELEASE_TAGS rt
13931
-- 					 WHERE rt.PROJ_ID = nProjId
13932
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
13933
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
13934
-- 			  		) qry
13935
-- 			 WHERE ROWNUM = 1;		
13936
-- 
13937
-- 			
13938
-- 			-- Set same Rtag Version
13939
-- 			sNextVersion := ProjRootVersion;
13940
-- 			
13941
-- 			-- Increase Lifecycle
13942
-- 			nNextLifeCycle := LastLifeCycle + 1;
13943
-- 		
13944
-- 		END IF;
13945
-- 				
13946
-- 	
13947
-- 		
13948
-- 	ELSE
13949
-- 		/* Create Release From other release within this project */
13950
-- 		
13951
-- 		-- Set parent id
13952
-- 		nParentRtagId := nSourceRtagId;
13953
-- 		
13954
-- 		
13955
-- 		-- Get number of source branches
13956
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
13957
-- 		  FROM RELEASE_TAGS rt
13958
-- 		 WHERE rt.PROJ_ID = nProjId
13959
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
13960
-- 		   
13961
-- 		   
13962
-- 		IF SourceBranchCount = 0 THEN
13963
-- 			/* Release is Head (i.e. Tip on its branch ) */
13964
-- 			
13965
-- 			-- Set Next Rtag Version
13966
-- 			sNextVersion := SourceVersion;
13967
-- 			
13968
-- 			-- Increase Lifecycle
13969
-- 			nNextLifeCycle := SourceLifeCycle + 1;
13970
-- 			
13971
-- 			
13972
-- 		ELSIF SourceBranchCount = 1 THEN
13973
-- 			/* Release IS NOT Head, but can be branched */
13974
-- 			
13975
-- 			-- Set Next Rtag Version
13976
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
13977
-- 			
13978
-- 			-- Reset Lifecycle to 1
13979
-- 			nNextLifeCycle := 1;
13980
-- 			
13981
-- 			
13982
-- 		ELSE	
13983
-- 			-- Limit of two branches is reached
13984
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
13985
-- 			
13986
-- 		END IF;	
13987
-- 			
13988
-- 			
13989
-- 		
13990
-- 		
13991
-- 		
13992
-- 	
13993
-- 	END IF;
13994
-- 	
13995
-- 		
13996
-- END;
13997
 
13998
/*-------------------------------------------------------------------------------------------------------*/
13999
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
14000
 
14001
	IsBaseView CHAR(1);
14002
 
14003
BEGIN
14004
 
14005
	-- Check if the view is BASE VIEW
14006
	SELECT vi.BASE_VIEW INTO IsBaseView
14007
	  FROM VIEWS vi
14008
	 WHERE vi.VIEW_ID = ViewId;
14009
 
14010
	IF (IsBaseView = 'Y') THEN 
14011
		-- Get Base view content
14012
		OPEN RecordSet FOR
14013
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
14014
			   rel.deprecated_state,
14015
			   pv.pv_id, 
14016
			   pkg.pkg_name, 
14017
			   pv.pkg_version, 
14018
			   pv.dlocked, 
14019
			   pv.pv_description,
14020
			   pv.BUILD_TYPE
14021
		  FROM release_content rel,
14022
		       packages pkg,
14023
		       package_versions pv
14024
		 WHERE pv.pkg_id = pkg.pkg_id
14025
		   AND rel.pv_id = pv.pv_id
14026
		   AND rel.BASE_VIEW_ID = ViewId
14027
		   AND rel.RTAG_ID = RtagId
14028
		 ORDER BY UPPER(pkg.PKG_NAME);
14029
 
14030
	ELSE	 
14031
 
14032
	 	-- Get non base view content
14033
		OPEN RecordSet FOR
14034
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
14035
			   rel.deprecated_state,
14036
			   pv.pv_id, 
14037
			   pkg.pkg_name, 
14038
			   pv.pkg_version, 
14039
			   pv.dlocked, 
14040
			   pv.pv_description,
14041
			   pv.BUILD_TYPE
14042
		  FROM release_content rel,
14043
		       packages pkg,
14044
		       package_versions pv,
14045
			   VIEW_DEF vd
14046
		 WHERE pv.pkg_id = pkg.pkg_id
14047
		   AND rel.pv_id = pv.pv_id
14048
		   AND vd.VIEW_ID = ViewId
14049
		   AND vd.PKG_ID = pv.PKG_ID
14050
		   AND rel.RTAG_ID = RtagId
14051
		 ORDER BY UPPER(pkg.PKG_NAME);		 
14052
 
14053
	END IF;	 	 
14054
 
14055
 
14056
 
14057
 
14058
END;
14059
/*-------------------------------------------------------------------------------------------------------*/
14060
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14061
 
14062
	ReleaseLocation VARCHAR2(4000);
14063
	sPkgVersion VARCHAR2(4000);
14064
	nPkgId NUMBER;
14065
	sVExt VARCHAR2(4000);
14066
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
14067
 
14068
	-- Find package for replacement
14069
	CURSOR curReplacePkg IS
14070
    SELECT pv.PV_ID
14071
	  FROM RELEASE_CONTENT rc,
14072
	  	   PACKAGE_VERSIONS pv
14073
	 WHERE rc.PV_ID = pv.PV_ID
14074
	   AND rc.RTAG_ID = RtagId
14075
	   AND pv.PKG_ID = nPkgId
14076
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
14077
    recReplacePkg curReplacePkg%ROWTYPE;
14078
 
14079
BEGIN
14080
 
14081
	-- Get is_patch, pkg_id and v_ext
14082
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
14083
	  FROM PACKAGE_VERSIONS pv
14084
	 WHERE pv.PV_ID = newPvId;
14085
 
14086
 
14087
	-- Never put patch in relesed area
14088
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
14089
 
14090
		-- Try to get a package to be replaced with this new one.
14091
		-- Use unique constraint of PKG_ID and V_EXT
14092
		OPEN curReplacePkg;
14093
	    FETCH curReplacePkg INTO recReplacePkg;
14094
 
14095
	    IF curReplacePkg%FOUND THEN
14096
			-- Replace package
14097
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
14098
 
14099
		ELSE
14100
			-- Add new package
14101
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
14102
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
14103
 
14104
 
14105
		    /* LOG ACTION */
14106
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14107
			  FROM PROJECTS proj,
14108
			  	   RELEASE_TAGS rt
14109
			 WHERE rt.PROJ_ID = proj.PROJ_ID
14110
			   AND rt.RTAG_ID = RtagId;
14111
 
14112
			SELECT pv.PKG_VERSION INTO sPkgVersion
14113
			  FROM PACKAGE_VERSIONS pv
14114
			 WHERE pv.PV_ID = newPvId;
14115
 
14116
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14117
 
14118
 
14119
		END IF;
14120
 
14121
		CLOSE curReplacePkg;
14122
 
14123
	END IF;
14124
 
14125
END;
14126
/*-------------------------------------------------------------------------------------------------------*/
14127
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14128
 
14129
	ReleaseLocation VARCHAR2(4000);
14130
	sPkgVersion VARCHAR2(4000);
14131
 
14132
BEGIN
14133
 
14134
	-- Replace Package
14135
    UPDATE RELEASE_CONTENT
14136
       SET pv_id = newPvId,
14137
           insert_stamp = Ora_Sysdate,
14138
           insertor_id = UserId,
14139
		   product_state = NULL
14140
     WHERE rtag_id = RtagId
14141
       AND pv_id = oldPvId;  
14142
 
14143
 
14144
    /* LOG ACTION */
14145
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14146
	  FROM PROJECTS proj,
14147
	  	   RELEASE_TAGS rt
14148
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14149
	   AND rt.RTAG_ID = RtagId;
14150
 
14151
	SELECT pv.PKG_VERSION INTO sPkgVersion
14152
	  FROM PACKAGE_VERSIONS pv
14153
	 WHERE pv.PV_ID = newPvId;
14154
 
14155
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
14156
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14157
 
14158
END;
14159
/*-------------------------------------------------------------------------------------------------------*/
14160
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14161
	ReleaseLocation VARCHAR2(4000);
14162
 
14163
BEGIN
14164
 
14165
 
14166
	-- Delete old package
14167
	DELETE
14168
	  FROM RELEASE_CONTENT rc
14169
	 WHERE rc.PV_ID = PvId
14170
	   AND rc.RTAG_ID = RtagId;
14171
 
14172
 
14173
	/* LOG ACTION */
14174
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14175
	  FROM PROJECTS proj,
14176
	       RELEASE_TAGS rt
14177
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14178
	   AND rt.RTAG_ID = RtagId;
14179
 
14180
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14181
 
14182
 
14183
END;
14184
/*-------------------------------------------------------------------------------------------------------*/
14185
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14186
	ReleaseLocation VARCHAR2(4000);
14187
 
14188
	CURSOR curMatchingPackage IS
14189
    SELECT mpv.PV_ID
14190
	  FROM RELEASE_CONTENT rc,
14191
	  	   PACKAGE_VERSIONS mpv,
14192
		   PACKAGE_VERSIONS pv
14193
	 WHERE rc.PV_ID = mpv.PV_ID
14194
	   AND rc.RTAG_ID = RtagId
14195
	   AND pv.PV_ID = PvId
14196
	   AND pv.PKG_ID = mpv.PKG_ID
14197
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
14198
    recMatchingPackage curMatchingPackage%ROWTYPE;
14199
 
14200
BEGIN
14201
 
14202
	OPEN curMatchingPackage;
14203
    FETCH curMatchingPackage INTO recMatchingPackage;
14204
 
14205
    IF curMatchingPackage%FOUND THEN
14206
		-- Delete old package
14207
		DELETE
14208
		  FROM RELEASE_CONTENT rc
14209
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
14210
		   AND rc.RTAG_ID = RtagId;
14211
 
14212
 
14213
		/* LOG ACTION */
14214
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14215
		  FROM PROJECTS proj,
14216
		  	   RELEASE_TAGS rt
14217
		 WHERE rt.PROJ_ID = proj.PROJ_ID
14218
		   AND rt.RTAG_ID = RtagId;
14219
 
14220
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14221
 
14222
	END IF;
14223
 
14224
 
14225
	CLOSE curMatchingPackage;
14226
 
14227
 
14228
 
14229
 
14230
END;
14231
/*-------------------------------------------------------------------------------------------------------*/
14232
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
14233
 
14234
	ReturnValue NUMBER;
14235
 
14236
BEGIN
14237
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
14238
	  FROM RELEASE_CONTENT rc
14239
	 WHERE rc.RTAG_ID = RtagId
14240
	   AND rc.PV_ID = PvId;
14241
 
14242
	RETURN ReturnValue;
14243
END;
14244
/*-------------------------------------------------------------------------------------------------------*/
14245
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
14246
 
14247
BEGIN
14248
	-- Reset Ignore warnings up-the-tree
14249
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
14250
 
14251
	-- Refresh Package states
14252
	TOUCH_RELEASE ( RtagId );
14253
 
14254
END;
14255
/*-------------------------------------------------------------------------------------------------------*/
14256
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
14257
	CURSOR curReleases IS
14258
    SELECT rc.RTAG_ID
14259
	  FROM RELEASE_CONTENT rc
14260
	 WHERE rc.PV_ID = PvId;
14261
    recReleases curReleases%ROWTYPE;
14262
 
14263
BEGIN
14264
 
14265
	OPEN curReleases;
14266
    FETCH curReleases INTO recReleases;
14267
 
14268
	WHILE curReleases%FOUND
14269
	LOOP
14270
 
14271
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
14272
 
14273
		FETCH curReleases INTO recReleases;
14274
	END LOOP;
14275
 
14276
	CLOSE curReleases;	
14277
 
14278
END;
14279
/*-------------------------------------------------------------------------------------------------------*/
14280
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
14281
 
14282
BEGIN
14283
 
14284
	UPDATE RELEASE_CONTENT rc SET
14285
	rc.BASE_VIEW_ID = NewViewId
14286
	WHERE rc.PV_ID = PvId
14287
	  AND rc.RTAG_ID = RtagId;
14288
 
14289
END;
14290
/*-------------------------------------------------------------------------------------------------------*/
14291
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
14292
 
14293
	RowCount NUMBER;
14294
 
14295
 
14296
	CURSOR curPackageClash IS
14297
	SELECT pkg.PKG_NAME,
14298
		   er.*
14299
	  FROM (
14300
 
14301
	  		/* Get existing referenced packages */
14302
			SELECT pv.PKG_ID,
14303
			       pv.V_EXT
14304
			  FROM RELEASE_LINKS rl,
14305
			  	   RELEASE_CONTENT rc,
14306
			  	   PACKAGE_VERSIONS pv
14307
			 WHERE rl.RTAG_ID = nRtagId
14308
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
14309
			   AND rc.PV_ID = pv.PV_ID
14310
 
14311
	  	    ) er,
14312
			(
14313
 
14314
			/* Get current reference packages */
14315
			SELECT pv.PKG_ID,
14316
			       pv.V_EXT
14317
			  FROM RELEASE_CONTENT rc,
14318
			  	   PACKAGE_VERSIONS pv
14319
			 WHERE rc.RTAG_ID = nRefRtagId
14320
			   AND rc.PV_ID = pv.PV_ID    
14321
 
14322
			) cr,
14323
			PACKAGES PKG
14324
	 WHERE er.PKG_ID = cr.PKG_ID
14325
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14326
	   AND er.PKG_ID = pkg.PKG_ID;
14327
 
14328
	recPackageClash curPackageClash%ROWTYPE;	   
14329
 
14330
BEGIN
14331
	/*--------------- Business Rules Here -------------------*/
14332
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14333
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14334
	END IF;
14335
 
14336
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14337
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14338
	END IF;
14339
	/*-------------------------------------------------------*/
14340
	ProblemString := NULL;
14341
 
14342
 
14343
	-- Check if release already has references
14344
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
14345
	  FROM RELEASE_LINKS rl
14346
	 WHERE rl.RTAG_ID = nRtagId;	
14347
 
14348
 
14349
	IF RowCount > 0 THEN
14350
		-- Found existing references
14351
 
14352
		-- Make sure there is no package clashes
14353
		OPEN curPackageClash;
14354
	    FETCH curPackageClash INTO recPackageClash;
14355
 
14356
		IF curPackageClash%FOUND THEN
14357
 
14358
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
14359
 
14360
			WHILE curPackageClash%FOUND
14361
			LOOP
14362
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
14363
 
14364
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
14365
 
14366
				FETCH curPackageClash INTO recPackageClash;
14367
			END LOOP;
14368
 
14369
		END IF;
14370
 
14371
		CLOSE curPackageClash;
14372
 
14373
 
14374
	ELSE
14375
		-- No references found, hence reference a release
14376
 
14377
 
14378
		-- Remove exising package from this release to be referenced
14379
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
14380
 
14381
 
14382
		-- Add new linked packages to release
14383
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14384
		SELECT nRtagId,
14385
			   rc.PV_ID,
14386
			   rc.BASE_VIEW_ID, 
14387
			   rc.INSERT_STAMP, 
14388
			   rc.INSERTOR_ID, 
14389
			   rc.PKG_STATE
14390
		  FROM RELEASE_CONTENT rc
14391
		 WHERE rc.RTAG_ID = nRefRtagId;
14392
 
14393
 
14394
 
14395
		-- Copy ignore warnings for referenced packages
14396
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
14397
		SELECT nRtagId, 
14398
			   iw.PV_ID, 
14399
			   iw.DPV_ID, 
14400
			   iw.IS_PATCH_IGNORE
14401
		  FROM IGNORE_WARNINGS iw,
14402
		  	   RELEASE_CONTENT rc
14403
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
14404
		   AND iw.PV_ID = rc.PV_ID
14405
		   AND rc.RTAG_ID = nRefRtagId;	 
14406
 
14407
 
14408
 
14409
		-- Reference release 
14410
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
14411
		VALUES ( nRtagId, nRefRtagId );		 
14412
 
14413
 
14414
		-- Refresh Package states
14415
		TOUCH_RELEASE ( nRtagId );
14416
 
14417
	END IF;	 
14418
 
14419
 
14420
END;
14421
/*-------------------------------------------------------------------------------------------------------*/
14422
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
14423
 
14424
 
14425
BEGIN
14426
	/*--------------- Business Rules Here -------------------*/
14427
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14428
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14429
	END IF;
14430
 
14431
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14432
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14433
	END IF;
14434
 
14435
	/*-------------------------------------------------------*/
14436
 
14437
 
14438
	-- Remove ignore warnings for those packages who use referenced packages
14439
	DELETE FROM IGNORE_WARNINGS iw
14440
	 WHERE iw.RTAG_ID = nRtagId
14441
	   AND iw.DPV_ID IN (
14442
	   						SELECT dep.DPV_ID
14443
							  FROM (
14444
 
14445
									/* Get referenced packages */
14446
									SELECT pv.PKG_ID,
14447
									       pv.V_EXT
14448
									  FROM RELEASE_CONTENT rc,
14449
									  	   PACKAGE_VERSIONS pv
14450
									 WHERE rc.RTAG_ID = nRefRtagId
14451
									   AND rc.PV_ID = pv.PV_ID    
14452
 
14453
									) cr,
14454
									(
14455
 
14456
									/* Get all dependencies for current release */
14457
									SELECT DISTINCT 
14458
										   pv.PKG_ID,
14459
										   pv.V_EXT,
14460
										   dep.DPV_ID
14461
									  FROM RELEASE_CONTENT rc,
14462
										   PACKAGE_DEPENDENCIES dep,
14463
										   PACKAGE_VERSIONS pv
14464
									 WHERE rc.RTAG_ID = nRtagId
14465
									   AND rc.PV_ID = dep.PV_ID		
14466
									   AND dep.PV_ID = pv.PV_ID	   
14467
 
14468
									) dep
14469
							 WHERE dep.PKG_ID = cr.PKG_ID
14470
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14471
	   					);  
14472
 
14473
 
14474
 
14475
 
14476
	-- Remove ignore warnings for those package which are going to be replaced with the reference
14477
	DELETE FROM IGNORE_WARNINGS iw
14478
	 WHERE iw.RTAG_ID = nRtagId
14479
	   AND iw.PV_ID IN (
14480
						SELECT pv.PV_ID
14481
						  FROM (
14482
 
14483
								/* Get referenced packages */
14484
								SELECT pv.PKG_ID,
14485
								       pv.V_EXT
14486
								  FROM RELEASE_CONTENT rc,
14487
								  	   PACKAGE_VERSIONS pv
14488
								 WHERE rc.RTAG_ID = nRefRtagId
14489
								   AND rc.PV_ID = pv.PV_ID    
14490
 
14491
								) cr,
14492
								RELEASE_CONTENT rc,
14493
								PACKAGE_VERSIONS pv
14494
						 WHERE pv.PKG_ID = cr.PKG_ID
14495
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14496
						   AND rc.RTAG_ID = nRtagId
14497
						   AND rc.PV_ID = pv.PV_ID
14498
						);			
14499
 
14500
 
14501
 
14502
 
14503
 
14504
	-- Remove matching packages from release
14505
	DELETE FROM RELEASE_CONTENT rc
14506
	 WHERE rc.RTAG_ID = nRtagId
14507
	   AND rc.PV_ID IN (
14508
						SELECT pv.PV_ID
14509
						  FROM (
14510
 
14511
								/* Get referenced packages */
14512
								SELECT pv.PKG_ID,
14513
								       pv.V_EXT
14514
								  FROM RELEASE_CONTENT rc,
14515
								  	   PACKAGE_VERSIONS pv
14516
								 WHERE rc.RTAG_ID = nRefRtagId
14517
								   AND rc.PV_ID = pv.PV_ID    
14518
 
14519
								) cr,
14520
								RELEASE_CONTENT rc,
14521
								PACKAGE_VERSIONS pv
14522
						 WHERE pv.PKG_ID = cr.PKG_ID
14523
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14524
						   AND rc.RTAG_ID = nRtagId
14525
						   AND rc.PV_ID = pv.PV_ID
14526
						);	
14527
 
14528
 
14529
 
14530
 
14531
 
14532
	-- Remove Reference release 
14533
	DELETE 
14534
	  FROM RELEASE_LINKS rl
14535
	 WHERE rl.RTAG_ID = nRtagId
14536
	   AND rl.REF_RTAG_ID = nRefRtagId;
14537
 
14538
 
14539
	-- Refresh Package states
14540
	TOUCH_RELEASE ( nRtagId );
14541
 
14542
 
14543
END;
14544
/*-------------------------------------------------------------------------------------------------------*/
14545
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
14546
 
14547
	cReleaseMode CHAR(1);
14548
	cPvMode CHAR(1);
14549
 
14550
BEGIN
14551
 
14552
	-- Get Release Mode
14553
	SELECT rt.OFFICIAL INTO cReleaseMode
14554
	  FROM RELEASE_TAGS rt
14555
	 WHERE rt.RTAG_ID = RtagId;
14556
 
14557
 
14558
	-- Get Package Mode
14559
	SELECT pv.DLOCKED INTO cPvMode
14560
	  FROM PACKAGE_VERSIONS pv
14561
	 WHERE pv.PV_ID = PvId;	 
14562
 
14563
	-- Only check if package is locked 
14564
	IF (cPvMode = 'Y') THEN
14565
 
14566
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
14567
		THEN
14568
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
14569
 
14570
		END IF;
14571
 
14572
	END IF;	
14573
 
14574
 
14575
END;
14576
 
14577
/*-------------------------------------------------------------------------------------------------------*/
14578
END PK_RELEASE;
14579
/
14580
 
14581
CREATE OR REPLACE PACKAGE BODY PK_BUILDAPI_TEST IS
14582
 
14583
/*
14584
------------------------------
14585
||  Last Modified:  S.Vukovic
14586
||  Modified Date:  30/Mar/2005
14587
||  Body Version:   1.0
14588
------------------------------
14589
*/
14590
 
14591
 
14592
/*-------------------------------------------------------------------------------------------------------*/
14593
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14594
								  sOsName IN VARCHAR2,
14595
								  sOrigFilePath IN VARCHAR2,
14596
								  sFileName IN VARCHAR2,
14597
								  sDestFilePath IN VARCHAR2,
14598
								  nByteSize IN NUMBER,
14599
								  sCRCcksum IN VARCHAR2 ) IS
14600
 
14601
	nOsId NUMBER;
14602
 
14603
BEGIN
14604
	/*--------------- Business Rules Here -------------------*/
14605
	-- OS Name Requirements --
14606
	IF (sOsName IS NULL) THEN
14607
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14608
	END IF;
14609
 
14610
 
14611
	-- File Requirements --
14612
	IF (NOT sFileName IS NULL) THEN
14613
 
14614
		IF (nByteSize IS NULL) THEN
14615
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14616
 
14617
		ELSIF (sCRCcksum IS NULL) THEN
14618
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14619
 
14620
		END IF;
14621
 
14622
	END IF;
14623
 
14624
 
14625
	-- Folder Requirements --
14626
	-- No requirements for now.
14627
 
14628
	/*-------------------------------------------------------*/
14629
 
14630
	-- Get OsId
14631
	nOsId := Get_OsId ( sOsName );
14632
 
14633
 
14634
	-- Insert component entry
14635
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14636
    VALUES (
14637
			  nPvId,
14638
			  nOsId,
14639
			  sOrigFilePath,
14640
			  sFileName,
14641
			  sDestFilePath,
14642
			  nByteSize,
14643
			  sCRCcksum
14644
			);
14645
 
14646
 
14647
	EXCEPTION
14648
    WHEN DUP_VAL_ON_INDEX
14649
	THEN
14650
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14651
 
14652
END;
14653
/*-------------------------------------------------------------------------------------------------------*/
14654
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14655
 
14656
	nOsId NUMBER;
14657
 
14658
BEGIN
14659
	/*--------------- Business Rules Here -------------------*/
14660
	/*-------------------------------------------------------*/
14661
 
14662
	-- Get OsId
14663
	nOsId := Get_OsId ( sOsName );
14664
 
14665
 
14666
	-- Delete component entry
14667
	DELETE
14668
	  FROM PRODUCT_COMPONENTS pc
14669
	 WHERE pc.PV_ID = nPvId
14670
	   AND pc.OS_ID = nOsId;
14671
 
14672
 
14673
END;
14674
/*-------------------------------------------------------------------------------------------------------*/
14675
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14676
	Code NUMBER;
14677
 
14678
BEGIN
14679
 
14680
	-- Get Platform Code --
14681
	SELECT pf.CODE INTO Code
14682
	  FROM PLATFORMS pf
14683
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14684
 
14685
 
14686
	RETURN Code;	   
14687
 
14688
	EXCEPTION
14689
    	WHEN NO_DATA_FOUND THEN
14690
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14691
   	RAISE;
14692
END;
14693
/*-------------------------------------------------------------------------------------------------------*/
14694
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14695
			  					 sWebServer IN VARCHAR2,
14696
								 sMailServer IN VARCHAR2,
14697
								 sMailSender IN VARCHAR2) IS
14698
 
14699
BEGIN
14700
 
14701
 
14702
	 UPDATE BUILD_SERVICE_CONFIG
14703
	 SET CONFIG = sDatabaseServer
14704
	 WHERE SERVICE = 'DATABASE SERVER'; 
14705
 
14706
	 UPDATE BUILD_SERVICE_CONFIG
14707
	 SET CONFIG = sWebServer
14708
	 WHERE SERVICE = 'WEB SERVER'; 
14709
 
14710
	 UPDATE BUILD_SERVICE_CONFIG
14711
	 SET CONFIG = sMailServer
14712
	 WHERE SERVICE = 'MAIL SERVER'; 
14713
 
14714
	 UPDATE BUILD_SERVICE_CONFIG
14715
	 SET CONFIG = sMailSender
14716
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14717
 
14718
 
14719
 
14720
END;
14721
/*-------------------------------------------------------------------------------------------------------*/
14722
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14723
 
14724
GBE_ID NUMBER;
14725
 
14726
BEGIN
14727
 
14728
	-- Get GBE_ID
14729
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14730
 
14731
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14732
	VALUES( GBE_ID, sGBEValue);
14733
 
14734
 
14735
END;
14736
/*-------------------------------------------------------------------------------------------------------*/
14737
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14738
 
14739
BEGIN
14740
 
14741
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14742
 
14743
END;
14744
/*-------------------------------------------------------------------------------------------------------*/
14745
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14746
 
14747
BEGIN
14748
 
14749
	 UPDATE GBE_MACHTYPE
14750
	 SET GBE_VALUE = sGBEValue 
14751
	 WHERE GBE_ID = nGBE_ID;
14752
 
14753
 
14754
END;
14755
/*-------------------------------------------------------------------------------------------------------*/
14756
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14757
 
14758
nRecordNumber NUMBER;
14759
nRconId NUMBER;
14760
BEGIN
14761
	-- Get RCON_ID
14762
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14763
 
14764
        SELECT count(*) INTO nRecordNumber 
14765
        FROM RELEASE_CONFIG
14766
        WHERE RTAG_ID = nRtagId;
14767
 
14768
        IF nRecordNumber = 0 THEN
14769
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14770
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14771
        ELSE
14772
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14773
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14774
        END IF;
14775
 
14776
 
14777
 
14778
END;
14779
/*-------------------------------------------------------------------------------------------------------*/        
14780
END PK_BUILDAPI_TEST;
14781
/
14782
 
53 mhunt 14783
CREATE OR REPLACE PACKAGE BODY                   "PK_ENVIRONMENT"
51 mhunt 14784
IS
14785
/*
14786
------------------------------
53 mhunt 14787
||  Last Modified:  G.Huddy
14788
||  Modified Date:  28/May/2008
14789
||  Body Version:   1.3
51 mhunt 14790
------------------------------
14791
*/
14792
 
14793
   /*-------------------------------------------------------------------------------------------------------*/
14794
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
53 mhunt 14795
	  RETURN NUMBER
51 mhunt 14796
   IS
14797
   BEGIN
53 mhunt 14798
	   /*
14799
	  || N - unlocked
14800
	  || Y - release and locked
14801
	  || P - penging approval
14802
	  || A - approved package ready for auto-build
14803
	  */
14804
	  IF cdlock = 'N' OR cdlock = 'R'
14805
	  THEN
14806
		 -- WORK IN PROGRESS --
14807
		 RETURN 0;
14808
	  ELSIF cdlock = 'P' OR cdlock = 'A'
14809
	  THEN
14810
		 -- PENDING --
14811
		 RETURN 1;
14812
	  ELSIF cdlock = 'Y'
14813
	  THEN
14814
		 -- RELEASED --
14815
		 RETURN 2;
14816
	  ELSE
14817
		 -- NOT FOUND --
14818
		 raise_application_error
14819
						 (-20000,
14820
							 'Cannot decide where to place package. [cDlock='
14821
						  || cdlock
14822
						  || ']'
14823
						 );
14824
	  END IF;
51 mhunt 14825
   END;
14826
 
14827
/*-------------------------------------------------------------------------------------------------------*/
14828
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14829
	  RETURN NUMBER
51 mhunt 14830
   IS
53 mhunt 14831
	  envtab	NUMBER			:= -1;
51 mhunt 14832
 
53 mhunt 14833
	  CURSOR curarea
14834
	  IS
14835
		 SELECT 2 AS envtab
14836
		   FROM release_content rc
14837
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14838
		 UNION
14839
		 SELECT 0 AS envtab
14840
		   FROM work_in_progress wip
14841
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14842
		 UNION
14843
		 SELECT 1 AS envtab
14844
		   FROM planned pl
14845
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14846
 
53 mhunt 14847
	  recarea   curarea%ROWTYPE;
51 mhunt 14848
   BEGIN
53 mhunt 14849
	  OPEN curarea;
51 mhunt 14850
 
53 mhunt 14851
	  FETCH curarea
14852
	   INTO recarea;
51 mhunt 14853
 
53 mhunt 14854
	  IF curarea%FOUND
14855
	  THEN
14856
		 envtab := recarea.envtab;
14857
	  END IF;
51 mhunt 14858
 
53 mhunt 14859
	  CLOSE curarea;
51 mhunt 14860
 
53 mhunt 14861
	  RETURN envtab;
51 mhunt 14862
   END;
14863
 
14864
/*-------------------------------------------------------------------------------------------------------*/
14865
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14866
	  RETURN NUMBER
51 mhunt 14867
   IS
53 mhunt 14868
	  ispatch   package_versions.dlocked%TYPE;
14869
	  viewid	NUMBER						  := -1;
51 mhunt 14870
 
53 mhunt 14871
	  CURSOR curview
14872
	  IS
14873
		 SELECT rc.base_view_id AS view_id
14874
		   FROM release_content rc
14875
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14876
		 UNION
14877
		 SELECT wip.view_id AS view_id
14878
		   FROM work_in_progress wip
14879
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14880
		 UNION
14881
		 SELECT pl.view_id AS view_id
14882
		   FROM planned pl
14883
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14884
 
53 mhunt 14885
	  recview   curview%ROWTYPE;
51 mhunt 14886
   BEGIN
53 mhunt 14887
	  -- Get dlock state
14888
	  SELECT pv.is_patch
14889
		INTO ispatch
14890
		FROM package_versions pv
14891
	   WHERE pv.pv_id = pvid;
51 mhunt 14892
 
53 mhunt 14893
	  -- Decide which view id should package go under.
14894
	  IF (ispatch != 'Y') OR (ispatch IS NULL)
14895
	  THEN
14896
		 -- Get VIEW ID of Package
14897
		 OPEN curview;
51 mhunt 14898
 
53 mhunt 14899
		 FETCH curview
14900
		  INTO recview;
51 mhunt 14901
 
53 mhunt 14902
		 IF curview%FOUND
14903
		 THEN
14904
			viewid := recview.view_id;
14905
		 ELSE
14906
			raise_application_error
14907
			   (-20000,
14908
				   'Cannot find view_id to proceed. [PvId='
14909
				|| pvid
14910
				|| ']. The current version may not exist in the release anymore.'
14911
			   );
14912
		 END IF;
51 mhunt 14913
 
53 mhunt 14914
		 CLOSE curview;
14915
	  ELSE
14916
		 -- Get VIEW ID of Patch (view id of parent package)
14917
		 SELECT rc.base_view_id
14918
		   INTO viewid
14919
		   FROM release_content rc, package_patches ppv
14920
		  WHERE rc.rtag_id = rtagid
14921
			AND rc.pv_id = ppv.pv_id
14922
			AND ppv.patch_id = pvid;
14923
	  END IF;
51 mhunt 14924
 
53 mhunt 14925
	  RETURN viewid;
51 mhunt 14926
   END;
14927
 
14928
/*-------------------------------------------------------------------------------------------------------*/
14929
   PROCEDURE add_package (
53 mhunt 14930
	  pvid	 IN   NUMBER,
14931
	  viewid   IN   NUMBER,
14932
	  rtagid   IN   NUMBER,
14933
	  userid   IN   NUMBER
51 mhunt 14934
   )
14935
   IS
53 mhunt 14936
	  dlocked   package_versions.dlocked%TYPE;
14937
	  envtab	NUMBER;
51 mhunt 14938
   BEGIN
53 mhunt 14939
	  IF can_edit_pkg_in_project (pvid, rtagid) = 1
14940
	  THEN
14941
		 -- Get dlock state
14942
		 SELECT pv.dlocked
14943
		   INTO dlocked
14944
		   FROM package_versions pv
14945
		  WHERE pv.pv_id = pvid;
51 mhunt 14946
 
53 mhunt 14947
		 -- Get which area should go under
14948
		 envtab := select_environment_area (dlocked);
14949
		 -- Log
14950
		 log_action (pvid, 'action', userid, 'Start of Package Add...');
51 mhunt 14951
 
53 mhunt 14952
		 -- Remove Package
14953
		 IF envtab = 0
14954
		 THEN
14955
			-- WORK IN PROGRESS --
14956
			pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
14957
		 ELSIF envtab = 1
14958
		 THEN
14959
			-- PENDING --
14960
			pk_planned.add_package (pvid, viewid, rtagid, userid);
14961
		 ELSIF envtab = 2
14962
		 THEN
14963
			-- RELEASED --
14964
			-- NOTE: this package will be replaced with matching package
14965
			pk_release.add_package (pvid, viewid, rtagid, userid);
14966
			-- Now do post Release Actions
14967
			pk_release.run_post_actions (pvid, rtagid);
14968
		 END IF;
51 mhunt 14969
 
53 mhunt 14970
		 -- Log
14971
		 log_action (pvid, 'action', userid, 'End of Package Add...');
14972
	  END IF;
51 mhunt 14973
   END;
14974
 
14975
/*-------------------------------------------------------------------------------------------------------*/
14976
   PROCEDURE add_package_bulk (
53 mhunt 14977
	  pvidlist   IN   VARCHAR2,
14978
	  viewid	 IN   NUMBER,
14979
	  rtagid	 IN   NUMBER,
14980
	  userid	 IN   NUMBER
51 mhunt 14981
   )
14982
   IS
53 mhunt 14983
	  nidcollector   relmgr_number_tab_t			:= relmgr_number_tab_t
14984
																		  ();
14985
	  dlocked		package_versions.dlocked%TYPE;
14986
	  pvid		   NUMBER;
14987
	  envtab		 NUMBER;
51 mhunt 14988
   BEGIN
53 mhunt 14989
	  /*--------------- Business Rules Here -------------------*/
14990
	  IF (pvidlist IS NULL)
14991
	  THEN
14992
		 raise_application_error (-20000,
14993
								  'Please select at least one package.'
14994
								 );
14995
	  END IF;
51 mhunt 14996
 
14997
/*-------------------------------------------------------*/
53 mhunt 14998
	  nidcollector := in_list_number (pvidlist);
51 mhunt 14999
 
53 mhunt 15000
	  FOR i IN 1 .. nidcollector.COUNT
15001
	  LOOP
15002
		 pvid := nidcollector (i);
15003
		 add_package (pvid, viewid, rtagid, userid);
15004
	  END LOOP;
51 mhunt 15005
   END;
15006
 
15007
/*-------------------------------------------------------------------------------------------------------*/
15008
   PROCEDURE replace_package (
53 mhunt 15009
	  newpvid   IN   NUMBER,
15010
	  oldpvid   IN   NUMBER,
15011
	  rtagid	IN   NUMBER,
15012
	  userid	IN   NUMBER
51 mhunt 15013
   )
15014
   IS
53 mhunt 15015
	  dlocked		package_versions.dlocked%TYPE;
15016
	  viewid		 NUMBER;
15017
	  envtab		 NUMBER;
15018
	  ROWCOUNT	   NUMBER;
15019
	  creleasemode   CHAR (1);
15020
	  npkgid		 NUMBER;
51 mhunt 15021
   BEGIN
53 mhunt 15022
	  /*--------------- Business Rules Here -------------------*/
15023
	  -- Check if oldPvId exists. It could have been removed
15024
	  SELECT COUNT (pv.pv_id)
15025
		INTO ROWCOUNT
15026
		FROM package_versions pv
15027
	   WHERE pv.pv_id = oldpvid;
51 mhunt 15028
 
15029
/*-------------------------------------------------------*/
15030
 
53 mhunt 15031
	  /* This procedure is usually used by "History" option in Release Manager */
51 mhunt 15032
 
53 mhunt 15033
	  -- Get dlock state
15034
	  SELECT pv.dlocked
15035
		INTO dlocked
15036
		FROM package_versions pv
15037
	   WHERE pv.pv_id = newpvid;
51 mhunt 15038
 
53 mhunt 15039
	  -- Get VIEW_ID ---
15040
	  IF ROWCOUNT = 1
15041
	  THEN
15042
		 viewid := get_view_location (oldpvid, rtagid);
15043
	  ELSE
15044
		 -- Set ViewID to default
15045
		 viewid := 7;
15046
	  END IF;
51 mhunt 15047
 
53 mhunt 15048
	  -- Get which area should go under
15049
	  envtab := select_environment_area (dlocked);
15050
	  -- Log
15051
	  log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
51 mhunt 15052
 
53 mhunt 15053
	  -- Replace package
15054
	  IF envtab = 0
15055
	  THEN
15056
		 -- WORK IN PROGRESS --
51 mhunt 15057
 
53 mhunt 15058
		 -- Delete old package
15059
		 pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
15060
		 -- Add new package
15061
		 pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
15062
	  ELSIF envtab = 1
15063
	  THEN
15064
		 -- PENDING --
51 mhunt 15065
 
53 mhunt 15066
		 -- Delete old package
15067
		 pk_planned.remove_package (oldpvid, rtagid, userid);
15068
		 -- Add new package
15069
		 pk_planned.add_package (newpvid, viewid, rtagid, userid);
15070
	  ELSIF envtab = 2
15071
	  THEN
15072
		 -- RELEASED --
51 mhunt 15073
 
53 mhunt 15074
		 -- Delete old package
15075
		 pk_release.remove_package (oldpvid, rtagid, userid);
15076
		 -- Add new package
15077
		 pk_release.add_package (newpvid, viewid, rtagid, userid);
15078
		 -- Now do post Release Actions
15079
		 pk_release.run_post_actions (newpvid, rtagid);
15080
	  END IF;
51 mhunt 15081
 
53 mhunt 15082
	  -- Log
15083
	  log_action (oldpvid, 'action', userid, 'End of Package Replace...');
51 mhunt 15084
   END;
15085
 
15086
/*-------------------------------------------------------------------------------------------------------*/
15087
   FUNCTION remove_package (
53 mhunt 15088
	  pvid		  IN   NUMBER,
15089
	  rtagid		IN   NUMBER,
15090
	  userid		IN   NUMBER,
15091
	  forceremove   IN   CHAR
51 mhunt 15092
   )
53 mhunt 15093
	  RETURN NUMBER
51 mhunt 15094
   IS
53 mhunt 15095
	  envtab		NUMBER;
15096
	  isused		BOOLEAN;
15097
	  recordcount   NUMBER;
51 mhunt 15098
   BEGIN
15099
/*--------------- Business Rules Here -------------------*/
15100
/*-------------------------------------------------------*/
15101
 
53 mhunt 15102
	  -- Find location of package
15103
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15104
 
53 mhunt 15105
	  -- Remove Package
15106
	  IF envtab = 0
15107
	  THEN
15108
		 -- WORK IN PROGRESS --
15109
		 -- Delete package
15110
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
15111
		 RETURN 0;
15112
	  ELSIF envtab = 1
15113
	  THEN
15114
		 -- PENDING --
15115
		 -- Delete package
15116
		 pk_planned.remove_package (pvid, rtagid, userid);
15117
		 RETURN 0;
15118
	  ELSIF envtab = 2
15119
	  THEN
15120
		 -- RELEASED --
51 mhunt 15121
 
53 mhunt 15122
		 -- Check if is used by other packages
15123
		 isused := TRUE;
51 mhunt 15124
 
53 mhunt 15125
		 IF forceremove = 'N'
15126
		 THEN
15127
			SELECT COUNT (pv.pv_id)
15128
			  INTO recordcount
15129
			  FROM (SELECT dpv.pkg_id, dpv.v_ext
15130
					  FROM release_content rc,
15131
						   package_dependencies dep,
15132
						   package_versions dpv
15133
					 WHERE rc.rtag_id = rtagid
15134
					   AND rc.pv_id = dep.pv_id
15135
					   AND dep.dpv_id = dpv.pv_id) rdep,
15136
				   package_versions pv
15137
			 WHERE pv.pkg_id = rdep.pkg_id
15138
			   AND NVL (pv.v_ext, '|LINK_A_NULL|') =
15139
											 NVL (rdep.v_ext, '|LINK_A_NULL|')
15140
			   AND pv.pv_id = pvid;
51 mhunt 15141
 
53 mhunt 15142
			IF recordcount > 0
15143
			THEN
15144
			   RETURN 1;					-- Return 1 as package being used
15145
			ELSE
15146
			   isused := FALSE;
15147
			END IF;
15148
		 END IF;
51 mhunt 15149
 
53 mhunt 15150
		 IF forceremove = 'Y' OR NOT isused
15151
		 THEN
15152
			-- Delete old package
15153
			pk_release.remove_package (pvid, rtagid, userid);
15154
			-- Now do post Release Actions
15155
			pk_release.run_post_actions (pvid, rtagid);
15156
			RETURN 0;
15157
		 END IF;
15158
	  END IF;
51 mhunt 15159
   END;
15160
 
15161
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15162
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15163
 
51 mhunt 15164
   PROCEDURE get_environment_items (
53 mhunt 15165
	  viewtype		   IN	   NUMBER,
15166
	  userid			 IN	   NUMBER,
15167
	  rtagid			 IN	   NUMBER,
15168
	  sviewidshowlist	IN	   VARCHAR2,
15169
	  ntruerecordcount   OUT	  NUMBER,
15170
	  recordset		  OUT	  typecur
51 mhunt 15171
   )
15172
   IS
15173
   BEGIN
53 mhunt 15174
	  -- Get true record count because views can give false count
15175
	  SELECT COUNT (pl.pv_id)
15176
		INTO ntruerecordcount
15177
		FROM environment_view pl
15178
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15179
 
53 mhunt 15180
	  IF viewtype = 1
15181
	  THEN
15182
		 /*--- GUEST VIEW ---*/
15183
		 OPEN recordset FOR
15184
			SELECT   *
15185
				FROM (
15186
					  /* Base Views collapsed */
15187
					  SELECT DISTINCT vi.view_id, vi.view_name,
15188
									  TO_NUMBER (NULL) AS pkg_state,
15189
									  TO_NUMBER (NULL) AS deprecated_state,
15190
									  TO_NUMBER (NULL) AS pv_id,
15191
									  NULL AS pkg_name, NULL AS pkg_version,
15192
									  NULL AS dlocked, NULL AS pv_description,
15193
									  rel.operation
15194
								 FROM environment_view rel, views vi
15195
								WHERE rel.view_id = vi.view_id
15196
								  AND rtag_id = rtagid
15197
								  AND rel.view_id NOT IN (
15198
										 SELECT *
15199
										   FROM THE
15200
												   (SELECT CAST
15201
															  (in_list_number
15202
																  (sviewidshowlist
15203
																  ) AS relmgr_number_tab_t
15204
															  )
15205
													  FROM DUAL
15206
												   ))
15207
					  UNION
15208
					  /* Base Views expanded */
15209
					  SELECT vi.view_id, vi.view_name,
15210
							 DECODE (rel.pkg_state,
15211
									 NULL, 0,
15212
									 rel.pkg_state
15213
									) AS pkg_state,
15214
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15215
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15216
							 rel.operation
15217
						FROM environment_view rel,
15218
							 PACKAGES pkg,
15219
							 package_versions pv,
15220
							 views vi
15221
					   WHERE pv.pkg_id = pkg.pkg_id
15222
						 AND rel.pv_id = pv.pv_id
15223
						 AND rel.view_id = vi.view_id
15224
						 AND rel.view_id IN (
15225
								SELECT *
15226
								  FROM THE
15227
										  (SELECT CAST
15228
													 (in_list_number
15229
															  (sviewidshowlist) AS relmgr_number_tab_t
15230
													 )
15231
											 FROM DUAL
15232
										  ))
15233
						 AND rtag_id = rtagid) ord
15234
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15235
	  ELSIF viewtype = 2
15236
	  THEN
15237
		 /*--- PERSONAL VIEW ---*/
15238
		 OPEN recordset FOR
15239
			SELECT   *
15240
				FROM (
15241
					  /* Base Views collapsed */
15242
					  SELECT DISTINCT vi.view_id, vi.view_name,
15243
									  TO_NUMBER (NULL) AS pkg_state,
15244
									  TO_NUMBER (NULL) AS deprecated_state,
15245
									  TO_NUMBER (NULL) AS pv_id,
15246
									  NULL AS pkg_name, NULL AS pkg_version,
15247
									  NULL AS dlocked, NULL AS pv_description,
15248
									  rel.operation
15249
								 FROM environment_view rel,
15250
									  view_settings vs,
15251
									  views vi
15252
								WHERE rel.view_id = vi.view_id
15253
								  AND vs.view_id = rel.view_id
15254
								  AND vs.user_id = userid
15255
								  AND rtag_id = rtagid
15256
								  AND rel.view_id NOT IN (
15257
										 SELECT *
15258
										   FROM THE
15259
												   (SELECT CAST
15260
															  (in_list_number
15261
																  (sviewidshowlist
15262
																  ) AS relmgr_number_tab_t
15263
															  )
15264
													  FROM DUAL
15265
												   ))
15266
					  UNION
15267
					  /* Base Views expanded */
15268
					  SELECT vi.view_id, vi.view_name,
15269
							 DECODE (rel.pkg_state,
15270
									 NULL, 0,
15271
									 rel.pkg_state
15272
									) AS pkg_state,
15273
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15274
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15275
							 rel.operation
15276
						FROM environment_view rel,
15277
							 PACKAGES pkg,
15278
							 package_versions pv,
15279
							 views vi,
15280
							 view_settings vs
15281
					   WHERE pv.pkg_id = pkg.pkg_id
15282
						 AND rel.pv_id = pv.pv_id
15283
						 AND rel.view_id = vi.view_id
15284
						 AND vs.view_id = vi.view_id
15285
						 AND vs.user_id = userid
15286
						 AND rel.view_id IN (
15287
								SELECT *
15288
								  FROM THE
15289
										  (SELECT CAST
15290
													 (in_list_number
15291
															  (sviewidshowlist) AS relmgr_number_tab_t
15292
													 )
15293
											 FROM DUAL
15294
										  ))
15295
						 AND rtag_id = rtagid
15296
					  UNION
15297
					  /* Private Views collapsed */
15298
					  SELECT vi.view_id, vi.view_name,
15299
							 TO_NUMBER (NULL) AS pkg_state,
15300
							 TO_NUMBER (NULL) AS deprecated_state,
15301
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15302
							 NULL AS pkg_version, NULL AS dlocked,
15303
							 NULL AS pv_description,
15304
							 rel.operation
15305
						FROM view_settings vs,
15306
							 view_def vd,
15307
							 views vi,
15308
							 environment_view rel,
15309
							 package_versions pv
15310
					   WHERE vs.view_id = vi.view_id
15311
						 AND rel.pv_id = pv.pv_id
15312
						 AND vd.pkg_id = pv.pkg_id
15313
						 AND vd.view_id = vi.view_id
15314
						 AND vi.base_view = 'N'
15315
						 AND rel.rtag_id = rtagid
15316
						 AND vs.user_id = userid
15317
						 AND vi.view_id NOT IN (
15318
								SELECT *
15319
								  FROM THE
15320
										  (SELECT CAST
15321
													 (in_list_number
15322
															  (sviewidshowlist) AS relmgr_number_tab_t
15323
													 )
15324
											 FROM DUAL
15325
										  ))
15326
					  UNION
15327
					  /* Private Views expanded */
15328
					  SELECT vi.view_id, vi.view_name,
15329
							 DECODE (rel.pkg_state,
15330
									 NULL, 0,
15331
									 rel.pkg_state
15332
									) AS pkg_state,
15333
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15334
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15335
							 rel.operation
15336
						FROM users usr,
15337
							 view_settings vs,
15338
							 view_def vd,
15339
							 views vi,
15340
							 environment_view rel,
15341
							 PACKAGES pkg,
15342
							 package_versions pv
15343
					   WHERE vs.user_id = usr.user_id
15344
						 AND vs.view_id = vi.view_id
15345
						 AND vd.view_id = vi.view_id
15346
						 AND pv.pkg_id = pkg.pkg_id
15347
						 AND rel.pv_id = pv.pv_id
15348
						 AND rel.rtag_id = rtagid
15349
						 AND vd.pkg_id = pkg.pkg_id
15350
						 AND vi.base_view = 'N'
15351
						 AND vi.view_id IN (
15352
								SELECT *
15353
								  FROM THE
15354
										  (SELECT CAST
15355
													 (in_list_number
15356
															  (sviewidshowlist) AS relmgr_number_tab_t
15357
													 )
15358
											 FROM DUAL
15359
										  ))
15360
						 AND usr.user_id = userid) ord
15361
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15362
	  END IF;
51 mhunt 15363
   END;
15364
 
15365
/*-------------------------------------------------------------------------------------------------------*/
15366
   PROCEDURE get_released_items (
53 mhunt 15367
	  viewtype		   IN	   NUMBER,
15368
	  userid			 IN	   NUMBER,
15369
	  rtagid			 IN	   NUMBER,
15370
	  sviewidshowlist	IN	   VARCHAR2,
15371
	  ntruerecordcount   OUT	  NUMBER,
15372
	  recordset		  OUT	  typecur
51 mhunt 15373
   )
15374
   IS
15375
   BEGIN
53 mhunt 15376
	  -- Get true record count because views can give false count
15377
	  SELECT COUNT (rc.pv_id)
15378
		INTO ntruerecordcount
15379
		FROM release_content rc
15380
	   WHERE rc.rtag_id = rtagid;
51 mhunt 15381
 
53 mhunt 15382
	  IF viewtype = 1
15383
	  THEN
15384
		 /*--- GUEST VIEW ---*/
15385
		 OPEN recordset FOR
15386
			SELECT   *
15387
				FROM (
15388
					  /* Base Views collapsed */
15389
					  SELECT DISTINCT vi.view_id, vi.view_name,
15390
									  TO_NUMBER (NULL) AS pkg_state,
15391
									  TO_NUMBER (NULL) AS deprecated_state,
15392
									  TO_NUMBER (NULL) AS pv_id,
15393
									  NULL AS pkg_name, NULL AS pkg_version,
15394
									  NULL AS dlocked, NULL AS pv_description
15395
								 FROM release_content rel, views vi
15396
								WHERE rel.base_view_id = vi.view_id
15397
								  AND rtag_id = rtagid
15398
								  AND rel.base_view_id NOT IN (
15399
										 SELECT *
15400
										   FROM THE
15401
												   (SELECT CAST
15402
															  (in_list_number
15403
																  (sviewidshowlist
15404
																  ) AS relmgr_number_tab_t
15405
															  )
15406
													  FROM DUAL
15407
												   ))
15408
					  UNION
15409
					  /* Base Views expanded */
15410
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15411
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15412
							 pv.pkg_version, pv.dlocked, pv.pv_description
15413
						FROM release_content rel,
15414
							 PACKAGES pkg,
15415
							 package_versions pv,
15416
							 views vi
15417
					   WHERE pv.pkg_id = pkg.pkg_id
15418
						 AND rel.pv_id = pv.pv_id
15419
						 AND rel.base_view_id = vi.view_id
15420
						 AND rel.base_view_id IN (
15421
								SELECT *
15422
								  FROM THE
15423
										  (SELECT CAST
15424
													 (in_list_number
15425
															  (sviewidshowlist) AS relmgr_number_tab_t
15426
													 )
15427
											 FROM DUAL
15428
										  ))
15429
						 AND rtag_id = rtagid) ord
15430
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15431
	  ELSIF viewtype = 2
15432
	  THEN
15433
		 /*--- PERSONAL VIEW ---*/
15434
		 OPEN recordset FOR
15435
			SELECT   *
15436
				FROM (
15437
					  /* Base Views collapsed */
15438
					  SELECT DISTINCT vi.view_id, vi.view_name,
15439
									  TO_NUMBER (NULL) AS pkg_state,
15440
									  TO_NUMBER (NULL) AS deprecated_state,
15441
									  TO_NUMBER (NULL) AS pv_id,
15442
									  NULL AS pkg_name, NULL AS pkg_version,
15443
									  NULL AS dlocked, NULL AS pv_description
15444
								 FROM release_content rel,
15445
									  view_settings vs,
15446
									  views vi
15447
								WHERE rel.base_view_id = vi.view_id
15448
								  AND vs.view_id = rel.base_view_id
15449
								  AND vs.user_id = userid
15450
								  AND rtag_id = rtagid
15451
								  AND rel.base_view_id NOT IN (
15452
										 SELECT *
15453
										   FROM THE
15454
												   (SELECT CAST
15455
															  (in_list_number
15456
																  (sviewidshowlist
15457
																  ) AS relmgr_number_tab_t
15458
															  )
15459
													  FROM DUAL
15460
												   ))
15461
					  UNION
15462
					  /* Base Views expanded */
15463
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15464
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15465
							 pv.pkg_version, pv.dlocked, pv.pv_description
15466
						FROM release_content rel,
15467
							 PACKAGES pkg,
15468
							 package_versions pv,
15469
							 views vi,
15470
							 view_settings vs
15471
					   WHERE pv.pkg_id = pkg.pkg_id
15472
						 AND rel.pv_id = pv.pv_id
15473
						 AND rel.base_view_id = vi.view_id
15474
						 AND vs.view_id = vi.view_id
15475
						 AND vs.user_id = userid
15476
						 AND rel.base_view_id IN (
15477
								SELECT *
15478
								  FROM THE
15479
										  (SELECT CAST
15480
													 (in_list_number
15481
															  (sviewidshowlist) AS relmgr_number_tab_t
15482
													 )
15483
											 FROM DUAL
15484
										  ))
15485
						 AND rtag_id = rtagid
15486
					  UNION
15487
					  /* Private Views collapsed */
15488
					  SELECT vi.view_id, vi.view_name,
15489
							 TO_NUMBER (NULL) AS pkg_state,
15490
							 TO_NUMBER (NULL) AS deprecated_state,
15491
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15492
							 NULL AS pkg_version, NULL AS dlocked,
15493
							 NULL AS pv_description
15494
						FROM view_settings vs,
15495
							 view_def vd,
15496
							 views vi,
15497
							 release_content rel,
15498
							 package_versions pv
15499
					   WHERE vs.view_id = vi.view_id
15500
						 AND rel.pv_id = pv.pv_id
15501
						 AND vd.pkg_id = pv.pkg_id
15502
						 AND vd.view_id = vi.view_id
15503
						 AND vi.base_view = 'N'
15504
						 AND rel.rtag_id = rtagid
15505
						 AND vs.user_id = userid
15506
						 AND vi.view_id NOT IN (
15507
								SELECT *
15508
								  FROM THE
15509
										  (SELECT CAST
15510
													 (in_list_number
15511
															  (sviewidshowlist) AS relmgr_number_tab_t
15512
													 )
15513
											 FROM DUAL
15514
										  ))
15515
					  UNION
15516
					  /* Private Views expanded */
15517
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15518
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15519
							 pv.pkg_version, pv.dlocked, pv.pv_description
15520
						FROM users usr,
15521
							 view_settings vs,
15522
							 view_def vd,
15523
							 views vi,
15524
							 release_content rel,
15525
							 PACKAGES pkg,
15526
							 package_versions pv
15527
					   WHERE vs.user_id = usr.user_id
15528
						 AND vs.view_id = vi.view_id
15529
						 AND vd.view_id = vi.view_id
15530
						 AND pv.pkg_id = pkg.pkg_id
15531
						 AND rel.pv_id = pv.pv_id
15532
						 AND rel.rtag_id = rtagid
15533
						 AND vd.pkg_id = pkg.pkg_id
15534
						 AND vi.base_view = 'N'
15535
						 AND vi.view_id IN (
15536
								SELECT *
15537
								  FROM THE
15538
										  (SELECT CAST
15539
													 (in_list_number
15540
															  (sviewidshowlist) AS relmgr_number_tab_t
15541
													 )
15542
											 FROM DUAL
15543
										  ))
15544
						 AND usr.user_id = userid) ord
15545
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15546
	  END IF;
51 mhunt 15547
   END;
15548
 
15549
/*-------------------------------------------------------------------------------------------------------*/
15550
   PROCEDURE get_work_in_progress_items (
53 mhunt 15551
	  viewtype		   IN	   NUMBER,
15552
	  userid			 IN	   NUMBER,
15553
	  rtagid			 IN	   NUMBER,
15554
	  sviewidshowlist	IN	   VARCHAR2,
15555
	  ntruerecordcount   OUT	  NUMBER,
15556
	  recordset		  OUT	  typecur
51 mhunt 15557
   )
15558
   IS
15559
   BEGIN
53 mhunt 15560
	  -- Get true record count because views can give false count
15561
	  SELECT COUNT (wip.pv_id)
15562
		INTO ntruerecordcount
15563
		FROM work_in_progress wip
15564
	   WHERE wip.rtag_id = rtagid;
51 mhunt 15565
 
53 mhunt 15566
	  IF viewtype = 1
15567
	  THEN
15568
		 /*--- GUEST VIEW ---*/
15569
		 OPEN recordset FOR
15570
			SELECT   *
15571
				FROM (
15572
					  /* Base Views collapsed */
15573
					  SELECT DISTINCT vi.view_id, vi.view_name,
15574
									  TO_NUMBER (NULL) AS pkg_state,
15575
									  TO_NUMBER (NULL) AS deprecated_state,
15576
									  TO_NUMBER (NULL) AS pv_id,
15577
									  NULL AS pkg_name, NULL AS pkg_version,
15578
									  NULL AS dlocked, NULL AS pv_description
15579
								 FROM work_in_progress rel, views vi
15580
								WHERE rel.view_id = vi.view_id
15581
								  AND rtag_id = rtagid
15582
								  AND rel.view_id NOT IN (
15583
										 SELECT *
15584
										   FROM THE
15585
												   (SELECT CAST
15586
															  (in_list_number
15587
																  (sviewidshowlist
15588
																  ) AS relmgr_number_tab_t
15589
															  )
15590
													  FROM DUAL
15591
												   ))
15592
					  UNION
15593
					  /* Base Views expanded */
15594
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15595
 
15596
							 --rel.pkg_state,
15597
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15598
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15599
							 pv.pv_description
15600
						FROM work_in_progress rel,
15601
							 PACKAGES pkg,
15602
							 package_versions pv,
15603
							 views vi
15604
					   WHERE pv.pkg_id = pkg.pkg_id
15605
						 AND rel.pv_id = pv.pv_id
15606
						 AND rel.view_id = vi.view_id
15607
						 AND rel.view_id IN (
15608
								SELECT *
15609
								  FROM THE
15610
										  (SELECT CAST
15611
													 (in_list_number
15612
															  (sviewidshowlist) AS relmgr_number_tab_t
15613
													 )
15614
											 FROM DUAL
15615
										  ))
15616
						 AND rtag_id = rtagid) ord
15617
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15618
	  ELSIF viewtype = 2
15619
	  THEN
15620
		 /*--- PERSONAL VIEW ---*/
15621
		 OPEN recordset FOR
15622
			SELECT   *
15623
				FROM (
15624
					  /* Base Views collapsed */
15625
					  SELECT DISTINCT vi.view_id, vi.view_name,
15626
									  TO_NUMBER (NULL) AS pkg_state,
15627
									  TO_NUMBER (NULL) AS deprecated_state,
15628
									  TO_NUMBER (NULL) AS pv_id,
15629
									  NULL AS pkg_name, NULL AS pkg_version,
15630
									  NULL AS dlocked, NULL AS pv_description
15631
								 FROM work_in_progress rel,
15632
									  view_settings vs,
15633
									  views vi
15634
								WHERE rel.view_id = vi.view_id
15635
								  AND vs.view_id = rel.view_id
15636
								  AND vs.user_id = userid
15637
								  AND rtag_id = rtagid
15638
								  AND rel.view_id NOT IN (
15639
										 SELECT *
15640
										   FROM THE
15641
												   (SELECT CAST
15642
															  (in_list_number
15643
																  (sviewidshowlist
15644
																  ) AS relmgr_number_tab_t
15645
															  )
15646
													  FROM DUAL
15647
												   ))
15648
					  UNION
15649
					  /* Base Views expanded */
15650
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15651
 
15652
							 --rel.pkg_state,
15653
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15654
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15655
							 pv.pv_description
15656
						FROM work_in_progress rel,
15657
							 PACKAGES pkg,
15658
							 package_versions pv,
15659
							 views vi,
15660
							 view_settings vs
15661
					   WHERE pv.pkg_id = pkg.pkg_id
15662
						 AND rel.pv_id = pv.pv_id
15663
						 AND rel.view_id = vi.view_id
15664
						 AND vs.view_id = vi.view_id
15665
						 AND vs.user_id = userid
15666
						 AND rel.view_id IN (
15667
								SELECT *
15668
								  FROM THE
15669
										  (SELECT CAST
15670
													 (in_list_number
15671
															  (sviewidshowlist) AS relmgr_number_tab_t
15672
													 )
15673
											 FROM DUAL
15674
										  ))
15675
						 AND rtag_id = rtagid
15676
					  UNION
15677
					  /* Private Views collapsed */
15678
					  SELECT vi.view_id, vi.view_name,
15679
							 TO_NUMBER (NULL) AS pkg_state,
15680
							 TO_NUMBER (NULL) AS deprecated_state,
15681
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15682
							 NULL AS pkg_version, NULL AS dlocked,
15683
							 NULL AS pv_description
15684
						FROM view_settings vs,
15685
							 view_def vd,
15686
							 views vi,
15687
							 work_in_progress rel,
15688
							 package_versions pv
15689
					   WHERE vs.view_id = vi.view_id
15690
						 AND rel.pv_id = pv.pv_id
15691
						 AND vd.pkg_id = pv.pkg_id
15692
						 AND vd.view_id = vi.view_id
15693
						 AND vi.base_view = 'N'
15694
						 AND rel.rtag_id = rtagid
15695
						 AND vs.user_id = userid
15696
						 AND vi.view_id NOT IN (
15697
								SELECT *
15698
								  FROM THE
15699
										  (SELECT CAST
15700
													 (in_list_number
15701
															  (sviewidshowlist) AS relmgr_number_tab_t
15702
													 )
15703
											 FROM DUAL
15704
										  ))
15705
					  UNION
15706
					  /* Private Views expanded */
15707
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15708
 
15709
							 --rel.pkg_state,
15710
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15711
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15712
							 pv.pv_description
15713
						FROM users usr,
15714
							 view_settings vs,
15715
							 view_def vd,
15716
							 views vi,
15717
							 work_in_progress rel,
15718
							 PACKAGES pkg,
15719
							 package_versions pv
15720
					   WHERE vs.user_id = usr.user_id
15721
						 AND vs.view_id = vi.view_id
15722
						 AND vd.view_id = vi.view_id
15723
						 AND pv.pkg_id = pkg.pkg_id
15724
						 AND rel.pv_id = pv.pv_id
15725
						 AND rel.rtag_id = rtagid
15726
						 AND vd.pkg_id = pkg.pkg_id
15727
						 AND vi.base_view = 'N'
15728
						 AND vi.view_id IN (
15729
								SELECT *
15730
								  FROM THE
15731
										  (SELECT CAST
15732
													 (in_list_number
15733
															  (sviewidshowlist) AS relmgr_number_tab_t
15734
													 )
15735
											 FROM DUAL
15736
										  ))
15737
						 AND usr.user_id = userid) ord
15738
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15739
	  END IF;
51 mhunt 15740
   END;
15741
 
15742
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15743
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15744
 
51 mhunt 15745
   PROCEDURE get_pending_items (
53 mhunt 15746
	  viewtype		   IN	   NUMBER,
15747
	  userid			 IN	   NUMBER,
15748
	  rtagid			 IN	   NUMBER,
15749
	  sviewidshowlist	IN	   VARCHAR2,
15750
	  ntruerecordcount   OUT	  NUMBER,
15751
	  recordset		  OUT	  typecur
51 mhunt 15752
   )
15753
   IS
15754
   BEGIN
53 mhunt 15755
	  -- Get true record count because views can give false count
15756
	  SELECT COUNT (pl.pv_id)
15757
		INTO ntruerecordcount
15758
		FROM planned pl
15759
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15760
 
53 mhunt 15761
	  IF viewtype = 1
15762
	  THEN
15763
		 /*--- GUEST VIEW ---*/
15764
		 OPEN recordset FOR
15765
			SELECT   *
15766
				FROM (
15767
					  /* Base Views collapsed */
15768
					  SELECT DISTINCT vi.view_id, vi.view_name,
15769
									  TO_NUMBER (NULL) AS pkg_state,
15770
									  TO_NUMBER (NULL) AS deprecated_state,
15771
									  TO_NUMBER (NULL) AS pv_id,
15772
									  NULL AS pkg_name, NULL AS pkg_version,
15773
									  NULL AS dlocked, NULL AS pv_description,
15774
									  rel.operation
15775
								 FROM planned rel, views vi
15776
								WHERE rel.view_id = vi.view_id
15777
								  AND rtag_id = rtagid
15778
								  AND rel.view_id NOT IN (
15779
										 SELECT *
15780
										   FROM THE
15781
												   (SELECT CAST
15782
															  (in_list_number
15783
																  (sviewidshowlist
15784
																  ) AS relmgr_number_tab_t
15785
															  )
15786
													  FROM DUAL
15787
												   ))
15788
					  UNION
15789
					  /* Base Views expanded */
15790
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15791
 
15792
							 --rel.pkg_state,
15793
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15794
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15795
							 pv.pv_description,
15796
							 rel.operation
15797
						FROM planned rel,
15798
							 PACKAGES pkg,
15799
							 package_versions pv,
15800
							 views vi
15801
					   WHERE pv.pkg_id = pkg.pkg_id
15802
						 AND rel.pv_id = pv.pv_id
15803
						 AND rel.view_id = vi.view_id
15804
						 AND rel.view_id IN (
15805
								SELECT *
15806
								  FROM THE
15807
										  (SELECT CAST
15808
													 (in_list_number
15809
															  (sviewidshowlist) AS relmgr_number_tab_t
15810
													 )
15811
											 FROM DUAL
15812
										  ))
15813
						 AND rtag_id = rtagid) ord
15814
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15815
	  ELSIF viewtype = 2
15816
	  THEN
15817
		 /*--- PERSONAL VIEW ---*/
15818
		 OPEN recordset FOR
15819
			SELECT   *
15820
				FROM (
15821
					  /* Base Views collapsed */
15822
					  SELECT DISTINCT vi.view_id, vi.view_name,
15823
									  TO_NUMBER (NULL) AS pkg_state,
15824
									  TO_NUMBER (NULL) AS deprecated_state,
15825
									  TO_NUMBER (NULL) AS pv_id,
15826
									  NULL AS pkg_name, NULL AS pkg_version,
15827
									  NULL AS dlocked, NULL AS pv_description,
15828
									  rel.operation
15829
								 FROM planned rel, view_settings vs, views vi
15830
								WHERE rel.view_id = vi.view_id
15831
								  AND vs.view_id = rel.view_id
15832
								  AND vs.user_id = userid
15833
								  AND rtag_id = rtagid
15834
								  AND rel.view_id NOT IN (
15835
										 SELECT *
15836
										   FROM THE
15837
												   (SELECT CAST
15838
															  (in_list_number
15839
																  (sviewidshowlist
15840
																  ) AS relmgr_number_tab_t
15841
															  )
15842
													  FROM DUAL
15843
												   ))
15844
					  UNION
15845
					  /* Base Views expanded */
15846
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15847
 
15848
							 --rel.pkg_state,
15849
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15850
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15851
							 pv.pv_description,
15852
							 rel.operation
15853
						FROM planned rel,
15854
							 PACKAGES pkg,
15855
							 package_versions pv,
15856
							 views vi,
15857
							 view_settings vs
15858
					   WHERE pv.pkg_id = pkg.pkg_id
15859
						 AND rel.pv_id = pv.pv_id
15860
						 AND rel.view_id = vi.view_id
15861
						 AND vs.view_id = vi.view_id
15862
						 AND vs.user_id = userid
15863
						 AND rel.view_id IN (
15864
								SELECT *
15865
								  FROM THE
15866
										  (SELECT CAST
15867
													 (in_list_number
15868
															  (sviewidshowlist) AS relmgr_number_tab_t
15869
													 )
15870
											 FROM DUAL
15871
										  ))
15872
						 AND rtag_id = rtagid
15873
					  UNION
15874
					  /* Private Views collapsed */
15875
					  SELECT vi.view_id, vi.view_name,
15876
							 TO_NUMBER (NULL) AS pkg_state,
15877
							 TO_NUMBER (NULL) AS deprecated_state,
15878
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15879
							 NULL AS pkg_version, NULL AS dlocked,
15880
							 NULL AS pv_description,
15881
							 rel.operation
15882
						FROM view_settings vs,
15883
							 view_def vd,
15884
							 views vi,
15885
							 planned rel,
15886
							 package_versions pv
15887
					   WHERE vs.view_id = vi.view_id
15888
						 AND rel.pv_id = pv.pv_id
15889
						 AND vd.pkg_id = pv.pkg_id
15890
						 AND vd.view_id = vi.view_id
15891
						 AND vi.base_view = 'N'
15892
						 AND rel.rtag_id = rtagid
15893
						 AND vs.user_id = userid
15894
						 AND vi.view_id NOT IN (
15895
								SELECT *
15896
								  FROM THE
15897
										  (SELECT CAST
15898
													 (in_list_number
15899
															  (sviewidshowlist) AS relmgr_number_tab_t
15900
													 )
15901
											 FROM DUAL
15902
										  ))
15903
					  UNION
15904
					  /* Private Views expanded */
15905
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15906
 
15907
							 --rel.pkg_state,
15908
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15909
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15910
							 pv.pv_description,
15911
							 rel.operation
15912
						FROM users usr,
15913
							 view_settings vs,
15914
							 view_def vd,
15915
							 views vi,
15916
							 planned rel,
15917
							 PACKAGES pkg,
15918
							 package_versions pv
15919
					   WHERE vs.user_id = usr.user_id
15920
						 AND vs.view_id = vi.view_id
15921
						 AND vd.view_id = vi.view_id
15922
						 AND pv.pkg_id = pkg.pkg_id
15923
						 AND rel.pv_id = pv.pv_id
15924
						 AND rel.rtag_id = rtagid
15925
						 AND vd.pkg_id = pkg.pkg_id
15926
						 AND vi.base_view = 'N'
15927
						 AND vi.view_id IN (
15928
								SELECT *
15929
								  FROM THE
15930
										  (SELECT CAST
15931
													 (in_list_number
15932
															  (sviewidshowlist) AS relmgr_number_tab_t
15933
													 )
15934
											 FROM DUAL
15935
										  ))
15936
						 AND usr.user_id = userid) ord
15937
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15938
	  END IF;
51 mhunt 15939
   END;
15940
 
15941
/*-------------------------------------------------------------------------------------------------------*/
15942
   PROCEDURE get_view_content (
53 mhunt 15943
	  rtagid	  IN	   NUMBER,
15944
	  viewid	  IN	   NUMBER,
15945
	  recordset   OUT	  typecur
51 mhunt 15946
   )
15947
   IS
53 mhunt 15948
	  isbaseview   CHAR (1);
51 mhunt 15949
   BEGIN
53 mhunt 15950
	  -- Check if the view is BASE VIEW
15951
	  SELECT vi.base_view
15952
		INTO isbaseview
15953
		FROM views vi
15954
	   WHERE vi.view_id = viewid;
51 mhunt 15955
 
53 mhunt 15956
	  IF (isbaseview = 'Y')
15957
	  THEN
15958
		 -- Get Base view content
15959
		 OPEN recordset FOR
15960
			SELECT   DECODE (rel.pkg_state,
15961
							 NULL, 0,
15962
							 rel.pkg_state
15963
							) AS pkg_state,
15964
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15965
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15966
					 pv.build_type,
15967
					 rel.operation
15968
				FROM environment_view rel, PACKAGES pkg, package_versions pv
15969
			   WHERE pv.pkg_id = pkg.pkg_id
15970
				 AND rel.pv_id = pv.pv_id
15971
				 AND rel.view_id = viewid
15972
				 AND rel.rtag_id = rtagid
15973
			ORDER BY UPPER (pkg.pkg_name);
15974
	  ELSE
15975
		 -- Get non base view content
15976
		 OPEN recordset FOR
15977
			SELECT   DECODE (rel.pkg_state,
15978
							 NULL, 0,
15979
							 rel.pkg_state
15980
							) AS pkg_state,
15981
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15982
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15983
					 pv.build_type,
15984
					 rel.operation
15985
				FROM environment_view rel,
15986
					 PACKAGES pkg,
15987
					 package_versions pv,
15988
					 view_def vd
15989
			   WHERE pv.pkg_id = pkg.pkg_id
15990
				 AND rel.pv_id = pv.pv_id
15991
				 AND rel.rtag_id = rtagid
15992
				 AND vd.view_id = viewid
15993
				 AND vd.pkg_id = pv.pkg_id
15994
			ORDER BY UPPER (pkg.pkg_name);
15995
	  END IF;
51 mhunt 15996
   END;
15997
 
15998
/*-------------------------------------------------------------------------------------------------------*/
15999
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 16000
	  RETURN NUMBER
51 mhunt 16001
   IS
53 mhunt 16002
	  envtab			 NUMBER;
16003
	  returnvalue		NUMBER;
16004
	  return_not_found   NUMBER := -1;
51 mhunt 16005
   BEGIN
53 mhunt 16006
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 16007
 
53 mhunt 16008
	  IF envtab = 0
16009
	  THEN
16010
		 -- WORK IN PROGRESS --
16011
		 returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
16012
	  ELSIF envtab = 1
16013
	  THEN
16014
		 -- PENDING --
16015
		 returnvalue := pk_planned.get_package_view (pvid, rtagid);
16016
	  ELSIF envtab = 2
16017
	  THEN
16018
		 -- RELEASED --
16019
		 returnvalue := pk_release.get_package_view (pvid, rtagid);
16020
	  ELSE
16021
		 -- This may be a Patch not located anywhere but unlocked
16022
		 returnvalue := return_not_found;
16023
	  END IF;
51 mhunt 16024
 
53 mhunt 16025
	  RETURN returnvalue;
51 mhunt 16026
   END;
16027
 
16028
/*-------------------------------------------------------------------------------------------------------*/
16029
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16030
   IS
53 mhunt 16031
	  viewid		  NUMBER;
16032
	  envtab		  NUMBER;
16033
	  ispatch		 CHAR (1) := NULL;
16034
	  buildtype	   CHAR (1) := NULL;
16035
	  lastversionid   NUMBER;
51 mhunt 16036
   BEGIN
53 mhunt 16037
	  -- Check if package is patch
16038
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16039
		INTO ispatch, buildtype, lastversionid
16040
		FROM package_versions pv
16041
	   WHERE pv.pv_id = pvid;
51 mhunt 16042
 
53 mhunt 16043
	  -- Get ViewId
16044
	  viewid := get_package_view (pvid, rtagid);
16045
	  -- Remove from current area
16046
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16047
 
53 mhunt 16048
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16049
	  -- Exclude patches, ripple builds
16050
	  IF (envtab < 0)
16051
	  THEN
16052
		 -- Not found in work-in-progress or pending
16053
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16054
		 THEN
16055
			raise_application_error (-20000,
16056
									 'This package cannot be released here.'
16057
									);
16058
		 END IF;
16059
	  END IF;
51 mhunt 16060
 
53 mhunt 16061
	  -- Log
16062
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16063
 
53 mhunt 16064
	  IF envtab = 0
16065
	  THEN
16066
		 -- WORK IN PROGRESS --
16067
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16068
	  ELSIF envtab = 1
16069
	  THEN
16070
		 -- PENDING --
16071
		 pk_planned.remove_package (pvid, rtagid, userid);
16072
	  END IF;
51 mhunt 16073
 
53 mhunt 16074
	  -- Change package state
16075
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16076
 
53 mhunt 16077
	  -- Make sure it is valid BASE VIEW
16078
	  IF viewid < 1
16079
	  THEN
16080
		 viewid := 7;							-- This is default base view
16081
	  END IF;
51 mhunt 16082
 
53 mhunt 16083
	  IF (ispatch IS NULL)
16084
	  THEN
16085
		 -- Add package to new area
16086
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16087
	  END IF;
51 mhunt 16088
 
53 mhunt 16089
	  -- Now do post Release Actions
16090
	  pk_release.run_post_actions (pvid, rtagid);
51 mhunt 16091
 
53 mhunt 16092
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16093
	  DELETE FROM do_not_ripple
16094
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16095
 
53 mhunt 16096
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16097
	  DELETE FROM advisory_ripple
16098
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16099
 
53 mhunt 16100
	  -- Log
16101
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16102
   END;
16103
 
16104
/*-------------------------------------------------------------------------------------------------------*/
16105
   PROCEDURE auto_make_release (
53 mhunt 16106
	  pvid			IN   NUMBER,
16107
	  rtagid		  IN   NUMBER,
16108
	  userid		  IN   NUMBER,
16109
	  vext			IN   package_versions.v_ext%TYPE,
16110
	  ssv_ext		 IN   package_versions.v_ext%TYPE,
16111
	  clonefrompvid   IN   NUMBER
51 mhunt 16112
   )
16113
   IS
53 mhunt 16114
	  viewid		  NUMBER;
16115
	  envtab		  NUMBER;
16116
	  ispatch		 CHAR (1) := NULL;
16117
	  buildtype	   CHAR (1) := NULL;
16118
	  lastversionid   NUMBER;
51 mhunt 16119
   BEGIN
53 mhunt 16120
	  -- Check if package is patch
16121
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16122
		INTO ispatch, buildtype, lastversionid
16123
		FROM package_versions pv
16124
	   WHERE pv.pv_id = pvid;
51 mhunt 16125
 
53 mhunt 16126
	  IF vext <> ssv_ext
16127
	  THEN
16128
		 -- Get ViewId
16129
		 viewid := get_package_view (clonefrompvid, rtagid);
16130
		 -- Remove from current area
16131
		 envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
16132
	  ELSE
16133
		 -- Get ViewId
16134
		 viewid := get_package_view (pvid, rtagid);
16135
		 -- Remove from current area
16136
		 envtab := pk_environment.get_package_area (pvid, rtagid);
16137
	  END IF;
51 mhunt 16138
 
53 mhunt 16139
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16140
	  -- Exclude patches, ripple builds
16141
	  IF (envtab < 0)
16142
	  THEN
16143
		 -- Not found in work-in-progress or pending
16144
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16145
		 THEN
16146
			raise_application_error (-20000,
16147
									 'This package cannot be released here.'
16148
									);
16149
		 END IF;
16150
	  END IF;
51 mhunt 16151
 
53 mhunt 16152
	  -- Log
16153
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16154
 
53 mhunt 16155
	  IF vext <> ssv_ext
16156
	  THEN
16157
		 IF envtab = 0
16158
		 THEN
16159
			-- WORK IN PROGRESS --
16160
			pk_work_in_progress.remove_package (clonefrompvid, rtagid,
16161
												userid);
16162
		 ELSIF envtab = 1
16163
		 THEN
16164
			-- PENDING --
16165
			pk_planned.remove_package (clonefrompvid, rtagid, userid);
16166
		 ELSIF envtab = 2
16167
		 THEN
16168
			-- RELEASED --
16169
			pk_release.remove_package (clonefrompvid, rtagid, userid);
16170
		 END IF;
16171
	  ELSE
16172
		 IF envtab = 0
16173
		 THEN
16174
			-- WORK IN PROGRESS --
16175
			pk_work_in_progress.remove_package (pvid, rtagid, userid);
16176
		 ELSIF envtab = 1
16177
		 THEN
16178
			-- PENDING --
16179
			pk_planned.remove_package (pvid, rtagid, userid);
16180
		 END IF;
16181
	  END IF;
51 mhunt 16182
 
53 mhunt 16183
	  -- Change package state
16184
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16185
 
53 mhunt 16186
	  -- Make sure it is valid BASE VIEW
16187
	  IF viewid < 1
16188
	  THEN
16189
		 viewid := 7;							-- This is default base view
16190
	  END IF;
51 mhunt 16191
 
53 mhunt 16192
	  IF (ispatch IS NULL)
16193
	  THEN
16194
		 -- Add package to new area
16195
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16196
	  END IF;
51 mhunt 16197
 
53 mhunt 16198
	  -- Now do post Release Actions
16199
	  pk_release.run_post_actions (pvid, rtagid);
16200
	  -- Now update the Dash_Board Table (DEPRECATED)
16201
	  pk_rmapi.update_dash_board (rtagid);
51 mhunt 16202
 
53 mhunt 16203
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16204
	  DELETE FROM do_not_ripple
16205
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16206
 
53 mhunt 16207
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16208
	  DELETE FROM advisory_ripple
16209
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16210
 
53 mhunt 16211
	  -- Log
16212
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16213
   END;
16214
 
16215
/*-------------------------------------------------------------------------------------------------------*/
16216
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16217
   IS
53 mhunt 16218
	  viewid   NUMBER;
16219
	  envtab   NUMBER;
51 mhunt 16220
   BEGIN
53 mhunt 16221
	  -- Get ViewId
16222
	  --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
16223
	  viewid := get_package_view (pvid, rtagid);
16224
	  -- Remove from current area
16225
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16226
	  -- Log
16227
	  log_action (pvid,
16228
				  'action',
16229
				  userid,
16230
				  'Start of Make Package UnRelease...'
16231
				 );
51 mhunt 16232
 
53 mhunt 16233
	  IF envtab = 2
16234
	  THEN
16235
		 -- RELEASE AREA --
16236
		 pk_release.remove_package (pvid, rtagid, userid);
16237
	  ELSIF envtab = 1
16238
	  THEN
16239
		 -- PENDING --
16240
		 pk_planned.remove_package (pvid, rtagid, userid);
16241
	  END IF;
51 mhunt 16242
 
53 mhunt 16243
	  -- Change package state
16244
	  pk_package.change_state (pvid, 'N', userid);
51 mhunt 16245
 
53 mhunt 16246
	  -- Make sure it is valid BASE VIEW
16247
	  IF viewid < 1
16248
	  THEN
16249
		 viewid := 7;							-- This is default base view
16250
	  END IF;
51 mhunt 16251
 
53 mhunt 16252
	  -- Add package to new area
16253
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16254
	  -- Now do post Release Actions
16255
	  pk_release.run_post_actions (pvid, rtagid);
16256
	  -- Log
16257
	  log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
51 mhunt 16258
   END;
16259
 
16260
/*-------------------------------------------------------------------------------------------------------*/
16261
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16262
   IS
53 mhunt 16263
	  viewid	  NUMBER;
16264
	  ispatch	 CHAR (1) := NULL;
16265
	  buildtype   CHAR (1) := NULL;
51 mhunt 16266
   BEGIN
53 mhunt 16267
	  -- Check if package is patch
16268
	  SELECT pv.is_patch, pv.build_type
16269
		INTO ispatch, buildtype
16270
		FROM package_versions pv
16271
	   WHERE pv.pv_id = pvid;
51 mhunt 16272
 
53 mhunt 16273
	  -- Get ViewId
16274
	  viewid := get_package_view (pvid, rtagid);
16275
	  --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16276
 
53 mhunt 16277
	  -- Log
16278
	  log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
51 mhunt 16279
 
53 mhunt 16280
	  IF (ispatch IS NULL)
16281
	  THEN
16282
		 -- Remove from current area
16283
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16284
		 -- Change package state
16285
		 pk_package.change_state (pvid, 'P', userid);
16286
		 -- Add package to new area
16287
		 pk_planned.add_package (pvid, viewid, rtagid, userid);
16288
	  END IF;
51 mhunt 16289
 
53 mhunt 16290
	  -- Log
16291
	  log_action (pvid, 'action', userid, 'End of Make Package Pending...');
51 mhunt 16292
   END;
16293
 
16294
/*-------------------------------------------------------------------------------------------------------*/
16295
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16296
   IS
16297
   BEGIN
53 mhunt 16298
	  -- Log
16299
	  log_action (pvid,
16300
				  'action',
16301
				  userid,
16302
				  'Start of Package Pending Approval...'
16303
				 );
16304
	  -- Change package state
16305
	  pk_package.change_state (pvid, 'A', userid);
16306
	  -- Log
16307
	  log_action (pvid, 'action', userid,
16308
				  'End of Package Pending Approval...');
51 mhunt 16309
   END;
16310
 
16311
/*-------------------------------------------------------------------------------------------------------*/
16312
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16313
   IS
53 mhunt 16314
	  viewid   NUMBER;
16315
	  operation CHAR;
51 mhunt 16316
   BEGIN
53 mhunt 16317
	  -- Get ViewId
16318
	  viewid := get_package_view (pvid, rtagid);
16319
	  -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16320
 
53 mhunt 16321
	  -- DEVI-45275
16322
	  -- If the package version is an official version that is to be rejected from a merge operation
16323
	  -- then find out in order to prevent it being added back to work-in-progress table . This will
16324
	  -- be denoted by the operation field in the planned table being A or S
16325
	  operation := ' ';
16326
	  SELECT
16327
	  (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
16328
	  FROM planned pl
16329
	  WHERE pl.PV_ID = pvid
16330
	  AND pl.RTAG_ID = rtagid;
16331
 
16332
	  -- Log
16333
	  log_action (pvid, 'action', userid, 'Start of Reject Package...');
16334
	  -- Remove from current area
16335
	  pk_planned.remove_package (pvid, rtagid, userid);
16336
 
16337
	  -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
16338
	  IF operation <> 'A' AND operation <> 'S'
16339
	  THEN
16340
	  -- Change package state
16341
	  pk_package.change_state (pvid, 'R', userid);
16342
	  -- Add package to new area
16343
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16344
	  ELSE
16345
		log_action (pvid, 'action', userid, 'Rejected Package Merge');
16346
	  END IF;
16347
	  -- Log
16348
	  log_action (pvid, 'action', userid, 'End of Reject Package...');
51 mhunt 16349
   END;
16350
 
16351
/*-------------------------------------------------------------------------------------------------------*/
16352
   PROCEDURE change_package_view (
53 mhunt 16353
	  pvid		IN   NUMBER,
16354
	  rtagid	  IN   NUMBER,
16355
	  newviewid   IN   NUMBER
51 mhunt 16356
   )
16357
   IS
53 mhunt 16358
	  envtab   NUMBER;
51 mhunt 16359
   BEGIN
53 mhunt 16360
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16361
 
53 mhunt 16362
	  IF envtab = 0
16363
	  THEN
16364
		 -- WORK IN PROGRESS --
16365
		 pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
16366
	  ELSIF envtab = 1
16367
	  THEN
16368
		 -- PENDING --
16369
		 pk_planned.change_package_view (pvid, rtagid, newviewid);
16370
	  ELSIF envtab = 2
16371
	  THEN
16372
		 -- RELEASED --
16373
		 pk_release.change_package_view (pvid, rtagid, newviewid);
16374
	  END IF;
51 mhunt 16375
   END;
16376
 
16377
/*-------------------------------------------------------------------------------------------------------*/
16378
   PROCEDURE find_package (
53 mhunt 16379
	  skeyword	  IN	   VARCHAR2,
16380
	  nrtagid	   IN	   NUMBER,
16381
	  nsearcharea   IN	   NUMBER,
16382
	  recordset	 OUT	  typecur
51 mhunt 16383
   )
16384
   IS
16385
   BEGIN
53 mhunt 16386
	  IF nsearcharea = 0
16387
	  THEN
16388
		 /* Search Work In Progress */
16389
		 OPEN recordset FOR
16390
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16391
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16392
					 pv.modified_stamp, usr.full_name, usr.user_email
16393
				FROM views vi,
16394
					 work_in_progress rc,
16395
					 PACKAGES pkg,
16396
					 package_versions pv,
16397
					 users usr
16398
			   WHERE rc.view_id = vi.view_id
16399
				 AND rc.pv_id = pv.pv_id
16400
				 AND pkg.pkg_id = pv.pkg_id
16401
				 AND pv.modifier_id = usr.user_id
16402
				 AND rc.rtag_id = nrtagid
16403
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16404
			ORDER BY UPPER (pkg.pkg_name);
16405
	  ELSIF nsearcharea = 1
16406
	  THEN
16407
		 /* Search Pending */
16408
		 OPEN recordset FOR
16409
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16410
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16411
					 pv.modified_stamp, usr.full_name, usr.user_email
16412
				FROM views vi,
16413
					 planned rc,
16414
					 PACKAGES pkg,
16415
					 package_versions pv,
16416
					 users usr
16417
			   WHERE rc.view_id = vi.view_id
16418
				 AND rc.pv_id = pv.pv_id
16419
				 AND pkg.pkg_id = pv.pkg_id
16420
				 AND pv.modifier_id = usr.user_id
16421
				 AND rc.rtag_id = nrtagid
16422
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16423
			ORDER BY UPPER (pkg.pkg_name);
16424
	  ELSIF nsearcharea = 2
16425
	  THEN
16426
		 /* Search Released */
16427
		 OPEN recordset FOR
16428
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16429
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16430
					 pv.modified_stamp, usr.full_name, usr.user_email
16431
				FROM views vi,
16432
					 release_content rc,
16433
					 PACKAGES pkg,
16434
					 package_versions pv,
16435
					 users usr
16436
			   WHERE rc.base_view_id = vi.view_id
16437
				 AND rc.pv_id = pv.pv_id
16438
				 AND pkg.pkg_id = pv.pkg_id
16439
				 AND pv.modifier_id = usr.user_id
16440
				 AND rc.rtag_id = nrtagid
16441
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16442
			ORDER BY UPPER (pkg.pkg_name);
16443
	  ELSIF nsearcharea = 3
16444
	  THEN
16445
		 /* Search ALL */
16446
		 OPEN recordset FOR
16447
			SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
16448
					 pv.pv_id, pv.pkg_version, pv.comments,
16449
					 pv.modified_stamp, usr.full_name, usr.user_email
16450
				FROM views vi,
16451
					 environment_view rc,
16452
					 PACKAGES pkg,
16453
					 package_versions pv,
16454
					 users usr
16455
			   WHERE rc.view_id = vi.view_id
16456
				 AND rc.pv_id = pv.pv_id
16457
				 AND pkg.pkg_id = pv.pkg_id
16458
				 AND pv.modifier_id = usr.user_id
16459
				 AND rc.rtag_id = nrtagid
16460
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16461
			ORDER BY UPPER (pkg.pkg_name);
16462
	  END IF;
51 mhunt 16463
   END;
16464
 
16465
/*-------------------------------------------------------------------------------------------------------*/
16466
   PROCEDURE find_file (
53 mhunt 16467
	  skeyword	  IN	   VARCHAR2,
16468
	  nrtagid	   IN	   NUMBER,
16469
	  nsearcharea   IN	   NUMBER,
16470
	  npagesize	 IN	   NUMBER,
16471
	  recordset	 OUT	  typecur
51 mhunt 16472
   )
16473
   IS
16474
   BEGIN
53 mhunt 16475
	  IF nsearcharea = 0
16476
	  THEN
16477
		 /* Search Work In Progress */
16478
		 OPEN recordset FOR
16479
			SELECT   qry.*
16480
				FROM (
16481
					  /* File search on Packages */
16482
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16483
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16484
						FROM work_in_progress rc,
16485
							 PACKAGES pkg,
16486
							 package_versions pv,
16487
							 release_components art
16488
					   WHERE rc.pv_id = art.pv_id
16489
						 AND pv.pkg_id = pkg.pkg_id
16490
						 AND rc.pv_id = pv.pv_id
16491
						 AND rc.rtag_id = nrtagid
16492
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16493
					  UNION ALL
16494
					  /* File search on Products */
16495
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16496
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16497
						FROM work_in_progress rc,
16498
							 PACKAGES pkg,
16499
							 package_versions pv,
16500
							 product_components art
16501
					   WHERE rc.pv_id = art.pv_id
16502
						 AND pv.pkg_id = pkg.pkg_id
16503
						 AND rc.pv_id = pv.pv_id
16504
						 AND rc.rtag_id = nrtagid
16505
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16506
			   WHERE ROWNUM <= npagesize
16507
			ORDER BY UPPER (qry.pkg_name);
16508
	  ELSIF nsearcharea = 1
16509
	  THEN
16510
		 /* Search Pending */
16511
		 OPEN recordset FOR
16512
			SELECT   qry.*
16513
				FROM (
16514
					  /* File search on Packages */
16515
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16516
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16517
						FROM planned rc,
16518
							 PACKAGES pkg,
16519
							 package_versions pv,
16520
							 release_components art
16521
					   WHERE rc.pv_id = art.pv_id
16522
						 AND pv.pkg_id = pkg.pkg_id
16523
						 AND rc.pv_id = pv.pv_id
16524
						 AND rc.rtag_id = nrtagid
16525
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16526
					  UNION ALL
16527
					  /* File search on Products */
16528
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16529
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16530
						FROM planned rc,
16531
							 PACKAGES pkg,
16532
							 package_versions pv,
16533
							 product_components art
16534
					   WHERE rc.pv_id = art.pv_id
16535
						 AND pv.pkg_id = pkg.pkg_id
16536
						 AND rc.pv_id = pv.pv_id
16537
						 AND rc.rtag_id = nrtagid
16538
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16539
			   WHERE ROWNUM <= npagesize
16540
			ORDER BY UPPER (qry.pkg_name);
16541
	  ELSIF nsearcharea = 2
16542
	  THEN
16543
		 /* Search Released */
16544
		 OPEN recordset FOR
16545
			SELECT   qry.*
16546
				FROM (
16547
					  /* File search on Packages */
16548
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16549
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16550
							 NULL AS patch_id
16551
						FROM release_content rc,
16552
							 PACKAGES pkg,
16553
							 package_versions pv,
16554
							 release_components art
16555
					   WHERE rc.pv_id = art.pv_id
16556
						 AND pv.pkg_id = pkg.pkg_id
16557
						 AND rc.pv_id = pv.pv_id
16558
						 AND rc.rtag_id = nrtagid
16559
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16560
					  UNION ALL
16561
					  /* File search on Products */
16562
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16563
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16564
							 NULL AS patch_id
16565
						FROM release_content rc,
16566
							 PACKAGES pkg,
16567
							 package_versions pv,
16568
							 product_components art
16569
					   WHERE rc.pv_id = art.pv_id
16570
						 AND pv.pkg_id = pkg.pkg_id
16571
						 AND rc.pv_id = pv.pv_id
16572
						 AND rc.rtag_id = nrtagid
16573
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16574
					  UNION ALL
16575
					  /* File search on Patches */
16576
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16577
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16578
							 DECODE (art.file_path,
16579
									 NULL, pp.patch_id,
16580
									 NULL
16581
									) AS patch_id
16582
						FROM release_content rc,
16583
							 PACKAGES pkg,
16584
							 package_versions pv,
16585
							 release_components art,
16586
							 package_patches pp
16587
					   WHERE pv.pv_id = pp.pv_id
16588
						 AND pv.pkg_id = pkg.pkg_id
16589
						 AND rc.rtag_id = nrtagid
16590
						 AND art.pv_id = pp.patch_id
16591
						 AND rc.pv_id = pp.pv_id
16592
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16593
			   WHERE ROWNUM <= npagesize
16594
			ORDER BY UPPER (qry.pkg_name);
16595
	  ELSIF nsearcharea = 3
16596
	  THEN
16597
		 /* Search ALL */
16598
		 OPEN recordset FOR
16599
			SELECT   qry.*
16600
				FROM (
16601
					  /* File search on Packages */
16602
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16603
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16604
							 NULL AS patch_id
16605
						FROM environment_view rc,
16606
							 PACKAGES pkg,
16607
							 package_versions pv,
16608
							 release_components art
16609
					   WHERE rc.pv_id = art.pv_id
16610
						 AND pv.pkg_id = pkg.pkg_id
16611
						 AND rc.pv_id = pv.pv_id
16612
						 AND rc.rtag_id = nrtagid
16613
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16614
					  UNION ALL
16615
					  /* File search on Products */
16616
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16617
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16618
							 NULL AS patch_id
16619
						FROM environment_view rc,
16620
							 PACKAGES pkg,
16621
							 package_versions pv,
16622
							 product_components art
16623
					   WHERE rc.pv_id = art.pv_id
16624
						 AND pv.pkg_id = pkg.pkg_id
16625
						 AND rc.pv_id = pv.pv_id
16626
						 AND rc.rtag_id = nrtagid
16627
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16628
					  UNION ALL
16629
					  /* File search on Patches */
16630
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16631
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16632
							 DECODE (art.file_path,
16633
									 NULL, pp.patch_id,
16634
									 NULL
16635
									) AS patch_id
16636
						FROM release_content rc,
16637
							 PACKAGES pkg,
16638
							 package_versions pv,
16639
							 release_components art,
16640
							 package_patches pp
16641
					   WHERE pv.pv_id = pp.pv_id
16642
						 AND pv.pkg_id = pkg.pkg_id
16643
						 AND rc.rtag_id = nrtagid
16644
						 AND art.pv_id = pp.patch_id
16645
						 AND rc.pv_id = pp.pv_id
16646
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16647
			   WHERE ROWNUM <= npagesize
16648
			ORDER BY UPPER (qry.pkg_name);
16649
	  END IF;
51 mhunt 16650
   END;
16651
 
16652
/*-------------------------------------------------------------------------------------------------------*/
16653
   PROCEDURE get_prodrelease_items (
53 mhunt 16654
	  rtagid			 IN	   NUMBER,
16655
	  ntruerecordcount   OUT	  NUMBER,
16656
	  recordset		  OUT	  typecur
51 mhunt 16657
   )
16658
   IS
16659
   BEGIN
53 mhunt 16660
	  -- Get true record count n the number of integration products
16661
	  SELECT COUNT (rc.pv_id)
16662
		INTO ntruerecordcount
16663
		FROM release_content rc
16664
	   WHERE rc.rtag_id = rtagid;
51 mhunt 16665
 
53 mhunt 16666
	  OPEN recordset FOR
16667
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,	--rel.pkg_state,
16668
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16669
				  pv.pkg_version, pv.dlocked, pv.pv_description
16670
			 FROM release_content rel,
16671
				  PACKAGES pkg,
16672
				  package_versions pv,
16673
				  views vi
16674
			WHERE pv.pkg_id = pkg.pkg_id
16675
			  AND rel.pv_id = pv.pv_id
16676
			  AND rel.base_view_id = vi.view_id
16677
			  AND pv.is_deployable = 'Y'
16678
			  AND rtag_id = rtagid
16679
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16680
											  FROM deployment_manager.os_contents)
16681
			  AND rel.product_state IS NULL
16682
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16683
   END;
16684
 
16685
/*-------------------------------------------------------------------------------------------------------*/
16686
   PROCEDURE get_integration_items (
53 mhunt 16687
	  rtagid			 IN	   NUMBER,
16688
	  ntruerecordcount   OUT	  NUMBER,
16689
	  recordset		  OUT	  typecur
51 mhunt 16690
   )
16691
   IS
16692
   BEGIN
53 mhunt 16693
	  -- Get true record count n the number of integration products
16694
	  SELECT COUNT (rc.pv_id)
16695
		INTO ntruerecordcount
16696
		FROM release_content rc
16697
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
51 mhunt 16698
 
53 mhunt 16699
	  OPEN recordset FOR
16700
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16701
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16702
				  pv.pkg_version, pv.dlocked, pv.pv_description
16703
			 FROM release_content rel,
16704
				  PACKAGES pkg,
16705
				  package_versions pv,
16706
				  views vi
16707
			WHERE pv.pkg_id = pkg.pkg_id
16708
			  AND rel.pv_id = pv.pv_id
16709
			  AND rel.base_view_id = vi.view_id
16710
			  AND pv.is_deployable = 'Y'
16711
			  AND rtag_id = rtagid
16712
			  AND rel.product_state IN (1, 5)
16713
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16714
   END;
16715
 
16716
/*-------------------------------------------------------------------------------------------------------*/
16717
   PROCEDURE get_test_items (
53 mhunt 16718
	  rtagid			 IN	   NUMBER,
16719
	  ntruerecordcount   OUT	  NUMBER,
16720
	  recordset		  OUT	  typecur
51 mhunt 16721
   )
16722
   IS
16723
   BEGIN
53 mhunt 16724
	  -- Get true record count n the number of test products
16725
	  SELECT COUNT (rc.pv_id)
16726
		INTO ntruerecordcount
16727
		FROM release_content rc
16728
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
51 mhunt 16729
 
53 mhunt 16730
	  OPEN recordset FOR
16731
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16732
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16733
				  pv.pkg_version, pv.dlocked, pv.pv_description
16734
			 FROM release_content rel,
16735
				  PACKAGES pkg,
16736
				  package_versions pv,
16737
				  views vi
16738
			WHERE pv.pkg_id = pkg.pkg_id
16739
			  AND rel.pv_id = pv.pv_id
16740
			  AND rel.base_view_id = vi.view_id
16741
			  AND pv.is_deployable = 'Y'
16742
			  AND rtag_id = rtagid
16743
			  AND rel.product_state = 2
16744
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16745
   END;
16746
 
16747
/*-------------------------------------------------------------------------------------------------------*/
16748
   PROCEDURE get_deploy_items (
53 mhunt 16749
	  rtagid			 IN	   NUMBER,
16750
	  ntruerecordcount   OUT	  NUMBER,
16751
	  recordset		  OUT	  typecur
51 mhunt 16752
   )
16753
   IS
16754
   BEGIN
53 mhunt 16755
	  -- Get true record count n the number of deploy products
16756
	  SELECT COUNT (rc.pv_id)
16757
		INTO ntruerecordcount
16758
		FROM release_content rc
16759
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
51 mhunt 16760
 
53 mhunt 16761
	  OPEN recordset FOR
16762
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16763
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16764
				  pv.pkg_version, pv.dlocked, pv.pv_description
16765
			 FROM release_content rel,
16766
				  PACKAGES pkg,
16767
				  package_versions pv,
16768
				  views vi
16769
			WHERE pv.pkg_id = pkg.pkg_id
16770
			  AND rel.pv_id = pv.pv_id
16771
			  AND rel.base_view_id = vi.view_id
16772
			  AND pv.is_deployable = 'Y'
16773
			  AND rtag_id = rtagid
16774
			  AND rel.product_state IN (3, 5)
16775
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16776
											  FROM deployment_manager.os_contents)
16777
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16778
   END;
16779
 
16780
/*-------------------------------------------------------------------------------------------------------*/
16781
   PROCEDURE get_reject_items (
53 mhunt 16782
	  rtagid			 IN	   NUMBER,
16783
	  ntruerecordcount   OUT	  NUMBER,
16784
	  recordset		  OUT	  typecur
51 mhunt 16785
   )
16786
   IS
16787
   BEGIN
53 mhunt 16788
	  -- Get true record count n the number of reject products
16789
	  SELECT COUNT (rc.pv_id)
16790
		INTO ntruerecordcount
16791
		FROM release_content rc
16792
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
51 mhunt 16793
 
53 mhunt 16794
	  OPEN recordset FOR
16795
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16796
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16797
				  pv.pkg_version, pv.dlocked, pv.pv_description
16798
			 FROM release_content rel,
16799
				  PACKAGES pkg,
16800
				  package_versions pv,
16801
				  views vi
16802
			WHERE pv.pkg_id = pkg.pkg_id
16803
			  AND rel.pv_id = pv.pv_id
16804
			  AND rel.base_view_id = vi.view_id
16805
			  AND pv.is_deployable = 'Y'
16806
			  AND rtag_id = rtagid
16807
			  AND rel.product_state = 4
16808
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16809
   END;
16810
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 16811
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
16812
   -- to the release_content table.
16813
 
16814
  PROCEDURE approve_merge (
16815
	PvId	IN NUMBER,
16816
	RtagId  IN NUMBER,
16817
	UserId  IN NUMBER
16818
  )
16819
  IS
16820
	viewid		  NUMBER;
16821
	envtab		  NUMBER;
16822
	oper			CHAR;
16823
  BEGIN
16824
	   -- Get ViewId
16825
	  viewid := get_package_view (pvid, rtagid);
16826
 
16827
	  -- Get the view tab
16828
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16829
 
16830
	  -- Make sure that package was in pending before merging it to released
16831
	  IF (envtab <> 1)
16832
	  THEN
16833
		 -- Not found in pending
16834
		 raise_application_error (-20000,
16835
								  'This package cannot be released here.'
16836
								 );
16837
	  END IF;
16838
 
16839
	  -- Log
16840
	  log_action (pvid, 'action', userid, 'Start of Package Merge...');
16841
 
16842
	  -- Get the planned operation type A=Add, S=Subtract
16843
	  SELECT ev.operation INTO oper
16844
	  FROM environment_view ev
16845
	  WHERE ev.rtag_id = RtagId
16846
	  AND ev.pv_id = PvId
16847
	  AND (ev.operation = 'A' OR ev.operation = 'S');
16848
 
16849
	  -- Remove from Pending
16850
	  pk_planned.remove_package (PvId, RtagId, UserId);
16851
 
16852
	  -- Either add to the release, or remove from the release as the operation commands
16853
	  IF oper = 'A'
16854
	  THEN
16855
		pk_release.add_package(PvId, viewId, RtagId, UserId);
16856
	  ELSIF oper = 'S'
16857
	  THEN
16858
		  pk_release.remove_package(PvId, RtagId, UserId);
16859
	  END IF;
16860
 
16861
	  touch_release(RtagId);
16862
 
16863
	  -- Log
16864
	  log_action (pvid, 'action', userid, 'End of Package Merge...');
16865
  END;
16866
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 16867
END pk_environment;
16868
/
16869
 
16870
CREATE OR REPLACE PACKAGE BODY PK_WORK_IN_PROGRESS IS
16871
 
16872
/*
16873
------------------------------
16874
||  Last Modified:  S.Vukovic
16875
||  Modified Date:  2/May/2005
16876
||  Body Version:   1.0
16877
------------------------------
16878
*/
16879
 
16880
 
16881
/*-------------------------------------------------------------------------------------------------------*/
16882
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16883
 
16884
	oldPvId NUMBER;
16885
	ReleaseLocation VARCHAR2(4000);
16886
	sLocation VARCHAR2(4000) := NULL;
16887
 
16888
 
16889
BEGIN
16890
	/*--------------- Business Rules Here -------------------*/
16891
	/*-------------------------------------------------------*/
16892
 
16893
	BEGIN
16894
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
16895
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
16896
		  FROM WORK_IN_PROGRESS wip,
16897
		  	   RELEASE_TAGS rt,
16898
			   PROJECTS proj
16899
		 WHERE wip.PV_ID = newPvId
16900
		   AND wip.RTAG_ID = rt.RTAG_ID
16901
		   AND rt.OFFICIAL != 'Y'
16902
		   AND rt.PROJ_ID = proj.PROJ_ID;
16903
 
16904
		EXCEPTION
16905
	    	WHEN NO_DATA_FOUND THEN
16906
	       		sLocation := NULL;
16907
 
16908
	END;	   	   
16909
 
16910
 
16911
 
16912
	IF (sLocation IS NULL)  THEN
16913
 
16914
		-- Add to "Work in progress"
16915
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
16916
		VALUES( RtagId, newPvId, ViewId );
16917
 
16918
 
16919
	    /* LOG ACTION */
16920
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16921
		  FROM PROJECTS proj,
16922
		  	   RELEASE_TAGS rt
16923
		 WHERE rt.PROJ_ID = proj.PROJ_ID
16924
		   AND rt.RTAG_ID = RtagId;
16925
 
16926
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16927
 
16928
	ELSE
16929
 
16930
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
16931
 
16932
	END IF;
16933
 
16934
END;
16935
/*-------------------------------------------------------------------------------------------------------*/
16936
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16937
 
16938
	ReleaseLocation VARCHAR2(4000);
16939
 
16940
BEGIN
16941
 
16942
	/*--------------- Business Rules Here -------------------*/
16943
	/*-------------------------------------------------------*/
16944
 
16945
 
16946
	-- Get release location for logging pusposes
16947
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16948
	  FROM PROJECTS proj,
16949
	  	   RELEASE_TAGS rt
16950
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16951
	   AND rt.RTAG_ID = RtagId;
16952
 
16953
 
16954
	-- Delete from Work In Progress
16955
	DELETE
16956
	  FROM WORK_IN_PROGRESS wip
16957
	 WHERE wip.RTAG_ID = RtagId
16958
	   AND wip.PV_ID = PvId;
16959
 
16960
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
16961
 
16962
 
16963
 
16964
 
16965
END;
16966
/*-------------------------------------------------------------------------------------------------------*/
16967
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
16968
 
16969
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16970
	ReleaseLocation VARCHAR2(4000);
16971
	PvId NUMBER;
16972
 
16973
BEGIN
16974
 
16975
	/*--------------- Business Rules Here -------------------*/
16976
	IF (PvIdList IS NULL)
16977
	THEN
16978
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16979
	END IF;
16980
	/*-------------------------------------------------------*/
16981
 
16982
 
16983
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
16984
 
16985
 
16986
	-- Get release location for logging pusposes
16987
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16988
	  FROM PROJECTS proj,
16989
	  	   RELEASE_TAGS rt
16990
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16991
	   AND rt.RTAG_ID = RtagId;
16992
 
16993
 
16994
	FOR i IN 1..nIdCollector.COUNT
16995
	LOOP
16996
		PvId := nIdCollector(i);
16997
 
16998
		-- Delete from Work In Progress
16999
		DELETE
17000
		  FROM WORK_IN_PROGRESS wip
17001
		 WHERE wip.RTAG_ID = RtagId
17002
		   AND wip.PV_ID = PvId;
17003
 
17004
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
17005
 
17006
	END LOOP;
17007
 
17008
 
17009
END;
17010
/*-------------------------------------------------------------------------------------------------------*/
17011
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
17012
 
17013
	ReturnValue NUMBER;
17014
 
17015
BEGIN
17016
	SELECT wip.VIEW_ID INTO ReturnValue
17017
	  FROM WORK_IN_PROGRESS wip
17018
	 WHERE wip.RTAG_ID = RtagId
17019
	   AND wip.PV_ID = PvId;
17020
 
17021
	RETURN ReturnValue;
17022
END;
17023
/*-------------------------------------------------------------------------------------------------------*/
17024
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
17025
 
17026
	IsBaseView CHAR(1);
17027
 
17028
BEGIN
17029
 
17030
	-- Check if the view is BASE VIEW
17031
	SELECT vi.BASE_VIEW INTO IsBaseView
17032
	  FROM VIEWS vi
17033
	 WHERE vi.VIEW_ID = ViewId;
17034
 
17035
	IF (IsBaseView = 'Y') THEN 
17036
		-- Get Base view content
17037
		OPEN RecordSet FOR
17038
		SELECT 0 AS PKG_STATE,
17039
			   NULL AS DEPRECATED_STATE,
17040
			   pv.pv_id, 
17041
			   pkg.pkg_name, 
17042
			   pv.pkg_version, 
17043
			   pv.dlocked, 
17044
			   pv.pv_description,
17045
			   pv.BUILD_TYPE
17046
		  FROM WORK_IN_PROGRESS rel,
17047
		       packages pkg,
17048
		       package_versions pv
17049
		 WHERE pv.pkg_id = pkg.pkg_id
17050
		   AND rel.pv_id = pv.pv_id
17051
		   AND rel.VIEW_ID = ViewId
17052
		   AND rel.RTAG_ID = RtagId
17053
		 ORDER BY UPPER(pkg.PKG_NAME);
17054
 
17055
 
17056
	ELSE	 
17057
 
17058
	 	-- Get non base view content
17059
		OPEN RecordSet FOR
17060
		SELECT 0 AS PKG_STATE,
17061
			   NULL AS DEPRECATED_STATE,
17062
			   pv.pv_id, 
17063
			   pkg.pkg_name, 
17064
			   pv.pkg_version, 
17065
			   pv.dlocked, 
17066
			   pv.pv_description,
17067
			   pv.BUILD_TYPE
17068
		  FROM WORK_IN_PROGRESS rel,
17069
		       packages pkg,
17070
		       package_versions pv,
17071
			   VIEW_DEF vd
17072
		 WHERE pv.pkg_id = pkg.pkg_id
17073
		   AND rel.pv_id = pv.pv_id
17074
		   AND vd.VIEW_ID = ViewId
17075
		   AND vd.PKG_ID = pv.PKG_ID
17076
		   AND rel.RTAG_ID = RtagId
17077
		 ORDER BY UPPER(pkg.PKG_NAME);
17078
 
17079
 
17080
	END IF;	 	
17081
 
17082
 
17083
END;
17084
/*-------------------------------------------------------------------------------------------------------*/
17085
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
17086
 
17087
BEGIN
17088
 
17089
	UPDATE WORK_IN_PROGRESS wip SET
17090
	wip.VIEW_ID = NewViewId
17091
	WHERE wip.PV_ID = PvId
17092
	  AND wip.RTAG_ID = RtagId;
17093
 
17094
END;
17095
/*-------------------------------------------------------------------------------------------------------*/
17096
END PK_WORK_IN_PROGRESS;
17097
/
17098
 
17099
CREATE OR REPLACE PACKAGE BODY pk_package_Test
17100
IS
17101
/*
17102
------------------------------
17103
||  Last Modified:  R. Solanki
17104
||  Modified Date:  09/03/2006
17105
||  Body Version:   1.7
17106
------------------------------
17107
*/
17108
 
17109
   /*-------------------------------------------------------------------------------------------------------*/
17110
   PROCEDURE new_version (
17111
      nlastpvid                   IN       NUMBER,
17112
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
17113
      cbuildtype                  IN       CHAR,
17114
      nsettopvid                  IN       NUMBER DEFAULT NULL,
17115
      nrtagid                     IN       NUMBER,
17116
      nuserid                     IN       NUMBER,
17117
      enumissues_state_imported   IN       NUMBER,
17118
      returnpvid                  OUT      NUMBER
17119
   )
17120
   IS
17121
      origpkg_id                   package_versions.pkg_id%TYPE;
17122
      origdlocked                  package_versions.dlocked%TYPE;
17123
      ssv_mm                       package_versions.v_mm%TYPE;
17124
      ssv_nmm                      package_versions.v_nmm%TYPE;
17125
      ssv_ext                      package_versions.v_ext%TYPE;
17126
      spackageversion              VARCHAR2 (4000);
17127
      nissuestypes                 NUMBER;
17128
      nviewid                      NUMBER;
17129
      reccount                     NUMBER;
17130
      isreleased                   package_versions.dlocked%TYPE       := 'N';
17131
      slabel                       VARCHAR2 (4000)                    := NULL;
17132
 
17133
      CURSOR package_versions_cur
17134
      IS
17135
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
17136
           FROM package_versions pv
17137
          WHERE pv.pkg_version = snewpkgversion
17138
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
17139
                                         FROM package_versions origpv
17140
                                        WHERE origpv.pv_id = nlastpvid);
17141
 
17142
      package_versions_rec         package_versions_cur%ROWTYPE;
17143
 
17144
      CURSOR clone_package_versions_cur
17145
      IS
17146
         SELECT DISTINCT pkg_id, dlocked
17147
                    FROM package_versions
17148
                   WHERE pv_id = nlastpvid;
17149
 
17150
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
17151
   BEGIN
17152
      spackageversion := snewpkgversion;
17153
 
17154
      IF nsettopvid IS NULL
17155
      THEN
17156
         -- SetToPv_id is not supplied, hence proceed.
17157
 
17158
         /* ---------------------------------------------------- */
17159
/* Find id package_version exists                       */
17160
/* ---------------------------------------------------- */
17161
         OPEN package_versions_cur;
17162
 
17163
         FETCH package_versions_cur
17164
          INTO package_versions_rec;
17165
 
17166
         IF package_versions_cur%NOTFOUND
17167
         THEN
17168
            ---  Create brand new package ---
17169
            SELECT seq_pv_id.NEXTVAL
17170
              INTO returnpvid
17171
              FROM DUAL;
17172
 
17173
            -- Split Version to get extention + other
17174
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
17175
 
17176
            -- Get previous package to clone from
17177
            OPEN clone_package_versions_cur;
17178
 
17179
            FETCH clone_package_versions_cur
17180
             INTO clone_package_versions_rec;
17181
 
17182
            origpkg_id := clone_package_versions_rec.pkg_id;
17183
            origdlocked := clone_package_versions_rec.dlocked;
17184
 
17185
            CLOSE clone_package_versions_cur;
17186
 
17187
            -- Automated built config
17188
            IF (cbuildtype = 'A')
17189
            THEN
17190
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
17191
                                    -- Make sure that version is still unique
17192
            END IF;
17193
 
17194
            -- Clone Package Version Details --
17195
            INSERT INTO package_versions
17196
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
17197
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
17198
                         v_ext, src_path, pv_description, pv_overview,
17199
                         last_pv_id, owner_id, is_deployable,
17200
                         is_build_env_required, build_type, bs_id, is_autobuildable)
17201
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
17202
                      spackageversion AS pkg_version, 'N' AS dlocked,
17203
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
17204
                      ora_sysdatetime AS modified_stamp,
17205
                      nuserid AS modifier_id, ssv_mm AS v_mm,
17206
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
17207
                      pv.pv_description, pv.pv_overview,
17208
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
17209
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
17210
                 FROM package_versions pv
17211
                WHERE pv.pv_id = nlastpvid;
17212
 
17213
            -- Set Issues Type for cloning ---
17214
            IF origdlocked = 'Y'
17215
            THEN
17216
               nissuestypes := enumissues_state_imported;
17217
            ELSE
17218
               nissuestypes := NULL;
17219
            END IF;
17220
 
17221
            -- Update Label for automated built
17222
            IF (cbuildtype = 'A')
17223
            THEN
17224
               slabel := get_automated_label (returnpvid);
17225
 
17226
               UPDATE package_versions pv
17227
                  SET pv.pkg_label = slabel
17228
                WHERE pv.pv_id = returnpvid;
17229
            END IF;
17230
 
17231
            basic_clone (nlastpvid,
17232
                         returnpvid,
17233
                         nrtagid,
17234
                         nuserid,
17235
                         origpkg_id,
17236
                         nissuestypes
17237
                        );
17238
         ELSE
17239
            --- Package already exists, hence reuse ---
17240
            returnpvid := package_versions_rec.pv_id;
17241
            isreleased := package_versions_rec.dlocked;
17242
         END IF;
17243
 
17244
         CLOSE package_versions_cur;
17245
      ELSE
17246
         returnpvid := nsettopvid;
17247
      END IF;
17248
   END new_version;
17249
 
17250
/*-------------------------------------------------------------------------------------------------------*/
17251
   PROCEDURE change_state (
17252
      pvid       IN   NUMBER,
17253
      newstate   IN   package_versions.dlocked%TYPE,
17254
      userid     IN   NUMBER
17255
   )
17256
   IS
17257
   BEGIN
17258
      -- Set package in Released mode
17259
      UPDATE package_versions pv
17260
         SET pv.dlocked = newstate,
17261
             pv.modified_stamp = ora_sysdatetime,
17262
             pv.modifier_id = userid
17263
       WHERE pv.pv_id = pvid;
17264
 
17265
      -- Log action --
17266
      IF newstate = 'Y'
17267
      THEN
17268
         -- RELEASED --
17269
         log_action (pvid,
17270
                     'makeofficial',
17271
                     userid,
17272
                     'Package state change to: Released'
17273
                    );
17274
      ELSIF newstate = 'N'
17275
      THEN
17276
         -- UNLOCKED --
17277
         log_action (pvid,
17278
                     'makeunofficial',
17279
                     userid,
17280
                     'Package state change to: Ulocked'
17281
                    );
17282
      ELSIF newstate = 'P'
17283
      THEN
17284
         -- PENDING APPROVAL --
17285
         log_action (pvid,
17286
                     'add_to_planned',
17287
                     userid,
17288
                     'Package state change to: Pending Approval'
17289
                    );
17290
      ELSIF newstate = 'R'
17291
      THEN
17292
         -- REJECTED --
17293
         log_action (pvid,
17294
                     'reject_package',
17295
                     userid,
17296
                     'Package state change to: Rejected'
17297
                    );
17298
      ELSIF newstate = 'A'
17299
      THEN
17300
         -- APPROVED --
17301
         log_action (pvid,
17302
                     'approve_package',
17303
                     userid,
17304
                     'Package state change to: Approved'
17305
                    );
17306
      END IF;
17307
   END;
17308
 
17309
/*-------------------------------------------------------------------------------------------------------*/
17310
   PROCEDURE destroy_package (
17311
      pvid               IN       NUMBER,
17312
      overridewarnings   IN       CHAR DEFAULT 'N',
17313
      problemstring      OUT      VARCHAR2
17314
   )
17315
   IS
17316
      LOCKED     CHAR;
17317
      pkgid      NUMBER;
17318
      ROWCOUNT   NUMBER;
17319
   BEGIN
17320
      /*
17321
      || This will destroy all package details from database.
17322
      || It will only be used to remove unwanted work in progress packages,
17323
      || or mestaken versions
17324
      */
17325
 
17326
      /*--------------- Business Rules Here -------------------*/
17327
      problemstring := NULL;
17328
 
17329
      IF overridewarnings = 'N'
17330
      THEN
17331
         -- Package must not be official
17332
         SELECT pv.dlocked
17333
           INTO LOCKED
17334
           FROM package_versions pv
17335
          WHERE pv.pv_id = pvid;
17336
 
17337
         IF LOCKED = 'Y'
17338
         THEN
17339
            problemstring :=
17340
                  problemstring
17341
               || '- Package is locked and released.'
17342
               || UTL_TCP.crlf;
17343
         END IF;
17344
 
17345
         -- Cannot remove if used in BOMs
17346
         SELECT COUNT (osc.prod_id)
17347
           INTO ROWCOUNT
17348
           FROM deployment_manager.os_contents osc
17349
          WHERE osc.prod_id = pvid;
17350
 
17351
         IF ROWCOUNT > 0
17352
         THEN
17353
            problemstring :=
17354
                  problemstring
17355
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
17356
               || UTL_TCP.crlf;
17357
         END IF;
17358
 
17359
         -- Cannot remove if Referenced as build dependency
17360
         SELECT COUNT (dep.pv_id)
17361
           INTO ROWCOUNT
17362
           FROM package_dependencies dep
17363
          WHERE dep.dpv_id = pvid;
17364
 
17365
         IF ROWCOUNT > 0
17366
         THEN
17367
            problemstring :=
17368
                  problemstring
17369
               || '- Package is referenced by other package as build dependency.'
17370
               || UTL_TCP.crlf;
17371
         END IF;
17372
 
17373
         -- Cannot remove if Referenced as runtime dependency
17374
         SELECT COUNT (rd.pv_id)
17375
           INTO ROWCOUNT
17376
           FROM runtime_dependencies rd
17377
          WHERE rd.rtd_id = pvid;
17378
 
17379
         IF ROWCOUNT > 0
17380
         THEN
17381
            problemstring :=
17382
                  problemstring
17383
               || '- Package is referenced by other package as runtime dependency.'
17384
               || UTL_TCP.crlf;
17385
         END IF;
17386
 
17387
         -- Cannot remove if Referenced as patch
17388
         SELECT COUNT (pp.pv_id)
17389
           INTO ROWCOUNT
17390
           FROM package_patches pp
17391
          WHERE pp.patch_id = pvid;
17392
 
17393
         IF ROWCOUNT > 0
17394
         THEN
17395
            problemstring :=
17396
                  problemstring
17397
               || '- Package is used as patch by other package.'
17398
               || UTL_TCP.crlf;
17399
         END IF;
17400
      END IF;
17401
 
17402
/*-------------------------------------------------------*/
17403
      IF (problemstring IS NULL)
17404
      THEN
17405
         --- Remove From Work in Progress
17406
         DELETE FROM work_in_progress wip
17407
               WHERE wip.pv_id = pvid;
17408
 
17409
         --- Remove From Pending
17410
         DELETE FROM planned pl
17411
               WHERE pl.pv_id = pvid;
17412
 
17413
         --- Remove From Released area
17414
         DELETE FROM release_content rc
17415
               WHERE rc.pv_id = pvid;
17416
 
17417
         ---Remove From Package Processes
17418
         DELETE FROM package_processes pp
17419
               WHERE pp.pv_id = pvid;
17420
 
17421
         --- Remove Dependencies
17422
         DELETE FROM package_dependencies dep
17423
               WHERE dep.pv_id = pvid;
17424
 
17425
         DELETE FROM package_dependencies dep
17426
               WHERE dep.dpv_id = pvid;
17427
 
17428
         --- Remove Runtime dependencies
17429
         DELETE FROM runtime_dependencies rtd
17430
               WHERE rtd.pv_id = pvid;
17431
 
17432
         DELETE FROM runtime_dependencies rtd
17433
               WHERE rtd.rtd_id = pvid;
17434
 
17435
         --- Remove components
17436
         DELETE FROM product_components pc
17437
               WHERE pc.pv_id = pvid;
17438
 
17439
         DELETE FROM release_components rc
17440
               WHERE rc.pv_id = pvid;
17441
 
17442
         --- Remove From Notification History
17443
         DELETE FROM notification_history nh
17444
               WHERE nh.pv_id = pvid;
17445
 
17446
         --- Remove From Ignore Warnings
17447
         DELETE FROM ignore_warnings iw
17448
               WHERE iw.pv_id = pvid;
17449
 
17450
         --- Remove From Additional Notes
17451
         DELETE FROM additional_notes an
17452
               WHERE an.pv_id = pvid;
17453
 
17454
         --- Remove From CQ Issues
17455
         DELETE FROM cq_issues cq
17456
               WHERE cq.pv_id = pvid;
17457
 
17458
         --- Remove from Package Patches
17459
         DELETE FROM package_patches pp
17460
               WHERE pp.pv_id = pvid;
17461
 
17462
         DELETE FROM package_patches pp
17463
               WHERE pp.patch_id = pvid;
17464
 
17465
         --- Remove From Package Documents
17466
         DELETE FROM package_documents pd
17467
               WHERE pd.pv_id = pvid;
17468
 
17469
         --- Remove from Code Review
17470
         DELETE FROM code_reviews cr
17471
               WHERE cr.pv_id = pvid;
17472
 
17473
         --- Remove from Unit Tests
17474
         DELETE FROM unit_tests ut
17475
               WHERE ut.pv_id = pvid;
17476
 
17477
         --- Remove from Package BuildEnv
17478
         DELETE FROM package_build_env pbe
17479
               WHERE pbe.pv_id = pvid;
17480
 
17481
		 --- Remove from Package Build Info
17482
		 DELETE FROM package_build_info pbi
17483
		 	   WHERE pbi.pv_id = pvid;    
17484
 
17485
 
17486
         --- Remove from Build Order
17487
         DELETE FROM build_order bo
17488
               WHERE bo.pv_id = pvid;
17489
 
17490
         --- Remove from Note Manager
17491
         DELETE FROM note_manager nm
17492
               WHERE nm.nid = pvid;
17493
 
17494
         --- Remove from Action log
17495
         DELETE FROM action_log al
17496
               WHERE al.pv_id = pvid;
17497
 
17498
		 --- Remove from Do Not Ripple 
17499
		 DELETE FROM DO_NOT_RIPPLE dnr
17500
		 	   WHERE dnr.PV_ID = pvid;
17501
 
17502
		 --- Remove from Jira Issues 
17503
		 DELETE FROM JIRA_ISSUES jira
17504
		 	   WHERE jira.PV_ID = pvid;
17505
 
17506
         --- Finally Remove From Package Versions
17507
         --- Get Package name
17508
         SELECT pv.pkg_id
17509
           INTO pkgid
17510
           FROM package_versions pv
17511
          WHERE pv.pv_id = pvid;
17512
 
17513
         DELETE FROM package_versions pv
17514
               WHERE pv.pv_id = pvid;
17515
 
17516
         --- Remove package name if not used any more
17517
         SELECT COUNT (pv.pv_id)
17518
           INTO ROWCOUNT
17519
           FROM package_versions pv
17520
          WHERE pv.pkg_id = pkgid;
17521
 
17522
         IF ROWCOUNT < 1
17523
         THEN
17524
            DELETE FROM PACKAGES pkg
17525
                  WHERE pkg.pkg_id = pkgid;
17526
         END IF;
17527
      END IF;
17528
   END;
17529
 
17530
/*-------------------------------------------------------------------------------------------------------*/
17531
   PROCEDURE new_patch (
17532
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
17533
      nparentpvid        IN       NUMBER,
17534
      spatchidlist       IN       VARCHAR2,
17535
      nuserid            IN       NUMBER,
17536
      returnpatchid      OUT      NUMBER
17537
   )
17538
   IS
17539
      patchpv_id           NUMBER;
17540
      parpkg_id            NUMBER;
17541
      lastinstallorder     NUMBER;
17542
      ispatchdlocked       package_versions.dlocked%TYPE;
17543
      ssv_mm               package_versions.v_mm%TYPE;
17544
      ssv_nmm              package_versions.v_nmm%TYPE;
17545
      ssv_ext              package_versions.v_ext%TYPE;
17546
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
17547
                                                                          ();
17548
 
17549
      CURSOR parent_cur
17550
      IS
17551
         SELECT pv.*, pkg.pkg_name
17552
           FROM package_versions pv, PACKAGES pkg
17553
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
17554
 
17555
      parent_rec           parent_cur%ROWTYPE;
17556
 
17557
      CURSOR patch_cur
17558
      IS
17559
         SELECT pv.*, pg.pkg_name
17560
           FROM package_versions pv, PACKAGES pg
17561
          WHERE pv.pkg_id = parpkg_id
17562
            AND pv.pkg_version = snewpatchversion
17563
            AND pv.pkg_id = pg.pkg_id;
17564
 
17565
      patch_rec            patch_cur%ROWTYPE;
17566
 
17567
      CURSOR releases_cur
17568
      IS
17569
         SELECT rc.pv_id
17570
           FROM release_content rc
17571
          WHERE rc.pv_id = patch_rec.pv_id;
17572
 
17573
      releases_rec         releases_cur%ROWTYPE;
17574
   BEGIN
17575
      -- Get Last Install Order
17576
      SELECT COUNT (*)
17577
        INTO lastinstallorder
17578
        FROM package_patches pp
17579
       WHERE pp.pv_id = nparentpvid;
17580
 
17581
      -- Get parent details
17582
      OPEN parent_cur;
17583
 
17584
      FETCH parent_cur
17585
       INTO parent_rec;
17586
 
17587
      parpkg_id := parent_rec.pkg_id;
17588
 
17589
      -- Find if patch exists in database
17590
      OPEN patch_cur;
17591
 
17592
      FETCH patch_cur
17593
       INTO patch_rec;
17594
 
17595
      -- Parent must be official
17596
      IF parent_rec.dlocked = 'Y'
17597
      THEN
17598
         IF patch_cur%NOTFOUND
17599
         THEN
17600
            ispatchdlocked := 'N';
17601
 
17602
            -- Create new patch version --
17603
            SELECT seq_pv_id.NEXTVAL
17604
              INTO patchpv_id
17605
              FROM DUAL;
17606
 
17607
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
17608
 
17609
            INSERT INTO package_versions
17610
                        (pv_id, pkg_id, pkg_version,
17611
                         dlocked, created_stamp, creator_id,
17612
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
17613
                         src_path,
17614
                         pv_description,
17615
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
17616
						 is_autobuildable
17617
                        )
17618
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
17619
                         ispatchdlocked, ora_sysdate, nuserid,
17620
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
17621
                         parent_rec.src_path,
17622
                            'This is a patch to '
17623
                         || parent_rec.pkg_name
17624
                         || ' '
17625
                         || parent_rec.pkg_version,
17626
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
17627
                        );
17628
 
17629
            INSERT INTO package_patches
17630
                        (pv_id, patch_id, install_order)
17631
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17632
                       lastinstallorder + 1 AS install_order
17633
                  FROM package_versions pv
17634
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17635
 
17636
            /* LOG ACTION */
17637
            log_action (patchpv_id,
17638
                        'new_version',
17639
                        nuserid,
17640
                        'Patch version created: ' || snewpatchversion
17641
                       );
17642
            log_action (nparentpvid,
17643
                        'patch_add',
17644
                        nuserid,
17645
                        'New patch created and attached: ' || snewpatchversion
17646
                       );
17647
         ELSE
17648
            patchpv_id := patch_rec.pv_id;
17649
            ispatchdlocked := patch_rec.dlocked;
17650
 
17651
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
17652
            OPEN releases_cur;
17653
 
17654
            FETCH releases_cur
17655
             INTO releases_rec;
17656
 
17657
            IF releases_cur%NOTFOUND
17658
            THEN
17659
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
17660
               UPDATE package_versions
17661
                  SET is_patch = 'Y'
17662
                WHERE pv_id = patchpv_id;
17663
 
17664
               INSERT INTO package_patches
17665
                           (pv_id, patch_id, install_order)
17666
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17667
                          lastinstallorder + 1 AS install_order
17668
                     FROM package_versions pv
17669
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17670
            END IF;
17671
 
17672
            CLOSE releases_cur;
17673
 
17674
            /* LOG ACTION */
17675
            log_action (nparentpvid,
17676
                        'patch_add',
17677
                        nuserid,
17678
                           'Patch version was found and attached: '
17679
                        || snewpatchversion
17680
                       );
17681
         END IF;
17682
      END IF;
17683
 
17684
      /* Create Patch Dependencies */
17685
      opatchdepcollector := in_list_number (spatchidlist);
17686
 
17687
      -- Make sure patch is unofficial before altering its dependencies
17688
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
17689
      THEN
17690
         -- Delete Existing Dependencies
17691
         DELETE FROM package_dependencies dep
17692
               WHERE dep.pv_id = patchpv_id;
17693
 
17694
         -- Insert new dependencies
17695
         INSERT INTO package_dependencies
17696
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
17697
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
17698
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
17699
                   'L' AS build_type
17700
              FROM package_versions pv
17701
             WHERE pv.pv_id IN (
17702
                      SELECT *
17703
                        FROM TABLE
17704
                                (CAST
17705
                                    (opatchdepcollector AS relmgr_number_tab_t)
17706
                                ));
17707
      END IF;
17708
 
17709
      -- Return patch_id
17710
      returnpatchid := patchpv_id;
17711
 
17712
      CLOSE parent_cur;
17713
 
17714
      CLOSE patch_cur;
17715
   EXCEPTION
17716
      WHEN DUP_VAL_ON_INDEX
17717
      THEN
17718
         raise_application_error (-20000,
17719
                                     'Patch version '
17720
                                  || snewpatchversion
17721
                                  || ' already exist.'
17722
                                 );
17723
   END;
17724
 
17725
/*-------------------------------------------------------------------------------------------------------*/
17726
   PROCEDURE obsolete_patch (
17727
      patchid            IN   NUMBER,
17728
      isobsolete         IN   CHAR,
17729
      obsoletecomments   IN   VARCHAR2,
17730
      userid             IN   NUMBER
17731
   )
17732
   IS
17733
   BEGIN
17734
      -- Update patch
17735
      UPDATE package_versions pv
17736
         SET pv.is_obsolete = isobsolete,
17737
             pv.obsolete_comments = obsoletecomments
17738
       WHERE pv.pv_id = patchid;
17739
 
17740
      /*
17741
      -- Update patch children
17742
      UPDATE PACKAGE_VERSIONS pv SET
17743
      pv.IS_OBSOLETE = IsObsolete,
17744
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17745
      WHERE pv.PV_ID IN (
17746
                     SELECT DISTINCT dep.DPV_ID
17747
                       FROM PACKAGE_DEPENDENCIES dep
17748
                      WHERE dep.PV_ID = PatchId
17749
                     );
17750
 
17751
 
17752
      -- Update patch parent
17753
      UPDATE PACKAGE_VERSIONS pv SET
17754
      pv.IS_OBSOLETE = IsObsolete,
17755
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17756
      WHERE pv.PV_ID IN (
17757
                     SELECT DISTINCT dep.PV_ID
17758
                       FROM PACKAGE_DEPENDENCIES dep
17759
                      WHERE dep.DPV_ID = PatchId
17760
                     );
17761
 
17762
         */
17763
 
17764
      /* LOG ACTION */
17765
      IF isobsolete IS NOT NULL
17766
      THEN
17767
         log_action (patchid,
17768
                     'patch_obsolete',
17769
                     userid,
17770
                     'Obsolete patch. ' || obsoletecomments
17771
                    );
17772
      ELSE
17773
         log_action (patchid,
17774
                     'patch_obsolete',
17775
                     userid,
17776
                     'Undo patch obsolete.'
17777
                    );
17778
      END IF;
17779
   END;
17780
 
17781
/*-------------------------------------------------------------------------------------------------------*/
17782
   PROCEDURE obsolete_patches (
17783
      spatchidlist       IN   VARCHAR2,
17784
      isobsolete         IN   CHAR,
17785
      obsoletecomments   IN   VARCHAR2,
17786
      userid             IN   NUMBER
17787
   )
17788
   IS
17789
   BEGIN
17790
      /*--------------- Business Rules Here -------------------*/
17791
      IF spatchidlist IS NULL
17792
      THEN
17793
         raise_application_error (-20000,
17794
                                  'Please select one or more Patches.'
17795
                                 );
17796
      END IF;
17797
 
17798
/*-------------------------------------------------------*/
17799
 
17800
      -- Update patch
17801
      UPDATE package_versions pv
17802
         SET pv.is_obsolete = isobsolete,
17803
             pv.obsolete_comments = obsoletecomments
17804
       WHERE pv.pv_id IN (
17805
                SELECT *
17806
                  FROM THE
17807
                          (SELECT CAST
17808
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
17809
                                     )
17810
                             FROM DUAL
17811
                          ));
17812
   /*
17813
   -- Update patch children
17814
   UPDATE PACKAGE_VERSIONS pv SET
17815
   pv.IS_OBSOLETE = IsObsolete,
17816
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17817
   WHERE pv.PV_ID IN (
17818
                  SELECT DISTINCT dep.DPV_ID
17819
                    FROM PACKAGE_DEPENDENCIES dep
17820
                   WHERE dep.PV_ID = PatchId
17821
                  );
17822
 
17823
 
17824
   -- Update patch parent
17825
   UPDATE PACKAGE_VERSIONS pv SET
17826
   pv.IS_OBSOLETE = IsObsolete,
17827
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17828
   WHERE pv.PV_ID IN (
17829
                  SELECT DISTINCT dep.PV_ID
17830
                    FROM PACKAGE_DEPENDENCIES dep
17831
                   WHERE dep.DPV_ID = PatchId
17832
                  );
17833
 
17834
      */
17835
 
17836
   /* LOG ACTION
17837
   IF IsObsolete IS NOT NULL THEN
17838
         Log_Action ( PatchId, 'patch_obsolete', UserId,
17839
                  'Obsolete patch. '|| ObsoleteComments );
17840
   ELSE
17841
      Log_Action ( PatchId, 'patch_obsolete', UserId,
17842
                  'Undo patch obsolete.' );
17843
   END IF;  */
17844
   END;
17845
 
17846
/*-------------------------------------------------------------------------------------------------------*/
17847
   PROCEDURE add_process (
17848
      nprocid         IN   processes.proc_id%TYPE,
17849
      shealthtag      IN   processes.proc_name%TYPE,
17850
      sprocdesc       IN   processes.proc_description%TYPE,
17851
      scmdinterface   IN   processes.run_as%TYPE,
17852
      spkgowner       IN   processes.pkg_owner%TYPE,
17853
      sisinterface    IN   processes.is_interface%TYPE,
17854
      npvid           IN   package_processes.pv_id%TYPE,
17855
      nuserid         IN   NUMBER
17856
   )
17857
   IS
17858
      pkgname   VARCHAR2 (100);
17859
/*Rupesh Release on 17/05/2006*/
17860
   BEGIN
17861
      INSERT INTO processes
17862
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
17863
                   is_interface
17864
                  )
17865
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
17866
                   sisinterface
17867
                  );
17868
 
17869
      pk_package.add_package_process (nprocid, npvid, nuserid);
17870
   END;
17871
 
17872
/*-------------------------------------------------------------------------------------------------------*/
17873
   PROCEDURE add_package_process (
17874
      nprocidlist   IN   VARCHAR2,
17875
      npvid         IN   package_processes.pv_id%TYPE,
17876
      nuserid       IN   NUMBER
17877
   )
17878
   IS
17879
      processname   VARCHAR2 (4000);
17880
 
17881
/*Rupesh Release on 17/05/2006*/
17882
      CURSOR proc_cur
17883
      IS
17884
         SELECT prc.proc_id
17885
           FROM processes prc
17886
          WHERE prc.proc_id IN (
17887
                   SELECT *
17888
                     FROM THE
17889
                             (SELECT CAST
17890
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
17891
                                        )
17892
                                FROM DUAL
17893
                             ));
17894
 
17895
      proc_rec      proc_cur%ROWTYPE;
17896
   BEGIN
17897
      OPEN proc_cur;
17898
 
17899
      FETCH proc_cur
17900
       INTO proc_rec;
17901
 
17902
      WHILE proc_cur%FOUND
17903
      LOOP
17904
         INSERT INTO package_processes
17905
                     (proc_id, pv_id
17906
                     )
17907
              VALUES (proc_rec.proc_id, npvid
17908
                     );
17909
 
17910
         SELECT prc.proc_name
17911
           INTO processname
17912
           FROM processes prc
17913
          WHERE prc.proc_id = proc_rec.proc_id;
17914
 
17915
         -- Log Action --
17916
         log_action (npvid,
17917
                     'process_add',
17918
                     nuserid,
17919
                     'Added process with health tag ' || processname
17920
                    );
17921
 
17922
         FETCH proc_cur
17923
          INTO proc_rec;
17924
      END LOOP;
17925
   END;
17926
 
17927
/*-------------------------------------------------------------------------------------------------------*/
17928
   PROCEDURE remove_process (
17929
      nprocid   IN   package_processes.proc_id%TYPE,
17930
      npvid     IN   package_processes.pv_id%TYPE,
17931
      nuserid   IN   NUMBER
17932
   )
17933
   IS
17934
      processname   VARCHAR2 (4000);
17935
/* Rupesh Release on 17/05/2006*/
17936
   BEGIN
17937
      SELECT prc.proc_name
17938
        INTO processname
17939
        FROM processes prc
17940
       WHERE prc.proc_id = nprocid;
17941
 
17942
      DELETE FROM package_processes
17943
            WHERE proc_id = nprocid AND pv_id = npvid;
17944
 
17945
      -- Log Action --
17946
      log_action (npvid,
17947
                  'process_remove',
17948
                  nuserid,
17949
                  'Removed process with health tag ' || processname
17950
                 );
17951
   END;
17952
/*-------------------------------------------------------------------------------------------------------*/
17953
  /* 
17954
  Author: Rupesh Solanki
17955
  Purpose: To move package versions from one release to another
17956
  Release: 4th September 2006 
17957
 
17958
  */
17959
  PROCEDURE move_package (
17960
   	  npvid  			  IN package_versions.pv_id%TYPE,
17961
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
17962
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
17963
	  nuserid			  IN NUMBER	
17964
  )	
17965
  IS	
17966
 
17967
  oldrtag_name VARCHAR2(4000);
17968
  newrtag_name VARCHAR2(4000);
17969
 
17970
 
17971
 
17972
  BEGIN
17973
 
17974
 
17975
  SELECT rtag_name into oldrtag_name
17976
  FROM RELEASE_TAGS
17977
  WHERE rtag_id = nrtagid;
17978
 
17979
  SELECT rtag_name into newrtag_name
17980
  FROM RELEASE_TAGS
17981
  WHERE rtag_id = nnewrtagid;
17982
 
17983
  /* Table Work In Progress*/
17984
  	   UPDATE WORK_IN_PROGRESS
17985
	   SET RTAG_ID = nnewrtagid
17986
	   WHERE RTAG_ID = nrtagid
17987
	   AND PV_ID = npvid;
17988
 
17989
  /* Table PLANNED*/	
17990
  	   UPDATE PLANNED
17991
	   SET RTAG_ID = nnewrtagid
17992
	   WHERE RTAG_ID = nrtagid
17993
	   AND PV_ID = npvid;   
17994
 
17995
      -- Log Action --
17996
      log_action (npvid,
17997
                  'move_package_version',
17998
                  nuserid,
17999
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
18000
                 );  	   	     
18001
 
18002
 
18003
  END;
18004
 
18005
/*-------------------------------------------------------------------------------------------------------*/
18006
PROCEDURE modify_product_state (
18007
   	  npvid IN package_versions.pv_id%TYPE,
18008
	  nstateid IN product_states.state_id%TYPE,
18009
	  nuserid IN NUMBER
18010
   ) IS
18011
 
18012
   sStateName VARCHAR(4000);
18013
 
18014
  /* 
18015
  Author: Rupesh Solanki
18016
  Purpose: To modify the product state from integration to test to deployment
18017
  Release: 25th January 2006 
18018
  */   
18019
 
18020
  BEGIN
18021
 
18022
  UPDATE PACKAGE_VERSIONS
18023
  SET PRODUCT_STATE = nstateid
18024
  WHERE PV_ID = npvid;
18025
 
18026
 
18027
  SELECT STATE INTO sStateName
18028
  FROM PRODUCT_STATES 
18029
  WHERE STATE_ID = nstateid;
18030
 
18031
  -- Log Action --
18032
  log_action (npvid,
18033
              'modify_product_state',
18034
               nuserid,
18035
               sStateName
18036
              );  
18037
 
18038
 
18039
  END;			  	   	     
18040
/*-------------------------------------------------------------------------------------------------------*/   
18041
END pk_package_Test;
18042
/
18043
 
18044
CREATE OR REPLACE PACKAGE BODY pk_project IS
18045
/*
18046
------------------------------
18047
||  Last Modified:  J.Tweddle
18048
||  Modified Date:  23/Aug/2007
18049
||  Body Version:   1.0
18050
------------------------------
18051
*/
18052
 
18053
    /*------------------------------------------------------------------------*/
18054
    PROCEDURE update_base_url ( 
18055
        nprojid   IN  projects.proj_id%TYPE,
18056
        sbaseurl  IN  VARCHAR2
18057
        ) IS
18058
    BEGIN
18059
 
18060
        UPDATE projects
18061
        SET base_url = sbaseurl
18062
        WHERE proj_id = nprojid;
18063
 
18064
    END update_base_url;
18065
    /*------------------------------------------------------------------------*/
18066
 
18067
END pk_project;
18068
/
18069
 
18070
CREATE OR REPLACE PACKAGE BODY pk_buildapi
18071
IS
18072
/*
18073
------------------------------
18074
||  Last Modified:  Jeremy Tweddle
18075
||  Modified Date:  14/Dec/2007
18076
||  Body Version:   3.1
18077
------------------------------
18078
*/
18079
 
18080
   /*-------------------------------------------------------------------------------------------------------*/
18081
   PROCEDURE add_product_component (
18082
      npvid           IN   NUMBER,
18083
      sosname         IN   VARCHAR2,
18084
      sorigfilepath   IN   VARCHAR2,
18085
      sfilename       IN   VARCHAR2,
18086
      sdestfilepath   IN   VARCHAR2,
18087
      nbytesize       IN   NUMBER,
18088
      scrccksum       IN   VARCHAR2
18089
   )
18090
   IS
18091
      nosid   NUMBER;
18092
   BEGIN
18093
      /*--------------- Business Rules Here -------------------*/
18094
      -- OS Name Requirements --
18095
      IF (sosname IS NULL)
18096
      THEN
18097
         raise_application_error (-20000, 'OsName cannot be NULL.');
18098
      END IF;
18099
 
18100
      -- File Requirements --
18101
      IF (NOT sfilename IS NULL)
18102
      THEN
18103
         IF (nbytesize IS NULL)
18104
         THEN
18105
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
18106
         ELSIF (scrccksum IS NULL)
18107
         THEN
18108
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
18109
         END IF;
18110
      END IF;
18111
 
18112
      -- Folder Requirements --
18113
      -- No requirements for now.
18114
 
18115
      /*-------------------------------------------------------*/
18116
 
18117
      -- Get OsId
18118
      nosid := get_osid (sosname);
18119
 
18120
      -- Insert component entry
18121
      INSERT INTO product_components
18122
                  (pv_id, os_id, file_path, file_name, destination_path,
18123
                   byte_size, crc_cksum
18124
                  )
18125
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
18126
                   nbytesize, scrccksum
18127
                  );
18128
   EXCEPTION
18129
      WHEN DUP_VAL_ON_INDEX
18130
      THEN
18131
         raise_application_error (-20000,
18132
                                  'Cannot have duplicate product components.'
18133
                                 );
18134
   END;
18135
 
18136
/*-------------------------------------------------------------------------------------------------------*/
18137
   PROCEDURE remove_all_product_components (
18138
      npvid     IN   NUMBER,
18139
      sosname   IN   VARCHAR2
18140
   )
18141
   IS
18142
      nosid   NUMBER;
18143
   BEGIN
18144
/*--------------- Business Rules Here -------------------*/
18145
/*-------------------------------------------------------*/
18146
 
18147
      -- Get OsId
18148
      nosid := get_osid (sosname);
18149
 
18150
      -- Delete component entry
18151
      DELETE FROM product_components pc
18152
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
18153
   END;
18154
 
18155
/*-------------------------------------------------------------------------------------------------------*/
18156
   FUNCTION get_osid (sosname IN VARCHAR2)
18157
      RETURN NUMBER
18158
   IS
18159
      code   NUMBER;
18160
   BEGIN
18161
      -- Get Platform Code --
18162
      SELECT pf.code
18163
        INTO code
18164
        FROM platforms pf
18165
       WHERE UPPER (pf.NAME) = UPPER (sosname);
18166
 
18167
      RETURN code;
18168
   EXCEPTION
18169
      WHEN NO_DATA_FOUND
18170
      THEN
18171
         raise_application_error
18172
            (-20000,
18173
                'Platform '
18174
             || sosname
18175
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
18176
            );
18177
         RAISE;
18178
   END;
18179
 
18180
/*-------------------------------------------------------------------------------------------------------*/
18181
   PROCEDURE update_build_service (
18182
      sdatabaseserver   IN   VARCHAR2,
18183
      swebserver        IN   VARCHAR2,
18184
      smailserver       IN   VARCHAR2,
18185
      smailsender       IN   VARCHAR2,
18186
      sdiskspace        IN   VARCHAR2,
18187
      ssbommanagement   IN   VARCHAR2
18188
   )
18189
   IS
18190
   BEGIN
18191
      UPDATE build_service_config
18192
         SET config = sdatabaseserver
18193
       WHERE service = 'DATABASE SERVER';
18194
 
18195
      UPDATE build_service_config
18196
         SET config = swebserver
18197
       WHERE service = 'WEB SERVER';
18198
 
18199
      UPDATE build_service_config
18200
         SET config = smailserver
18201
       WHERE service = 'MAIL SERVER';
18202
 
18203
      UPDATE build_service_config
18204
         SET config = smailsender
18205
       WHERE service = 'BUILD FAILURE MAIL SENDER';
18206
 
18207
      UPDATE build_service_config
18208
         SET config = sdiskspace
18209
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
18210
 
18211
      UPDATE build_service_config
18212
         SET config = ssbommanagement
18213
       WHERE service = 'SBOM MANAGEMENT';
18214
   END;
18215
 
18216
/*-------------------------------------------------------------------------------------------------------*/
18217
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
18218
   IS
18219
      gbe_id   NUMBER;
18220
   BEGIN
18221
      -- Get GBE_ID
18222
      SELECT seq_gbe_id.NEXTVAL
18223
        INTO gbe_id
18224
        FROM DUAL;
18225
 
18226
      INSERT INTO gbe_machtype
18227
                  (gbe_id, gbe_value
18228
                  )
18229
           VALUES (gbe_id, sgbevalue
18230
                  );
18231
   END;
18232
 
18233
/*-------------------------------------------------------------------------------------------------------*/
18234
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
18235
   IS
18236
   BEGIN
18237
      DELETE FROM gbe_machtype
18238
            WHERE gbe_id = ngbe_id;
18239
   END;
18240
 
18241
/*-------------------------------------------------------------------------------------------------------*/
18242
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
18243
   IS
18244
   BEGIN
18245
      UPDATE gbe_machtype
18246
         SET gbe_value = sgbevalue
18247
       WHERE gbe_id = ngbe_id;
18248
   END;
18249
 
18250
/*-------------------------------------------------------------------------------------------------------*/
18251
   PROCEDURE add_daemon (
18252
      sdaemonhostname   IN   VARCHAR2,
18253
      nrtagid           IN   NUMBER,
18254
      ngbeid            IN   NUMBER,
18255
      sgbebuildfilter   IN   VARCHAR2
18256
   )
18257
   IS
18258
      nrecordnumber   NUMBER;
18259
      nrconid         NUMBER;
18260
   BEGIN
18261
      -- Get RCON_ID
18262
      SELECT seq_rcon_id.NEXTVAL
18263
        INTO nrconid
18264
        FROM DUAL;
18265
 
18266
      SELECT COUNT (*)
18267
        INTO nrecordnumber
18268
        FROM release_config
18269
       WHERE rtag_id = nrtagid;
18270
 
18271
      IF nrecordnumber = 0
18272
      THEN
18273
         INSERT INTO release_config
18274
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18275
                      gbe_id, gbe_buildfilter
18276
                     )
18277
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
18278
                      ngbeid, sgbebuildfilter
18279
                     );
18280
      ELSE
18281
         INSERT INTO release_config
18282
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18283
                      gbe_id, gbe_buildfilter
18284
                     )
18285
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
18286
                      ngbeid, sgbebuildfilter
18287
                     );
18288
      END IF;
18289
   END;
18290
 
18291
/*-------------------------------------------------------------------------------------------------------*/
18292
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
18293
   IS
18294
   BEGIN
18295
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
18296
      DELETE FROM daemon_action_log
18297
            WHERE rcon_id IN (
18298
                     SELECT *
18299
                       FROM THE
18300
                               (SELECT CAST
18301
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18302
                                          )
18303
                                  FROM DUAL
18304
                               ));
18305
 
18306
      DELETE FROM run_level
18307
            WHERE rcon_id IN (
18308
                     SELECT *
18309
                       FROM THE
18310
                               (SELECT CAST
18311
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18312
                                          )
18313
                                  FROM DUAL
18314
                               ));
18315
 
18316
      DELETE FROM abt_action_log
18317
            WHERE rcon_id IN (
18318
                     SELECT *
18319
                       FROM THE
18320
                               (SELECT CAST
18321
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18322
                                          )
18323
                                  FROM DUAL
18324
                               ));
18325
 
18326
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
18327
      DELETE FROM release_config
18328
            WHERE rcon_id IN (
18329
                     SELECT *
18330
                       FROM THE
18331
                               (SELECT CAST
18332
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18333
                                          )
18334
                                  FROM DUAL
18335
                               ));
18336
   END;
18337
 
18338
/*-------------------------------------------------------------------------------------------------------*/
18339
   PROCEDURE update_daemon (
18340
      sdaemonhostname   IN   VARCHAR2,
18341
      nrconid           IN   NUMBER,
18342
      ngbeid            IN   NUMBER,
18343
      sgbebuildfilter   IN   VARCHAR2
18344
   )
18345
   IS
18346
   BEGIN
18347
      UPDATE release_config
18348
         SET daemon_hostname = sdaemonhostname,
18349
             gbe_id = ngbeid,
18350
             gbe_buildfilter = sgbebuildfilter
18351
       WHERE rcon_id = nrconid;
18352
   END;
18353
 
18354
/*-------------------------------------------------------------------------------------------------------*/
18355
   PROCEDURE insert_schedule_info (
18356
      dschedulepause     IN   DATE,
18357
      dscheduleresume    IN   DATE,
18358
      crepeat            IN   VARCHAR2,
18359
      cindefinitepause   IN   VARCHAR2
18360
   )
18361
   IS
18362
      nscheduledid   NUMBER;
18363
   BEGIN
18364
      -- Get Next Available Scheduled Id
18365
      SELECT seq_scheduled_id.NEXTVAL
18366
        INTO nscheduledid
18367
        FROM DUAL;
18368
 
18369
      INSERT INTO run_level_schedule
18370
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
18371
                   cindefinitepause);
18372
   END;
18373
 
18374
/*-------------------------------------------------------------------------------------------------------*/
18375
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
18376
   IS
18377
   BEGIN
18378
      DELETE FROM run_level_schedule
18379
            WHERE scheduled_id = nscheduleid;
18380
   END;
18381
 
18382
/*-------------------------------------------------------------------------------------------------------*/
18383
   PROCEDURE set_infinite_pause
18384
   IS
18385
      nscheduledid   NUMBER;
18386
   BEGIN
18387
      -- Get Next Available Scheduled Id
18388
      SELECT seq_scheduled_id.NEXTVAL
18389
        INTO nscheduledid
18390
        FROM DUAL;
18391
 
18392
      INSERT INTO run_level_schedule
18393
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
18394
   END;
18395
 
18396
/*-------------------------------------------------------------------------------------------------------*/
18397
   PROCEDURE set_resume
18398
   IS
18399
   BEGIN
18400
      DELETE FROM run_level_schedule
18401
            WHERE indefinite_pause = 'P';
18402
   END;
18403
 
18404
/*-------------------------------------------------------------------------------------------------------*/
18405
   PROCEDURE delete_out_of_date_schedule
18406
   IS
18407
   BEGIN
18408
      DELETE FROM run_level_schedule
18409
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
18410
   END;
18411
 
18412
/*-------------------------------------------------------------------------------------------------------*/
18413
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
18414
   IS
18415
   BEGIN
18416
      UPDATE run_level
18417
         SET PAUSE = NULL
18418
       WHERE rcon_id = nrconid;
18419
   END;
18420
 
18421
/*-------------------------------------------------------------------------------------------------------*/
18422
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
18423
   IS
18424
   BEGIN
18425
      UPDATE run_level
18426
         SET PAUSE = 1
18427
       WHERE rcon_id = nrconid;
18428
   END;
18429
/*-------------------------------------------------------------------------------------------------------*/
18430
END pk_buildapi;
18431
/
18432
 
18433
CREATE OR REPLACE PACKAGE BODY Rm_Issues AS
18434
 
18435
-- Private Implementation -----------------------------------------------------
18436
 
18437
 
18438
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18439
	AS
18440
 
18441
	BEGIN
18442
		-- start boundary case
18443
		IF ( XXstart < XX ) THEN
18444
			RETURN 1;
18445
 
18446
		ELSIF ( XXstart = XX ) THEN
18447
 
18448
			-- need to consider YY
18449
			IF ( YYstart < YY ) THEN
18450
				RETURN 1;
18451
 
18452
			ELSIF ( YYstart = YY ) THEN
18453
 
18454
					-- need to consider ZZ
18455
					IF ( ZZstart <= ZZ ) THEN
18456
						RETURN 1;
18457
 
18458
					ELSE
18459
						RETURN 0;
18460
					END IF;
18461
 
18462
			ELSE
18463
				RETURN 0;
18464
			END IF;
18465
		ELSE
18466
			RETURN 0;
18467
		END IF;
18468
	EXCEPTION
18469
		WHEN OTHERS THEN
18470
			RETURN -1;
18471
	END;
18472
 
18473
 
18474
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18475
	AS
18476
 
18477
	BEGIN
18478
		-- end boundary case
18479
		IF ( XX < XXend ) THEN
18480
			RETURN 1;
18481
 
18482
		ELSIF ( XX = XXend ) THEN
18483
 
18484
			-- need to consider YY
18485
			IF ( YY < YYend ) THEN
18486
				RETURN 1;
18487
 
18488
			ELSIF ( YY = YYend ) THEN
18489
 
18490
					-- need to consider ZZ
18491
					IF ( ZZ <= ZZend ) THEN
18492
						RETURN 1;
18493
 
18494
					ELSE
18495
						RETURN 0;
18496
					END IF;
18497
			ELSE
18498
 
18499
				RETURN 0;
18500
			END IF;
18501
		ELSE
18502
			RETURN 0;
18503
		END IF;
18504
	EXCEPTION
18505
		WHEN OTHERS THEN
18506
			RETURN -1;
18507
	END;
18508
 
18509
	/*
18510
	-	version format:		XX.YY.ZZ.abc
18511
	*/
18512
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
18513
	AS
18514
		XXstart		NUMBER	:=	0;
18515
		XXend		NUMBER	:=	0;
18516
		XX			NUMBER	:=	0;
18517
		YYstart		NUMBER	:=	0;
18518
		YYend		NUMBER	:=	0;
18519
		YY			NUMBER	:=	0;
18520
		ZZstart		NUMBER	:=	0;
18521
		ZZend		NUMBER	:=	0;
18522
		ZZ			NUMBER	:=	0;
18523
		first_dot	NUMBER	:=	0;
18524
		second_dot	NUMBER	:=	0;
18525
		third_dot	NUMBER	:=	0;
18526
 
18527
		ProjExtstart	VARCHAR2(10);
18528
		ProjExtend		VARCHAR2(10);
18529
		ProjExt			VARCHAR2(10);
18530
 
18531
	BEGIN
18532
		-- strip the version number
18533
		first_dot :=  INSTR(version_start, '.', 1, 1);
18534
		second_dot :=  INSTR(version_start, '.', 1, 2);
18535
		third_dot :=  INSTR(version_start, '.', 1, 3);
18536
 
18537
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
18538
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18539
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18540
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
18541
 
18542
		first_dot :=  INSTR(version_end, '.', 1, 1);
18543
		second_dot :=  INSTR(version_end, '.', 1, 2);
18544
		third_dot :=  INSTR(version_end, '.', 1, 3);
18545
 
18546
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
18547
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18548
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18549
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
18550
 
18551
		first_dot :=  INSTR(version, '.', 1, 1);
18552
		second_dot :=  INSTR(version, '.', 1, 2);
18553
		third_dot :=  INSTR(version, '.', 1, 3);
18554
 
18555
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
18556
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18557
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18558
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
18559
 
18560
		-- only include versions if all project extensions are the same
18561
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
18562
 
18563
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
18564
				RETURN 1;
18565
			ELSE
18566
				RETURN 0;
18567
			END IF;
18568
		ELSE
18569
			RETURN 0;
18570
		END IF;
18571
 
18572
	EXCEPTION
18573
		WHEN OTHERS THEN
18574
			RETURN -1;
18575
	END;
18576
 
18577
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
18578
	AS
18579
	    pkg_id NUMBER;
18580
	BEGIN
18581
		SELECT
18582
			p.PKG_ID
18583
		INTO
18584
			pkg_id
18585
		FROM
18586
			PACKAGES p
18587
		WHERE
18588
			p.PKG_NAME = pkgName;
18589
 
18590
		RETURN pkg_id;
18591
	EXCEPTION
18592
	    WHEN OTHERS THEN
18593
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
18594
			RETURN -1;
18595
	END;
18596
 
18597
 
18598
-- Public Implementation ------------------------------------------------------
18599
 
18600
	/*
18601
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
18602
	--
18603
	-- INPUT PARAMETERS:
18604
	--
18605
	--		pkg_name  	-  	The name of the top level package to get issues for
18606
	--		version_start	-	The start version for the comparison
18607
	--		version_end	-	The end version for the comparison
18608
	*/
18609
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18610
	AS
18611
		pkgId	NUMBER;
18612
	BEGIN
18613
		-- get pkg_id of the input package:
18614
		pkgId := GetPkgId( pkg_name );
18615
 
18616
		OPEN vCursor FOR
18617
		SELECT
18618
			  pv.PKG_ID,
18619
			  pv.PKG_VERSION,
18620
			  pv.PV_ID,
18621
			  i_pkg.ISS_ID,
18622
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
18623
			  pd.DPKG_ID,
18624
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
18625
			  pd.DPV_ID,
18626
			  i_dpkg.ISS_ID AS ISSUE_ID
18627
		FROM
18628
			 PACKAGE_VERSIONS pv
18629
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
18630
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
18631
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
18632
		WHERE
18633
   			 pv.PKG_ID = pkgId
18634
		AND
18635
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
18636
		AND
18637
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
18638
		ORDER BY
18639
			 pv.PKG_ID,
18640
			 pv.PV_ID,
18641
			 pd.DPKG_ID,
18642
			 pd.DPV_ID;
18643
	EXCEPTION
18644
		WHEN OTHERS THEN
18645
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
18646
	END;
18647
 
18648
 
18649
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
18650
 
18651
	/*
18652
	-- Proc: LoadIssuesTable
18653
	--
18654
	-- Populates Package_Issues table with details of issues from all dependent packages.
18655
	-- This will be for all package versions of the input pkg_name between the
18656
	-- version_start and version_end.
18657
	--
18658
	-- INPUT PARAMETERS:
18659
	--
18660
	--		pkg_name  	-  	The name of the top level package to get issues for
18661
	--		version_start	-	The start version for the comparison
18662
	--		version_end	-	The end version for the comparison
18663
	*/
18664
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18665
	AS
18666
		pkgId	NUMBER;
18667
 
18668
		CURSOR pack_vers_cur IS
18669
			SELECT
18670
				pv.PV_ID,
18671
				pv.PKG_VERSION,
18672
				pv.PKG_ID,
18673
				p.PKG_NAME
18674
			FROM
18675
				PACKAGE_VERSIONS pv
18676
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18677
			WHERE
18678
   				 pv.PKG_ID = pkgId
18679
			AND
18680
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
18681
 
18682
	BEGIN
18683
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18684
 
18685
		-- get the pkg_id we are finding issues for
18686
		pkgId := GetPkgId( pkg_name );
18687
 
18688
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
18689
		FOR pack_ver_rec IN  pack_vers_cur
18690
		LOOP
18691
			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 );
18692
			COMMIT;
18693
		END LOOP;
18694
 
18695
		-- The output cursor - shows the individual versions of the top level package then were reported on
18696
		OPEN vCursor FOR
18697
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18698
/*removed
18699
		SELECT
18700
			PKG_VERSION
18701
		FROM
18702
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
18703
*/
18704
 
18705
 
18706
	EXCEPTION
18707
		WHEN OTHERS THEN
18708
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
18709
	END;
18710
 
18711
 
18712
	/*
18713
	-- Proc: InsertIssuesForDepends
18714
	--
18715
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
18716
	--
18717
	-- INPUT PARAMETERS:
18718
	--
18719
	--		pvID  		-  	The package version id of the package to get issues for
18720
	--		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)
18721
	--		top_pkgName -  	The package name of the top level package
18722
	--		top_pvID  	-  	The package version id of the top level package
18723
	--		top_pkgVer  -  	The package version description of the top level package
18724
	*/
18725
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
18726
	AS
18727
		pkgId		NUMBER;
18728
		issCnt		NUMBER := 0;
18729
		pkgCheck	NUMBER := 0;
18730
		depCheck	NUMBER := 0;
18731
 
18732
		dpkgName	VARCHAR(50);
18733
		dpkgVersion	VARCHAR(50);
18734
 
18735
		CURSOR dep_packs_cur IS
18736
			SELECT
18737
				DPV_ID
18738
			FROM
18739
				PACKAGE_DEPENDENCIES
18740
			WHERE
18741
				PV_ID = pvID;
18742
 
18743
	BEGIN
18744
 
18745
		-- check to see if the package has been processed previously
18746
		SELECT
18747
			COUNT(*)
18748
		INTO
18749
			pkgCheck
18750
		FROM
18751
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18752
		WHERE
18753
			DPV_ID = pvID;
18754
 
18755
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
18756
 
18757
		-- Package not already processed (no cyclic dependency) - process it
18758
		IF ( pkgCheck = 0 ) THEN
18759
 
18760
			-- check to see if this package version has any issues assigned to it
18761
			SELECT
18762
				COUNT(*)
18763
			INTO
18764
				issCnt
18765
			FROM
18766
				CQ_ISSUES i
18767
			WHERE
18768
				i.PV_ID = pvID;
18769
 
18770
			dbms_output.put_line('issCnt: ' || issCnt );
18771
 
18772
			-- Always enter a marker row into the table even if there are no issues for the package.
18773
			-- This allows us to pick up any cyclic dependencies.
18774
			IF ( issCnt > 0 ) THEN
18775
				-- get issues and insert into RM_PACKAGE_ISSUES
18776
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18777
 
18778
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18779
					SELECT DISTINCT
18780
						top_pkgID		AS PKG_ID,
18781
						top_pkgName		AS PKG_NAME,
18782
						top_pvID		AS PV_ID,
18783
						top_pkgVer		AS PKG_VERSION,
18784
						pv.PV_ID		AS DPV_ID,
18785
						p.PKG_NAME		AS DPKG_NAME,
18786
						pv.PKG_VERSION	AS DPKG_VERSION,
18787
						ci.ISS_DB,
18788
						ci.ISS_ID
18789
					FROM
18790
						PACKAGE_VERSIONS pv
18791
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18792
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
18793
					WHERE
18794
						pv.PV_ID = pvID;
18795
 
18796
			ELSE
18797
				-- get the dpkg details - there will always be a row returned here
18798
				SELECT
18799
					p.PKG_NAME
18800
				INTO
18801
					dpkgName
18802
				FROM
18803
					PACKAGE_VERSIONS pv
18804
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18805
				WHERE
18806
	   				 pv.PV_ID = pvID;
18807
 
18808
				SELECT
18809
					pv.PKG_VERSION
18810
				INTO
18811
					dpkgVersion
18812
				FROM
18813
					PACKAGE_VERSIONS pv
18814
				WHERE
18815
	   				 pv.PV_ID = pvID;
18816
 
18817
				-- enter a marker row
18818
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18819
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18820
				VALUES (
18821
					top_pkgID,
18822
					top_pkgName,
18823
					top_pvID,
18824
					top_pkgVer,
18825
					pvID,
18826
					dpkgName,
18827
					dpkgVersion,
18828
					NULL,
18829
					NULL );
18830
 
18831
			END IF;
18832
 
18833
			-- If this package version has dependencies then recurse
18834
			SELECT
18835
				COUNT(*)
18836
			INTO
18837
				depCheck
18838
			FROM
18839
				PACKAGE_DEPENDENCIES
18840
			WHERE
18841
				PV_ID = pvID;
18842
 
18843
			IF ( depCheck > 0 ) THEN
18844
				-- get dependencies and call this function recursively for each one
18845
				FOR dep_rec IN  dep_packs_cur
18846
				LOOP
18847
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
18848
				END LOOP;
18849
 
18850
			END IF;
18851
 
18852
		END IF;
18853
 
18854
	/*EXCEPTION
18855
		WHEN OTHERS THEN
18856
			no exception handling required
18857
	*/
18858
	END;
18859
 
18860
END Rm_Issues;
18861
/
18862
 
53 mhunt 18863
CREATE OR REPLACE PACKAGE BODY                   "PK_PLANNED" IS
51 mhunt 18864
 
18865
/*
18866
------------------------------
53 mhunt 18867
||  Last Modified:  G.Huddy
59 mhunt 18868
||  Modified Date:  05/Aug/2008
18869
||  Body Version:   1.2
51 mhunt 18870
------------------------------
18871
*/
18872
 
18873
 
18874
/*-------------------------------------------------------------------------------------------------------*/
18875
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18876
 
59 mhunt 18877
    oldPvId NUMBER;
18878
    ReleaseLocation VARCHAR2(4000);
18879
    IsPatch CHAR(1) := NULL;
18880
    sLocation VARCHAR2(4000) := NULL;
18881
    nRtagIdLocation NUMBER;
51 mhunt 18882
 
18883
 
53 mhunt 18884
 
51 mhunt 18885
BEGIN
59 mhunt 18886
    /*--------------- Business Rules Here -------------------*/
18887
    /*-------------------------------------------------------*/
51 mhunt 18888
 
59 mhunt 18889
    BEGIN
18890
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
18891
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
18892
          FROM PLANNED pl,
18893
               RELEASE_TAGS rt,
18894
               PROJECTS proj
18895
         WHERE pl.PV_ID = newPvId
18896
           AND pl.RTAG_ID = rt.RTAG_ID
18897
           AND rt.OFFICIAL != 'Y'
18898
           AND rt.PROJ_ID = proj.PROJ_ID;
51 mhunt 18899
 
59 mhunt 18900
        EXCEPTION
18901
            WHEN NO_DATA_FOUND THEN
18902
                sLocation := NULL;
18903
    END;
51 mhunt 18904
 
18905
 
18906
 
59 mhunt 18907
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
51 mhunt 18908
 
59 mhunt 18909
        -- Add to "Pending" area
18910
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
18911
        VALUES( RtagId, newPvId, ViewId, 'R' );
51 mhunt 18912
 
18913
 
59 mhunt 18914
        /* LOG ACTION */
18915
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18916
          FROM PROJECTS proj,
18917
               RELEASE_TAGS rt
18918
         WHERE rt.PROJ_ID = proj.PROJ_ID
18919
           AND rt.RTAG_ID = RtagId;
51 mhunt 18920
 
59 mhunt 18921
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
53 mhunt 18922
 
59 mhunt 18923
    ELSE
51 mhunt 18924
 
59 mhunt 18925
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
53 mhunt 18926
 
59 mhunt 18927
    END IF;
51 mhunt 18928
 
18929
END;
18930
/*-------------------------------------------------------------------------------------------------------*/
18931
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18932
 
59 mhunt 18933
    ReleaseLocation VARCHAR2(4000);
51 mhunt 18934
 
18935
BEGIN
18936
 
59 mhunt 18937
    /*--------------- Business Rules Here -------------------*/
18938
    /*-------------------------------------------------------*/
51 mhunt 18939
 
18940
 
59 mhunt 18941
    -- Get release location for logging pusposes
18942
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18943
      FROM PROJECTS proj,
18944
           RELEASE_TAGS rt
18945
     WHERE rt.PROJ_ID = proj.PROJ_ID
18946
       AND rt.RTAG_ID = RtagId;
51 mhunt 18947
 
18948
 
59 mhunt 18949
    -- Delete from Work In Progress
18950
    DELETE
18951
      FROM PLANNED pl
18952
     WHERE pl.RTAG_ID = RtagId
18953
       AND pl.PV_ID = PvId;
51 mhunt 18954
 
59 mhunt 18955
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
51 mhunt 18956
 
18957
 
18958
 
18959
 
18960
END;
18961
/*-------------------------------------------------------------------------------------------------------*/
18962
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
18963
 
59 mhunt 18964
    ReturnValue NUMBER;
51 mhunt 18965
 
18966
BEGIN
59 mhunt 18967
    SELECT pl.VIEW_ID INTO ReturnValue
18968
      FROM PLANNED pl
18969
     WHERE pl.RTAG_ID = RtagId
18970
       AND pl.PV_ID = PvId;
51 mhunt 18971
 
59 mhunt 18972
    RETURN ReturnValue;
51 mhunt 18973
END;
18974
/*-------------------------------------------------------------------------------------------------------*/
18975
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
18976
 
59 mhunt 18977
    IsBaseView CHAR(1);
53 mhunt 18978
 
51 mhunt 18979
BEGIN
18980
 
59 mhunt 18981
    -- Check if the view is BASE VIEW
18982
    SELECT vi.BASE_VIEW INTO IsBaseView
18983
      FROM VIEWS vi
18984
     WHERE vi.VIEW_ID = ViewId;
51 mhunt 18985
 
53 mhunt 18986
 
59 mhunt 18987
    IF (IsBaseView = 'Y') THEN
18988
        -- Get Base view content
18989
        OPEN RecordSet FOR
18990
        SELECT 0 AS PKG_STATE,
18991
               NULL AS DEPRECATED_STATE,
18992
               pv.pv_id,
18993
               pkg.pkg_name,
18994
               pv.pkg_version,
18995
               pv.dlocked,
18996
               pv.pv_description,
18997
               pv.BUILD_TYPE,
18998
               rel.operation
18999
          FROM PLANNED rel,
19000
               packages pkg,
19001
               package_versions pv
19002
         WHERE pv.pkg_id = pkg.pkg_id
19003
           AND rel.pv_id = pv.pv_id
19004
           AND rel.VIEW_ID = ViewId
19005
           AND rel.RTAG_ID = RtagId
19006
         ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 19007
 
59 mhunt 19008
    ELSE
53 mhunt 19009
 
59 mhunt 19010
        -- Get non base view content
19011
        OPEN RecordSet FOR
19012
        SELECT 0 AS PKG_STATE,
19013
               NULL AS DEPRECATED_STATE,
19014
               pv.pv_id,
19015
               pkg.pkg_name,
19016
               pv.pkg_version,
19017
               pv.dlocked,
19018
               pv.pv_description,
19019
               pv.BUILD_TYPE,
19020
               rel.operation
19021
          FROM PLANNED rel,
19022
               packages pkg,
19023
               package_versions pv,
19024
               VIEW_DEF vd
19025
         WHERE pv.pkg_id = pkg.pkg_id
19026
           AND rel.pv_id = pv.pv_id
19027
           AND rel.RTAG_ID = RtagId
19028
           AND vd.VIEW_ID = ViewId
19029
           AND vd.PKG_ID = pv.PKG_ID
19030
         ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 19031
 
59 mhunt 19032
    END IF;
53 mhunt 19033
 
19034
 
51 mhunt 19035
END;
19036
/*-------------------------------------------------------------------------------------------------------*/
19037
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
53 mhunt 19038
 
51 mhunt 19039
BEGIN
53 mhunt 19040
 
59 mhunt 19041
    UPDATE PLANNED pl SET
19042
    pl.VIEW_ID = NewViewId
19043
    WHERE pl.PV_ID = PvId
19044
      AND pl.RTAG_ID = RtagId;
53 mhunt 19045
 
51 mhunt 19046
END;
19047
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 19048
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
19049
-- version of a package as part of a release-to-release merge operation carried out within release manager.
55 mhunt 19050
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
19051
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
19052
-- via the Release Manager merge manager display
53 mhunt 19053
 
19054
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
19055
 
55 mhunt 19056
    ReleaseLocation VARCHAR2(4000);
53 mhunt 19057
 
55 mhunt 19058
        entryExists NUMBER;
19059
        existingOperation CHAR;
53 mhunt 19060
BEGIN
55 mhunt 19061
    /*--------------- Business Rules Here -------------------*/
19062
    /*-------------------------------------------------------*/
53 mhunt 19063
 
55 mhunt 19064
      -- Determine if the specified PV_ID already exists in the planned table....
19065
      SELECT COUNT (pl.pv_id) INTO entryExists
19066
      FROM PLANNED pl
19067
      WHERE pl.pv_id = newPvId
19068
      AND pl.rtag_id = RtagId
19069
      AND pl.view_id = ViewId;
53 mhunt 19070
 
55 mhunt 19071
      -- If the specified PV_ID already exists in the planned table....
19072
      IF entryExists = 1 THEN
53 mhunt 19073
 
55 mhunt 19074
         -- Get the operation for the existing entry
19075
         SELECT pl.operation INTO existingOperation
19076
         FROM PLANNED pl
19077
         WHERE pl.pv_id = newPvId
19078
         AND pl.rtag_id = RtagId
19079
         AND pl.view_id = ViewId;
53 mhunt 19080
 
55 mhunt 19081
         -- Is the specified merge operation the opposite of the existing entry?
19082
         -- If it is not, then there is nothing to do, otherwise...
19083
         -- NOTE: A = Add, S = Subtract
19084
         IF (mergeOperation = 'S' AND existingOperation = 'A')
19085
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
53 mhunt 19086
 
55 mhunt 19087
           -- It is the opposite, so effectively it cancels the existing entry
19088
           -- Remove the entry from the planned table
19089
           DELETE
19090
            FROM PLANNED pl
19091
           WHERE pl.pv_id = newPvId
19092
             AND pl.rtag_id = RtagId
19093
             AND pl.view_id = ViewId;
53 mhunt 19094
 
55 mhunt 19095
           -- Log action
19096
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19097
             FROM PROJECTS proj,
19098
                  RELEASE_TAGS rt
19099
            WHERE rt.PROJ_ID = proj.PROJ_ID
19100
              AND rt.RTAG_ID = RtagId;
19101
 
19102
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
19103
         END IF;
19104
      ELSE
19105
         -- Add to Planned tabled
19106
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
19107
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
19108
 
19109
         -- Log Action
19110
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19111
          FROM PROJECTS proj,
19112
               RELEASE_TAGS rt
19113
         WHERE rt.PROJ_ID = proj.PROJ_ID
19114
         AND   rt.RTAG_ID = RtagId;
19115
 
19116
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
19117
      END IF;
19118
 
53 mhunt 19119
END;
19120
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19121
END PK_PLANNED;
19122
/
19123
 
57 mhunt 19124
CREATE OR REPLACE PACKAGE BODY                   "PK_RMAPI"
51 mhunt 19125
IS
19126
/*
19127
------------------------------
57 mhunt 19128
||  Last Modified:  Gordon Huddy
19129
||  Modified Date:  08/Aug/2008
19130
||  Body Version:   3.4
51 mhunt 19131
------------------------------
19132
*/
19133
 
19134
   /*-------------------------------------------------------------------------------------------------------*/
19135
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
19136
      RETURN typecur
19137
   IS
19138
      npvid     NUMBER  := 0;
19139
      RECORDS   typecur;
19140
   BEGIN
19141
      BEGIN
19142
         -- Get PV_ID --
19143
         SELECT pv.pv_id
19144
           INTO npvid
19145
           FROM PACKAGES pkg, package_versions pv
19146
          WHERE pv.pkg_id = pkg.pkg_id
19147
            AND pkg.pkg_name = pkgname
19148
            AND pv.pkg_version = pkgversion;
19149
      EXCEPTION
19150
         WHEN NO_DATA_FOUND
19151
         THEN
19152
            raise_application_error (-20000, 'Package Not Found!');
19153
            --WHEN OTHERS THEN
19154
                  -- Consider logging the error and then re-raise
19155
            RAISE;
19156
      END;
19157
 
19158
      -- Finally get package dependencies --
19159
      OPEN RECORDS FOR
19160
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
19161
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
19162
          WHERE dep.pv_id = npvid
19163
            AND dpv.pkg_id = dpkg.pkg_id
19164
            AND dpv.pv_id = dep.dpv_id;
19165
 
19166
      RETURN RECORDS;
19167
   END;
19168
 
19169
/*-------------------------------------------------------------------------------------------------------*/
19170
   FUNCTION wip_iteration_package (
19171
      projname        VARCHAR2,
19172
      iterationname   VARCHAR2,
19173
      pkgname         VARCHAR2
19174
   )
19175
      RETURN typecur
19176
   IS
19177
      nrtagid   NUMBER  := 0;
19178
      RECORDS   typecur;
19179
   BEGIN
19180
      BEGIN
19181
         -- Get latest rtag_id --
19182
         SELECT rt.rtag_id
19183
           INTO nrtagid
19184
           FROM projects proj, release_tags rt
19185
          WHERE rt.proj_id = proj.proj_id
19186
            AND UPPER (proj.proj_name) = UPPER (projname)
19187
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
19188
 
19189
         IF (nrtagid IS NULL)
19190
         THEN
19191
            raise_application_error (-20000,
19192
                                     'Work In Progress is Not Found!');
19193
         END IF;
19194
      EXCEPTION
19195
         WHEN NO_DATA_FOUND
19196
         THEN
19197
            raise_application_error (-20000,
19198
                                     'Work In Progress is Not Found!');
19199
            RAISE;
19200
      END;
19201
 
19202
      -- Finally get package dependencies --
19203
      OPEN RECORDS FOR
19204
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
19205
                pv.src_path
19206
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
19207
          WHERE pv.pkg_id = pkg.pkg_id
19208
            AND wip.pv_id = pv.pv_id
19209
            AND wip.rtag_id = nrtagid
19210
            AND pkg.pkg_name = pkgname;
19211
 
19212
      RETURN RECORDS;
19213
   END;
19214
 
19215
/*-------------------------------------------------------------------------------------------------------*/
19216
   FUNCTION auto_make_release (
19217
      rtagid                   IN   NUMBER,
19218
      pkgname                  IN   VARCHAR2,
19219
      vext                     IN   VARCHAR2,
19220
      newpkgversion            IN   VARCHAR2,
19221
      label                    IN   VARCHAR2,
19222
      dependenciesimportlist   IN   VARCHAR2,
19223
      isrippled                IN   NUMBER,
19224
      username                 IN   VARCHAR2
19225
   )
19226
      RETURN NUMBER
19227
   IS
19228
      pkgid                           NUMBER;
19229
      pvid                            NUMBER                        := 0;
19230
      userid                          NUMBER;
19231
      dlocked                         VARCHAR2 (20)                 := NULL;
19232
      clonefrompvid                   NUMBER;
19233
      ssv_mm                          package_versions.v_mm%TYPE;
19234
      ssv_nmm                         package_versions.v_nmm%TYPE;
19235
      ssv_ext                         package_versions.v_ext%TYPE;
19236
      return_package_not_found        NUMBER                        := -1;
19237
      return_package_already_exists   NUMBER                        := -2;
19238
      return_not_approved             NUMBER                        := -3;
19239
   BEGIN
19240
      /*--------------- Business Rules Here -------------------*/
19241
      IF (rtagid IS NULL)
19242
      THEN
19243
         raise_application_error (-20000, 'RtagId must be supplied.');
19244
      END IF;
19245
 
19246
      IF (pkgname IS NULL)
19247
      THEN
19248
         raise_application_error (-20000, 'PkgName must be supplied.');
19249
      END IF;
19250
 
19251
      IF (newpkgversion IS NULL)
19252
      THEN
19253
         raise_application_error (-20000, 'PkgVersion must be supplied.');
19254
      END IF;
19255
 
19256
      IF (label IS NULL)
19257
      THEN
19258
         raise_application_error (-20000, 'Label must be supplied.');
19259
      END IF;
19260
 
19261
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
19262
      THEN
19263
         raise_application_error
19264
            (-20000,
19265
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
19266
            );
19267
      END IF;
19268
 
19269
      IF (username IS NULL)
19270
      THEN
19271
         raise_application_error (-20000, 'UserName must be supplied.');
19272
      END IF;
19273
 
19274
      -- Get user_id
19275
      BEGIN
19276
         SELECT usr.user_id
19277
           INTO userid
19278
           FROM users usr
19279
          WHERE UPPER (usr.user_name) = UPPER (username)
19280
            AND usr.is_disabled IS NULL;
19281
      EXCEPTION
19282
         WHEN NO_DATA_FOUND
19283
         THEN
19284
            raise_application_error (-20000,
19285
                                        'UserName '
19286
                                     || username
19287
                                     || ' is not valid or disabled.'
19288
                                    );
19289
      END;
19290
 
19291
/*-------------------------------------------------------*/
19292
 
19293
      -- Create package if necessary
19294
      IF isrippled = 1
19295
      THEN
19296
         /* Ripple Build */
19297
         BEGIN
19298
            -- Make sure that package does not exist
19299
            SELECT pv.pv_id
19300
              INTO pvid
19301
              FROM package_versions pv, PACKAGES pkg
19302
             WHERE pv.pkg_id = pkg.pkg_id
19303
               AND pkg.pkg_name = pkgname
19304
               AND pv.pkg_version = newpkgversion;
19305
         EXCEPTION
19306
            WHEN NO_DATA_FOUND
19307
            THEN
19308
               pvid := 0;
19309
         END;
19310
 
19311
         IF (pvid = 0)
19312
         THEN
19313
            -- Split current version in parts
19314
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19315
 
19316
            BEGIN
19317
               -- Find package to be replaced with thie ripple package
19318
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19319
               THEN
19320
                  SELECT pv.pv_id
19321
                    INTO clonefrompvid
19322
                    FROM PACKAGES pkg, package_versions pv,
19323
                         release_content rc
19324
                   WHERE rc.pv_id = pv.pv_id
19325
                     AND pv.pkg_id = pkg.pkg_id
19326
                     AND rc.rtag_id = rtagid
19327
                     AND pkg.pkg_name = pkgname
19328
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
19329
               ELSE
19330
                  SELECT pv.pv_id
19331
                    INTO clonefrompvid
19332
                    FROM PACKAGES pkg, package_versions pv,
19333
                         release_content rc
19334
                   WHERE rc.pv_id = pv.pv_id
19335
                     AND pv.pkg_id = pkg.pkg_id
19336
                     AND rc.rtag_id = rtagid
19337
                     AND pkg.pkg_name = pkgname
19338
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19339
               END IF;
19340
            EXCEPTION
19341
               WHEN NO_DATA_FOUND
19342
               THEN
19343
                  raise_application_error
19344
                                        (-20000,
19345
                                            'Cannot get CloneFromPvId. VExt='
19346
                                         || vext
19347
                                         || ', RtagId='
19348
                                         || rtagid
19349
                                         || ', PkgName='
19350
                                         || pkgname
19351
                                         || ', SSV_EXT='
19352
                                         || ssv_ext
19353
                                        );
19354
            END;
19355
 
19356
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19357
            THEN
19358
               -- Create package
19359
               seed_package_names_versions (pkgname,
19360
                                            newpkgversion,
19361
                                            userid,
19362
                                            pvid,
19363
                                            clonefrompvid
19364
                                           );
19365
            ELSE
19366
               -- Create package
19367
               seed_package_names_versions2 (pkgname,
19368
                                             newpkgversion,
19369
                                             userid,
19370
                                             pvid,
19371
                                             clonefrompvid
19372
                                            );
19373
            END IF;
19374
 
19375
            -- Update Package reason for release
19376
            UPDATE package_versions pv
19377
               SET pv.comments = 'Rippled Build.',
19378
                   pv.build_type = 'Y'
19379
             WHERE pv.pv_id = pvid;
19380
         ELSE
19381
            -- Package already exists, hence cannot be used for ripple build
19382
            RETURN return_package_already_exists;
19383
         END IF;
19384
      ELSE
19385
         /* Auto build from Pending area */
19386
 
19387
         -- Find package in pending area
19388
         BEGIN
19389
            SELECT pv.pv_id, pv.dlocked
19390
              INTO pvid, dlocked
19391
              FROM planned pl, package_versions pv, PACKAGES pkg
19392
             WHERE pl.pv_id = pv.pv_id
19393
               AND pv.pkg_id = pkg.pkg_id
19394
               AND pl.rtag_id = rtagid
19395
               AND pkg.pkg_name = pkgname
19396
               AND pv.dlocked = 'A'
19397
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19398
         EXCEPTION
19399
            WHEN NO_DATA_FOUND
19400
            THEN
19401
               pvid := 0;
19402
         END;
19403
 
19404
         IF (pvid = 0)
19405
         THEN
19406
            -- Package does not exist in pending area, hence report it
19407
            RETURN return_package_not_found;
19408
         ELSIF (dlocked != 'A')
19409
         THEN
19410
            -- Package is not approved for autobuild
19411
            RETURN return_not_approved;
19412
         END IF;
19413
      END IF;
19414
 
19415
      BEGIN
19416
         -- Import Dependencies
19417
         import_dependencies (pvid, dependenciesimportlist, userid);
19418
      END;
19419
 
19420
      BEGIN
19421
         -- Split current version in parts
19422
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19423
 
19424
         -- Update Package Details
19425
         UPDATE package_versions pv
19426
            SET pv.pkg_version = newpkgversion,
19427
                pv.v_ext = ssv_ext,
19428
                pv.v_mm = ssv_mm,
19429
                pv.v_nmm = ssv_nmm,
19430
                pv.pkg_label = label
19431
          WHERE pv.pv_id = pvid;
19432
      EXCEPTION
19433
         WHEN DUP_VAL_ON_INDEX
19434
         THEN
19435
            -- Package already exists, hence cannot be used for ripple build
19436
            RETURN return_package_already_exists;
19437
      END;
19438
 
19439
      -- Update the is_autobuildable
19440
      UPDATE package_versions
19441
         SET is_autobuildable = 'Y'
19442
       WHERE pv_id = pvid;
19443
 
19444
      -- Now release package
19445
      pk_environment.auto_make_release (pvid,
19446
                                        rtagid,
19447
                                        userid,
19448
                                        vext,
19449
                                        ssv_ext,
19450
                                        clonefrompvid
19451
                                       );
19452
 
19453
      --Now clean the PLANNED_VERSIONS table
19454
      SELECT pkg_id
19455
        INTO pkgid
19456
        FROM PACKAGES
19457
       WHERE pkg_name = pkgname;
19458
 
19459
      DELETE FROM planned_versions
19460
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
19461
 
19462
      RETURN pvid;
19463
   END;
19464
 
19465
/*-------------------------------------------------------------------------------------------------------*/
19466
   PROCEDURE import_dependencies (
19467
      pvid                     IN   NUMBER,
19468
      dependenciesimportlist   IN   VARCHAR2,
19469
      userid                   IN   NUMBER
19470
   )
19471
   IS
19472
/*
19473
|| DependenciesImportList Format:
19474
|| "pkgA","1.0.0";"pkgB","2.0.0";
19475
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
19476
*/
19477
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
19478
         INDEX BY VARCHAR2 (4000);
19479
 
19480
      seperator         VARCHAR2 (2)           := '||';
19481
      pkgname           VARCHAR2 (4000);
19482
      pkgversion        VARCHAR2 (4000);
19483
      buildtype         VARCHAR2 (50);
19484
      pkgid             NUMBER;
19485
      vext              VARCHAR2 (4000);
19486
      dpvid             NUMBER;
19487
      slist             VARCHAR2 (4000);
19488
      cbuildtypes       tdictionary;
19489
      dependencyrow     NUMBER;
19490
      sdependency       VARCHAR2 (4000);
19491
      first_pos         VARCHAR2 (4000);
19492
      second_pos        VARCHAR2 (4000);
19493
      third_pos         VARCHAR2 (4000);
19494
      forth_pos         VARCHAR2 (4000);
19495
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19496
 
19497
      CURSOR curbuildtype
19498
      IS
19499
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
19500
                dep.build_type
19501
           FROM package_dependencies dep, package_versions dpv
19502
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
19503
 
19504
      recbuildtype      curbuildtype%ROWTYPE;
19505
   BEGIN
19506
      slist := dependenciesimportlist;
19507
 
19508
      -- Preformat String
19509
      IF NOT slist IS NULL
19510
      THEN
19511
         slist := REPLACE (slist, ' ');                      -- Remove spaces
19512
         slist := REPLACE (slist, UTL_TCP.crlf);
19513
         -- Remove new line and carriage-return characters
19514
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
19515
      END IF;
19516
 
19517
      -- Get Current Dependencies
19518
      OPEN curbuildtype;
19519
 
19520
      FETCH curbuildtype
19521
       INTO recbuildtype;
19522
 
19523
      WHILE curbuildtype%FOUND
19524
      LOOP
19525
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
19526
 
19527
         FETCH curbuildtype
19528
          INTO recbuildtype;
19529
      END LOOP;
19530
 
19531
      CLOSE curbuildtype;
19532
 
19533
      -- Separate dependencies with ; separator
19534
      citemcollection := in_list_varchar2 (slist, ';');
19535
 
19536
      BEGIN
19537
         -- Remove old dependencies
19538
         DELETE FROM package_dependencies dep
19539
               WHERE dep.pv_id = pvid;
19540
 
19541
         -- Loop through dependencies
19542
         FOR dependencyrow IN 1 .. citemcollection.COUNT
19543
         LOOP
19544
            -- Extract pkg_name and pkg_version
19545
            sdependency := citemcollection (dependencyrow);
19546
            first_pos := INSTR (sdependency, '"', 1, 1);
19547
            second_pos := INSTR (sdependency, '"', 1, 2);
19548
            third_pos := INSTR (sdependency, '"', 1, 3);
19549
            forth_pos := INSTR (sdependency, '"', 1, 4);
19550
            pkgname :=
19551
               SUBSTR (sdependency,
19552
                       (first_pos + 1),
19553
                       (second_pos - first_pos - 1)
19554
                      );
19555
            pkgversion :=
19556
               SUBSTR (sdependency,
19557
                       (third_pos + 1),
19558
                       (forth_pos - third_pos - 1)
19559
                      );
19560
 
19561
            -- Dependency must exits to be linked against
19562
            BEGIN
19563
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
19564
                 INTO dpvid, pkgid, vext
19565
                 FROM package_versions pv, PACKAGES pkg
19566
                WHERE pv.pkg_id = pkg.pkg_id
19567
                  AND pkg.pkg_name = pkgname
19568
                  AND pv.pkg_version = pkgversion;
19569
            EXCEPTION
19570
               WHEN NO_DATA_FOUND
19571
               THEN
19572
                  raise_application_error
19573
                                  (-20000,
19574
                                      'Dependency ['
19575
                                   || pkgname
19576
                                   || ' '
19577
                                   || pkgversion
19578
                                   || '] does not exist yet and cannot be used!'
19579
                                  );
19580
            END;
19581
 
19582
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
19583
            BEGIN
19584
               buildtype := cbuildtypes (pkgid || seperator || vext);
19585
 
19586
               IF buildtype IS NULL
19587
               THEN
19588
                  -- Set build type to LinkPackageArchive by default
19589
                  buildtype := 'L';
19590
               END IF;
19591
            EXCEPTION
19592
               WHEN NO_DATA_FOUND
19593
               THEN
19594
                  buildtype := 'L';
19595
            END;
19596
 
19597
            -- Insert Dependencies
19598
            update_package_dependency (pvid,
19599
                                       pkgname,
19600
                                       pkgversion,
19601
                                       buildtype,
19602
                                       userid,
19603
 
19604
                                      );
19605
         END LOOP;
19606
      END;
19607
   END;
19608
 
19609
/*-------------------------------------------------------------------------------------------------------*/
19610
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
19611
      RETURN VARCHAR2
19612
   IS
19613
      pkgversion   VARCHAR2 (4000);
19614
   BEGIN
19615
      BEGIN
19616
         SELECT pv.pkg_version
19617
           INTO pkgversion
19618
           FROM PACKAGES pkg, release_content rc, package_versions pv
19619
          WHERE pv.pv_id = rc.pv_id
19620
            AND pkg.pkg_id = pv.pkg_id
19621
            AND pkg.pkg_name = pkgname
19622
            AND rc.rtag_id = rtagid;
19623
 
19624
         RETURN pkgversion;
19625
      END;
19626
   END;
19627
 
19628
/*-------------------------------------------------------------------------------------------------------*/
19629
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
19630
      RETURN VARCHAR2
19631
   IS
19632
      pkgversion   VARCHAR2 (4000);
19633
   BEGIN
19634
      BEGIN
19635
         SELECT pv.pkg_version
19636
           INTO pkgversion
19637
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
19638
          WHERE pv.pv_id = wip.pv_id
19639
            AND pkg.pkg_id = pv.pkg_id
19640
            AND pkg.pkg_name = pkgname
19641
            AND wip.rtag_id = rtagid;
19642
 
19643
         IF pkgversion IS NULL
19644
         THEN
19645
            SELECT pv.pkg_version
19646
              INTO pkgversion
19647
              FROM PACKAGES pkg, planned pl, package_versions pv
19648
             WHERE pv.pv_id = pl.pv_id
19649
               AND pkg.pkg_id = pv.pkg_id
19650
               AND pkg.pkg_name = pkgname
19651
               AND pl.rtag_id = rtagid;
19652
         END IF;
19653
 
19654
         RETURN pkgversion;
19655
      END;
19656
   END;
19657
 
19658
/*-------------------------------------------------------------------------------------------------------*/
19659
   PROCEDURE update_dash_board (rtagid IN NUMBER)
19660
   IS
19661
      projid       NUMBER;
19662
      projiddb     NUMBER;
19663
      total        NUMBER;
19664
      auto_total   NUMBER;
19665
      rtagiddb     NUMBER;
19666
   BEGIN
19667
      SELECT COUNT (*)
19668
        INTO total
19669
        FROM release_content rc, package_versions pv
19670
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
19671
 
19672
      SELECT COUNT (*)
19673
        INTO auto_total
19674
        FROM release_content rc, package_versions pv
19675
       WHERE pv.pv_id = rc.pv_id
19676
         AND pv.is_autobuildable = 'Y'
19677
         AND rc.rtag_id = rtagid;
19678
 
19679
      BEGIN
19680
         SELECT rtag_id
19681
           INTO rtagiddb
19682
           FROM dash_board
19683
          WHERE rtag_id = rtagid;
19684
 
19685
         SELECT proj_id
19686
           INTO projiddb
19687
           FROM dash_board
19688
          WHERE rtag_id = rtagid;
19689
      EXCEPTION
19690
         WHEN NO_DATA_FOUND
19691
         THEN
19692
            rtagiddb := '';
19693
      END;
19694
 
19695
      IF rtagiddb IS NULL
19696
      THEN
19697
         SELECT proj_id
19698
           INTO projid
19699
           FROM release_tags
19700
          WHERE rtag_id = rtagid;
19701
 
19702
         INSERT INTO dash_board
19703
                     (proj_id, rtag_id, last_build_time, automated_packages,
19704
                      total_packages
19705
                     )
19706
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
19707
                      total
19708
                     );
19709
      ELSE
19710
         UPDATE dash_board
19711
            SET last_build_time = ora_sysdatetime,
19712
                automated_packages = auto_total,
19713
                total_packages = total
19714
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
19715
      END IF;
19716
   END;
19717
 
19718
/*-------------------------------------------------------------------------------------------------------*/
19719
   FUNCTION exclude_from_build (
19720
      pvid          IN   NUMBER,
19721
      spkgversion   IN   VARCHAR2,
19722
      rtagid        IN   NUMBER,
19723
      username      IN   VARCHAR2
19724
   )
19725
      RETURN NUMBER
19726
   IS
19727
      userid              NUMBER;
19728
      outerrcode          NUMBER;
19729
      pkgid               NUMBER;
19730
 
19731
      CURSOR dnr_duplicate_cur
19732
      IS
19733
         SELECT *
19734
           FROM do_not_ripple
19735
          WHERE pv_id = pvid AND rtag_id = rtagid;
19736
 
19737
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19738
   BEGIN
19739
      outerrcode := -1;       -- Set default return error code to ERROR state
19740
 
19741
      /*--------------- Business Rules Here -------------------*/
19742
      IF (rtagid IS NULL)
19743
      THEN
19744
         RETURN outerrcode;
19745
--         raise_application_error (-20000, 'RtagId must be supplied.');
19746
      END IF;
19747
 
19748
      IF (pvid IS NULL)
19749
      THEN
19750
         RETURN outerrcode;
19751
--         raise_application_error (-20000, 'PvId must be supplied.');
19752
      END IF;
19753
 
19754
      IF (username IS NULL)
19755
      THEN
19756
         RETURN outerrcode;
19757
--         raise_application_error (-20000, 'UserName must be supplied.');
19758
      END IF;
19759
 
19760
      -- Get user_id
19761
      BEGIN
19762
         SELECT usr.user_id
19763
           INTO userid
19764
           FROM users usr
19765
          WHERE UPPER (usr.user_name) = UPPER (username)
19766
            AND usr.is_disabled IS NULL;
19767
      EXCEPTION
19768
         WHEN NO_DATA_FOUND
19769
         THEN
19770
            RETURN outerrcode;
19771
--            raise_application_error (-20000,
19772
--                                        'UserName '
19773
--                                     || username
19774
--                                     || ' is not valid or disabled.'
19775
--                                    );
19776
      END;
19777
 
19778
      OPEN dnr_duplicate_cur;
19779
 
19780
      FETCH dnr_duplicate_cur
19781
       INTO dnr_duplicate_rec;
19782
 
19783
      IF dnr_duplicate_cur%FOUND
19784
      THEN
19785
         outerrcode := 0;
19786
      END IF;
19787
 
19788
      IF dnr_duplicate_cur%NOTFOUND
19789
      THEN
19790
         /* No duplicate recordset */
19791
         unripple_package (pvid, rtagid, userid);
19792
         outerrcode := 0;                            -- Set return to SUCCESS
19793
      END IF;
19794
 
19795
      CLOSE dnr_duplicate_cur;
19796
 
19797
      SELECT pkg_id
19798
        INTO pkgid
19799
        FROM package_versions
19800
       WHERE pv_id = pvid;
19801
 
19802
      DELETE FROM planned_versions
19803
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19804
 
19805
      RETURN outerrcode;
19806
   END;
19807
 
19808
/*-------------------------------------------------------------------------------------------------------*/
55 mhunt 19809
   FUNCTION exclude_indirect_from_build (
19810
      pvid          IN   NUMBER,
19811
      spkgversion   IN   VARCHAR2,
19812
      rtagid        IN   NUMBER,
19813
      username      IN   VARCHAR2,
19814
      rootpvid      IN   NUMBER,
19815
      rootcause     IN   VARCHAR2,
19816
      rootfile      IN   VARCHAR2
19817
   )
19818
      RETURN NUMBER
19819
   IS
19820
      userid              NUMBER;
19821
      outerrcode          NUMBER;
19822
      pkgid               NUMBER;
19823
 
19824
      CURSOR dnr_duplicate_cur
19825
      IS
19826
         SELECT *
19827
           FROM do_not_ripple
19828
          WHERE pv_id = pvid AND rtag_id = rtagid;
19829
 
19830
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19831
   BEGIN
19832
      outerrcode := -1;       -- Set default return error code to ERROR state
19833
 
19834
      /*--------------- Business Rules Here -------------------*/
19835
      IF (rtagid IS NULL)
19836
      THEN
19837
         RETURN outerrcode;
19838
--         raise_application_error (-20000, 'RtagId must be supplied.');
19839
      END IF;
19840
 
19841
      IF (pvid IS NULL)
19842
      THEN
19843
         RETURN outerrcode;
19844
--         raise_application_error (-20000, 'PvId must be supplied.');
19845
      END IF;
19846
 
19847
      IF (username IS NULL)
19848
      THEN
19849
         RETURN outerrcode;
19850
--         raise_application_error (-20000, 'UserName must be supplied.');
19851
      END IF;
19852
 
19853
      -- Get user_id
19854
      BEGIN
19855
         SELECT usr.user_id
19856
           INTO userid
19857
           FROM users usr
19858
          WHERE UPPER (usr.user_name) = UPPER (username)
19859
            AND usr.is_disabled IS NULL;
19860
      EXCEPTION
19861
         WHEN NO_DATA_FOUND
19862
         THEN
19863
            RETURN outerrcode;
19864
--            raise_application_error (-20000,
19865
--                                        'UserName '
19866
--                                     || username
19867
--                                     || ' is not valid or disabled.'
19868
--                                    );
19869
      END;
19870
 
19871
     /* No duplicate recordset */
19872
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
19873
     outerrcode := 0;                            -- Set return to SUCCESS
19874
 
19875
      SELECT pkg_id
19876
        INTO pkgid
19877
        FROM package_versions
19878
       WHERE pv_id = pvid;
19879
 
19880
      DELETE FROM planned_versions
19881
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19882
 
19883
      RETURN outerrcode;
19884
   END;
19885
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19886
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
19887
   IS
19888
   BEGIN
19889
      INSERT INTO abt_action_log
19890
                  (rcon_id, action_datetime, action
19891
                  )
19892
           VALUES (rconid, ora_sysdatetime, action
19893
                  );
19894
   END;
19895
 
19896
/*-------------------------------------------------------------------------------------------------------*/
19897
   FUNCTION insert_package_metrics (
19898
      rtagid                   IN   NUMBER,
19899
      pkgname                  IN   VARCHAR2,
19900
      vext                     IN   VARCHAR2,
19901
      metricstring             IN   VARCHAR2
19902
   )
19903
      RETURN NUMBER
19904
   IS
19905
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
57 mhunt 19906
      lv_pvid                  NUMBER                 := 0;
51 mhunt 19907
      rownumber                NUMBER;
19908
      rowcontent               VARCHAR2(4000);
19909
      metricname               VARCHAR2(1000);
19910
      metricvalue              VARCHAR2(4000);
19911
      return_insert_error      NUMBER                 := -1;
19912
      return_insert_success    NUMBER                 := 0;
19913
 
19914
      /* Metrics */
57 mhunt 19915
      lv_branches                 NUMBER;
19916
      lv_branchlist               VARCHAR2(4000);
19917
      lv_codefiles                NUMBER;
19918
      lv_ignoredfiles             NUMBER;
19919
      lv_directories              NUMBER;
19920
      lv_directorydepth           NUMBER;
19921
      lv_totalfiles               NUMBER;
19922
      lv_makefiles                NUMBER;
19923
      lv_blanklines               NUMBER;
19924
      lv_codelines                NUMBER;
19925
      lv_commentlines             NUMBER;
51 mhunt 19926
 
19927
   BEGIN
19928
      /*--------------- Business Rules Here -------------------*/
19929
      IF (rtagid IS NULL)
19930
      THEN
19931
         RETURN return_insert_error;
19932
      END IF;
19933
 
19934
      IF (pkgname IS NULL)
19935
      THEN
19936
         RETURN return_insert_error;
19937
      END IF;
19938
 
19939
      IF (metricstring IS NULL)
19940
      THEN
19941
         RETURN return_insert_error;
19942
      END IF;
19943
 
19944
      BEGIN
19945
         SELECT pv.pv_id
57 mhunt 19946
           INTO lv_pvid
51 mhunt 19947
           FROM package_versions pv, packages pkg, release_content rc
19948
          WHERE pv.pkg_id = pkg.pkg_id
19949
            AND rc.rtag_id = rtagid
19950
            AND pv.pv_id = rc.pv_id
19951
            AND pkg.pkg_name = pkgname
19952
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19953
      EXCEPTION
19954
           WHEN NO_DATA_FOUND
19955
           THEN
57 mhunt 19956
                lv_pvid := 0;
51 mhunt 19957
      END;
19958
 
19959
      citemcollection := in_list_varchar2 (metricstring, ';');
19960
 
19961
      FOR rownumber IN 1 .. citemcollection.COUNT
19962
      LOOP
19963
         rowcontent := citemcollection(rownumber);
19964
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
19965
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
19966
 
57 mhunt 19967
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
19968
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
19969
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
19970
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
19971
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
19972
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
19973
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
19974
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
19975
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
19976
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
19977
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
51 mhunt 19978
         END IF;
19979
      END LOOP;
19980
 
57 mhunt 19981
      IF (lv_pvid > 0)
51 mhunt 19982
      THEN
19983
         -- Delete any existing entries for this package version to makes sure our data is untainted
19984
         DELETE FROM package_metrics pm
57 mhunt 19985
         WHERE pm.pv_id = lv_pvid;
19986
 
51 mhunt 19987
         -- Insert the new data into the metrics table
19988
         INSERT INTO package_metrics
19989
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
19990
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
19991
                     )
57 mhunt 19992
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
19993
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
51 mhunt 19994
                     );
57 mhunt 19995
 
51 mhunt 19996
         -- Now update the Release_Metrics Table
19997
         update_release_metrics(rtagid);
57 mhunt 19998
 
51 mhunt 19999
         RETURN return_insert_success;
20000
      ELSE
20001
         RETURN return_insert_error;
20002
      END IF;
20003
   END;
57 mhunt 20004
 
51 mhunt 20005
/*-------------------------------------------------------------------------------------------------------*/
20006
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
20007
   IS
57 mhunt 20008
      lv_totalpackages       NUMBER;
20009
      lv_autobuilt           NUMBER;
20010
      lv_linesofcode         NUMBER;
20011
      lv_unittested          NUMBER;
20012
      lv_autotested          NUMBER;
20013
      lv_numOfbranches       NUMBER;
20014
      lv_lastbuildtime       DATE;
51 mhunt 20015
   BEGIN
20016
      IF (rtagid > 0)
20017
      THEN
20018
         -- Get the total number of packages in this release and the number of
20019
         -- those that are autobuilt
20020
         SELECT COUNT (DISTINCT rc.pv_id),
20021
                COUNT (DISTINCT autobuilt_qry.pv_id)
57 mhunt 20022
           INTO lv_totalpackages, lv_autobuilt
51 mhunt 20023
           FROM release_content rc,
20024
                package_versions pv,
20025
                (
20026
                 SELECT rc.pv_id
20027
                   FROM release_content rc,
20028
                        package_versions pv
20029
                  WHERE pv.is_autobuildable = 'Y'
20030
                    AND pv.pv_id = rc.pv_id
20031
                    AND rc.rtag_id = rtagid
20032
                ) autobuilt_qry
20033
          WHERE pv.pv_id = rc.pv_id
20034
            AND rc.rtag_id = rtagid
20035
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
57 mhunt 20036
 
51 mhunt 20037
         -- Get the build time of the last package built in this release and the
20038
         -- total number of lines of code
20039
         SELECT MAX(pm.created_stamp),
20040
                SUM(pm.code_lines)
57 mhunt 20041
           INTO lv_lastbuildtime, lv_linesofcode
51 mhunt 20042
           FROM package_metrics pm, release_content rc
20043
          WHERE pm.pv_id = rc.pv_id
20044
            AND rc.rtag_id = rtagid;
57 mhunt 20045
 
51 mhunt 20046
         -- Get the number of packages with unit tests in this release and the
20047
         -- number of those that are autotested
57 mhunt 20048
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
51 mhunt 20049
           FROM unit_tests ut,
57 mhunt 20050
                release_content rc
51 mhunt 20051
          WHERE ut.pv_id = rc.pv_id
20052
            AND rc.rtag_id = rtagid
57 mhunt 20053
        AND ut.test_types_fk != 1;
20054
 
20055
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
20056
          FROM unit_tests ut,
20057
               release_content rc
20058
         WHERE ut.pv_id = rc.pv_id
20059
           AND rc.rtag_id = rtagid
20060
           AND ut.test_types_fk = 7;
20061
 
20062
 
51 mhunt 20063
         -- Count the number of unique branches in the packages in this release.
57 mhunt 20064
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
51 mhunt 20065
--           FROM (
20066
--                SELECT pv_id,
20067
--                       regexp_substr(str, '[^,]+', 1, level) branch,
20068
--                       level lv,
20069
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
20070
--                  FROM (
20071
--                       SELECT pm.pv_id,
20072
--                              ','||pm.branch_list str
20073
--                         FROM package_metrics pm,
20074
--                              release_content rc
20075
--                        WHERE pm.pv_id = rc.pv_id
20076
--                          AND rc.rtag_id = rtagid
20077
--                       )
20078
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
20079
--                )
20080
--          WHERE lv != lg;
57 mhunt 20081
 
51 mhunt 20082
         UPDATE release_metrics rm
57 mhunt 20083
            SET rm.total_packages = lv_totalpackages,
20084
                rm.autobuilt = lv_autobuilt,
20085
                rm.lines_of_code = lv_linesofcode,
20086
                rm.unit_tested = lv_unittested,
20087
                rm.autotested = lv_autotested,
20088
--                rm.branches = lv_numOfbranches,
20089
                rm.last_build_time = lv_lastbuildtime
51 mhunt 20090
          WHERE rtag_id = rtagid;
57 mhunt 20091
 
51 mhunt 20092
         IF (SQL%ROWCOUNT = 0)
20093
         THEN
20094
            INSERT INTO release_metrics
20095
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20096
                         autotested, last_build_time
20097
                        )
57 mhunt 20098
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
20099
                         lv_autotested, lv_lastbuildtime
51 mhunt 20100
                        );
20101
         END IF;
20102
--         IF (SQL%ROWCOUNT = 0)
20103
--         THEN
20104
--            INSERT INTO release_metrics
20105
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20106
--                         autotested, branches, last_build_time
20107
--                        )
57 mhunt 20108
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
20109
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
51 mhunt 20110
--                        );
20111
--         END IF;
20112
--      ELSE
20113
--         raise_application_error (-20000, 'RtagId must be supplied.');
20114
      END IF;
20115
   END;
20116
/*-------------------------------------------------------------------------------------------------------*/
20117
END pk_rmapi;
20118
/
20119
 
20120
CREATE OR REPLACE PACKAGE BODY pk_environment_test
20121
IS
20122
/*
20123
------------------------------
20124
||  Last Modified:  Rupesh Solanki
20125
||  Modified Date:  29/Jan/2007
20126
||  Body Version:   1.1
20127
------------------------------
20128
*/
20129
 
20130
   /*-------------------------------------------------------------------------------------------------------*/
20131
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
20132
      RETURN NUMBER
20133
   IS
20134
   BEGIN
20135
       /*
20136
      || N - unlocked
20137
      || Y - release and locked
20138
      || P - penging approval
20139
      || A - approved package ready for auto-build
20140
      */
20141
      IF cdlock = 'N' OR cdlock = 'R'
20142
      THEN
20143
         -- WORK IN PROGRESS --
20144
         RETURN 0;
20145
      ELSIF cdlock = 'P' OR cdlock = 'A'
20146
      THEN
20147
         -- PENDING --
20148
         RETURN 1;
20149
      ELSIF cdlock = 'Y'
20150
      THEN
20151
         -- RELEASED --
20152
         RETURN 2;
20153
      ELSE
20154
         -- NOT FOUND --
20155
         raise_application_error
20156
                         (-20000,
20157
                             'Cannot decide where to place package. [cDlock='
20158
                          || cdlock
20159
                          || ']'
20160
                         );
20161
      END IF;
20162
   END;
20163
 
20164
/*-------------------------------------------------------------------------------------------------------*/
20165
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
20166
      RETURN NUMBER
20167
   IS
20168
      envtab    NUMBER            := -1;
20169
 
20170
      CURSOR curarea
20171
      IS
20172
         SELECT 2 AS envtab
20173
           FROM release_content rc
20174
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20175
         UNION
20176
         SELECT 0 AS envtab
20177
           FROM work_in_progress wip
20178
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20179
         UNION
20180
         SELECT 1 AS envtab
20181
           FROM planned pl
20182
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20183
 
20184
      recarea   curarea%ROWTYPE;
20185
   BEGIN
20186
      OPEN curarea;
20187
 
20188
      FETCH curarea
20189
       INTO recarea;
20190
 
20191
      IF curarea%FOUND
20192
      THEN
20193
         envtab := recarea.envtab;
20194
      END IF;
20195
 
20196
      CLOSE curarea;
20197
 
20198
      RETURN envtab;
20199
   END;
20200
 
20201
/*-------------------------------------------------------------------------------------------------------*/
20202
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
20203
      RETURN NUMBER
20204
   IS
20205
      ispatch   package_versions.dlocked%TYPE;
20206
      viewid    NUMBER                          := -1;
20207
 
20208
      CURSOR curview
20209
      IS
20210
         SELECT rc.base_view_id AS view_id
20211
           FROM release_content rc
20212
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20213
         UNION
20214
         SELECT wip.view_id AS view_id
20215
           FROM work_in_progress wip
20216
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20217
         UNION
20218
         SELECT pl.view_id AS view_id
20219
           FROM planned pl
20220
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20221
 
20222
      recview   curview%ROWTYPE;
20223
   BEGIN
20224
      -- Get dlock state
20225
      SELECT pv.is_patch
20226
        INTO ispatch
20227
        FROM package_versions pv
20228
       WHERE pv.pv_id = pvid;
20229
 
20230
      -- Decide which view id should package go under.
20231
      IF (ispatch != 'Y') OR (ispatch IS NULL)
20232
      THEN
20233
         -- Get VIEW ID of Package
20234
         OPEN curview;
20235
 
20236
         FETCH curview
20237
          INTO recview;
20238
 
20239
         IF curview%FOUND
20240
         THEN
20241
            viewid := recview.view_id;
20242
         ELSE
20243
            raise_application_error
20244
               (-20000,
20245
                   'Cannot find view_id to proceed. [PvId='
20246
                || pvid
20247
                || ']. The current version may not exist in the release anymore.'
20248
               );
20249
         END IF;
20250
 
20251
         CLOSE curview;
20252
      ELSE
20253
         -- Get VIEW ID of Patch (view id of parent package)
20254
         SELECT rc.base_view_id
20255
           INTO viewid
20256
           FROM release_content rc, package_patches ppv
20257
          WHERE rc.rtag_id = rtagid
20258
            AND rc.pv_id = ppv.pv_id
20259
            AND ppv.patch_id = pvid;
20260
      END IF;
20261
 
20262
      RETURN viewid;
20263
   END;
20264
 
20265
/*-------------------------------------------------------------------------------------------------------*/
20266
   PROCEDURE add_package (
20267
      pvid     IN   NUMBER,
20268
      viewid   IN   NUMBER,
20269
      rtagid   IN   NUMBER,
20270
      userid   IN   NUMBER
20271
   )
20272
   IS
20273
      dlocked   package_versions.dlocked%TYPE;
20274
      envtab    NUMBER;
20275
   BEGIN
20276
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
20277
      THEN
20278
         -- Get dlock state
20279
         SELECT pv.dlocked
20280
           INTO dlocked
20281
           FROM package_versions pv
20282
          WHERE pv.pv_id = pvid;
20283
 
20284
         -- Get which area should go under
20285
         envtab := select_environment_area (dlocked);
20286
         -- Log
20287
         log_action (pvid, 'action', userid, 'Start of Package Add...');
20288
 
20289
         -- Remove Package
20290
         IF envtab = 0
20291
         THEN
20292
            -- WORK IN PROGRESS --
20293
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
20294
         ELSIF envtab = 1
20295
         THEN
20296
            -- PENDING --
20297
            pk_planned.add_package (pvid, viewid, rtagid, userid);
20298
         ELSIF envtab = 2
20299
         THEN
20300
            -- RELEASED --
20301
            -- NOTE: this package will be replaced with matching package
20302
            pk_release.add_package (pvid, viewid, rtagid, userid);
20303
            -- Now do post Release Actions
20304
            pk_release.run_post_actions (pvid, rtagid);
20305
         END IF;
20306
 
20307
         -- Log
20308
         log_action (pvid, 'action', userid, 'End of Package Add...');
20309
      END IF;
20310
   END;
20311
 
20312
/*-------------------------------------------------------------------------------------------------------*/
20313
   PROCEDURE add_package_bulk (
20314
      pvidlist   IN   VARCHAR2,
20315
      viewid     IN   NUMBER,
20316
      rtagid     IN   NUMBER,
20317
      userid     IN   NUMBER
20318
   )
20319
   IS
20320
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
20321
                                                                          ();
20322
      dlocked        package_versions.dlocked%TYPE;
20323
      pvid           NUMBER;
20324
      envtab         NUMBER;
20325
   BEGIN
20326
      /*--------------- Business Rules Here -------------------*/
20327
      IF (pvidlist IS NULL)
20328
      THEN
20329
         raise_application_error (-20000,
20330
                                  'Please select at least one package.'
20331
                                 );
20332
      END IF;
20333
 
20334
/*-------------------------------------------------------*/
20335
      nidcollector := in_list_number (pvidlist);
20336
 
20337
      FOR i IN 1 .. nidcollector.COUNT
20338
      LOOP
20339
         pvid := nidcollector (i);
20340
         add_package (pvid, viewid, rtagid, userid);
20341
      END LOOP;
20342
   END;
20343
 
20344
/*-------------------------------------------------------------------------------------------------------*/
20345
   PROCEDURE replace_package (
20346
      newpvid   IN   NUMBER,
20347
      oldpvid   IN   NUMBER,
20348
      rtagid    IN   NUMBER,
20349
      userid    IN   NUMBER
20350
   )
20351
   IS
20352
      dlocked        package_versions.dlocked%TYPE;
20353
      viewid         NUMBER;
20354
      envtab         NUMBER;
20355
      ROWCOUNT       NUMBER;
20356
      creleasemode   CHAR (1);
20357
      npkgid         NUMBER;
20358
   BEGIN
20359
      /*--------------- Business Rules Here -------------------*/
20360
      -- Check if oldPvId exists. It could have been removed
20361
      SELECT COUNT (pv.pv_id)
20362
        INTO ROWCOUNT
20363
        FROM package_versions pv
20364
       WHERE pv.pv_id = oldpvid;
20365
 
20366
/*-------------------------------------------------------*/
20367
 
20368
      /* This procedure is usually used by "History" option in Release Manager */
20369
 
20370
      -- Get dlock state
20371
      SELECT pv.dlocked
20372
        INTO dlocked
20373
        FROM package_versions pv
20374
       WHERE pv.pv_id = newpvid;
20375
 
20376
      -- Get VIEW_ID ---
20377
      IF ROWCOUNT = 1
20378
      THEN
20379
         viewid := get_view_location (oldpvid, rtagid);
20380
      ELSE
20381
         -- Set ViewID to default
20382
         viewid := 7;
20383
      END IF;
20384
 
20385
      -- Get which area should go under
20386
      envtab := select_environment_area (dlocked);
20387
      -- Log
20388
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
20389
 
20390
      -- Replace package
20391
      IF envtab = 0
20392
      THEN
20393
         -- WORK IN PROGRESS --
20394
 
20395
         -- Delete old package
20396
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
20397
         -- Add new package
20398
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
20399
      ELSIF envtab = 1
20400
      THEN
20401
         -- PENDING --
20402
 
20403
         -- Delete old package
20404
         pk_planned.remove_package (oldpvid, rtagid, userid);
20405
         -- Add new package
20406
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
20407
      ELSIF envtab = 2
20408
      THEN
20409
         -- RELEASED --
20410
 
20411
         -- Delete old package
20412
         pk_release.remove_package (oldpvid, rtagid, userid);
20413
         -- Add new package
20414
         pk_release.add_package (newpvid, viewid, rtagid, userid);
20415
         -- Now do post Release Actions
20416
         pk_release.run_post_actions (newpvid, rtagid);
20417
      END IF;
20418
 
20419
      -- Log
20420
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
20421
   END;
20422
 
20423
/*-------------------------------------------------------------------------------------------------------*/
20424
   FUNCTION remove_package (
20425
      pvid          IN   NUMBER,
20426
      rtagid        IN   NUMBER,
20427
      userid        IN   NUMBER,
20428
      forceremove   IN   CHAR
20429
   )
20430
      RETURN NUMBER
20431
   IS
20432
      envtab        NUMBER;
20433
      isused        BOOLEAN;
20434
      recordcount   NUMBER;
20435
   BEGIN
20436
/*--------------- Business Rules Here -------------------*/
20437
/*-------------------------------------------------------*/
20438
 
20439
      -- Find location of package
20440
      envtab := get_package_area (pvid, rtagid);
20441
 
20442
      -- Remove Package
20443
      IF envtab = 0
20444
      THEN
20445
         -- WORK IN PROGRESS --
20446
         -- Delete package
20447
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
20448
         RETURN 0;
20449
      ELSIF envtab = 1
20450
      THEN
20451
         -- PENDING --
20452
         -- Delete package
20453
         pk_planned.remove_package (pvid, rtagid, userid);
20454
         RETURN 0;
20455
      ELSIF envtab = 2
20456
      THEN
20457
         -- RELEASED --
20458
 
20459
         -- Check if is used by other packages
20460
         isused := TRUE;
20461
 
20462
         IF forceremove = 'N'
20463
         THEN
20464
            SELECT COUNT (pv.pv_id)
20465
              INTO recordcount
20466
              FROM (SELECT dpv.pkg_id, dpv.v_ext
20467
                      FROM release_content rc,
20468
                           package_dependencies dep,
20469
                           package_versions dpv
20470
                     WHERE rc.rtag_id = rtagid
20471
                       AND rc.pv_id = dep.pv_id
20472
                       AND dep.dpv_id = dpv.pv_id) rdep,
20473
                   package_versions pv
20474
             WHERE pv.pkg_id = rdep.pkg_id
20475
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
20476
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
20477
               AND pv.pv_id = pvid;
20478
 
20479
            IF recordcount > 0
20480
            THEN
20481
               RETURN 1;                    -- Return 1 as package being used
20482
            ELSE
20483
               isused := FALSE;
20484
            END IF;
20485
         END IF;
20486
 
20487
         IF forceremove = 'Y' OR NOT isused
20488
         THEN
20489
            -- Delete old package
20490
            pk_release.remove_package (pvid, rtagid, userid);
20491
            -- Now do post Release Actions
20492
            pk_release.run_post_actions (pvid, rtagid);
20493
            RETURN 0;
20494
         END IF;
20495
      END IF;
20496
   END;
20497
 
20498
/*-------------------------------------------------------------------------------------------------------*/
20499
   PROCEDURE get_environment_items (
20500
      viewtype           IN       NUMBER,
20501
      userid             IN       NUMBER,
20502
      rtagid             IN       NUMBER,
20503
      sviewidshowlist    IN       VARCHAR2,
20504
      ntruerecordcount   OUT      NUMBER,
20505
      recordset          OUT      typecur
20506
   )
20507
   IS
20508
   BEGIN
20509
      -- Get true record count because views can give false count
20510
      SELECT COUNT (pl.pv_id)
20511
        INTO ntruerecordcount
20512
        FROM environment_view pl
20513
       WHERE pl.rtag_id = rtagid;
20514
 
20515
      IF viewtype = 1
20516
      THEN
20517
         /*--- GUEST VIEW ---*/
20518
         OPEN recordset FOR
20519
            SELECT   *
20520
                FROM (
20521
                      /* Base Views collapsed */
20522
                      SELECT DISTINCT vi.view_id, vi.view_name,
20523
                                      TO_NUMBER (NULL) AS pkg_state,
20524
                                      TO_NUMBER (NULL) AS deprecated_state,
20525
                                      TO_NUMBER (NULL) AS pv_id,
20526
                                      NULL AS pkg_name, NULL AS pkg_version,
20527
                                      NULL AS dlocked, NULL AS pv_description
20528
                                 FROM environment_view rel, views vi
20529
                                WHERE rel.view_id = vi.view_id
20530
                                  AND rtag_id = rtagid
20531
                                  AND rel.view_id NOT IN (
20532
                                         SELECT *
20533
                                           FROM THE
20534
                                                   (SELECT CAST
20535
                                                              (in_list_number
20536
                                                                  (sviewidshowlist
20537
                                                                  ) AS relmgr_number_tab_t
20538
                                                              )
20539
                                                      FROM DUAL
20540
                                                   ))
20541
                      UNION
20542
                      /* Base Views expanded */
20543
                      SELECT vi.view_id, vi.view_name,
20544
                             DECODE (rel.pkg_state,
20545
                                     NULL, 0,
20546
                                     rel.pkg_state
20547
                                    ) AS pkg_state,
20548
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20549
                             pv.pkg_version, pv.dlocked, pv.pv_description
20550
                        FROM environment_view rel,
20551
                             PACKAGES pkg,
20552
                             package_versions pv,
20553
                             views vi
20554
                       WHERE pv.pkg_id = pkg.pkg_id
20555
                         AND rel.pv_id = pv.pv_id
20556
                         AND rel.view_id = vi.view_id
20557
                         AND rel.view_id IN (
20558
                                SELECT *
20559
                                  FROM THE
20560
                                          (SELECT CAST
20561
                                                     (in_list_number
20562
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20563
                                                     )
20564
                                             FROM DUAL
20565
                                          ))
20566
                         AND rtag_id = rtagid) ord
20567
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20568
      ELSIF viewtype = 2
20569
      THEN
20570
         /*--- PERSONAL VIEW ---*/
20571
         OPEN recordset FOR
20572
            SELECT   *
20573
                FROM (
20574
                      /* Base Views collapsed */
20575
                      SELECT DISTINCT vi.view_id, vi.view_name,
20576
                                      TO_NUMBER (NULL) AS pkg_state,
20577
                                      TO_NUMBER (NULL) AS deprecated_state,
20578
                                      TO_NUMBER (NULL) AS pv_id,
20579
                                      NULL AS pkg_name, NULL AS pkg_version,
20580
                                      NULL AS dlocked, NULL AS pv_description
20581
                                 FROM environment_view rel,
20582
                                      view_settings vs,
20583
                                      views vi
20584
                                WHERE rel.view_id = vi.view_id
20585
                                  AND vs.view_id = rel.view_id
20586
                                  AND vs.user_id = userid
20587
                                  AND rtag_id = rtagid
20588
                                  AND rel.view_id NOT IN (
20589
                                         SELECT *
20590
                                           FROM THE
20591
                                                   (SELECT CAST
20592
                                                              (in_list_number
20593
                                                                  (sviewidshowlist
20594
                                                                  ) AS relmgr_number_tab_t
20595
                                                              )
20596
                                                      FROM DUAL
20597
                                                   ))
20598
                      UNION
20599
                      /* Base Views expanded */
20600
                      SELECT vi.view_id, vi.view_name,
20601
                             DECODE (rel.pkg_state,
20602
                                     NULL, 0,
20603
                                     rel.pkg_state
20604
                                    ) AS pkg_state,
20605
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20606
                             pv.pkg_version, pv.dlocked, pv.pv_description
20607
                        FROM environment_view rel,
20608
                             PACKAGES pkg,
20609
                             package_versions pv,
20610
                             views vi,
20611
                             view_settings vs
20612
                       WHERE pv.pkg_id = pkg.pkg_id
20613
                         AND rel.pv_id = pv.pv_id
20614
                         AND rel.view_id = vi.view_id
20615
                         AND vs.view_id = vi.view_id
20616
                         AND vs.user_id = userid
20617
                         AND rel.view_id IN (
20618
                                SELECT *
20619
                                  FROM THE
20620
                                          (SELECT CAST
20621
                                                     (in_list_number
20622
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20623
                                                     )
20624
                                             FROM DUAL
20625
                                          ))
20626
                         AND rtag_id = rtagid
20627
                      UNION
20628
                      /* Private Views collapsed */
20629
                      SELECT vi.view_id, vi.view_name,
20630
                             TO_NUMBER (NULL) AS pkg_state,
20631
                             TO_NUMBER (NULL) AS deprecated_state,
20632
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20633
                             NULL AS pkg_version, NULL AS dlocked,
20634
                             NULL AS pv_description
20635
                        FROM view_settings vs,
20636
                             view_def vd,
20637
                             views vi,
20638
                             environment_view rel,
20639
                             package_versions pv
20640
                       WHERE vs.view_id = vi.view_id
20641
                         AND rel.pv_id = pv.pv_id
20642
                         AND vd.pkg_id = pv.pkg_id
20643
                         AND vd.view_id = vi.view_id
20644
                         AND vi.base_view = 'N'
20645
                         AND rel.rtag_id = rtagid
20646
                         AND vs.user_id = userid
20647
                         AND vi.view_id NOT IN (
20648
                                SELECT *
20649
                                  FROM THE
20650
                                          (SELECT CAST
20651
                                                     (in_list_number
20652
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20653
                                                     )
20654
                                             FROM DUAL
20655
                                          ))
20656
                      UNION
20657
                      /* Private Views expanded */
20658
                      SELECT vi.view_id, vi.view_name,
20659
                             DECODE (rel.pkg_state,
20660
                                     NULL, 0,
20661
                                     rel.pkg_state
20662
                                    ) AS pkg_state,
20663
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20664
                             pv.pkg_version, pv.dlocked, pv.pv_description
20665
                        FROM users usr,
20666
                             view_settings vs,
20667
                             view_def vd,
20668
                             views vi,
20669
                             environment_view rel,
20670
                             PACKAGES pkg,
20671
                             package_versions pv
20672
                       WHERE vs.user_id = usr.user_id
20673
                         AND vs.view_id = vi.view_id
20674
                         AND vd.view_id = vi.view_id
20675
                         AND pv.pkg_id = pkg.pkg_id
20676
                         AND rel.pv_id = pv.pv_id
20677
                         AND rel.rtag_id = rtagid
20678
                         AND vd.pkg_id = pkg.pkg_id
20679
                         AND vi.base_view = 'N'
20680
                         AND vi.view_id IN (
20681
                                SELECT *
20682
                                  FROM THE
20683
                                          (SELECT CAST
20684
                                                     (in_list_number
20685
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20686
                                                     )
20687
                                             FROM DUAL
20688
                                          ))
20689
                         AND usr.user_id = userid) ord
20690
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20691
      END IF;
20692
   END;
20693
 
20694
/*-------------------------------------------------------------------------------------------------------*/
20695
   PROCEDURE get_released_items (
20696
      viewtype           IN       NUMBER,
20697
      userid             IN       NUMBER,
20698
      rtagid             IN       NUMBER,
20699
      sviewidshowlist    IN       VARCHAR2,
20700
      ntruerecordcount   OUT      NUMBER,
20701
      recordset          OUT      typecur
20702
   )
20703
   IS
20704
   BEGIN
20705
      -- Get true record count because views can give false count
20706
      SELECT COUNT (rc.pv_id)
20707
        INTO ntruerecordcount
20708
        FROM release_content rc
20709
       WHERE rc.rtag_id = rtagid;
20710
 
20711
      IF viewtype = 1
20712
      THEN
20713
         /*--- GUEST VIEW ---*/
20714
         OPEN recordset FOR
20715
            SELECT   *
20716
                FROM (
20717
                      /* Base Views collapsed */
20718
                      SELECT DISTINCT vi.view_id, vi.view_name,
20719
                                      TO_NUMBER (NULL) AS pkg_state,
20720
                                      TO_NUMBER (NULL) AS deprecated_state,
20721
                                      TO_NUMBER (NULL) AS pv_id,
20722
                                      NULL AS pkg_name, NULL AS pkg_version,
20723
                                      NULL AS dlocked, NULL AS pv_description
20724
                                 FROM release_content rel, views vi
20725
                                WHERE rel.base_view_id = vi.view_id
20726
                                  AND rtag_id = rtagid
20727
                                  AND rel.base_view_id NOT IN (
20728
                                         SELECT *
20729
                                           FROM THE
20730
                                                   (SELECT CAST
20731
                                                              (in_list_number
20732
                                                                  (sviewidshowlist
20733
                                                                  ) AS relmgr_number_tab_t
20734
                                                              )
20735
                                                      FROM DUAL
20736
                                                   ))
20737
                      UNION
20738
                      /* Base Views expanded */
20739
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20740
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20741
                             pv.pkg_version, pv.dlocked, pv.pv_description
20742
                        FROM release_content rel,
20743
                             PACKAGES pkg,
20744
                             package_versions pv,
20745
                             views vi
20746
                       WHERE pv.pkg_id = pkg.pkg_id
20747
                         AND rel.pv_id = pv.pv_id
20748
                         AND rel.base_view_id = vi.view_id
20749
                         AND rel.base_view_id IN (
20750
                                SELECT *
20751
                                  FROM THE
20752
                                          (SELECT CAST
20753
                                                     (in_list_number
20754
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20755
                                                     )
20756
                                             FROM DUAL
20757
                                          ))
20758
                         AND rtag_id = rtagid) ord
20759
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20760
      ELSIF viewtype = 2
20761
      THEN
20762
         /*--- PERSONAL VIEW ---*/
20763
         OPEN recordset FOR
20764
            SELECT   *
20765
                FROM (
20766
                      /* Base Views collapsed */
20767
                      SELECT DISTINCT vi.view_id, vi.view_name,
20768
                                      TO_NUMBER (NULL) AS pkg_state,
20769
                                      TO_NUMBER (NULL) AS deprecated_state,
20770
                                      TO_NUMBER (NULL) AS pv_id,
20771
                                      NULL AS pkg_name, NULL AS pkg_version,
20772
                                      NULL AS dlocked, NULL AS pv_description
20773
                                 FROM release_content rel,
20774
                                      view_settings vs,
20775
                                      views vi
20776
                                WHERE rel.base_view_id = vi.view_id
20777
                                  AND vs.view_id = rel.base_view_id
20778
                                  AND vs.user_id = userid
20779
                                  AND rtag_id = rtagid
20780
                                  AND rel.base_view_id NOT IN (
20781
                                         SELECT *
20782
                                           FROM THE
20783
                                                   (SELECT CAST
20784
                                                              (in_list_number
20785
                                                                  (sviewidshowlist
20786
                                                                  ) AS relmgr_number_tab_t
20787
                                                              )
20788
                                                      FROM DUAL
20789
                                                   ))
20790
                      UNION
20791
                      /* Base Views expanded */
20792
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20793
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20794
                             pv.pkg_version, pv.dlocked, pv.pv_description
20795
                        FROM release_content rel,
20796
                             PACKAGES pkg,
20797
                             package_versions pv,
20798
                             views vi,
20799
                             view_settings vs
20800
                       WHERE pv.pkg_id = pkg.pkg_id
20801
                         AND rel.pv_id = pv.pv_id
20802
                         AND rel.base_view_id = vi.view_id
20803
                         AND vs.view_id = vi.view_id
20804
                         AND vs.user_id = userid
20805
                         AND rel.base_view_id IN (
20806
                                SELECT *
20807
                                  FROM THE
20808
                                          (SELECT CAST
20809
                                                     (in_list_number
20810
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20811
                                                     )
20812
                                             FROM DUAL
20813
                                          ))
20814
                         AND rtag_id = rtagid
20815
                      UNION
20816
                      /* Private Views collapsed */
20817
                      SELECT vi.view_id, vi.view_name,
20818
                             TO_NUMBER (NULL) AS pkg_state,
20819
                             TO_NUMBER (NULL) AS deprecated_state,
20820
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20821
                             NULL AS pkg_version, NULL AS dlocked,
20822
                             NULL AS pv_description
20823
                        FROM view_settings vs,
20824
                             view_def vd,
20825
                             views vi,
20826
                             release_content rel,
20827
                             package_versions pv
20828
                       WHERE vs.view_id = vi.view_id
20829
                         AND rel.pv_id = pv.pv_id
20830
                         AND vd.pkg_id = pv.pkg_id
20831
                         AND vd.view_id = vi.view_id
20832
                         AND vi.base_view = 'N'
20833
                         AND rel.rtag_id = rtagid
20834
                         AND vs.user_id = userid
20835
                         AND vi.view_id NOT IN (
20836
                                SELECT *
20837
                                  FROM THE
20838
                                          (SELECT CAST
20839
                                                     (in_list_number
20840
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20841
                                                     )
20842
                                             FROM DUAL
20843
                                          ))
20844
                      UNION
20845
                      /* Private Views expanded */
20846
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20847
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20848
                             pv.pkg_version, pv.dlocked, pv.pv_description
20849
                        FROM users usr,
20850
                             view_settings vs,
20851
                             view_def vd,
20852
                             views vi,
20853
                             release_content rel,
20854
                             PACKAGES pkg,
20855
                             package_versions pv
20856
                       WHERE vs.user_id = usr.user_id
20857
                         AND vs.view_id = vi.view_id
20858
                         AND vd.view_id = vi.view_id
20859
                         AND pv.pkg_id = pkg.pkg_id
20860
                         AND rel.pv_id = pv.pv_id
20861
                         AND rel.rtag_id = rtagid
20862
                         AND vd.pkg_id = pkg.pkg_id
20863
                         AND vi.base_view = 'N'
20864
                         AND vi.view_id IN (
20865
                                SELECT *
20866
                                  FROM THE
20867
                                          (SELECT CAST
20868
                                                     (in_list_number
20869
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20870
                                                     )
20871
                                             FROM DUAL
20872
                                          ))
20873
                         AND usr.user_id = userid) ord
20874
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20875
      END IF;
20876
   END;
20877
 
20878
/*-------------------------------------------------------------------------------------------------------*/
20879
   PROCEDURE get_work_in_progress_items (
20880
      viewtype           IN       NUMBER,
20881
      userid             IN       NUMBER,
20882
      rtagid             IN       NUMBER,
20883
      sviewidshowlist    IN       VARCHAR2,
20884
      ntruerecordcount   OUT      NUMBER,
20885
      recordset          OUT      typecur
20886
   )
20887
   IS
20888
   BEGIN
20889
      -- Get true record count because views can give false count
20890
      SELECT COUNT (wip.pv_id)
20891
        INTO ntruerecordcount
20892
        FROM work_in_progress wip
20893
       WHERE wip.rtag_id = rtagid;
20894
 
20895
      IF viewtype = 1
20896
      THEN
20897
         /*--- GUEST VIEW ---*/
20898
         OPEN recordset FOR
20899
            SELECT   *
20900
                FROM (
20901
                      /* Base Views collapsed */
20902
                      SELECT DISTINCT vi.view_id, vi.view_name,
20903
                                      TO_NUMBER (NULL) AS pkg_state,
20904
                                      TO_NUMBER (NULL) AS deprecated_state,
20905
                                      TO_NUMBER (NULL) AS pv_id,
20906
                                      NULL AS pkg_name, NULL AS pkg_version,
20907
                                      NULL AS dlocked, NULL AS pv_description
20908
                                 FROM work_in_progress rel, views vi
20909
                                WHERE rel.view_id = vi.view_id
20910
                                  AND rtag_id = rtagid
20911
                                  AND rel.view_id NOT IN (
20912
                                         SELECT *
20913
                                           FROM THE
20914
                                                   (SELECT CAST
20915
                                                              (in_list_number
20916
                                                                  (sviewidshowlist
20917
                                                                  ) AS relmgr_number_tab_t
20918
                                                              )
20919
                                                      FROM DUAL
20920
                                                   ))
20921
                      UNION
20922
                      /* Base Views expanded */
20923
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20924
 
20925
                             --rel.pkg_state,
20926
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20927
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20928
                             pv.pv_description
20929
                        FROM work_in_progress rel,
20930
                             PACKAGES pkg,
20931
                             package_versions pv,
20932
                             views vi
20933
                       WHERE pv.pkg_id = pkg.pkg_id
20934
                         AND rel.pv_id = pv.pv_id
20935
                         AND rel.view_id = vi.view_id
20936
                         AND rel.view_id IN (
20937
                                SELECT *
20938
                                  FROM THE
20939
                                          (SELECT CAST
20940
                                                     (in_list_number
20941
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20942
                                                     )
20943
                                             FROM DUAL
20944
                                          ))
20945
                         AND rtag_id = rtagid) ord
20946
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20947
      ELSIF viewtype = 2
20948
      THEN
20949
         /*--- PERSONAL VIEW ---*/
20950
         OPEN recordset FOR
20951
            SELECT   *
20952
                FROM (
20953
                      /* Base Views collapsed */
20954
                      SELECT DISTINCT vi.view_id, vi.view_name,
20955
                                      TO_NUMBER (NULL) AS pkg_state,
20956
                                      TO_NUMBER (NULL) AS deprecated_state,
20957
                                      TO_NUMBER (NULL) AS pv_id,
20958
                                      NULL AS pkg_name, NULL AS pkg_version,
20959
                                      NULL AS dlocked, NULL AS pv_description
20960
                                 FROM work_in_progress rel,
20961
                                      view_settings vs,
20962
                                      views vi
20963
                                WHERE rel.view_id = vi.view_id
20964
                                  AND vs.view_id = rel.view_id
20965
                                  AND vs.user_id = userid
20966
                                  AND rtag_id = rtagid
20967
                                  AND rel.view_id NOT IN (
20968
                                         SELECT *
20969
                                           FROM THE
20970
                                                   (SELECT CAST
20971
                                                              (in_list_number
20972
                                                                  (sviewidshowlist
20973
                                                                  ) AS relmgr_number_tab_t
20974
                                                              )
20975
                                                      FROM DUAL
20976
                                                   ))
20977
                      UNION
20978
                      /* Base Views expanded */
20979
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20980
 
20981
                             --rel.pkg_state,
20982
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20983
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20984
                             pv.pv_description
20985
                        FROM work_in_progress rel,
20986
                             PACKAGES pkg,
20987
                             package_versions pv,
20988
                             views vi,
20989
                             view_settings vs
20990
                       WHERE pv.pkg_id = pkg.pkg_id
20991
                         AND rel.pv_id = pv.pv_id
20992
                         AND rel.view_id = vi.view_id
20993
                         AND vs.view_id = vi.view_id
20994
                         AND vs.user_id = userid
20995
                         AND rel.view_id IN (
20996
                                SELECT *
20997
                                  FROM THE
20998
                                          (SELECT CAST
20999
                                                     (in_list_number
21000
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21001
                                                     )
21002
                                             FROM DUAL
21003
                                          ))
21004
                         AND rtag_id = rtagid
21005
                      UNION
21006
                      /* Private Views collapsed */
21007
                      SELECT vi.view_id, vi.view_name,
21008
                             TO_NUMBER (NULL) AS pkg_state,
21009
                             TO_NUMBER (NULL) AS deprecated_state,
21010
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21011
                             NULL AS pkg_version, NULL AS dlocked,
21012
                             NULL AS pv_description
21013
                        FROM view_settings vs,
21014
                             view_def vd,
21015
                             views vi,
21016
                             work_in_progress rel,
21017
                             package_versions pv
21018
                       WHERE vs.view_id = vi.view_id
21019
                         AND rel.pv_id = pv.pv_id
21020
                         AND vd.pkg_id = pv.pkg_id
21021
                         AND vd.view_id = vi.view_id
21022
                         AND vi.base_view = 'N'
21023
                         AND rel.rtag_id = rtagid
21024
                         AND vs.user_id = userid
21025
                         AND vi.view_id NOT IN (
21026
                                SELECT *
21027
                                  FROM THE
21028
                                          (SELECT CAST
21029
                                                     (in_list_number
21030
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21031
                                                     )
21032
                                             FROM DUAL
21033
                                          ))
21034
                      UNION
21035
                      /* Private Views expanded */
21036
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21037
 
21038
                             --rel.pkg_state,
21039
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21040
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21041
                             pv.pv_description
21042
                        FROM users usr,
21043
                             view_settings vs,
21044
                             view_def vd,
21045
                             views vi,
21046
                             work_in_progress rel,
21047
                             PACKAGES pkg,
21048
                             package_versions pv
21049
                       WHERE vs.user_id = usr.user_id
21050
                         AND vs.view_id = vi.view_id
21051
                         AND vd.view_id = vi.view_id
21052
                         AND pv.pkg_id = pkg.pkg_id
21053
                         AND rel.pv_id = pv.pv_id
21054
                         AND rel.rtag_id = rtagid
21055
                         AND vd.pkg_id = pkg.pkg_id
21056
                         AND vi.base_view = 'N'
21057
                         AND vi.view_id IN (
21058
                                SELECT *
21059
                                  FROM THE
21060
                                          (SELECT CAST
21061
                                                     (in_list_number
21062
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21063
                                                     )
21064
                                             FROM DUAL
21065
                                          ))
21066
                         AND usr.user_id = userid) ord
21067
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21068
      END IF;
21069
   END;
21070
 
21071
/*-------------------------------------------------------------------------------------------------------*/
21072
   PROCEDURE get_pending_items (
21073
      viewtype           IN       NUMBER,
21074
      userid             IN       NUMBER,
21075
      rtagid             IN       NUMBER,
21076
      sviewidshowlist    IN       VARCHAR2,
21077
      ntruerecordcount   OUT      NUMBER,
21078
      recordset          OUT      typecur
21079
   )
21080
   IS
21081
   BEGIN
21082
      -- Get true record count because views can give false count
21083
      SELECT COUNT (pl.pv_id)
21084
        INTO ntruerecordcount
21085
        FROM planned pl
21086
       WHERE pl.rtag_id = rtagid;
21087
 
21088
      IF viewtype = 1
21089
      THEN
21090
         /*--- GUEST VIEW ---*/
21091
         OPEN recordset FOR
21092
            SELECT   *
21093
                FROM (
21094
                      /* Base Views collapsed */
21095
                      SELECT DISTINCT vi.view_id, vi.view_name,
21096
                                      TO_NUMBER (NULL) AS pkg_state,
21097
                                      TO_NUMBER (NULL) AS deprecated_state,
21098
                                      TO_NUMBER (NULL) AS pv_id,
21099
                                      NULL AS pkg_name, NULL AS pkg_version,
21100
                                      NULL AS dlocked, NULL AS pv_description
21101
                                 FROM planned rel, views vi
21102
                                WHERE rel.view_id = vi.view_id
21103
                                  AND rtag_id = rtagid
21104
                                  AND rel.view_id NOT IN (
21105
                                         SELECT *
21106
                                           FROM THE
21107
                                                   (SELECT CAST
21108
                                                              (in_list_number
21109
                                                                  (sviewidshowlist
21110
                                                                  ) AS relmgr_number_tab_t
21111
                                                              )
21112
                                                      FROM DUAL
21113
                                                   ))
21114
                      UNION
21115
                      /* Base Views expanded */
21116
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21117
 
21118
                             --rel.pkg_state,
21119
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21120
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21121
                             pv.pv_description
21122
                        FROM planned rel,
21123
                             PACKAGES pkg,
21124
                             package_versions pv,
21125
                             views vi
21126
                       WHERE pv.pkg_id = pkg.pkg_id
21127
                         AND rel.pv_id = pv.pv_id
21128
                         AND rel.view_id = vi.view_id
21129
                         AND rel.view_id IN (
21130
                                SELECT *
21131
                                  FROM THE
21132
                                          (SELECT CAST
21133
                                                     (in_list_number
21134
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21135
                                                     )
21136
                                             FROM DUAL
21137
                                          ))
21138
                         AND rtag_id = rtagid) ord
21139
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21140
      ELSIF viewtype = 2
21141
      THEN
21142
         /*--- PERSONAL VIEW ---*/
21143
         OPEN recordset FOR
21144
            SELECT   *
21145
                FROM (
21146
                      /* Base Views collapsed */
21147
                      SELECT DISTINCT vi.view_id, vi.view_name,
21148
                                      TO_NUMBER (NULL) AS pkg_state,
21149
                                      TO_NUMBER (NULL) AS deprecated_state,
21150
                                      TO_NUMBER (NULL) AS pv_id,
21151
                                      NULL AS pkg_name, NULL AS pkg_version,
21152
                                      NULL AS dlocked, NULL AS pv_description
21153
                                 FROM planned rel, view_settings vs, views vi
21154
                                WHERE rel.view_id = vi.view_id
21155
                                  AND vs.view_id = rel.view_id
21156
                                  AND vs.user_id = userid
21157
                                  AND rtag_id = rtagid
21158
                                  AND rel.view_id NOT IN (
21159
                                         SELECT *
21160
                                           FROM THE
21161
                                                   (SELECT CAST
21162
                                                              (in_list_number
21163
                                                                  (sviewidshowlist
21164
                                                                  ) AS relmgr_number_tab_t
21165
                                                              )
21166
                                                      FROM DUAL
21167
                                                   ))
21168
                      UNION
21169
                      /* Base Views expanded */
21170
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21171
 
21172
                             --rel.pkg_state,
21173
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21174
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21175
                             pv.pv_description
21176
                        FROM planned rel,
21177
                             PACKAGES pkg,
21178
                             package_versions pv,
21179
                             views vi,
21180
                             view_settings vs
21181
                       WHERE pv.pkg_id = pkg.pkg_id
21182
                         AND rel.pv_id = pv.pv_id
21183
                         AND rel.view_id = vi.view_id
21184
                         AND vs.view_id = vi.view_id
21185
                         AND vs.user_id = userid
21186
                         AND rel.view_id IN (
21187
                                SELECT *
21188
                                  FROM THE
21189
                                          (SELECT CAST
21190
                                                     (in_list_number
21191
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21192
                                                     )
21193
                                             FROM DUAL
21194
                                          ))
21195
                         AND rtag_id = rtagid
21196
                      UNION
21197
                      /* Private Views collapsed */
21198
                      SELECT vi.view_id, vi.view_name,
21199
                             TO_NUMBER (NULL) AS pkg_state,
21200
                             TO_NUMBER (NULL) AS deprecated_state,
21201
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21202
                             NULL AS pkg_version, NULL AS dlocked,
21203
                             NULL AS pv_description
21204
                        FROM view_settings vs,
21205
                             view_def vd,
21206
                             views vi,
21207
                             planned rel,
21208
                             package_versions pv
21209
                       WHERE vs.view_id = vi.view_id
21210
                         AND rel.pv_id = pv.pv_id
21211
                         AND vd.pkg_id = pv.pkg_id
21212
                         AND vd.view_id = vi.view_id
21213
                         AND vi.base_view = 'N'
21214
                         AND rel.rtag_id = rtagid
21215
                         AND vs.user_id = userid
21216
                         AND vi.view_id NOT IN (
21217
                                SELECT *
21218
                                  FROM THE
21219
                                          (SELECT CAST
21220
                                                     (in_list_number
21221
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21222
                                                     )
21223
                                             FROM DUAL
21224
                                          ))
21225
                      UNION
21226
                      /* Private Views expanded */
21227
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21228
 
21229
                             --rel.pkg_state,
21230
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21231
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21232
                             pv.pv_description
21233
                        FROM users usr,
21234
                             view_settings vs,
21235
                             view_def vd,
21236
                             views vi,
21237
                             planned rel,
21238
                             PACKAGES pkg,
21239
                             package_versions pv
21240
                       WHERE vs.user_id = usr.user_id
21241
                         AND vs.view_id = vi.view_id
21242
                         AND vd.view_id = vi.view_id
21243
                         AND pv.pkg_id = pkg.pkg_id
21244
                         AND rel.pv_id = pv.pv_id
21245
                         AND rel.rtag_id = rtagid
21246
                         AND vd.pkg_id = pkg.pkg_id
21247
                         AND vi.base_view = 'N'
21248
                         AND vi.view_id IN (
21249
                                SELECT *
21250
                                  FROM THE
21251
                                          (SELECT CAST
21252
                                                     (in_list_number
21253
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21254
                                                     )
21255
                                             FROM DUAL
21256
                                          ))
21257
                         AND usr.user_id = userid) ord
21258
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21259
      END IF;
21260
   END;
21261
 
21262
/*-------------------------------------------------------------------------------------------------------*/
21263
   PROCEDURE get_view_content (
21264
      rtagid      IN       NUMBER,
21265
      viewid      IN       NUMBER,
21266
      recordset   OUT      typecur
21267
   )
21268
   IS
21269
      isbaseview   CHAR (1);
21270
   BEGIN
21271
      -- Check if the view is BASE VIEW
21272
      SELECT vi.base_view
21273
        INTO isbaseview
21274
        FROM views vi
21275
       WHERE vi.view_id = viewid;
21276
 
21277
      IF (isbaseview = 'Y')
21278
      THEN
21279
         -- Get Base view content
21280
         OPEN recordset FOR
21281
            SELECT   DECODE (rel.pkg_state,
21282
                             NULL, 0,
21283
                             rel.pkg_state
21284
                            ) AS pkg_state,
21285
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21286
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21287
                     pv.build_type
21288
                FROM environment_view rel, PACKAGES pkg, package_versions pv
21289
               WHERE pv.pkg_id = pkg.pkg_id
21290
                 AND rel.pv_id = pv.pv_id
21291
                 AND rel.view_id = viewid
21292
                 AND rel.rtag_id = rtagid
21293
            ORDER BY UPPER (pkg.pkg_name);
21294
      ELSE
21295
         -- Get non base view content
21296
         OPEN recordset FOR
21297
            SELECT   DECODE (rel.pkg_state,
21298
                             NULL, 0,
21299
                             rel.pkg_state
21300
                            ) AS pkg_state,
21301
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21302
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21303
                     pv.build_type
21304
                FROM environment_view rel,
21305
                     PACKAGES pkg,
21306
                     package_versions pv,
21307
                     view_def vd
21308
               WHERE pv.pkg_id = pkg.pkg_id
21309
                 AND rel.pv_id = pv.pv_id
21310
                 AND rel.rtag_id = rtagid
21311
                 AND vd.view_id = viewid
21312
                 AND vd.pkg_id = pv.pkg_id
21313
            ORDER BY UPPER (pkg.pkg_name);
21314
      END IF;
21315
   END;
21316
 
21317
/*-------------------------------------------------------------------------------------------------------*/
21318
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
21319
      RETURN NUMBER
21320
   IS
21321
      envtab             NUMBER;
21322
      returnvalue        NUMBER;
21323
      return_not_found   NUMBER := -1;
21324
   BEGIN
21325
      envtab := get_package_area (pvid, rtagid);
21326
 
21327
      IF envtab = 0
21328
      THEN
21329
         -- WORK IN PROGRESS --
21330
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
21331
      ELSIF envtab = 1
21332
      THEN
21333
         -- PENDING --
21334
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
21335
      ELSIF envtab = 2
21336
      THEN
21337
         -- RELEASED --
21338
         returnvalue := pk_release.get_package_view (pvid, rtagid);
21339
      ELSE
21340
         -- This may be a Patch not located anywhere but unlocked
21341
         returnvalue := return_not_found;
21342
      END IF;
21343
 
21344
      RETURN returnvalue;
21345
   END;
21346
 
21347
/*-------------------------------------------------------------------------------------------------------*/
21348
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21349
   IS
21350
      viewid          NUMBER;
21351
      envtab          NUMBER;
21352
      ispatch         CHAR (1) := NULL;
21353
      buildtype       CHAR (1) := NULL;
21354
      lastversionid   NUMBER;
21355
   BEGIN
21356
      -- Check if package is patch
21357
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21358
        INTO ispatch, buildtype, lastversionid
21359
        FROM package_versions pv
21360
       WHERE pv.pv_id = pvid;
21361
 
21362
      -- Get ViewId
21363
      viewid := get_package_view (pvid, rtagid);
21364
      -- Remove from current area
21365
      envtab := pk_environment.get_package_area (pvid, rtagid);
21366
 
21367
      -- Make sure that package was in work-in-progress or pending before makeing it release
21368
      -- Exclude patches, ripple builds
21369
      IF (envtab < 0)
21370
      THEN
21371
         -- Not found in work-in-progress or pending
21372
         IF (ispatch IS NULL) AND (buildtype = 'M')
21373
         THEN
21374
            raise_application_error (-20000,
21375
                                     'This package cannot be released here.'
21376
                                    );
21377
         END IF;
21378
      END IF;
21379
 
21380
      -- Log
21381
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21382
 
21383
      IF envtab = 0
21384
      THEN
21385
         -- WORK IN PROGRESS --
21386
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21387
      ELSIF envtab = 1
21388
      THEN
21389
         -- PENDING --
21390
         pk_planned.remove_package (pvid, rtagid, userid);
21391
      END IF;
21392
 
21393
      -- Change package state
21394
      pk_package.change_state (pvid, 'Y', userid);
21395
 
21396
      -- Make sure it is valid BASE VIEW
21397
      IF viewid < 1
21398
      THEN
21399
         viewid := 7;                            -- This is default base view
21400
      END IF;
21401
 
21402
      IF (ispatch IS NULL)
21403
      THEN
21404
         -- Add package to new area
21405
         pk_release.add_package (pvid, viewid, rtagid, userid);
21406
      END IF;
21407
 
21408
      -- Now do post Release Actions
21409
      pk_release.run_post_actions (pvid, rtagid);
21410
 
21411
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21412
      DELETE FROM do_not_ripple
21413
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21414
 
21415
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21416
      DELETE FROM advisory_ripple
21417
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21418
 
21419
      -- Log
21420
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21421
   END;
21422
 
21423
/*-------------------------------------------------------------------------------------------------------*/
21424
   PROCEDURE auto_make_release (
21425
      pvid            IN   NUMBER,
21426
      rtagid          IN   NUMBER,
21427
      userid          IN   NUMBER,
21428
      vext            IN   package_versions.v_ext%TYPE,
21429
      ssv_ext         IN   package_versions.v_ext%TYPE,
21430
      clonefrompvid   IN   NUMBER
21431
   )
21432
   IS
21433
      viewid          NUMBER;
21434
      envtab          NUMBER;
21435
      ispatch         CHAR (1) := NULL;
21436
      buildtype       CHAR (1) := NULL;
21437
      lastversionid   NUMBER;
21438
   BEGIN
21439
      -- Check if package is patch
21440
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21441
        INTO ispatch, buildtype, lastversionid
21442
        FROM package_versions pv
21443
       WHERE pv.pv_id = pvid;
21444
 
21445
      IF vext <> ssv_ext
21446
      THEN
21447
         -- Get ViewId
21448
         viewid := get_package_view (clonefrompvid, rtagid);
21449
         -- Remove from current area
21450
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
21451
      ELSE
21452
         -- Get ViewId
21453
         viewid := get_package_view (pvid, rtagid);
21454
         -- Remove from current area
21455
         envtab := pk_environment.get_package_area (pvid, rtagid);
21456
      END IF;
21457
 
21458
      -- Make sure that package was in work-in-progress or pending before makeing it release
21459
      -- Exclude patches, ripple builds
21460
      IF (envtab < 0)
21461
      THEN
21462
         -- Not found in work-in-progress or pending
21463
         IF (ispatch IS NULL) AND (buildtype = 'M')
21464
         THEN
21465
            raise_application_error (-20000,
21466
                                     'This package cannot be released here.'
21467
                                    );
21468
         END IF;
21469
      END IF;
21470
 
21471
      -- Log
21472
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21473
 
21474
      IF vext <> ssv_ext
21475
      THEN
21476
         IF envtab = 0
21477
         THEN
21478
            -- WORK IN PROGRESS --
21479
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
21480
                                                userid);
21481
         ELSIF envtab = 1
21482
         THEN
21483
            -- PENDING --
21484
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
21485
         ELSIF envtab = 2
21486
         THEN
21487
            -- RELEASED --
21488
            pk_release.remove_package (clonefrompvid, rtagid, userid);
21489
         END IF;
21490
      ELSE
21491
         IF envtab = 0
21492
         THEN
21493
            -- WORK IN PROGRESS --
21494
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
21495
         ELSIF envtab = 1
21496
         THEN
21497
            -- PENDING --
21498
            pk_planned.remove_package (pvid, rtagid, userid);
21499
         END IF;
21500
      END IF;
21501
 
21502
      -- Change package state
21503
      pk_package.change_state (pvid, 'Y', userid);
21504
 
21505
      -- Make sure it is valid BASE VIEW
21506
      IF viewid < 1
21507
      THEN
21508
         viewid := 7;                            -- This is default base view
21509
      END IF;
21510
 
21511
      IF (ispatch IS NULL)
21512
      THEN
21513
         -- Add package to new area
21514
         pk_release.add_package (pvid, viewid, rtagid, userid);
21515
      END IF;
21516
 
21517
      -- Now do post Release Actions
21518
      pk_release.run_post_actions (pvid, rtagid);
21519
      -- Now update the Dash_Board Table
21520
      pk_rmapi.update_dash_board (rtagid);
21521
 
21522
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21523
      DELETE FROM do_not_ripple
21524
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21525
 
21526
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21527
      DELETE FROM advisory_ripple
21528
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21529
 
21530
      -- Log
21531
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21532
   END;
21533
 
21534
/*-------------------------------------------------------------------------------------------------------*/
21535
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21536
   IS
21537
      viewid   NUMBER;
21538
      envtab   NUMBER;
21539
   BEGIN
21540
      -- Get ViewId
21541
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
21542
      viewid := get_package_view (pvid, rtagid);
21543
      -- Remove from current area
21544
      envtab := pk_environment.get_package_area (pvid, rtagid);
21545
      -- Log
21546
      log_action (pvid,
21547
                  'action',
21548
                  userid,
21549
                  'Start of Make Package UnRelease...'
21550
                 );
21551
 
21552
      IF envtab = 2
21553
      THEN
21554
         -- RELEASE AREA --
21555
         pk_release.remove_package (pvid, rtagid, userid);
21556
      ELSIF envtab = 1
21557
      THEN
21558
         -- PENDING --
21559
         pk_planned.remove_package (pvid, rtagid, userid);
21560
      END IF;
21561
 
21562
      -- Change package state
21563
      pk_package.change_state (pvid, 'N', userid);
21564
 
21565
      -- Make sure it is valid BASE VIEW
21566
      IF viewid < 1
21567
      THEN
21568
         viewid := 7;                            -- This is default base view
21569
      END IF;
21570
 
21571
      -- Add package to new area
21572
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21573
      -- Now do post Release Actions
21574
      pk_release.run_post_actions (pvid, rtagid);
21575
      -- Log
21576
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
21577
   END;
21578
 
21579
/*-------------------------------------------------------------------------------------------------------*/
21580
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21581
   IS
21582
      viewid      NUMBER;
21583
      ispatch     CHAR (1) := NULL;
21584
      buildtype   CHAR (1) := NULL;
21585
   BEGIN
21586
      -- Check if package is patch
21587
      SELECT pv.is_patch, pv.build_type
21588
        INTO ispatch, buildtype
21589
        FROM package_versions pv
21590
       WHERE pv.pv_id = pvid;
21591
 
21592
      -- Get ViewId
21593
      viewid := get_package_view (pvid, rtagid);
21594
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
21595
 
21596
      -- Log
21597
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
21598
 
21599
      IF (ispatch IS NULL)
21600
      THEN
21601
         -- Remove from current area
21602
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21603
         -- Change package state
21604
         pk_package.change_state (pvid, 'P', userid);
21605
         -- Add package to new area
21606
         pk_planned.add_package (pvid, viewid, rtagid, userid);
21607
      END IF;
21608
 
21609
      -- Log
21610
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
21611
   END;
21612
 
21613
/*-------------------------------------------------------------------------------------------------------*/
21614
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21615
   IS
21616
   BEGIN
21617
      -- Log
21618
      log_action (pvid,
21619
                  'action',
21620
                  userid,
21621
                  'Start of Package Pending Approval...'
21622
                 );
21623
      -- Change package state
21624
      pk_package.change_state (pvid, 'A', userid);
21625
      -- Log
21626
      log_action (pvid, 'action', userid,
21627
                  'End of Package Pending Approval...');
21628
   END;
21629
 
21630
/*-------------------------------------------------------------------------------------------------------*/
21631
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21632
   IS
21633
      viewid   NUMBER;
21634
   BEGIN
21635
      -- Get ViewId
21636
      viewid := get_package_view (pvid, rtagid);
21637
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
21638
 
21639
      -- Log
21640
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21641
      -- Remove from current area
21642
      pk_planned.remove_package (pvid, rtagid, userid);
21643
      -- Change package state
21644
      pk_package.change_state (pvid, 'R', userid);
21645
      -- Add package to new area
21646
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21647
      -- Log
21648
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21649
   END;
21650
 
21651
/*-------------------------------------------------------------------------------------------------------*/
21652
   PROCEDURE change_package_view (
21653
      pvid        IN   NUMBER,
21654
      rtagid      IN   NUMBER,
21655
      newviewid   IN   NUMBER
21656
   )
21657
   IS
21658
      envtab   NUMBER;
21659
   BEGIN
21660
      envtab := pk_environment.get_package_area (pvid, rtagid);
21661
 
21662
      IF envtab = 0
21663
      THEN
21664
         -- WORK IN PROGRESS --
21665
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
21666
      ELSIF envtab = 1
21667
      THEN
21668
         -- PENDING --
21669
         pk_planned.change_package_view (pvid, rtagid, newviewid);
21670
      ELSIF envtab = 2
21671
      THEN
21672
         -- RELEASED --
21673
         pk_release.change_package_view (pvid, rtagid, newviewid);
21674
      END IF;
21675
   END;
21676
 
21677
/*-------------------------------------------------------------------------------------------------------*/
21678
   PROCEDURE find_package (
21679
      skeyword      IN       VARCHAR2,
21680
      nrtagid       IN       NUMBER,
21681
      nsearcharea   IN       NUMBER,
21682
      recordset     OUT      typecur
21683
   )
21684
   IS
21685
   BEGIN
21686
      IF nsearcharea = 0
21687
      THEN
21688
         /* Search Work In Progress */
21689
         OPEN recordset FOR
21690
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21691
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21692
                     pv.modified_stamp, usr.full_name, usr.user_email
21693
                FROM views vi,
21694
                     work_in_progress rc,
21695
                     PACKAGES pkg,
21696
                     package_versions pv,
21697
                     users usr
21698
               WHERE rc.view_id = vi.view_id
21699
                 AND rc.pv_id = pv.pv_id
21700
                 AND pkg.pkg_id = pv.pkg_id
21701
                 AND pv.modifier_id = usr.user_id
21702
                 AND rc.rtag_id = nrtagid
21703
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21704
            ORDER BY UPPER (pkg.pkg_name);
21705
      ELSIF nsearcharea = 1
21706
      THEN
21707
         /* Search Pending */
21708
         OPEN recordset FOR
21709
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21710
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21711
                     pv.modified_stamp, usr.full_name, usr.user_email
21712
                FROM views vi,
21713
                     planned rc,
21714
                     PACKAGES pkg,
21715
                     package_versions pv,
21716
                     users usr
21717
               WHERE rc.view_id = vi.view_id
21718
                 AND rc.pv_id = pv.pv_id
21719
                 AND pkg.pkg_id = pv.pkg_id
21720
                 AND pv.modifier_id = usr.user_id
21721
                 AND rc.rtag_id = nrtagid
21722
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21723
            ORDER BY UPPER (pkg.pkg_name);
21724
      ELSIF nsearcharea = 2
21725
      THEN
21726
         /* Search Released */
21727
         OPEN recordset FOR
21728
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21729
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21730
                     pv.modified_stamp, usr.full_name, usr.user_email
21731
                FROM views vi,
21732
                     release_content rc,
21733
                     PACKAGES pkg,
21734
                     package_versions pv,
21735
                     users usr
21736
               WHERE rc.base_view_id = vi.view_id
21737
                 AND rc.pv_id = pv.pv_id
21738
                 AND pkg.pkg_id = pv.pkg_id
21739
                 AND pv.modifier_id = usr.user_id
21740
                 AND rc.rtag_id = nrtagid
21741
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21742
            ORDER BY UPPER (pkg.pkg_name);
21743
      ELSIF nsearcharea = 3
21744
      THEN
21745
         /* Search ALL */
21746
         OPEN recordset FOR
21747
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
21748
                     pv.pv_id, pv.pkg_version, pv.comments,
21749
                     pv.modified_stamp, usr.full_name, usr.user_email
21750
                FROM views vi,
21751
                     environment_view rc,
21752
                     PACKAGES pkg,
21753
                     package_versions pv,
21754
                     users usr
21755
               WHERE rc.view_id = vi.view_id
21756
                 AND rc.pv_id = pv.pv_id
21757
                 AND pkg.pkg_id = pv.pkg_id
21758
                 AND pv.modifier_id = usr.user_id
21759
                 AND rc.rtag_id = nrtagid
21760
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21761
            ORDER BY UPPER (pkg.pkg_name);
21762
      END IF;
21763
   END;
21764
 
21765
/*-------------------------------------------------------------------------------------------------------*/
21766
   PROCEDURE find_file (
21767
      skeyword      IN       VARCHAR2,
21768
      nrtagid       IN       NUMBER,
21769
      nsearcharea   IN       NUMBER,
21770
      npagesize     IN       NUMBER,
21771
      recordset     OUT      typecur
21772
   )
21773
   IS
21774
   BEGIN
21775
      IF nsearcharea = 0
21776
      THEN
21777
         /* Search Work In Progress */
21778
         OPEN recordset FOR
21779
            SELECT   qry.*
21780
                FROM (
21781
                      /* File search on Packages */
21782
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21783
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21784
                        FROM work_in_progress rc,
21785
                             PACKAGES pkg,
21786
                             package_versions pv,
21787
                             release_components art
21788
                       WHERE rc.pv_id = art.pv_id
21789
                         AND pv.pkg_id = pkg.pkg_id
21790
                         AND rc.pv_id = pv.pv_id
21791
                         AND rc.rtag_id = nrtagid
21792
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21793
                      UNION ALL
21794
                      /* File search on Products */
21795
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21796
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21797
                        FROM work_in_progress rc,
21798
                             PACKAGES pkg,
21799
                             package_versions pv,
21800
                             product_components art
21801
                       WHERE rc.pv_id = art.pv_id
21802
                         AND pv.pkg_id = pkg.pkg_id
21803
                         AND rc.pv_id = pv.pv_id
21804
                         AND rc.rtag_id = nrtagid
21805
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21806
               WHERE ROWNUM <= npagesize
21807
            ORDER BY UPPER (qry.pkg_name);
21808
      ELSIF nsearcharea = 1
21809
      THEN
21810
         /* Search Pending */
21811
         OPEN recordset FOR
21812
            SELECT   qry.*
21813
                FROM (
21814
                      /* File search on Packages */
21815
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21816
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21817
                        FROM planned rc,
21818
                             PACKAGES pkg,
21819
                             package_versions pv,
21820
                             release_components art
21821
                       WHERE rc.pv_id = art.pv_id
21822
                         AND pv.pkg_id = pkg.pkg_id
21823
                         AND rc.pv_id = pv.pv_id
21824
                         AND rc.rtag_id = nrtagid
21825
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21826
                      UNION ALL
21827
                      /* File search on Products */
21828
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21829
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21830
                        FROM planned rc,
21831
                             PACKAGES pkg,
21832
                             package_versions pv,
21833
                             product_components art
21834
                       WHERE rc.pv_id = art.pv_id
21835
                         AND pv.pkg_id = pkg.pkg_id
21836
                         AND rc.pv_id = pv.pv_id
21837
                         AND rc.rtag_id = nrtagid
21838
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21839
               WHERE ROWNUM <= npagesize
21840
            ORDER BY UPPER (qry.pkg_name);
21841
      ELSIF nsearcharea = 2
21842
      THEN
21843
         /* Search Released */
21844
         OPEN recordset FOR
21845
            SELECT   qry.*
21846
                FROM (
21847
                      /* File search on Packages */
21848
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21849
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21850
                             NULL AS patch_id
21851
                        FROM release_content rc,
21852
                             PACKAGES pkg,
21853
                             package_versions pv,
21854
                             release_components art
21855
                       WHERE rc.pv_id = art.pv_id
21856
                         AND pv.pkg_id = pkg.pkg_id
21857
                         AND rc.pv_id = pv.pv_id
21858
                         AND rc.rtag_id = nrtagid
21859
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21860
                      UNION ALL
21861
                      /* File search on Products */
21862
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21863
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21864
                             NULL AS patch_id
21865
                        FROM release_content rc,
21866
                             PACKAGES pkg,
21867
                             package_versions pv,
21868
                             product_components art
21869
                       WHERE rc.pv_id = art.pv_id
21870
                         AND pv.pkg_id = pkg.pkg_id
21871
                         AND rc.pv_id = pv.pv_id
21872
                         AND rc.rtag_id = nrtagid
21873
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21874
                      UNION ALL
21875
                      /* File search on Patches */
21876
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21877
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21878
                             DECODE (art.file_path,
21879
                                     NULL, pp.patch_id,
21880
                                     NULL
21881
                                    ) AS patch_id
21882
                        FROM release_content rc,
21883
                             PACKAGES pkg,
21884
                             package_versions pv,
21885
                             release_components art,
21886
                             package_patches pp
21887
                       WHERE pv.pv_id = pp.pv_id
21888
                         AND pv.pkg_id = pkg.pkg_id
21889
                         AND rc.rtag_id = nrtagid
21890
                         AND art.pv_id = pp.patch_id
21891
                         AND rc.pv_id = pp.pv_id
21892
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21893
               WHERE ROWNUM <= npagesize
21894
            ORDER BY UPPER (qry.pkg_name);
21895
      ELSIF nsearcharea = 3
21896
      THEN
21897
         /* Search ALL */
21898
         OPEN recordset FOR
21899
            SELECT   qry.*
21900
                FROM (
21901
                      /* File search on Packages */
21902
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21903
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21904
                             NULL AS patch_id
21905
                        FROM environment_view rc,
21906
                             PACKAGES pkg,
21907
                             package_versions pv,
21908
                             release_components art
21909
                       WHERE rc.pv_id = art.pv_id
21910
                         AND pv.pkg_id = pkg.pkg_id
21911
                         AND rc.pv_id = pv.pv_id
21912
                         AND rc.rtag_id = nrtagid
21913
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21914
                      UNION ALL
21915
                      /* File search on Products */
21916
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21917
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21918
                             NULL AS patch_id
21919
                        FROM environment_view rc,
21920
                             PACKAGES pkg,
21921
                             package_versions pv,
21922
                             product_components art
21923
                       WHERE rc.pv_id = art.pv_id
21924
                         AND pv.pkg_id = pkg.pkg_id
21925
                         AND rc.pv_id = pv.pv_id
21926
                         AND rc.rtag_id = nrtagid
21927
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21928
                      UNION ALL
21929
                      /* File search on Patches */
21930
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21931
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21932
                             DECODE (art.file_path,
21933
                                     NULL, pp.patch_id,
21934
                                     NULL
21935
                                    ) AS patch_id
21936
                        FROM release_content rc,
21937
                             PACKAGES pkg,
21938
                             package_versions pv,
21939
                             release_components art,
21940
                             package_patches pp
21941
                       WHERE pv.pv_id = pp.pv_id
21942
                         AND pv.pkg_id = pkg.pkg_id
21943
                         AND rc.rtag_id = nrtagid
21944
                         AND art.pv_id = pp.patch_id
21945
                         AND rc.pv_id = pp.pv_id
21946
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21947
               WHERE ROWNUM <= npagesize
21948
            ORDER BY UPPER (qry.pkg_name);
21949
      END IF;
21950
   END;
21951
 
21952
/*-------------------------------------------------------------------------------------------------------*/
21953
   PROCEDURE get_prodrelease_items (
21954
      rtagid             IN       NUMBER,
21955
      ntruerecordcount   OUT      NUMBER,
21956
      recordset          OUT      typecur
21957
   )
21958
   IS
21959
   BEGIN
21960
      -- Get true record count n the number of integration products
21961
      SELECT COUNT (rc.pv_id)
21962
        INTO ntruerecordcount
21963
        FROM release_content rc
21964
       WHERE rc.rtag_id = rtagid;
21965
 
21966
      OPEN recordset FOR
21967
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
21968
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21969
                  pv.pkg_version, pv.dlocked, pv.pv_description
21970
             FROM release_content rel,
21971
                  PACKAGES pkg,
21972
                  package_versions pv,
21973
                  views vi
21974
            WHERE pv.pkg_id = pkg.pkg_id
21975
              AND rel.pv_id = pv.pv_id
21976
              AND rel.base_view_id = vi.view_id
21977
              AND pv.is_deployable = 'Y'
21978
              AND rtag_id = rtagid
21979
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
21980
                                              FROM deployment_manager.os_contents)
21981
              AND rel.product_state IS NULL
21982
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
21983
   END;
21984
 
21985
/*-------------------------------------------------------------------------------------------------------*/
21986
   PROCEDURE get_integration_items (
21987
      rtagid             IN       NUMBER,
21988
      ntruerecordcount   OUT      NUMBER,
21989
      recordset          OUT      typecur
21990
   )
21991
   IS
21992
   BEGIN
21993
      -- Get true record count n the number of integration products
21994
      SELECT COUNT (rc.pv_id)
21995
        INTO ntruerecordcount
21996
        FROM release_content rc
21997
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
21998
 
21999
      OPEN recordset FOR
22000
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22001
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22002
                  pv.pkg_version, pv.dlocked, pv.pv_description
22003
             FROM release_content rel,
22004
                  PACKAGES pkg,
22005
                  package_versions pv,
22006
                  views vi
22007
            WHERE pv.pkg_id = pkg.pkg_id
22008
              AND rel.pv_id = pv.pv_id
22009
              AND rel.base_view_id = vi.view_id
22010
              AND pv.is_deployable = 'Y'
22011
              AND rtag_id = rtagid
22012
              AND rel.product_state IN (1, 5)
22013
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22014
   END;
22015
 
22016
/*-------------------------------------------------------------------------------------------------------*/
22017
   PROCEDURE get_test_items (
22018
      rtagid             IN       NUMBER,
22019
      ntruerecordcount   OUT      NUMBER,
22020
      recordset          OUT      typecur
22021
   )
22022
   IS
22023
   BEGIN
22024
      -- Get true record count n the number of test products
22025
      SELECT COUNT (rc.pv_id)
22026
        INTO ntruerecordcount
22027
        FROM release_content rc
22028
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
22029
 
22030
      OPEN recordset FOR
22031
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22032
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22033
                  pv.pkg_version, pv.dlocked, pv.pv_description
22034
             FROM release_content rel,
22035
                  PACKAGES pkg,
22036
                  package_versions pv,
22037
                  views vi
22038
            WHERE pv.pkg_id = pkg.pkg_id
22039
              AND rel.pv_id = pv.pv_id
22040
              AND rel.base_view_id = vi.view_id
22041
              AND pv.is_deployable = 'Y'
22042
              AND rtag_id = rtagid
22043
              AND rel.product_state = 2
22044
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22045
   END;
22046
 
22047
/*-------------------------------------------------------------------------------------------------------*/
22048
   PROCEDURE get_deploy_items (
22049
      rtagid             IN       NUMBER,
22050
      ntruerecordcount   OUT      NUMBER,
22051
      recordset          OUT      typecur
22052
   )
22053
   IS
22054
   BEGIN
22055
      -- Get true record count n the number of deploy products
22056
      SELECT COUNT (rc.pv_id)
22057
        INTO ntruerecordcount
22058
        FROM release_content rc
22059
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
22060
 
22061
      OPEN recordset FOR
22062
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22063
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22064
                  pv.pkg_version, pv.dlocked, pv.pv_description
22065
             FROM release_content rel,
22066
                  PACKAGES pkg,
22067
                  package_versions pv,
22068
                  views vi
22069
            WHERE pv.pkg_id = pkg.pkg_id
22070
              AND rel.pv_id = pv.pv_id
22071
              AND rel.base_view_id = vi.view_id
22072
              AND pv.is_deployable = 'Y'
22073
              AND rtag_id = rtagid
22074
              AND rel.product_state IN (3, 5)
22075
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
22076
                                              FROM deployment_manager.os_contents)
22077
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22078
   END;
22079
 
22080
/*-------------------------------------------------------------------------------------------------------*/
22081
   PROCEDURE get_reject_items (
22082
      rtagid             IN       NUMBER,
22083
      ntruerecordcount   OUT      NUMBER,
22084
      recordset          OUT      typecur
22085
   )
22086
   IS
22087
   BEGIN
22088
      -- Get true record count n the number of reject products
22089
      SELECT COUNT (rc.pv_id)
22090
        INTO ntruerecordcount
22091
        FROM release_content rc
22092
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
22093
 
22094
      OPEN recordset FOR
22095
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22096
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22097
                  pv.pkg_version, pv.dlocked, pv.pv_description
22098
             FROM release_content rel,
22099
                  PACKAGES pkg,
22100
                  package_versions pv,
22101
                  views vi
22102
            WHERE pv.pkg_id = pkg.pkg_id
22103
              AND rel.pv_id = pv.pv_id
22104
              AND rel.base_view_id = vi.view_id
22105
              AND pv.is_deployable = 'Y'
22106
              AND rtag_id = rtagid
22107
              AND rel.product_state = 4
22108
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22109
   END;
22110
/*-------------------------------------------------------------------------------------------------------*/
22111
END pk_environment_test;
22112
/
22113
 
57 mhunt 22114
CREATE OR REPLACE PACKAGE BODY                   "PK_LICENCING" IS
22115
 
22116
/*
22117
------------------------------
22118
||  Last Modified:  G.Huddy
22119
||  Modified Date:  19/Aug/2008
22120
||  Body Version:   1.0
22121
------------------------------
22122
*/
22123
 
22124
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
22125
   BEGIN
22126
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
22127
         -- Add entry to licencing table
22128
         INSERT INTO licencing (pv_id, licence)
22129
         VALUES (PvId, licenceId);
22130
 
22131
         -- log action
22132
         -- TODO
22133
      END IF;
22134
 
22135
   END;
22136
 
22137
/*-------------------------------------------------------------------------------------------------------*/
22138
 
22139
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
22140
   BEGIN
22141
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
22142
         -- Delete entry from licencing table
22143
         DELETE FROM licencing
22144
         WHERE pv_id = PvId
22145
         AND licence = licenceId;
22146
 
22147
         -- log action
22148
         -- TODO
22149
      END IF;
22150
   END;
22151
 
22152
/*-------------------------------------------------------------------------------------------------------*/
22153
 
22154
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
22155
 
22156
      CURSOR licencing_cur
22157
      IS
22158
         SELECT *
22159
         FROM licencing
22160
         WHERE pv_id = fromPvId;
22161
 
22162
      licencing_rec licencing_cur%ROWTYPE;
22163
 
22164
   BEGIN
22165
      -- For each licence association that the Last PV_ID had, create a similar
22166
      -- arrangement for the new PV_ID
22167
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
22168
      -- does not have, are retained. The assumption is that the user has made those and so we do not
22169
      -- have any right to destroy them without asking them.
22170
      OPEN licencing_cur;
22171
 
22172
      FETCH licencing_cur
22173
      INTO licencing_rec;
22174
 
22175
      WHILE licencing_cur%FOUND
22176
      LOOP
22177
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
22178
 
22179
         FETCH licencing_cur
22180
         INTO licencing_rec;
22181
      END LOOP;
22182
   END;
22183
 
22184
/*-------------------------------------------------------------------------------------------------------*/
22185
 
22186
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
22187
      found NUMBER;
22188
   BEGIN
22189
 
22190
      SELECT COUNT(*) INTO found
22191
      FROM licencing
22192
      WHERE pv_id = PvId
22193
      AND licence = LicenceId;
22194
 
22195
      RETURN found;
22196
   END;
22197
 
22198
/*-------------------------------------------------------------------------------------------------------*/
22199
 
22200
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
22201
 
22202
      CURSOR licencing_cur
22203
      IS
22204
         SELECT *
22205
         FROM licencing
22206
         WHERE pv_id = PvId;
22207
 
22208
      licencing_rec licencing_cur%ROWTYPE;
22209
   BEGIN
22210
      -- For each licence association that the PV_ID had, remove it
22211
      OPEN licencing_cur;
22212
 
22213
      FETCH licencing_cur
22214
      INTO licencing_rec;
22215
 
22216
      WHILE licencing_cur%FOUND
22217
      LOOP
22218
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
22219
 
22220
         FETCH licencing_cur
22221
         INTO licencing_rec;
22222
      END LOOP;
22223
   END;
22224
 
22225
/*-------------------------------------------------------------------------------------------------------*/
22226
END PK_LICENCING;
22227
/
22228