Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
51 mhunt 1
CREATE OR REPLACE TYPE TDICTIONARY;
2
/
3
 
4
CREATE TABLE PACKAGE_BUILD_ENV
5
(
6
  PV_ID NUMBER NOT NULL,
7
  BE_ID NUMBER NOT NULL,
8
  BUILD_TYPE NUMBER
9
)
10
  TABLESPACE "USERS"
11
  LOGGING 
12
  PCTFREE 10
13
  PCTUSED 40
14
  INITRANS 1
15
  MAXTRANS 255
16
  STORAGE
17
  (
18
    INITIAL 128K
19
    MINEXTENTS 1
20
    MAXEXTENTS 2147483645
21
    FREELISTS 1
22
    FREELIST GROUPS 1
23
    BUFFER_POOL DEFAULT
24
  )
25
;
26
 
27
CREATE TABLE NOTIFICATION_HISTORY
28
(
29
  RTAG_ID NUMBER NOT NULL,
30
  PV_ID NUMBER NOT NULL,
31
  USER_ID NUMBER NOT NULL,
32
  DATE_TIME_STAMP DATE NOT NULL
33
, CONSTRAINT PK_NOTIFICATION_HISTORY PRIMARY KEY
34
  (
35
    RTAG_ID,
36
    PV_ID,
37
    USER_ID
38
  )
39
  ENABLE
40
)
41
  TABLESPACE "USERS"
42
  LOGGING 
43
  PCTFREE 10
44
  PCTUSED 40
45
  INITRANS 1
46
  MAXTRANS 255
47
  STORAGE
48
  (
49
    INITIAL 128K
50
    MINEXTENTS 1
51
    MAXEXTENTS 2147483645
52
    FREELISTS 1
53
    FREELIST GROUPS 1
54
    BUFFER_POOL DEFAULT
55
  )
56
;
57
 
58
CREATE TABLE TEMP_ENV_STATES
59
(
60
  SESSION_NUM NUMBER NOT NULL,
61
  LEVEL_NUM NUMBER NOT NULL,
62
  PV_ID NUMBER NOT NULL,
63
  PKG_ID NUMBER NOT NULL,
64
  V_EXT VARCHAR2(50 BYTE),
65
  TES_STATE NUMBER NOT NULL
66
)
67
  TABLESPACE "USERS"
68
  LOGGING 
69
  PCTFREE 10
70
  PCTUSED 40
71
  INITRANS 1
72
  MAXTRANS 255
73
  STORAGE
74
  (
75
    INITIAL 128K
76
    MINEXTENTS 1
77
    MAXEXTENTS 2147483645
78
    FREELISTS 1
79
    FREELIST GROUPS 1
80
    BUFFER_POOL DEFAULT
81
  )
82
;
83
 
84
CREATE TABLE TEMP_TREE_BROWSE
85
(
86
  SESSION_NUM NUMBER,
87
  LEVEL_NUM NUMBER,
88
  PV_ID NUMBER,
89
  PKG_ID NUMBER,
90
  V_EXT VARCHAR2(50 BYTE),
91
  DIRECTION NUMBER
92
)
93
  TABLESPACE "USERS"
94
  LOGGING 
95
  PCTFREE 10
96
  PCTUSED 40
97
  INITRANS 1
98
  MAXTRANS 255
99
  STORAGE
100
  (
101
    INITIAL 64K
102
    MINEXTENTS 1
103
    MAXEXTENTS 2147483645
104
    FREELISTS 1
105
    FREELIST GROUPS 1
106
    BUFFER_POOL DEFAULT
107
  )
108
;
109
 
110
CREATE TABLE IGNORE_WARNINGS
111
(
112
  RTAG_ID NUMBER NOT NULL,
113
  PV_ID NUMBER NOT NULL,
114
  DPV_ID NUMBER NOT NULL,
115
  IS_PATCH_IGNORE CHAR(1 BYTE)
116
)
117
  TABLESPACE "USERS"
118
  LOGGING 
119
  PCTFREE 10
120
  PCTUSED 40
121
  INITRANS 1
122
  MAXTRANS 255
123
  STORAGE
124
  (
125
    INITIAL 128K
126
    MINEXTENTS 1
127
    MAXEXTENTS 2147483645
128
    FREELISTS 1
129
    FREELIST GROUPS 1
130
    BUFFER_POOL DEFAULT
131
  )
132
;
133
 
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
)
266
  TABLESPACE "SYSTEM"
267
  LOGGING 
268
  PCTFREE 10
269
  PCTUSED 40
270
  INITRANS 1
271
  MAXTRANS 255
272
  STORAGE
273
  (
274
    INITIAL 64K
275
    NEXT 64K
276
    MINEXTENTS 1
277
    MAXEXTENTS 2147483645
278
    PCTINCREASE 0
279
    FREELISTS 1
280
    FREELIST GROUPS 1
281
    BUFFER_POOL DEFAULT
282
  )
283
;
284
 
285
CREATE TABLE BUILD_STANDARDS_ADDENDUM
286
(
287
  BSA_ID NUMBER NOT NULL,
288
  BSA_NAME VARCHAR2(4000 BYTE) NOT NULL,
289
  BS_ID NUMBER NOT NULL
290
, CONSTRAINT BUILD_STANDARDS_ADDENDUM_PK PRIMARY KEY
291
  (
292
    BSA_ID
293
  )
294
  ENABLE
295
)
296
  TABLESPACE "USERS"
297
  LOGGING 
298
  PCTFREE 10
299
  PCTUSED 40
300
  INITRANS 1
301
  MAXTRANS 255
302
  STORAGE
303
  (
304
    INITIAL 64K
305
    MINEXTENTS 1
306
    MAXEXTENTS 2147483645
307
    FREELISTS 1
308
    FREELIST GROUPS 1
309
    BUFFER_POOL DEFAULT
310
  )
311
;
312
 
313
CREATE TABLE UNIT_TESTS
314
(
315
  TEST_ID NUMBER NOT NULL,
316
  PV_ID NUMBER NOT NULL,
317
  TEST_TYPES_FK NUMBER NOT NULL,
318
  TEST_SUMMARY VARCHAR2(4000 BYTE),
319
  COMPLETION_DATE DATE,
320
  COMPLETED_BY NUMBER,
321
  RESULTS_URL VARCHAR2(2000 BYTE),
322
  RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE),
323
  TEST_ACCEPTED CHAR(1 BYTE),
324
  ACCEPTANCE_DATE DATE,
325
  ACCEPTED_BY NUMBER,
326
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
327
  NUMOF_TEST VARCHAR2(50 BYTE)
328
)
329
  TABLESPACE "USERS"
330
  LOGGING 
331
  PCTFREE 10
332
  PCTUSED 40
333
  INITRANS 1
334
  MAXTRANS 255
335
  STORAGE
336
  (
337
    INITIAL 128K
338
    MINEXTENTS 1
339
    MAXEXTENTS 2147483645
340
    FREELISTS 1
341
    FREELIST GROUPS 1
342
    BUFFER_POOL DEFAULT
343
  )
344
;
345
 
346
CREATE TABLE BUILD_ENVIRONMENTS
347
(
348
  BE_ID NUMBER NOT NULL,
349
  BE_NAME VARCHAR2(255 BYTE) NOT NULL
350
, CONSTRAINT PK_BUILD_ENVIRONMENTS PRIMARY KEY
351
  (
352
    BE_ID
353
  )
354
  ENABLE
355
)
356
  TABLESPACE "USERS"
357
  LOGGING 
358
  PCTFREE 10
359
  PCTUSED 40
360
  INITRANS 1
361
  MAXTRANS 255
362
  STORAGE
363
  (
364
    INITIAL 128K
365
    MINEXTENTS 1
366
    MAXEXTENTS 2147483645
367
    FREELISTS 1
368
    FREELIST GROUPS 1
369
    BUFFER_POOL DEFAULT
370
  )
371
;
372
 
57 mhunt 373
CREATE TABLE LICENCES
374
(
375
  LICENCE NUMBER NOT NULL,
376
  NAME VARCHAR2(50 BYTE) NOT NULL
377
, CONSTRAINT PK_LICENCES PRIMARY KEY
378
  (
379
    LICENCE
380
  )
381
  ENABLE
382
)
383
  TABLESPACE "USERS"
384
  LOGGING 
385
  PCTFREE 10
386
  PCTUSED 40
387
  INITRANS 1
388
  MAXTRANS 255
389
  STORAGE
390
  (
391
    INITIAL 64K
392
    MINEXTENTS 1
393
    MAXEXTENTS 2147483645
394
    FREELISTS 1
395
    FREELIST GROUPS 1
396
    BUFFER_POOL DEFAULT
397
  )
398
;
399
 
51 mhunt 400
CREATE TABLE RELEASE_COMPONENTS
401
(
402
  PV_ID NUMBER NOT NULL,
403
  FILE_NAME VARCHAR2(255 BYTE),
404
  FILE_PATH VARCHAR2(2000 BYTE),
405
  BYTE_SIZE NUMBER,
406
  CRC_CKSUM VARCHAR2(50 BYTE),
407
  CRC_MODCRC VARCHAR2(50 BYTE)
408
)
409
  TABLESPACE "USERS"
410
  LOGGING 
411
  PCTFREE 10
412
  PCTUSED 40
413
  INITRANS 1
414
  MAXTRANS 255
415
  STORAGE
416
  (
417
    INITIAL 128K
418
    MINEXTENTS 1
419
    MAXEXTENTS 2147483645
420
    FREELISTS 1
421
    FREELIST GROUPS 1
422
    BUFFER_POOL DEFAULT
423
  )
424
;
425
 
426
CREATE TABLE RIPPLE_FIELD_STATES
427
(
428
  STATE_ID NUMBER NOT NULL,
429
  STATE_ACRONYM CHAR(1 BYTE),
430
  STATE_NAME VARCHAR2(50 BYTE)
431
)
432
  TABLESPACE "USERS"
433
  LOGGING 
434
  PCTFREE 10
435
  PCTUSED 40
436
  INITRANS 1
437
  MAXTRANS 255
438
  STORAGE
439
  (
440
    INITIAL 64K
441
    MINEXTENTS 1
442
    MAXEXTENTS 2147483645
443
    FREELISTS 1
444
    FREELIST GROUPS 1
445
    BUFFER_POOL DEFAULT
446
  )
447
;
448
 
449
CREATE TABLE BUILD_ORDER
450
(
451
  RTAG_ID NUMBER NOT NULL,
452
  STEP_NUM NUMBER NOT NULL,
453
  PV_ID NUMBER NOT NULL,
454
  UNRESOLVED CHAR(1 BYTE)
455
)
456
  TABLESPACE "USERS"
457
  LOGGING 
458
  PCTFREE 10
459
  PCTUSED 40
460
  INITRANS 1
461
  MAXTRANS 255
462
  STORAGE
463
  (
464
    INITIAL 64K
465
    MINEXTENTS 1
466
    MAXEXTENTS 2147483645
467
    FREELISTS 1
468
    FREELIST GROUPS 1
469
    BUFFER_POOL DEFAULT
470
  )
471
;
472
 
473
CREATE TABLE PLANNED
474
(
475
  RTAG_ID NUMBER NOT NULL,
476
  PV_ID NUMBER NOT NULL,
53 mhunt 477
  VIEW_ID NUMBER NOT NULL,
478
  OPERATION CHAR(1 BYTE)
51 mhunt 479
)
480
  TABLESPACE "USERS"
481
  LOGGING 
482
  PCTFREE 10
483
  PCTUSED 40
484
  INITRANS 1
485
  MAXTRANS 255
486
  STORAGE
487
  (
488
    INITIAL 64K
489
    MINEXTENTS 1
490
    MAXEXTENTS 2147483645
491
    FREELISTS 1
492
    FREELIST GROUPS 1
493
    BUFFER_POOL DEFAULT
494
  )
495
;
496
 
497
CREATE TABLE PROJECT_ACTION_LOG
498
(
499
  USER_ID NUMBER NOT NULL,
500
  ACTION_DATETIME DATE NOT NULL,
501
  PROJ_ID NUMBER NOT NULL,
502
  DESCRIPTION VARCHAR2(4000 BYTE),
503
  ACTTYPE_ID NUMBER NOT NULL,
504
  RTAG_ID NUMBER
505
)
506
  TABLESPACE "USERS"
507
  LOGGING 
508
  PCTFREE 10
509
  PCTUSED 40
510
  INITRANS 1
511
  MAXTRANS 255
512
  STORAGE
513
  (
514
    INITIAL 64K
515
    MINEXTENTS 1
516
    MAXEXTENTS 2147483645
517
    FREELISTS 1
518
    FREELIST GROUPS 1
519
    BUFFER_POOL DEFAULT
520
  )
521
;
522
 
523
CREATE TABLE PACKAGE_METRICS
524
(
525
  PV_ID NUMBER NOT NULL,
526
  BRANCHES NUMBER,
527
  BRANCH_LIST VARCHAR2(4000 BYTE),
528
  CODE_FILES NUMBER,
529
  IGNORED_FILES NUMBER,
530
  DIRECTORIES NUMBER,
531
  DIRECTORY_DEPTH NUMBER,
532
  TOTAL_FILES NUMBER,
533
  MAKEFILES NUMBER,
534
  BLANK_LINES NUMBER,
535
  CODE_LINES NUMBER,
536
  COMMENT_LINES NUMBER,
537
  CREATED_STAMP DATE
538
)
539
  TABLESPACE "USERS"
540
  LOGGING 
541
  PCTFREE 10
542
  PCTUSED 40
543
  INITRANS 1
544
  MAXTRANS 255
545
  STORAGE
546
  (
547
    INITIAL 64K
548
    MINEXTENTS 1
549
    MAXEXTENTS 2147483645
550
    FREELISTS 1
551
    FREELIST GROUPS 1
552
    BUFFER_POOL DEFAULT
553
  )
554
;
555
 
556
CREATE TABLE ARCHIVE_DATA
557
(
558
  RTAG_ID NUMBER(*, 0) NOT NULL,
559
  PV_ID NUMBER(*, 0) NOT NULL
560
)
561
  TABLESPACE "USERS"
562
  LOGGING 
563
  PCTFREE 10
564
  PCTUSED 40
565
  INITRANS 1
566
  MAXTRANS 255
567
  STORAGE
568
  (
569
    INITIAL 64K
570
    MINEXTENTS 1
571
    MAXEXTENTS 2147483645
572
    FREELISTS 1
573
    FREELIST GROUPS 1
574
    BUFFER_POOL DEFAULT
575
  )
576
;
577
 
578
CREATE TABLE VIEW_SETTINGS
579
(
580
  USER_ID NUMBER NOT NULL,
581
  VIEW_ID NUMBER NOT NULL
582
)
583
  TABLESPACE "SYSTEM"
584
  LOGGING 
585
  PCTFREE 10
586
  PCTUSED 40
587
  INITRANS 1
588
  MAXTRANS 255
589
  STORAGE
590
  (
591
    INITIAL 64K
592
    NEXT 64K
593
    MINEXTENTS 1
594
    MAXEXTENTS 2147483645
595
    PCTINCREASE 0
596
    FREELISTS 1
597
    FREELIST GROUPS 1
598
    BUFFER_POOL DEFAULT
599
  )
600
;
601
 
602
CREATE TABLE ACTION_TYPE
603
(
604
  ACTTYPE_ID NUMBER NOT NULL,
605
  NAME VARCHAR2(255 BYTE) NOT NULL,
606
  DESCRIPTION VARCHAR2(4000 BYTE)
607
, CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY
608
  (
609
    ACTTYPE_ID
610
  )
611
  ENABLE
612
)
613
  TABLESPACE "USERS"
614
  LOGGING 
615
  PCTFREE 10
616
  PCTUSED 40
617
  INITRANS 1
618
  MAXTRANS 255
619
  STORAGE
620
  (
621
    INITIAL 128K
622
    MINEXTENTS 1
623
    MAXEXTENTS 2147483645
624
    FREELISTS 1
625
    FREELIST GROUPS 1
626
    BUFFER_POOL DEFAULT
627
  )
628
;
629
 
630
CREATE TABLE RUN_LEVEL_SCHEDULE
631
(
632
  SCHEDULED_ID NUMBER NOT NULL,
633
  SCHEDULED_PAUSE DATE,
634
  SCHEDULED_RESUME DATE,
635
  REPEAT CHAR(1 BYTE),
636
  INDEFINITE_PAUSE CHAR(1 BYTE)
637
, PRIMARY KEY
638
  (
639
    SCHEDULED_ID
640
  )
641
  ENABLE
642
)
643
  TABLESPACE "USERS"
644
  LOGGING 
645
  PCTFREE 10
646
  PCTUSED 40
647
  INITRANS 1
648
  MAXTRANS 255
649
  STORAGE
650
  (
651
    INITIAL 64K
652
    MINEXTENTS 1
653
    MAXEXTENTS 2147483645
654
    FREELISTS 1
655
    FREELIST GROUPS 1
656
    BUFFER_POOL DEFAULT
657
  )
658
;
659
 
660
CREATE TABLE VTREES
661
(
662
  VTREE_ID NUMBER NOT NULL,
663
  PROJ_ID NUMBER NOT NULL,
664
  VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,
665
  HIDE CHAR(1 BYTE) NOT NULL
666
, CONSTRAINT PK_VTREES PRIMARY KEY
667
  (
668
    VTREE_ID
669
  )
670
  ENABLE
671
)
672
  TABLESPACE "SYSTEM"
673
  LOGGING 
674
  PCTFREE 10
675
  PCTUSED 40
676
  INITRANS 1
677
  MAXTRANS 255
678
  STORAGE
679
  (
680
    INITIAL 64K
681
    NEXT 64K
682
    MINEXTENTS 1
683
    MAXEXTENTS 2147483645
684
    PCTINCREASE 0
685
    FREELISTS 1
686
    FREELIST GROUPS 1
687
    BUFFER_POOL DEFAULT
688
  )
689
;
690
 
691
CREATE TABLE BUILD_STANDARDS
692
(
693
  BS_ID NUMBER NOT NULL,
694
  BS_NAME VARCHAR2(20 BYTE) NOT NULL
695
, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY
696
  (
697
    BS_ID
698
  )
699
  ENABLE
700
)
701
  TABLESPACE "USERS"
702
  LOGGING 
703
  PCTFREE 10
704
  PCTUSED 40
705
  INITRANS 1
706
  MAXTRANS 255
707
  STORAGE
708
  (
709
    INITIAL 64K
710
    MINEXTENTS 1
711
    MAXEXTENTS 2147483645
712
    FREELISTS 1
713
    FREELIST GROUPS 1
714
    BUFFER_POOL DEFAULT
715
  )
716
;
717
 
718
CREATE TABLE TEMP_SASH
719
(
720
  RTAG_ID NUMBER,
721
  PROJ_ID NUMBER
722
)
723
  TABLESPACE "USERS"
724
  LOGGING 
725
  PCTFREE 10
726
  PCTUSED 40
727
  INITRANS 1
728
  MAXTRANS 255
729
  STORAGE
730
  (
731
    INITIAL 64K
732
    MINEXTENTS 1
733
    MAXEXTENTS 2147483645
734
    FREELISTS 1
735
    FREELIST GROUPS 1
736
    BUFFER_POOL DEFAULT
737
  )
738
;
739
 
740
CREATE TABLE BUILD_MACHINES
741
(
742
  BM_ID NUMBER NOT NULL,
743
  BM_NAME VARCHAR2(20 BYTE) NOT NULL
744
, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY
745
  (
746
    BM_ID
747
  )
748
  ENABLE
749
)
750
  TABLESPACE "USERS"
751
  LOGGING 
752
  PCTFREE 10
753
  PCTUSED 40
754
  INITRANS 1
755
  MAXTRANS 255
756
  STORAGE
757
  (
758
    INITIAL 64K
759
    MINEXTENTS 1
760
    MAXEXTENTS 2147483645
761
    FREELISTS 1
762
    FREELIST GROUPS 1
763
    BUFFER_POOL DEFAULT
764
  )
765
;
766
 
767
CREATE TABLE RELEASE_LINKS
768
(
769
  RTAG_ID NUMBER NOT NULL,
770
  REF_RTAG_ID NUMBER NOT NULL
771
)
772
  TABLESPACE "USERS"
773
  LOGGING 
774
  PCTFREE 10
775
  PCTUSED 40
776
  INITRANS 1
777
  MAXTRANS 255
778
  STORAGE
779
  (
780
    INITIAL 64K
781
    MINEXTENTS 1
782
    MAXEXTENTS 2147483645
783
    FREELISTS 1
784
    FREELIST GROUPS 1
785
    BUFFER_POOL DEFAULT
786
  )
787
;
788
 
789
CREATE TABLE BUILD_ENV_DOCUMENTS
790
(
791
  BE_ID NUMBER NOT NULL,
792
  DOC_NUM VARCHAR2(255 BYTE) NOT NULL
793
)
794
  TABLESPACE "USERS"
795
  LOGGING 
796
  PCTFREE 10
797
  PCTUSED 40
798
  INITRANS 1
799
  MAXTRANS 255
800
  STORAGE
801
  (
802
    INITIAL 128K
803
    MINEXTENTS 1
804
    MAXEXTENTS 2147483645
805
    FREELISTS 1
806
    FREELIST GROUPS 1
807
    BUFFER_POOL DEFAULT
808
  )
809
;
810
 
811
CREATE TABLE PRODUCT_STATES
812
(
813
  STATE_ID NUMBER NOT NULL,
814
  STATE VARCHAR2(4000 BYTE) NOT NULL
815
, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY
816
  (
817
    STATE_ID
818
  )
819
  ENABLE
820
)
821
  TABLESPACE "USERS"
822
  LOGGING 
823
  PCTFREE 10
824
  PCTUSED 40
825
  INITRANS 1
826
  MAXTRANS 255
827
  STORAGE
828
  (
829
    INITIAL 64K
830
    MINEXTENTS 1
831
    MAXEXTENTS 2147483645
832
    FREELISTS 1
833
    FREELIST GROUPS 1
834
    BUFFER_POOL DEFAULT
835
  )
836
;
837
 
838
CREATE TABLE WORLDS
839
(
840
  WORLD_ID NUMBER NOT NULL,
841
  WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,
842
  WORLD_DESC VARCHAR2(255 BYTE)
843
, CONSTRAINT PK_WORLDS PRIMARY KEY
844
  (
845
    WORLD_ID
846
  )
847
  ENABLE
848
)
849
  TABLESPACE "USERS"
850
  LOGGING 
851
  PCTFREE 10
852
  PCTUSED 40
853
  INITRANS 1
854
  MAXTRANS 255
855
  STORAGE
856
  (
857
    INITIAL 128K
858
    MINEXTENTS 1
859
    MAXEXTENTS 2147483645
860
    FREELISTS 1
861
    FREELIST GROUPS 1
862
    BUFFER_POOL DEFAULT
863
  )
864
;
865
 
866
CREATE TABLE ACTION_LOG
867
(
868
  USER_ID NUMBER NOT NULL,
869
  ACTION_DATETIME DATE NOT NULL,
870
  PV_ID NUMBER NOT NULL,
871
  DESCRIPTION VARCHAR2(4000 BYTE),
872
  ACTTYPE_ID NUMBER NOT NULL
873
)
874
  TABLESPACE "USERS"
875
  LOGGING 
876
  PCTFREE 10
877
  PCTUSED 40
878
  INITRANS 1
879
  MAXTRANS 255
880
  STORAGE
881
  (
882
    INITIAL 128K
883
    MINEXTENTS 1
884
    MAXEXTENTS 2147483645
885
    FREELISTS 1
886
    FREELIST GROUPS 1
887
    BUFFER_POOL DEFAULT
888
  )
889
;
890
 
891
CREATE TABLE PROJECT_EXTENTIONS
892
(
893
  PROJ_ID NUMBER NOT NULL,
894
  EXT_NAME VARCHAR2(10 BYTE) NOT NULL
895
)
896
  TABLESPACE "SYSTEM"
897
  LOGGING 
898
  PCTFREE 10
899
  PCTUSED 40
900
  INITRANS 1
901
  MAXTRANS 255
902
  STORAGE
903
  (
904
    INITIAL 64K
905
    NEXT 64K
906
    MINEXTENTS 1
907
    MAXEXTENTS 2147483645
908
    PCTINCREASE 0
909
    FREELISTS 1
910
    FREELIST GROUPS 1
911
    BUFFER_POOL DEFAULT
912
  )
913
;
914
 
915
CREATE TABLE ADDITIONAL_NOTES
916
(
917
  NOTE_ID NUMBER NOT NULL,
918
  PV_ID NUMBER NOT NULL,
919
  NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,
920
  NOTE_BODY VARCHAR2(4000 BYTE),
921
  MOD_DATE DATE NOT NULL,
922
  MOD_USER NUMBER NOT NULL
923
)
924
  TABLESPACE "USERS"
925
  LOGGING 
926
  PCTFREE 10
927
  PCTUSED 40
928
  INITRANS 1
929
  MAXTRANS 255
930
  STORAGE
931
  (
932
    INITIAL 128K
933
    MINEXTENTS 1
934
    MAXEXTENTS 2147483645
935
    FREELISTS 1
936
    FREELIST GROUPS 1
937
    BUFFER_POOL DEFAULT
938
  )
939
;
940
 
941
CREATE TABLE MESSAGE_BOARD
942
(
943
  MSG_ID NUMBER NOT NULL,
944
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
945
  SUBMITION_DATE DATE NOT NULL,
946
  EXPIRY_DATE DATE,
947
  DUE_DATE DATE
948
, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY
949
  (
950
    MSG_ID
951
  )
952
  ENABLE
953
)
954
  TABLESPACE "SYSTEM"
955
  LOGGING 
956
  PCTFREE 10
957
  PCTUSED 40
958
  INITRANS 1
959
  MAXTRANS 255
960
  STORAGE
961
  (
962
    INITIAL 64K
963
    NEXT 64K
964
    MINEXTENTS 1
965
    MAXEXTENTS 2147483645
966
    PCTINCREASE 0
967
    FREELISTS 1
968
    FREELIST GROUPS 1
969
    BUFFER_POOL DEFAULT
970
  )
971
;
972
 
973
CREATE TABLE VTREES_WORLD
974
(
975
  WORLD_ID NUMBER NOT NULL,
976
  VTREE_ID NUMBER NOT NULL
977
)
978
  TABLESPACE "USERS"
979
  LOGGING 
980
  PCTFREE 10
981
  PCTUSED 40
982
  INITRANS 1
983
  MAXTRANS 255
984
  STORAGE
985
  (
986
    INITIAL 128K
987
    MINEXTENTS 1
988
    MAXEXTENTS 2147483645
989
    FREELISTS 1
990
    FREELIST GROUPS 1
991
    BUFFER_POOL DEFAULT
992
  )
993
;
994
 
995
CREATE TABLE CODE_REVIEWS
996
(
997
  PV_ID NUMBER NOT NULL,
998
  DATE_OF_REVIEW DATE,
999
  TIME_SPENT FLOAT(126),
1000
  REVIEW_REASON VARCHAR2(4000 BYTE),
1001
  RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),
1002
  RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),
1003
  RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),
1004
  RTEAM_AUTHOR VARCHAR2(4000 BYTE),
1005
  FILES_REVIEWED VARCHAR2(4000 BYTE),
1006
  REVIEW_RESULTS NUMBER,
1007
  ISSUES_RAISED VARCHAR2(4000 BYTE),
1008
  REVIEW_COMMENTS VARCHAR2(4000 BYTE),
1009
  FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),
1010
  FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),
1011
  RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),
1012
  RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),
1013
  RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),
1014
  RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),
1015
  RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),
1016
  RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),
1017
  RBS_S_EXCEP_HANDING CHAR(1 BYTE),
1018
  RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),
1019
  RBS_S_RESOURCE_MNG CHAR(1 BYTE),
1020
  RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),
1021
  RBS_S_TRANS_COMPLET CHAR(1 BYTE),
1022
  RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),
1023
  RBS_S_THREADSAFETY CHAR(1 BYTE),
1024
  RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),
1025
  RBS_S_RET_VALS CHAR(1 BYTE),
1026
  RBS_C_RET_VALS VARCHAR2(4000 BYTE),
1027
  RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),
1028
  RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),
1029
  RBS_S_SQL_STD CHAR(1 BYTE),
1030
  RBS_C_SQL_STD VARCHAR2(4000 BYTE),
1031
  MNT_S_EXT_REF CHAR(1 BYTE),
1032
  MNT_C_EXT_REF VARCHAR2(4000 BYTE),
1033
  MNT_S_CLASS_SIZE CHAR(1 BYTE),
1034
  MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),
1035
  MNT_S_METHOD_SIZE CHAR(1 BYTE),
1036
  MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),
1037
  MNT_S_APPROP_COMM CHAR(1 BYTE),
1038
  MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),
1039
  MNT_S_IDENT_NAME_STD CHAR(1 BYTE),
1040
  MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),
1041
  MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),
1042
  MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),
1043
  MNT_S_NO_LIT_NUM CHAR(1 BYTE),
1044
  MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),
1045
  MNT_S_NO_DEAD_CODE CHAR(1 BYTE),
1046
  MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),
1047
  DEI_S_STD_DES_PATT CHAR(1 BYTE),
1048
  DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),
1049
  DEI_S_APPROP_ALGOR CHAR(1 BYTE),
1050
  DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),
1051
  DEI_S_APPROP_OBJ CHAR(1 BYTE),
1052
  DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),
1053
  DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),
1054
  DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),
1055
  DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),
1056
  DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),
1057
  DEI_S_APPROP_LOGGING CHAR(1 BYTE),
1058
  DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE)
1059
)
1060
  TABLESPACE "USERS"
1061
  LOGGING 
1062
  PCTFREE 10
1063
  PCTUSED 40
1064
  INITRANS 1
1065
  MAXTRANS 255
1066
  STORAGE
1067
  (
1068
    INITIAL 128K
1069
    MINEXTENTS 1
1070
    MAXEXTENTS 2147483645
1071
    FREELISTS 1
1072
    FREELIST GROUPS 1
1073
    BUFFER_POOL DEFAULT
1074
  )
1075
;
1076
 
1077
CREATE TABLE PLANNED_VERSIONS
1078
(
1079
  PKG_ID NUMBER,
1080
  PKG_VERSION VARCHAR2(50 BYTE)
1081
)
1082
  TABLESPACE "USERS"
1083
  LOGGING 
1084
  PCTFREE 10
1085
  PCTUSED 40
1086
  INITRANS 1
1087
  MAXTRANS 255
1088
  STORAGE
1089
  (
1090
    INITIAL 64K
1091
    MINEXTENTS 1
1092
    MAXEXTENTS 2147483645
1093
    FREELISTS 1
1094
    FREELIST GROUPS 1
1095
    BUFFER_POOL DEFAULT
1096
  )
1097
;
1098
 
1099
CREATE TABLE VALIDATION_RULES
1100
(
1101
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1102
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1103
  IS_NUMERIC CHAR(1 BYTE),
1104
  MIN_NUMERIC_VALUE NUMBER,
1105
  MAX_NUMERIC_VALUE NUMBER,
1106
  IS_DATE CHAR(1 BYTE),
1107
  START_DATE DATE,
1108
  END_DATE DATE,
1109
  MIN_STRING_LENGTH NUMBER,
1110
  MAX_STRING_LENGTH NUMBER,
1111
  REGEXP VARCHAR2(4000 BYTE),
1112
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1113
)
1114
  TABLESPACE "USERS"
1115
  LOGGING 
1116
  PCTFREE 10
1117
  PCTUSED 40
1118
  INITRANS 1
1119
  MAXTRANS 255
1120
  STORAGE
1121
  (
1122
    INITIAL 128K
1123
    MINEXTENTS 1
1124
    MAXEXTENTS 2147483645
1125
    FREELISTS 1
1126
    FREELIST GROUPS 1
1127
    BUFFER_POOL DEFAULT
1128
  )
1129
;
1130
 
1131
CREATE TABLE DO_NOT_RIPPLE
1132
(
1133
  RTAG_ID NUMBER NOT NULL,
55 mhunt 1134
  PV_ID NUMBER NOT NULL,
1135
  ROOT_PV_ID NUMBER,
1136
  ROOT_CAUSE VARCHAR2(50 BYTE),
1137
  ROOT_FILE VARCHAR2(100 BYTE)
51 mhunt 1138
)
1139
  TABLESPACE "USERS"
1140
  LOGGING 
1141
  PCTFREE 10
1142
  PCTUSED 40
1143
  INITRANS 1
1144
  MAXTRANS 255
1145
  STORAGE
1146
  (
1147
    INITIAL 64K
1148
    MINEXTENTS 1
1149
    MAXEXTENTS 2147483645
1150
    FREELISTS 1
1151
    FREELIST GROUPS 1
1152
    BUFFER_POOL DEFAULT
1153
  )
1154
;
1155
 
1156
CREATE TABLE NOTE_MANAGER
1157
(
1158
  NID VARCHAR2(30 BYTE) NOT NULL,
1159
  LAST_USER VARCHAR2(20 BYTE),
1160
  LAST_DATE DATE,
1161
  DESCRIPTION VARCHAR2(4000 BYTE)
1162
, CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY
1163
  (
1164
    NID
1165
  )
1166
  ENABLE
1167
)
1168
  TABLESPACE "USERS"
1169
  LOGGING 
1170
  PCTFREE 10
1171
  PCTUSED 40
1172
  INITRANS 1
1173
  MAXTRANS 255
1174
  STORAGE
1175
  (
1176
    INITIAL 128K
1177
    MINEXTENTS 1
1178
    MAXEXTENTS 2147483645
1179
    FREELISTS 1
1180
    FREELIST GROUPS 1
1181
    BUFFER_POOL DEFAULT
1182
  )
1183
;
1184
 
1185
CREATE TABLE RELEASE_CONTENT
1186
(
1187
  RTAG_ID NUMBER NOT NULL,
1188
  PV_ID NUMBER NOT NULL,
1189
  BASE_VIEW_ID NUMBER NOT NULL,
1190
  INSERT_STAMP DATE NOT NULL,
1191
  INSERTOR_ID NUMBER NOT NULL,
1192
  PKG_STATE NUMBER NOT NULL,
1193
  PKG_ID NUMBER,
1194
  DEPRECATED_STATE NUMBER,
1195
  PRODUCT_STATE NUMBER
1196
)
1197
  TABLESPACE "SYSTEM"
1198
  LOGGING 
1199
  PCTFREE 10
1200
  PCTUSED 40
1201
  INITRANS 1
1202
  MAXTRANS 255
1203
  STORAGE
1204
  (
1205
    INITIAL 64K
1206
    NEXT 64K
1207
    MINEXTENTS 1
1208
    MAXEXTENTS 2147483645
1209
    PCTINCREASE 0
1210
    FREELISTS 1
1211
    FREELIST GROUPS 1
1212
    BUFFER_POOL DEFAULT
1213
  )
1214
;
1215
 
1216
CREATE TABLE PROCESSES
1217
(
1218
  PROC_ID NUMBER NOT NULL,
1219
  PROC_NAME VARCHAR2(255 BYTE) NOT NULL,
1220
  PROC_DESCRIPTION VARCHAR2(255 BYTE),
1221
  RUN_AS VARCHAR2(255 BYTE),
1222
  PKG_OWNER VARCHAR2(4000 BYTE),
1223
  IS_INTERFACE CHAR(1 BYTE)
1224
, CONSTRAINT PROCESSES_PK PRIMARY KEY
1225
  (
1226
    PROC_ID
1227
  )
1228
  ENABLE
1229
)
1230
  TABLESPACE "USERS"
1231
  LOGGING 
1232
  PCTFREE 10
1233
  PCTUSED 40
1234
  INITRANS 1
1235
  MAXTRANS 255
1236
  STORAGE
1237
  (
1238
    INITIAL 128K
1239
    MINEXTENTS 1
1240
    MAXEXTENTS 2147483645
1241
    FREELISTS 1
1242
    FREELIST GROUPS 1
1243
    BUFFER_POOL DEFAULT
1244
  )
1245
;
1246
 
1247
CREATE TABLE RM_PACKAGE_ISSUES
1248
(
1249
  PKG_ID NUMBER,
1250
  PKG_NAME VARCHAR2(50 BYTE),
1251
  PV_ID NUMBER,
1252
  PKG_VERSION VARCHAR2(50 BYTE),
1253
  DPV_ID NUMBER,
1254
  DPKG_NAME VARCHAR2(50 BYTE),
1255
  DPKG_VERSION VARCHAR2(50 BYTE),
1256
  ISS_DB NUMBER,
1257
  ISS_ID NUMBER
1258
)
1259
  TABLESPACE "USERS"
1260
  LOGGING 
1261
  PCTFREE 10
1262
  PCTUSED 40
1263
  INITRANS 1
1264
  MAXTRANS 255
1265
  STORAGE
1266
  (
1267
    INITIAL 64K
1268
    MINEXTENTS 1
1269
    MAXEXTENTS 2147483645
1270
    FREELISTS 1
1271
    FREELIST GROUPS 1
1272
    BUFFER_POOL DEFAULT
1273
  )
1274
;
1275
 
1276
CREATE TABLE PACKAGE_PROCESSES
1277
(
1278
  PV_ID NUMBER NOT NULL,
1279
  PROC_ID NUMBER NOT NULL
1280
)
1281
  TABLESPACE "USERS"
1282
  LOGGING 
1283
  PCTFREE 10
1284
  PCTUSED 40
1285
  INITRANS 1
1286
  MAXTRANS 255
1287
  STORAGE
1288
  (
1289
    INITIAL 64K
1290
    MINEXTENTS 1
1291
    MAXEXTENTS 2147483645
1292
    FREELISTS 1
1293
    FREELIST GROUPS 1
1294
    BUFFER_POOL DEFAULT
1295
  )
1296
;
1297
 
1298
CREATE TABLE ADVISORY_RIPPLE
1299
(
1300
  RTAG_ID NUMBER NOT NULL,
1301
  PV_ID NUMBER NOT NULL
1302
)
1303
  TABLESPACE "USERS"
1304
  LOGGING 
1305
  PCTFREE 10
1306
  PCTUSED 40
1307
  INITRANS 1
1308
  MAXTRANS 255
1309
  STORAGE
1310
  (
1311
    INITIAL 64K
1312
    MINEXTENTS 1
1313
    MAXEXTENTS 2147483645
1314
    FREELISTS 1
1315
    FREELIST GROUPS 1
1316
    BUFFER_POOL DEFAULT
1317
  )
1318
;
1319
 
1320
CREATE TABLE PACKAGE_PATCHES
1321
(
1322
  PV_ID NUMBER NOT NULL,
1323
  PATCH_ID NUMBER NOT NULL,
1324
  INSTALL_ORDER NUMBER NOT NULL,
1325
  PATCH_OBSOLETED_BY NUMBER
1326
)
1327
  TABLESPACE "USERS"
1328
  LOGGING 
1329
  PCTFREE 10
1330
  PCTUSED 40
1331
  INITRANS 1
1332
  MAXTRANS 255
1333
  STORAGE
1334
  (
1335
    INITIAL 128K
1336
    MINEXTENTS 1
1337
    MAXEXTENTS 2147483645
1338
    FREELISTS 1
1339
    FREELIST GROUPS 1
1340
    BUFFER_POOL DEFAULT
1341
  )
1342
;
1343
 
1344
CREATE TABLE PACKAGE_INTEREST
1345
(
1346
  PKG_ID NUMBER NOT NULL,
1347
  PROJ_ID NUMBER NOT NULL,
1348
  USER_ID NUMBER NOT NULL
1349
)
1350
  TABLESPACE "USERS"
1351
  LOGGING 
1352
  PCTFREE 10
1353
  PCTUSED 40
1354
  INITRANS 1
1355
  MAXTRANS 255
1356
  STORAGE
1357
  (
1358
    INITIAL 64K
1359
    MINEXTENTS 1
1360
    MAXEXTENTS 2147483645
1361
    FREELISTS 1
1362
    FREELIST GROUPS 1
1363
    BUFFER_POOL DEFAULT
1364
  )
1365
;
1366
 
1367
CREATE TABLE PLATFORMS
1368
(
1369
  CODE NUMBER NOT NULL,
1370
  NAME VARCHAR2(255 BYTE) NOT NULL
1371
)
1372
  TABLESPACE "USERS"
1373
  LOGGING 
1374
  PCTFREE 10
1375
  PCTUSED 40
1376
  INITRANS 1
1377
  MAXTRANS 255
1378
  STORAGE
1379
  (
1380
    INITIAL 64K
1381
    MINEXTENTS 1
1382
    MAXEXTENTS 2147483645
1383
    FREELISTS 1
1384
    FREELIST GROUPS 1
1385
    BUFFER_POOL DEFAULT
1386
  )
1387
;
1388
 
1389
CREATE TABLE RELEASE_CONFIG
1390
(
1391
  RCON_ID NUMBER NOT NULL,
1392
  RTAG_ID NUMBER NOT NULL,
1393
  GBE_ID NUMBER NOT NULL,
1394
  DAEMON_HOSTNAME VARCHAR2(50 BYTE),
1395
  DAEMON_MODE CHAR(1 CHAR),
1396
  GBE_BUILDFILTER VARCHAR2(255 BYTE)
1397
, PRIMARY KEY
1398
  (
1399
    RCON_ID
1400
  )
1401
  ENABLE
1402
)
1403
  TABLESPACE "USERS"
1404
  LOGGING 
1405
  PCTFREE 10
1406
  PCTUSED 40
1407
  INITRANS 1
1408
  MAXTRANS 255
1409
  STORAGE
1410
  (
1411
    INITIAL 64K
1412
    MINEXTENTS 1
1413
    MAXEXTENTS 2147483645
1414
    FREELISTS 1
1415
    FREELIST GROUPS 1
1416
    BUFFER_POOL DEFAULT
1417
  )
1418
;
1419
 
1420
CREATE TABLE GBE_MACHTYPE
1421
(
1422
  GBE_ID NUMBER NOT NULL,
1423
  GBE_VALUE VARCHAR2(20 BYTE) NOT NULL
1424
, PRIMARY KEY
1425
  (
1426
    GBE_ID
1427
  )
1428
  ENABLE
1429
)
1430
  TABLESPACE "USERS"
1431
  LOGGING 
1432
  PCTFREE 10
1433
  PCTUSED 40
1434
  INITRANS 1
1435
  MAXTRANS 255
1436
  STORAGE
1437
  (
1438
    INITIAL 64K
1439
    MINEXTENTS 1
1440
    MAXEXTENTS 2147483645
1441
    FREELISTS 1
1442
    FREELIST GROUPS 1
1443
    BUFFER_POOL DEFAULT
1444
  )
1445
;
1446
 
1447
CREATE TABLE ARCHIVE_ACTION_LOG
1448
(
1449
  USER_ID NUMBER NOT NULL,
1450
  DATE_TIME_STAMP DATE NOT NULL,
1451
  RTAG_ID NUMBER NOT NULL,
1452
  DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
1453
)
1454
  TABLESPACE "USERS"
1455
  LOGGING 
1456
  PCTFREE 10
1457
  PCTUSED 0
1458
  INITRANS 1
1459
  MAXTRANS 255
1460
  STORAGE
1461
  (
1462
    INITIAL 64K
1463
    MINEXTENTS 1
1464
    MAXEXTENTS 2147483645
1465
    FREELISTS 1
1466
    FREELIST GROUPS 1
1467
    BUFFER_POOL DEFAULT
1468
  )
1469
;
1470
 
1471
CREATE TABLE RELEASE_METRICS
1472
(
1473
  RTAG_ID NUMBER NOT NULL,
1474
  TOTAL_PACKAGES NUMBER,
1475
  AUTOBUILT NUMBER,
1476
  LINES_OF_CODE NUMBER,
1477
  UNIT_TESTED NUMBER,
1478
  AUTOTESTED NUMBER,
1479
  BRANCHES NUMBER,
1480
  LAST_BUILD_TIME DATE
1481
)
1482
  TABLESPACE "USERS"
1483
  LOGGING 
1484
  PCTFREE 10
1485
  PCTUSED 40
1486
  INITRANS 1
1487
  MAXTRANS 255
1488
  STORAGE
1489
  (
1490
    INITIAL 64K
1491
    MINEXTENTS 1
1492
    MAXEXTENTS 2147483645
1493
    FREELISTS 1
1494
    FREELIST GROUPS 1
1495
    BUFFER_POOL DEFAULT
1496
  )
1497
;
1498
 
1499
CREATE TABLE AUTOBUILD_FAILURE
1500
(
1501
  GROUP_EMAIL_ID NUMBER NOT NULL,
1502
  PROJ_ID NUMBER,
1503
  VIEW_ID NUMBER
1504
, PRIMARY KEY
1505
  (
1506
    GROUP_EMAIL_ID
1507
  )
1508
  ENABLE
1509
)
1510
  TABLESPACE "USERS"
1511
  LOGGING 
1512
  PCTFREE 10
1513
  PCTUSED 40
1514
  INITRANS 1
1515
  MAXTRANS 255
1516
  STORAGE
1517
  (
1518
    INITIAL 64K
1519
    MINEXTENTS 1
1520
    MAXEXTENTS 2147483645
1521
    FREELISTS 1
1522
    FREELIST GROUPS 1
1523
    BUFFER_POOL DEFAULT
1524
  )
1525
;
1526
 
1527
CREATE TABLE JIRA_ISSUES
1528
(
1529
  PV_ID NUMBER NOT NULL,
1530
  ISS_KEY VARCHAR2(4000 BYTE),
1531
  DATE_TIME_STAMP DATE
1532
)
1533
  TABLESPACE "SYSTEM"
1534
  LOGGING 
1535
  PCTFREE 10
1536
  PCTUSED 40
1537
  INITRANS 1
1538
  MAXTRANS 255
1539
  STORAGE
1540
  (
1541
    INITIAL 64K
1542
    NEXT 64K
1543
    MINEXTENTS 1
1544
    MAXEXTENTS 2147483645
1545
    PCTINCREASE 0
1546
    FREELISTS 1
1547
    FREELIST GROUPS 1
1548
    BUFFER_POOL DEFAULT
1549
  )
1550
;
1551
 
1552
CREATE TABLE VIEW_DEF
1553
(
1554
  VIEW_ID NUMBER NOT NULL,
1555
  PKG_ID NUMBER NOT NULL
1556
)
1557
  TABLESPACE "SYSTEM"
1558
  LOGGING 
1559
  PCTFREE 10
1560
  PCTUSED 40
1561
  INITRANS 1
1562
  MAXTRANS 255
1563
  STORAGE
1564
  (
1565
    INITIAL 64K
1566
    NEXT 64K
1567
    MINEXTENTS 1
1568
    MAXEXTENTS 2147483645
1569
    PCTINCREASE 0
1570
    FREELISTS 1
1571
    FREELIST GROUPS 1
1572
    BUFFER_POOL DEFAULT
1573
  )
1574
;
1575
 
1576
CREATE TABLE WORK_IN_PROGRESS
1577
(
1578
  RTAG_ID NUMBER NOT NULL,
1579
  PV_ID NUMBER NOT NULL,
1580
  VIEW_ID NUMBER NOT NULL
1581
)
1582
  TABLESPACE "USERS"
1583
  LOGGING 
1584
  PCTFREE 10
1585
  PCTUSED 40
1586
  INITRANS 1
1587
  MAXTRANS 255
1588
  STORAGE
1589
  (
1590
    INITIAL 64K
1591
    MINEXTENTS 1
1592
    MAXEXTENTS 2147483645
1593
    FREELISTS 1
1594
    FREELIST GROUPS 1
1595
    BUFFER_POOL DEFAULT
1596
  )
1597
;
1598
 
1599
CREATE TABLE RUN_LEVEL
1600
(
1601
  RCON_ID NUMBER,
1602
  CURRENT_BUILD_FILES CLOB,
1603
  CURRENT_RUN_LEVEL NUMBER,
1604
  PAUSE NUMBER,
1605
  CURRENT_PKG_ID_BEING_BUILT NUMBER
1606
)
1607
  TABLESPACE "USERS"
1608
  LOGGING 
1609
  PCTFREE 10
1610
  PCTUSED 40
1611
  INITRANS 1
1612
  MAXTRANS 255
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
    LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$
1623
    (
1624
      ENABLE STORAGE IN ROW
1625
      CHUNK 8192
1626
      PCTVERSION 10
1627
      NOCACHE LOGGING
1628
      TABLESPACE USERS
1629
      STORAGE
1630
      (
1631
        INITIAL 64K
1632
        MINEXTENTS 1
1633
        MAXEXTENTS 2147483645
1634
        FREELISTS 1
1635
        FREELIST GROUPS 1
1636
        BUFFER_POOL DEFAULT
1637
      )
1638
    )
1639
;
1640
 
1641
CREATE TABLE TEST_TYPES
1642
(
1643
  TEST_TYPE_ID NUMBER NOT NULL,
1644
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
1645
  DISPLAY_ORDER NUMBER
1646
, CONSTRAINT PK_TEST_TYPES PRIMARY KEY
1647
  (
1648
    TEST_TYPE_ID
1649
  )
1650
  ENABLE
1651
)
1652
  TABLESPACE "USERS"
1653
  LOGGING 
1654
  PCTFREE 10
1655
  PCTUSED 40
1656
  INITRANS 1
1657
  MAXTRANS 255
1658
  STORAGE
1659
  (
1660
    INITIAL 128K
1661
    MINEXTENTS 1
1662
    MAXEXTENTS 2147483645
1663
    FREELISTS 1
1664
    FREELIST GROUPS 1
1665
    BUFFER_POOL DEFAULT
1666
  )
1667
;
1668
 
1669
CREATE TABLE PACKAGE_DEPENDENCIES
1670
(
1671
  PV_ID NUMBER NOT NULL,
1672
  DPV_ID NUMBER NOT NULL,
1673
  PKG_ID NUMBER NOT NULL,
1674
  DPKG_ID NUMBER NOT NULL,
1675
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
1676
  DISPLAY_ORDER NUMBER
1677
)
1678
  TABLESPACE "SYSTEM"
1679
  LOGGING 
1680
  PCTFREE 10
1681
  PCTUSED 40
1682
  INITRANS 1
1683
  MAXTRANS 255
1684
  STORAGE
1685
  (
1686
    INITIAL 320K
1687
    NEXT 64K
1688
    MINEXTENTS 1
1689
    MAXEXTENTS 2147483645
1690
    PCTINCREASE 0
1691
    FREELISTS 1
1692
    FREELIST GROUPS 1
1693
    BUFFER_POOL DEFAULT
1694
  )
1695
;
1696
 
1697
CREATE TABLE PRODUCT_COMPONENTS
1698
(
1699
  PV_ID NUMBER NOT NULL,
1700
  OS_ID NUMBER NOT NULL,
1701
  FILE_PATH VARCHAR2(4000 BYTE),
1702
  FILE_NAME VARCHAR2(4000 BYTE),
1703
  DESTINATION_PATH VARCHAR2(4000 BYTE),
1704
  BYTE_SIZE NUMBER,
1705
  CRC_CKSUM VARCHAR2(2000 BYTE)
1706
)
1707
  TABLESPACE "USERS"
1708
  LOGGING 
1709
  PCTFREE 10
1710
  PCTUSED 40
1711
  INITRANS 1
1712
  MAXTRANS 255
1713
  STORAGE
1714
  (
1715
    INITIAL 64K
1716
    MINEXTENTS 1
1717
    MAXEXTENTS 2147483645
1718
    FREELISTS 1
1719
    FREELIST GROUPS 1
1720
    BUFFER_POOL DEFAULT
1721
  )
1722
;
1723
 
1724
CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES
1725
(
1726
  PKG_ID NUMBER,
1727
  PKG_NAME VARCHAR2(50 BYTE),
1728
  PV_ID NUMBER,
1729
  PKG_VERSION VARCHAR2(50 BYTE),
1730
  DPV_ID NUMBER,
1731
  DPKG_NAME VARCHAR2(50 BYTE),
1732
  DPKG_VERSION VARCHAR2(50 BYTE),
1733
  ISS_DB NUMBER,
1734
  ISS_ID NUMBER
1735
)
1736
ON COMMIT PRESERVE ROWS
1737
;
1738
 
1739
CREATE TABLE PACKAGE_BUILD_INFO
1740
(
1741
  PV_ID NUMBER NOT NULL,
1742
  BM_ID NUMBER NOT NULL,
1743
  BSA_ID NUMBER
1744
)
1745
  TABLESPACE "USERS"
1746
  LOGGING 
1747
  PCTFREE 10
1748
  PCTUSED 40
1749
  INITRANS 1
1750
  MAXTRANS 255
1751
  STORAGE
1752
  (
1753
    INITIAL 64K
1754
    MINEXTENTS 1
1755
    MAXEXTENTS 2147483645
1756
    FREELISTS 1
1757
    FREELIST GROUPS 1
1758
    BUFFER_POOL DEFAULT
1759
  )
1760
;
1761
 
1762
CREATE TABLE PACKAGES
1763
(
1764
  PKG_ID NUMBER NOT NULL,
1765
  PKG_NAME VARCHAR2(255 BYTE) NOT NULL,
1766
  SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),
1767
  WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE)
1768
, CONSTRAINT PK_PACKAGES PRIMARY KEY
1769
  (
1770
    PKG_ID
1771
  )
1772
  ENABLE
1773
)
1774
  TABLESPACE "SYSTEM"
1775
  LOGGING 
1776
  PCTFREE 10
1777
  PCTUSED 40
1778
  INITRANS 1
1779
  MAXTRANS 255
1780
  STORAGE
1781
  (
1782
    INITIAL 64K
1783
    NEXT 64K
1784
    MINEXTENTS 1
1785
    MAXEXTENTS 2147483645
1786
    PCTINCREASE 0
1787
    FREELISTS 1
1788
    FREELIST GROUPS 1
1789
    BUFFER_POOL DEFAULT
1790
  )
1791
;
1792
 
1793
CREATE TABLE MEMBERS_GROUP
1794
(
1795
  GROUP_EMAIL_ID NUMBER NOT NULL,
1796
  USER_ID NUMBER
1797
)
1798
  TABLESPACE "USERS"
1799
  LOGGING 
1800
  PCTFREE 10
1801
  PCTUSED 40
1802
  INITRANS 1
1803
  MAXTRANS 255
1804
  STORAGE
1805
  (
1806
    INITIAL 64K
1807
    MINEXTENTS 1
1808
    MAXEXTENTS 2147483645
1809
    FREELISTS 1
1810
    FREELIST GROUPS 1
1811
    BUFFER_POOL DEFAULT
1812
  )
1813
;
1814
 
1815
CREATE TABLE BUILD_SERVICE_CONFIG
1816
(
1817
  SERVICE VARCHAR2(50 BYTE) NOT NULL,
1818
  CONFIG VARCHAR2(2000 BYTE) NOT NULL
1819
)
1820
  TABLESPACE "USERS"
1821
  LOGGING 
1822
  PCTFREE 10
1823
  PCTUSED 40
1824
  INITRANS 1
1825
  MAXTRANS 255
1826
  STORAGE
1827
  (
1828
    INITIAL 64K
1829
    MINEXTENTS 1
1830
    MAXEXTENTS 2147483645
1831
    FREELISTS 1
1832
    FREELIST GROUPS 1
1833
    BUFFER_POOL DEFAULT
1834
  )
1835
;
1836
 
1837
CREATE TABLE PROJECTS
1838
(
1839
  PROJ_ID NUMBER NOT NULL,
1840
  PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,
1841
  BASE_URL VARCHAR2(4000 BYTE)
1842
, CONSTRAINT PK_PROJECTS PRIMARY KEY
1843
  (
1844
    PROJ_ID
1845
  )
1846
  ENABLE
1847
)
1848
  TABLESPACE "SYSTEM"
1849
  LOGGING 
1850
  PCTFREE 10
1851
  PCTUSED 40
1852
  INITRANS 1
1853
  MAXTRANS 255
1854
  STORAGE
1855
  (
1856
    INITIAL 64K
1857
    NEXT 64K
1858
    MINEXTENTS 1
1859
    MAXEXTENTS 2147483645
1860
    PCTINCREASE 0
1861
    FREELISTS 1
1862
    FREELIST GROUPS 1
1863
    BUFFER_POOL DEFAULT
1864
  )
1865
;
1866
 
1867
CREATE TABLE VIEWS
1868
(
1869
  VIEW_ID NUMBER NOT NULL,
1870
  VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,
1871
  OWNER_ID NUMBER NOT NULL,
1872
  BASE_VIEW CHAR(1 BYTE) NOT NULL,
1873
  PUBLIC_READ CHAR(1 BYTE) NOT NULL
1874
, CONSTRAINT PK_VIEWS PRIMARY KEY
1875
  (
1876
    VIEW_ID
1877
  )
1878
  ENABLE
1879
)
1880
  TABLESPACE "SYSTEM"
1881
  LOGGING 
1882
  PCTFREE 10
1883
  PCTUSED 40
1884
  INITRANS 1
1885
  MAXTRANS 255
1886
  STORAGE
1887
  (
1888
    INITIAL 64K
1889
    NEXT 64K
1890
    MINEXTENTS 1
1891
    MAXEXTENTS 2147483645
1892
    PCTINCREASE 0
1893
    FREELISTS 1
1894
    FREELIST GROUPS 1
1895
    BUFFER_POOL DEFAULT
1896
  )
1897
;
1898
 
1899
CREATE TABLE DAEMON_ACTION_LOG
1900
(
1901
  USER_ID NUMBER NOT NULL,
1902
  ACTION_DATETIME DATE,
1903
  RCON_ID NUMBER NOT NULL,
1904
  DESCRIPTION VARCHAR2(4000 BYTE),
1905
  ACTTYPE_ID NUMBER
1906
)
1907
  TABLESPACE "USERS"
1908
  LOGGING 
1909
  PCTFREE 10
1910
  PCTUSED 40
1911
  INITRANS 1
1912
  MAXTRANS 255
1913
  STORAGE
1914
  (
1915
    INITIAL 64K
1916
    MINEXTENTS 1
1917
    MAXEXTENTS 2147483645
1918
    FREELISTS 1
1919
    FREELIST GROUPS 1
1920
    BUFFER_POOL DEFAULT
1921
  )
1922
;
1923
 
1924
CREATE TABLE DASH_BOARD
1925
(
1926
  PROJ_ID NUMBER NOT NULL,
1927
  RTAG_ID NUMBER NOT NULL,
1928
  LAST_BUILD_TIME DATE NOT NULL,
1929
  AUTOMATED_PACKAGES NUMBER NOT NULL,
1930
  TOTAL_PACKAGES NUMBER NOT NULL
1931
)
1932
  TABLESPACE "USERS"
1933
  LOGGING 
1934
  PCTFREE 10
1935
  PCTUSED 40
1936
  INITRANS 1
1937
  MAXTRANS 255
1938
  STORAGE
1939
  (
1940
    INITIAL 64K
1941
    MINEXTENTS 1
1942
    MAXEXTENTS 2147483645
1943
    FREELISTS 1
1944
    FREELIST GROUPS 1
1945
    BUFFER_POOL DEFAULT
1946
  )
1947
;
1948
 
1949
CREATE TABLE ABT_ACTION_LOG
1950
(
1951
  RCON_ID NUMBER NOT NULL,
1952
  ACTION_DATETIME DATE,
1953
  ACTION VARCHAR2(4000 BYTE)
1954
)
1955
  TABLESPACE "USERS"
1956
  LOGGING 
1957
  PCTFREE 10
1958
  PCTUSED 40
1959
  INITRANS 1
1960
  MAXTRANS 255
1961
  STORAGE
1962
  (
1963
    INITIAL 64K
1964
    MINEXTENTS 1
1965
    MAXEXTENTS 2147483645
1966
    FREELISTS 1
1967
    FREELIST GROUPS 1
1968
    BUFFER_POOL DEFAULT
1969
  )
1970
;
1971
 
1972
CREATE TABLE RUNTIME_DEPENDENCIES
1973
(
1974
  PV_ID NUMBER NOT NULL,
1975
  RTD_ID NUMBER,
1976
  RTD_COMMENTS VARCHAR2(2000 BYTE),
1977
  RTD_URL VARCHAR2(2000 BYTE),
1978
  MOD_DATE DATE NOT NULL,
1979
  MOD_USER NUMBER NOT NULL
1980
)
1981
  TABLESPACE "USERS"
1982
  LOGGING 
1983
  PCTFREE 10
1984
  PCTUSED 40
1985
  INITRANS 1
1986
  MAXTRANS 255
1987
  STORAGE
1988
  (
1989
    INITIAL 128K
1990
    MINEXTENTS 1
1991
    MAXEXTENTS 2147483645
1992
    FREELISTS 1
1993
    FREELIST GROUPS 1
1994
    BUFFER_POOL DEFAULT
1995
  )
1996
;
1997
 
1998
CREATE TABLE PACKAGE_VERSIONS
1999
(
2000
  PV_ID NUMBER NOT NULL,
2001
  PKG_ID NUMBER NOT NULL,
2002
  PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,
2003
  DLOCKED CHAR(1 BYTE) NOT NULL,
2004
  RELEASED_AT NUMBER,
2005
  MODIFIED_STAMP DATE,
2006
  MODIFIER_ID NUMBER NOT NULL,
2007
  CREATED_STAMP DATE,
2008
  CREATOR_ID NUMBER NOT NULL,
2009
  COMMENTS VARCHAR2(4000 BYTE),
2010
  V_MM VARCHAR2(50 BYTE),
2011
  V_NMM VARCHAR2(50 BYTE),
2012
  V_EXT VARCHAR2(50 BYTE),
2013
  PKG_LABEL VARCHAR2(60 BYTE),
2014
  SRC_PATH VARCHAR2(2000 BYTE),
2015
  PV_DESCRIPTION VARCHAR2(4000 BYTE),
2016
  OWNER_ID NUMBER NOT NULL,
2017
  PV_OVERVIEW VARCHAR2(4000 BYTE),
2018
  IS_PATCH CHAR(1 BYTE),
2019
  LAST_PV_ID NUMBER NOT NULL,
2020
  RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),
2021
  IS_DEPLOYABLE CHAR(1 BYTE),
2022
  IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),
2023
  IS_OBSOLETE CHAR(1 BYTE),
2024
  OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),
2025
  BUILD_TYPE CHAR(1 BYTE) NOT NULL,
2026
  CHANGE_TYPE CHAR(1 BYTE),
2027
  LINK VARCHAR2(4000 BYTE),
2028
  PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),
2029
  BS_ID NUMBER,
2030
  IS_AUTOBUILDABLE CHAR(1 BYTE),
2031
  SBOM_PRIORITY CHAR(1 BYTE),
2032
  RIPPLE_FIELD CHAR(1 CHAR),
2033
  MAXIMUM_BUILD_TIME NUMBER,
2034
  ESTIMATED_COMPLETION_TIME DATE
2035
, CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY
2036
  (
2037
    PV_ID
2038
  )
2039
  ENABLE
2040
)
2041
  TABLESPACE "SYSTEM"
2042
  LOGGING 
2043
  PCTFREE 10
2044
  PCTUSED 40
2045
  INITRANS 1
2046
  MAXTRANS 255
2047
  STORAGE
2048
  (
2049
    INITIAL 192K
2050
    NEXT 64K
2051
    MINEXTENTS 1
2052
    MAXEXTENTS 2147483645
2053
    PCTINCREASE 0
2054
    FREELISTS 1
2055
    FREELIST GROUPS 1
2056
    BUFFER_POOL DEFAULT
2057
  )
2058
;
2059
 
2060
CREATE TABLE REPEAT_SCHEDULE
2061
(
2062
  RPT_ID NUMBER NOT NULL,
2063
  REPEAT CHAR(1 BYTE)
2064
, PRIMARY KEY
2065
  (
2066
    RPT_ID
2067
  )
2068
  ENABLE
2069
)
2070
  TABLESPACE "USERS"
2071
  LOGGING 
2072
  PCTFREE 10
2073
  PCTUSED 40
2074
  INITRANS 1
2075
  MAXTRANS 255
2076
  STORAGE
2077
  (
2078
    INITIAL 64K
2079
    MINEXTENTS 1
2080
    MAXEXTENTS 2147483645
2081
    FREELISTS 1
2082
    FREELIST GROUPS 1
2083
    BUFFER_POOL DEFAULT
2084
  )
2085
;
2086
 
2087
CREATE TABLE CODE_REVIEW_URL
2088
(
2089
  CR_ID NUMBER NOT NULL,
2090
  PV_ID NUMBER NOT NULL,
2091
  PROJ_ID NUMBER NOT NULL,
2092
  URL VARCHAR2(4000 BYTE) NOT NULL,
2093
  REASON VARCHAR2(4000 BYTE),
2094
  DATE_OF_REVIEW DATE NOT NULL,
2095
  LAST_MODIFIED DATE
2096
, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY
2097
  (
2098
    CR_ID
2099
  )
2100
  ENABLE
2101
)
2102
  TABLESPACE "USERS"
2103
  LOGGING 
2104
  PCTFREE 10
2105
  PCTUSED 40
2106
  INITRANS 1
2107
  MAXTRANS 255
2108
  STORAGE
2109
  (
2110
    INITIAL 64K
2111
    MINEXTENTS 1
2112
    MAXEXTENTS 2147483645
2113
    FREELISTS 1
2114
    FREELIST GROUPS 1
2115
    BUFFER_POOL DEFAULT
2116
  )
2117
;
2118
 
2119
CREATE TABLE DEF_ACTION_BUTTONS
2120
(
2121
  ABTN_ID NUMBER NOT NULL,
2122
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
2123
  TEXT VARCHAR2(50 BYTE),
2124
  ACTION_LINK VARCHAR2(4000 BYTE),
2125
  EVENT_HANDLER VARCHAR2(4000 BYTE),
2126
  IMG_ENABLED VARCHAR2(1000 BYTE),
2127
  IMG_DISABLED VARCHAR2(1000 BYTE),
2128
  HINT VARCHAR2(255 BYTE),
2129
  VISIBLE CHAR(1 BYTE) NOT NULL,
2130
  ACTIVE CHAR(1 BYTE) NOT NULL,
2131
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
2132
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
2133
  (
2134
    ABTN_ID
2135
  )
2136
  ENABLE
2137
)
2138
  TABLESPACE "USERS"
2139
  LOGGING 
2140
  PCTFREE 10
2141
  PCTUSED 40
2142
  INITRANS 1
2143
  MAXTRANS 255
2144
  STORAGE
2145
  (
2146
    INITIAL 64K
2147
    MINEXTENTS 1
2148
    MAXEXTENTS 2147483645
2149
    FREELISTS 1
2150
    FREELIST GROUPS 1
2151
    BUFFER_POOL DEFAULT
2152
  )
2153
;
2154
 
2155
CREATE TABLE CQ_ISSUES
2156
(
2157
  PV_ID NUMBER NOT NULL,
2158
  ISS_DB NUMBER NOT NULL,
2159
  ISS_ID NUMBER NOT NULL,
2160
  ISS_STATE NUMBER NOT NULL,
2161
  MOD_DATE DATE NOT NULL,
2162
  NOTES VARCHAR2(255 BYTE)
2163
)
2164
  TABLESPACE "SYSTEM"
2165
  LOGGING 
2166
  PCTFREE 10
2167
  PCTUSED 40
2168
  INITRANS 1
2169
  MAXTRANS 255
2170
  STORAGE
2171
  (
2172
    INITIAL 64K
2173
    NEXT 64K
2174
    MINEXTENTS 1
2175
    MAXEXTENTS 2147483645
2176
    PCTINCREASE 0
2177
    FREELISTS 1
2178
    FREELIST GROUPS 1
2179
    BUFFER_POOL DEFAULT
2180
  )
2181
;
2182
 
2183
ALTER TABLE PLANNED
2184
ADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE
2185
(
2186
  PV_ID,
2187
  RTAG_ID
2188
)
2189
 ENABLE
2190
;
2191
 
2192
ALTER TABLE PACKAGE_METRICS
2193
ADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE
2194
(
2195
  PV_ID
2196
)
2197
 ENABLE
2198
;
2199
 
2200
ALTER TABLE RELEASE_METRICS
2201
ADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE
2202
(
2203
  RTAG_ID
2204
)
2205
 ENABLE
2206
;
2207
 
2208
ALTER TABLE PACKAGE_BUILD_ENV
2209
ADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY
2210
(
2211
  BE_ID
2212
)
2213
REFERENCES BUILD_ENVIRONMENTS
2214
(
2215
BE_ID
2216
) ENABLE
2217
;
2218
 
2219
ALTER TABLE PACKAGE_BUILD_ENV
2220
ADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY
2221
(
2222
  PV_ID
2223
)
2224
REFERENCES PACKAGE_VERSIONS
2225
(
2226
PV_ID
2227
) ENABLE
2228
;
2229
 
2230
ALTER TABLE NOTIFICATION_HISTORY
2231
ADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY
2232
(
2233
  PV_ID
2234
)
2235
REFERENCES PACKAGE_VERSIONS
2236
(
2237
PV_ID
2238
) DISABLE
2239
;
2240
 
2241
ALTER TABLE NOTIFICATION_HISTORY
2242
ADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY
2243
(
2244
  RTAG_ID
2245
)
2246
REFERENCES RELEASE_TAGS
2247
(
2248
RTAG_ID
2249
) ENABLE
2250
;
2251
 
2252
ALTER TABLE IGNORE_WARNINGS
2253
ADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY
2254
(
2255
  RTAG_ID
2256
)
2257
REFERENCES RELEASE_TAGS
2258
(
2259
RTAG_ID
2260
) ENABLE
2261
;
2262
 
2263
ALTER TABLE IGNORE_WARNINGS
2264
ADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY
2265
(
2266
  DPV_ID
2267
)
2268
REFERENCES PACKAGE_VERSIONS
2269
(
2270
PV_ID
2271
) ENABLE
2272
;
2273
 
2274
ALTER TABLE IGNORE_WARNINGS
2275
ADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY
2276
(
2277
  PV_ID
2278
)
2279
REFERENCES PACKAGE_VERSIONS
2280
(
2281
PV_ID
2282
) ENABLE
2283
;
2284
 
57 mhunt 2285
ALTER TABLE LICENCING
2286
ADD FOREIGN KEY
2287
(
2288
  PV_ID
2289
)
2290
REFERENCES PACKAGE_VERSIONS
2291
(
2292
PV_ID
2293
) ENABLE
2294
;
2295
 
2296
ALTER TABLE LICENCING
2297
ADD FOREIGN KEY
2298
(
2299
  LICENCE
2300
)
2301
REFERENCES LICENCES
2302
(
2303
LICENCE
2304
) ENABLE
2305
;
2306
 
51 mhunt 2307
ALTER TABLE PACKAGE_DOCUMENTS
2308
ADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY
2309
(
2310
  PV_ID
2311
)
2312
REFERENCES PACKAGE_VERSIONS
2313
(
2314
PV_ID
2315
) ENABLE
2316
;
2317
 
2318
ALTER TABLE BUILD_STANDARDS_ADDENDUM
2319
ADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY
2320
(
2321
  BS_ID
2322
)
2323
REFERENCES BUILD_STANDARDS
2324
(
2325
BS_ID
2326
) ENABLE
2327
;
2328
 
2329
ALTER TABLE UNIT_TESTS
2330
ADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY
2331
(
2332
  TEST_TYPES_FK
2333
)
2334
REFERENCES TEST_TYPES
2335
(
2336
TEST_TYPE_ID
2337
) ENABLE
2338
;
2339
 
2340
ALTER TABLE UNIT_TESTS
2341
ADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY
2342
(
2343
  PV_ID
2344
)
2345
REFERENCES PACKAGE_VERSIONS
2346
(
2347
PV_ID
2348
) ENABLE
2349
;
2350
 
2351
ALTER TABLE RELEASE_COMPONENTS
2352
ADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY
2353
(
2354
  PV_ID
2355
)
2356
REFERENCES PACKAGE_VERSIONS
2357
(
2358
PV_ID
2359
) ENABLE
2360
;
2361
 
2362
ALTER TABLE BUILD_ORDER
2363
ADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY
2364
(
2365
  PV_ID
2366
)
2367
REFERENCES PACKAGE_VERSIONS
2368
(
2369
PV_ID
2370
) DISABLE
2371
;
2372
 
2373
ALTER TABLE BUILD_ORDER
2374
ADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY
2375
(
2376
  RTAG_ID
2377
)
2378
REFERENCES RELEASE_TAGS
2379
(
2380
RTAG_ID
2381
) ENABLE
2382
;
2383
 
2384
ALTER TABLE PLANNED
53 mhunt 2385
ADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY
51 mhunt 2386
(
53 mhunt 2387
  RTAG_ID
51 mhunt 2388
)
53 mhunt 2389
REFERENCES RELEASE_TAGS
51 mhunt 2390
(
53 mhunt 2391
RTAG_ID
51 mhunt 2392
) ENABLE
2393
;
2394
 
2395
ALTER TABLE PLANNED
53 mhunt 2396
ADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY
51 mhunt 2397
(
53 mhunt 2398
  PV_ID
51 mhunt 2399
)
53 mhunt 2400
REFERENCES PACKAGE_VERSIONS
51 mhunt 2401
(
53 mhunt 2402
PV_ID
51 mhunt 2403
) ENABLE
2404
;
2405
 
2406
ALTER TABLE PLANNED
2407
ADD CONSTRAINT REFVIEWS55 FOREIGN KEY
2408
(
2409
  VIEW_ID
2410
)
2411
REFERENCES VIEWS
2412
(
2413
VIEW_ID
2414
) ENABLE
2415
;
2416
 
2417
ALTER TABLE PROJECT_ACTION_LOG
2418
ADD FOREIGN KEY
2419
(
2420
  RTAG_ID
2421
)
2422
REFERENCES RELEASE_TAGS
2423
(
2424
RTAG_ID
2425
) DISABLE
2426
;
2427
 
2428
ALTER TABLE PROJECT_ACTION_LOG
2429
ADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY
2430
(
2431
  ACTTYPE_ID
2432
)
2433
REFERENCES ACTION_TYPE
2434
(
2435
ACTTYPE_ID
2436
) ENABLE
2437
;
2438
 
2439
ALTER TABLE PACKAGE_METRICS
2440
ADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY
2441
(
2442
  PV_ID
2443
)
2444
REFERENCES PACKAGE_VERSIONS
2445
(
2446
PV_ID
2447
) ENABLE
2448
;
2449
 
2450
ALTER TABLE RELEASE_LINKS
2451
ADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY
2452
(
2453
  REF_RTAG_ID
2454
)
2455
REFERENCES RELEASE_TAGS
2456
(
2457
RTAG_ID
2458
) ENABLE
2459
;
2460
 
2461
ALTER TABLE RELEASE_LINKS
2462
ADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY
2463
(
2464
  RTAG_ID
2465
)
2466
REFERENCES RELEASE_TAGS
2467
(
2468
RTAG_ID
2469
) ENABLE
2470
;
2471
 
2472
ALTER TABLE BUILD_ENV_DOCUMENTS
2473
ADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY
2474
(
2475
  BE_ID
2476
)
2477
REFERENCES BUILD_ENVIRONMENTS
2478
(
2479
BE_ID
2480
) ENABLE
2481
;
2482
 
2483
ALTER TABLE ACTION_LOG
2484
ADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY
2485
(
2486
  ACTTYPE_ID
2487
)
2488
REFERENCES ACTION_TYPE
2489
(
2490
ACTTYPE_ID
2491
) ENABLE
2492
;
2493
 
2494
ALTER TABLE ADDITIONAL_NOTES
2495
ADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY
2496
(
2497
  PV_ID
2498
)
2499
REFERENCES PACKAGE_VERSIONS
2500
(
2501
PV_ID
2502
) ENABLE
2503
;
2504
 
2505
ALTER TABLE VTREES_WORLD
2506
ADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY
2507
(
2508
  VTREE_ID
2509
)
2510
REFERENCES VTREES
2511
(
2512
VTREE_ID
2513
) ENABLE
2514
;
2515
 
2516
ALTER TABLE VTREES_WORLD
2517
ADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY
2518
(
2519
  WORLD_ID
2520
)
2521
REFERENCES WORLDS
2522
(
2523
WORLD_ID
2524
) ENABLE
2525
;
2526
 
2527
ALTER TABLE CODE_REVIEWS
2528
ADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY
2529
(
2530
  PV_ID
2531
)
2532
REFERENCES PACKAGE_VERSIONS
2533
(
2534
PV_ID
2535
) ENABLE
2536
;
2537
 
2538
ALTER TABLE PLANNED_VERSIONS
2539
ADD FOREIGN KEY
2540
(
2541
  PKG_ID
2542
)
2543
REFERENCES PACKAGES
2544
(
2545
PKG_ID
2546
) ENABLE
2547
;
2548
 
2549
ALTER TABLE DO_NOT_RIPPLE
2550
ADD FOREIGN KEY
2551
(
2552
  PV_ID
2553
)
2554
REFERENCES PACKAGE_VERSIONS
2555
(
2556
PV_ID
2557
) ENABLE
2558
;
2559
 
2560
ALTER TABLE DO_NOT_RIPPLE
2561
ADD FOREIGN KEY
2562
(
2563
  RTAG_ID
2564
)
2565
REFERENCES RELEASE_TAGS
2566
(
2567
RTAG_ID
2568
) ENABLE
2569
;
2570
 
2571
ALTER TABLE RELEASE_CONTENT
2572
ADD FOREIGN KEY
2573
(
2574
  PKG_ID
2575
)
2576
REFERENCES PACKAGES
2577
(
2578
PKG_ID
2579
) ENABLE
2580
;
2581
 
2582
ALTER TABLE RELEASE_CONTENT
2583
ADD FOREIGN KEY
2584
(
2585
  PRODUCT_STATE
2586
)
2587
REFERENCES PRODUCT_STATES
2588
(
2589
STATE_ID
2590
) ENABLE
2591
;
2592
 
2593
ALTER TABLE PACKAGE_PROCESSES
2594
ADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY
2595
(
2596
  PROC_ID
2597
)
2598
REFERENCES PROCESSES
2599
(
2600
PROC_ID
2601
) ENABLE
2602
;
2603
 
2604
ALTER TABLE PACKAGE_PROCESSES
2605
ADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY
2606
(
2607
  PV_ID
2608
)
2609
REFERENCES PACKAGE_VERSIONS
2610
(
2611
PV_ID
2612
) ENABLE
2613
;
2614
 
2615
ALTER TABLE ADVISORY_RIPPLE
2616
ADD FOREIGN KEY
2617
(
2618
  RTAG_ID
2619
)
2620
REFERENCES RELEASE_TAGS
2621
(
2622
RTAG_ID
2623
) ENABLE
2624
;
2625
 
2626
ALTER TABLE ADVISORY_RIPPLE
2627
ADD FOREIGN KEY
2628
(
2629
  PV_ID
2630
)
2631
REFERENCES PACKAGE_VERSIONS
2632
(
2633
PV_ID
2634
) ENABLE
2635
;
2636
 
2637
ALTER TABLE PACKAGE_PATCHES
2638
ADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY
2639
(
2640
  PATCH_ID
2641
)
2642
REFERENCES PACKAGE_VERSIONS
2643
(
2644
PV_ID
2645
) ENABLE
2646
;
2647
 
2648
ALTER TABLE PACKAGE_PATCHES
2649
ADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY
2650
(
2651
  PV_ID
2652
)
2653
REFERENCES PACKAGE_VERSIONS
2654
(
2655
PV_ID
2656
) ENABLE
2657
;
2658
 
2659
ALTER TABLE PACKAGE_INTEREST
2660
ADD FOREIGN KEY
2661
(
2662
  PROJ_ID
2663
)
2664
REFERENCES PROJECTS
2665
(
2666
PROJ_ID
2667
) ENABLE
2668
;
2669
 
2670
ALTER TABLE RELEASE_CONFIG
2671
ADD FOREIGN KEY
2672
(
2673
  RTAG_ID
2674
)
2675
REFERENCES RELEASE_TAGS
2676
(
2677
RTAG_ID
2678
) ENABLE
2679
;
2680
 
2681
ALTER TABLE RELEASE_CONFIG
2682
ADD FOREIGN KEY
2683
(
2684
  GBE_ID
2685
)
2686
REFERENCES GBE_MACHTYPE
2687
(
2688
GBE_ID
2689
) ENABLE
2690
;
2691
 
2692
ALTER TABLE RELEASE_METRICS
2693
ADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY
2694
(
2695
  RTAG_ID
2696
)
2697
REFERENCES RELEASE_TAGS
2698
(
2699
RTAG_ID
2700
) ENABLE
2701
;
2702
 
2703
ALTER TABLE AUTOBUILD_FAILURE
2704
ADD FOREIGN KEY
2705
(
2706
  VIEW_ID
2707
)
2708
REFERENCES VIEWS
2709
(
2710
VIEW_ID
2711
) ENABLE
2712
;
2713
 
2714
ALTER TABLE AUTOBUILD_FAILURE
2715
ADD FOREIGN KEY
2716
(
2717
  PROJ_ID
2718
)
2719
REFERENCES PROJECTS
2720
(
2721
PROJ_ID
2722
) ENABLE
2723
;
2724
 
2725
ALTER TABLE JIRA_ISSUES
2726
ADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY
2727
(
2728
  PV_ID
2729
)
2730
REFERENCES PACKAGE_VERSIONS
2731
(
2732
PV_ID
2733
) ENABLE
2734
;
2735
 
2736
ALTER TABLE WORK_IN_PROGRESS
2737
ADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY
2738
(
2739
  PV_ID
2740
)
2741
REFERENCES PACKAGE_VERSIONS
2742
(
2743
PV_ID
2744
) ENABLE
2745
;
2746
 
2747
ALTER TABLE WORK_IN_PROGRESS
2748
ADD CONSTRAINT REFVIEWS52 FOREIGN KEY
2749
(
2750
  VIEW_ID
2751
)
2752
REFERENCES VIEWS
2753
(
2754
VIEW_ID
2755
) ENABLE
2756
;
2757
 
2758
ALTER TABLE WORK_IN_PROGRESS
2759
ADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY
2760
(
2761
  RTAG_ID
2762
)
2763
REFERENCES RELEASE_TAGS
2764
(
2765
RTAG_ID
2766
) ENABLE
2767
;
2768
 
2769
ALTER TABLE RUN_LEVEL
2770
ADD FOREIGN KEY
2771
(
2772
  RCON_ID
2773
)
2774
REFERENCES RELEASE_CONFIG
2775
(
2776
RCON_ID
2777
) ENABLE
2778
;
2779
 
2780
ALTER TABLE RUN_LEVEL
2781
ADD FOREIGN KEY
2782
(
2783
  CURRENT_PKG_ID_BEING_BUILT
2784
)
2785
REFERENCES PACKAGES
2786
(
2787
PKG_ID
2788
) ENABLE
2789
;
2790
 
2791
ALTER TABLE PRODUCT_COMPONENTS
2792
ADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY
2793
(
2794
  PV_ID
2795
)
2796
REFERENCES PACKAGE_VERSIONS
2797
(
2798
PV_ID
2799
) ENABLE
2800
;
2801
 
2802
ALTER TABLE PACKAGE_BUILD_INFO
2803
ADD FOREIGN KEY
2804
(
2805
  PV_ID
2806
)
2807
REFERENCES PACKAGE_VERSIONS
2808
(
2809
PV_ID
2810
) ENABLE
2811
;
2812
 
2813
ALTER TABLE PACKAGE_BUILD_INFO
2814
ADD FOREIGN KEY
2815
(
2816
  BM_ID
2817
)
2818
REFERENCES BUILD_MACHINES
2819
(
2820
BM_ID
2821
) ENABLE
2822
;
2823
 
2824
ALTER TABLE MEMBERS_GROUP
2825
ADD FOREIGN KEY
2826
(
2827
  GROUP_EMAIL_ID
2828
)
2829
REFERENCES AUTOBUILD_FAILURE
2830
(
2831
GROUP_EMAIL_ID
2832
) ENABLE
2833
;
2834
 
2835
ALTER TABLE DAEMON_ACTION_LOG
2836
ADD FOREIGN KEY
2837
(
2838
  ACTTYPE_ID
2839
)
2840
REFERENCES ACTION_TYPE
2841
(
2842
ACTTYPE_ID
2843
) ENABLE
2844
;
2845
 
2846
ALTER TABLE DAEMON_ACTION_LOG
2847
ADD FOREIGN KEY
2848
(
2849
  RCON_ID
2850
)
2851
REFERENCES RELEASE_CONFIG
2852
(
2853
RCON_ID
2854
) ENABLE
2855
;
2856
 
2857
ALTER TABLE DASH_BOARD
2858
ADD FOREIGN KEY
2859
(
2860
  PROJ_ID
2861
)
2862
REFERENCES PROJECTS
2863
(
2864
PROJ_ID
2865
) ENABLE
2866
;
2867
 
2868
ALTER TABLE DASH_BOARD
2869
ADD FOREIGN KEY
2870
(
2871
  RTAG_ID
2872
)
2873
REFERENCES RELEASE_TAGS
2874
(
2875
RTAG_ID
2876
) ENABLE
2877
;
2878
 
2879
ALTER TABLE ABT_ACTION_LOG
2880
ADD FOREIGN KEY
2881
(
2882
  RCON_ID
2883
)
2884
REFERENCES RELEASE_CONFIG
2885
(
2886
RCON_ID
2887
) ENABLE
2888
;
2889
 
2890
ALTER TABLE RUNTIME_DEPENDENCIES
2891
ADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY
2892
(
2893
  RTD_ID
2894
)
2895
REFERENCES PACKAGE_VERSIONS
2896
(
2897
PV_ID
2898
) ENABLE
2899
;
2900
 
2901
ALTER TABLE RUNTIME_DEPENDENCIES
2902
ADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY
2903
(
2904
  PV_ID
2905
)
2906
REFERENCES PACKAGE_VERSIONS
2907
(
2908
PV_ID
2909
) ENABLE
2910
;
2911
 
2912
ALTER TABLE PACKAGE_VERSIONS
2913
ADD FOREIGN KEY
2914
(
2915
  BS_ID
2916
)
2917
REFERENCES BUILD_STANDARDS
2918
(
2919
BS_ID
2920
) ENABLE
2921
;
2922
 
2923
ALTER TABLE CODE_REVIEW_URL
2924
ADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY
2925
(
2926
  PROJ_ID
2927
)
2928
REFERENCES PROJECTS
2929
(
2930
PROJ_ID
2931
) ENABLE
2932
;
2933
 
2934
ALTER TABLE CODE_REVIEW_URL
2935
ADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY
2936
(
2937
  PV_ID
2938
)
2939
REFERENCES PACKAGE_VERSIONS
2940
(
2941
PV_ID
2942
) ENABLE
2943
;
2944
 
2945
ALTER TABLE CQ_ISSUES
2946
ADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY
2947
(
2948
  PV_ID
2949
)
2950
REFERENCES PACKAGE_VERSIONS
2951
(
2952
PV_ID
2953
) ENABLE
2954
;
2955
 
2956
ALTER TABLE MICROSOFTDTPROPERTIES
2957
ADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK
2958
("PROPERTY" IS NOT NULL)
2959
 ENABLE
2960
;
2961
 
2962
ALTER TABLE MICROSOFTDTPROPERTIES
2963
ADD CONSTRAINT MICROSOFT_NN_ID CHECK
2964
("ID" IS NOT NULL)
2965
 ENABLE
2966
;
2967
 
2968
ALTER TABLE MICROSOFTDTPROPERTIES
2969
ADD CONSTRAINT MICROSOFT_NN_VERSION CHECK
2970
("VERSION" IS NOT NULL)
2971
 ENABLE
2972
;
2973
 
2974
ALTER TABLE RIPPLE_FIELD_STATES
2975
ADD CHECK
2976
("STATE_ACRONYM" IS NOT NULL)
2977
 DISABLE
2978
;
2979
 
2980
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;
2981
 
2982
CREATE OR REPLACE VIEW ENVIRONMENT_VIEW AS SELECT 2 AS ENV_AREA,
2983
    rc.PV_ID,
2984
    rc.RTAG_ID,
2985
    rc.BASE_VIEW_ID AS VIEW_ID,
2986
    rc.PKG_STATE,
2987
 rc.DEPRECATED_STATE,
2988
    rc.INSERTOR_ID,
53 mhunt 2989
    rc.INSERT_STAMP,
2990
    ' ' AS OPERATION
51 mhunt 2991
  FROM RELEASE_CONTENT rc
2992
UNION
2993
SELECT 0 AS ENV_AREA,
2994
    wip.PV_ID,
2995
    wip.RTAG_ID,
2996
    wip.VIEW_ID,
2997
    NULL AS PKG_STATE,
2998
 NULL AS DEPRECATED_STATE,
2999
    NULL AS INSERTOR_ID,
53 mhunt 3000
    NULL AS INSERT_STAMP,
3001
    ' ' AS OPERATION
3002
  FROM WORK_IN_PROGRESS wip
3003
UNION
51 mhunt 3004
SELECT 1 AS ENV_AREA,
3005
    pl.PV_ID,
3006
    pl.RTAG_ID,
3007
    pl.VIEW_ID,
3008
    NULL AS PKG_STATE,
3009
 NULL AS DEPRECATED_STATE,
3010
    NULL AS INSERTOR_ID,
53 mhunt 3011
    NULL AS INSERT_STAMP,
3012
    pl.operation
57 mhunt 3013
  FROM PLANNED pl;
51 mhunt 3014
 
3015
CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC)  TABLESPACE "USERS"
3016
  LOGGING 
3017
  PCTFREE 10
3018
  INITRANS 2
3019
  MAXTRANS 255
3020
  STORAGE
3021
  (
3022
    INITIAL 128K
3023
    MINEXTENTS 1
3024
    MAXEXTENTS 2147483645
3025
    FREELISTS 1
3026
    FREELIST GROUPS 1
3027
    BUFFER_POOL DEFAULT
3028
  )
3029
;
3030
 
3031
CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3032
  NOLOGGING 
3033
  PCTFREE 10
3034
  INITRANS 2
3035
  MAXTRANS 255
3036
  STORAGE
3037
  (
3038
    INITIAL 128K
3039
    MINEXTENTS 1
3040
    MAXEXTENTS 2147483645
3041
    FREELISTS 1
3042
    FREELIST GROUPS 1
3043
    BUFFER_POOL DEFAULT
3044
  )
3045
;
3046
 
3047
CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC)  TABLESPACE "USERS"
3048
  NOLOGGING 
3049
  PCTFREE 10
3050
  INITRANS 2
3051
  MAXTRANS 255
3052
  STORAGE
3053
  (
3054
    INITIAL 128K
3055
    MINEXTENTS 1
3056
    MAXEXTENTS 2147483645
3057
    FREELISTS 1
3058
    FREELIST GROUPS 1
3059
    BUFFER_POOL DEFAULT
3060
  )
3061
;
3062
 
3063
CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC)  TABLESPACE "USERS"
3064
  NOLOGGING 
3065
  PCTFREE 10
3066
  INITRANS 2
3067
  MAXTRANS 255
3068
  STORAGE
3069
  (
3070
    INITIAL 128K
3071
    MINEXTENTS 1
3072
    MAXEXTENTS 2147483645
3073
    FREELISTS 1
3074
    FREELIST GROUPS 1
3075
    BUFFER_POOL DEFAULT
3076
  )
3077
;
3078
 
3079
CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC)  TABLESPACE "USERS"
3080
  LOGGING 
3081
  PCTFREE 10
3082
  INITRANS 2
3083
  MAXTRANS 255
3084
  STORAGE
3085
  (
3086
    INITIAL 64K
3087
    MINEXTENTS 1
3088
    MAXEXTENTS 2147483645
3089
    FREELISTS 1
3090
    FREELIST GROUPS 1
3091
    BUFFER_POOL DEFAULT
3092
  )
3093
;
3094
 
3095
CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC)  TABLESPACE "USERS"
3096
  LOGGING 
3097
  PCTFREE 10
3098
  INITRANS 2
3099
  MAXTRANS 255
3100
  STORAGE
3101
  (
3102
    INITIAL 64K
3103
    MINEXTENTS 1
3104
    MAXEXTENTS 2147483645
3105
    FREELISTS 1
3106
    FREELIST GROUPS 1
3107
    BUFFER_POOL DEFAULT
3108
  )
3109
;
3110
 
3111
CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC)  TABLESPACE "USERS"
3112
  LOGGING 
3113
  PCTFREE 10
3114
  INITRANS 2
3115
  MAXTRANS 255
3116
  STORAGE
3117
  (
3118
    INITIAL 64K
3119
    MINEXTENTS 1
3120
    MAXEXTENTS 2147483645
3121
    FREELISTS 1
3122
    FREELIST GROUPS 1
3123
    BUFFER_POOL DEFAULT
3124
  )
3125
;
3126
 
3127
CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC)  TABLESPACE "USERS"
3128
  LOGGING 
3129
  PCTFREE 10
3130
  INITRANS 2
3131
  MAXTRANS 255
3132
  STORAGE
3133
  (
3134
    INITIAL 128K
3135
    MINEXTENTS 1
3136
    MAXEXTENTS 2147483645
3137
    FREELISTS 1
3138
    FREELIST GROUPS 1
3139
    BUFFER_POOL DEFAULT
3140
  )
3141
;
3142
 
3143
CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC)  TABLESPACE "USERS"
3144
  LOGGING 
3145
  PCTFREE 10
3146
  INITRANS 2
3147
  MAXTRANS 255
3148
  STORAGE
3149
  (
3150
    INITIAL 128K
3151
    MINEXTENTS 1
3152
    MAXEXTENTS 2147483645
3153
    FREELISTS 1
3154
    FREELIST GROUPS 1
3155
    BUFFER_POOL DEFAULT
3156
  )
3157
;
3158
 
3159
CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC)  TABLESPACE "USERS"
3160
  LOGGING 
3161
  PCTFREE 10
3162
  INITRANS 2
3163
  MAXTRANS 255
3164
  STORAGE
3165
  (
3166
    INITIAL 128K
3167
    MINEXTENTS 1
3168
    MAXEXTENTS 2147483645
3169
    FREELISTS 1
3170
    FREELIST GROUPS 1
3171
    BUFFER_POOL DEFAULT
3172
  )
3173
;
3174
 
3175
CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3176
  LOGGING 
3177
  PCTFREE 10
3178
  INITRANS 2
3179
  MAXTRANS 255
3180
  STORAGE
3181
  (
3182
    INITIAL 128K
3183
    MINEXTENTS 1
3184
    MAXEXTENTS 2147483645
3185
    FREELISTS 1
3186
    FREELIST GROUPS 1
3187
    BUFFER_POOL DEFAULT
3188
  )
3189
;
3190
 
3191
CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3192
  LOGGING 
3193
  PCTFREE 10
3194
  INITRANS 2
3195
  MAXTRANS 255
3196
  STORAGE
3197
  (
3198
    INITIAL 128K
3199
    MINEXTENTS 1
3200
    MAXEXTENTS 2147483645
3201
    FREELISTS 1
3202
    FREELIST GROUPS 1
3203
    BUFFER_POOL DEFAULT
3204
  )
3205
;
3206
 
3207
CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC)  TABLESPACE "USERS"
3208
  LOGGING 
3209
  PCTFREE 10
3210
  INITRANS 2
3211
  MAXTRANS 255
3212
  STORAGE
3213
  (
3214
    INITIAL 64K
3215
    MINEXTENTS 1
3216
    MAXEXTENTS 2147483645
3217
    FREELISTS 1
3218
    FREELIST GROUPS 1
3219
    BUFFER_POOL DEFAULT
3220
  )
3221
;
3222
 
3223
CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC)  TABLESPACE "USERS"
3224
  LOGGING 
3225
  PCTFREE 10
3226
  INITRANS 2
3227
  MAXTRANS 255
3228
  STORAGE
3229
  (
3230
    INITIAL 128K
3231
    MINEXTENTS 1
3232
    MAXEXTENTS 2147483645
3233
    FREELISTS 1
3234
    FREELIST GROUPS 1
3235
    BUFFER_POOL DEFAULT
3236
  )
3237
;
3238
 
3239
CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC)  TABLESPACE "USERS"
3240
  LOGGING 
3241
  PCTFREE 10
3242
  INITRANS 2
3243
  MAXTRANS 255
3244
  STORAGE
3245
  (
3246
    INITIAL 128K
3247
    MINEXTENTS 1
3248
    MAXEXTENTS 2147483645
3249
    FREELISTS 1
3250
    FREELIST GROUPS 1
3251
    BUFFER_POOL DEFAULT
3252
  )
3253
;
3254
 
3255
CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC)  TABLESPACE "USERS"
3256
  LOGGING 
3257
  PCTFREE 10
3258
  INITRANS 2
3259
  MAXTRANS 255
3260
  STORAGE
3261
  (
3262
    INITIAL 128K
3263
    MINEXTENTS 1
3264
    MAXEXTENTS 2147483645
3265
    FREELISTS 1
3266
    FREELIST GROUPS 1
3267
    BUFFER_POOL DEFAULT
3268
  )
3269
;
3270
 
3271
CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC)  TABLESPACE "USERS"
3272
  LOGGING 
3273
  PCTFREE 10
3274
  INITRANS 2
3275
  MAXTRANS 255
3276
  STORAGE
3277
  (
3278
    INITIAL 128K
3279
    MINEXTENTS 1
3280
    MAXEXTENTS 2147483645
3281
    FREELISTS 1
3282
    FREELIST GROUPS 1
3283
    BUFFER_POOL DEFAULT
3284
  )
3285
;
3286
 
3287
CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3288
  LOGGING 
3289
  PCTFREE 10
3290
  INITRANS 2
3291
  MAXTRANS 255
3292
  STORAGE
3293
  (
3294
    INITIAL 64K
3295
    MINEXTENTS 1
3296
    MAXEXTENTS 2147483645
3297
    FREELISTS 1
3298
    FREELIST GROUPS 1
3299
    BUFFER_POOL DEFAULT
3300
  )
3301
;
3302
 
3303
CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3304
  LOGGING 
3305
  PCTFREE 10
3306
  INITRANS 2
3307
  MAXTRANS 255
3308
  STORAGE
3309
  (
3310
    INITIAL 64K
3311
    MINEXTENTS 1
3312
    MAXEXTENTS 2147483645
3313
    FREELISTS 1
3314
    FREELIST GROUPS 1
3315
    BUFFER_POOL DEFAULT
3316
  )
3317
;
3318
 
3319
CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC)  TABLESPACE "USERS"
3320
  LOGGING 
3321
  PCTFREE 10
3322
  INITRANS 2
3323
  MAXTRANS 255
3324
  STORAGE
3325
  (
3326
    INITIAL 128K
3327
    MINEXTENTS 1
3328
    MAXEXTENTS 2147483645
3329
    FREELISTS 1
3330
    FREELIST GROUPS 1
3331
    BUFFER_POOL DEFAULT
3332
  )
3333
;
3334
 
3335
CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC)  TABLESPACE "USERS"
3336
  LOGGING 
3337
  PCTFREE 10
3338
  INITRANS 2
3339
  MAXTRANS 255
3340
  STORAGE
3341
  (
3342
    INITIAL 64K
3343
    MINEXTENTS 1
3344
    MAXEXTENTS 2147483645
3345
    FREELISTS 1
3346
    FREELIST GROUPS 1
3347
    BUFFER_POOL DEFAULT
3348
  )
3349
;
3350
 
3351
CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3352
  LOGGING 
3353
  PCTFREE 10
3354
  INITRANS 2
3355
  MAXTRANS 255
3356
  STORAGE
3357
  (
3358
    INITIAL 64K
3359
    MINEXTENTS 1
3360
    MAXEXTENTS 2147483645
3361
    FREELISTS 1
3362
    FREELIST GROUPS 1
3363
    BUFFER_POOL DEFAULT
3364
  )
3365
;
3366
 
3367
CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3368
  LOGGING 
3369
  PCTFREE 10
3370
  INITRANS 2
3371
  MAXTRANS 255
3372
  STORAGE
3373
  (
3374
    INITIAL 64K
3375
    MINEXTENTS 1
3376
    MAXEXTENTS 2147483645
3377
    FREELISTS 1
3378
    FREELIST GROUPS 1
3379
    BUFFER_POOL DEFAULT
3380
  )
3381
;
3382
 
3383
CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC)  TABLESPACE "USERS"
3384
  LOGGING 
3385
  PCTFREE 10
3386
  INITRANS 2
3387
  MAXTRANS 255
3388
  STORAGE
3389
  (
3390
    INITIAL 64K
3391
    MINEXTENTS 1
3392
    MAXEXTENTS 2147483645
3393
    FREELISTS 1
3394
    FREELIST GROUPS 1
3395
    BUFFER_POOL DEFAULT
3396
  )
3397
;
3398
 
3399
CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC)  TABLESPACE "SYSTEM"
3400
  LOGGING 
3401
  PCTFREE 10
3402
  INITRANS 2
3403
  MAXTRANS 255
3404
  STORAGE
3405
  (
3406
    INITIAL 64K
3407
    NEXT 64K
3408
    MINEXTENTS 1
3409
    MAXEXTENTS 2147483645
3410
    PCTINCREASE 0
3411
    FREELISTS 1
3412
    FREELIST GROUPS 1
3413
    BUFFER_POOL DEFAULT
3414
  )
3415
;
3416
 
3417
CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC)  TABLESPACE "SYSTEM"
3418
  LOGGING 
3419
  PCTFREE 10
3420
  INITRANS 2
3421
  MAXTRANS 255
3422
  STORAGE
3423
  (
3424
    INITIAL 64K
3425
    NEXT 64K
3426
    MINEXTENTS 1
3427
    MAXEXTENTS 2147483645
3428
    PCTINCREASE 0
3429
    FREELISTS 1
3430
    FREELIST GROUPS 1
3431
    BUFFER_POOL DEFAULT
3432
  )
3433
;
3434
 
3435
CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC)  TABLESPACE "USERS"
3436
  LOGGING 
3437
  PCTFREE 10
3438
  INITRANS 2
3439
  MAXTRANS 255
3440
  STORAGE
3441
  (
3442
    INITIAL 64K
3443
    MINEXTENTS 1
3444
    MAXEXTENTS 2147483645
3445
    FREELISTS 1
3446
    FREELIST GROUPS 1
3447
    BUFFER_POOL DEFAULT
3448
  )
3449
;
3450
 
3451
CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC)  TABLESPACE "USERS"
3452
  LOGGING 
3453
  PCTFREE 10
3454
  INITRANS 2
3455
  MAXTRANS 255
3456
  STORAGE
3457
  (
3458
    INITIAL 64K
3459
    MINEXTENTS 1
3460
    MAXEXTENTS 2147483645
3461
    FREELISTS 1
3462
    FREELIST GROUPS 1
3463
    BUFFER_POOL DEFAULT
3464
  )
3465
;
3466
 
3467
CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC)  TABLESPACE "USERS"
3468
  LOGGING 
3469
  PCTFREE 10
3470
  INITRANS 2
3471
  MAXTRANS 255
3472
  STORAGE
3473
  (
3474
    INITIAL 64K
3475
    MINEXTENTS 1
3476
    MAXEXTENTS 2147483645
3477
    FREELISTS 1
3478
    FREELIST GROUPS 1
3479
    BUFFER_POOL DEFAULT
3480
  )
3481
;
3482
 
3483
CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC)  TABLESPACE "USERS"
3484
  LOGGING 
3485
  PCTFREE 10
3486
  INITRANS 2
3487
  MAXTRANS 255
3488
  STORAGE
3489
  (
3490
    INITIAL 128K
3491
    MINEXTENTS 1
3492
    MAXEXTENTS 2147483645
3493
    FREELISTS 1
3494
    FREELIST GROUPS 1
3495
    BUFFER_POOL DEFAULT
3496
  )
3497
;
3498
 
3499
CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC)  TABLESPACE "USERS"
3500
  LOGGING 
3501
  PCTFREE 10
3502
  INITRANS 2
3503
  MAXTRANS 255
3504
  STORAGE
3505
  (
3506
    INITIAL 128K
3507
    MINEXTENTS 1
3508
    MAXEXTENTS 2147483645
3509
    FREELISTS 1
3510
    FREELIST GROUPS 1
3511
    BUFFER_POOL DEFAULT
3512
  )
3513
;
3514
 
3515
CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC)  TABLESPACE "USERS"
3516
  LOGGING 
3517
  PCTFREE 10
3518
  INITRANS 2
3519
  MAXTRANS 255
3520
  STORAGE
3521
  (
3522
    INITIAL 128K
3523
    MINEXTENTS 1
3524
    MAXEXTENTS 2147483645
3525
    FREELISTS 1
3526
    FREELIST GROUPS 1
3527
    BUFFER_POOL DEFAULT
3528
  )
3529
;
3530
 
3531
CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC)  TABLESPACE "SYSTEM"
3532
  LOGGING 
3533
  PCTFREE 10
3534
  INITRANS 2
3535
  MAXTRANS 255
3536
  STORAGE
3537
  (
3538
    INITIAL 64K
3539
    NEXT 64K
3540
    MINEXTENTS 1
3541
    MAXEXTENTS 2147483645
3542
    PCTINCREASE 0
3543
    FREELISTS 1
3544
    FREELIST GROUPS 1
3545
    BUFFER_POOL DEFAULT
3546
  )
3547
;
3548
 
3549
CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC)  TABLESPACE "USERS"
3550
  LOGGING 
3551
  PCTFREE 10
3552
  INITRANS 2
3553
  MAXTRANS 255
3554
  STORAGE
3555
  (
3556
    INITIAL 128K
3557
    MINEXTENTS 1
3558
    MAXEXTENTS 2147483645
3559
    FREELISTS 1
3560
    FREELIST GROUPS 1
3561
    BUFFER_POOL DEFAULT
3562
  )
3563
;
3564
 
3565
CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC)  TABLESPACE "USERS"
3566
  LOGGING 
3567
  PCTFREE 10
3568
  INITRANS 2
3569
  MAXTRANS 255
3570
  STORAGE
3571
  (
3572
    INITIAL 128K
3573
    MINEXTENTS 1
3574
    MAXEXTENTS 2147483645
3575
    FREELISTS 1
3576
    FREELIST GROUPS 1
3577
    BUFFER_POOL DEFAULT
3578
  )
3579
;
3580
 
3581
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "SYSTEM"
3582
  LOGGING 
3583
  PCTFREE 10
3584
  INITRANS 2
3585
  MAXTRANS 255
3586
  STORAGE
3587
  (
3588
    INITIAL 64K
3589
    NEXT 64K
3590
    MINEXTENTS 1
3591
    MAXEXTENTS 2147483645
3592
    PCTINCREASE 0
3593
    FREELISTS 1
3594
    FREELIST GROUPS 1
3595
    BUFFER_POOL DEFAULT
3596
  )
3597
;
3598
 
3599
CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID 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 UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC)  TABLESPACE "USERS"
3616
  LOGGING 
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 UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
3632
  LOGGING 
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 INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_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_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC)  TABLESPACE "USERS"
3664
  NOLOGGING 
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_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_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 INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC)  TABLESPACE "USERS"
3696
  LOGGING 
3697
  PCTFREE 10
3698
  INITRANS 2
3699
  MAXTRANS 255
3700
  STORAGE
3701
  (
3702
    INITIAL 128K
3703
    MINEXTENTS 1
3704
    MAXEXTENTS 2147483645
3705
    FREELISTS 1
3706
    FREELIST GROUPS 1
3707
    BUFFER_POOL DEFAULT
3708
  )
3709
;
3710
 
3711
CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC)  TABLESPACE "USERS"
3712
  NOLOGGING 
3713
  PCTFREE 10
3714
  INITRANS 2
3715
  MAXTRANS 255
3716
  STORAGE
3717
  (
3718
    INITIAL 128K
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_PLATFORM ON PLATFORMS (NAME 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_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC)  TABLESPACE "SYSTEM"
3744
  LOGGING 
3745
  PCTFREE 10
3746
  INITRANS 2
3747
  MAXTRANS 255
3748
  STORAGE
3749
  (
3750
    INITIAL 64K
3751
    NEXT 64K
3752
    MINEXTENTS 1
3753
    MAXEXTENTS 2147483645
3754
    PCTINCREASE 0
3755
    FREELISTS 1
3756
    FREELIST GROUPS 1
3757
    BUFFER_POOL DEFAULT
3758
  )
3759
;
3760
 
3761
CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC)  TABLESPACE "USERS"
3762
  LOGGING 
3763
  PCTFREE 10
3764
  INITRANS 2
3765
  MAXTRANS 255
3766
  STORAGE
3767
  (
3768
    INITIAL 64K
3769
    MINEXTENTS 1
3770
    MAXEXTENTS 2147483645
3771
    FREELISTS 1
3772
    FREELIST GROUPS 1
3773
    BUFFER_POOL DEFAULT
3774
  )
3775
;
3776
 
3777
CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC)  TABLESPACE "USERS"
3778
  LOGGING 
3779
  PCTFREE 10
3780
  INITRANS 2
3781
  MAXTRANS 255
3782
  STORAGE
3783
  (
3784
    INITIAL 128K
3785
    MINEXTENTS 1
3786
    MAXEXTENTS 2147483645
3787
    FREELISTS 1
3788
    FREELIST GROUPS 1
3789
    BUFFER_POOL DEFAULT
3790
  )
3791
;
3792
 
3793
CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC)  TABLESPACE "USERS"
3794
  NOLOGGING 
3795
  PCTFREE 10
3796
  INITRANS 2
3797
  MAXTRANS 255
3798
  STORAGE
3799
  (
3800
    INITIAL 256K
3801
    MINEXTENTS 1
3802
    MAXEXTENTS 2147483645
3803
    FREELISTS 1
3804
    FREELIST GROUPS 1
3805
    BUFFER_POOL DEFAULT
3806
  )
3807
;
3808
 
3809
CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC)  TABLESPACE "USERS"
3810
  NOLOGGING 
3811
  PCTFREE 10
3812
  INITRANS 2
3813
  MAXTRANS 255
3814
  STORAGE
3815
  (
3816
    INITIAL 384K
3817
    MINEXTENTS 1
3818
    MAXEXTENTS 2147483645
3819
    FREELISTS 1
3820
    FREELIST GROUPS 1
3821
    BUFFER_POOL DEFAULT
3822
  )
3823
;
3824
 
3825
CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC)  TABLESPACE "USERS"
3826
  NOLOGGING 
3827
  PCTFREE 10
3828
  INITRANS 2
3829
  MAXTRANS 255
3830
  STORAGE
3831
  (
3832
    INITIAL 256K
3833
    MINEXTENTS 1
3834
    MAXEXTENTS 2147483645
3835
    FREELISTS 1
3836
    FREELIST GROUPS 1
3837
    BUFFER_POOL DEFAULT
3838
  )
3839
;
3840
 
3841
CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC)  TABLESPACE "USERS"
3842
  NOLOGGING 
3843
  PCTFREE 10
3844
  INITRANS 2
3845
  MAXTRANS 255
3846
  STORAGE
3847
  (
3848
    INITIAL 384K
3849
    MINEXTENTS 1
3850
    MAXEXTENTS 2147483645
3851
    FREELISTS 1
3852
    FREELIST GROUPS 1
3853
    BUFFER_POOL DEFAULT
3854
  )
3855
;
3856
 
3857
CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC)  TABLESPACE "SYSTEM"
3858
  LOGGING 
3859
  PCTFREE 10
3860
  INITRANS 2
3861
  MAXTRANS 255
3862
  STORAGE
3863
  (
3864
    INITIAL 384K
3865
    NEXT 64K
3866
    MINEXTENTS 1
3867
    MAXEXTENTS 2147483645
3868
    PCTINCREASE 0
3869
    FREELISTS 1
3870
    FREELIST GROUPS 1
3871
    BUFFER_POOL DEFAULT
3872
  )
3873
;
3874
 
3875
CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC)  TABLESPACE "USERS"
3876
  LOGGING 
3877
  PCTFREE 10
3878
  INITRANS 2
3879
  MAXTRANS 255
3880
  STORAGE
3881
  (
3882
    INITIAL 64K
3883
    MINEXTENTS 1
3884
    MAXEXTENTS 2147483645
3885
    FREELISTS 1
3886
    FREELIST GROUPS 1
3887
    BUFFER_POOL DEFAULT
3888
  )
3889
;
3890
 
3891
CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC)  TABLESPACE "USERS"
3892
  LOGGING 
3893
  PCTFREE 10
3894
  INITRANS 2
3895
  MAXTRANS 255
3896
  STORAGE
3897
  (
3898
    INITIAL 64K
3899
    MINEXTENTS 1
3900
    MAXEXTENTS 2147483645
3901
    FREELISTS 1
3902
    FREELIST GROUPS 1
3903
    BUFFER_POOL DEFAULT
3904
  )
3905
;
3906
 
3907
CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC)  TABLESPACE "SYSTEM"
3908
  LOGGING 
3909
  PCTFREE 10
3910
  INITRANS 2
3911
  MAXTRANS 255
3912
  STORAGE
3913
  (
3914
    INITIAL 64K
3915
    NEXT 64K
3916
    MINEXTENTS 1
3917
    MAXEXTENTS 2147483645
3918
    PCTINCREASE 0
3919
    FREELISTS 1
3920
    FREELIST GROUPS 1
3921
    BUFFER_POOL DEFAULT
3922
  )
3923
;
3924
 
3925
CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC)  TABLESPACE "SYSTEM"
3926
  LOGGING 
3927
  PCTFREE 10
3928
  INITRANS 2
3929
  MAXTRANS 255
3930
  STORAGE
3931
  (
3932
    INITIAL 64K
3933
    NEXT 64K
3934
    MINEXTENTS 1
3935
    MAXEXTENTS 2147483645
3936
    PCTINCREASE 0
3937
    FREELISTS 1
3938
    FREELIST GROUPS 1
3939
    BUFFER_POOL DEFAULT
3940
  )
3941
;
3942
 
3943
CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC)  TABLESPACE "SYSTEM"
3944
  LOGGING 
3945
  PCTFREE 10
3946
  INITRANS 2
3947
  MAXTRANS 255
3948
  STORAGE
3949
  (
3950
    INITIAL 64K
3951
    NEXT 64K
3952
    MINEXTENTS 1
3953
    MAXEXTENTS 2147483645
3954
    PCTINCREASE 0
3955
    FREELISTS 1
3956
    FREELIST GROUPS 1
3957
    BUFFER_POOL DEFAULT
3958
  )
3959
;
3960
 
3961
CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC)  TABLESPACE "USERS"
3962
  LOGGING 
3963
  PCTFREE 10
3964
  INITRANS 2
3965
  MAXTRANS 255
3966
  STORAGE
3967
  (
3968
    INITIAL 128K
3969
    MINEXTENTS 1
3970
    MAXEXTENTS 2147483645
3971
    FREELISTS 1
3972
    FREELIST GROUPS 1
3973
    BUFFER_POOL DEFAULT
3974
  )
3975
;
3976
 
3977
CREATE INDEX INX_PACKAGES_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID ASC)  TABLESPACE "USERS"
3978
  NOLOGGING 
3979
  PCTFREE 10
3980
  INITRANS 2
3981
  MAXTRANS 255
3982
  STORAGE
3983
  (
3984
    INITIAL 128K
3985
    MINEXTENTS 1
3986
    MAXEXTENTS 2147483645
3987
    FREELISTS 1
3988
    FREELIST GROUPS 1
3989
    BUFFER_POOL DEFAULT
3990
  )
3991
;
3992
 
3993
CREATE INDEX INX_PACKAGES_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION ASC)  TABLESPACE "USERS"
3994
  NOLOGGING 
3995
  PCTFREE 10
3996
  INITRANS 2
3997
  MAXTRANS 255
3998
  STORAGE
3999
  (
4000
    INITIAL 128K
4001
    MINEXTENTS 1
4002
    MAXEXTENTS 2147483645
4003
    FREELISTS 1
4004
    FREELIST GROUPS 1
4005
    BUFFER_POOL DEFAULT
4006
  )
4007
;
4008
 
4009
CREATE INDEX INX_PACKAGES_V_EXT ON PACKAGE_VERSIONS (V_EXT ASC)  TABLESPACE "USERS"
4010
  NOLOGGING 
4011
  PCTFREE 10
4012
  INITRANS 2
4013
  MAXTRANS 255
4014
  STORAGE
4015
  (
4016
    INITIAL 128K
4017
    MINEXTENTS 1
4018
    MAXEXTENTS 2147483645
4019
    FREELISTS 1
4020
    FREELIST GROUPS 1
4021
    BUFFER_POOL DEFAULT
4022
  )
4023
;
4024
 
4025
CREATE INDEX INX_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC)  TABLESPACE "USERS"
4026
  NOLOGGING 
4027
  PCTFREE 10
4028
  INITRANS 2
4029
  MAXTRANS 255
4030
  STORAGE
4031
  (
4032
    INITIAL 128K
4033
    MINEXTENTS 1
4034
    MAXEXTENTS 2147483645
4035
    FREELISTS 1
4036
    FREELIST GROUPS 1
4037
    BUFFER_POOL DEFAULT
4038
  )
4039
;
4040
 
4041
CREATE INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC)  TABLESPACE "USERS"
4042
  NOLOGGING 
4043
  PCTFREE 10
4044
  INITRANS 2
4045
  MAXTRANS 255
4046
  STORAGE
4047
  (
4048
    INITIAL 128K
4049
    MINEXTENTS 1
4050
    MAXEXTENTS 2147483645
4051
    FREELISTS 1
4052
    FREELIST GROUPS 1
4053
    BUFFER_POOL DEFAULT
4054
  )
4055
;
4056
 
4057
CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC)  TABLESPACE "USERS"
4058
  LOGGING 
4059
  PCTFREE 10
4060
  INITRANS 2
4061
  MAXTRANS 255
4062
  STORAGE
4063
  (
4064
    INITIAL 128K
4065
    MINEXTENTS 1
4066
    MAXEXTENTS 2147483645
4067
    FREELISTS 1
4068
    FREELIST GROUPS 1
4069
    BUFFER_POOL DEFAULT
4070
  )
4071
;
4072
 
4073
CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC)  TABLESPACE "SYSTEM"
4074
  LOGGING 
4075
  PCTFREE 10
4076
  INITRANS 2
4077
  MAXTRANS 255
4078
  STORAGE
4079
  (
4080
    INITIAL 128K
4081
    NEXT 64K
4082
    MINEXTENTS 1
4083
    MAXEXTENTS 2147483645
4084
    PCTINCREASE 0
4085
    FREELISTS 1
4086
    FREELIST GROUPS 1
4087
    BUFFER_POOL DEFAULT
4088
  )
4089
;
4090
 
4091
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
4092
  LOGGING 
4093
  PCTFREE 10
4094
  INITRANS 2
4095
  MAXTRANS 255
4096
  STORAGE
4097
  (
4098
    INITIAL 64K
4099
    MINEXTENTS 1
4100
    MAXEXTENTS 2147483645
4101
    FREELISTS 1
4102
    FREELIST GROUPS 1
4103
    BUFFER_POOL DEFAULT
4104
  )
4105
;
4106
 
4107
CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC)  TABLESPACE "USERS"
4108
  LOGGING 
4109
  PCTFREE 10
4110
  INITRANS 2
4111
  MAXTRANS 255
4112
  STORAGE
4113
  (
4114
    INITIAL 128K
4115
    MINEXTENTS 1
4116
    MAXEXTENTS 2147483645
4117
    FREELISTS 1
4118
    FREELIST GROUPS 1
4119
    BUFFER_POOL DEFAULT
4120
  )
4121
;
4122
 
4123
CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4124
 
4125
CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4126
 
4127
CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4128
 
4129
CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;
4130
 
4131
CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4132
 
4133
CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;
4134
 
4135
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4136
 
4137
CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4138
 
4139
CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;
4140
 
4141
CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4142
 
4143
CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4144
 
4145
CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4146
 
4147
CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;
4148
 
4149
CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4150
 
4151
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4152
 
4153
CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4154
 
4155
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
4156
 
4157
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
4158
 
4159
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
4160
 
4161
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
4162
 
4163
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
4164
 
4165
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
4166
 
4167
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
4168
 
4169
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
4170
 
4171
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
4172
 
4173
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
4174
 
4175
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
4176
 
4177
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
4178
 
4179
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
4180
 
4181
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
4182
 
4183
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
4184
 
4185
CREATE OR REPLACE PROCEDURE                 update_deprecation_state(nnrtag_id IN NUMBER) AS
4186
 
4187
recno NUMBER;
4188
 
4189
CURSOR deprecate_cur IS
4190
 
4191
SELECT rc.pv_id
4192
FROM release_content rc
4193
WHERE rtag_id = nnrtag_id
4194
 AND deprecated_state IN(7);
4195
 
4196
deprecate_rec deprecate_cur % rowtype;
4197
 
4198
BEGIN
4199
 
4200
  OPEN deprecate_cur;
4201
 
4202
  FETCH deprecate_cur
4203
  INTO deprecate_rec;
4204
 
4205
  WHILE deprecate_cur % FOUND
4206
  LOOP
4207
 
4208
    SELECT COUNT(*)
4209
    INTO recno
4210
    FROM package_dependencies pd,
4211
      release_content rc
4212
    WHERE pd.pv_id = deprecate_rec.pv_id
4213
     AND rc.pv_id = pd.dpv_id
4214
     AND rc.rtag_id = nnrtag_id
4215
     AND rc.deprecated_state IN(6,   7);
4216
 
4217
    IF recno = 0 THEN
4218
 
4219
      UPDATE release_content
4220
      SET pkg_id = NULL, deprecated_state = NULL
4221
      WHERE pv_id = deprecate_rec.pv_id
4222
       AND rtag_id = nnrtag_id;
4223
 
4224
    END IF;
4225
 
4226
    FETCH deprecate_cur
4227
    INTO deprecate_rec;
4228
  END LOOP;
4229
 
4230
END;
4231
/
4232
 
4233
CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
4234
 
4235
/******************************************************************************
4236
   NAME:       ADD_VIEW_MEMBERS
4237
   PURPOSE:    
4238
 
4239
   REVISIONS:
4240
   Ver        Date        Author           Description
4241
   ---------  ----------  ---------------  ------------------------------------
4242
   1.0        11/04/2006          1. Created this procedure.
4243
 
4244
   NOTES:
4245
 
4246
   Automatically available Auto Replace Keywords:
4247
      Object Name:     ADD_VIEW_MEMBERS
4248
      Sysdate:         11/04/2006
4249
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
4250
      Username:         (set in TOAD Options, Procedure Editor)
4251
      Table Name:       (set in the "New PL/SQL Object" dialog)
4252
 
4253
******************************************************************************/
4254
CURSOR user_cur IS
4255
	SELECT u.USER_ID
4256
	  FROM USERS u
4257
	 WHERE u.USER_ID IN (
4258
	 	   			   	SELECT * 
4259
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
4260
						);
4261
user_rec user_cur%ROWTYPE;
4262
 
4263
 
4264
BEGIN
4265
 
4266
	 OPEN user_cur;
4267
	 FETCH user_cur INTO user_rec;
4268
 
4269
	 WHILE user_cur%FOUND
4270
	 LOOP
4271
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
4272
	 	 VALUES ( nGroupId, user_rec.USER_ID);
4273
 
4274
	 	 FETCH user_cur INTO user_rec;	 
4275
	 END LOOP;	 
4276
 
4277
 
4278
 
4279
END ADD_VIEW_MEMBERS;
4280
/
4281
 
4282
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4283
	   	  		  								  nPkgIdList IN VARCHAR2,
4284
												  nUserId IN NUMBER
4285
	   	  		  								  ) IS
4286
 
4287
/******************************************************************************
4288
   NAME:       ADD_PACKAGE_INTEREST
4289
   PURPOSE:    
4290
 
4291
   REVISIONS:
4292
   Ver        Date        Author           Description
4293
   ---------  ----------  ---------------  ------------------------------------
4294
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4295
 
4296
   NOTES:
4297
 
4298
   Automatically available Auto Replace Keywords:
4299
      Object Name:     ADD_PACKAGE_INTEREST
4300
      Sysdate:         12/05/2006
4301
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4302
      Username:         (set in TOAD Options, Procedure Editor)
4303
      Table Name:       (set in the "New PL/SQL Object" dialog)
4304
 
4305
******************************************************************************/
4306
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4307
   nPkgId NUMBER;
4308
BEGIN
4309
 
4310
	 npkgidcollector := in_list_number2 (nPkgIdList);
4311
 
4312
	FOR i IN 1..npkgidcollector.COUNT
4313
	LOOP
4314
		nPkgId := npkgidcollector(i);
4315
 
4316
	 --- Insert into PACKAGE_INTEREST TABLE
4317
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4318
	 VALUES(nProjId, nPkgId, nUserId);
4319
	END LOOP;	 
4320
 
4321
 
4322
END ADD_PACKAGE_INTEREST_TEST;
4323
/
4324
 
4325
CREATE OR REPLACE PROCEDURE level_n_conflicts (
4326
   nnrtag_id       IN       NUMBER,
4327
   nnsession_num   IN       NUMBER,
4328
   nnrowcnt        OUT      NUMBER,
4329
   nniteration     IN       NUMBER
4330
)
4331
IS
4332
/* ---------------------------------------------------------------------------
4333
    Version: 3.0.1
4334
   --------------------------------------------------------------------------- */
4335
   previteration   NUMBER := nniteration - 1;
4336
BEGIN
4337
   /* ---------  LEVEL 1 CONFILCTS -----------
4338
   || Following states are used:
4339
   || 0 -> NOT FOUND
4340
   || 1 -> MAJOR
4341
   || 2 -> MINOR MINOR
4342
   */
4343
   INSERT INTO temp_env_states
4344
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4345
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4346
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4347
                 FROM package_dependencies dep,
4348
                      package_versions dpv,
4349
                      package_versions pv,
4350
                      release_content rel,
4351
                      temp_env_states tes
4352
                WHERE rel.pv_id = dep.pv_id
4353
                  AND rel.rtag_id = nnrtag_id
4354
                  AND dep.pv_id = pv.pv_id
4355
                  AND dep.dpv_id = dpv.pv_id
4356
                  AND dpv.pkg_id = tes.pkg_id
4357
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4358
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4359
                  AND tes.session_num = nnsession_num
4360
                  AND tes.level_num = previteration
4361
                  AND (dep.pv_id, dep.dpv_id) IN 
4362
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4363
                                                 || packages already stored in Temp Table.
4364
                                                 */
4365
                      (
4366
                         SELECT pd.pv_id, pd.dpv_id
4367
                           FROM package_dependencies pd, release_content rc
4368
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4369
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4370
                         MINUS
4371
                         SELECT igw.pv_id, igw.dpv_id
4372
                           FROM ignore_warnings igw
4373
                          WHERE igw.rtag_id = nnrtag_id);
4374
 
4375
   nnrowcnt := SQL%ROWCOUNT;
4376
END level_n_conflicts;
4377
/
4378
 
4379
CREATE OR REPLACE PROCEDURE Remove_Release_Content ( sPvIdList IN VARCHAR2,
4380
													 sNotPvIdList IN VARCHAR2,
4381
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
4382
/* ---------------------------------------------------------------------------
4383
    Version: 3.0
4384
   --------------------------------------------------------------------------- */
4385
 
4386
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4387
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4388
 
4389
BEGIN
4390
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
4391
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
4392
 
4393
    -- Delete From Release Content
4394
    DELETE
4395
      FROM RELEASE_CONTENT
4396
	 WHERE rtag_id = nRTagId
4397
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4398
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4399
 
4400
 
4401
 
4402
END Remove_Release_Content;
4403
/
4404
 
4405
CREATE OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
4406
 
4407
/* ---------------------------------------------------------------------------
4408
    Version: 3.0.0
4409
   --------------------------------------------------------------------------- */
4410
 
4411
	sPkgName VARCHAR2(4000);
4412
	sVext VARCHAR2(4000);
4413
 
4414
BEGIN
4415
 
4416
	-- Get package details
4417
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
4418
	  FROM PACKAGE_VERSIONS pv,
4419
	  	   PACKAGES pkg
4420
	 WHERE pv.PKG_ID = pkg.PKG_ID
4421
	   AND pv.PV_ID = nPvId;
4422
 
4423
 
4424
	-- Generate Label for automated build
4425
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
4426
 
4427
END GET_AUTOMATED_LABEL;
4428
/
4429
 
55 mhunt 4430
CREATE OR REPLACE PROCEDURE UnRipple_Package_Indirect (
4431
        nPvId IN NUMBER,
4432
        nRtagId IN NUMBER,
4433
        nUserId IN NUMBER,
4434
        nrootCausePvId IN NUMBER,
4435
        srootCause IN VARCHAR2,
4436
        srootFile IN VARCHAR2
4437
    ) IS
4438
    ReleaseLocation VARCHAR2(4000);
4439
BEGIN
4440
 
4441
    -- UnRipple Package
4442
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
4443
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
4444
 
4445
    /* LOG ACTION */
4446
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
4447
              FROM PROJECTS proj,
4448
                   RELEASE_TAGS rt
4449
             WHERE rt.RTAG_ID = nRtagId
4450
               AND rt.PROJ_ID = proj.PROJ_ID;
4451
 
4452
    /* LOG ACTION */
4453
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
4454
 
4455
END UnRipple_Package_Indirect;
4456
/
4457
 
51 mhunt 4458
CREATE OR REPLACE PACKAGE pk_package
4459
IS
4460
/*
4461
------------------------------
4462
||  Last Modified:  Jeremy Tweddle
4463
||  Modified Date:  24/08/2007
4464
||
4465
------------------------------
4466
*/
4467
   TYPE typecur IS REF CURSOR;
4468
 
4469
/*================================================================================================*/
4470
   PROCEDURE new_version (
4471
      nlastpvid                   IN       NUMBER,
4472
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4473
      cbuildtype                  IN       CHAR,
4474
      nsettopvid                  IN       NUMBER DEFAULT NULL,
4475
      nrtagid                     IN       NUMBER,
4476
      nuserid                     IN       NUMBER,
4477
      enumissues_state_imported   IN       NUMBER,
4478
      returnpvid                  OUT      NUMBER
4479
   );
4480
 
4481
   PROCEDURE change_state (
4482
      pvid       IN   NUMBER,
4483
      newstate   IN   package_versions.dlocked%TYPE,
4484
      userid     IN   NUMBER
4485
   );
4486
 
4487
   PROCEDURE new_patch (
4488
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
4489
      nparentpvid        IN       NUMBER,
4490
      spatchidlist       IN       VARCHAR2,
4491
      nuserid            IN       NUMBER,
4492
      returnpatchid      OUT      NUMBER
4493
   );
4494
 
4495
   PROCEDURE obsolete_patch (
4496
      patchid            IN   NUMBER,
4497
      isobsolete         IN   CHAR,
4498
      obsoletecomments   IN   VARCHAR2,
4499
      userid             IN   NUMBER
4500
   );
4501
 
4502
   PROCEDURE obsolete_patches (
4503
      spatchidlist       IN   VARCHAR2,
4504
      isobsolete         IN   CHAR,
4505
      obsoletecomments   IN   VARCHAR2,
4506
      userid             IN   NUMBER
4507
   );
4508
 
4509
   PROCEDURE destroy_package (
4510
      pvid               IN       NUMBER,
4511
      overridewarnings   IN       CHAR DEFAULT 'N',
4512
      problemstring      OUT      VARCHAR2
4513
   );
4514
 
4515
   PROCEDURE add_process (
4516
      nprocid         IN   processes.proc_id%TYPE,
4517
      shealthtag      IN   processes.proc_name%TYPE,
4518
      sprocdesc       IN   processes.proc_description%TYPE,
4519
      scmdinterface   IN   processes.run_as%TYPE,
4520
      spkgowner       IN   processes.pkg_owner%TYPE,
4521
      sisinterface    IN   processes.is_interface%TYPE,
4522
      npvid           IN   package_processes.pv_id%TYPE,
4523
      nuserid         IN   NUMBER
4524
   );
4525
 
4526
   PROCEDURE add_package_process (
4527
      nprocidlist   IN   VARCHAR2,
4528
      npvid         IN   package_processes.pv_id%TYPE,
4529
      nuserid       IN   NUMBER
4530
   );
4531
 
4532
 
4533
 
4534
   PROCEDURE remove_process (
4535
      nprocid   IN   package_processes.proc_id%TYPE,
4536
      npvid     IN   package_processes.pv_id%TYPE,
4537
      nuserid   IN   NUMBER
4538
   );
4539
 
4540
   PROCEDURE move_package (
4541
   	  npvid  			  IN package_versions.pv_id%TYPE,
4542
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
4543
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
4544
	  nuserid			  IN NUMBER		 
4545
   ); 
4546
 
4547
   PROCEDURE modify_product_state (
4548
   	  npvid IN package_versions.pv_id%TYPE,
4549
	  nrtagid IN release_tags.rtag_id%TYPE,
4550
	  nstateid IN product_states.state_id%TYPE,
4551
	  nuserid IN NUMBER
4552
   );
4553
 
4554
   PROCEDURE add_code_review_url (
4555
        npvid           IN    NUMBER,
4556
        nprojid         IN    NUMBER,
4557
        surl            IN    VARCHAR2,
4558
        sreason         IN    VARCHAR2,
4559
        ddateofreview   IN    DATE
4560
   );
4561
 
4562
   PROCEDURE update_code_review_url (
4563
        ncrid           IN    NUMBER,
4564
        nprojid         IN    NUMBER,
4565
        surl            IN    VARCHAR2,
4566
        sreason         IN    VARCHAR2
4567
   );
4568
 
4569
   PROCEDURE remove_code_review_url (
4570
        ncrid           IN    NUMBER
4571
   );
4572
/*================================================================================================*/
4573
END pk_package;
4574
/
4575
 
4576
CREATE OR REPLACE PROCEDURE Add_Runtime_Dependency ( NNpv_id IN NUMBER,
4577
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
4578
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4579
                                                     NNuser_id IN NUMBER
4580
                                                    ) IS
4581
/* ---------------------------------------------------------------------------
4582
    Version: 3.1
4583
   --------------------------------------------------------------------------- */
4584
 
4585
    retRTD_ID NUMBER;
4586
 
4587
	CURSOR rtd_cur IS
4588
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
4589
    rtd_rec rtd_cur%ROWTYPE;
4590
 
4591
BEGIN
4592
    --- Seed database with package_name and version if required ---
4593
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
4594
 
4595
	OPEN rtd_cur;
4596
    FETCH rtd_cur INTO rtd_rec;
4597
 
4598
    IF rtd_cur%NOTFOUND
4599
    THEN
4600
		/* Make sure it does not exists already as runtime dependency */
4601
 
4602
		--- Add new Runtime Dependency ---
4603
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
4604
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
4605
 
4606
    	/* LOG ACTION */
4607
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
4608
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
4609
 
4610
	END IF;
4611
 
4612
 
4613
END Add_Runtime_Dependency;
4614
/
4615
 
4616
CREATE OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,
4617
	   	  		  								  nPkgIdList IN VARCHAR2,
4618
												  nUserId IN NUMBER
4619
	   	  		  								  ) IS
4620
 
4621
/******************************************************************************
4622
   NAME:       ADD_PACKAGE_INTEREST
4623
   PURPOSE:    
4624
 
4625
   REVISIONS:
4626
   Ver        Date        Author           Description
4627
   ---------  ----------  ---------------  ------------------------------------
4628
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
4629
 
4630
   NOTES:
4631
 
4632
   Automatically available Auto Replace Keywords:
4633
      Object Name:     ADD_PACKAGE_INTEREST
4634
      Sysdate:         12/05/2006
4635
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
4636
      Username:         (set in TOAD Options, Procedure Editor)
4637
      Table Name:       (set in the "New PL/SQL Object" dialog)
4638
 
4639
******************************************************************************/
4640
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
4641
   nPkgId NUMBER;
4642
BEGIN
4643
 
4644
	 npkgidcollector := in_list_number2 (nPkgIdList);
4645
 
4646
	FOR i IN 1..npkgidcollector.COUNT
4647
	LOOP
4648
		nPkgId := npkgidcollector(i);
4649
 
4650
	 --- Insert into PACKAGE_INTEREST TABLE
4651
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
4652
	 VALUES(nProjId, nPkgId, nUserId);
4653
	END LOOP;	 
4654
 
4655
 
4656
END ADD_PACKAGE_INTEREST;
4657
/
4658
 
4659
CREATE OR REPLACE FUNCTION CAN_EDIT_PKG_IN_PROJECT ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
4660
 
4661
/* ---------------------------------------------------------------------------
4662
    Version: 3.0.0
4663
   --------------------------------------------------------------------------- */
4664
 
4665
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
4666
	ProjId NUMBER;
4667
	RowCount NUMBER;
4668
	cReleaseMode CHAR(1);
4669
 
4670
BEGIN
4671
 
4672
	--RETURN 1;
4673
 
4674
 
4675
	/*--------------- Business Rules Here -------------------*/
4676
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
4677
		RETURN 0;
4678
	END IF;
4679
	/*-------------------------------------------------------*/
4680
 
4681
 
4682
 
4683
 
4684
 
4685
 
4686
	/*-- First Check. See if package is used through release reference --*/
4687
	SELECT COUNT(rc.PV_ID) INTO RowCount
4688
	  FROM (
4689
	  		SELECT rl.REF_RTAG_ID
4690
			  FROM RELEASE_LINKS rl
4691
			 WHERE rl.RTAG_ID = nRtagId
4692
	  		) rl,
4693
			RELEASE_CONTENT rc
4694
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
4695
	    AND rc.PV_ID = nPvId;			
4696
 
4697
 
4698
	-- Decide if package can be edited  
4699
	IF RowCount > 0 THEN
4700
		-- Package is referenced from other release, hence cannot be edited
4701
		RETURN 0;	
4702
 
4703
	ELSE
4704
 
4705
		-- Check is only done for releases in restrictive mode
4706
		SELECT rt.OFFICIAL INTO cReleaseMode
4707
		  FROM RELEASE_TAGS rt
4708
		 WHERE rt.RTAG_ID = nRtagId;
4709
 
4710
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
4711
			-- Do not do any firther checking,
4712
			-- Package is editable here
4713
			RETURN 1;
4714
		END IF;	
4715
 
4716
	END IF;
4717
 
4718
 
4719
 
4720
 
4721
	/*-- Further checking --*/
4722
	-- Get proj_id
4723
	SELECT rt.PROJ_ID  INTO  ProjId
4724
	  FROM RELEASE_TAGS rt
4725
	 WHERE rt.RTAG_ID = nRtagId;
4726
 
4727
 
4728
 
4729
	BEGIN
4730
 
4731
		-- Get v_ext
4732
		SELECT pv.V_EXT  INTO  Vext
4733
		  FROM PACKAGE_VERSIONS pv
4734
		 WHERE pv.PV_ID = nPvId;  
4735
 
4736
		EXCEPTION
4737
	    	WHEN NO_DATA_FOUND THEN
4738
	       		Vext := NULL;
4739
 
4740
	END;	 
4741
 
4742
 
4743
	--Temp Hack for Step Project
4744
	IF ProjId != 281 THEN
4745
		-- Find if package can be edited in this project
4746
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
4747
	 		FROM PROJECT_EXTENTIONS pe
4748
			WHERE pe.PROJ_ID != ProjId  
4749
	  		AND pe.EXT_NAME = VExt;
4750
	END IF;		
4751
 
4752
 
4753
	-- Decide if package can be edited  
4754
	IF RowCount > 0 THEN
4755
		-- Package extension is found in other projects, hece NOT EDITABLE
4756
		RETURN 0;
4757
	ELSE
4758
		RETURN 1;	
4759
	END IF;
4760
 
4761
 
4762
END CAN_EDIT_PKG_IN_PROJECT;
4763
/
4764
 
4765
CREATE OR REPLACE PACKAGE pk_archive
4766
IS
4767
/*
4768
------------------------------
4769
||  Author:  Rupesh Solanki
4770
||  Date:    26 October 2006
4771
||  Version:   1.0
4772
------------------------------
4773
*/
4774
 
4775
   /*================================================================================================*/
4776
   PROCEDURE populate_packages_table;
4777
 
4778
   PROCEDURE populate_archive_data_table (
4779
      nrtagid   IN   release_tags.rtag_id%TYPE
4780
   );
4781
 
4782
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
4783
 
4784
   PROCEDURE migrate_rtag_to_archive_schema (
4785
      nrtagid   IN   release_tags.rtag_id%TYPE
4786
   );
4787
 
4788
   PROCEDURE clean_up_archive_data_table (
4789
      nrtagid   IN   release_tags.rtag_id%TYPE
4790
   );
4791
 
4792
   PROCEDURE write_action_log (
4793
      nuserid   IN   NUMBER,
4794
      nrtagid   IN   release_tags.rtag_id%TYPE
4795
   );
4796
/*================================================================================================*/
4797
END pk_archive;
4798
/
4799
 
4800
CREATE OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS
4801
 
4802
/* ---------------------------------------------------------------------------
4803
    Version: 3.3
4804
   --------------------------------------------------------------------------- */
4805
    rowCnt NUMBER := 0;
4806
    iteration NUMBER := 2;          -- Iterations counter
4807
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
4808
                                    -- This will prevent infinite loops if cyrcular dependencies are found
4809
    sessionNum NUMBER;
4810
BEGIN
4811
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
4812
 
4813
 
4814
    -- Redo Patch Ignore warnings
4815
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
4816
 
4817
 
4818
    Level_One_Conflicts ( NNrtag_id, sessionNum );
4819
 
4820
    LOOP
4821
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
4822
        iteration := iteration + 1;
4823
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
4824
    END LOOP;
4825
 
4826
    Update_Package_States ( NNrtag_id, sessionNum );
4827
 
4828
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
4829
 
4830
    -- Flag Packages with New Patches Available
4831
    Check_New_Patches ( NNrtag_id );
4832
 
4833
	Clean_Do_Not_Ripple( NNrtag_id );
4834
 
4835
 
4836
	/* Circular Dependency Flag */
4837
    /*
4838
	IF iteration > maxIterations
4839
	THEN
4840
		UPDATE release_tags SET
4841
		   	   circular_dependency = 'Y'
4842
		 WHERE rtag_id = NNrtag_id;
4843
	ELSE
4844
		UPDATE release_tags SET
4845
		   	   circular_dependency = NULL
4846
		 WHERE rtag_id = NNrtag_id;
4847
	END IF;
4848
    */
4849
END Rebuild_Environment;
4850
/
4851
 
4852
CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS
4853
 
4854
/******************************************************************************
4855
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4856
   PURPOSE:    
4857
 
4858
   REVISIONS:
4859
   Ver        Date        Author           Description
4860
   ---------  ----------  ---------------  ------------------------------------
4861
   1.0        6/12/2006          1. Created this procedure.
4862
 
4863
   NOTES:
4864
 
4865
   Automatically available Auto Replace Keywords:
4866
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4867
      Sysdate:         6/12/2006
4868
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4869
      Username:         (set in TOAD Options, Procedure Editor)
4870
      Table Name:       (set in the "New PL/SQL Object" dialog)
4871
 
4872
******************************************************************************/
4873
 
4874
	CURSOR curInfo IS
4875
    SELECT PV_ID
4876
	FROM PACKAGE_BUILD_ENV
4877
	WHERE BE_ID IN (11, 12);
4878
    recInfo curInfo%ROWTYPE;
4879
 
4880
 
4881
BEGIN
4882
 
4883
	OPEN curInfo;
4884
    FETCH curInfo INTO recInfo;
4885
 
4886
	WHILE curInfo%FOUND
4887
	LOOP
4888
 
4889
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4890
		VALUES( recInfo.PV_ID, 2, 5);
4891
 
4892
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4893
 
4894
		FETCH curInfo INTO recInfo;
4895
 
4896
	END LOOP;
4897
 
4898
	CLOSE curInfo;
4899
 
4900
 
4901
 
4902
 
4903
END INSERT_INTO_PACKAGE_BUILD_INFO;
4904
/
4905
 
4906
CREATE OR REPLACE PROCEDURE check_new_patches (
4907
   nrtagid   IN   release_content.rtag_id%TYPE
4908
)
4909
IS
4910
/* ---------------------------------------------------------------------------
4911
    Version: 3.0
4912
   --------------------------------------------------------------------------- */
4913
BEGIN
4914
   /*--------------- Business Rules Here -------------------*/
4915
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
4916
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
4917
   END IF
4918
 
4919
   /*-------------------------------------------------------*/
4920
   UPDATE release_content rc
4921
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
4922
    WHERE rc.pv_id IN (
4923
             SELECT prod.pv_id
4924
               FROM (SELECT   pp.pv_id AS orig_parent_id,
4925
                              COUNT (*) AS num_of_patches
4926
                         FROM release_content rc, package_patches pp
4927
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4928
                     GROUP BY pp.pv_id) orig,
4929
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
4930
                              COUNT (*) AS num_of_patches
4931
                         FROM release_content rc,
4932
                              package_patches pp,
4933
                              package_dependencies dep,
4934
                              package_versions pv,
4935
                              package_patches prodpp
4936
                        WHERE rc.pv_id = pp.pv_id
4937
                          AND rc.rtag_id = nrtagid
4938
                          AND pp.patch_id = dep.dpv_id
4939
                          AND dep.pv_id = pv.pv_id
4940
                          AND pv.is_patch = 'Y'
4941
                          AND pv.dlocked = 'Y'
4942
                          AND prodpp.patch_id = dep.pv_id
4943
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
4944
                    release_content rc
4945
              WHERE orig.orig_parent_id = prod.pv_id
4946
                AND orig.num_of_patches != prod.num_of_patches
4947
                AND rc.rtag_id = nrtagid
4948
                AND rc.pv_id = prod.pv_id
4949
                AND rc.pkg_state = 0
4950
             UNION
4951
             SELECT   prodpp.pv_id
4952
                 FROM release_content rc,
4953
                      package_patches pp,
4954
                      package_dependencies dep,
4955
                      package_versions pv,
4956
                      package_patches prodpp
4957
                WHERE rc.pv_id = pp.pv_id
4958
                  AND rc.rtag_id = nrtagid
4959
                  AND pp.patch_id = dep.dpv_id
4960
                  AND dep.pv_id = pv.pv_id
4961
                  AND pv.is_patch = 'Y'
4962
                  AND pv.dlocked = 'Y'
4963
                  AND prodpp.patch_id = dep.pv_id
4964
             GROUP BY prodpp.pv_id, pp.pv_id
4965
             MINUS
4966
             SELECT   pp.pv_id
4967
                 FROM release_content rc, package_patches pp
4968
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4969
             GROUP BY pp.pv_id);
4970
END check_new_patches;
4971
/
4972
 
4973
CREATE OR REPLACE PROCEDURE Update_Package_Dependency ( NNpv_id IN NUMBER,
4974
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
4975
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4976
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
4977
                                                        NNuser_id IN NUMBER,
4978
                                                        NNdelete_old_dependency IN NUMBER
4979
                                                       ) IS
4980
/* ---------------------------------------------------------------------------
4981
    Version: 3.3
4982
   --------------------------------------------------------------------------- */
4983
 
4984
    retPV_ID NUMBER;
4985
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
4986
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4987
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
4988
    NNpkg_id NUMBER;
4989
    NNdpkg_id NUMBER;
4990
 
4991
BEGIN
4992
    --- Seed database with package_name and version if required ---
4993
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
4994
 
4995
    -- get v_ext,pkg_id of current dependency
4996
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
4997
      FROM PACKAGE_VERSIONS
4998
     WHERE pv_id = retPV_ID;
4999
 
5000
    -- get pkg_id of parent package
5001
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
5002
      FROM PACKAGE_VERSIONS
5003
     WHERE pv_id = NNpv_id;
5004
 
5005
 
5006
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
5007
    	( (PvIsPatch IS NOT NULL) )THEN
5008
 
5009
	    IF NNdelete_old_dependency = 1 THEN
5010
	        /* Used for CUSTOM dependency add/edit */
5011
 
5012
	        --- Remove old dependency ---
5013
            IF (PvIsPatch IS NULL) THEN
5014
            	-- Do it for Packages
5015
		        DELETE FROM PACKAGE_DEPENDENCIES
5016
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
5017
		            (
5018
		            SELECT dep.*
5019
		              FROM PACKAGE_DEPENDENCIES dep,
5020
		                   PACKAGE_VERSIONS dpv,
5021
		                   PACKAGE_VERSIONS pv
5022
		             WHERE dep.dpv_id = dpv.pv_id
5023
		               AND dep.pv_id = NNpv_id
5024
		               AND pv.pv_id = retPV_ID
5025
		               AND dpv.pkg_id = pv.pkg_id
5026
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
5027
		            );
5028
            ELSE
5029
            	-- Do it for Patches
5030
                DELETE FROM PACKAGE_DEPENDENCIES
5031
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
5032
		            (
5033
		            SELECT dep.*
5034
		              FROM PACKAGE_DEPENDENCIES dep
5035
		             WHERE dep.dpv_id = retPV_ID
5036
		               AND dep.pv_id = NNpv_id
5037
		            );
5038
			END IF;
5039
 
5040
	    END IF;
5041
 
5042
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
5043
 
5044
	    --- Add new dependency ---
5045
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
5046
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
5047
 
5048
	END IF;
5049
 
5050
END Update_Package_Dependency;
5051
/
5052
 
5053
CREATE OR REPLACE PACKAGE PK_RMAPI_test IS
5054
/*
5055
------------------------------
5056
||  Last Modified:  S.Vukovic
5057
||  Modified Date:  19/May/2005
5058
||  Spec Version:   2.0
5059
------------------------------
5060
*/
5061
 
5062
	TYPE typeCur IS REF CURSOR;
5063
 
5064
    /*================================================================================================*/
5065
 
5066
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
5067
 
5068
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
5069
 
5070
 
5071
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
5072
							 PkgName IN VARCHAR2, 
5073
							 VExt IN VARCHAR2,
5074
							 NewPkgVersion IN VARCHAR2, 
5075
							 Label IN VARCHAR2,
5076
							 DependenciesImportList IN VARCHAR2,
5077
							 IsRippled IN NUMBER,
5078
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
5079
 
5080
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
5081
 
5082
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
5083
 
5084
	PROCEDURE CQ_TEST;
5085
 
5086
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
5087
	/*================================================================================================*/
5088
 
5089
END PK_RMAPI_test;
5090
/
5091
 
5092
CREATE OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2
5093
IS
5094
/* ---------------------------------------------------------------------------
5095
    Version: 1.0.0
5096
   --------------------------------------------------------------------------- */
5097
BEGIN
5098
    IF is_number(s_version) AND LENGTH(s_version) > 3
5099
    THEN
5100
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
5101
    ELSE
5102
        RETURN s_version;
5103
    END IF;
5104
END get_patch_version;
5105
/
5106
 
5107
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;
5108
/
5109
 
5110
CREATE OR REPLACE PACKAGE PK_APP_UTILS IS
5111
/*
5112
------------------------------
5113
||  Last Modified:  S.Vukovic
5114
||  Modified Date:  26/Apr/2005
5115
||  Spec Version:   1.0
5116
------------------------------
5117
*/
5118
 
5119
	TYPE typeCur IS REF CURSOR;
5120
 
5121
    /*================================================================================================*/
5122
 
5123
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
5124
 
5125
	/*================================================================================================*/
5126
 
5127
END PK_APP_UTILS;
5128
/
5129
 
5130
CREATE OR REPLACE PROCEDURE Log_Project_Action ( nProjId IN NUMBER,
5131
												 enumActionTypeName IN VARCHAR2,
5132
		                                         nUserId IN NUMBER,
5133
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
5134
												 nRtagId IN NUMBER  ) IS
5135
/* ---------------------------------------------------------------------------
5136
    Version: 3.0
5137
   --------------------------------------------------------------------------- */
5138
 
5139
    ActionTypeId NUMBER;
5140
 
5141
BEGIN
5142
 
5143
    -- Get Action Type FK
5144
    SELECT act.ACTTYPE_ID INTO ActionTypeId
5145
      FROM ACTION_TYPE act
5146
     WHERE act.NAME = enumActionTypeName;
5147
 
5148
 
5149
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
5150
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
5151
 
5152
 
5153
END Log_Project_Action;
5154
/
5155
 
5156
CREATE OR REPLACE FUNCTION IN_LIST_VARCHAR2 ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
5157
 
5158
/* ---------------------------------------------------------------------------
5159
    Version: 3.1
5160
   --------------------------------------------------------------------------- */
5161
 
5162
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
5163
	pos				   NUMBER;
5164
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
5165
	val				   VARCHAR2(4000);
5166
 
5167
BEGIN
5168
 
5169
	IF NOT sInList IS NULL
5170
	THEN
5171
		LOOP
5172
	        EXIT WHEN in_list IS NULL;
5173
	        pos := INSTR ( in_list, cSeparator );
5174
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
5175
 
5176
			IF (NOT val IS NULL) THEN
5177
		        cItemCollection.extend;
5178
		        cItemCollection(cItemCollection.count) := val;
5179
			END IF;
5180
 
5181
	        in_list := SUBSTR ( in_list, pos+1 );
5182
		END LOOP;
5183
	END IF;
5184
 
5185
	RETURN cItemCollection;
5186
END IN_LIST_VARCHAR2;
5187
/
5188
 
5189
CREATE OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5190
                                               retPKG_ID OUT NUMBER ) IS
5191
/* ---------------------------------------------------------------------------
5192
    Version: 3.0.0
5193
   --------------------------------------------------------------------------- */
5194
 
5195
    CURSOR packages_cur IS
5196
        SELECT pkg.pkg_id
5197
          FROM packages pkg
5198
         WHERE pkg.pkg_name = SSpkg_name;
5199
    packages_rec packages_cur%ROWTYPE;
5200
 
5201
 
5202
BEGIN
5203
 
5204
    /* ---------------------------------------------------- */
5205
    /* Find if package name exists                          */
5206
    /* ---------------------------------------------------- */
5207
 
5208
    OPEN packages_cur;
5209
    FETCH packages_cur INTO packages_rec;
5210
 
5211
    IF packages_cur%NOTFOUND
5212
    THEN
5213
        -- Create new pkg_name --
5214
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
5215
 
5216
        INSERT INTO packages ( pkg_id, pkg_name )
5217
        VALUES ( retPKG_ID, SSpkg_name );
5218
 
5219
    ELSE
5220
        retPKG_ID := packages_rec.pkg_id;
5221
 
5222
    END IF;
5223
 
5224
 
5225
    CLOSE packages_cur;
5226
 
5227
END New_Package_Name;
5228
/
5229
 
5230
CREATE OR REPLACE PROCEDURE UPDATE_PROCESSES
5231
IS
5232
 
5233
proc_id NUMBER;
5234
/******************************************************************************
5235
   NAME:       DELETE_DO_NOT_RIPPLE
5236
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
5237
               IS RELEASED
5238
 
5239
   REVISIONS:
5240
   Ver        Date        Author           Description
5241
   ---------  ----------  ---------------  ------------------------------------
5242
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
5243
 
5244
   NOTES:
5245
 
5246
   Automatically available Auto Replace Keywords:
5247
      Object Name:     DELETE_DO_NOT_RIPPLE
5248
      Sysdate:         21/04/2006
5249
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
5250
      Username:         (set in TOAD Options, Procedure Editor)
5251
      Table Name:       (set in the "New PL/SQL Object" dialog)
5252
 
5253
******************************************************************************/
5254
   CURSOR ripple_cur
5255
   IS
5256
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
5257
 
5258
   ripple_rec   ripple_cur%ROWTYPE;
5259
BEGIN
5260
   OPEN ripple_cur;
5261
 
5262
   FETCH ripple_cur
5263
    INTO ripple_rec;
5264
 
5265
   WHILE ripple_cur%FOUND
5266
   LOOP
5267
 
5268
 
5269
update deployment_manager.processes_config 
5270
set proc_id = ripple_rec.proc_id
5271
where pkg_health_tag = ripple_rec.proc_name
5272
and cmd_interface IS NULL
5273
and pkg_owner IS NULL
5274
and is_interface IS NULL; 
5275
 
5276
 
5277
      FETCH ripple_cur
5278
       INTO ripple_rec;
5279
   END LOOP;
5280
END UPDATE_PROCESSES;
5281
/
5282
 
5283
CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS
5284
 
5285
/******************************************************************************
5286
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
5287
   PURPOSE:    
5288
 
5289
   REVISIONS:
5290
   Ver        Date        Author           Description
5291
   ---------  ----------  ---------------  ------------------------------------
5292
   1.0        6/12/2006          1. Created this procedure.
5293
 
5294
   NOTES:
5295
 
5296
   Automatically available Auto Replace Keywords:
5297
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
5298
      Sysdate:         6/12/2006
5299
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
5300
      Username:         (set in TOAD Options, Procedure Editor)
5301
      Table Name:       (set in the "New PL/SQL Object" dialog)
5302
 
5303
******************************************************************************/
5304
 
5305
	CURSOR curInfo IS
5306
    SELECT PV_ID
5307
	FROM PACKAGE_BUILD_ENV
5308
	WHERE BE_ID IN (11, 12);
5309
    recInfo curInfo%ROWTYPE;
5310
 
5311
 
5312
BEGIN
5313
 
5314
	OPEN curInfo;
5315
    FETCH curInfo INTO recInfo;
5316
 
5317
	WHILE curInfo%FOUND
5318
	LOOP
5319
 
5320
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
5321
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
5322
 
5323
		FETCH curInfo INTO recInfo;
5324
 
5325
	END LOOP;
5326
 
5327
	CLOSE curInfo;
5328
 
5329
 
5330
 
5331
 
5332
END INSERT_MULTIPLE_STICKY_NOTES;
5333
/
5334
 
5335
CREATE OR REPLACE PACKAGE PK_RELEASE_TEST IS
5336
/*
5337
------------------------------
5338
||  Last Modified:  S.Vukovic
5339
||  Modified Date:  12/Sep/2005
5340
||  Body Version:   3.0
5341
------------------------------
5342
*/
5343
 
5344
	TYPE typeCur IS REF CURSOR;
5345
 
5346
    /*================================================================================================*/
5347
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5348
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
5349
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5350
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5351
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5352
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5353
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5354
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5355
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5356
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5357
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5358
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5359
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5360
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5361
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5362
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5363
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5364
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5365
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5366
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5367
	/*================================================================================================*/
5368
 
5369
END PK_RELEASE_TEST;
5370
/
5371
 
5372
CREATE OR REPLACE FUNCTION ORA_SYSDATETIME
5373
RETURN DATE
5374
IS
5375
/* ---------------------------------------------------------------------------
5376
    Version: 3.0.0
5377
   --------------------------------------------------------------------------- */
5378
BEGIN
5379
 
5380
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
5381
END ORA_SYSDATETIME;
5382
/
5383
 
5384
CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2
5385
IS
5386
/* ---------------------------------------------------------------------------
5387
    Version: 1.0.0
5388
   --------------------------------------------------------------------------- */
5389
BEGIN
5390
    IF is_number(s_version) AND LENGTH(s_version) > 3
5391
    THEN
5392
        RETURN MOD(TO_NUMBER(s_version), 1000);
5393
    ELSE
5394
        RETURN 0;
5395
    END IF;
5396
END get_build_number;
5397
/
5398
 
5399
CREATE OR REPLACE PACKAGE PK_RELEASE IS
5400
/*
5401
------------------------------
5402
||  Last Modified:  S.Vukovic
5403
||  Modified Date:  12/Sep/2005
5404
||  Body Version:   3.0
5405
------------------------------
5406
*/
5407
 
5408
	TYPE typeCur IS REF CURSOR;
5409
 
5410
    /*================================================================================================*/
5411
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
5412
	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 );
5413
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
5414
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
5415
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
5416
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
5417
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
5418
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
5419
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
5420
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5421
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
5422
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5423
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5424
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
5425
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
5426
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
5427
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
5428
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
5429
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
5430
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
5431
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
5432
 
5433
	/*================================================================================================*/
5434
 
5435
END PK_RELEASE;
5436
/
5437
 
5438
CREATE OR REPLACE PROCEDURE New_Additional_Note ( pnPv_id IN NUMBER,
5439
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
5440
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
5441
                                                  pnUser_id IN NUMBER,
5442
                                                  outErrCode OUT NUMBER
5443
                                                 ) IS
5444
/* ---------------------------------------------------------------------------
5445
    Version: 3.0.0
5446
   --------------------------------------------------------------------------- */
5447
 
5448
    newID NUMBER;
5449
 
5450
	CURSOR an_duplicate_cur IS
5451
        SELECT note_id
5452
          FROM ADDITIONAL_NOTES
5453
         WHERE pv_id = pnPv_id
5454
           AND note_title = psNote_title;
5455
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
5456
 
5457
BEGIN
5458
	outErrCode := -1;		-- Set default return error code to ERROR state
5459
 
5460
	OPEN an_duplicate_cur;
5461
    FETCH an_duplicate_cur INTO an_duplicate_rec;
5462
 
5463
    IF an_duplicate_cur%NOTFOUND
5464
    THEN
5465
		/* No duplicate titles */
5466
		-- Get new ID --
5467
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
5468
 
5469
		--- Add Additional Note ---
5470
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
5471
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
5472
		outErrCode := 0;		-- Set return to SUCCESS
5473
	END IF;
5474
 
5475
	CLOSE an_duplicate_cur;
5476
END New_Additional_Note;
5477
/
5478
 
5479
CREATE OR REPLACE PROCEDURE                 DEPLOY_TO_RELEASE IS
5480
 
5481
/******************************************************************************
5482
 
5483
 
5484
******************************************************************************/
5485
 
5486
	CURSOR curInfo IS
5487
    SELECT DISTINCT
5488
        qry.DPV_ID
5489
     FROM (
5490
             SELECT dep.*,
5491
                    LEVEL AS LEVEL_NUM
5492
               FROM PACKAGE_DEPENDENCIES dep
5493
             START WITH dep.PV_ID IN ( 
5494
 
5495
                        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,
5496
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
5497
 
5498
                        ) 
5499
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
5500
 		) qry,
5501
 		PACKAGES pkg,
5502
		PACKAGE_VERSIONS pv
5503
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
5504
         and (pv.is_patch is null or pv.is_patch = 'N');
5505
    recInfo curInfo%ROWTYPE;
5506
 
5507
 
5508
BEGIN
5509
 
5510
	OPEN curInfo;
5511
    FETCH curInfo INTO recInfo;
5512
 
5513
	WHILE curInfo%FOUND
5514
	LOOP
5515
 
5516
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
5517
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
5518
 
5519
    FETCH curInfo INTO recInfo;
5520
 
5521
	END LOOP;
5522
 
5523
	CLOSE curInfo;
5524
 
5525
 
5526
 
5527
 
5528
END DEPLOY_TO_RELEASE;
5529
/
5530
 
5531
CREATE OR REPLACE PROCEDURE New_Patch ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5532
 	   	  		  					  	NNparent_id IN NUMBER,
5533
                                        sPatchIdList IN VARCHAR2,
5534
										NNuser_id IN NUMBER ) IS
5535
/* ---------------------------------------------------------------------------
5536
    Version: 3.5
5537
   --------------------------------------------------------------------------- */
5538
 
5539
    patchPv_id    NUMBER;
5540
	parPkg_id	  NUMBER;
5541
    LastInstallOrder NUMBER;
5542
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
5543
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5544
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5545
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5546
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5547
 
5548
	CURSOR parent_cur IS
5549
        SELECT pv.*, pkg.pkg_name
5550
          FROM package_versions pv,
5551
		       packages pkg
5552
         WHERE pv.pv_id = NNparent_id
5553
		   AND pv.pkg_id = pkg.pkg_id;
5554
    parent_rec parent_cur%ROWTYPE;
5555
 
5556
    CURSOR patch_cur IS
5557
        SELECT pv.*, pg.pkg_name
5558
          FROM package_versions pv,
5559
		       packages pg
5560
         WHERE pv.pkg_id = parPkg_id
5561
		   AND pv.pkg_version = SSpatch_version
5562
		   AND pv.pkg_id = pg.pkg_id;
5563
    patch_rec patch_cur%ROWTYPE;
5564
 
5565
	CURSOR releases_cur IS
5566
        SELECT rc.pv_id
5567
		  FROM release_content rc
5568
		 WHERE rc.pv_id = patch_rec.pv_id;
5569
    releases_rec releases_cur%ROWTYPE;
5570
 
5571
 
5572
BEGIN
5573
 
5574
	-- Get Last Install Order
5575
    SELECT Count(*) INTO LastInstallOrder
5576
	  FROM PACKAGE_PATCHES pp
5577
	 WHERE pp.PV_ID = NNparent_id;
5578
 
5579
 
5580
    -- Get parent details
5581
	OPEN parent_cur;
5582
    FETCH parent_cur INTO parent_rec;
5583
	parPkg_id := parent_rec.pkg_id;
5584
 
5585
 
5586
	-- Find if patch exists in database
5587
    OPEN patch_cur;
5588
    FETCH patch_cur INTO patch_rec;
5589
 
5590
 
5591
    -- Parent must be official
5592
    IF parent_rec.dlocked = 'Y' THEN
5593
 
5594
	    IF patch_cur%NOTFOUND
5595
	    THEN
5596
        	isPatchDlocked := 'N';
5597
 
5598
	        -- Create new patch version --
5599
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5600
 
5601
 
5602
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5603
 
5604
	        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 )
5605
				   VALUES (
5606
						   patchPv_id,
5607
	                       parPkg_id,
5608
	                       SSpatch_version,
5609
	                       isPatchDlocked,
5610
	                       ORA_SYSDATE,
5611
	                       NNuser_id,
5612
	                       ORA_SYSDATETIME,
5613
	                       NNuser_id,
5614
	                       SSV_MM,
5615
	                       SSV_NMM,
5616
	                       SSV_EXT,
5617
	                       parent_rec.src_path,
5618
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5619
	                       NNuser_id,
5620
						   'Y',
5621
                           patchPv_id,
5622
						   parent_rec.bs_id,
5623
						   parent_rec.is_autobuildable,
5624
						   parent_rec.ripple_field
5625
 
5626
						   );
5627
 
5628
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5629
		    	   ( SELECT NNparent_id AS pv_id,
5630
				            pv.pv_id AS patch_id,
5631
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5632
				       FROM package_versions pv
5633
					  WHERE pv.pv_id = patchPv_id
5634
					    AND pv.is_patch = 'Y' );
5635
 
5636
	        /* LOG ACTION */
5637
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5638
        			     'Patch version created: '|| SSpatch_version );
5639
 
5640
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5641
        			     'New patch created and attached: '|| SSpatch_version );
5642
 
5643
 
5644
	    ELSE
5645
 
5646
		    patchPv_id := patch_rec.pv_id;
5647
	    	isPatchDlocked := patch_rec.dlocked;
5648
 
5649
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5650
		    OPEN releases_cur;
5651
		    FETCH releases_cur INTO releases_rec;
5652
 
5653
			IF releases_cur%NOTFOUND
5654
	   		THEN
5655
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5656
				UPDATE package_versions SET
5657
					   is_patch = 'Y'
5658
					   WHERE pv_id = patchPv_id;
5659
 
5660
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5661
			    	   ( SELECT NNparent_id AS pv_id,
5662
					            pv.pv_id AS patch_id,
5663
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5664
					       FROM package_versions pv
5665
						  WHERE pv.pv_id = patchPv_id
5666
						    AND pv.is_patch = 'Y' );
5667
 
5668
			END IF;
5669
 
5670
			CLOSE releases_cur;
5671
 
5672
            /* LOG ACTION */
5673
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5674
        			     'Patch version was found and attached: '|| SSpatch_version );
5675
 
5676
	    END IF;
5677
 
5678
 
5679
 
5680
 
5681
    END IF;
5682
 
5683
 
5684
 
5685
    /* Create Patch Dependencies */
5686
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5687
 
5688
 
5689
    -- Make sure patch is unofficial before altering its dependencies
5690
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5691
    	-- Delete Existing Dependencies
5692
        DELETE
5693
          FROM PACKAGE_DEPENDENCIES dep
5694
         WHERE dep.PV_ID = patchPv_id;
5695
 
5696
 
5697
        -- Insert new dependencies
5698
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5699
        SELECT patchPv_id AS PV_ID,
5700
        	   pv.PV_ID AS DPV_ID,
5701
               parPkg_id AS PKG_ID,
5702
               pv.PKG_ID AS DPKG_ID,
5703
               'L' AS BUILD_TYPE
5704
          FROM PACKAGE_VERSIONS pv
5705
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5706
 
5707
 
5708
    END IF;
5709
 
5710
 
5711
    CLOSE parent_cur;
5712
    CLOSE patch_cur;
5713
END New_Patch;
5714
/
5715
 
5716
CREATE OR REPLACE PROCEDURE Ignore_Dependency_Warnings ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
5717
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
5718
                                                         sIgnoreIdList IN VARCHAR2,
5719
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
5720
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
5721
/* ---------------------------------------------------------------------------
5722
    Version: 5.0
5723
   --------------------------------------------------------------------------- */
5724
 
5725
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5726
ReleaseLocation VARCHAR2(4000);
5727
ActionTypeId NUMBER;
5728
 
5729
BEGIN
5730
 
5731
 
5732
   	IF (NOT bDoPatchIgnore) THEN
5733
    	/* Manual Ignore Warnings */
5734
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
5735
 
5736
 
5737
        /* Log Action */
5738
        -- Get Release Location
5739
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5740
		  FROM PROJECTS proj,
5741
		  	   RELEASE_TAGS rt
5742
		 WHERE rt.PROJ_ID = proj.PROJ_ID
5743
		   AND rt.RTAG_ID = nRtagId;
5744
 
5745
        -- Get Action Type Id for IGNORE_ON
5746
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5747
	      FROM ACTION_TYPE act
5748
	     WHERE act.NAME = 'ignore_on';
5749
 
5750
        -- Get Ignored (Current MINUS Old)
5751
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5752
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5753
		  FROM (
5754
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5755
		        FROM PACKAGE_VERSIONS pv
5756
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5757
		      MINUS
5758
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5759
		        FROM IGNORE_WARNINGS igw
5760
		       WHERE igw.RTAG_ID = nRtagId
5761
		         AND igw.PV_ID = nPvId
5762
		       ) qry,
5763
		       PACKAGE_VERSIONS pv,
5764
		       PACKAGES pkg,
5765
		       RELEASE_CONTENT rc,
5766
		       PACKAGE_VERSIONS rpv
5767
		 WHERE pv.PKG_ID = pkg.PKG_ID
5768
		   AND rc.RTAG_ID = nRtagId
5769
		   AND rc.PV_ID = rpv.PV_ID
5770
		   AND rpv.PKG_ID = pv.PKG_ID
5771
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5772
		   AND qry.DPV_ID = pv.PV_ID;
5773
 
5774
 
5775
        -- Get Action Type Id for IGNORE_OFF
5776
        SELECT act.ACTTYPE_ID INTO ActionTypeId
5777
	      FROM ACTION_TYPE act
5778
	     WHERE act.NAME = 'ignore_off';
5779
 
5780
        -- Get UnIgnored (Old MINUS Current)
5781
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
5782
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
5783
		  FROM (
5784
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
5785
		          FROM IGNORE_WARNINGS igw
5786
		         WHERE igw.RTAG_ID = nRtagId
5787
		           AND igw.PV_ID = nPvId
5788
                MINUS
5789
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
5790
		          FROM PACKAGE_VERSIONS pv
5791
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5792
		       ) qry,
5793
		       PACKAGE_VERSIONS pv,
5794
		       PACKAGES pkg,
5795
		       RELEASE_CONTENT rc,
5796
		       PACKAGE_VERSIONS rpv
5797
		 WHERE pv.PKG_ID = pkg.PKG_ID
5798
		   AND rc.RTAG_ID = nRtagId
5799
		   AND rc.PV_ID = rpv.PV_ID
5800
		   AND rpv.PKG_ID = pv.PKG_ID
5801
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
5802
		   AND qry.DPV_ID = pv.PV_ID;
5803
 
5804
 
5805
 
5806
       	-- Delete Current Ignore Warnings
5807
	    DELETE
5808
	      FROM IGNORE_WARNINGS igw
5809
	     WHERE igw.RTAG_ID = nRtagId
5810
	       AND igw.PV_ID = nPvId
5811
	       AND igw.IS_PATCH_IGNORE IS NULL;
5812
 
5813
 
5814
        IF (oIgnoreIdCollector.COUNT > 0) THEN
5815
		    -- Insert Ignore Warnings
5816
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
5817
		    SELECT nRtagId,
5818
	        	   nPvId,
5819
	               pv.PV_ID AS DPV_ID
5820
	          FROM PACKAGE_VERSIONS pv
5821
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5822
        END IF;
5823
 
5824
 
5825
		-- Touch Release if package is in Release Area
5826
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
5827
			Touch_Release (nRtagId);
5828
		END IF;
5829
 
5830
	ELSE
5831
       	/* Patch Ignore Warnings */
5832
 
5833
        -- Delete Current Patch Ignore Warnings
5834
	    DELETE
5835
	      FROM IGNORE_WARNINGS igw
5836
	     WHERE igw.RTAG_ID = nRtagId
5837
	       AND igw.IS_PATCH_IGNORE = 'Y';
5838
 
5839
 
5840
        -- Delete Manual Ignores that need to be Patch Ignores
5841
	    DELETE
5842
	      FROM IGNORE_WARNINGS igw
5843
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
5844
         	(
5845
				SELECT DISTINCT
5846
                       nRtagId,
5847
					   err.PV_ID,
5848
                       err.ERR_DPV AS DPV_ID
5849
				  FROM
5850
				       (
5851
				       /* Full Release Contents used for reference*/
5852
				       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
5853
				         FROM release_content rel, package_versions rpv
5854
				        WHERE rel.pv_id = rpv.pv_id
5855
				          AND rtag_id = nRtagId
5856
				       ) frc,
5857
				       (
5858
				        /* DPV_IDs not fount in release*/
5859
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5860
				          FROM package_dependencies dep
5861
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5862
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5863
				       ) err,
5864
				       (
5865
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5866
				          FROM PACKAGE_PATCHES pp,
5867
				          	   PACKAGE_DEPENDENCIES dep,
5868
				          	   RELEASE_CONTENT rc
5869
				         WHERE rc.RTAG_ID = nRtagId
5870
				           AND rc.PV_ID = pp.PV_ID
5871
				           AND dep.PV_ID = pp.PATCH_ID
5872
				       ) pp,
5873
				       package_versions errpkg,
5874
				       package_versions errpv
5875
				 WHERE err.err_dpv = errpv.pv_id
5876
				   AND errpv.pkg_id = frc.pkg_id(+)
5877
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5878
				   AND err.pv_id = errpkg.pv_id
5879
				   AND err.PV_ID = pp.PV_ID
5880
				   AND frc.PV_ID = pp.DPV_ID
5881
			);
5882
 
5883
        /*
5884
        ---------------------------------------------------
5885
        --  Make sure that select statement above and below are same
5886
        ---------------------------------------------------
5887
        */
5888
 
5889
 
5890
		-- Insert Patch Ignores
5891
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
5892
		SELECT DISTINCT
5893
			   nRtagId,
5894
		       err.PV_ID,
5895
		       err.ERR_DPV AS DPV_ID,
5896
		       'Y'
5897
		  FROM
5898
		       (
5899
		       /* Full Release Contents used for reference*/
5900
		       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
5901
		         FROM release_content rel, package_versions rpv
5902
		        WHERE rel.pv_id = rpv.pv_id
5903
		          AND rtag_id = nRtagId
5904
		       ) frc,
5905
		       (
5906
		        /* DPV_IDs not fount in release*/
5907
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
5908
		          FROM package_dependencies dep
5909
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5910
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
5911
		       ) err,
5912
		       (
5913
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
5914
		          FROM PACKAGE_PATCHES pp,
5915
		          	   PACKAGE_DEPENDENCIES dep,
5916
		          	   RELEASE_CONTENT rc
5917
		         WHERE rc.RTAG_ID = nRtagId
5918
		           AND rc.PV_ID = pp.PV_ID
5919
		           AND dep.PV_ID = pp.PATCH_ID
5920
		       ) pp,
5921
		       package_versions errpkg,
5922
		       package_versions errpv
5923
		 WHERE err.err_dpv = errpv.pv_id
5924
		   AND errpv.pkg_id = frc.pkg_id(+)
5925
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
5926
		   AND err.pv_id = errpkg.pv_id
5927
		   AND err.PV_ID = pp.PV_ID
5928
		   AND frc.PV_ID = pp.DPV_ID;
5929
 
5930
 
5931
    END IF;
5932
 
5933
 
5934
END Ignore_Dependency_Warnings;
5935
/
5936
 
5937
CREATE OR REPLACE PROCEDURE UnRipple_Package (
5938
        sPvIdList IN VARCHAR2,
5939
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5940
        nUserId IN NUMBER
5941
    ) IS
5942
/* ---------------------------------------------------------------------------
5943
    Version: 4.1
5944
   --------------------------------------------------------------------------- */
5945
 
5946
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5947
 
5948
BEGIN
5949
 
5950
    IF (sPvIdList IS NULL) THEN
5951
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5952
    END IF;
5953
 
5954
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5955
 
5956
    -- UnRipple Package
5957
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
5958
    SELECT nRtagId, pv.PV_ID
5959
    FROM PACKAGE_VERSIONS pv
5960
    WHERE pv.PV_ID IN (
5961
        SELECT *
5962
        FROM TABLE (
5963
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
5964
        )
5965
    );
5966
 
5967
    /* LOG ACTION */
5968
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
5969
 
5970
END UnRipple_Package;
5971
/
5972
 
5973
CREATE OR REPLACE PROCEDURE set_to_autobuildable (
5974
   nrtagid     IN   NUMBER,
5975
   spvidlist   IN   VARCHAR2
5976
)
5977
IS
5978
/******************************************************************************
5979
   NAME:       SET_TO_AUTOBUILDABLE
5980
   PURPOSE:
5981
 
5982
   REVISIONS:
5983
   Ver        Date        Author           Description
5984
   ---------  ----------  ---------------  ------------------------------------
5985
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
5986
 
5987
   NOTES:
5988
 
5989
   Automatically available Auto Replace Keywords:
5990
      Object Name:     SET_TO_AUTOBUILDABLE
5991
      Sysdate:         15/12/2006
5992
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
5993
      Username:         (set in TOAD Options, Procedure Editor)
5994
      Table Name:       (set in the "New PL/SQL Object" dialog)
5995
 
5996
******************************************************************************/
5997
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
5998
   PvId NUMBER;
5999
BEGIN
6000
 
6001
   npvidcollector := in_list_number2 (spvidlist);
6002
 
6003
   UPDATE package_versions
6004
      SET is_autobuildable = 'N'
6005
    WHERE pv_id IN (SELECT pv_id
6006
                      FROM release_content
6007
                     WHERE rtag_id = nrtagid);
6008
 
6009
 
6010
 
6011
   	FOR i IN 1..npvidcollector.COUNT
6012
	LOOP
6013
		PvId := npvidcollector(i);
6014
 
6015
		UPDATE package_versions
6016
		set is_autobuildable = 'Y'
6017
		where pv_id = PvId;
6018
 
6019
	END LOOP;
6020
 
6021
 
6022
END set_to_autobuildable;
6023
/
6024
 
6025
CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS
6026
/* ---------------------------------------------------------------------------
6027
    Version: 3.0
6028
   --------------------------------------------------------------------------- */
6029
 
6030
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6031
 
6032
BEGIN
6033
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
6034
 
6035
	 -- Touch Release for Rebuild
6036
     UPDATE RELEASE_TAGS rt SET
6037
     	rt.REBUILD_ENV = 'Y',
6038
        rt.REBUILD_STAMP = 0
6039
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
6040
 
6041
 
6042
END Touch_Release_Bulk;
6043
/
6044
 
6045
CREATE OR REPLACE PROCEDURE TEST_MARCO IS
6046
/******************************************************************************
6047
   NAME:       TEST_MARCO
6048
   PURPOSE:    
6049
 
6050
   REVISIONS:
6051
   Ver        Date        Author           Description
6052
   ---------  ----------  ---------------  ------------------------------------
6053
   1.0        2/03/2007          1. Created this procedure.
6054
 
6055
   NOTES:
6056
 
6057
   Automatically available Auto Replace Keywords:
6058
      Object Name:     TEST_MARCO
6059
      Sysdate:         2/03/2007
6060
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
6061
      Username:         (set in TOAD Options, Procedure Editor)
6062
      Table Name:       (set in the "New PL/SQL Object" dialog)
6063
 
6064
******************************************************************************/
6065
 
6066
parPv_id    NUMBER;
6067
parPkg_id   NUMBER;
6068
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6069
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6070
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6071
BEGIN
6072
 
6073
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6074
 
6075
        /* LOG ACTION */
6076
        Log_Action ( parPv_id, 'new_version', 3764,
6077
        			 'New package version: '|| parPv_id || '.' );
6078
 
6079
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
6080
 
6081
     -- Clone Package Version Details --
6082
            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,
6083
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
6084
                SELECT parPv_id         AS pv_id,
6085
                       pv.pkg_id        AS pkg_id,
6086
                       parPv_id || '.'    AS pkg_version,
6087
                       'N'              AS dlocked,
6088
                       Ora_Sysdate      AS created_stamp,
6089
                       3764        AS creator_id,
6090
                       Ora_Sysdatetime  AS modified_stamp,
6091
                       3764        AS modifier_id,
6092
                       SSV_MM          AS V_MM,
6093
                       SSV_NMM         AS V_NMM,
6094
                       SSV_EXT          AS V_EXT,
6095
                       pv.src_path,
6096
                       pv.pv_description,
6097
                       pv.PV_OVERVIEW,
6098
                       112982 	AS LAST_PV_ID,
6099
                       pv.owner_id,
6100
					   pv.BUILD_TYPE,
6101
					   pv.IS_BUILD_ENV_REQUIRED,
6102
					   pv.bs_id,
6103
					   pv.is_autobuildable,
6104
					   pv.IS_DEPLOYABLE
6105
                  FROM PACKAGE_VERSIONS pv
6106
                 WHERE pv.pv_id = 112982;		
6107
 
6108
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6109
 
6110
 
6111
END TEST_MARCO;
6112
/
6113
 
6114
CREATE OR REPLACE PACKAGE PK_BUILDAPI_TEST IS
6115
/*
6116
------------------------------
6117
||  Last Modified:  S.Vukovic
6118
||  Modified Date:  30/Mar/2005
6119
||  Spec Version:   1.0
6120
------------------------------
6121
*/
6122
 
6123
	/*================================================================================================*/
6124
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
6125
								  sOsName IN VARCHAR2,
6126
								  sOrigFilePath IN VARCHAR2,
6127
								  sFileName IN VARCHAR2,
6128
								  sDestFilePath IN VARCHAR2,
6129
								  nByteSize IN NUMBER,
6130
								  sCRCcksum IN VARCHAR2 );
6131
 
6132
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
6133
    /*================================================================================================*/
6134
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
6135
	/*================================================================================================*/
6136
 
6137
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
6138
			  					   	 sWebServer IN VARCHAR2,
6139
									 sMailServer IN VARCHAR2,
6140
									 sMailSender IN VARCHAR2);
6141
	/*================================================================================================*/
6142
 
6143
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
6144
	/*================================================================================================*/
6145
 
6146
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
6147
	/*================================================================================================*/
6148
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
6149
	/*================================================================================================*/	        
6150
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
6151
	/*================================================================================================*/	
6152
 
6153
END PK_BUILDAPI_TEST;
6154
/
6155
 
6156
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
6157
 
6158
/* ---------------------------------------------------------------------------
6159
    Version: 3.0.0
6160
   --------------------------------------------------------------------------- */
6161
 
6162
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6163
	pos				   NUMBER;
6164
	in_list			   VARCHAR2(4000) := sInList || ',';
6165
 
6166
BEGIN
6167
 
6168
	IF NOT sInList IS NULL
6169
	THEN
6170
		LOOP
6171
	        EXIT WHEN in_list IS NULL;
6172
	        pos := INSTR ( in_list, ',' );
6173
	        sync_rtags.extend;
6174
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
6175
	        in_list := SUBSTR ( in_list, pos+1 );
6176
		END LOOP;
6177
	END IF;
6178
 
6179
	RETURN sync_rtags;
6180
END IN_LIST_NUMBER;
6181
/
6182
 
6183
CREATE OR REPLACE PROCEDURE delete_autobuild_failure_info
6184
IS
6185
/******************************************************************************
6186
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
6187
   PURPOSE:
6188
 
6189
   REVISIONS:
6190
   Ver        Date        Author           Description
6191
   ---------  ----------  ---------------  ------------------------------------
6192
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
6193
 
6194
   NOTES:
6195
 
6196
   Automatically available Auto Replace Keywords:
6197
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
6198
      Sysdate:         2/06/2006
6199
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
6200
      Username:         (set in TOAD Options, Procedure Editor)
6201
      Table Name:       (set in the "New PL/SQL Object" dialog)
6202
 
6203
******************************************************************************/
6204
BEGIN
6205
   DELETE FROM autobuild_failure
6206
         WHERE group_email_id NOT IN (SELECT group_email_id
6207
                                        FROM members_group);
6208
END delete_autobuild_failure_info;
6209
/
6210
 
53 mhunt 6211
CREATE OR REPLACE PACKAGE                   "PK_ENVIRONMENT" IS
51 mhunt 6212
/*
6213
------------------------------
53 mhunt 6214
||  Last Modified:  G.Huddy
6215
||  Modified Date:  28/May/2008
6216
||  Spec Version:   1.2
51 mhunt 6217
------------------------------
6218
*/
6219
 
6220
	TYPE typeCur IS REF CURSOR;
6221
 
53 mhunt 6222
	/*================================================================================================*/
51 mhunt 6223
 
6224
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
6225
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6226
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
6227
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6228
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6229
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6230
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
53 mhunt 6231
 
51 mhunt 6232
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6233
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6234
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6235
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6236
 
53 mhunt 6237
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
6238
 
51 mhunt 6239
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 6240
 
6241
 
51 mhunt 6242
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6243
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6244
 
6245
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6246
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6247
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
53 mhunt 6248
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
6249
 
51 mhunt 6250
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 6251
 
51 mhunt 6252
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
6253
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
53 mhunt 6254
 
6255
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
6256
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
51 mhunt 6257
							 CloneFromPvId IN NUMBER );
53 mhunt 6258
 
51 mhunt 6259
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
53 mhunt 6260
 
6261
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6262
 
51 mhunt 6263
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6264
 
53 mhunt 6265
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
6266
 
6267
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
51 mhunt 6268
	/*================================================================================================*/
6269
 
6270
END PK_ENVIRONMENT;
6271
/
6272
 
6273
CREATE OR REPLACE PROCEDURE Clear_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6274
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6275
											 nUserId IN NUMBER ) IS
6276
/* ---------------------------------------------------------------------------
6277
    Version: 4.0
6278
   --------------------------------------------------------------------------- */
6279
 
6280
BEGIN
6281
 
6282
    -- Clear Advisory Ripple Package
6283
    DELETE FROM ADVISORY_RIPPLE
6284
	WHERE PV_ID = nPvId
6285
	AND RTAG_ID = nRtagId;
6286
 
6287
    /* LOG ACTION */
6288
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
6289
 
6290
	/*Rebuild_Environment(nRtagId);*/
6291
 
6292
END Clear_Advisory_Ripple;
6293
/
6294
 
6295
CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6296
											 nUserId IN NUMBER ) IS
6297
/* ---------------------------------------------------------------------------
6298
    Version: 4.0
6299
   --------------------------------------------------------------------------- */
6300
 
6301
BEGIN
6302
 
6303
    -- Lock Package
6304
    UPDATE PACKAGE_VERSIONS pv SET
6305
    	pv.DLOCKED = 'Y'
6306
    WHERE pv.PV_ID = nPvId;
6307
 
6308
    /* LOG ACTION */
6309
   	Log_Action ( nPvId, 'lock_package', nUserId );
6310
 
6311
END Lock_Package;
6312
/
6313
 
6314
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env_Temp ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6315
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6316
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6317
														 ) IS
6318
/* ---------------------------------------------------------------------------
6319
    Last Modified: Rupesh Solanki
6320
	Version: 3.0.1
6321
   --------------------------------------------------------------------------- */
6322
 
6323
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6324
   BsId NUMBER;
6325
   HackBsId NUMBER;
6326
 
6327
 
6328
BEGIN
6329
 
6330
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6331
 
6332
   -- Delete Current Build Env settings
6333
   DELETE FROM PACKAGE_BUILD_ENV
6334
   WHERE pv_id = nPvId;
6335
 
6336
   -- Delet Current Package Build Info Settings
6337
   DELETE FROM PACKAGE_BUILD_INFO
6338
   WHERE pv_id = nPvId;
6339
 
6340
   -- Reset flag to N
6341
   UPDATE PACKAGE_VERSIONS SET
6342
	   IS_BUILD_ENV_REQUIRED = 'N'
6343
   WHERE PV_ID = nPvId;
6344
 
6345
 
6346
   -- Set new Build Env
6347
   IF NOT sBuildEnvIdList IS NULL THEN
6348
	FOR i IN 1..nBsCollector.COUNT
6349
	LOOP   
6350
 
6351
	BsId := nBsCollector(i);
6352
 
6353
	IF nBuildStandard = 2 THEN
6354
	   IF BsId = 1 THEN
6355
	   	  HackBsId := 11;
6356
	   ELSE
6357
	   	  HackBsId := 12;
6358
	   END IF;
6359
 
6360
   	  -- Insert into PACKAGE_BUILD_ENV
6361
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6362
	  SELECT nPvId AS PV_ID,
6363
	  		 be.BE_ID
6364
	    FROM BUILD_ENVIRONMENTS be
6365
	   WHERE be.BE_ID IN ( HackBsId );
6366
 
6367
   	  -- Insert into PACKAGE_BUILD_INFO
6368
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6369
	  SELECT nPvId AS PV_ID,
6370
	  		 be.BM_ID
6371
	    FROM BUILD_MACHINES be
6372
	   WHERE be.BM_ID IN ( BsId );						 
6373
 
6374
	   -- Set flag to Y
6375
	   UPDATE PACKAGE_VERSIONS SET
6376
		   IS_BUILD_ENV_REQUIRED = 'Y'
6377
	   WHERE PV_ID = nPvId;	
6378
 
6379
 
6380
	ELSE
6381
 
6382
   	  -- Insert into PACKAGE_BUILD_ENV
6383
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6384
	  SELECT nPvId AS PV_ID,
6385
	  		 be.BE_ID
6386
	    FROM BUILD_ENVIRONMENTS be
6387
	   WHERE be.BE_ID IN ( BsId );
6388
 
6389
   	  -- Insert into PACKAGE_BUILD_INFO
6390
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6391
	  SELECT nPvId AS PV_ID,
6392
	  		 be.BM_ID
6393
	    FROM BUILD_MACHINES be
6394
	   WHERE be.BM_ID IN ( BsId );						 
6395
 
6396
	   -- Set flag to Y
6397
	   UPDATE PACKAGE_VERSIONS SET
6398
		   IS_BUILD_ENV_REQUIRED = 'Y'
6399
	   WHERE PV_ID = nPvId;
6400
 
6401
	END IF;  
6402
 
6403
 
6404
	END LOOP;	   
6405
 
6406
   END IF;
6407
 
6408
 
6409
END Set_Package_Build_Env_Temp;
6410
/
6411
 
6412
CREATE OR REPLACE PROCEDURE Rename_Package_Version ( NNpv_id IN NUMBER,
6413
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6414
													 cBuildType IN CHAR,
6415
                                                     NNuser_id IN NUMBER,
6416
                                                     errMessage OUT VARCHAR2 ) IS
6417
/* ---------------------------------------------------------------------------
6418
    Version: 3.2
6419
   --------------------------------------------------------------------------- */
6420
 
6421
    sPackageVersion VARCHAR2(4000);
6422
	sLabel VARCHAR2(4000) := NULL;
6423
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
6424
 
6425
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6426
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6427
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6428
 
6429
    CURSOR package_versions_cur IS
6430
        SELECT pv_id
6431
     	  FROM package_versions
6432
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
6433
     	   AND pkg_version = SSpkg_version;
6434
    package_versions_rec package_versions_cur%ROWTYPE;
6435
 
6436
 
6437
BEGIN
6438
 
6439
    /* ---------------------------------------------------- */
6440
    /* Find if package_version exists                       */
6441
    /* ---------------------------------------------------- */
6442
 
6443
	errMessage := NULL;
6444
 
6445
 
6446
	-- Get previous version
6447
	SELECT pv.PKG_VERSION INTO OldPkgVersion
6448
      FROM PACKAGE_VERSIONS pv
6449
     WHERE pv.PV_ID = NNpv_id;
6450
 
6451
 
6452
	sPackageVersion := SSpkg_version;
6453
 
6454
 
6455
	IF OldPkgVersion != sPackageVersion THEN
6456
 
6457
	    OPEN package_versions_cur;
6458
	    FETCH package_versions_cur INTO package_versions_rec;
6459
 
6460
	    IF package_versions_cur%NOTFOUND
6461
	    THEN
6462
 
6463
			-- Split current version in parts
6464
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6465
 
6466
 
6467
		    -- Automated built config
6468
			IF (cBuildType = 'A') THEN
6469
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
6470
			END IF;
6471
 
6472
 
6473
	        -- Packge version not found, hence rename it.
6474
	        UPDATE package_versions
6475
	           SET pkg_version = sPackageVersion,
6476
	               v_mm = SSV_MM,
6477
	               v_nmm = SSV_NMM,
6478
	               v_ext = SSV_EXT,
6479
	               modified_stamp = ORA_SYSDATETIME,
6480
	               modifier_id = NNuser_id,
6481
				   build_type = cBuildType,
6482
				   pkg_label = NULL
6483
	         WHERE pv_id = NNpv_id;
6484
 
6485
 
6486
			IF (cBuildType = 'A') THEN
6487
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
6488
				UPDATE PACKAGE_VERSIONS pv SET
6489
					pv.PKG_LABEL = sLabel
6490
		         WHERE pv_id = NNpv_id;
6491
			END IF;
6492
 
6493
			/* LOG ACTION */
6494
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
6495
 
6496
	    ELSE
6497
	        -- Package version exists. Cannot proceed.
6498
	        errMessage := 'enum_MSG_VERSION_EXISTS';
6499
 
6500
	    END IF;
6501
 
6502
	    CLOSE package_versions_cur;
6503
 
6504
	END IF;
6505
 
6506
 
6507
 
6508
 
6509
END Rename_Package_Version;
6510
/
6511
 
6512
CREATE OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
6513
IS
6514
/* ---------------------------------------------------------------------------
6515
    Version: 3.0.0
6516
   --------------------------------------------------------------------------- */
6517
 
6518
BEGIN
6519
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
6520
    THEN
6521
        RETURN FALSE;
6522
    ELSE
6523
        RETURN TRUE;
6524
    END IF;
6525
 
6526
END IS_VERSION_EXTENSION;
6527
/
6528
 
6529
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6530
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6531
                                                          NNuser_id IN NUMBER,
6532
                                                          retPV_ID OUT NUMBER,
6533
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6534
/* ---------------------------------------------------------------------------
6535
    Version: 4.0
6536
   --------------------------------------------------------------------------- */
6537
 
6538
    parPkg_id   NUMBER;
6539
    parPv_id    NUMBER;
6540
    cloneFrom_pv_id NUMBER;
6541
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6542
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6543
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6544
 
6545
    CURSOR packages_cur IS
6546
        SELECT pkg_id FROM PACKAGES
6547
        WHERE pkg_name = SSpkg_name;
6548
    packages_rec packages_cur%ROWTYPE;
6549
 
6550
    CURSOR package_versions_cur IS
6551
        SELECT pv_id FROM PACKAGE_VERSIONS
6552
        WHERE pkg_id = parPkg_id
6553
        AND pkg_version = SSpkg_version;
6554
    package_versions_rec package_versions_cur%ROWTYPE;
6555
 
6556
    CURSOR clone_package_versions_cur IS
6557
        SELECT MAX(pv_id) AS pv_id
6558
          FROM PACKAGE_VERSIONS
6559
         WHERE pkg_id = parPkg_id
6560
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6561
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6562
 
6563
BEGIN
6564
    /* -------------------------------------------- */
6565
    /* Find if pkg_name exists and seed if required */
6566
    /* -------------------------------------------- */
6567
    OPEN packages_cur;
6568
    FETCH packages_cur INTO packages_rec;
6569
 
6570
    IF packages_cur%NOTFOUND
6571
    THEN
6572
        /* INSERT into packages table */
6573
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6574
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6575
 
6576
    ELSE
6577
        parPkg_id := packages_rec.pkg_id;
6578
 
6579
    END IF;
6580
 
6581
    CLOSE packages_cur;
6582
 
6583
 
6584
 
6585
    /* ---------------------------------------------------- */
6586
    /* Find if package_version exists and seed if required  */
6587
    /* ---------------------------------------------------- */
6588
    OPEN package_versions_cur;
6589
    FETCH package_versions_cur INTO package_versions_rec;
6590
 
6591
    IF package_versions_cur%NOTFOUND
6592
    THEN
6593
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6594
 
6595
        /* LOG ACTION */
6596
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6597
        			 'New package version: '|| SSpkg_version );
6598
 
6599
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6600
 
6601
        /* Find similar pkg_name + ext to clone from */
6602
        OPEN clone_package_versions_cur;
6603
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6604
 
6605
 
6606
        IF NOT clone_package_versions_rec.pv_id IS NULL
6607
        THEN
6608
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6609
			IF ( NOT nCloneFromPvId IS NULL) THEN
6610
            	cloneFrom_pv_id := nCloneFromPvId;
6611
			ELSE
6612
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6613
			END IF;
6614
 
6615
            -- Clone Package Version Details --
6616
            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,
6617
                                           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  )
6618
                SELECT parPv_id         AS pv_id,
6619
                       parPkg_id        AS pkg_id,
6620
                       SSpkg_version    AS pkg_version,
6621
                       'N'              AS dlocked,
6622
                       Ora_Sysdate      AS created_stamp,
6623
                       NNuser_id        AS creator_id,
6624
                       Ora_Sysdatetime  AS modified_stamp,
6625
                       NNuser_id        AS modifier_id,
6626
                       SSV_MM           AS V_MM,
6627
                       SSV_NMM          AS V_NMM,
6628
                       SSV_EXT          AS V_EXT,
6629
                       pv.src_path,
6630
                       pv.pv_description,
6631
                       pv.PV_OVERVIEW,
6632
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6633
                       pv.owner_id,
6634
					   pv.BUILD_TYPE,
6635
					   pv.IS_BUILD_ENV_REQUIRED,
6636
					   pv.BS_ID,
6637
					   pv.is_autobuildable,
6638
					   pv.IS_DEPLOYABLE, 
6639
					   pv.ripple_field
6640
                  FROM PACKAGE_VERSIONS pv
6641
                 WHERE pv.pv_id = cloneFrom_pv_id;
6642
 
6643
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6644
 
6645
        ELSE
6646
            /* BRAND NEW version + ext */
6647
            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 )
6648
        	VALUES (
6649
                    parPv_id,
6650
                    parPkg_id,
6651
                    SSpkg_version,
6652
                    'N',
6653
                    Ora_Sysdate,
6654
                    NNuser_id,
6655
                    Ora_Sysdatetime,
6656
                    NNuser_id,
6657
                    SSV_MM,
6658
                    SSV_NMM,
6659
                    SSV_EXT,
6660
                    NNuser_id,
6661
                    parPv_id,
6662
					'M',
6663
					'b'
6664
                   );
6665
 
6666
        END IF;
6667
 
6668
        CLOSE clone_package_versions_cur;
6669
        retPV_ID := parPv_id;
6670
 
6671
    ELSE
6672
        retPV_ID := package_versions_rec.pv_id;
6673
 
6674
    END IF;
6675
 
6676
    CLOSE package_versions_cur;
6677
 
6678
 
6679
 
6680
 
6681
END Seed_Package_Names_Versions;
6682
/
6683
 
6684
CREATE OR REPLACE PROCEDURE Remove_Runtime ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6685
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
6686
                                             nUserId IN NUMBER ) IS
6687
/* ---------------------------------------------------------------------------
6688
    Version: 3.0
6689
   --------------------------------------------------------------------------- */
6690
 
6691
   RuntimeDependency VARCHAR2(4000);
6692
 
6693
BEGIN
6694
 
6695
	-- Get Runtime dependency
6696
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
6697
	  FROM RUNTIME_DEPENDENCIES rtd,
6698
	  	   PACKAGES pkg,
6699
	       PACKAGE_VERSIONS pv
6700
	 WHERE rtd.PV_ID = nPvId
6701
	   AND pv.PKG_ID = pkg.PKG_ID
6702
	   AND rtd.RTD_ID = pv.PV_ID
6703
	   AND rtd.RTD_ID = nRuntimeId;
6704
 
6705
 
6706
	-- Delete Document
6707
    DELETE
6708
      FROM RUNTIME_DEPENDENCIES rtd
6709
     WHERE rtd.PV_ID = nPvId
6710
       AND rtd.RTD_ID = nRuntimeId;
6711
 
6712
 
6713
    /* LOG ACTION */
6714
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
6715
   			     'Runtime package: '|| RuntimeDependency );
6716
 
6717
 
6718
END Remove_Runtime;
6719
/
6720
 
6721
CREATE OR REPLACE PROCEDURE Deprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6722
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6723
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6724
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
6725
											   nUserId IN NUMBER) IS
6726
ext VARCHAR2(50);
6727
 
6728
 
6729
 
6730
 
6731
BEGIN
6732
 
6733
	--Extract the package version extension
6734
	SELECT V_EXT into ext
6735
	FROM PACKAGE_VERSIONS
6736
	WHERE PV_ID = nPvId; 
6737
 
6738
    -- Deprecate Package
6739
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
6740
	VALUES (nRtagId, nPkgId, sComments, ext);
6741
 
6742
	IF ext IS NOT NULL THEN
6743
	   UPDATE RELEASE_CONTENT 
6744
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6745
	   WHERE RTAG_ID = nRtagId
6746
	   AND PV_ID IN (SELECT PV.PV_ID 
6747
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6748
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6749
				  	AND PV.V_EXT = ext
6750
				  	AND PKG.PKG_ID = nPkgId
6751
				 	);						
6752
	ELSE
6753
	   UPDATE RELEASE_CONTENT 
6754
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
6755
	   WHERE RTAG_ID = nRtagId
6756
	   AND PV_ID IN (SELECT PV.PV_ID 
6757
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6758
				  	WHERE PKG.PKG_ID = PV.PKG_ID
6759
				  	AND PV.V_EXT IS NULL
6760
				  	AND PKG.PKG_ID = nPkgId
6761
				 	);
6762
	END IF;
6763
 
6764
	UPDATE RELEASE_CONTENT
6765
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
6766
	WHERE RTAG_ID = nRtagId
6767
	AND PV_ID IN (		   SELECT DISTINCT
6768
 	 		  	 		   qry.PV_ID
6769
						        FROM (
6770
								 	  SELECT dep.*,
6771
									  LEVEL AS LEVEL_NUM
6772
									  FROM PACKAGE_DEPENDENCIES dep 
6773
 								START WITH dep.DPV_ID IN ( nPvId ) 
6774
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6775
 								) qry,
6776
								PACKAGES pkg,
6777
								PACKAGE_VERSIONS pv,
6778
								RELEASE_CONTENT rc
6779
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6780
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6781
							 AND rc.DEPRECATED_STATE IS NULL
6782
				 );			 
6783
 
6784
    /* LOG ACTION */
6785
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
6786
 
6787
 
6788
END Deprecate_Package;
6789
/
6790
 
6791
CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (
6792
   nprojid     IN   NUMBER,
6793
   nviewid     IN   NUMBER,
6794
   suserlist   IN   VARCHAR2
6795
)
6796
IS
6797
   groupid   NUMBER;
6798
/******************************************************************************
6799
   NAME:       ADD_AUTOBUILD_FAILURE
6800
   PURPOSE:
6801
 
6802
   REVISIONS:
6803
   Ver        Date        Author           Description
6804
   ---------  ----------  ---------------  ------------------------------------
6805
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
6806
 
6807
   NOTES:
6808
 
6809
   Automatically available Auto Replace Keywords:
6810
      Object Name:     ADD_AUTOBUILD_FAILURE
6811
      Sysdate:         11/04/2006
6812
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
6813
      Username:         (set in TOAD Options, Procedure Editor)
6814
      Table Name:       (set in the "New PL/SQL Object" dialog)
6815
 
6816
******************************************************************************/
6817
BEGIN
6818
   BEGIN
6819
      SELECT group_email_id
6820
        INTO groupid
6821
        FROM autobuild_failure
6822
       WHERE proj_id = nprojid AND view_id = nviewid;
6823
   EXCEPTION
6824
      WHEN NO_DATA_FOUND
6825
      THEN
6826
         --  Create Next Sequence Id ---
6827
         SELECT seq_group_email_id.NEXTVAL
6828
           INTO groupid
6829
           FROM DUAL;
6830
 
6831
         INSERT INTO autobuild_failure
6832
                     (group_email_id, proj_id, view_id
6833
                     )
6834
              VALUES (groupid, nprojid, nviewid
6835
                     );
6836
   END;
6837
 
6838
   add_view_members (groupid, suserlist);
6839
END add_autobuild_failure_info;
6840
/
6841
 
6842
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;
6843
/
6844
 
6845
CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"
6846
as TABLE of VARCHAR2(4000)
6847
/
6848
 
6849
CREATE OR REPLACE PROCEDURE CHANGE_RELEASE_MODE ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
6850
/* ---------------------------------------------------------------------------
6851
    Version: 3.0.0
6852
   --------------------------------------------------------------------------- */
6853
 
6854
	cMode CHAR(1) := NULL;  
6855
	nProjId NUMBER; 
6856
 
6857
BEGIN
6858
 
6859
 
6860
	/*
6861
	Author: Rupesh Solanki
6862
	Modified: 24th October 2006
6863
	Reason: Added the archive mode state into Release Manager 
6864
	||	1 - Open Mode
6865
	||	2 - Restrictive Mode
6866
	||	3 - Closed Mode
6867
	||	4 - CCB Mode
6868
	||	5 - Archive Mode
6869
	*/	
6870
	-- Get project Id
6871
	SELECT rt.PROJ_ID INTO nProjId
6872
	  FROM RELEASE_TAGS rt
6873
	 WHERE rt.RTAG_ID = nRtagId; 
6874
 
6875
	IF nModeCode = 1 THEN
6876
		-- Open Mode
6877
		cMode := 'N';
6878
 
6879
		/* LOG ACTION */
6880
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
6881
 
6882
	ELSIF nModeCode = 2 THEN
6883
		-- Restrictive Mode
6884
		cMode := 'R';
6885
 
6886
		/* LOG ACTION */
6887
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
6888
 
6889
	ELSIF nModeCode = 3 THEN
6890
		-- Closed Mode
6891
		cMode := 'Y';
6892
 
6893
		/* LOG ACTION */
6894
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
6895
 
6896
	ELSIF nModeCode = 4 THEN
6897
		-- CCB Mode
6898
		cMode := 'C';
6899
 
6900
		/* LOG ACTION */
6901
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
6902
 
6903
	ELSIF nModeCode = 5 THEN
6904
		-- Archive Mode
6905
		cMode := 'A';
6906
 
6907
		/* LOG ACTION */
6908
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
6909
 
6910
 
6911
	END IF;
6912
 
6913
 
6914
 
6915
	-- Now update table
6916
	IF NOT cMode IS NULL THEN
6917
		UPDATE RELEASE_TAGS rt SET
6918
		rt.OFFICIAL = cMode
6919
		WHERE rt.RTAG_ID = nRtagId;
6920
 
6921
	END IF;
6922
 
6923
 
6924
END CHANGE_RELEASE_MODE;
6925
/
6926
 
6927
CREATE OR REPLACE PROCEDURE Remove_Document ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6928
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
6929
                                              nUserId IN NUMBER ) IS
6930
/* ---------------------------------------------------------------------------
6931
    Version: 3.0
6932
   --------------------------------------------------------------------------- */
6933
 
6934
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
6935
 
6936
BEGIN
6937
 
6938
	-- Get Doc Num
6939
    SELECT pd.DOC_NUM INTO DocNumber
6940
      FROM PACKAGE_DOCUMENTS pd
6941
     WHERE pd.PV_ID = nPvId
6942
       AND pd.DOC_ID = nDocId;
6943
 
6944
 
6945
	-- Delete Document
6946
    DELETE
6947
      FROM PACKAGE_DOCUMENTS pd
6948
     WHERE pd.PV_ID = nPvId
6949
       AND pd.DOC_ID = nDocId;
6950
 
6951
 
6952
    /* LOG ACTION */
6953
   	Log_Action ( nPvId, 'document_remove', nUserId,
6954
   			     'Document number: '|| DocNumber );
6955
 
6956
 
6957
END Remove_Document;
6958
/
6959
 
6960
CREATE OR REPLACE PROCEDURE Update_Unit_Test ( nTest_id IN NUMBER,
6961
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
6962
											   nPv_id IN NUMBER,
6963
											   nUserId IN NUMBER,
6964
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
6965
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
6966
	                                           sCompletion_date IN VARCHAR2,
6967
											   sDpkg_path IN VARCHAR2,
6968
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
6969
											   sResults IN VARCHAR2,
6970
											   outFileName OUT VARCHAR2
6971
                                              ) IS
6972
/* ---------------------------------------------------------------------------
6973
    Version: 3.1.0
6974
   --------------------------------------------------------------------------- */
6975
 
6976
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
6977
 
6978
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
6979
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
6980
 
6981
 
6982
BEGIN
6983
 
6984
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
6985
       	ResultsURL := sResults;
6986
       ELSE
6987
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
6988
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
6989
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
6990
           END IF;
6991
       END IF;
6992
 
6993
	--- Update Unit Test ---
6994
    UPDATE UNIT_TESTS SET
6995
           TEST_SUMMARY = sTest_summary,
6996
		   NUMOF_TEST = sNumof_test,
6997
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
6998
		   COMPLETED_BY = nUserId,
6999
		   RESULTS_URL = ResultsURL,
7000
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
7001
     WHERE TEST_ID = nTest_id
7002
       AND PV_ID = nPv_id;
7003
 
7004
END Update_Unit_Test;
7005
/
7006
 
7007
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Test ( nTest_id IN NUMBER,
7008
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
7009
											   nPv_id IN NUMBER,
7010
											   nUserId IN NUMBER,
7011
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
7012
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
7013
	                                           sCompletion_date IN VARCHAR2,
7014
											   sDpkg_path IN VARCHAR2,
7015
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
7016
											   sResults IN VARCHAR2,
7017
											   outFileName OUT VARCHAR2
7018
                                              ) IS
7019
/* ---------------------------------------------------------------------------
7020
    Version: 3.1.0
7021
   --------------------------------------------------------------------------- */
7022
 
7023
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
7024
 
7025
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
7026
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
7027
 
7028
 
7029
BEGIN
7030
 
7031
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
7032
       	ResultsURL := sResults;
7033
       ELSE
7034
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
7035
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
7036
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
7037
           END IF;
7038
       END IF;
7039
 
7040
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
7041
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
7042
    		sResults_url:= 'doc' || '/' || 
7043
			;
7044
        END IF;*/
7045
	--- Update Unit Test ---
7046
    UPDATE UNIT_TESTS SET
7047
           TEST_SUMMARY = sTest_summary,
7048
		   NUMOF_TEST = sNumof_test,
7049
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
7050
		   COMPLETED_BY = nUserId,
7051
		   RESULTS_URL = ResultsURL,
7052
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
7053
     WHERE TEST_ID = nTest_id
7054
       AND PV_ID = nPv_id;
7055
 
7056
END Update_Unit_Test_Test;
7057
/
7058
 
7059
CREATE OR REPLACE PROCEDURE Update_Additional_Note ( pnNote_id IN NUMBER,
7060
													 pnPv_id IN NUMBER,
7061
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
7062
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
7063
                                                     pnUser_id IN NUMBER,
7064
                                                     outErrCode OUT NUMBER
7065
                                                    ) IS
7066
/* ---------------------------------------------------------------------------
7067
    Version: 3.0.1
7068
   --------------------------------------------------------------------------- */
7069
 
7070
    newID NUMBER;
7071
 
7072
    /* Disallow duplicate Note Titles */
7073
	CURSOR an_duplicate_cur IS
7074
        SELECT COUNT(*) AS cnt_note
7075
          FROM ADDITIONAL_NOTES
7076
         WHERE pv_id = pnPv_id
7077
           AND note_id != pnNote_id
7078
           AND note_title = psNote_title;
7079
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
7080
 
7081
BEGIN
7082
	outErrCode := -1;		-- Set default return error code to ERROR state
7083
 
7084
	OPEN an_duplicate_cur;
7085
    FETCH an_duplicate_cur INTO an_duplicate_rec;
7086
 
7087
    IF an_duplicate_rec.cnt_note < 1
7088
    THEN
7089
		--- Update Additional Note ---
7090
	    UPDATE ADDITIONAL_NOTES SET
7091
		       note_title = psNote_title,
7092
		       note_body = psNote_body,
7093
		       mod_date = Ora_Sysdate,
7094
		       mod_user = pnUser_id
7095
         WHERE note_id = pnNote_id
7096
           AND pv_id = pnPv_id;
7097
		outErrCode := 0;		-- Set return to SUCCESS
7098
	END IF;
7099
 
7100
	CLOSE an_duplicate_cur;
7101
END Update_Additional_Note;
7102
/
7103
 
7104
CREATE OR REPLACE FUNCTION GET_V_EXT (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
7105
 
7106
/* ---------------------------------------------------------------------------
7107
    Version: 3.0.0
7108
   --------------------------------------------------------------------------- */
7109
 
7110
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
7111
    lastDot NUMBER;
7112
 
7113
BEGIN
7114
    lastDot := INSTR (SSpkg_version, '.', -1);
7115
 
7116
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
7117
    THEN
7118
        -- YES dot separator found --
7119
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
7120
 
7121
        IF IS_VERSION_EXTENSION ( SSV_EXT )
7122
        THEN
7123
            RETURN SSV_EXT;
7124
        ELSE
7125
            RETURN NULL;
7126
        END IF;
7127
 
7128
    ELSE
7129
        -- NO dot separator found --
7130
        RETURN NULL;
7131
    END IF;
7132
 
7133
END GET_V_EXT;
7134
/
7135
 
7136
CREATE OR REPLACE PROCEDURE Update_Runtime_Dependency ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7137
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7138
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7139
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7140
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7141
													    NNuser_id IN NUMBER ) IS
7142
/* ---------------------------------------------------------------------------
7143
    Version: 3.0.1
7144
   --------------------------------------------------------------------------- */
7145
 
7146
    retRTD_ID	NUMBER;
7147
	CURSOR rtd_cur IS
7148
	    SELECT pv.pkg_version, pkg.pkg_name
7149
		  FROM runtime_dependencies rtd,
7150
		       package_versions pv,
7151
			   packages pkg
7152
		 WHERE rtd.rtd_id = pv.pv_id
7153
		   AND pv.pkg_id = pkg.pkg_id
7154
		   AND rtd.pv_id = NNpv_id
7155
		   AND rtd.rtd_id = NNrtd_id;
7156
	   rtd_rec rtd_cur%ROWTYPE;
7157
 
7158
	CURSOR old_rtd_cur IS
7159
	    SELECT pv.pv_id
7160
		  FROM package_versions pv
7161
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7162
		 	   			 	    FROM package_versions rtdpv
7163
							   WHERE rtdpv.pv_id = NNrtd_id )
7164
		   AND pv.pkg_version = SSrtd_version;
7165
	old_rtd_rec old_rtd_cur%ROWTYPE;
7166
 
7167
 
7168
BEGIN
7169
 
7170
    -- Get current runtime dependency details
7171
	OPEN rtd_cur;
7172
    FETCH rtd_cur INTO rtd_rec;
7173
 
7174
 
7175
 
7176
 
7177
	IF rtd_rec.pkg_version != SSrtd_version THEN
7178
           -- Version has changed, hence create new runtime dependency --
7179
	    /* NOTE: You must create new version as updating just a version will affect
7180
		        all packages using this runtime dependency and user does not expect that.
7181
		        It is safer to create new version */
7182
		OPEN old_rtd_cur;
7183
		FETCH old_rtd_cur INTO old_rtd_rec;
7184
 
7185
 
7186
		IF old_rtd_cur%NOTFOUND
7187
		THEN
7188
			-- Version not found, hence Create New version --
7189
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7190
 
7191
			-- Update runtime dependency table --
7192
			UPDATE runtime_dependencies SET
7193
				   rtd_id = retRTD_ID,
7194
				   rtd_url = SSrtd_url,
7195
				   rtd_comments = SSrtd_comments
7196
			 WHERE pv_id = NNpv_id
7197
			   AND rtd_id = NNrtd_id;
7198
 
7199
		ELSE
7200
			-- Update runtime dependency table --
7201
			UPDATE runtime_dependencies SET
7202
				   rtd_id = old_rtd_rec.pv_id,
7203
				   rtd_url = SSrtd_url,
7204
				   rtd_comments = SSrtd_comments
7205
			 WHERE pv_id = NNpv_id
7206
			   AND rtd_id = NNrtd_id;
7207
 
7208
		END IF;
7209
 
7210
 
7211
		CLOSE old_rtd_cur;
7212
 
7213
	ELSE
7214
		--  Version has not changed, hence update everithing except	version --
7215
		UPDATE runtime_dependencies SET
7216
			   rtd_url = SSrtd_url,
7217
			   rtd_comments = SSrtd_comments
7218
		 WHERE pv_id = NNpv_id
7219
		   AND rtd_id = NNrtd_id;
7220
 
7221
 
7222
 
7223
	END IF;
7224
 
7225
 
7226
	CLOSE rtd_cur;
7227
 
7228
END Update_Runtime_Dependency;
7229
/
7230
 
7231
CREATE OR REPLACE PROCEDURE                 UPDATE_MISC_VIEW IS
7232
/******************************************************************************
7233
   NAME:       UPDATE_MISC_VIEW
7234
   PURPOSE:    
7235
 
7236
   REVISIONS:
7237
   Ver        Date        Author           Description
7238
   ---------  ----------  ---------------  ------------------------------------
7239
   1.0        16/03/2007          1. Created this procedure.
7240
 
7241
   NOTES:
7242
 
7243
   Automatically available Auto Replace Keywords:
7244
      Object Name:     UPDATE_MISC_VIEW
7245
      Sysdate:         16/03/2007
7246
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7247
      Username:         (set in TOAD Options, Procedure Editor)
7248
      Table Name:       (set in the "New PL/SQL Object" dialog)
7249
 
7250
******************************************************************************/
7251
   CURSOR view_cur /*Create a record set to store the ripple data*/
7252
   IS
7253
   	 SELECT pkg.pkg_id, rc.base_view_id 
7254
	 FROM package_versions pv, packages pkg, release_content rc
7255
	 where rc.rtag_id = 2362
7256
	 and rc.pv_id = pv.pv_id
7257
	 and pv.pkg_id = pkg.pkg_id;
7258
   view_rec   view_cur%ROWTYPE;
7259
 
7260
 
7261
 
7262
BEGIN
7263
   OPEN view_cur;
7264
 
7265
   FETCH view_cur
7266
    INTO view_rec;
7267
 
7268
   WHILE view_cur%FOUND
7269
   LOOP
7270
 
7271
 
7272
	   update release_content
7273
	   set base_view_id = view_rec.base_view_id
7274
	   where rtag_id = 8027
7275
	   and pv_id IN 
7276
	   (
7277
	   	select pv.pv_id from release_content rc, package_versions pv
7278
		where rc.rtag_id = 8027
7279
		and pv.pv_id = rc.pv_id
7280
		and pv.pkg_id = view_rec.pkg_id 
7281
 
7282
	   );
7283
 
7284
 
7285
 
7286
 
7287
 
7288
 
7289
 
7290
 
7291
 
7292
   FETCH view_cur
7293
   		 INTO view_rec;
7294
   END LOOP;	 
7295
 
7296
 
7297
 
7298
 
7299
 
7300
END UPDATE_MISC_VIEW;
7301
/
7302
 
7303
CREATE OR REPLACE PACKAGE PK_WORK_IN_PROGRESS IS
7304
/*
7305
------------------------------
7306
||  Last Modified:  S.Vukovic
7307
||  Modified Date:  2/May/2005
7308
||  Spec Version:   1.0
7309
------------------------------
7310
*/
7311
 
7312
	TYPE typeCur IS REF CURSOR;
7313
 
7314
    /*================================================================================================*/
7315
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7316
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
7317
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
7318
 
7319
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
7320
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
7321
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
7322
	/*================================================================================================*/
7323
 
7324
END PK_WORK_IN_PROGRESS;
7325
/
7326
 
7327
CREATE OR REPLACE PROCEDURE level_one_conflicts (
7328
   nnrtag_id       IN   NUMBER,
7329
   nnsession_num   IN   NUMBER
7330
)
7331
IS
7332
/* ---------------------------------------------------------------------------
7333
    Version: 3.0.0
7334
   --------------------------------------------------------------------------- */
7335
BEGIN
7336
   /* ---------  LEVEL 1 CONFILCTS -----------
7337
   || Following states are used:
7338
   || 0 -> NOT FOUND
7339
   || 1 -> MAJOR
7340
   || 2 -> MINOR MINOR
7341
   */
7342
   INSERT INTO temp_env_states
7343
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
7344
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
7345
                      DECODE (frc.v_nmm,
7346
                              NULL, 0,
7347
                              errpv.v_nmm, DECODE (frc.v_mm,
7348
                                                   errpv.v_mm, NULL,
7349
                                                   2
7350
                                                  ),
7351
                              1
7352
                             ) AS MESSAGE
7353
                 FROM (
7354
                       /* Full Release Contents used for reference*/
7355
                       SELECT rpv.pkg_id,
7356
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
7357
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
7358
                         FROM release_content rel, package_versions rpv
7359
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
7360
                      (
7361
                       /* DPV_IDs not fount in release*/
7362
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
7363
                         FROM package_dependencies dep
7364
                        WHERE dep.pv_id IN (SELECT pv_id
7365
                                              FROM release_content
7366
                                             WHERE rtag_id = nnrtag_id)
7367
                          AND NOT dep.dpv_id IN (SELECT pv_id
7368
                                                   FROM release_content
7369
                                                  WHERE rtag_id = nnrtag_id)
7370
                       MINUS
7371
                       /* MINUS Dependencies to be ignored */
7372
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
7373
                         FROM ignore_warnings igw
7374
                        WHERE rtag_id = nnrtag_id) err,
7375
                      package_versions errpkg,
7376
                      package_versions errpv
7377
                WHERE err.err_dpv = errpv.pv_id
7378
                  AND errpv.pkg_id = frc.pkg_id(+)
7379
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
7380
                  AND err.pv_id = errpkg.pv_id;
7381
END level_one_conflicts;
7382
/
7383
 
7384
CREATE OR REPLACE PROCEDURE CLONED_PROCESSES
7385
IS
7386
 
7387
proc_id NUMBER;
7388
/******************************************************************************
7389
   NAME:       DELETE_DO_NOT_RIPPLE
7390
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7391
               IS RELEASED
7392
 
7393
   REVISIONS:
7394
   Ver        Date        Author           Description
7395
   ---------  ----------  ---------------  ------------------------------------
7396
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7397
 
7398
   NOTES:
7399
 
7400
   Automatically available Auto Replace Keywords:
7401
      Object Name:     DELETE_DO_NOT_RIPPLE
7402
      Sysdate:         21/04/2006
7403
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7404
      Username:         (set in TOAD Options, Procedure Editor)
7405
      Table Name:       (set in the "New PL/SQL Object" dialog)
7406
 
7407
******************************************************************************/
7408
   CURSOR ripple_cur
7409
   IS
7410
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
7411
 
7412
   ripple_rec   ripple_cur%ROWTYPE;
7413
BEGIN
7414
   OPEN ripple_cur;
7415
 
7416
   FETCH ripple_cur
7417
    INTO ripple_rec;
7418
 
7419
   WHILE ripple_cur%FOUND
7420
   LOOP
7421
 
7422
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
7423
 
7424
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
7425
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
7426
 
7427
      FETCH ripple_cur
7428
       INTO ripple_rec;
7429
   END LOOP;
7430
END CLONED_PROCESSES;
7431
/
7432
 
7433
CREATE OR REPLACE PACKAGE pk_package_Test
7434
IS
7435
/*
7436
------------------------------
7437
||  Last Modified:  Rupesh Solanki
7438
||  Modified Date:  18/05/2006
7439
||
7440
------------------------------
7441
*/
7442
   TYPE typecur IS REF CURSOR;
7443
 
7444
/*================================================================================================*/
7445
   PROCEDURE new_version (
7446
      nlastpvid                   IN       NUMBER,
7447
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7448
      cbuildtype                  IN       CHAR,
7449
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7450
      nrtagid                     IN       NUMBER,
7451
      nuserid                     IN       NUMBER,
7452
      enumissues_state_imported   IN       NUMBER,
7453
      returnpvid                  OUT      NUMBER
7454
   );
7455
 
7456
   PROCEDURE change_state (
7457
      pvid       IN   NUMBER,
7458
      newstate   IN   package_versions.dlocked%TYPE,
7459
      userid     IN   NUMBER
7460
   );
7461
 
7462
   PROCEDURE new_patch (
7463
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
7464
      nparentpvid        IN       NUMBER,
7465
      spatchidlist       IN       VARCHAR2,
7466
      nuserid            IN       NUMBER,
7467
      returnpatchid      OUT      NUMBER
7468
   );
7469
 
7470
   PROCEDURE obsolete_patch (
7471
      patchid            IN   NUMBER,
7472
      isobsolete         IN   CHAR,
7473
      obsoletecomments   IN   VARCHAR2,
7474
      userid             IN   NUMBER
7475
   );
7476
 
7477
   PROCEDURE obsolete_patches (
7478
      spatchidlist       IN   VARCHAR2,
7479
      isobsolete         IN   CHAR,
7480
      obsoletecomments   IN   VARCHAR2,
7481
      userid             IN   NUMBER
7482
   );
7483
 
7484
   PROCEDURE destroy_package (
7485
      pvid               IN       NUMBER,
7486
      overridewarnings   IN       CHAR DEFAULT 'N',
7487
      problemstring      OUT      VARCHAR2
7488
   );
7489
 
7490
   PROCEDURE add_process (
7491
      nprocid         IN   processes.proc_id%TYPE,
7492
      shealthtag      IN   processes.proc_name%TYPE,
7493
      sprocdesc       IN   processes.proc_description%TYPE,
7494
      scmdinterface   IN   processes.run_as%TYPE,
7495
      spkgowner       IN   processes.pkg_owner%TYPE,
7496
      sisinterface    IN   processes.is_interface%TYPE,
7497
      npvid           IN   package_processes.pv_id%TYPE,
7498
      nuserid         IN   NUMBER
7499
   );
7500
 
7501
   PROCEDURE add_package_process (
7502
      nprocidlist   IN   VARCHAR2,
7503
      npvid         IN   package_processes.pv_id%TYPE,
7504
      nuserid       IN   NUMBER
7505
   );
7506
 
7507
 
7508
 
7509
   PROCEDURE remove_process (
7510
      nprocid   IN   package_processes.proc_id%TYPE,
7511
      npvid     IN   package_processes.pv_id%TYPE,
7512
      nuserid   IN   NUMBER
7513
   );
7514
 
7515
   PROCEDURE move_package (
7516
   	  npvid  			  IN package_versions.pv_id%TYPE,
7517
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
7518
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
7519
	  nuserid			  IN NUMBER		 
7520
   ); 
7521
 
7522
PROCEDURE modify_product_state (
7523
   	  npvid IN package_versions.pv_id%TYPE,
7524
	  nstateid IN product_states.state_id%TYPE,
7525
	  nuserid IN NUMBER
7526
   );
7527
/*================================================================================================*/
7528
END pk_package_Test;
7529
/
7530
 
7531
CREATE OR REPLACE PROCEDURE Shift_Install_Order ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
7532
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
7533
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
7534
/* ---------------------------------------------------------------------------
7535
    Version: 3.0
7536
   --------------------------------------------------------------------------- */
7537
 
7538
currInstallOrder NUMBER;
7539
FromInstallOrder NUMBER;
7540
 
7541
BEGIN
7542
 
7543
	 -- Get Current Install Order
7544
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
7545
       FROM PACKAGE_PATCHES pp
7546
      WHERE pp.PV_ID = nPvId
7547
        AND pp.PATCH_ID = nPatchId;
7548
 
7549
 
7550
	 IF currInstallOrder > nToInstallOrder
7551
	 THEN
7552
 
7553
		FromInstallOrder := nToInstallOrder;
7554
 
7555
	    -- Shift others Up
7556
		UPDATE PACKAGE_PATCHES pp SET
7557
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
7558
		 WHERE pp.PV_ID = nPvId
7559
           AND pp.PATCH_ID != nPatchId
7560
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
7561
 
7562
 
7563
	 ELSIF currInstallOrder < nToInstallOrder
7564
	 THEN
7565
 
7566
		FromInstallOrder := currInstallOrder + 1;
7567
 
7568
		-- Shift others Down
7569
        UPDATE PACKAGE_PATCHES pp SET
7570
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
7571
		 WHERE pp.PV_ID = nPvId
7572
           AND pp.PATCH_ID != nPatchId
7573
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
7574
 
7575
	 END IF;
7576
 
7577
 
7578
	 -- Move Patch to new install order
7579
     UPDATE PACKAGE_PATCHES pp SET
7580
		    pp.INSTALL_ORDER = nToInstallOrder
7581
	  WHERE pp.PV_ID = nPvId
7582
	    AND pp.PATCH_ID = nPatchId;
7583
 
7584
 
7585
END Shift_Install_Order;
7586
/
7587
 
7588
CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEAN
7589
IS
7590
   temp_num NUMBER;
7591
/* ---------------------------------------------------------------------------
7592
    Version: 1.0.0
7593
   --------------------------------------------------------------------------- */
7594
BEGIN
7595
   temp_num := TO_NUMBER(p_val);
7596
   RETURN true;
7597
EXCEPTION WHEN VALUE_ERROR THEN
7598
   RETURN false;
7599
END IS_NUMBER;
7600
/
7601
 
57 mhunt 7602
CREATE OR REPLACE PROCEDURE                   "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
7603
                        nTOpv_id IN NUMBER,
7604
                        nRtag_id IN NUMBER,
7605
                        nUser_id IN NUMBER,
7606
                        nTOpkg_id IN NUMBER DEFAULT NULL,
7607
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
7608
 
7609
   /* ---------------------------------------------------------------------------
7610
   ||  Last Modified:  G.Huddy
7611
   ||  Modified Date:  19/Aug/2008
7612
   ||  Version      :  3.6 (added licencing cloning)
51 mhunt 7613
   --------------------------------------------------------------------------- */
7614
 
7615
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
7616
 
7617
BEGIN
7618
 
7619
------------------------------------- Clone Dependencies ---------------------------------------------------
57 mhunt 7620
   IF NOT nRtag_id IS NULL
7621
   THEN
7622
      -- Auto Update Dependencies --
7623
      INSERT INTO PACKAGE_DEPENDENCIES
7624
           SELECT nTOpv_id AS pv_id,
7625
                  DECODE(nUser_id,
7626
                         frc.modifier_id,
7627
                         frc.pv_id,
7628
                         DECODE(frc.dlocked,
7629
                                'Y',
7630
                                frc.pv_id,
7631
                                dep.dpv_id)
7632
                         ) AS dpv_id,
7633
                  nTOpkg_id AS pkg_id,
7634
                  dep.dpkg_id,
7635
                  dep.build_type,
7636
                  dep.display_order
7637
             FROM PACKAGE_DEPENDENCIES dep,
7638
                  PACKAGE_VERSIONS pv,
7639
                  (
7640
                  /* Full Release Contents used for reference*/
7641
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
7642
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
7643
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
7644
                  ) frc
7645
            WHERE dep.pv_id = nFROMpv_id
7646
              AND dep.dpv_id = pv.pv_id
7647
              AND pv.pkg_id = frc.pkg_id(+)
7648
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
7649
   ELSE
7650
      -- Clone Dependencies --
7651
      INSERT INTO PACKAGE_DEPENDENCIES
7652
           SELECT nTOpv_id         AS pv_id,
7653
                  dep.dpv_id,
7654
                  nTOpkg_id        AS pkg_id,
7655
                  dep.dpkg_id,
7656
                  dep.build_type,
7657
                  dep.display_order
7658
             FROM PACKAGE_DEPENDENCIES dep
7659
            WHERE dep.pv_id = nFROMpv_id;
51 mhunt 7660
 
57 mhunt 7661
   END IF;
51 mhunt 7662
 
7663
----------------------------------------- Clone Issues -------------------------------------------------------
57 mhunt 7664
   IF enumISSUES_STATE_IMPORTED IS NULL
7665
   THEN
51 mhunt 7666
        /* All Issues */
57 mhunt 7667
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7668
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7669
              FROM CQ_ISSUES
7670
             WHERE pv_id = nFROMpv_id;
7671
   ELSE
7672
       /* Outstanding Issues Only */
7673
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
7674
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
7675
              FROM CQ_ISSUES
51 mhunt 7676
             WHERE pv_id = nFROMpv_id
7677
               AND iss_state = enumISSUES_STATE_IMPORTED;
57 mhunt 7678
   END IF;
51 mhunt 7679
 
7680
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
57 mhunt 7681
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
7682
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
7683
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
51 mhunt 7684
 
7685
--------------------------------------- Clone Additional Notes ------------------------------------------------
57 mhunt 7686
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
7687
        SELECT an.NOTE_ID,
7688
               nTOpv_id AS PV_ID,
7689
               an.NOTE_TITLE,
7690
               an.NOTE_BODY,
7691
               an.MOD_DATE,
7692
               an.MOD_USER
7693
          FROM ADDITIONAL_NOTES an
7694
         WHERE an.PV_ID = nFROMpv_id;
51 mhunt 7695
 
7696
-------------------------------------------- Clone Unit Tests -------------------------------------------------
57 mhunt 7697
   -- Clone only Automatic unit tests --
7698
   INSERT INTO UNIT_TESTS (
7699
                           TEST_ID,
7700
                           PV_ID,
7701
                           TEST_TYPES_FK,
7702
                           TEST_SUMMARY,
7703
                           COMPLETION_DATE,
7704
                           COMPLETED_BY,
7705
                           RESULTS_URL,
7706
                           RESULTS_ATTACHMENT_NAME,
7707
                           NUMOF_TEST
7708
                          )
7709
        SELECT ut.TEST_ID,
7710
               nTOpv_id AS PV_ID,
7711
               ut.TEST_TYPES_FK,
7712
               ut.TEST_SUMMARY,
7713
               Ora_Sysdate AS COMPLETION_DATE,
7714
               nUser_id AS COMPLETED_BY,
7715
               ut.RESULTS_URL,
7716
               ut.RESULTS_ATTACHMENT_NAME,
7717
               ut.NUMOF_TEST
7718
          FROM UNIT_TESTS ut
7719
         WHERE ut.PV_ID = nFROMpv_id
7720
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
51 mhunt 7721
 
57 mhunt 7722
    -- Clone only Interactive Unit Tests --
7723
    INSERT INTO UNIT_TESTS (
7724
                            TEST_ID,
7725
                            PV_ID,
7726
                            TEST_TYPES_FK,
7727
                            TEST_SUMMARY
7728
                           )
7729
       SELECT ut.TEST_ID,
7730
              nTOpv_id AS PV_ID,
7731
              ut.TEST_TYPES_FK,
7732
              ut.TEST_SUMMARY
7733
         FROM UNIT_TESTS ut
7734
        WHERE ut.PV_ID = nFROMpv_id
7735
          AND ut.TEST_TYPES_FK IN (6);
7736
 
51 mhunt 7737
-------------------------------------------- Clone Package Documents ------------------------------------------
57 mhunt 7738
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
7739
        SELECT nTOpv_id AS PV_ID,
7740
               pd.test_id,
7741
               pd.doc_num,
7742
               pd.doc_id,
7743
               pd.IS_LATEST
7744
          FROM PACKAGE_DOCUMENTS pd
7745
         WHERE pd.PV_ID = nFROMpv_id;
51 mhunt 7746
 
7747
-------------------------------------------- Clone Build Environments -----------------------------------------
7748
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
57 mhunt 7749
    SELECT nTOpv_id AS PV_ID,
7750
           pkgbe.BE_ID,
7751
           pkgbe.BUILD_TYPE
7752
      FROM PACKAGE_BUILD_ENV pkgbe
7753
     WHERE pkgbe.PV_ID = nFROMpv_id;
51 mhunt 7754
---------------------------------------------Clone Package Build Info------------------------------------------
7755
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
57 mhunt 7756
    SELECT nTOpv_id AS PV_ID,
7757
           pkgbinfo.BM_ID,
7758
           pkgbinfo.BSA_ID
7759
      FROM PACKAGE_BUILD_INFO pkgbinfo
7760
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
51 mhunt 7761
---------------------------------------------Clone Package Version Processes-----------------------------------
7762
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
57 mhunt 7763
    SELECT nTOpv_id AS PV_ID,
7764
           pp.PROC_ID
7765
      FROM PACKAGE_PROCESSES pp
7766
     WHERE pp.PV_ID = nFROMpv_id;
7767
---------------------------------------------Clone Licencing Associations-----------------------------------
7768
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
51 mhunt 7769
---------------------------------------------------------------------------------------------------------------
7770
 
57 mhunt 7771
    /* LOG ACTION */
51 mhunt 7772
    SELECT pv.PKG_VERSION INTO FromVersion
7773
      FROM PACKAGE_VERSIONS pv
7774
     WHERE pv.PV_ID = nFROMpv_id;
7775
 
7776
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
57 mhunt 7777
                 'Details cloned from: '|| FromVersion );
51 mhunt 7778
 
7779
---------------------------------------------------------------------------------------------------------------
7780
 
7781
END Basic_Clone;
7782
/
7783
 
7784
CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
7785
/* ---------------------------------------------------------------------------
7786
    Version: 3.0.0
7787
   --------------------------------------------------------------------------- */
7788
 
7789
 
7790
BEGIN
7791
 
7792
	 --- Delete From RELEASE_COMPONENTS
7793
	 DELETE FROM RELEASE_COMPONENTS
7794
	 WHERE PV_ID = nPvId;
7795
 
7796
END Remove_Components;
7797
/
7798
 
7799
CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version   ( nPv_id 				IN NUMBER,
7800
														  sSyncRtagsInList		IN VARCHAR2,
7801
				                                          nUser_id 				IN NUMBER ) IS
7802
/* ---------------------------------------------------------------------------
7803
    Version: 3.0.0
7804
   --------------------------------------------------------------------------- */
7805
 
7806
	CURSOR sync_rtags_cur IS
7807
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
7808
		  FROM release_content rc,
7809
		  	   package_versions pv,
7810
		       package_versions opv
7811
		 WHERE rc.pv_id = pv.pv_id
7812
		   AND opv.pkg_id = pv.pkg_id
7813
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
7814
		   AND opv.pv_id = nPv_id
7815
		   AND rtag_id IN ( SELECT *
7816
		   	   		   	      FROM THE (
7817
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
7818
					       		   	    FROM dual
7819
									   )
7820
						  );
7821
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
7822
 
7823
BEGIN
7824
 
7825
	OPEN sync_rtags_cur;
7826
	FETCH sync_rtags_cur INTO sync_rtags_rec;
7827
 
7828
	WHILE sync_rtags_cur%FOUND
7829
	LOOP
7830
		DELETE FROM RELEASE_CONTENT
7831
		 WHERE rtag_id = sync_rtags_rec.rtag_id
7832
	       AND pv_id = sync_rtags_rec.pv_id;
7833
 
7834
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
7835
	   		   VALUES ( sync_rtags_rec.rtag_id,
7836
		       		  	nPv_id,
7837
						sync_rtags_rec.BASE_VIEW_ID,
7838
	           			Ora_Sysdate,
7839
	           			nUser_id,
7840
 
7841
	      	   		   );
7842
 
7843
-- 		UPDATE RELEASE_CONTENT
7844
-- 	       SET pv_id = nPv_id,
7845
-- 	           insert_stamp = Ora_Sysdate,
7846
-- 	           insertor_id = nUser_id
7847
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
7848
-- 	       AND pv_id = sync_rtags_rec.pv_id;
7849
 
7850
		FETCH sync_rtags_cur INTO sync_rtags_rec;
7851
	END LOOP;
7852
 
7853
	CLOSE sync_rtags_cur;
7854
 
7855
END Sync_Projects_New_Version;
7856
/
7857
 
7858
CREATE OR REPLACE PROCEDURE Set_Advisory_Ripple ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7859
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7860
											 nUserId IN NUMBER ) IS
7861
/* ---------------------------------------------------------------------------
7862
    Version: 4.0
7863
   --------------------------------------------------------------------------- */
7864
 
7865
BEGIN
7866
 
7867
    -- Set Advisory Ripple Package
7868
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
7869
	VALUES (nRtagId, nPvId);
7870
 
7871
    /* LOG ACTION */
7872
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
7873
 
7874
	/*Rebuild_Environment(nRtagId);*/
7875
 
7876
END Set_Advisory_Ripple;
7877
/
7878
 
7879
CREATE OR REPLACE PACKAGE pk_project IS
7880
/*
7881
------------------------------
7882
||  Last Modified:  J.Tweddle
7883
||  Modified Date:  23/Aug/2007
7884
||  Spec Version:   1.0
7885
------------------------------
7886
*/
7887
 
7888
    TYPE typecur IS REF CURSOR;
7889
 
7890
    /*------------------------------------------------------------------------*/
7891
    PROCEDURE update_base_url (
7892
        nprojid   IN  projects.proj_id%TYPE,
7893
        sbaseurl  IN  VARCHAR2
7894
    );
7895
    /*------------------------------------------------------------------------*/
7896
 
7897
END pk_project;
7898
/
7899
 
7900
CREATE OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT  (
7901
  sender      IN VARCHAR2,
7902
  recipient   IN VARCHAR2,
7903
  ccrecipient IN VARCHAR2,
7904
  subject     IN VARCHAR2,
7905
  message     IN VARCHAR2
7906
  ) IS
7907
 
7908
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
7909
  connection utl_smtp.connection;
7910
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
7911
  header VARCHAR2(1000);
7912
 
7913
BEGIN
7914
 
7915
  --
7916
  -- Start the connection.
7917
  --
7918
  connection := utl_smtp.open_connection(mailhost,25);
7919
 
7920
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
7921
     'From: '||sender||''||crlf||
7922
  'Subject: '||subject||crlf||
7923
       'To: '||recipient||crlf||
7924
       'CC: '||ccrecipient;
7925
 
7926
  --
7927
  -- Handshake with the SMTP server
7928
  --
7929
  utl_smtp.helo(connection, mailhost);
7930
  utl_smtp.mail(connection, sender);
7931
  utl_smtp.rcpt(connection, recipient);
7932
  utl_smtp.rcpt(connection, ccrecipient);
7933
  utl_smtp.open_data(connection);
7934
  --
7935
  -- Write the header
7936
  --
7937
  utl_smtp.write_data(connection, header);
7938
  --
7939
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
7940
  --
7941
  utl_smtp.write_data(connection, crlf ||message);
7942
  utl_smtp.close_data(connection);
7943
  utl_smtp.quit(connection);
7944
 
7945
EXCEPTION
7946
  WHEN UTL_SMTP.INVALID_OPERATION THEN
7947
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
7948
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
7949
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
7950
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
7951
    dbms_output.put_line(' Errors in code for SMTP transaction.');
7952
 
7953
END RELEASE_MANAGER_MAILOUT;
7954
/
7955
 
7956
CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,
7957
	   	  		  					     retSessionNum OUT NUMBER ) IS
7958
 
7959
/* ---------------------------------------------------------------------------
7960
    Version: 3.0.0
7961
   --------------------------------------------------------------------------- */
7962
    rowCnt 			NUMBER := 0;						-- Iterations counter
7963
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
7964
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
7965
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
7966
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
7967
    sessionNum 		NUMBER;
7968
	levelNum		NUMBER;
7969
 
7970
BEGIN
7971
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
7972
 
7973
	/*
7974
	||	   Start UP THE TREE
7975
	*/
7976
 
7977
 
7978
	/* Packages with no dependencies */    
7979
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
7980
		SELECT sessionNum AS SESSION_NUM,
7981
			   iteration AS LEVEL_NUM,
7982
			   UP_THE_TREE AS DIRECTION,
7983
			   rc.pv_id, pv.pkg_id, pv.v_ext
7984
		  FROM release_content rc,
7985
		  	   package_versions pv
7986
		 WHERE rc.rtag_id = nRtag_id
7987
		   AND rc.pv_id = pv.pv_id
7988
		 MINUS
7989
		SELECT sessionNum AS SESSION_NUM, 
7990
			   iteration AS LEVEL_NUM,
7991
			   UP_THE_TREE AS DIRECTION,
7992
			   dep.pv_id, pv.pkg_id, pv.v_ext
7993
		  FROM package_dependencies dep,
7994
		  	   package_versions pv
7995
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
7996
		   AND dep.pv_id = pv.pv_id;
7997
 
7998
 
7999
	/* Browse UP the build tree */	   
8000
	iteration := iteration + 1;
8001
    LOOP
8002
 
8003
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8004
			SELECT DISTINCT 
8005
			       sessionNum AS SESSION_NUM,
8006
			       iteration AS LEVEL_NUM,
8007
				   UP_THE_TREE AS DIRECTION, 
8008
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
8009
			  FROM (  
8010
			        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
8011
			          FROM package_dependencies dep,
8012
			               release_content rc,
8013
						   package_versions pv,
8014
						   package_versions dpv
8015
			         WHERE dep.pv_id = rc.pv_id
8016
			           AND rc.rtag_id = nRtag_id
8017
					   AND dep.pv_id = pv.pv_id
8018
					   AND dep.dpv_id = dpv.pv_id
8019
					) rdep,
8020
					temp_tree_browse ttb
8021
			 WHERE rdep.dpkg_id  = ttb.pkg_id
8022
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
8023
			   AND ttb.SESSION_NUM = sessionNum
8024
			   AND ttb.LEVEL_NUM = iteration - 1	
8025
			MINUS
8026
			/* Packages with all depencencies NOT matched */  
8027
			SELECT DISTINCT 
8028
			       sessionNum AS SESSION_NUM,
8029
			       iteration AS LEVEL_NUM, 
8030
				   UP_THE_TREE AS DIRECTION,
8031
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
8032
			  FROM (  
8033
			        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
8034
			          FROM package_dependencies dep,
8035
			               release_content rc,
8036
						   package_versions pv,
8037
						   package_versions dpv
8038
			         WHERE dep.pv_id = rc.pv_id
8039
			           AND rc.rtag_id = nRtag_id
8040
					   AND dep.pv_id = pv.pv_id
8041
					   AND dep.dpv_id = dpv.pv_id
8042
					) rdep,
8043
					(
8044
					 SELECT tb.*
8045
					   FROM temp_tree_browse tb
8046
					  WHERE tb.SESSION_NUM = sessionNum
8047
					) ttb
8048
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
8049
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
8050
			   AND ttb.SESSION_NUM IS NULL;
8051
 
8052
		rowCnt := SQL%ROWCOUNT;
8053
		IF rowCnt > 0 THEN
8054
           iteration := iteration + 1;
8055
		END IF;
8056
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
8057
    END LOOP;
8058
 
8059
	/*---------------------------------------------------------------------------------------------------------------------*/
8060
 
8061
	/*     Check for unresolved dependencies
8062
	||  
8063
	*/
8064
	/* UNRESOLVED */
8065
	 SELECT COUNT(*) INTO rowCnt
8066
	   FROM (
8067
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8068
			  FROM release_content rc,
8069
			  	   package_versions pv
8070
			 WHERE rc.rtag_id = nRtag_id
8071
			   AND rc.pv_id = pv.pv_id	   
8072
			MINUS
8073
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8074
			  FROM temp_tree_browse ttb
8075
			 WHERE ttb.session_num = sessionNum
8076
			);
8077
 
8078
 
8079
 
8080
	 IF rowCnt > 0 
8081
	 THEN
8082
	 	 /*     Circular dependencies detected.
8083
		 ||     Try to resolve build order from the top now.
8084
		 ||		Start DOWN THE TREE
8085
		 */
8086
 
8087
		iteration := 0; 
8088
		 /* Top Level packages */	
8089
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
8090
			SELECT sessionNum AS SESSION_NUM,
8091
			       iteration AS LEVEL_NUM,
8092
				   DOWN_THE_TREE AS DIRECTION,
8093
				   pv.pv_id, pv.pkg_id, pv.v_ext
8094
			  FROM (		   
8095
					/* Packages no one depends on ( Top level packages )*/
8096
					( 
8097
					/* All parents*/ 
8098
					SELECT pv.pkg_id, pv.v_ext
8099
			          FROM package_dependencies dep,
8100
			               release_content rc,
8101
						   package_versions pv
8102
			         WHERE dep.pv_id = rc.pv_id
8103
			           AND rc.rtag_id = nRtag_id
8104
					   AND dep.pv_id = pv.pv_id
8105
					 MINUS
8106
					 /* All children */
8107
					SELECT dpv.pkg_id, dpv.v_ext
8108
			          FROM package_dependencies dep,
8109
			               release_content rc,
8110
						   package_versions dpv
8111
			         WHERE dep.pv_id = rc.pv_id
8112
			           AND rc.rtag_id = nRtag_id
8113
					   AND dep.dpv_id = dpv.pv_id
8114
					 ) 
8115
					 MINUS
8116
					/* Packages with resolved dependencies from UP THE TREE */ 
8117
					SELECT ttb.pkg_id, ttb.v_ext
8118
					  FROM temp_tree_browse ttb
8119
					 WHERE ttb.session_num = sessionNum
8120
				  ) tpkg,
8121
				  package_versions pv,
8122
				  release_content rc
8123
			WHERE rc.rtag_id = nRtag_id
8124
			  AND rc.pv_id = pv.pv_id
8125
			  AND tpkg.pkg_id = pv.pkg_id
8126
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8127
 
8128
 
8129
		 /* Keep taking packages which no one depende on */			  
8130
		 iteration := iteration - 1;  
8131
		 LOOP	  
8132
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
8133
					SELECT sessionNum AS SESSION_NUM,
8134
					       iteration AS LEVEL_NUM,
8135
					       DOWN_THE_TREE AS DIRECTION,
8136
					       pv.pv_id, pv.pkg_id, pv.v_ext
8137
					  FROM (		   
8138
					 	/* All Unresolved */
8139
					 	(
8140
					 	SELECT pv.pkg_id, pv.v_ext
8141
					 	  FROM release_content rc,
8142
					 	  	   package_versions pv
8143
					 	 WHERE rc.rtag_id = nRtag_id
8144
					 	   AND rc.pv_id = pv.pv_id	   
8145
					 	MINUS
8146
					 	SELECT ttb.pkg_id, ttb.v_ext
8147
					 	  FROM temp_tree_browse ttb
8148
					 	 WHERE ttb.session_num = sessionNum
8149
					 	)
8150
					 	 MINUS
8151
					 	(  
8152
					 	 /* Children of Unresolved */  
8153
					 	SELECT dpv.pkg_id, dpv.V_EXT
8154
					 	  FROM (
8155
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8156
					 			  FROM release_content rc,
8157
					 			  	   package_versions pv
8158
					 			 WHERE rc.rtag_id = nRtag_id
8159
					 			   AND rc.pv_id = pv.pv_id	   
8160
					 			MINUS
8161
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8162
					 			  FROM temp_tree_browse ttb
8163
					 			 WHERE ttb.session_num = sessionNum
8164
					 		   ) unr,
8165
					 		   package_dependencies dep,
8166
					 		   package_versions dpv
8167
					 	 WHERE unr.pv_id = dep.pv_id
8168
					 	   AND dep.dpv_id = dpv.pv_id
8169
					 	 )  
8170
					   ) tpkg,
8171
					   package_versions pv,
8172
					   release_content rc
8173
					WHERE rc.rtag_id = nRtag_id
8174
					  AND rc.pv_id = pv.pv_id
8175
					  AND tpkg.pkg_id = pv.pkg_id
8176
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
8177
 
8178
            rowCnt := SQL%ROWCOUNT;
8179
        	IF rowCnt > 0 THEN
8180
	           iteration := iteration - 1;
8181
			END IF;
8182
            EXIT WHEN (rowCnt < 1);
8183
     	END LOOP;
8184
 
8185
	 END IF;
8186
 
8187
 
8188
	/*---------------------------------------------------------------------------------------------------------------------*/
8189
 
8190
	/* 
8191
	|| 	 Save results from temp table
8192
	*/	
8193
	/* Clean up build_order table */
8194
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
8195
 
8196
	/* Save UP THE TREE */
8197
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8198
		SELECT nRtag_id AS rtag_id,
8199
			   ttb.level_num AS step_num, 
8200
			   ttb.PV_ID
8201
		  FROM temp_tree_browse ttb
8202
		 WHERE ttb.session_num = sessionNum
8203
		   AND ttb.direction = UP_THE_TREE;	
8204
 
8205
	/*Get last step_num */
8206
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
8207
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
8208
 
8209
	/* UNRESOLVED */
8210
	 SELECT COUNT(*) INTO rowCnt
8211
	   FROM (
8212
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8213
			  FROM release_content rc,
8214
			  	   package_versions pv
8215
			 WHERE rc.rtag_id = nRtag_id
8216
			   AND rc.pv_id = pv.pv_id	   
8217
			MINUS
8218
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8219
			  FROM temp_tree_browse ttb
8220
			 WHERE ttb.session_num = sessionNum
8221
			);
8222
 
8223
 
8224
	IF rowCnt > 0
8225
	THEN
8226
		/* Save unresolved packages */
8227
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
8228
		    SELECT  nRtag_id AS rtag_id,
8229
				    levelNum AS step_num, 
8230
				    upv.PV_ID,
8231
					'Y' AS UNRESOLVED
8232
			   FROM (
8233
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
8234
					  FROM release_content rc,
8235
					  	   package_versions pv
8236
					 WHERE rc.rtag_id = nRtag_id
8237
					   AND rc.pv_id = pv.pv_id	   
8238
					MINUS
8239
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
8240
					  FROM temp_tree_browse ttb
8241
					 WHERE ttb.session_num = sessionNum
8242
					) upv;
8243
	END IF;	
8244
 
8245
	/* Save DOWN THE TREE */
8246
	levelNum := 1000;
8247
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
8248
		SELECT nRtag_id AS rtag_id,
8249
			   levelNum + ttb.level_num  AS step_num, 
8250
			   ttb.PV_ID
8251
		  FROM temp_tree_browse ttb
8252
		 WHERE ttb.session_num = sessionNum
8253
		   AND ttb.direction = DOWN_THE_TREE;
8254
 
8255
 
8256
	/*---------------------------------------------------------------------------------------------------------------------*/
8257
 
8258
	/* Clean up temp table */
8259
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
8260
 
8261
	retSessionNum := sessionNum;
8262
END Build_Tree;
8263
/
8264
 
8265
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER2 ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
8266
 
8267
/* ---------------------------------------------------------------------------
8268
    Version: 3.0.0
8269
   --------------------------------------------------------------------------- */
8270
 
8271
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
8272
	pos				   NUMBER;
8273
	in_list			   VARCHAR2(32767) := sInList || ',';
8274
 
8275
BEGIN
8276
 
8277
	IF NOT sInList IS NULL
8278
	THEN
8279
		LOOP
8280
	        EXIT WHEN in_list IS NULL;
8281
	        pos := INSTR ( in_list, ',' );
8282
	        sync_rtags.extend;
8283
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
8284
	        in_list := SUBSTR ( in_list, pos+1 );
8285
		END LOOP;
8286
	END IF;
8287
 
8288
	RETURN sync_rtags;
8289
END IN_LIST_NUMBER2;
8290
/
8291
 
8292
CREATE OR REPLACE PACKAGE pk_buildapi
8293
IS
8294
/*
8295
------------------------------
8296
||  Last Modified:  Rupesh Solanki
8297
||  Modified Date:  26/Jun/2007
8298
||  Spec Version:   3.0
8299
------------------------------
8300
*/
8301
 
8302
   /*================================================================================================*/
8303
   PROCEDURE add_product_component (
8304
      npvid           IN   NUMBER,
8305
      sosname         IN   VARCHAR2,
8306
      sorigfilepath   IN   VARCHAR2,
8307
      sfilename       IN   VARCHAR2,
8308
      sdestfilepath   IN   VARCHAR2,
8309
      nbytesize       IN   NUMBER,
8310
      scrccksum       IN   VARCHAR2
8311
   );
8312
 
8313
   PROCEDURE remove_all_product_components (
8314
      npvid     IN   NUMBER,
8315
      sosname   IN   VARCHAR2
8316
   );
8317
 
8318
/*================================================================================================*/
8319
   FUNCTION get_osid (sosname IN VARCHAR2)
8320
      RETURN NUMBER;
8321
 
8322
/*================================================================================================*/
8323
   PROCEDURE update_build_service (
8324
      sdatabaseserver   IN   VARCHAR2,
8325
      swebserver        IN   VARCHAR2,
8326
      smailserver       IN   VARCHAR2,
8327
      smailsender       IN   VARCHAR2,
8328
      sdiskspace        IN   VARCHAR2,
8329
      ssbommanagement   IN   VARCHAR2
8330
   );
8331
 
8332
/*================================================================================================*/
8333
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
8334
 
8335
/*================================================================================================*/
8336
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
8337
 
8338
/*================================================================================================*/
8339
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
8340
 
8341
/*================================================================================================*/
8342
   PROCEDURE add_daemon (
8343
      sdaemonhostname   IN   VARCHAR2,
8344
      nrtagid           IN   NUMBER,
8345
      ngbeid            IN   NUMBER,
8346
      sgbebuildfilter   IN   VARCHAR2
8347
   );
8348
 
8349
/*================================================================================================*/
8350
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
8351
 
8352
/*================================================================================================*/
8353
   PROCEDURE update_daemon (
8354
      sdaemonhostname   IN   VARCHAR2,
8355
      nrconid           IN   NUMBER,
8356
      ngbeid            IN   NUMBER,
8357
      sgbebuildfilter   IN   VARCHAR2
8358
   );
8359
 
8360
/*================================================================================================*/
8361
   PROCEDURE insert_schedule_info (
8362
      dschedulepause     IN   DATE,
8363
      dscheduleresume    IN   DATE,
8364
      crepeat            IN   VARCHAR2,
8365
      cindefinitepause   IN   VARCHAR2
8366
   );
8367
 
8368
/*================================================================================================*/
8369
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
8370
 
8371
/*================================================================================================*/
8372
   PROCEDURE set_infinite_pause;
8373
 
8374
/*================================================================================================*/
8375
   PROCEDURE set_resume;
8376
 
8377
/*================================================================================================*/
8378
   PROCEDURE delete_out_of_date_schedule;
8379
 
8380
/*================================================================================================*/
8381
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
8382
 
8383
/*================================================================================================*/
8384
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
8385
/*================================================================================================*/
8386
END pk_buildapi;
8387
/
8388
 
8389
CREATE OR REPLACE PROCEDURE Remove_Patch ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
8390
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
8391
                                           nUserId IN NUMBER ) IS
8392
/* ---------------------------------------------------------------------------
8393
    Version: 4.0
8394
   --------------------------------------------------------------------------- */
8395
 
8396
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
8397
 
8398
CURSOR curPatch IS
8399
	SELECT pp.PV_ID,
8400
		   pp.PATCH_ID,
8401
	       ROWNUM AS NEW_INSTALL_ORDER
8402
	  FROM PACKAGE_PATCHES pp
8403
	 WHERE pp.PV_ID = nPvId
8404
	ORDER BY pp.INSTALL_ORDER;
8405
recPatch curPatch%ROWTYPE;
8406
 
8407
BEGIN
8408
 
8409
	 -- Delete Patch
8410
     DELETE
8411
       FROM PACKAGE_PATCHES pp
8412
      WHERE pp.PV_ID = nPvId
8413
        AND pp.PATCH_ID = nPatchId;
8414
 
8415
 
8416
	-- Redo Install Order
8417
    OPEN curPatch;
8418
	FETCH curPatch INTO recPatch;
8419
 
8420
	WHILE curPatch%FOUND
8421
	LOOP
8422
 
8423
		UPDATE PACKAGE_PATCHES pp SET
8424
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
8425
		WHERE pp.PV_ID = nPvId
8426
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
8427
 
8428
		FETCH curPatch INTO recPatch;
8429
	END LOOP;
8430
 
8431
	CLOSE curPatch;
8432
 
8433
 
8434
 
8435
 
8436
    /* LOG ACTION */
8437
    SELECT pv.PKG_VERSION INTO PatchVersion
8438
      FROM PACKAGE_VERSIONS pv
8439
     WHERE pv.PV_ID = nPatchId;
8440
 
8441
   	Log_Action ( nPvId, 'patch_remove', nUserId,
8442
   			     'Version: '|| PatchVersion );
8443
 
8444
END Remove_Patch;
8445
/
8446
 
8447
CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
8448
/
8449
 
8450
CREATE OR REPLACE PROCEDURE Add_Component ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
8451
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
8452
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
8453
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
8454
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
8455
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
8456
                                           ) IS
8457
/* ---------------------------------------------------------------------------
8458
    Version: 3.0.0
8459
   --------------------------------------------------------------------------- */
8460
 
8461
 
8462
BEGIN
8463
 
8464
	 --- Insert into RELEASE_COMPONENTS
8465
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
8466
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
8467
 
8468
 
8469
 
8470
 
8471
END Add_Component;
8472
/
8473
 
8474
CREATE OR REPLACE PROCEDURE ole
8475
IS retval VARCHAR2(40);   
8476
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
8477
DBMS_OUTPUT.PUT_LINE(retval);
8478
/
8479
 
8480
CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,
8481
	   	  		  						 			  nViewId IN NUMBER,
8482
										 			  sUserIdList IN VARCHAR2,
8483
										 			  nUserId IN NUMBER ) IS
8484
 
8485
GroupId NUMBER;													  
8486
 
8487
 
8488
 
8489
/******************************************************************************
8490
   NAME:       UPDATE_VIEW
8491
   PURPOSE:    
8492
 
8493
   REVISIONS:
8494
   Ver        Date        Author           		Description
8495
   ---------  ----------  ---------------  ------------------------------------
8496
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
8497
 
8498
   NOTES:
8499
 
8500
   Automatically available Auto Replace Keywords:
8501
      Object Name:     UPDATE_VIEW
8502
      Sysdate:         10/04/2006
8503
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
8504
      Username:         (set in TOAD Options, Procedure Editor)
8505
      Table Name:       (set in the "New PL/SQL Object" dialog)
8506
 
8507
******************************************************************************/
8508
 
8509
BEGIN
8510
	 SELECT GROUP_EMAIL_ID into GroupId
8511
	 FROM AUTOBUILD_FAILURE
8512
	 WHERE PROJ_ID = nProjId
8513
	 AND VIEW_ID = nViewId;
8514
 
8515
	 DELETE FROM MEMBERS_GROUP
8516
	 WHERE GROUP_EMAIL_ID = GroupId
8517
	 AND USER_ID IN (
8518
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
8519
	 );
8520
 
8521
 
8522
 
8523
END REMOVE_PROJECT_VIEW_OWNER;
8524
/
8525
 
8526
CREATE OR REPLACE PROCEDURE test
8527
IS
8528
 
8529
proc_id NUMBER;
8530
/******************************************************************************
8531
   NAME:       DELETE_DO_NOT_RIPPLE
8532
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8533
               IS RELEASED
8534
 
8535
   REVISIONS:
8536
   Ver        Date        Author           Description
8537
   ---------  ----------  ---------------  ------------------------------------
8538
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8539
 
8540
   NOTES:
8541
 
8542
   Automatically available Auto Replace Keywords:
8543
      Object Name:     DELETE_DO_NOT_RIPPLE
8544
      Sysdate:         21/04/2006
8545
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8546
      Username:         (set in TOAD Options, Procedure Editor)
8547
      Table Name:       (set in the "New PL/SQL Object" dialog)
8548
 
8549
******************************************************************************/
8550
   CURSOR ripple_cur
8551
   IS
8552
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
8553
 
8554
   ripple_rec   ripple_cur%ROWTYPE;
8555
BEGIN
8556
   OPEN ripple_cur;
8557
 
8558
   FETCH ripple_cur
8559
    INTO ripple_rec;
8560
 
8561
   WHILE ripple_cur%FOUND
8562
   LOOP
8563
 
8564
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
8565
 
8566
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
8567
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
8568
 
8569
      FETCH ripple_cur
8570
       INTO ripple_rec;
8571
   END LOOP;
8572
END test;
8573
/
8574
 
8575
CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8576
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
8577
/* ---------------------------------------------------------------------------
8578
    Version: 4.0
8579
   --------------------------------------------------------------------------- */
8580
 
8581
BEGIN
8582
 
8583
    -- Unlock Package
8584
    UPDATE RELEASE_CONTENT rc SET
8585
    	rc.PKG_STATE = 0
8586
    WHERE rc.PV_ID = nPvId
8587
	AND rc.RTAG_ID = nRtagId;
8588
 
8589
    /* LOG ACTION */
8590
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
8591
 
8592
END Change_Package_State;
8593
/
8594
 
8595
CREATE OR REPLACE PACKAGE Rm_Issues AS
8596
 
8597
	TYPE T_Cur IS REF CURSOR;
8598
 
8599
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8600
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
8601
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
8602
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
8603
 
8604
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8605
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
8606
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
8607
 
8608
END Rm_Issues;
8609
/
8610
 
8611
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
8612
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
8613
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
8614
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
8615
                                            sDpkg_path IN VARCHAR2,
8616
                                            sResults IN VARCHAR2,
8617
                                            sCompletion_date IN VARCHAR2,
8618
                                            nCompleted_by IN NUMBER,
8619
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
8620
											enumTEST_TYPE_NOT_DONE IN NUMBER,
8621
											outFileName OUT VARCHAR2
8622
                                           ) IS
8623
/* ---------------------------------------------------------------------------
8624
    Version: 3.2.0
8625
   --------------------------------------------------------------------------- */
8626
 
8627
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
8628
 
8629
    newID NUMBER;
8630
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
8631
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
8632
 
8633
BEGIN
8634
 
8635
	-- Get new ID --
8636
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
8637
 
8638
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
8639
       	ResultsURL := sResults;
8640
       ELSE
8641
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
8642
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
8643
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
8644
           END IF;
8645
       END IF;
8646
 
8647
	-- Remove NOT_DONE entry if exists
8648
	DELETE FROM UNIT_TESTS
8649
	 WHERE pv_id = nPv_id
8650
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
8651
 
8652
	--- Add Additional Note ---
8653
    INSERT INTO UNIT_TESTS ( TEST_ID,
8654
								PV_ID,
8655
								TEST_TYPES_FK,
8656
								TEST_SUMMARY,
8657
								COMPLETION_DATE,
8658
								COMPLETED_BY,
8659
								RESULTS_URL,
8660
								RESULTS_ATTACHMENT_NAME,
8661
								NUMOF_TEST )
8662
    VALUES (
8663
       	newID,
8664
           nPv_id,
8665
           nTestTypeId,
8666
           sTest_summary,
8667
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
8668
           nCompleted_by,
8669
           ResultsURL,
8670
           ResultsAttachment,
8671
		   sNumOfTest );
8672
 
8673
END New_Unit_Test;
8674
/
8675
 
8676
CREATE OR REPLACE PROCEDURE Ripple_Package (
8677
        sPvIdList IN VARCHAR2,
8678
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
8679
        nUserId IN NUMBER
8680
    ) IS
8681
/* ---------------------------------------------------------------------------
8682
    Version: 4.1
8683
   --------------------------------------------------------------------------- */
8684
 
8685
BEGIN
8686
 
8687
    IF (sPvIdList IS NULL) THEN
8688
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
8689
    END IF;
8690
 
8691
    -- Ripple Package
8692
    DELETE FROM DO_NOT_RIPPLE
8693
    WHERE RTAG_ID = nRtagId
8694
    AND PV_ID IN (
8695
        SELECT *
8696
        FROM THE (
8697
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
8698
            AS RELMGR_NUMBER_TAB_t )
8699
            FROM DUAL
8700
        )
8701
    );
8702
 
8703
    /* LOG ACTION */
8704
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
8705
 
8706
END Ripple_Package;
8707
/
8708
 
8709
CREATE OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
8710
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
8711
/* ---------------------------------------------------------------------------
8712
    Last Modified: Rupesh Solanki
8713
	Version: 3.0.1
8714
   --------------------------------------------------------------------------- */
8715
 
8716
 
8717
BEGIN
8718
 
8719
   -- Delete Current Build Env settings
8720
   DELETE FROM PACKAGE_BUILD_ENV
8721
   WHERE pv_id = nPvId;
8722
 
8723
   -- Delet Current Package Build Info Settings
8724
   DELETE FROM PACKAGE_BUILD_INFO
8725
   WHERE pv_id = nPvId;
8726
 
8727
   -- Reset flag to N
8728
   UPDATE PACKAGE_VERSIONS SET
8729
	   IS_BUILD_ENV_REQUIRED = 'N'
8730
   WHERE PV_ID = nPvId;
8731
 
8732
 
8733
   -- Set new Build Env
8734
   IF NOT sBuildEnvIdList IS NULL THEN
8735
   	  -- Insert into PACKAGE_BUILD_ENV
8736
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
8737
	  SELECT nPvId AS PV_ID,
8738
	  		 be.BE_ID
8739
	    FROM BUILD_ENVIRONMENTS be
8740
	   WHERE be.BE_ID IN (
8741
	   		 		  	   SELECT *
8742
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8743
	   		 		  	 );
8744
 
8745
   	  -- Insert into PACKAGE_BUILD_INFO
8746
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
8747
	  SELECT nPvId AS PV_ID,
8748
	  		 be.BM_ID
8749
	    FROM BUILD_MACHINES be
8750
	   WHERE be.BM_ID IN (
8751
	   		 		  	   SELECT *
8752
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
8753
	   		 		  	 );						 
8754
 
8755
	   -- Set flag to Y
8756
	   UPDATE PACKAGE_VERSIONS SET
8757
		   IS_BUILD_ENV_REQUIRED = 'Y'
8758
	   WHERE PV_ID = nPvId;
8759
 
8760
   END IF;
8761
 
8762
 
8763
END Set_Package_Build_Env;
8764
/
8765
 
8766
CREATE OR REPLACE PROCEDURE Split_Version ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8767
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
8768
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
8769
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
8770
/* ---------------------------------------------------------------------------
8771
    Version: 3.0.0
8772
   --------------------------------------------------------------------------- */
8773
 
8774
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
8775
        INDEX BY BINARY_INTEGER;
8776
 
8777
    version_components VERSION_COMPONENTS_TYPE;
8778
    lastDot NUMBER := 0;
8779
    currDot NUMBER := 0;
8780
 
8781
BEGIN
8782
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
8783
 
8784
    IF ( currDot > 0 )
8785
    THEN
8786
        -- YES dot separator found --
8787
        SSV_EXT := GET_V_EXT( SSpkg_version );
8788
 
8789
        IF NOT SSV_EXT IS NULL
8790
        THEN
8791
            lastDot := currDot;
8792
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
8793
 
8794
            IF ( currDot > 0 )
8795
            THEN
8796
                -- XXXX.M.E
8797
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
8798
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
8799
            ELSE
8800
                -- XXXX.E
8801
                SSV_MM := NULL;
8802
                SSV_NMM := SSpkg_version;
8803
            END IF;
8804
 
8805
        ELSE
8806
            -- XXXX.M
8807
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
8808
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
8809
 
8810
        END IF;
8811
 
8812
    ELSE
8813
        -- NO dot separator found --
8814
        -- XXXXXX
8815
        SSV_MM  := NULL;
8816
        SSV_NMM := SSpkg_version;
8817
        SSV_EXT := NULL;
8818
 
8819
    END IF;
8820
 
8821
END Split_Version;
8822
/
8823
 
8824
CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS
8825
 
8826
/* ---------------------------------------------------------------------------
8827
    Version: 3.0.0
8828
   --------------------------------------------------------------------------- */
8829
 
8830
   returnValue CHAR(1);
8831
 
8832
BEGIN
8833
 
8834
    /*--------------- Business Rules Here -------------------*/
8835
	/*-------------------------------------------------------*/
8836
 
8837
	-- Get release mode
8838
	SELECT rt.OFFICIAL INTO returnValue
8839
	  FROM RELEASE_TAGS rt
8840
	 WHERE rt.RTAG_ID = nRtagId;
8841
 
8842
	RETURN returnValue;
8843
 
8844
END RELEASE_MODE;
8845
/
8846
 
8847
CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
8848
/
8849
 
8850
CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8851
											 nUserId IN NUMBER ) IS
8852
/* ---------------------------------------------------------------------------
8853
    Author: Rupesh Solanki
8854
 
8855
	Version: 4.0
8856
   --------------------------------------------------------------------------- */
8857
   STATE CHAR;
8858
 
8859
BEGIN
8860
 
8861
	SELECT DLOCKED INTO STATE
8862
	FROM PACKAGE_VERSIONS
8863
	WHERE PV_ID = nPvId; 
8864
 
8865
	IF STATE = 'A' THEN --It was made official for autobuilds
8866
		-- Unlock Package
8867
		UPDATE PACKAGE_VERSIONS pv SET
8868
		pv.DLOCKED = 'P'
8869
		WHERE pv.PV_ID = nPvId;	
8870
	ELSE
8871
		-- Unlock Package
8872
		UPDATE PACKAGE_VERSIONS pv SET
8873
		pv.DLOCKED = 'N'
8874
		WHERE pv.PV_ID = nPvId;	
8875
 
8876
	END IF;	   
8877
 
8878
    /* LOG ACTION */
8879
   	Log_Action ( nPvId, 'unlock_package', nUserId );
8880
 
8881
END Unlock_Package;
8882
/
8883
 
53 mhunt 8884
CREATE OR REPLACE PACKAGE                   "PK_PLANNED" IS
51 mhunt 8885
/*
8886
------------------------------
53 mhunt 8887
||  Last Modified:  G.Huddy
8888
||  Modified Date:  28/May/2008
8889
||  Spec Version:   1.1
51 mhunt 8890
------------------------------
8891
*/
8892
 
8893
	TYPE typeCur IS REF CURSOR;
8894
 
8895
    /*================================================================================================*/
8896
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8897
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
8898
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
53 mhunt 8899
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
51 mhunt 8900
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
53 mhunt 8901
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
51 mhunt 8902
	/*================================================================================================*/
8903
 
8904
END PK_PLANNED;
8905
/
8906
 
8907
CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
8908
											 nUserId IN NUMBER ) IS
8909
/* ---------------------------------------------------------------------------
8910
    Version: 4.0
8911
   --------------------------------------------------------------------------- */
8912
 
8913
BEGIN
8914
 
8915
    -- Lock Package
8916
    UPDATE PACKAGE_VERSIONS pv SET
8917
    	pv.DLOCKED = 'A'
8918
    WHERE pv.PV_ID = nPvId;
8919
 
8920
    /* LOG ACTION */
8921
   	Log_Action ( nPvId, 'lock_package', nUserId );
8922
END Pending_Package;
8923
/
8924
 
8925
CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)
8926
IS
8927
/******************************************************************************
8928
   NAME:       DELETE_DO_NOT_RIPPLE
8929
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
8930
               IS RELEASED
8931
 
8932
   REVISIONS:
8933
   Ver        Date        Author           Description
8934
   ---------  ----------  ---------------  ------------------------------------
8935
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
8936
 
8937
   NOTES:
8938
 
8939
   Automatically available Auto Replace Keywords:
8940
      Object Name:     DELETE_DO_NOT_RIPPLE
8941
      Sysdate:         21/04/2006
8942
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
8943
      Username:         (set in TOAD Options, Procedure Editor)
8944
      Table Name:       (set in the "New PL/SQL Object" dialog)
8945
 
8946
******************************************************************************/
8947
BEGIN
8948
   DELETE FROM do_not_ripple
8949
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
8950
                                                     FROM release_content
8951
                                                    WHERE rtag_id = nrtagid);
8952
END clean_do_not_ripple;
8953
/
8954
 
8955
CREATE OR REPLACE PROCEDURE Seed_Package_Names_Versions2 ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
8956
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
8957
                                                          NNuser_id IN NUMBER,
8958
                                                          retPV_ID OUT NUMBER,
8959
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
8960
/* ---------------------------------------------------------------------------
8961
    Version: 4.0
8962
   --------------------------------------------------------------------------- */
8963
 
8964
    parPkg_id   NUMBER;
8965
    parPv_id    NUMBER;
8966
    cloneFrom_pv_id NUMBER;
8967
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
8968
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
8969
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
8970
 
8971
    CURSOR packages_cur IS
8972
        SELECT pkg_id FROM PACKAGES
8973
        WHERE pkg_name = SSpkg_name;
8974
    packages_rec packages_cur%ROWTYPE;
8975
 
8976
    CURSOR package_versions_cur IS
8977
        SELECT pv_id FROM PACKAGE_VERSIONS
8978
        WHERE pkg_id = parPkg_id
8979
        AND pkg_version = SSpkg_version;
8980
    package_versions_rec package_versions_cur%ROWTYPE;
8981
 
8982
    CURSOR clone_package_versions_cur IS
8983
        SELECT MAX(pv_id) AS pv_id
8984
          FROM PACKAGE_VERSIONS
8985
         WHERE pkg_id = parPkg_id
8986
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
8987
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
8988
 
8989
BEGIN
8990
    /* -------------------------------------------- */
8991
    /* Find if pkg_name exists and seed if required */
8992
    /* -------------------------------------------- */
8993
    OPEN packages_cur;
8994
    FETCH packages_cur INTO packages_rec;
8995
 
8996
    IF packages_cur%NOTFOUND
8997
    THEN
8998
        /* INSERT into packages table */
8999
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
9000
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
9001
 
9002
    ELSE
9003
        parPkg_id := packages_rec.pkg_id;
9004
 
9005
    END IF;
9006
 
9007
    CLOSE packages_cur;
9008
 
9009
 
9010
 
9011
    /* ---------------------------------------------------- */
9012
    /* Find if package_version exists and seed if required  */
9013
    /* ---------------------------------------------------- */
9014
    OPEN package_versions_cur;
9015
    FETCH package_versions_cur INTO package_versions_rec;
9016
 
9017
    IF package_versions_cur%NOTFOUND
9018
    THEN
9019
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
9020
 
9021
        /* LOG ACTION */
9022
        Log_Action ( parPv_id, 'new_version', NNuser_id,
9023
        			 'New package version: '|| SSpkg_version );
9024
 
9025
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9026
 
9027
 
9028
 
9029
 
9030
 
9031
            /* CLONE details from similar version  OR  from nCloneFromPvId */
9032
			IF ( NOT nCloneFromPvId IS NULL) THEN
9033
            	cloneFrom_pv_id := nCloneFromPvId;
9034
			ELSE
9035
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
9036
			END IF;
9037
 
9038
            -- Clone Package Version Details --
9039
            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,
9040
                                           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 )
9041
                SELECT parPv_id         AS pv_id,
9042
                       parPkg_id        AS pkg_id,
9043
                       SSpkg_version    AS pkg_version,
9044
                       'N'              AS dlocked,
9045
                       Ora_Sysdate      AS created_stamp,
9046
                       NNuser_id        AS creator_id,
9047
                       Ora_Sysdatetime  AS modified_stamp,
9048
                       NNuser_id        AS modifier_id,
9049
                       SSV_MM           AS V_MM,
9050
                       SSV_NMM          AS V_NMM,
9051
                       SSV_EXT          AS V_EXT,
9052
                       pv.src_path,
9053
                       pv.pv_description,
9054
                       pv.PV_OVERVIEW,
9055
                       cloneFrom_pv_id 	AS LAST_PV_ID,
9056
                       pv.owner_id,
9057
					   pv.BUILD_TYPE,
9058
					   pv.IS_BUILD_ENV_REQUIRED,
9059
					   pv.bs_id,
9060
					   pv.is_autobuildable,
9061
					   pv.IS_DEPLOYABLE,
9062
					   pv.ripple_field
9063
                  FROM PACKAGE_VERSIONS pv
9064
                 WHERE pv.pv_id = cloneFrom_pv_id;
9065
 
9066
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
9067
 
9068
        retPV_ID := parPv_id;
9069
 
9070
    ELSE
9071
        retPV_ID := package_versions_rec.pv_id;
9072
 
9073
    END IF;
9074
 
9075
    CLOSE package_versions_cur;
9076
 
9077
 
9078
 
9079
 
9080
END Seed_Package_Names_Versions2;
9081
/
9082
 
9083
CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) IS
9084
 
9085
    sessionNumber NUMBER := 0;
9086
    iteration NUMBER := 1; 
9087
    rowCnt NUMBER := 0;
9088
    maxIterations 	NUMBER := 50;
9089
 
9090
BEGIN
9091
 
9092
 
9093
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9094
    SELECT sessionNumber, iteration, rc.PV_ID
9095
      FROM RELEASE_CONTENT rc
9096
     WHERE rc.RTAG_ID = nRtag_id;
9097
 
9098
    iteration := iteration + 1;
9099
    LOOP
9100
 
9101
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
9102
		SELECT sessionNumber,     
9103
               iteration,
9104
               dep.DPV_ID
9105
          FROM TEMP_TREE_BROWSE ttb,
9106
               PACKAGE_DEPENDENCIES dep
9107
         WHERE dep.PV_ID = ttb.PV_ID 
9108
           AND ttb.LEVEL_NUM = iteration - 1 
9109
 
9110
         MINUS  
9111
 
9112
        SELECT sessionNumber, iteration, ttb.PV_ID
9113
          FROM TEMP_TREE_BROWSE ttb;   
9114
 
9115
 
9116
 
9117
 
9118
		rowCnt := SQL%ROWCOUNT;
9119
		IF rowCnt > 0 THEN
9120
           iteration := iteration + 1;
9121
		END IF;
9122
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
9123
    END LOOP; 
9124
 
9125
END PAOLO_Build_Tree;
9126
/
9127
 
9128
CREATE OR REPLACE PROCEDURE Log_Action_Bulk ( nPvIdList IN VARCHAR2,
9129
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
9130
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
9131
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
9132
/* ---------------------------------------------------------------------------
9133
    Version: 3.0
9134
   --------------------------------------------------------------------------- */
9135
 
9136
    ActionTypeId NUMBER;
9137
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9138
 
9139
BEGIN
9140
 
9141
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
9142
 
9143
    -- Get Action Type FK
9144
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9145
      FROM ACTION_TYPE act
9146
     WHERE act.NAME = enumActionTypeName;
9147
 
9148
    -- Log Action
9149
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
9150
    SELECT nUserId,
9151
    	   ORA_SYSDATETIME,
9152
           pv.PV_ID,
9153
           sAdditionalComments,
9154
           ActionTypeId
9155
      FROM PACKAGE_VERSIONS pv
9156
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
9157
 
9158
 
9159
END Log_Action_Bulk;
9160
/
9161
 
9162
CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSES
9163
IS
9164
 
9165
proc_id NUMBER;
9166
/******************************************************************************
9167
   NAME:       DELETE_DO_NOT_RIPPLE
9168
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
9169
               IS RELEASED
9170
 
9171
   REVISIONS:
9172
   Ver        Date        Author           Description
9173
   ---------  ----------  ---------------  ------------------------------------
9174
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
9175
 
9176
   NOTES:
9177
 
9178
   Automatically available Auto Replace Keywords:
9179
      Object Name:     DELETE_DO_NOT_RIPPLE
9180
      Sysdate:         21/04/2006
9181
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
9182
      Username:         (set in TOAD Options, Procedure Editor)
9183
      Table Name:       (set in the "New PL/SQL Object" dialog)
9184
 
9185
******************************************************************************/
9186
   CURSOR ripple_cur
9187
   IS
9188
      select distinct proc_id, prod_id from deployment_manager.processes_config;
9189
 
9190
   ripple_rec   ripple_cur%ROWTYPE;
9191
BEGIN
9192
   OPEN ripple_cur;
9193
 
9194
   FETCH ripple_cur
9195
    INTO ripple_rec;
9196
 
9197
   WHILE ripple_cur%FOUND
9198
   LOOP
9199
 
9200
 
9201
 
9202
insert into package_processes (PROC_ID, PV_ID) 
9203
values( ripple_rec.proc_id, ripple_rec.prod_id);
9204
 
9205
      FETCH ripple_cur
9206
       INTO ripple_rec;
9207
   END LOOP;
9208
END CLONED_PACKAGE_PROCESSES;
9209
/
9210
 
57 mhunt 9211
CREATE OR REPLACE PACKAGE                   "PK_RMAPI"
51 mhunt 9212
IS
9213
/*
9214
------------------------------
9215
||  Last Modified:  Jeremy Tweddle
9216
||  Modified Date:  08/Feb/2008
9217
||  Body Version:   3.3
9218
------------------------------
9219
*/
9220
   TYPE typecur IS REF CURSOR;
9221
 
9222
/*================================================================================================*/
9223
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
9224
      RETURN typecur;
9225
 
9226
   FUNCTION wip_iteration_package (
9227
      projname        VARCHAR2,
9228
      iterationname   VARCHAR2,
9229
      pkgname         VARCHAR2
9230
   )
9231
      RETURN typecur;
9232
 
9233
   FUNCTION auto_make_release (
9234
      rtagid                   IN   NUMBER,
9235
      pkgname                  IN   VARCHAR2,
9236
      vext                     IN   VARCHAR2,
9237
      newpkgversion            IN   VARCHAR2,
9238
      label                    IN   VARCHAR2,
9239
      dependenciesimportlist   IN   VARCHAR2,
9240
      isrippled                IN   NUMBER,
9241
      username                 IN   VARCHAR2
9242
   )
9243
      RETURN NUMBER;
9244
 
9245
   PROCEDURE import_dependencies (
9246
      pvid                     IN   NUMBER,
9247
      dependenciesimportlist   IN   VARCHAR2,
9248
      userid                   IN   NUMBER
9249
   );
9250
 
9251
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
9252
      RETURN VARCHAR2;
9253
 
9254
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
9255
      RETURN VARCHAR2;
9256
 
9257
   PROCEDURE update_dash_board (rtagid IN NUMBER);
9258
 
9259
   FUNCTION exclude_from_build (
9260
      pvid          IN   NUMBER,
9261
      spkgversion   IN   VARCHAR2,
9262
      rtagid        IN   NUMBER,
9263
      username      IN   VARCHAR2
9264
   )
9265
      RETURN NUMBER;
9266
 
55 mhunt 9267
   FUNCTION exclude_indirect_from_build (
9268
      pvid          IN   NUMBER,
9269
      spkgversion   IN   VARCHAR2,
9270
      rtagid        IN   NUMBER,
9271
      username      IN   VARCHAR2,
9272
      rootpvid      IN   NUMBER,
9273
      rootcause     IN   VARCHAR2,
9274
      rootfile      IN   VARCHAR2
9275
   )
9276
      RETURN NUMBER;
51 mhunt 9277
/*================================================================================================*/
9278
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
57 mhunt 9279
 
51 mhunt 9280
   FUNCTION insert_package_metrics (
9281
      rtagid IN NUMBER,
9282
      pkgname IN VARCHAR2,
9283
      vext IN VARCHAR2,
9284
      metricstring IN VARCHAR2
9285
   )
9286
      RETURN NUMBER;
57 mhunt 9287
 
51 mhunt 9288
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
57 mhunt 9289
 
51 mhunt 9290
END pk_rmapi;
9291
/
9292
 
9293
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;
9294
/
9295
 
9296
CREATE OR REPLACE PROCEDURE Log_Daemon_Action ( nRconId IN NUMBER,
9297
												 enumActionTypeName IN VARCHAR2,
9298
		                                         nUserId IN NUMBER,
9299
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
9300
/* ---------------------------------------------------------------------------
9301
    Version: 3.0
9302
   --------------------------------------------------------------------------- */
9303
 
9304
    ActionTypeId NUMBER;
9305
 
9306
BEGIN
9307
 
9308
    -- Get Action Type FK
9309
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9310
      FROM ACTION_TYPE act
9311
     WHERE act.NAME = enumActionTypeName;
9312
 
9313
 
9314
    INSERT INTO DAEMON_ACTION_LOG
9315
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
9316
 
9317
 
9318
END Log_Daemon_Action;
9319
/
9320
 
9321
CREATE OR REPLACE PACKAGE PK_ENVIRONMENT_test IS
9322
/*
9323
------------------------------
9324
||  Last Modified:  Rupesh Solanki
9325
||  Modified Date:  29/Jan/2007
9326
||  Spec Version:   1.1
9327
------------------------------
9328
*/
9329
 
9330
	TYPE typeCur IS REF CURSOR;
9331
 
9332
    /*================================================================================================*/
9333
 
9334
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
9335
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9336
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9337
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9338
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9339
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9340
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
9341
 
9342
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9343
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9344
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9345
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9346
 
9347
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
9348
 
9349
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
9350
 
9351
 
9352
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9353
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9354
 
9355
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9356
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9357
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
9358
 
9359
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
9360
 
9361
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
9362
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
9363
 
9364
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
9365
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
9366
							 CloneFromPvId IN NUMBER );
9367
 
9368
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9369
 
9370
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
9371
 
9372
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
9373
 
9374
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
9375
 
9376
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
9377
	/*================================================================================================*/
9378
 
9379
END PK_ENVIRONMENT_test;
9380
/
9381
 
9382
CREATE OR REPLACE PROCEDURE Update_Package_States ( NNrtag_id IN NUMBER,
9383
                                                    NNsession_num IN NUMBER ) IS
9384
/* ---------------------------------------------------------------------------
9385
    Version: 3.0.0
9386
   --------------------------------------------------------------------------- */
9387
 
9388
/* =============  STATE RULES =================== */
9389
/*
9390
   MNR   MRR   MN   MR    |   pkg_state
9391
   ------------------------------------
9392
 
9393
 
9394
 
9395
 
9396
   ------------------------------------
9397
 
9398
 
9399
 
9400
 
9401
   ------------------------------------
9402
    1     0     0     0   |      MINOR_READY
9403
    1     0     0     1   |      MAJOR
9404
    1     0     1     0   |      MINOR
9405
    1     0     1     1   |      MAJOR
9406
   ------------------------------------
9407
    1     1     0     0   |      MAJOR_READY
9408
    1     1     0     1   |      MAJOR
9409
    1     1     1     0   |      MAJOR
9410
    1     1     1     1   |      MAJOR
9411
   ------------------------------------
9412
*/
9413
 
9414
BEGIN
9415
    /*----------------------------------------------
9416
    ||              MINOR READY
9417
    */----------------------------------------------
9418
 
9419
    UPDATE release_content
9420
       SET pkg_state = 4
9421
     WHERE rtag_id = NNrtag_id
9422
       AND pv_id IN
9423
           (
9424
           SELECT DISTINCT pv_id
9425
           FROM temp_env_states
9426
           WHERE session_num = NNsession_num
9427
             AND level_num = 1
9428
             AND tes_state = 2
9429
           );
9430
 
9431
    /*----------------------------------------------
9432
    ||              MAJOR READY
9433
    */----------------------------------------------
9434
    UPDATE release_content
9435
       SET pkg_state = 3
9436
     WHERE rtag_id = NNrtag_id
9437
       AND pv_id IN
9438
           (
9439
           SELECT DISTINCT pv_id
9440
           FROM temp_env_states
9441
           WHERE session_num = NNsession_num
9442
             AND level_num = 1
9443
             AND tes_state IN (0,1)
9444
           );
9445
 
9446
    /*----------------------------------------------
9447
    ||                MINOR
9448
    */----------------------------------------------
9449
    UPDATE release_content
9450
       SET pkg_state = 2
9451
     WHERE rtag_id = NNrtag_id
9452
       AND pv_id IN
9453
           (
9454
           SELECT DISTINCT pv_id
9455
            FROM temp_env_states
9456
            WHERE session_num = NNsession_num
9457
              AND level_num >= 2
9458
              AND tes_state = 2
9459
            MINUS
9460
           SELECT pv_id
9461
             FROM release_content
9462
            WHERE rtag_id = NNrtag_id
9463
              AND pkg_state = 3
9464
           );
9465
 
9466
    /*----------------------------------------------
9467
    ||                MAJOR
9468
    */----------------------------------------------
9469
    UPDATE release_content
9470
       SET pkg_state = 1
9471
     WHERE rtag_id = NNrtag_id
9472
       AND pv_id IN
9473
           (
9474
           SELECT DISTINCT pv_id
9475
           FROM temp_env_states
9476
           WHERE session_num = NNsession_num
9477
             AND level_num >= 2
9478
             AND tes_state IN (0,1)
9479
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
9480
           UNION
9481
           SELECT DISTINCT tes.pv_id
9482
           FROM temp_env_states tes,
9483
                release_content rc
9484
           WHERE tes.session_num = NNsession_num
9485
             AND tes.level_num >= 2
9486
             AND tes.tes_state = 2
9487
             AND rtag_id = NNrtag_id
9488
             AND rc.pv_id = tes.pv_id
9489
             AND rc.pkg_state = 3
9490
           );
9491
 
9492
    /*----------------------------------------------
9493
    ||                 OK
9494
    */----------------------------------------------
9495
    UPDATE release_content
9496
       SET pkg_state = 0
9497
     WHERE rtag_id = NNrtag_id
9498
       AND pv_id IN
9499
           (
9500
           SELECT rc.pv_id
9501
             FROM release_content rc
9502
            WHERE rc.rtag_id = NNrtag_id
9503
              AND NOT rc.pv_id IN
9504
                    (
9505
                     SELECT DISTINCT pv_id
9506
                     FROM temp_env_states WHERE session_num = NNsession_num
9507
                    )
9508
           );
9509
 
9510
 
9511
    /*----------------------------------------------
9512
    ||              ADVISORY RIPPLE - NEW STUFF
9513
    */----------------------------------------------
9514
 /*   UPDATE release_content
9515
       SET pkg_state = 8
9516
     WHERE rtag_id = NNrtag_id
9517
       AND pv_id IN
9518
           (
9519
           SELECT DISTINCT pv_id
9520
           FROM temp_env_states
9521
           WHERE session_num = NNsession_num
9522
             AND level_num = 1
9523
             AND tes_state = 3
9524
           );	*/
9525
 
9526
 
9527
 
9528
    /*----------------------------------------------
9529
    ||              ADVISORY RIPPLE DEPENDANT
9530
    */----------------------------------------------			   
9531
  /*  UPDATE release_content
9532
       SET pkg_state = 9
9533
     WHERE rtag_id = NNrtag_id
9534
       AND pv_id IN
9535
           (
9536
           SELECT DISTINCT pv_id
9537
           FROM temp_env_states
9538
           WHERE session_num = NNsession_num
9539
             AND level_num >= 2
9540
             AND tes_state = 3
9541
           );		*/	   
9542
 
9543
      Update_Deprecation_State (NNrtag_id);
9544
 
9545
END Update_Package_States;
9546
/
9547
 
9548
CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS
9549
 
9550
/******************************************************************************
9551
   NAME:       TO_INSERT_VTREE_ID
9552
   PURPOSE:    
9553
 
9554
   REVISIONS:
9555
   Ver        Date        Author           Description
9556
   ---------  ----------  ---------------  ------------------------------------
9557
   1.0        2/02/2007          1. Created this procedure.
9558
 
9559
   NOTES:
9560
 
9561
   Automatically available Auto Replace Keywords:
9562
      Object Name:     TO_INSERT_VTREE_ID
9563
      Sysdate:         2/02/2007
9564
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
9565
      Username:         (set in TOAD Options, Procedure Editor)
9566
      Table Name:       (set in the "New PL/SQL Object" dialog)
9567
 
9568
******************************************************************************/
9569
VTreeId NUMBER;																			  																	   
9570
 
9571
 
9572
	CURSOR curInfo IS
9573
    SELECT RTAG_ID
9574
	FROM RELEASE_TAGS
9575
	WHERE VTREE_ID IS NULL;
9576
    recInfo curInfo%ROWTYPE;
9577
 
9578
 
9579
BEGIN
9580
 
9581
	OPEN curInfo;
9582
    FETCH curInfo INTO recInfo;
9583
 
9584
	WHILE curInfo%FOUND
9585
	LOOP
9586
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
9587
 
9588
		UPDATE RELEASE_TAGS
9589
		SET VTREE_ID = VTreeId
9590
		WHERE RTAG_ID = recInfo.RTAG_ID;
9591
 
9592
		FETCH curInfo INTO recInfo;
9593
	END LOOP;
9594
 
9595
	CLOSE curInfo;
9596
 
9597
END TO_INSERT_VTREE_ID;
9598
/
9599
 
9600
CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
9601
/
9602
 
57 mhunt 9603
CREATE OR REPLACE PACKAGE                   "PK_LICENCING" IS
9604
/*
9605
------------------------------
9606
||  Last Modified:  G.Huddy
9607
||  Modified Date:  19/Aug/2008
9608
||  Spec Version:   1.0
9609
------------------------------
9610
*/
9611
 
9612
   TYPE typeCur IS REF CURSOR;
9613
 
9614
    /*================================================================================================*/
9615
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
9616
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
9617
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
9618
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
9619
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
9620
   /*================================================================================================*/
9621
 
9622
END PK_LICENCING;
9623
/
9624
 
51 mhunt 9625
CREATE OR REPLACE FUNCTION ORA_SYSDATE
9626
RETURN DATE
9627
IS
9628
/* ---------------------------------------------------------------------------
9629
    Version: 3.0.0
9630
   --------------------------------------------------------------------------- */
9631
BEGIN
9632
 
9633
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
9634
END ORA_SYSDATE;
9635
/
9636
 
9637
CREATE OR REPLACE PROCEDURE Undeprecate_Package (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9638
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9639
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9640
											   	 nUserId IN NUMBER) IS
9641
 
9642
ext VARCHAR2(50);
9643
PvIdList VARCHAR2(32767);
9644
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9645
PvId NUMBER;
9646
sComments VARCHAR2(32767);
9647
 
9648
BEGIN
9649
 
9650
 
9651
 
9652
	--Extract the package extension
9653
	SELECT V_EXT into ext 
9654
	FROM PACKAGE_VERSIONS 
9655
	WHERE PV_ID = nPvId;
9656
 
9657
	--SELECT COMMENTS into sComments 
9658
	--FROM DEPRECATED_PACKAGES
9659
	--WHERE RTAG_ID = nRtagId
9660
	--AND V_EXT = ext
9661
	--AND PKG_ID = nPkgId;
9662
 
9663
	--SELECT PV_ID into PvIdList FROM
9664
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
9665
	--AND PKG_STATE = 6
9666
	--AND PV_ID NOT IN nPvId;
9667
 
9668
 
9669
	IF ext IS NOT NULL THEN
9670
       -- Undeprecate Package
9671
       DELETE FROM DEPRECATED_PACKAGES 
9672
	   WHERE RTAG_ID = nRtagId 
9673
	   AND PKG_ID = nPkgId
9674
	   AND V_EXT = ext;	
9675
 
9676
		UPDATE RELEASE_CONTENT 
9677
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9678
		WHERE RTAG_ID = nRtagId
9679
		AND PV_ID IN (SELECT PV.PV_ID 
9680
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9681
					  WHERE PKG.PKG_ID = PV.PKG_ID
9682
					  AND PKG.PKG_ID = nPkgId
9683
					  AND PV.V_EXT = ext
9684
					  UNION
9685
					  SELECT DISTINCT
9686
	 	 		  	 		   qry.PV_ID
9687
							        FROM (
9688
									 	  SELECT dep.*,
9689
										  LEVEL AS LEVEL_NUM
9690
										  FROM PACKAGE_DEPENDENCIES dep
9691
	 								START WITH dep.DPV_ID IN ( nPvId )
9692
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9693
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9694
	 								) qry,
9695
									PACKAGES pkg,
9696
									PACKAGE_VERSIONS pv,
9697
									RELEASE_CONTENT rc
9698
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9699
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9700
 
9701
					 );	 
9702
 
9703
	ELSE
9704
       -- Undeprecate Package
9705
       DELETE FROM DEPRECATED_PACKAGES 
9706
	   WHERE RTAG_ID = nRtagId 
9707
	   AND PKG_ID = nPkgId
9708
	   AND V_EXT IS NULL;	
9709
 
9710
		UPDATE RELEASE_CONTENT 
9711
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
9712
		WHERE RTAG_ID = nRtagId
9713
		AND PV_ID IN (SELECT PV.PV_ID 
9714
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
9715
					  WHERE PKG.PKG_ID = PV.PKG_ID
9716
					  AND PKG.PKG_ID = nPkgId
9717
					  AND PV.V_EXT IS NULL
9718
					  UNION
9719
					  SELECT DISTINCT
9720
	 	 		  	 		   qry.PV_ID
9721
							        FROM (
9722
									 	  SELECT dep.*,
9723
										  LEVEL AS LEVEL_NUM
9724
										  FROM PACKAGE_DEPENDENCIES dep
9725
	 								START WITH dep.DPV_ID IN ( nPvId )
9726
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
9727
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
9728
	 								) qry,
9729
									PACKAGES pkg,
9730
									PACKAGE_VERSIONS pv,
9731
									RELEASE_CONTENT rc
9732
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9733
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9734
 
9735
					 );	 	   
9736
 
9737
	END IF;
9738
 
9739
	--IF PvIdList IS NOT NULL THEN
9740
 
9741
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
9742
 
9743
	 --  FOR i IN 1..nIdCollector.COUNT
9744
	 --  LOOP
9745
	--	   PvId := nIdCollector(i);
9746
 
9747
 
9748
 
9749
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
9750
	--		END LOOP;
9751
	--END IF;
9752
 
9753
	Rebuild_environment(nRtagId);			 
9754
 
9755
 
9756
 
9757
END Undeprecate_Package;
9758
/
9759
 
9760
CREATE OR REPLACE PROCEDURE Update_Unit_Test_Acceptance ( pnTest_id IN NUMBER,
9761
														  pnPv_id IN NUMBER,
9762
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
9763
														  sAcceptanceDate IN VARCHAR2,
9764
														  sAcceptedBy IN NUMBER,
9765
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
9766
														  cUpdateAcceptedStateOnly IN CHAR
9767
					                                     ) IS
9768
/* ---------------------------------------------------------------------------
9769
    Version: 3.0.0
9770
   --------------------------------------------------------------------------- */
9771
 
9772
 
9773
 
9774
BEGIN
9775
	IF cUpdateAcceptedStateOnly = 'Y'
9776
	THEN
9777
		--- Update Accepted State Only ---
9778
		IF ( sAccepted IS NULL )
9779
		THEN
9780
			-- Clear alleptance
9781
			UPDATE UNIT_TESTS SET
9782
		           TEST_ACCEPTED = NULL,
9783
		           ACCEPTANCE_DATE = NULL,
9784
				   ACCEPTED_BY = NULL,
9785
				   REVIEW_COMMENTS = NULL
9786
		     WHERE TEST_ID = pnTest_id
9787
		       AND PV_ID = pnPv_id;
9788
 
9789
	    ELSE
9790
			UPDATE UNIT_TESTS SET
9791
		           TEST_ACCEPTED = sAccepted,
9792
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9793
				   ACCEPTED_BY = sAcceptedBy
9794
		     WHERE TEST_ID = pnTest_id
9795
		       AND PV_ID = pnPv_id;
9796
 
9797
		END IF;
9798
 
9799
 
9800
	ELSE
9801
		--- Update Unit Test Acceptance ---
9802
	    UPDATE UNIT_TESTS SET
9803
	           TEST_ACCEPTED = sAccepted,
9804
			   REVIEW_COMMENTS = sReviewComments,
9805
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
9806
			   ACCEPTED_BY = sAcceptedBy
9807
	     WHERE TEST_ID = pnTest_id
9808
	       AND PV_ID = pnPv_id;
9809
 
9810
	END IF;
9811
 
9812
END Update_Unit_Test_Acceptance;
9813
/
9814
 
9815
CREATE OR REPLACE PROCEDURE New_Version ( NNorig_pv_id IN NUMBER,
9816
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
9817
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
9818
                                          NNrtag_id IN NUMBER,
9819
                                          NNuser_id IN NUMBER,
9820
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
9821
                                          retPv_id OUT NUMBER ) IS
9822
 
9823
 
9824
  TO BE REMOVED   !!!										  
9825
 
9826
 
9827
 
9828
 
9829
/* ---------------------------------------------------------------------------
9830
    Version: 3.3
9831
   --------------------------------------------------------------------------- */
9832
 
9833
    ReleaseLocation VARCHAR2(4000);
9834
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
9835
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
9836
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
9837
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
9838
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
9839
    nIssuesTypes NUMBER;
9840
 
9841
    CURSOR package_versions_cur IS
9842
        SELECT pv.pv_id, pv.is_patch
9843
          FROM PACKAGE_VERSIONS pv
9844
         WHERE pv.pkg_version = SSpkg_version
9845
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
9846
    package_versions_rec package_versions_cur%ROWTYPE;
9847
 
9848
    CURSOR clone_package_versions_cur IS
9849
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
9850
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
9851
 
9852
BEGIN
9853
	IF NNsetto_pv_id IS NULL
9854
    THEN
9855
		-- SetToPv_id is not supplied, hence proceed.
9856
 
9857
	    /* ---------------------------------------------------- */
9858
	    /* Find id package_version exists                       */
9859
	    /* ---------------------------------------------------- */
9860
 
9861
	    OPEN package_versions_cur;
9862
	    FETCH package_versions_cur INTO package_versions_rec;
9863
 
9864
	    IF package_versions_cur%NOTFOUND
9865
	    THEN
9866
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
9867
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
9868
 
9869
	        OPEN clone_package_versions_cur;
9870
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
9871
	        origPkg_id := clone_package_versions_rec.pkg_id;
9872
	        origDlocked := clone_package_versions_rec.dlocked;
9873
	        CLOSE clone_package_versions_cur;
9874
 
9875
	        -- Clone Package Version Details --
9876
	        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,
9877
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
9878
	            SELECT retPv_id         AS pv_id,
9879
	                   origPkg_id       AS pkg_id,
9880
	                   SSpkg_version    AS pkg_version,
9881
	                   'N'              AS dlocked,
9882
	                   Ora_Sysdate      AS created_stamp,
9883
	                   NNuser_id        AS creator_id,
9884
	                   Ora_Sysdatetime  AS modified_stamp,
9885
	                   NNuser_id        AS modifier_id,
9886
	                   SSV_MM           AS V_MM,
9887
	                   SSV_NMM          AS V_NMM,
9888
	                   SSV_EXT          AS V_EXT,
9889
	                   pv.src_path,
9890
	                   pv.pv_description,
9891
                       pv.PV_OVERVIEW,
9892
                       NNorig_pv_id 	AS LAST_PV_ID,
9893
	                   pv.owner_id,
9894
					   pv.IS_DEPLOYABLE,
9895
					   pv.IS_BUILD_ENV_REQUIRED
9896
	              FROM PACKAGE_VERSIONS pv
9897
	             WHERE pv.pv_id = NNorig_pv_id;
9898
 
9899
 
9900
	        -- Set Issues Type for cloning ---
9901
	        IF origDlocked = 'Y'
9902
	        THEN
9903
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
9904
	        ELSE
9905
            	nIssuesTypes := NULL;
9906
	        END IF;
9907
 
9908
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
9909
 
9910
 
9911
 
9912
	    ELSE
9913
	        retPv_id := package_versions_rec.pv_id;
9914
 
9915
	    END IF;
9916
 
9917
        CLOSE package_versions_cur;
9918
 
9919
	ELSE
9920
    	retPv_id := NNsetto_pv_id;
9921
    END IF;
9922
 
9923
 
9924
    /* ---------------------------------------------------- */
9925
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
9926
    /* ---------------------------------------------------- */
9927
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
9928
	    UPDATE RELEASE_CONTENT
9929
	       SET pv_id = retPv_id,
9930
	           insert_stamp = Ora_Sysdate,
9931
	           insertor_id = NNuser_id
9932
	     WHERE rtag_id = NNrtag_id
9933
	       AND pv_id = NNorig_pv_id;
9934
 
9935
        /* LOG ACTION */
9936
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9937
		  FROM PROJECTS proj,
9938
		  	   VTREES vt,
9939
		       RELEASE_TAGS rt
9940
		 WHERE rt.VTREE_ID = vt.VTREE_ID
9941
		   AND vt.PROJ_ID = proj.PROJ_ID
9942
		   AND rt.RTAG_ID = NNrtag_id;
9943
 
9944
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
9945
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
9946
 
9947
	END IF;
9948
 
9949
 
9950
END New_Version;
9951
/
9952
 
9953
CREATE OR REPLACE PROCEDURE Reset_Ignore_Warnings ( sPvIdList IN VARCHAR2,
9954
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
9955
/* ---------------------------------------------------------------------------
9956
    Version: 5.0
9957
   --------------------------------------------------------------------------- */
9958
 
9959
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9960
 
9961
BEGIN
9962
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
9963
 
9964
    -- Remove Ignore Warnings
9965
     DELETE
9966
       FROM ignore_warnings
9967
	  WHERE (rtag_id, pv_id, dpv_id) IN
9968
	     (
9969
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
9970
	        FROM ignore_warnings igw,
9971
	             package_versions dpv,
9972
	             package_versions pv
9973
	       WHERE igw.dpv_id = dpv.pv_id
9974
	         AND igw.rtag_id = nRTagId
9975
	         AND dpv.pkg_id = pv.pkg_id
9976
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
9977
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
9978
         );
9979
 
9980
END Reset_Ignore_Warnings;
9981
/
9982
 
9983
CREATE OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)IS
9984
Auto CHAR;
9985
/******************************************************************************
9986
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
9987
   PURPOSE:    
9988
 
9989
   REVISIONS:
9990
   Ver        Date        Author           Description
9991
   ---------  ----------  ---------------  ------------------------------------
9992
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
9993
 
9994
   NOTES:
9995
 
9996
   Automatically available Auto Replace Keywords:
9997
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
9998
      Sysdate:         14/12/2006
9999
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
10000
      Username:         (set in TOAD Options, Procedure Editor)
10001
      Table Name:       (set in the "New PL/SQL Object" dialog)
10002
 
10003
******************************************************************************/
10004
BEGIN
10005
 
10006
	 SELECT IS_AUTOBUILDABLE into Auto
10007
	 FROM PACKAGE_VERSIONS 
10008
	 WHERE PV_ID = nPvId;
10009
 
10010
	 IF Auto = 'N' Then
10011
 
10012
	 	UPDATE PACKAGE_VERSIONS
10013
	 	SET IS_AUTOBUILDABLE = 'Y'
10014
	 	WHERE PV_ID = nPvId;
10015
 
10016
 
10017
	 	/* LOG ACTION */
10018
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
10019
 
10020
	 Else
10021
 
10022
		 UPDATE PACKAGE_VERSIONS
10023
		 SET IS_AUTOBUILDABLE = 'N'
10024
		 WHERE PV_ID = nPvId;
10025
 
10026
 
10027
	 	 /* LOG ACTION */
10028
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
10029
 
10030
	 End If;
10031
 
10032
 
10033
 
10034
 
10035
 
10036
 
10037
 
10038
 
10039
END SWITCH_REPRODUCIBLE_PACKAGE;
10040
/
10041
 
10042
CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,
10043
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
10044
												  	nUserId IN NUMBER
10045
	   	  		  									) IS
10046
 
10047
/******************************************************************************
10048
   NAME:       REMOVE_PACKAGE_INTEREST
10049
   PURPOSE:    To remove interest in a given package per project
10050
 
10051
   REVISIONS:
10052
   Ver        Date        Author           Description
10053
   ---------  ----------  ---------------  ------------------------------------
10054
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
10055
 
10056
   NOTES:
10057
 
10058
   Automatically available Auto Replace Keywords:
10059
      Object Name:     REMOVE_PACKAGE_INTEREST
10060
      Sysdate:         12/05/2006
10061
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
10062
      Username:         (set in TOAD Options, Procedure Editor)
10063
      Table Name:       (set in the "New PL/SQL Object" dialog)
10064
 
10065
******************************************************************************/
10066
BEGIN
10067
 
10068
	 --Delete from PACKAGE_INTEREST
10069
	 DELETE FROM PACKAGE_INTEREST
10070
	 WHERE PROJ_ID = nProjId
10071
	 AND PKG_ID = nPkgId
10072
	 AND USER_ID = nUserId;
10073
 
10074
END REMOVE_PACKAGE_INTEREST;
10075
/
10076
 
10077
CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
10078
/* ---------------------------------------------------------------------------
10079
    Version: 3.0
10080
   --------------------------------------------------------------------------- */
10081
 
10082
 
10083
BEGIN
10084
 
10085
	 -- Touch Release for Rebuild
10086
     UPDATE RELEASE_TAGS rt SET
10087
     	rt.REBUILD_ENV = 'Y',
10088
        rt.REBUILD_STAMP = 0
10089
      WHERE rt.RTAG_ID = nRtagId;
10090
 
10091
	COMMIT;	  
10092
 
10093
END Touch_Release;
10094
/
10095
 
10096
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
10097
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
10098
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
10099
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
10100
/* ---------------------------------------------------------------------------
10101
    Version: 3.0
10102
   --------------------------------------------------------------------------- */
10103
 
10104
    ActionTypeId NUMBER;
10105
 
10106
BEGIN
10107
 
10108
    -- Get Action Type FK
10109
    SELECT act.ACTTYPE_ID INTO ActionTypeId
10110
      FROM ACTION_TYPE act
10111
     WHERE act.NAME = enumActionTypeName;
10112
 
10113
 
10114
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
10115
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
10116
 
10117
 
10118
END Log_Action;
10119
/
10120
 
57 mhunt 10121
CREATE OR REPLACE PACKAGE BODY                   "PK_PACKAGE"
51 mhunt 10122
IS
57 mhunt 10123
   /*
10124
   ------------------------------
10125
   ||  Last Modified:  G.Huddy
10126
   ||  Modified Date:  20/08/2008
10127
   ||  Body Version:   1.9 - added licencing removal to destroy_package()
10128
   ------------------------------
10129
   */
51 mhunt 10130
 
10131
   /*-------------------------------------------------------------------------------------------------------*/
10132
   PROCEDURE new_version (
10133
      nlastpvid                   IN       NUMBER,
10134
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
10135
      cbuildtype                  IN       CHAR,
10136
      nsettopvid                  IN       NUMBER DEFAULT NULL,
10137
      nrtagid                     IN       NUMBER,
10138
      nuserid                     IN       NUMBER,
10139
      enumissues_state_imported   IN       NUMBER,
10140
      returnpvid                  OUT      NUMBER
10141
   )
10142
   IS
57 mhunt 10143
      origpkg_id                  package_versions.pkg_id%TYPE;
10144
      origdlocked                 package_versions.dlocked%TYPE;
10145
      ssv_mm                      package_versions.v_mm%TYPE;
10146
      ssv_nmm                     package_versions.v_nmm%TYPE;
10147
      ssv_ext                     package_versions.v_ext%TYPE;
10148
      spackageversion             VARCHAR2 (4000);
10149
      nissuestypes                NUMBER;
10150
      nviewid                     NUMBER;
10151
      reccount                    NUMBER;
10152
      isreleased                  package_versions.dlocked%TYPE := 'N';
10153
      slabel                      VARCHAR2 (4000)               := NULL;
51 mhunt 10154
 
10155
      CURSOR package_versions_cur
10156
      IS
10157
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
10158
           FROM package_versions pv
10159
          WHERE pv.pkg_version = snewpkgversion
10160
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
10161
                                         FROM package_versions origpv
10162
                                        WHERE origpv.pv_id = nlastpvid);
10163
 
57 mhunt 10164
      package_versions_rec package_versions_cur%ROWTYPE;
51 mhunt 10165
 
10166
      CURSOR clone_package_versions_cur
10167
      IS
10168
         SELECT DISTINCT pkg_id, dlocked
10169
                    FROM package_versions
10170
                   WHERE pv_id = nlastpvid;
10171
 
57 mhunt 10172
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
51 mhunt 10173
   BEGIN
10174
      spackageversion := snewpkgversion;
10175
 
10176
      IF nsettopvid IS NULL
10177
      THEN
10178
         -- SetToPv_id is not supplied, hence proceed.
10179
 
10180
         /* ---------------------------------------------------- */
57 mhunt 10181
         /* Find id package_version exists                       */
10182
         /* ---------------------------------------------------- */
51 mhunt 10183
         OPEN package_versions_cur;
10184
 
10185
         FETCH package_versions_cur
10186
          INTO package_versions_rec;
10187
 
10188
         IF package_versions_cur%NOTFOUND
10189
         THEN
10190
            ---  Create brand new package ---
10191
            SELECT seq_pv_id.NEXTVAL
10192
              INTO returnpvid
10193
              FROM DUAL;
10194
 
10195
            -- Split Version to get extention + other
10196
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
10197
 
10198
            -- Get previous package to clone from
10199
            OPEN clone_package_versions_cur;
10200
 
10201
            FETCH clone_package_versions_cur
10202
             INTO clone_package_versions_rec;
10203
 
10204
            origpkg_id := clone_package_versions_rec.pkg_id;
10205
            origdlocked := clone_package_versions_rec.dlocked;
10206
 
10207
            CLOSE clone_package_versions_cur;
10208
 
10209
            -- Automated built config
10210
            IF (cbuildtype = 'A')
10211
            THEN
10212
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
57 mhunt 10213
               -- Make sure that version is still unique
51 mhunt 10214
            END IF;
10215
 
10216
            -- Clone Package Version Details --
57 mhunt 10217
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
10218
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
10219
                                         v_ext, src_path, pv_description, pv_overview,
10220
                                         last_pv_id, owner_id, is_deployable,
10221
                                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
10222
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
10223
                        spackageversion AS pkg_version, 'N' AS dlocked,
10224
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
10225
                        ora_sysdatetime AS modified_stamp,
10226
                        nuserid AS modifier_id, ssv_mm AS v_mm,
10227
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
10228
                        pv.pv_description, pv.pv_overview,
10229
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
10230
                        pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
10231
                   FROM package_versions pv
10232
                  WHERE pv.pv_id = nlastpvid;
51 mhunt 10233
 
10234
            -- Set Issues Type for cloning ---
10235
            IF origdlocked = 'Y'
10236
            THEN
10237
               nissuestypes := enumissues_state_imported;
10238
            ELSE
10239
               nissuestypes := NULL;
10240
            END IF;
10241
 
10242
            -- Update Label for automated built
10243
            IF (cbuildtype = 'A')
10244
            THEN
10245
               slabel := get_automated_label (returnpvid);
10246
 
10247
               UPDATE package_versions pv
10248
                  SET pv.pkg_label = slabel
10249
                WHERE pv.pv_id = returnpvid;
10250
            END IF;
10251
 
10252
            basic_clone (nlastpvid,
10253
                         returnpvid,
10254
                         nrtagid,
10255
                         nuserid,
10256
                         origpkg_id,
10257
                         nissuestypes
10258
                        );
10259
         ELSE
10260
            --- Package already exists, hence reuse ---
10261
            returnpvid := package_versions_rec.pv_id;
10262
            isreleased := package_versions_rec.dlocked;
10263
         END IF;
10264
 
10265
         CLOSE package_versions_cur;
10266
      ELSE
10267
         returnpvid := nsettopvid;
10268
      END IF;
10269
   END new_version;
10270
 
10271
/*-------------------------------------------------------------------------------------------------------*/
10272
   PROCEDURE change_state (
10273
      pvid       IN   NUMBER,
10274
      newstate   IN   package_versions.dlocked%TYPE,
10275
      userid     IN   NUMBER
10276
   )
10277
   IS
10278
   BEGIN
10279
      -- Set package in Released mode
10280
      UPDATE package_versions pv
10281
         SET pv.dlocked = newstate,
10282
             pv.modified_stamp = ora_sysdatetime,
10283
             pv.modifier_id = userid
10284
       WHERE pv.pv_id = pvid;
10285
 
10286
      -- Log action --
10287
      IF newstate = 'Y'
10288
      THEN
10289
         -- RELEASED --
10290
         log_action (pvid,
10291
                     'makeofficial',
10292
                     userid,
10293
                     'Package state change to: Released'
10294
                    );
10295
      ELSIF newstate = 'N'
10296
      THEN
10297
         -- UNLOCKED --
10298
         log_action (pvid,
10299
                     'makeunofficial',
10300
                     userid,
10301
                     'Package state change to: Ulocked'
10302
                    );
10303
      ELSIF newstate = 'P'
10304
      THEN
10305
         -- PENDING APPROVAL --
10306
         log_action (pvid,
10307
                     'add_to_planned',
10308
                     userid,
10309
                     'Package state change to: Pending Approval'
10310
                    );
10311
      ELSIF newstate = 'R'
10312
      THEN
10313
         -- REJECTED --
10314
         log_action (pvid,
10315
                     'reject_package',
10316
                     userid,
10317
                     'Package state change to: Rejected'
10318
                    );
10319
      ELSIF newstate = 'A'
10320
      THEN
10321
         -- APPROVED --
10322
         log_action (pvid,
10323
                     'approve_package',
10324
                     userid,
10325
                     'Package state change to: Approved'
10326
                    );
10327
      END IF;
10328
   END;
10329
 
10330
/*-------------------------------------------------------------------------------------------------------*/
10331
   PROCEDURE destroy_package (
10332
      pvid               IN       NUMBER,
10333
      overridewarnings   IN       CHAR DEFAULT 'N',
10334
      problemstring      OUT      VARCHAR2
10335
   )
10336
   IS
10337
      LOCKED     CHAR;
10338
      pkgid      NUMBER;
10339
      ROWCOUNT   NUMBER;
10340
   BEGIN
10341
      /*
10342
      || This will destroy all package details from database.
10343
      || It will only be used to remove unwanted work in progress packages,
10344
      || or mestaken versions
10345
      */
10346
 
10347
      /*--------------- Business Rules Here -------------------*/
10348
      problemstring := NULL;
10349
 
10350
      IF overridewarnings = 'N'
10351
      THEN
10352
         -- Package must not be official
10353
         SELECT pv.dlocked
10354
           INTO LOCKED
10355
           FROM package_versions pv
10356
          WHERE pv.pv_id = pvid;
10357
 
10358
         IF LOCKED = 'Y'
10359
         THEN
10360
            problemstring :=
10361
                  problemstring
10362
               || '- Package is locked and released.'
10363
               || UTL_TCP.crlf;
10364
         END IF;
10365
 
10366
         -- Cannot remove if used in BOMs
10367
         SELECT COUNT (osc.prod_id)
10368
           INTO ROWCOUNT
10369
           FROM deployment_manager.os_contents osc
10370
          WHERE osc.prod_id = pvid;
10371
 
10372
         IF ROWCOUNT > 0
10373
         THEN
10374
            problemstring :=
10375
                  problemstring
10376
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
10377
               || UTL_TCP.crlf;
10378
         END IF;
10379
 
10380
         -- Cannot remove if Referenced as build dependency
10381
         SELECT COUNT (dep.pv_id)
10382
           INTO ROWCOUNT
10383
           FROM package_dependencies dep
10384
          WHERE dep.dpv_id = pvid;
10385
 
10386
         IF ROWCOUNT > 0
10387
         THEN
10388
            problemstring :=
10389
                  problemstring
10390
               || '- Package is referenced by other package as build dependency.'
10391
               || UTL_TCP.crlf;
10392
         END IF;
10393
 
10394
         -- Cannot remove if Referenced as runtime dependency
10395
         SELECT COUNT (rd.pv_id)
10396
           INTO ROWCOUNT
10397
           FROM runtime_dependencies rd
10398
          WHERE rd.rtd_id = pvid;
10399
 
10400
         IF ROWCOUNT > 0
10401
         THEN
10402
            problemstring :=
10403
                  problemstring
10404
               || '- Package is referenced by other package as runtime dependency.'
10405
               || UTL_TCP.crlf;
10406
         END IF;
10407
 
10408
         -- Cannot remove if Referenced as patch
10409
         SELECT COUNT (pp.pv_id)
10410
           INTO ROWCOUNT
10411
           FROM package_patches pp
10412
          WHERE pp.patch_id = pvid;
10413
 
10414
         IF ROWCOUNT > 0
10415
         THEN
10416
            problemstring :=
10417
                  problemstring
10418
               || '- Package is used as patch by other package.'
10419
               || UTL_TCP.crlf;
10420
         END IF;
10421
      END IF;
10422
 
10423
/*-------------------------------------------------------*/
10424
      IF (problemstring IS NULL)
10425
      THEN
10426
         --- Remove From Work in Progress
10427
         DELETE FROM work_in_progress wip
10428
               WHERE wip.pv_id = pvid;
10429
 
10430
         --- Remove From Pending
10431
         DELETE FROM planned pl
10432
               WHERE pl.pv_id = pvid;
10433
 
10434
         --- Remove From Released area
10435
         DELETE FROM release_content rc
10436
               WHERE rc.pv_id = pvid;
10437
 
10438
         ---Remove From Package Processes
10439
         DELETE FROM package_processes pp
10440
               WHERE pp.pv_id = pvid;
10441
 
10442
         --- Remove Dependencies
10443
         DELETE FROM package_dependencies dep
10444
               WHERE dep.pv_id = pvid;
10445
 
10446
         DELETE FROM package_dependencies dep
10447
               WHERE dep.dpv_id = pvid;
10448
 
10449
         --- Remove Runtime dependencies
10450
         DELETE FROM runtime_dependencies rtd
10451
               WHERE rtd.pv_id = pvid;
10452
 
10453
         DELETE FROM runtime_dependencies rtd
10454
               WHERE rtd.rtd_id = pvid;
10455
 
10456
         --- Remove components
10457
         DELETE FROM product_components pc
10458
               WHERE pc.pv_id = pvid;
10459
 
10460
         DELETE FROM release_components rc
10461
               WHERE rc.pv_id = pvid;
10462
 
10463
         --- Remove From Notification History
10464
         DELETE FROM notification_history nh
10465
               WHERE nh.pv_id = pvid;
10466
 
10467
         --- Remove From Ignore Warnings
10468
         DELETE FROM ignore_warnings iw
10469
               WHERE iw.pv_id = pvid;
10470
 
10471
         --- Remove From Additional Notes
10472
         DELETE FROM additional_notes an
10473
               WHERE an.pv_id = pvid;
10474
 
10475
         --- Remove From CQ Issues
10476
         DELETE FROM cq_issues cq
10477
               WHERE cq.pv_id = pvid;
10478
 
10479
         --- Remove from Package Patches
10480
         DELETE FROM package_patches pp
10481
               WHERE pp.pv_id = pvid;
10482
 
10483
         DELETE FROM package_patches pp
10484
               WHERE pp.patch_id = pvid;
10485
 
10486
         --- Remove From Package Documents
10487
         DELETE FROM package_documents pd
10488
               WHERE pd.pv_id = pvid;
10489
 
10490
         --- Remove from Code Review
10491
         DELETE FROM code_reviews cr
10492
               WHERE cr.pv_id = pvid;
57 mhunt 10493
 
51 mhunt 10494
         --- Remove from Code Review URL
10495
         DELETE FROM code_review_url cru
10496
               WHERE cru.pv_id = pvid;
10497
 
10498
         --- Remove from Unit Tests
10499
         DELETE FROM unit_tests ut
10500
               WHERE ut.pv_id = pvid;
10501
 
10502
         --- Remove from Package BuildEnv
10503
         DELETE FROM package_build_env pbe
10504
               WHERE pbe.pv_id = pvid;
10505
 
57 mhunt 10506
         --- Remove from Package Build Info
10507
         DELETE FROM package_build_info pbi
10508
               WHERE pbi.pv_id = pvid;
10509
 
51 mhunt 10510
         --- Remove from Build Order
10511
         DELETE FROM build_order bo
10512
               WHERE bo.pv_id = pvid;
10513
 
57 mhunt 10514
         --- Remove from Licencing
10515
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
10516
 
51 mhunt 10517
         --- Remove from Note Manager
10518
         DELETE FROM note_manager nm
10519
               WHERE nm.nid = pvid;
10520
 
10521
         --- Remove from Action log
10522
         DELETE FROM action_log al
10523
               WHERE al.pv_id = pvid;
57 mhunt 10524
 
10525
         --- Remove from Do Not Ripple
10526
         DELETE FROM DO_NOT_RIPPLE dnr
10527
               WHERE dnr.PV_ID = pvid;
10528
 
10529
         --- Remove from Advisory Ripple
10530
         DELETE FROM ADVISORY_RIPPLE ar
10531
               WHERE ar.PV_ID = pvid;
10532
 
10533
         --- Remove from Jira Issues
10534
         DELETE FROM JIRA_ISSUES jira
10535
               WHERE jira.PV_ID = pvid;
10536
 
53 mhunt 10537
         --- Remove from Package Metrics
10538
         DELETE FROM package_metrics pm
10539
              WHERE pm.pv_id = pvid;
57 mhunt 10540
 
51 mhunt 10541
         --- Finally Remove From Package Versions
10542
         --- Get Package name
10543
         SELECT pv.pkg_id
10544
           INTO pkgid
10545
           FROM package_versions pv
10546
          WHERE pv.pv_id = pvid;
10547
 
10548
         DELETE FROM package_versions pv
10549
               WHERE pv.pv_id = pvid;
10550
 
10551
         --- Remove package name if not used any more
10552
         SELECT COUNT (pv.pv_id)
10553
           INTO ROWCOUNT
10554
           FROM package_versions pv
10555
          WHERE pv.pkg_id = pkgid;
10556
 
10557
         IF ROWCOUNT < 1
10558
         THEN
10559
            DELETE FROM PACKAGES pkg
10560
                  WHERE pkg.pkg_id = pkgid;
10561
         END IF;
10562
      END IF;
10563
   END;
10564
 
10565
/*-------------------------------------------------------------------------------------------------------*/
10566
   PROCEDURE new_patch (
10567
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
10568
      nparentpvid        IN       NUMBER,
10569
      spatchidlist       IN       VARCHAR2,
10570
      nuserid            IN       NUMBER,
10571
      returnpatchid      OUT      NUMBER
10572
   )
10573
   IS
10574
      patchpv_id           NUMBER;
10575
      parpkg_id            NUMBER;
10576
      lastinstallorder     NUMBER;
10577
      ispatchdlocked       package_versions.dlocked%TYPE;
10578
      ssv_mm               package_versions.v_mm%TYPE;
10579
      ssv_nmm              package_versions.v_nmm%TYPE;
10580
      ssv_ext              package_versions.v_ext%TYPE;
57 mhunt 10581
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
51 mhunt 10582
 
10583
      CURSOR parent_cur
10584
      IS
10585
         SELECT pv.*, pkg.pkg_name
10586
           FROM package_versions pv, PACKAGES pkg
10587
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
10588
 
57 mhunt 10589
      parent_rec parent_cur%ROWTYPE;
51 mhunt 10590
 
10591
      CURSOR patch_cur
10592
      IS
10593
         SELECT pv.*, pg.pkg_name
10594
           FROM package_versions pv, PACKAGES pg
10595
          WHERE pv.pkg_id = parpkg_id
10596
            AND pv.pkg_version = snewpatchversion
10597
            AND pv.pkg_id = pg.pkg_id;
10598
 
57 mhunt 10599
      patch_rec  patch_cur%ROWTYPE;
51 mhunt 10600
 
10601
      CURSOR releases_cur
10602
      IS
10603
         SELECT rc.pv_id
10604
           FROM release_content rc
10605
          WHERE rc.pv_id = patch_rec.pv_id;
10606
 
57 mhunt 10607
      releases_rec releases_cur%ROWTYPE;
51 mhunt 10608
   BEGIN
10609
      -- Get Last Install Order
10610
      SELECT COUNT (*)
10611
        INTO lastinstallorder
10612
        FROM package_patches pp
10613
       WHERE pp.pv_id = nparentpvid;
10614
 
10615
      -- Get parent details
10616
      OPEN parent_cur;
10617
 
10618
      FETCH parent_cur
10619
       INTO parent_rec;
10620
 
10621
      parpkg_id := parent_rec.pkg_id;
10622
 
10623
      -- Find if patch exists in database
10624
      OPEN patch_cur;
10625
 
10626
      FETCH patch_cur
10627
       INTO patch_rec;
10628
 
10629
      -- Parent must be official
10630
      IF parent_rec.dlocked = 'Y'
10631
      THEN
10632
         IF patch_cur%NOTFOUND
10633
         THEN
10634
            ispatchdlocked := 'N';
10635
 
10636
            -- Create new patch version --
10637
            SELECT seq_pv_id.NEXTVAL
10638
              INTO patchpv_id
10639
              FROM DUAL;
10640
 
10641
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
10642
 
10643
            INSERT INTO package_versions
10644
                        (pv_id, pkg_id, pkg_version,
10645
                         dlocked, created_stamp, creator_id,
10646
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
10647
                         src_path,
10648
                         pv_description,
10649
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
57 mhunt 10650
                         is_autobuildable, ripple_field
51 mhunt 10651
                        )
10652
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
10653
                         ispatchdlocked, ora_sysdate, nuserid,
10654
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
10655
                         parent_rec.src_path,
10656
                            'This is a patch to '
10657
                         || parent_rec.pkg_name
10658
                         || ' '
10659
                         || parent_rec.pkg_version,
10660
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
10661
                        );
10662
 
10663
            INSERT INTO package_patches
10664
                        (pv_id, patch_id, install_order)
57 mhunt 10665
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10666
                        lastinstallorder + 1 AS install_order
10667
                   FROM package_versions pv
10668
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
51 mhunt 10669
 
10670
            /* LOG ACTION */
10671
            log_action (patchpv_id,
10672
                        'new_version',
10673
                        nuserid,
10674
                        'Patch version created: ' || snewpatchversion
10675
                       );
10676
            log_action (nparentpvid,
10677
                        'patch_add',
10678
                        nuserid,
10679
                        'New patch created and attached: ' || snewpatchversion
10680
                       );
10681
         ELSE
10682
            patchpv_id := patch_rec.pv_id;
10683
            ispatchdlocked := patch_rec.dlocked;
10684
 
10685
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
10686
            OPEN releases_cur;
10687
 
10688
            FETCH releases_cur
10689
             INTO releases_rec;
10690
 
10691
            IF releases_cur%NOTFOUND
10692
            THEN
10693
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
10694
               UPDATE package_versions
10695
                  SET is_patch = 'Y'
10696
                WHERE pv_id = patchpv_id;
10697
 
10698
               INSERT INTO package_patches
10699
                           (pv_id, patch_id, install_order)
57 mhunt 10700
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
10701
                           lastinstallorder + 1 AS install_order
10702
                      FROM package_versions pv
10703
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
51 mhunt 10704
            END IF;
10705
 
10706
            CLOSE releases_cur;
10707
 
10708
            /* LOG ACTION */
10709
            log_action (nparentpvid,
10710
                        'patch_add',
10711
                        nuserid,
10712
                           'Patch version was found and attached: '
10713
                        || snewpatchversion
10714
                       );
10715
         END IF;
10716
      END IF;
10717
 
10718
      /* Create Patch Dependencies */
10719
      opatchdepcollector := in_list_number (spatchidlist);
10720
 
10721
      -- Make sure patch is unofficial before altering its dependencies
10722
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
10723
      THEN
10724
         -- Delete Existing Dependencies
10725
         DELETE FROM package_dependencies dep
10726
               WHERE dep.pv_id = patchpv_id;
10727
 
10728
         -- Insert new dependencies
10729
         INSERT INTO package_dependencies
10730
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
57 mhunt 10731
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
10732
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
10733
                     'L' AS build_type
10734
                FROM package_versions pv
10735
               WHERE pv.pv_id IN (
51 mhunt 10736
                      SELECT *
10737
                        FROM TABLE
10738
                                (CAST
10739
                                    (opatchdepcollector AS relmgr_number_tab_t)
10740
                                ));
10741
      END IF;
10742
 
10743
      -- Return patch_id
10744
      returnpatchid := patchpv_id;
10745
 
10746
      CLOSE parent_cur;
10747
 
10748
      CLOSE patch_cur;
10749
   EXCEPTION
10750
      WHEN DUP_VAL_ON_INDEX
10751
      THEN
10752
         raise_application_error (-20000,
10753
                                     'Patch version '
10754
                                  || snewpatchversion
10755
                                  || ' already exist.'
10756
                                 );
10757
   END;
10758
 
10759
/*-------------------------------------------------------------------------------------------------------*/
10760
   PROCEDURE obsolete_patch (
10761
      patchid            IN   NUMBER,
10762
      isobsolete         IN   CHAR,
10763
      obsoletecomments   IN   VARCHAR2,
10764
      userid             IN   NUMBER
10765
   )
10766
   IS
10767
   BEGIN
10768
      -- Update patch
10769
      UPDATE package_versions pv
10770
         SET pv.is_obsolete = isobsolete,
10771
             pv.obsolete_comments = obsoletecomments
10772
       WHERE pv.pv_id = patchid;
10773
 
10774
      /*
10775
      -- Update patch children
10776
      UPDATE PACKAGE_VERSIONS pv SET
10777
      pv.IS_OBSOLETE = IsObsolete,
10778
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10779
      WHERE pv.PV_ID IN (
10780
                     SELECT DISTINCT dep.DPV_ID
10781
                       FROM PACKAGE_DEPENDENCIES dep
10782
                      WHERE dep.PV_ID = PatchId
10783
                     );
10784
 
10785
 
10786
      -- Update patch parent
10787
      UPDATE PACKAGE_VERSIONS pv SET
10788
      pv.IS_OBSOLETE = IsObsolete,
10789
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10790
      WHERE pv.PV_ID IN (
10791
                     SELECT DISTINCT dep.PV_ID
10792
                       FROM PACKAGE_DEPENDENCIES dep
10793
                      WHERE dep.DPV_ID = PatchId
10794
                     );
10795
 
57 mhunt 10796
      */
51 mhunt 10797
 
10798
      /* LOG ACTION */
10799
      IF isobsolete IS NOT NULL
10800
      THEN
10801
         log_action (patchid,
10802
                     'patch_obsolete',
10803
                     userid,
10804
                     'Obsolete patch. ' || obsoletecomments
10805
                    );
10806
      ELSE
10807
         log_action (patchid,
10808
                     'patch_obsolete',
10809
                     userid,
10810
                     'Undo patch obsolete.'
10811
                    );
10812
      END IF;
10813
   END;
10814
 
10815
/*-------------------------------------------------------------------------------------------------------*/
10816
   PROCEDURE obsolete_patches (
10817
      spatchidlist       IN   VARCHAR2,
10818
      isobsolete         IN   CHAR,
10819
      obsoletecomments   IN   VARCHAR2,
10820
      userid             IN   NUMBER
10821
   )
10822
   IS
10823
   BEGIN
10824
      /*--------------- Business Rules Here -------------------*/
10825
      IF spatchidlist IS NULL
10826
      THEN
10827
         raise_application_error (-20000,
10828
                                  'Please select one or more Patches.'
10829
                                 );
10830
      END IF;
10831
 
10832
/*-------------------------------------------------------*/
10833
 
10834
      -- Update patch
10835
      UPDATE package_versions pv
10836
         SET pv.is_obsolete = isobsolete,
10837
             pv.obsolete_comments = obsoletecomments
10838
       WHERE pv.pv_id IN (
10839
                SELECT *
10840
                  FROM THE
10841
                          (SELECT CAST
10842
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
10843
                                     )
10844
                             FROM DUAL
10845
                          ));
57 mhunt 10846
      /*
10847
      -- Update patch children
10848
      UPDATE PACKAGE_VERSIONS pv SET
10849
      pv.IS_OBSOLETE = IsObsolete,
10850
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10851
      WHERE pv.PV_ID IN (
10852
                     SELECT DISTINCT dep.DPV_ID
10853
                       FROM PACKAGE_DEPENDENCIES dep
10854
                      WHERE dep.PV_ID = PatchId
10855
                     );
51 mhunt 10856
 
10857
 
57 mhunt 10858
      -- Update patch parent
10859
      UPDATE PACKAGE_VERSIONS pv SET
10860
      pv.IS_OBSOLETE = IsObsolete,
10861
      pv.OBSOLETE_COMMENTS = ObsoleteComments
10862
      WHERE pv.PV_ID IN (
10863
                     SELECT DISTINCT dep.PV_ID
10864
                       FROM PACKAGE_DEPENDENCIES dep
10865
                      WHERE dep.DPV_ID = PatchId
10866
                     );
51 mhunt 10867
 
10868
      */
10869
 
57 mhunt 10870
      /* LOG ACTION
10871
      IF IsObsolete IS NOT NULL THEN
51 mhunt 10872
         Log_Action ( PatchId, 'patch_obsolete', UserId,
57 mhunt 10873
                     'Obsolete patch. '|| ObsoleteComments );
10874
      ELSE
10875
         Log_Action ( PatchId, 'patch_obsolete', UserId,
10876
                     'Undo patch obsolete.' );
10877
      END IF;  */
51 mhunt 10878
   END;
10879
 
10880
/*-------------------------------------------------------------------------------------------------------*/
10881
   PROCEDURE add_process (
10882
      nprocid         IN   processes.proc_id%TYPE,
10883
      shealthtag      IN   processes.proc_name%TYPE,
10884
      sprocdesc       IN   processes.proc_description%TYPE,
10885
      scmdinterface   IN   processes.run_as%TYPE,
10886
      spkgowner       IN   processes.pkg_owner%TYPE,
10887
      sisinterface    IN   processes.is_interface%TYPE,
10888
      npvid           IN   package_processes.pv_id%TYPE,
10889
      nuserid         IN   NUMBER
10890
   )
10891
   IS
10892
      pkgname   VARCHAR2 (100);
57 mhunt 10893
 
51 mhunt 10894
   BEGIN
10895
      INSERT INTO processes
10896
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
10897
                   is_interface
10898
                  )
10899
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
10900
                   sisinterface
10901
                  );
10902
 
10903
      pk_package.add_package_process (nprocid, npvid, nuserid);
10904
   END;
10905
 
10906
/*-------------------------------------------------------------------------------------------------------*/
10907
   PROCEDURE add_package_process (
10908
      nprocidlist   IN   VARCHAR2,
10909
      npvid         IN   package_processes.pv_id%TYPE,
10910
      nuserid       IN   NUMBER
10911
   )
10912
   IS
10913
      processname   VARCHAR2 (4000);
10914
 
10915
      CURSOR proc_cur
10916
      IS
10917
         SELECT prc.proc_id
10918
           FROM processes prc
10919
          WHERE prc.proc_id IN (
10920
                   SELECT *
10921
                     FROM THE
10922
                             (SELECT CAST
10923
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
10924
                                        )
10925
                                FROM DUAL
10926
                             ));
10927
 
57 mhunt 10928
      proc_rec  proc_cur%ROWTYPE;
51 mhunt 10929
   BEGIN
10930
      OPEN proc_cur;
10931
 
10932
      FETCH proc_cur
10933
       INTO proc_rec;
10934
 
10935
      WHILE proc_cur%FOUND
10936
      LOOP
57 mhunt 10937
         INSERT INTO package_processes (proc_id, pv_id)
10938
              VALUES (proc_rec.proc_id, npvid);
51 mhunt 10939
 
10940
         SELECT prc.proc_name
10941
           INTO processname
10942
           FROM processes prc
10943
          WHERE prc.proc_id = proc_rec.proc_id;
10944
 
10945
         -- Log Action --
10946
         log_action (npvid,
10947
                     'process_add',
10948
                     nuserid,
10949
                     'Added process with health tag ' || processname
10950
                    );
10951
 
10952
         FETCH proc_cur
10953
          INTO proc_rec;
10954
      END LOOP;
10955
   END;
10956
 
10957
/*-------------------------------------------------------------------------------------------------------*/
10958
   PROCEDURE remove_process (
10959
      nprocid   IN   package_processes.proc_id%TYPE,
10960
      npvid     IN   package_processes.pv_id%TYPE,
10961
      nuserid   IN   NUMBER
10962
   )
10963
   IS
10964
      processname   VARCHAR2 (4000);
10965
   BEGIN
10966
      SELECT prc.proc_name
10967
        INTO processname
10968
        FROM processes prc
10969
       WHERE prc.proc_id = nprocid;
10970
 
10971
      DELETE FROM package_processes
10972
            WHERE proc_id = nprocid AND pv_id = npvid;
10973
 
10974
      -- Log Action --
10975
      log_action (npvid,
10976
                  'process_remove',
10977
                  nuserid,
10978
                  'Removed process with health tag ' || processname
10979
                 );
10980
   END;
10981
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 10982
   /*
10983
   ** Author: Rupesh Solanki
10984
   ** Purpose: To move package versions from one release to another
10985
   ** Release: 4th September 2006
10986
   */
10987
   PROCEDURE move_package (
10988
      npvid        IN package_versions.pv_id%TYPE,
10989
      nrtagid      IN release_tags.rtag_id%TYPE,
10990
      nnewrtagid   IN release_tags.rtag_id%TYPE,
10991
      nuserid      IN NUMBER
10992
   )
10993
   IS
51 mhunt 10994
 
57 mhunt 10995
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
10996
 
10997
   BEGIN
10998
      SELECT rtag_name into oldrtag_name
10999
      FROM RELEASE_TAGS
11000
      WHERE rtag_id = nrtagid;
11001
 
11002
      SELECT rtag_name into newrtag_name
11003
      FROM RELEASE_TAGS
11004
      WHERE rtag_id = nnewrtagid;
11005
 
11006
      /* Table Work In Progress*/
11007
      UPDATE WORK_IN_PROGRESS
11008
      SET RTAG_ID = nnewrtagid
11009
      WHERE RTAG_ID = nrtagid
11010
      AND PV_ID = npvid;
11011
 
11012
      /* Table PLANNED*/
11013
      UPDATE PLANNED
11014
      SET RTAG_ID = nnewrtagid
11015
      WHERE RTAG_ID = nrtagid
11016
      AND PV_ID = npvid;
11017
 
51 mhunt 11018
      -- Log Action --
11019
      log_action (npvid,
11020
                  'move_package_version',
11021
                  nuserid,
11022
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
57 mhunt 11023
                 );
11024
   END;
11025
 
51 mhunt 11026
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11027
   /*
11028
   ** Author: Rupesh Solanki
11029
   ** Purpose: To modify the product state from integration to test to deployment
11030
   ** Release: 25th January 2006
11031
   */
11032
   PROCEDURE modify_product_state (
11033
      npvid    IN package_versions.pv_id%TYPE,
11034
      nrtagid  IN release_tags.rtag_id%TYPE,
11035
      nstateid IN product_states.state_id%TYPE,
11036
      nuserid  IN NUMBER
51 mhunt 11037
   ) IS
57 mhunt 11038
 
11039
      sStateName VARCHAR2(4000);
11040
      sRtagName VARCHAR2(4000);
11041
 
11042
   BEGIN
11043
 
11044
      UPDATE RELEASE_CONTENT
11045
      SET PRODUCT_STATE = nstateid
11046
      WHERE PV_ID = npvid
11047
      AND RTAG_ID = nrtagid;
11048
 
11049
 
11050
      SELECT STATE INTO sStateName
11051
      FROM PRODUCT_STATES
11052
      WHERE STATE_ID = nstateid;
11053
 
11054
      SELECT RTAG_NAME into sRtagName
11055
      FROM RELEASE_TAGS
11056
      WHERE RTAG_ID = nrtagid;
11057
 
11058
 
11059
      -- Log Action --
11060
      log_action (npvid,
11061
                  'modify_product_state',
11062
                     nuserid,
11063
                     sStateName || ' in '|| sRtagName
11064
                  );
11065
   END;
51 mhunt 11066
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11067
   /*
11068
   ** Author: Jeremy Tweddle
11069
   ** Date: 24/Aug/2007
11070
   */
11071
   PROCEDURE add_code_review_url (
11072
      npvid           IN    NUMBER,
11073
      nprojid         IN    NUMBER,
11074
      surl            IN    VARCHAR2,
11075
      sreason         IN    VARCHAR2,
11076
      ddateofreview   IN    DATE
11077
   ) IS
11078
 
11079
      ncrid NUMBER;
11080
 
11081
   BEGIN
11082
 
51 mhunt 11083
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
57 mhunt 11084
 
51 mhunt 11085
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
11086
                                    last_modified )
11087
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
57 mhunt 11088
 
11089
   END;
51 mhunt 11090
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11091
   /*
11092
   ** Author: Jeremy Tweddle
11093
   ** Date: 22/Aug/2007
11094
   */
11095
   PROCEDURE update_code_review_url (
11096
      ncrid           IN    NUMBER,
11097
      nprojid         IN    NUMBER,
11098
      surl            IN    VARCHAR2,
11099
      sreason         IN    VARCHAR2
11100
   ) IS
11101
 
11102
   BEGIN
11103
 
51 mhunt 11104
      UPDATE code_review_url
11105
      SET url = surl,
11106
          proj_id = nprojid,
11107
          reason = sreason,
11108
          last_modified = ora_sysdate
11109
      WHERE cr_id = ncrid;
57 mhunt 11110
 
11111
   END;
51 mhunt 11112
/*-------------------------------------------------------------------------------------------------------*/
57 mhunt 11113
   /*
11114
   ** Author: Jeremy Tweddle
11115
   ** Date: 22/Aug/2007
11116
   */
11117
   PROCEDURE remove_code_review_url (
11118
      ncrid  IN    NUMBER
11119
   ) IS
11120
 
11121
   BEGIN
51 mhunt 11122
      DELETE FROM code_review_url
11123
      WHERE cr_id = ncrid;
57 mhunt 11124
   END;
51 mhunt 11125
/*-------------------------------------------------------------------------------------------------------*/
11126
END pk_package;
11127
/
11128
 
11129
CREATE OR REPLACE PACKAGE BODY                 pk_archive
11130
IS
11131
/*
11132
------------------------------
11133
||  Author:  Rupesh Solanki
11134
||  Date:    26 October 2006
11135
||  Version:   1.0
11136
------------------------------
11137
*/
11138
/*---------------------------*/
11139
PROCEDURE populate_packages_table IS
11140
 
11141
BEGIN
11142
		  INSERT INTO archive_manager.PACKAGES
11143
		  (
11144
		  select * from packages where pkg_id not in 
11145
		  		  (select pkg_id from archive_manager.packages)
11146
		  );
11147
 
11148
          INSERT INTO archive_manager.PROCESSES
11149
          (
11150
          select * from processes where proc_id not in 
11151
            (select proc_id from archive_manager.processes)
11152
          );
11153
 
11154
 
11155
 
11156
END;
11157
/*-------------------------------------------------------------------------------------------------------*/
11158
   PROCEDURE populate_archive_data_table (
11159
      nrtagid   IN   release_tags.rtag_id%TYPE
11160
   )
11161
   IS
11162
/*
11163
Reason: To populate the archive_data table with information regarding the
11164
         number of package versions that exist in other releases.
11165
*/
11166
      numcount      NUMBER;
11167
      numusedby     NUMBER;
11168
      numruntime    NUMBER;
11169
 
11170
      /* Get all the package versions in the release */
11171
      CURSOR archive_cur
11172
      IS
11173
         SELECT pv_id
11174
           FROM release_content
11175
          WHERE rtag_id = nrtagid;
11176
 
11177
      archive_rec   archive_cur%ROWTYPE;
11178
   BEGIN
11179
/*--------------- Business Rules Here -------------------*/
11180
/*-------------------------------------------------------*/
11181
      OPEN archive_cur;
11182
 
11183
      FETCH archive_cur
11184
       INTO archive_rec;
11185
 
11186
      WHILE archive_cur%FOUND
11187
      LOOP
11188
        /* How many packages depend on this package version? */
11189
         SELECT COUNT (*)
11190
           INTO numusedby
11191
           FROM package_dependencies
11192
          WHERE dpv_id = archive_rec.pv_id;
11193
 
11194
        /* How many project releases use this package version?  */
11195
         SELECT COUNT (*)
11196
           INTO numcount
11197
           FROM release_content
11198
          WHERE pv_id = archive_rec.pv_id;
11199
 
11200
        /* How many packages have this package version as runtime
11201
        dependency? */
11202
         SELECT COUNT (*)
11203
           INTO numruntime
11204
           FROM runtime_dependencies
11205
          WHERE rtd_id = archive_rec.pv_id;
11206
 
11207
        /* Insert into the archive_data table if they are not runtime dependant
11208
        and package dependant and they exist in that particular release only*/
11209
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
11210
         THEN
11211
            INSERT INTO archive_data
11212
                        (rtag_id, pv_id
11213
                        )
11214
                 VALUES (nrtagid, archive_rec.pv_id
11215
                        );
11216
         END IF;
11217
 
11218
         FETCH archive_cur
11219
          INTO archive_rec;
11220
      END LOOP;
11221
   END;
11222
 
11223
/*-------------------------------------------------------------------------------------------------------*/
11224
   PROCEDURE migrate_pv_to_archive_schema (
11225
      nrtagid   IN   release_tags.rtag_id%TYPE
11226
   )
11227
   IS
11228
   BEGIN
11229
 
11230
      /* MIGRATION - PACKAGE_VERSIONS */
11231
      INSERT INTO archive_manager.package_versions
11232
         SELECT *
11233
           FROM package_versions
11234
          WHERE pv_id IN (SELECT pv_id
11235
                            FROM archive_data);
11236
 
11237
      /* MIGRATION - PACKAGE_BUILD_ENV */
11238
      INSERT INTO archive_manager.package_build_env
11239
         SELECT *
11240
           FROM package_build_env
11241
          WHERE pv_id IN (SELECT pv_id
11242
                            FROM archive_data);
11243
 
11244
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
11245
      DELETE FROM package_build_env
11246
            WHERE pv_id IN (SELECT pv_id
11247
                              FROM archive_data);
11248
 
11249
      /* MIGRATION - PACKAGE_BUILD_INFO */
11250
      INSERT INTO archive_manager.package_build_info
11251
         SELECT *
11252
           FROM package_build_info
11253
          WHERE pv_id IN (SELECT pv_id
11254
                            FROM archive_data);
11255
 
11256
      /* PURGE DATA FROM PACKAGE_BUILD_info */
11257
      DELETE FROM package_build_info
11258
            WHERE pv_id IN (SELECT pv_id
11259
                              FROM archive_data);							  
11260
 
11261
      /* MIGRATION - UNIT_TESTS  */
11262
      INSERT INTO archive_manager.unit_tests
11263
         SELECT *
11264
           FROM unit_tests
11265
          WHERE pv_id IN (SELECT pv_id
11266
                            FROM archive_data);
11267
 
11268
      /* PURGE DATA FROM UNIT_TESTS*/
11269
      DELETE FROM unit_tests
11270
            WHERE pv_id IN (SELECT pv_id
11271
                              FROM archive_data);
11272
 
11273
      /* MIGRATION - PACKAGE_PROCESSES */
11274
      INSERT INTO archive_manager.package_processes
11275
         SELECT *
11276
           FROM package_processes
11277
          WHERE pv_id IN (SELECT pv_id
11278
                            FROM archive_data);
11279
 
11280
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
11281
      DELETE FROM package_processes
11282
            WHERE pv_id IN (SELECT pv_id
11283
                              FROM archive_data);
11284
 
11285
      /* MIGRATION - PACKAGE_DEPENDENCIES */
11286
      INSERT INTO archive_manager.package_dependencies
11287
         SELECT *
11288
           FROM package_dependencies
11289
          WHERE pv_id IN (SELECT pv_id
11290
                            FROM archive_data);
11291
 
11292
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
11293
      DELETE FROM package_dependencies
11294
            WHERE pv_id IN (SELECT pv_id
11295
                              FROM archive_data);
11296
 
11297
      /* MIGRATION - CODE_REVIEWS */
11298
      INSERT INTO archive_manager.code_reviews
11299
         SELECT *
11300
           FROM code_reviews
11301
          WHERE pv_id IN (SELECT pv_id
11302
                            FROM archive_data);
11303
 
11304
      /* PURGE DATA FROM CODE_REVIEWS*/
11305
      DELETE FROM code_reviews
11306
            WHERE pv_id IN (SELECT pv_id
11307
                              FROM archive_data);
11308
 
11309
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
11310
      INSERT INTO archive_manager.runtime_dependencies
11311
         SELECT *
11312
           FROM runtime_dependencies
11313
          WHERE pv_id IN (SELECT pv_id
11314
                            FROM archive_data);
11315
 
11316
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
11317
      DELETE FROM runtime_dependencies
11318
            WHERE pv_id IN (SELECT pv_id
11319
                              FROM archive_data);
11320
 
11321
      /* MIGRATION - PACKAGE_DOCUMENTS */
11322
      INSERT INTO archive_manager.package_documents
11323
         SELECT *
11324
           FROM package_documents
11325
          WHERE pv_id IN (SELECT pv_id
11326
                            FROM archive_data);
11327
 
11328
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
11329
      DELETE FROM package_documents
11330
            WHERE pv_id IN (SELECT pv_id
11331
                              FROM archive_data);
11332
 
11333
      /* MIGRATION - PACKAGE_PATCHES */
11334
      INSERT INTO archive_manager.package_patches
11335
         SELECT *
11336
           FROM package_patches
11337
          WHERE pv_id IN (SELECT pv_id
11338
                            FROM archive_data);
11339
 
11340
      /* PURGE DATA FROM PACKAGE_PATCHES*/
11341
      DELETE FROM package_patches
11342
            WHERE pv_id IN (SELECT pv_id
11343
                              FROM archive_data);
11344
 
11345
      /* MIGRATION - CQ_ISSUES */
11346
      INSERT INTO archive_manager.cq_issues
11347
         SELECT *
11348
           FROM cq_issues
11349
          WHERE pv_id IN (SELECT pv_id
11350
                            FROM archive_data);
11351
 
11352
      /* PURGE DATA FROM CQ_ISSUES*/
11353
      DELETE FROM cq_issues
11354
            WHERE pv_id IN (SELECT pv_id
11355
                              FROM archive_data);
11356
 
11357
      /* MIGRATION - ADDITIONAL_NOTES */
11358
      INSERT INTO archive_manager.additional_notes
11359
         SELECT *
11360
           FROM additional_notes
11361
          WHERE pv_id IN (SELECT pv_id
11362
                            FROM archive_data);
11363
 
11364
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
11365
      DELETE FROM additional_notes
11366
            WHERE pv_id IN (SELECT pv_id
11367
                              FROM archive_data);
11368
 
11369
      /* MIGRATION - RELEASE_COMPONENTS */
11370
      INSERT INTO archive_manager.release_components
11371
         SELECT *
11372
           FROM release_components
11373
          WHERE pv_id IN (SELECT pv_id
11374
                            FROM archive_data);
11375
 
11376
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
11377
      DELETE FROM release_components
11378
            WHERE pv_id IN (SELECT pv_id
11379
                              FROM archive_data);
11380
 
11381
      /* MIGRATION - IGNORE_WARNINGS */
11382
      INSERT INTO archive_manager.ignore_warnings
11383
         SELECT *
11384
           FROM ignore_warnings
11385
          WHERE pv_id IN (SELECT pv_id
11386
                            FROM archive_data);
11387
 
11388
      /* PURGE DATA FROM IGNORE_WARNINGS*/
11389
      DELETE FROM ignore_warnings
11390
            WHERE pv_id IN (SELECT pv_id
11391
                              FROM archive_data);
11392
 
11393
      /* PURGE DATA FROM WORK_IN_PROGRESS */
11394
      DELETE FROM work_in_progress
11395
            WHERE rtag_id = nrtagid;
11396
 
11397
      /* PURGE DATA FROM PLANNED */
11398
      DELETE FROM planned
11399
            WHERE rtag_id = nrtagid;
11400
 
11401
      /* MIGRATION - JIRA_ISSUES */
11402
      INSERT INTO archive_manager.jira_issues
11403
         SELECT *
11404
           FROM jira_issues
11405
          WHERE pv_id IN (SELECT pv_id
11406
                            FROM archive_data);
11407
 
11408
      /* PURGE DATA FROM JIRA_ISSUES*/
11409
      DELETE FROM jira_issues
11410
            WHERE pv_id IN (SELECT pv_id
11411
                              FROM archive_data);
11412
 
11413
      /* MIGRATION - PRODUCT_COMPONENTS */
11414
      INSERT INTO archive_manager.product_components
11415
         SELECT *
11416
           FROM product_components
11417
          WHERE pv_id IN (SELECT pv_id
11418
                            FROM archive_data);
11419
 
11420
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11421
      DELETE FROM product_components
11422
            WHERE pv_id IN (SELECT pv_id
11423
                              FROM archive_data);
11424
 
11425
      /* MIGRATION - ACTION_LOG */
11426
      INSERT INTO archive_manager.action_log
11427
         SELECT *
11428
           FROM action_log
11429
          WHERE pv_id IN (SELECT pv_id
11430
                            FROM archive_data);
11431
 
11432
      /* PURGE DATA FROM ACTION_LOG*/
11433
      DELETE FROM action_log
11434
            WHERE pv_id IN (SELECT pv_id
11435
                              FROM archive_data);
11436
 
11437
 
11438
   END;
11439
 
11440
/*-------------------------------------------------------------------------------------------------------*/
11441
   PROCEDURE migrate_rtag_to_archive_schema (
11442
      nrtagid   IN   release_tags.rtag_id%TYPE
11443
   )
11444
   IS
11445
   BEGIN
11446
      /* MIGRATION - DO_NOT_RIPPLE */
11447
      INSERT INTO archive_manager.do_not_ripple
11448
         SELECT *
11449
           FROM do_not_ripple dnp
11450
          WHERE rtag_id = nrtagid;
11451
 
11452
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11453
      DELETE FROM do_not_ripple
11454
            WHERE rtag_id = nrtagid;
11455
 
11456
      /* MIGRATION - ADVISORY_RIPPLES*/
11457
      INSERT INTO archive_manager.advisory_ripples
11458
         SELECT *
11459
           FROM advisory_ripple dnp
11460
          WHERE rtag_id = nrtagid;
11461
 
11462
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11463
      DELETE FROM advisory_ripple
11464
            WHERE rtag_id = nrtagid;			
11465
 
11466
      /* MIGRATION - RELEASE_CONTENT */
11467
      INSERT INTO archive_manager.release_content
11468
         SELECT *
11469
           FROM release_content
11470
          WHERE rtag_id = nrtagid;
11471
 
11472
      /* PURGE DATA FROM RELEASE_CONTENT*/
11473
      DELETE FROM release_content
11474
            WHERE rtag_id = nrtagid;
11475
 
11476
      /* MIGRATION - NOTIFICATION_HISTORY */
11477
      INSERT INTO archive_manager.notification_history
11478
         SELECT *
11479
           FROM notification_history
11480
          WHERE rtag_id = nrtagid;
11481
 
11482
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11483
      DELETE FROM notification_history
11484
            WHERE rtag_id = nrtagid;
11485
 
11486
      /* MIGRATION - BUILD_ORDER   */
11487
      INSERT INTO archive_manager.build_order
11488
         SELECT *
11489
           FROM build_order
11490
          WHERE rtag_id = nrtagid;
11491
 
11492
      /* PURGE DATA FROM BUILD_ORDER*/
11493
      DELETE FROM build_order
11494
            WHERE rtag_id = nrtagid;
11495
 
11496
      /* MIGRATION - PROJECT_ACTION_LOG */
11497
      INSERT INTO archive_manager.project_action_log
11498
         SELECT *
11499
           FROM project_action_log
11500
          WHERE rtag_id = nrtagid;
11501
 
11502
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11503
      DELETE FROM project_action_log
11504
            WHERE rtag_id = nrtagid;
11505
 
11506
      /* MIGRATION - DEPRECATED_PACKAGES */
11507
      INSERT INTO archive_manager.deprecated_packages
11508
         SELECT *
11509
           FROM deprecated_packages
11510
          WHERE rtag_id = nrtagid;
11511
 
11512
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11513
      DELETE FROM deprecated_packages
11514
            WHERE rtag_id = nrtagid;
11515
 
11516
      /* MIGRATION - RELEASE_TAGS */
11517
      INSERT INTO archive_manager.release_tags
11518
         SELECT *
11519
           FROM release_tags
11520
          WHERE rtag_id = nrtagid;
11521
 
11522
 
11523
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11524
      DELETE FROM package_versions
11525
            WHERE pv_id IN (SELECT pv_id
11526
                              FROM archive_data);
11527
 
11528
 
11529
   END;
11530
 
11531
/*-------------------------------------------------------------------------------------------------------*/
11532
   PROCEDURE clean_up_archive_data_table (
11533
      nrtagid   IN   release_tags.rtag_id%TYPE
11534
   )
11535
   IS
11536
   BEGIN
11537
      /* Cleaning Up The Archive_Data Table */
11538
      DELETE FROM archive_data
11539
            WHERE rtag_id = nrtagid;
11540
   END;
11541
 
11542
/*-------------------------------------------------------------------------------------------------------*/
11543
   PROCEDURE write_action_log (
11544
      nuserid   IN   NUMBER,
11545
      nrtagid   IN   release_tags.rtag_id%TYPE
11546
   )
11547
   IS
11548
   BEGIN
11549
      /* Write Into Archive_Action_Log Table */
11550
      INSERT INTO archive_action_log
11551
                  (user_id, date_time_stamp, rtag_id,
11552
                   description
11553
                  )
11554
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11555
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11556
                  );
11557
   END;
11558
/*-------------------------------------------------------------------------------------------------------*/
11559
END pk_archive;
11560
/
11561
 
11562
CREATE OR REPLACE PACKAGE BODY pk_rmapi_test
11563
IS
11564
/*
11565
------------------------------
11566
||  Last Modified:  Rupesh Solanki
11567
||  Modified Date:  11 September 2006
11568
||  Body Version:   2.0
11569
------------------------------
11570
*/
11571
 
11572
   /*-------------------------------------------------------------------------------------------------------*/
11573
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
11574
      RETURN typecur
11575
   IS
11576
      npvid     NUMBER  := 0;
11577
      RECORDS   typecur;
11578
   BEGIN
11579
      BEGIN
11580
         -- Get PV_ID --
11581
         SELECT pv.pv_id
11582
           INTO npvid
11583
           FROM PACKAGES pkg, package_versions pv
11584
          WHERE pv.pkg_id = pkg.pkg_id
11585
            AND pkg.pkg_name = pkgname
11586
            AND pv.pkg_version = pkgversion;
11587
      EXCEPTION
11588
         WHEN NO_DATA_FOUND
11589
         THEN
11590
            raise_application_error (-20000, 'Package Not Found!');
11591
            --WHEN OTHERS THEN
11592
                  -- Consider logging the error and then re-raise
11593
            RAISE;
11594
      END;
11595
 
11596
      -- Finally get package dependencies --
11597
      OPEN RECORDS FOR
11598
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
11599
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
11600
          WHERE dep.pv_id = npvid
11601
            AND dpv.pkg_id = dpkg.pkg_id
11602
            AND dpv.pv_id = dep.dpv_id;
11603
 
11604
      RETURN RECORDS;
11605
   END;
11606
 
11607
/*-------------------------------------------------------------------------------------------------------*/
11608
   FUNCTION wip_iteration_package (
11609
      projname        VARCHAR2,
11610
      iterationname   VARCHAR2,
11611
      pkgname         VARCHAR2
11612
   )
11613
      RETURN typecur
11614
   IS
11615
      nrtagid   NUMBER  := 0;
11616
      RECORDS   typecur;
11617
   BEGIN
11618
      BEGIN
11619
         -- Get latest rtag_id --
11620
         SELECT rt.rtag_id
11621
           INTO nrtagid
11622
           FROM projects proj, release_tags rt
11623
          WHERE rt.proj_id = proj.proj_id
11624
            AND UPPER (proj.proj_name) = UPPER (projname)
11625
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
11626
 
11627
         IF (nrtagid IS NULL)
11628
         THEN
11629
            raise_application_error (-20000,
11630
                                     'Work In Progress is Not Found!');
11631
         END IF;
11632
      EXCEPTION
11633
         WHEN NO_DATA_FOUND
11634
         THEN
11635
            raise_application_error (-20000,
11636
                                     'Work In Progress is Not Found!');
11637
            RAISE;
11638
      END;
11639
 
11640
      -- Finally get package dependencies --
11641
      OPEN RECORDS FOR
11642
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
11643
                pv.src_path
11644
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
11645
          WHERE pv.pkg_id = pkg.pkg_id
11646
            AND wip.pv_id = pv.pv_id
11647
            AND wip.rtag_id = nrtagid
11648
            AND pkg.pkg_name = pkgname;
11649
 
11650
      RETURN RECORDS;
11651
   END;
11652
 
11653
/*-------------------------------------------------------------------------------------------------------*/
11654
   FUNCTION auto_make_release (
11655
      rtagid                   IN   NUMBER,
11656
      pkgname                  IN   VARCHAR2,
11657
      vext                     IN   VARCHAR2,
11658
      newpkgversion            IN   VARCHAR2,
11659
      label                    IN   VARCHAR2,
11660
      dependenciesimportlist   IN   VARCHAR2,
11661
      isrippled                IN   NUMBER,
11662
      username                 IN   VARCHAR2
11663
   )
11664
      RETURN NUMBER
11665
   IS
11666
      pvid                            NUMBER                        := 0;
11667
      userid                          NUMBER;
11668
      dlocked                         VARCHAR2 (20)                 := NULL;
11669
      clonefrompvid                   NUMBER;
11670
      ssv_mm                          package_versions.v_mm%TYPE;
11671
      ssv_nmm                         package_versions.v_nmm%TYPE;
11672
      ssv_ext                         package_versions.v_ext%TYPE;
11673
      return_package_not_found        NUMBER                        := -1;
11674
      return_package_already_exists   NUMBER                        := -2;
11675
      return_not_approved             NUMBER                        := -3;
11676
   BEGIN
11677
      /*--------------- Business Rules Here -------------------*/
11678
      IF (rtagid IS NULL)
11679
      THEN
11680
         raise_application_error (-20000, 'RtagId must be supplied.');
11681
      END IF;
11682
 
11683
      IF (pkgname IS NULL)
11684
      THEN
11685
         raise_application_error (-20000, 'PkgName must be supplied.');
11686
      END IF;
11687
 
11688
      IF (newpkgversion IS NULL)
11689
      THEN
11690
         raise_application_error (-20000, 'PkgVersion must be supplied.');
11691
      END IF;
11692
 
11693
      IF (label IS NULL)
11694
      THEN
11695
         raise_application_error (-20000, 'Label must be supplied.');
11696
      END IF;
11697
 
11698
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
11699
      THEN
11700
         raise_application_error
11701
            (-20000,
11702
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
11703
            );
11704
      END IF;
11705
 
11706
      IF (username IS NULL)
11707
      THEN
11708
         raise_application_error (-20000, 'UserName must be supplied.');
11709
      END IF;
11710
 
11711
      -- Get user_id
11712
      BEGIN
11713
         SELECT usr.user_id
11714
           INTO userid
11715
           FROM users usr
11716
          WHERE UPPER (usr.user_name) = UPPER (username)
11717
            AND usr.is_disabled IS NULL;
11718
      EXCEPTION
11719
         WHEN NO_DATA_FOUND
11720
         THEN
11721
            raise_application_error (-20000,
11722
                                        'UserName '
11723
                                     || username
11724
                                     || ' is not valid or disabled.'
11725
                                    );
11726
      END;
11727
 
11728
/*-------------------------------------------------------*/
11729
 
11730
      -- Create package if necessary
11731
      IF isrippled = 1
11732
      THEN
11733
         /* Ripple Build */
11734
         BEGIN
11735
            -- Make sure that package does not exist
11736
            SELECT pv.pv_id
11737
              INTO pvid
11738
              FROM package_versions pv, PACKAGES pkg
11739
             WHERE pv.pkg_id = pkg.pkg_id
11740
               AND pkg.pkg_name = pkgname
11741
               AND pv.pkg_version = newpkgversion;
11742
         EXCEPTION
11743
            WHEN NO_DATA_FOUND
11744
            THEN
11745
               pvid := 0;
11746
         END;
11747
 
11748
         IF (pvid = 0)
11749
         THEN
11750
            -- Split current version in parts
11751
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11752
 
11753
            BEGIN
11754
               -- Find package to be replaced with thie ripple package
11755
               IF vext = ssv_ext
11756
               THEN
11757
                  SELECT pv.pv_id
11758
                    INTO clonefrompvid
11759
                    FROM PACKAGES pkg, package_versions pv,
11760
                         release_content rc
11761
                   WHERE rc.pv_id = pv.pv_id
11762
                     AND pv.pkg_id = pkg.pkg_id
11763
                     AND rc.rtag_id = rtagid
11764
                     AND pkg.pkg_name = pkgname
11765
                     AND pv.v_ext = ssv_ext;
11766
               ELSE
11767
                  SELECT pv.pv_id
11768
                    INTO clonefrompvid
11769
                    FROM PACKAGES pkg, package_versions pv,
11770
                         release_content rc
11771
                   WHERE rc.pv_id = pv.pv_id
11772
                     AND pv.pkg_id = pkg.pkg_id
11773
                     AND rc.rtag_id = rtagid
11774
                     AND pkg.pkg_name = pkgname
11775
                     AND pv.v_ext = vext;
11776
               END IF;
11777
            EXCEPTION
11778
               WHEN NO_DATA_FOUND
11779
               THEN
11780
                  raise_application_error
11781
                                        (-20000,
11782
                                            'Cannot get CloneFromPvId. VExt='
11783
                                         || vext
11784
                                         || ', RtagId='
11785
                                         || rtagid
11786
                                         || ', PkgName='
11787
                                         || pkgname
11788
                                         || ', SSV_EXT='
11789
                                         || ssv_ext
11790
                                        );
11791
            END;
11792
 
11793
            IF vext = ssv_ext
11794
            THEN
11795
               -- Create package
11796
               seed_package_names_versions (pkgname,
11797
                                            newpkgversion,
11798
                                            userid,
11799
                                            pvid,
11800
                                            clonefrompvid
11801
                                           );
11802
            ELSE
11803
               -- Create package
11804
               seed_package_names_versions2 (pkgname,
11805
                                             newpkgversion,
11806
                                             userid,
11807
                                             pvid,
11808
                                             clonefrompvid
11809
                                            );
11810
            END IF;
11811
 
11812
            -- Update Package reason for release
11813
            UPDATE package_versions pv
11814
               SET pv.comments = 'Rippled Build.',
11815
                   pv.build_type = 'Y'
11816
             WHERE pv.pv_id = pvid;
11817
         ELSE
11818
            -- Package already exists, hence cannot be used for ripple build
11819
            RETURN return_package_already_exists;
11820
         END IF;
11821
      ELSE
11822
         /* Auto build from Pending area */
11823
 
11824
         -- Find package in pending area
11825
         BEGIN
11826
            SELECT pv.pv_id, pv.dlocked
11827
              INTO pvid, dlocked
11828
              FROM planned pl, package_versions pv, PACKAGES pkg
11829
             WHERE pl.pv_id = pv.pv_id
11830
               AND pv.pkg_id = pkg.pkg_id
11831
               AND pl.rtag_id = rtagid
11832
               AND pkg.pkg_name = pkgname
11833
               AND pv.dlocked = 'A'
11834
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11835
                                                   NVL (vext, '|LINK_A_NULL|');
11836
         EXCEPTION
11837
            WHEN NO_DATA_FOUND
11838
            THEN
11839
               pvid := 0;
11840
         END;
11841
 
11842
         IF (pvid = 0)
11843
         THEN
11844
            -- Package does not exist in pending area, hence report it
11845
            RETURN return_package_not_found;
11846
         ELSIF (dlocked != 'A')
11847
         THEN
11848
            -- Package is not approved for autobuild
11849
            RETURN return_not_approved;
11850
         END IF;
11851
      END IF;
11852
 
11853
      BEGIN
11854
         -- Import Dependencies
11855
         import_dependencies (pvid, dependenciesimportlist, userid);
11856
      END;
11857
 
11858
      BEGIN
11859
         -- Split current version in parts
11860
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
11861
 
11862
         -- Update Package Details
11863
         UPDATE package_versions pv
11864
            SET pv.pkg_version = newpkgversion,
11865
                pv.v_ext = ssv_ext,
11866
                pv.v_mm = ssv_mm,
11867
                pv.v_nmm = ssv_nmm,
11868
                pv.pkg_label = label
11869
          WHERE pv.pv_id = pvid;
11870
      EXCEPTION
11871
         WHEN DUP_VAL_ON_INDEX
11872
         THEN
11873
            -- Package already exists, hence cannot be used for ripple build
11874
            RETURN return_package_already_exists;
11875
      END;
11876
 
11877
	  -- Update the is_autobuildable
11878
	  update package_versions 
11879
	  set is_autobuildable = 'Y'
11880
	  where pv_id = pvid;	  
11881
 
11882
      -- Now release package
11883
      pk_environment.auto_make_release (pvid,
11884
                                        rtagid,
11885
                                        userid,
11886
                                        vext,
11887
                                        ssv_ext,
11888
                                        clonefrompvid
11889
                                       );
11890
 
11891
 
11892
      RETURN pvid;
11893
   END;
11894
 
11895
/*-------------------------------------------------------------------------------------------------------*/
11896
   PROCEDURE import_dependencies (
11897
      pvid                     IN   NUMBER,
11898
      dependenciesimportlist   IN   VARCHAR2,
11899
      userid                   IN   NUMBER
11900
   )
11901
   IS
11902
/*
11903
|| DependenciesImportList Format:
11904
|| "pkgA","1.0.0";"pkgB","2.0.0";
11905
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11906
*/
11907
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11908
         INDEX BY VARCHAR2 (4000);
11909
 
11910
      seperator         VARCHAR2 (2)           := '||';
11911
      pkgname           VARCHAR2 (4000);
11912
      pkgversion        VARCHAR2 (4000);
11913
      buildtype         VARCHAR2 (50);
11914
      pkgid             NUMBER;
11915
      vext              VARCHAR2 (4000);
11916
      dpvid             NUMBER;
11917
      slist             VARCHAR2 (4000);
11918
      cbuildtypes       tdictionary;
11919
      dependencyrow     NUMBER;
11920
      sdependency       VARCHAR2 (4000);
11921
      first_pos         VARCHAR2 (4000);
11922
      second_pos        VARCHAR2 (4000);
11923
      third_pos         VARCHAR2 (4000);
11924
      forth_pos         VARCHAR2 (4000);
11925
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11926
 
11927
      CURSOR curbuildtype
11928
      IS
11929
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11930
                dep.build_type
11931
           FROM package_dependencies dep, package_versions dpv
11932
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11933
 
11934
      recbuildtype      curbuildtype%ROWTYPE;
11935
   BEGIN
11936
      slist := dependenciesimportlist;
11937
 
11938
      -- Preformat String
11939
      IF NOT slist IS NULL
11940
      THEN
11941
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11942
         slist := REPLACE (slist, UTL_TCP.crlf);
11943
                            -- Remove new line and carriage-return characters
11944
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
11945
      END IF;
11946
 
11947
      -- Get Current Dependencies
11948
      OPEN curbuildtype;
11949
 
11950
      FETCH curbuildtype
11951
       INTO recbuildtype;
11952
 
11953
      WHILE curbuildtype%FOUND
11954
      LOOP
11955
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
11956
 
11957
         FETCH curbuildtype
11958
          INTO recbuildtype;
11959
      END LOOP;
11960
 
11961
      CLOSE curbuildtype;
11962
 
11963
      -- Separate dependencies with ; separator
11964
      citemcollection := in_list_varchar2 (slist, ';');
11965
 
11966
      BEGIN
11967
         -- Remove old dependencies
11968
         DELETE FROM package_dependencies dep
11969
               WHERE dep.pv_id = pvid;
11970
 
11971
         -- Loop through dependencies
11972
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11973
         LOOP
11974
            -- Extract pkg_name and pkg_version
11975
            sdependency := citemcollection (dependencyrow);
11976
            first_pos := INSTR (sdependency, '"', 1, 1);
11977
            second_pos := INSTR (sdependency, '"', 1, 2);
11978
            third_pos := INSTR (sdependency, '"', 1, 3);
11979
            forth_pos := INSTR (sdependency, '"', 1, 4);
11980
            pkgname :=
11981
               SUBSTR (sdependency,
11982
                       (first_pos + 1),
11983
                       (second_pos - first_pos - 1)
11984
                      );
11985
            pkgversion :=
11986
               SUBSTR (sdependency,
11987
                       (third_pos + 1),
11988
                       (forth_pos - third_pos - 1)
11989
                      );
11990
 
11991
            -- Dependency must exits to be linked against
11992
            BEGIN
11993
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11994
                 INTO dpvid, pkgid, vext
11995
                 FROM package_versions pv, PACKAGES pkg
11996
                WHERE pv.pkg_id = pkg.pkg_id
11997
                  AND pkg.pkg_name = pkgname
11998
                  AND pv.pkg_version = pkgversion;
11999
            EXCEPTION
12000
               WHEN NO_DATA_FOUND
12001
               THEN
12002
                  raise_application_error
12003
                                  (-20000,
12004
                                      'Dependency ['
12005
                                   || pkgname
12006
                                   || ' '
12007
                                   || pkgversion
12008
                                   || '] does not exist yet and cannot be used!'
12009
                                  );
12010
            END;
12011
 
12012
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
12013
            BEGIN
12014
               buildtype := cbuildtypes (pkgid || seperator || vext);
12015
 
12016
               IF buildtype IS NULL
12017
               THEN
12018
                  -- Set build type to LinkPackageArchive by default
12019
                  buildtype := 'L';
12020
               END IF;
12021
            EXCEPTION
12022
               WHEN NO_DATA_FOUND
12023
               THEN
12024
                  buildtype := 'L';
12025
            END;
12026
 
12027
            -- Insert Dependencies
12028
            update_package_dependency (pvid,
12029
                                       pkgname,
12030
                                       pkgversion,
12031
                                       buildtype,
12032
                                       userid,
12033
 
12034
                                      );
12035
         END LOOP;
12036
      END;
12037
   END;
12038
 
12039
/*-------------------------------------------------------------------------------------------------------*/
12040
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
12041
      RETURN VARCHAR2
12042
   IS
12043
      pkgversion   VARCHAR2 (4000);
12044
   BEGIN
12045
      BEGIN
12046
         SELECT pv.pkg_version
12047
           INTO pkgversion
12048
           FROM PACKAGES pkg, release_content rc, package_versions pv
12049
          WHERE pv.pv_id = rc.pv_id
12050
            AND pkg.pkg_id = pv.pkg_id
12051
            AND pkg.pkg_name = pkgname
12052
            AND rc.rtag_id = rtagid;
12053
 
12054
         RETURN pkgversion;
12055
      END;
12056
   END;
12057
 
12058
/*-------------------------------------------------------------------------------------------------------*/
12059
PROCEDURE CQ_TEST IS
12060
 
12061
  INPUT NUMBER(8,2);
12062
  RESULT VARCHAR2(50);
12063
BEGIN
12064
  INPUT := 33558440;
12065
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
12066
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
12067
 
12068
 
12069
END;
12070
/*-------------------------------------------------------------------------------------------------------*/
12071
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
12072
 
12073
   projId NUMBER;
12074
   projIdDB NUMBER;
12075
   TOTAL NUMBER;
12076
   AUTO_TOTAL NUMBER;
12077
   rtagIdDB NUMBER;
12078
 
12079
   BEGIN
12080
   		SELECT count(*) INTO TOTAL 
12081
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12082
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
12083
 
12084
		SELECT count(*) INTO AUTO_TOTAL 
12085
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
12086
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
12087
		and rc.rtag_id = RtagId;
12088
 
12089
		BEGIN
12090
			SELECT RTAG_ID INTO rtagIdDB
12091
			FROM DASH_BOARD
12092
			WHERE RTAG_ID = RtagId;
12093
 
12094
			SELECT PROJ_ID INTO projIdDB
12095
			FROM DASH_BOARD
12096
			WHERE RTAG_ID = RtagId;
12097
            EXCEPTION
12098
               WHEN NO_DATA_FOUND
12099
			   THEN	rtagIdDB := '';
12100
 
12101
		END; 			
12102
 
12103
		IF rtagIdDB IS NULL THEN
12104
			SELECT PROJ_ID INTO projId
12105
			FROM RELEASE_TAGS
12106
			WHERE RTAG_ID = RtagId;
12107
 
12108
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
12109
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
12110
		ELSE
12111
			UPDATE DASH_BOARD
12112
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
12113
				AUTOMATED_PACKAGES = AUTO_TOTAL,
12114
				TOTAL_PACKAGES = TOTAL
12115
			WHERE PROJ_ID = projIdDB
12116
			AND RTAG_ID = rtagIdDB; 	
12117
		END IF;
12118
 
12119
 
12120
 
12121
 
12122
 
12123
 
12124
   END;
12125
 
12126
 
12127
/*-------------------------------------------------------------------------------------------------------*/   
12128
END pk_rmapi_test;
12129
/
12130
 
12131
CREATE OR REPLACE PACKAGE BODY PK_APP_UTILS IS
12132
 
12133
/*
12134
------------------------------
12135
||  Last Modified:  S.Vukovic
12136
||  Modified Date:  26/Apr/2005
12137
||  Body Version:   1.0
12138
------------------------------
12139
*/
12140
 
12141
 
12142
/*-------------------------------------------------------------------------------------------------------*/
12143
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
12144
 
12145
 
12146
BEGIN
12147
 
12148
 
12149
	IF (NOT RtagId IS NULL) THEN
12150
		-- Case with RTAG_ID present
12151
		OPEN records FOR
12152
		SELECT rt.PROJ_ID,
12153
			   rt.RTAG_ID AS RTAG_ID
12154
		  FROM RELEASE_TAGS rt
12155
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
12156
 
12157
	ELSIF (NOT ProjId IS NULL) THEN
12158
		-- Case with PROJ_ID present
12159
		OPEN records FOR
12160
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
12161
			   -1 AS RTAG_ID
12162
		  FROM DUAL;
12163
 
12164
	ELSE
12165
		-- Case with none present
12166
		OPEN records FOR
12167
		SELECT -1 AS PROJ_ID,
12168
			   -1 AS RTAG_ID
12169
		  FROM DUAL;
12170
 
12171
	END IF;
12172
 
12173
 
12174
 
12175
 
12176
   	--RETURN records;
12177
 
12178
END;
12179
/*-------------------------------------------------------------------------------------------------------*/
12180
END PK_APP_UTILS;
12181
/
12182
 
12183
CREATE OR REPLACE PACKAGE BODY PK_RELEASE_TEST IS
12184
 
12185
 
12186
/*
12187
------------------------------
12188
||  Last Modified:  S.Vukovic
12189
||  Modified Date:  12/Sep/2005
12190
||  Body Version:   3.0
12191
------------------------------
12192
*/
12193
 
12194
 
12195
/*-------------------------------------------------------------------------------------------------------*/
12196
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
12197
 
12198
RtagId NUMBER;
12199
ParentRtagId NUMBER;
12200
RecCount NUMBER := 0;
12201
 
12202
 
12203
BEGIN
12204
	/*--------------- Business Rules Here -------------------*/
12205
	-- Check for missing parameters
12206
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
12207
	THEN
12208
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
12209
 
12210
	END IF;
12211
 
12212
 
12213
	-- Check for duplicate Release Names
12214
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12215
	  FROM RELEASE_TAGS rt
12216
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12217
	   AND rt.PROJ_ID = nProjId;
12218
 
12219
	IF (RecCount > 0) THEN
12220
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12221
	END IF;
12222
	/*-------------------------------------------------------*/
12223
 
12224
 
12225
	-- Get rtag_id
12226
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
12227
 
12228
 
12229
 
12230
	-- Get Parent RtagId
12231
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
12232
 
12233
 
12234
	-- Create new release
12235
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
12236
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
12237
							   PARENT_RTAG_ID, PROJ_ID )
12238
	VALUES ( RtagId, 
12239
			 sReleaseName, 
12240
			 sReleaseComments,
12241
			 ORA_SYSDATE,
12242
			 nUserId,
12243
			 'N',
12244
			 'N',
12245
			 0,
12246
			 ParentRtagId,
12247
			 nProjId );
12248
 
12249
	-- Update display Order
12250
	UPDATE_DISPLAY_ORDER ( nProjId );
12251
 
12252
	/* Log Project Action */
12253
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
12254
 
12255
 
12256
	-- Import Release Contents
12257
	IF (NOT nSourceRtagId IS NULL) THEN
12258
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
12259
 
12260
	END IF;
12261
 
12262
 
12263
 
12264
END;
12265
/*-------------------------------------------------------------------------------------------------------*/
12266
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
12267
 
12268
 
12269
BEGIN
12270
 
12271
 
12272
	/*--------------- Business Rules Here -------------------*/
12273
	/*-------------------------------------------------------*/
12274
 
12275
	UPDATE RELEASE_TAGS urt SET
12276
	urt.DISPLAY_ORDER = (
12277
						SELECT qry.REC_NUM
12278
						  FROM (	
12279
								SELECT rel.*, ROWNUM AS REC_NUM
12280
								  FROM (
12281
 
12282
								  		SELECT rt.RTAG_ID, 
12283
											   rt.DISPLAY_ORDER,
12284
										       DECODE( rt.PARENT_RTAG_ID, 
12285
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
12286
										  FROM RELEASE_TAGS rt
12287
										 WHERE rt.PROJ_ID = nProjId 
12288
 
12289
								  		) rel
12290
								START WITH rel.PARENT_RTAG_ID = 0
12291
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
12292
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
12293
								) qry
12294
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
12295
						)
12296
	WHERE urt.PROJ_ID = nProjId;
12297
 
12298
END;
12299
/*-------------------------------------------------------------------------------------------------------*/
12300
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
12301
 
12302
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
12303
	SeqNum NUMBER;
12304
 
12305
BEGIN
12306
 
12307
 
12308
	/*--------------- Business Rules Here -------------------*/
12309
	/*-------------------------------------------------------*/
12310
 
12311
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
12312
 
12313
	-- Set start sequence number
12314
	SeqNum := 1;
12315
 
12316
	FOR i IN 1..nIdCollector.COUNT
12317
	LOOP
12318
 
12319
		-- Update new display order
12320
		UPDATE RELEASE_TAGS rt SET
12321
			rt.DISPLAY_ORDER = SeqNum
12322
		 WHERE rt.PROJ_ID = nProjId
12323
		   AND rt.RTAG_ID = nIdCollector(i);
12324
 
12325
		SeqNum := SeqNum + 1;
12326
 
12327
	END LOOP;
12328
 
12329
END;
12330
/*-------------------------------------------------------------------------------------------------------*/
12331
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
12332
 
12333
RecCount NUMBER := 0;
12334
ProjId NUMBER;
12335
 
12336
BEGIN
12337
 
12338
 
12339
	/*--------------- Business Rules Here -------------------*/
12340
	-- Check for missing parameters
12341
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
12342
	THEN
12343
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
12344
 
12345
	END IF;
12346
 
12347
 
12348
	-- Check for duplicate Release Names
12349
	SELECT rt.PROJ_ID INTO ProjId
12350
	  FROM RELEASE_TAGS rt
12351
	 WHERE rt.RTAG_ID = nRtagId;
12352
 
12353
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
12354
	  FROM RELEASE_TAGS rt
12355
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
12356
	   AND rt.RTAG_ID != nRtagId
12357
	   AND rt.PROJ_ID = ProjId;
12358
 
12359
 
12360
	IF (RecCount > 0) THEN
12361
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
12362
	END IF;
12363
	/*-------------------------------------------------------*/
12364
 
12365
 
12366
 
12367
	-- Update release details
12368
	UPDATE RELEASE_TAGS rt SET
12369
	rt.RTAG_NAME = sReleaseName,
12370
	rt.DESCRIPTION = sReleaseComments,
12371
	rt.PARENT_RTAG_ID = nParentRtagId,
12372
	rt.ASSOC_MASS_REF = nMASSRtagId,
12373
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
12374
	WHERE rt.RTAG_ID = nRtagId; 
12375
 
12376
	-- Update display Order
12377
	UPDATE_DISPLAY_ORDER ( ProjId );
12378
 
12379
	/* Log Project Action */
12380
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
12381
 
12382
 
12383
 
12384
 
12385
END;
12386
/*-------------------------------------------------------------------------------------------------------*/
12387
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12388
 
12389
	RecCount NUMBER := 0;
12390
	sReleaseId VARCHAR2(4000);
12391
	ProjId NUMBER;
12392
 
12393
BEGIN
12394
	/*--------------- Business Rules Here -------------------*/
12395
	IF (nRtagId IS NULL) 
12396
	THEN
12397
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12398
	END IF;
12399
 
12400
 
12401
 
12402
	-- Check for any kids
12403
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
12404
	  FROM RELEASE_TAGS rt
12405
	 WHERE rt.PARENT_RTAG_ID = nRtagId
12406
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
12407
 
12408
	IF (RecCount > 0) THEN
12409
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
12410
	END IF; 
12411
	/*-------------------------------------------------------*/
12412
 
12413
	-- Clear the release contents
12414
	Clean_Release_Contents ( nRtagId, nUserId );
12415
 
12416
	/* Log Project Action */
12417
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
12418
	  FROM RELEASE_TAGS rt
12419
	 WHERE rt.RTAG_ID = nRtagId;
12420
 
12421
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
12422
 
12423
 
12424
	-- Remove Release
12425
	DELETE 
12426
	  FROM RELEASE_TAGS rt
12427
	 WHERE rt.RTAG_ID = nRtagId;
12428
 
12429
 
12430
 
12431
END;
12432
/*-------------------------------------------------------------------------------------------------------*/
12433
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
12434
 
12435
	sSourceLocation VARCHAR2(4000);
12436
	sTargetLocation VARCHAR2(4000);
12437
	ProjId NUMBER;
12438
	cReleaseMode CHAR(1);
12439
 
12440
 
12441
BEGIN
12442
	/*--------------- Business Rules Here -------------------*/
12443
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
12444
	THEN
12445
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
12446
	END IF;
12447
 
12448
	IF (nSourceRtagId = nTargetRtagId) THEN
12449
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
12450
	END IF;
12451
 
12452
 
12453
	-- Check if Target release is in OPEN mode
12454
	SELECT rt.OFFICIAL  INTO  cReleaseMode
12455
	  FROM RELEASE_TAGS rt
12456
	 WHERE rt.RTAG_ID = nTargetRtagId;
12457
 
12458
	IF (cReleaseMode != 'N') THEN
12459
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
12460
	END IF;	 
12461
 
12462
	/*-------------------------------------------------------*/
12463
 
12464
	-- Clean target contents
12465
	Clean_Release_Contents ( nTargetRtagId, nUserId );
12466
 
12467
 
12468
	-- Import Released Area Contents
12469
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
12470
	SELECT nTargetRtagId AS RTAG_ID, 
12471
		   rc.PV_ID, 
12472
		   rc.BASE_VIEW_ID, 
12473
		   rc.INSERT_STAMP, 
12474
		   rc.INSERTOR_ID, 
12475
		   rc.PKG_STATE
12476
	  FROM RELEASE_CONTENT rc
12477
	 WHERE rc.RTAG_ID = nSourceRtagId;
12478
 
12479
 
12480
	-- Import Ignore Warning states
12481
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
12482
	SELECT nTargetRtagId AS RTAG_ID,
12483
	       igw.PV_ID,
12484
	       igw.DPV_ID
12485
	  FROM IGNORE_WARNINGS igw
12486
	 WHERE igw.rtag_id = nSourceRtagId;
12487
 
12488
 
12489
	/* Log Project Action */
12490
	-- Get Source Location
12491
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
12492
	  FROM RELEASE_TAGS rt,
12493
	  	   PROJECTS pr
12494
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12495
	   AND rt.RTAG_ID = nSourceRtagId;
12496
 
12497
	-- Get Target Location
12498
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
12499
	  FROM RELEASE_TAGS rt,
12500
	  	   PROJECTS pr
12501
	 WHERE rt.PROJ_ID = pr.PROJ_ID
12502
	   AND rt.RTAG_ID = nTargetRtagId;	   
12503
 
12504
	-- Get project id   
12505
	SELECT rt.PROJ_ID  INTO  ProjId
12506
	  FROM RELEASE_TAGS rt
12507
	 WHERE rt.RTAG_ID = nTargetRtagId;   
12508
 
12509
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
12510
 
12511
 
12512
END;
12513
/*-------------------------------------------------------------------------------------------------------*/
12514
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
12515
 
12516
	RecCount NUMBER;
12517
 
12518
BEGIN
12519
	/*--------------- Business Rules Here -------------------*/
12520
	IF (nRtagId IS NULL) 
12521
	THEN
12522
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
12523
	END IF;
12524
 
12525
 
12526
	-- Check if other release references this release
12527
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
12528
	  FROM RELEASE_LINKS rl
12529
	 WHERE rl.REF_RTAG_ID = nRtagId;
12530
 
12531
	IF (RecCount > 0) THEN
12532
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
12533
	END IF; 	
12534
	/*-------------------------------------------------------*/
12535
 
12536
	-- Delete Release links
12537
	DELETE 
12538
	  FROM RELEASE_LINKS rl
12539
	 WHERE rl.RTAG_ID = nRtagId;
12540
 
12541
	-- Delete ignore warning
12542
	DELETE 
12543
	  FROM IGNORE_WARNINGS iw
12544
	 WHERE iw.RTAG_ID = nRtagId;
12545
 
12546
 
12547
	-- Delete Build Order cached calculations	  
12548
	DELETE
12549
	  FROM BUILD_ORDER bo
12550
	 WHERE bo.RTAG_ID = nRtagId;
12551
 
12552
 
12553
	-- Delete Notification History
12554
	DELETE
12555
	  FROM NOTIFICATION_HISTORY nh
12556
	 WHERE nh.RTAG_ID = nRtagId;
12557
 
12558
 
12559
	-- Delete Released Area Contents
12560
	DELETE
12561
	  FROM RELEASE_CONTENT rc
12562
	 WHERE rc.RTAG_ID = nRtagId;
12563
 
12564
 
12565
	-- Delete Work In Progress Area Contents
12566
	DELETE
12567
	  FROM WORK_IN_PROGRESS wip
12568
	 WHERE wip.RTAG_ID = nRtagId;
12569
 
12570
 
12571
	-- Delete Pending Area Contents
12572
	DELETE 
12573
	  FROM PLANNED pl
12574
	 WHERE pl.RTAG_ID = nRtagId;
12575
 
12576
 
12577
END;
12578
/*-------------------------------------------------------------------------------------------------------*/
12579
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
12580
 
12581
	nSourceParentRtagId NUMBER;
12582
 
12583
BEGIN
12584
	/*--------------- Business Rules Here -------------------*/
12585
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
12586
	THEN
12587
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
12588
	END IF;
12589
	/*-------------------------------------------------------*/
12590
 
12591
 
12592
	IF ( nSourceRtagId IS NULL ) THEN
12593
		-- Create new on main branch
12594
		RETURN nRtagId;
12595
 
12596
	ELSE
12597
		-- Create from source rtag_id
12598
 
12599
		-- Find parent of Source RtagId
12600
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
12601
		  FROM RELEASE_TAGS rt
12602
		 WHERE rt.RTAG_ID = nSourceRtagId;
12603
 
12604
		IF (UPPER(cIsBranch) = 'Y') THEN
12605
			RETURN nSourceRtagId;
12606
		ELSE
12607
			IF (nSourceRtagId = nSourceParentRtagId) THEN
12608
				RETURN nRtagId;
12609
			ELSE
12610
				RETURN nSourceParentRtagId;
12611
			END IF;
12612
		END IF;	
12613
 
12614
 
12615
	END IF;
12616
 
12617
 
12618
END;
12619
/*-------------------------------------------------------------------------------------------------------*/
12620
 
12621
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
12622
-- 							 sNextVersion OUT VARCHAR2,
12623
-- 							 nNextLifeCycle OUT NUMBER,
12624
-- 							 nParentRtagId OUT NUMBER,
12625
-- 							 nProjId IN NUMBER ) IS
12626
-- 							
12627
-- SourceBranchCount NUMBER;
12628
-- ProjRootVersion VARCHAR2(4000);
12629
-- LastLifeCycle NUMBER;
12630
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
12631
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
12632
-- 
12633
-- SourceProjId NUMBER; 
12634
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
12635
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
12636
-- 
12637
-- BEGIN
12638
-- 	/*--------------- Business Rules Here -------------------*/
12639
-- 	/*-------------------------------------------------------*/
12640
-- 	
12641
-- 	   
12642
-- 	BEGIN
12643
-- 		-- Get Project root version
12644
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
12645
-- 		  FROM RELEASE_TAGS rt
12646
-- 		 WHERE rt.PROJ_ID = nProjId
12647
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
12648
-- 	   
12649
-- 		EXCEPTION
12650
-- 		WHEN NO_DATA_FOUND THEN
12651
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
12652
-- 	END;		   
12653
-- 	
12654
-- 	
12655
-- 	
12656
-- 	 
12657
-- 	BEGIN
12658
-- 		-- Get info for source rtagid
12659
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
12660
-- 		  FROM RELEASE_TAGS rt
12661
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
12662
-- 	   
12663
-- 		EXCEPTION
12664
-- 		WHEN NO_DATA_FOUND THEN
12665
-- 		SourceProjId := NULL;
12666
-- 		SourceVersion := NULL;
12667
-- 		SourceLifeCycle := NULL;
12668
-- 	END;	  
12669
-- 	
12670
-- 	
12671
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
12672
-- 	
12673
-- 		/* Blank Release Required  OR  Release imported from other project */
12674
-- 		
12675
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
12676
-- 			/* No Releases found in the project, hence calculate next version available.  */
12677
-- 			
12678
-- 			-- Set parent rtag
12679
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
12680
-- 			
12681
-- 			
12682
-- 			BEGIN
12683
-- 				-- Get Next Available Global Root Version 
12684
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
12685
-- 				  FROM RELEASE_TAGS rt
12686
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
12687
-- 				
12688
-- 				-- Set Next Rtag Version
12689
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
12690
-- 				
12691
-- 				-- Restart Lifecycle
12692
-- 				nNextLifeCycle := 0;
12693
-- 				
12694
-- 				
12695
-- 				EXCEPTION
12696
-- 				WHEN NO_DATA_FOUND THEN
12697
-- 				-- Release Manager has no releases, hence start from 1
12698
-- 				sNextVersion := '1';
12699
-- 				nNextLifeCycle := 0;
12700
-- 				
12701
-- 			END;
12702
-- 			
12703
-- 			
12704
-- 					
12705
-- 		ELSE
12706
-- 			/* Releases found in this project. */
12707
-- 							   
12708
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
12709
-- 			  FROM (
12710
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
12711
-- 					  FROM RELEASE_TAGS rt
12712
-- 					 WHERE rt.PROJ_ID = nProjId
12713
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
12714
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
12715
-- 			  		) qry
12716
-- 			 WHERE ROWNUM = 1;		
12717
-- 
12718
-- 			
12719
-- 			-- Set same Rtag Version
12720
-- 			sNextVersion := ProjRootVersion;
12721
-- 			
12722
-- 			-- Increase Lifecycle
12723
-- 			nNextLifeCycle := LastLifeCycle + 1;
12724
-- 		
12725
-- 		END IF;
12726
-- 				
12727
-- 	
12728
-- 		
12729
-- 	ELSE
12730
-- 		/* Create Release From other release within this project */
12731
-- 		
12732
-- 		-- Set parent id
12733
-- 		nParentRtagId := nSourceRtagId;
12734
-- 		
12735
-- 		
12736
-- 		-- Get number of source branches
12737
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
12738
-- 		  FROM RELEASE_TAGS rt
12739
-- 		 WHERE rt.PROJ_ID = nProjId
12740
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
12741
-- 		   
12742
-- 		   
12743
-- 		IF SourceBranchCount = 0 THEN
12744
-- 			/* Release is Head (i.e. Tip on its branch ) */
12745
-- 			
12746
-- 			-- Set Next Rtag Version
12747
-- 			sNextVersion := SourceVersion;
12748
-- 			
12749
-- 			-- Increase Lifecycle
12750
-- 			nNextLifeCycle := SourceLifeCycle + 1;
12751
-- 			
12752
-- 			
12753
-- 		ELSIF SourceBranchCount = 1 THEN
12754
-- 			/* Release IS NOT Head, but can be branched */
12755
-- 			
12756
-- 			-- Set Next Rtag Version
12757
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
12758
-- 			
12759
-- 			-- Reset Lifecycle to 1
12760
-- 			nNextLifeCycle := 1;
12761
-- 			
12762
-- 			
12763
-- 		ELSE	
12764
-- 			-- Limit of two branches is reached
12765
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
12766
-- 			
12767
-- 		END IF;	
12768
-- 			
12769
-- 			
12770
-- 		
12771
-- 		
12772
-- 		
12773
-- 	
12774
-- 	END IF;
12775
-- 	
12776
-- 		
12777
-- END;
12778
 
12779
/*-------------------------------------------------------------------------------------------------------*/
12780
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12781
 
12782
	IsBaseView CHAR(1);
12783
 
12784
BEGIN
12785
 
12786
	-- Check if the view is BASE VIEW
12787
	SELECT vi.BASE_VIEW INTO IsBaseView
12788
	  FROM VIEWS vi
12789
	 WHERE vi.VIEW_ID = ViewId;
12790
 
12791
	IF (IsBaseView = 'Y') THEN 
12792
		-- Get Base view content
12793
		OPEN RecordSet FOR
12794
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12795
			   pv.pv_id, 
12796
			   pkg.pkg_name, 
12797
			   pv.pkg_version, 
12798
			   pv.dlocked, 
12799
			   pv.pv_description,
12800
			   pv.BUILD_TYPE
12801
		  FROM release_content rel,
12802
		       packages pkg,
12803
		       package_versions pv
12804
		 WHERE pv.pkg_id = pkg.pkg_id
12805
		   AND rel.pv_id = pv.pv_id
12806
		   AND rel.BASE_VIEW_ID = ViewId
12807
		   AND rel.RTAG_ID = RtagId
12808
		 ORDER BY UPPER(pkg.PKG_NAME);
12809
 
12810
	ELSE	 
12811
 
12812
	 	-- Get non base view content
12813
		OPEN RecordSet FOR
12814
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
12815
			   pv.pv_id, 
12816
			   pkg.pkg_name, 
12817
			   pv.pkg_version, 
12818
			   pv.dlocked, 
12819
			   pv.pv_description,
12820
			   pv.BUILD_TYPE
12821
		  FROM release_content rel,
12822
		       packages pkg,
12823
		       package_versions pv,
12824
			   VIEW_DEF vd
12825
		 WHERE pv.pkg_id = pkg.pkg_id
12826
		   AND rel.pv_id = pv.pv_id
12827
		   AND vd.VIEW_ID = ViewId
12828
		   AND vd.PKG_ID = pv.PKG_ID
12829
		   AND rel.RTAG_ID = RtagId
12830
		 ORDER BY UPPER(pkg.PKG_NAME);		 
12831
 
12832
	END IF;	 	 
12833
 
12834
 
12835
 
12836
 
12837
END;
12838
/*-------------------------------------------------------------------------------------------------------*/
12839
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12840
 
12841
	ReleaseLocation VARCHAR2(4000);
12842
	sPkgVersion VARCHAR2(4000);
12843
	nPkgId NUMBER;
12844
	sVExt VARCHAR2(4000);
12845
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
12846
 
12847
	-- Find package for replacement
12848
	CURSOR curReplacePkg IS
12849
    SELECT pv.PV_ID
12850
	  FROM RELEASE_CONTENT rc,
12851
	  	   PACKAGE_VERSIONS pv
12852
	 WHERE rc.PV_ID = pv.PV_ID
12853
	   AND rc.RTAG_ID = RtagId
12854
	   AND pv.PKG_ID = nPkgId
12855
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
12856
    recReplacePkg curReplacePkg%ROWTYPE;
12857
 
12858
BEGIN
12859
 
12860
	-- Get is_patch, pkg_id and v_ext
12861
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
12862
	  FROM PACKAGE_VERSIONS pv
12863
	 WHERE pv.PV_ID = newPvId;
12864
 
12865
 
12866
	-- Never put patch in relesed area
12867
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
12868
 
12869
		-- Try to get a package to be replaced with this new one.
12870
		-- Use unique constraint of PKG_ID and V_EXT
12871
		OPEN curReplacePkg;
12872
	    FETCH curReplacePkg INTO recReplacePkg;
12873
 
12874
	    IF curReplacePkg%FOUND THEN
12875
			-- Replace package
12876
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
12877
 
12878
		ELSE
12879
			-- Add new package
12880
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
12881
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
12882
 
12883
 
12884
		    /* LOG ACTION */
12885
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12886
			  FROM PROJECTS proj,
12887
			  	   RELEASE_TAGS rt
12888
			 WHERE rt.PROJ_ID = proj.PROJ_ID
12889
			   AND rt.RTAG_ID = RtagId;
12890
 
12891
			SELECT pv.PKG_VERSION INTO sPkgVersion
12892
			  FROM PACKAGE_VERSIONS pv
12893
			 WHERE pv.PV_ID = newPvId;
12894
 
12895
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12896
 
12897
 
12898
		END IF;
12899
 
12900
		CLOSE curReplacePkg;
12901
 
12902
	END IF;
12903
 
12904
END;
12905
/*-------------------------------------------------------------------------------------------------------*/
12906
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12907
 
12908
	ReleaseLocation VARCHAR2(4000);
12909
	sPkgVersion VARCHAR2(4000);
12910
 
12911
BEGIN
12912
 
12913
	-- Replace Package
12914
    UPDATE RELEASE_CONTENT
12915
       SET pv_id = newPvId,
12916
           insert_stamp = Ora_Sysdate,
12917
           insertor_id = UserId
12918
     WHERE rtag_id = RtagId
12919
       AND pv_id = oldPvId;
12920
 
12921
 
12922
    /* LOG ACTION */
12923
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12924
	  FROM PROJECTS proj,
12925
	  	   RELEASE_TAGS rt
12926
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12927
	   AND rt.RTAG_ID = RtagId;
12928
 
12929
	SELECT pv.PKG_VERSION INTO sPkgVersion
12930
	  FROM PACKAGE_VERSIONS pv
12931
	 WHERE pv.PV_ID = newPvId;
12932
 
12933
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
12934
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
12935
 
12936
END;
12937
/*-------------------------------------------------------------------------------------------------------*/
12938
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12939
	ReleaseLocation VARCHAR2(4000);
12940
 
12941
BEGIN
12942
 
12943
 
12944
	-- Delete old package
12945
	DELETE
12946
	  FROM RELEASE_CONTENT rc
12947
	 WHERE rc.PV_ID = PvId
12948
	   AND rc.RTAG_ID = RtagId;
12949
 
12950
 
12951
	/* LOG ACTION */
12952
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12953
	  FROM PROJECTS proj,
12954
	       RELEASE_TAGS rt
12955
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12956
	   AND rt.RTAG_ID = RtagId;
12957
 
12958
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12959
 
12960
 
12961
END;
12962
/*-------------------------------------------------------------------------------------------------------*/
12963
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
12964
	ReleaseLocation VARCHAR2(4000);
12965
 
12966
	CURSOR curMatchingPackage IS
12967
    SELECT mpv.PV_ID
12968
	  FROM RELEASE_CONTENT rc,
12969
	  	   PACKAGE_VERSIONS mpv,
12970
		   PACKAGE_VERSIONS pv
12971
	 WHERE rc.PV_ID = mpv.PV_ID
12972
	   AND rc.RTAG_ID = RtagId
12973
	   AND pv.PV_ID = PvId
12974
	   AND pv.PKG_ID = mpv.PKG_ID
12975
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
12976
    recMatchingPackage curMatchingPackage%ROWTYPE;
12977
 
12978
BEGIN
12979
 
12980
	OPEN curMatchingPackage;
12981
    FETCH curMatchingPackage INTO recMatchingPackage;
12982
 
12983
    IF curMatchingPackage%FOUND THEN
12984
		-- Delete old package
12985
		DELETE
12986
		  FROM RELEASE_CONTENT rc
12987
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
12988
		   AND rc.RTAG_ID = RtagId;
12989
 
12990
 
12991
		/* LOG ACTION */
12992
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12993
		  FROM PROJECTS proj,
12994
		  	   RELEASE_TAGS rt
12995
		 WHERE rt.PROJ_ID = proj.PROJ_ID
12996
		   AND rt.RTAG_ID = RtagId;
12997
 
12998
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
12999
 
13000
	END IF;
13001
 
13002
 
13003
	CLOSE curMatchingPackage;
13004
 
13005
 
13006
 
13007
 
13008
END;
13009
/*-------------------------------------------------------------------------------------------------------*/
13010
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
13011
 
13012
	ReturnValue NUMBER;
13013
 
13014
BEGIN
13015
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
13016
	  FROM RELEASE_CONTENT rc
13017
	 WHERE rc.RTAG_ID = RtagId
13018
	   AND rc.PV_ID = PvId;
13019
 
13020
	RETURN ReturnValue;
13021
END;
13022
/*-------------------------------------------------------------------------------------------------------*/
13023
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
13024
 
13025
BEGIN
13026
	-- Reset Ignore warnings up-the-tree
13027
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
13028
 
13029
	-- Refresh Package states
13030
	TOUCH_RELEASE ( RtagId );
13031
 
13032
END;
13033
/*-------------------------------------------------------------------------------------------------------*/
13034
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
13035
	CURSOR curReleases IS
13036
    SELECT rc.RTAG_ID
13037
	  FROM RELEASE_CONTENT rc
13038
	 WHERE rc.PV_ID = PvId;
13039
    recReleases curReleases%ROWTYPE;
13040
 
13041
BEGIN
13042
 
13043
	OPEN curReleases;
13044
    FETCH curReleases INTO recReleases;
13045
 
13046
	WHILE curReleases%FOUND
13047
	LOOP
13048
 
13049
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
13050
 
13051
		FETCH curReleases INTO recReleases;
13052
	END LOOP;
13053
 
13054
	CLOSE curReleases;	
13055
 
13056
END;
13057
/*-------------------------------------------------------------------------------------------------------*/
13058
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
13059
 
13060
BEGIN
13061
 
13062
	UPDATE RELEASE_CONTENT rc SET
13063
	rc.BASE_VIEW_ID = NewViewId
13064
	WHERE rc.PV_ID = PvId
13065
	  AND rc.RTAG_ID = RtagId;
13066
 
13067
END;
13068
/*-------------------------------------------------------------------------------------------------------*/
13069
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
13070
 
13071
	RowCount NUMBER;
13072
 
13073
 
13074
	CURSOR curPackageClash IS
13075
	SELECT pkg.PKG_NAME,
13076
		   er.*
13077
	  FROM (
13078
 
13079
	  		/* Get existing referenced packages */
13080
			SELECT pv.PKG_ID,
13081
			       pv.V_EXT
13082
			  FROM RELEASE_LINKS rl,
13083
			  	   RELEASE_CONTENT rc,
13084
			  	   PACKAGE_VERSIONS pv
13085
			 WHERE rl.RTAG_ID = nRtagId
13086
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
13087
			   AND rc.PV_ID = pv.PV_ID
13088
 
13089
	  	    ) er,
13090
			(
13091
 
13092
			/* Get current reference packages */
13093
			SELECT pv.PKG_ID,
13094
			       pv.V_EXT
13095
			  FROM RELEASE_CONTENT rc,
13096
			  	   PACKAGE_VERSIONS pv
13097
			 WHERE rc.RTAG_ID = nRefRtagId
13098
			   AND rc.PV_ID = pv.PV_ID    
13099
 
13100
			) cr,
13101
			PACKAGES PKG
13102
	 WHERE er.PKG_ID = cr.PKG_ID
13103
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13104
	   AND er.PKG_ID = pkg.PKG_ID;
13105
 
13106
	recPackageClash curPackageClash%ROWTYPE;	   
13107
 
13108
BEGIN
13109
	/*--------------- Business Rules Here -------------------*/
13110
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13111
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13112
	END IF;
13113
 
13114
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13115
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13116
	END IF;
13117
	/*-------------------------------------------------------*/
13118
	ProblemString := NULL;
13119
 
13120
 
13121
	-- Check if release already has references
13122
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
13123
	  FROM RELEASE_LINKS rl
13124
	 WHERE rl.RTAG_ID = nRtagId;	
13125
 
13126
 
13127
	IF RowCount > 0 THEN
13128
		-- Found existing references
13129
 
13130
		-- Make sure there is no package clashes
13131
		OPEN curPackageClash;
13132
	    FETCH curPackageClash INTO recPackageClash;
13133
 
13134
		IF curPackageClash%FOUND THEN
13135
 
13136
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
13137
 
13138
			WHILE curPackageClash%FOUND
13139
			LOOP
13140
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
13141
 
13142
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
13143
 
13144
				FETCH curPackageClash INTO recPackageClash;
13145
			END LOOP;
13146
 
13147
		END IF;
13148
 
13149
		CLOSE curPackageClash;
13150
 
13151
 
13152
	ELSE
13153
		-- No references found, hence reference a release
13154
 
13155
 
13156
		-- Remove exising package from this release to be referenced
13157
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
13158
 
13159
 
13160
		-- Add new linked packages to release
13161
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13162
		SELECT nRtagId,
13163
			   rc.PV_ID,
13164
			   rc.BASE_VIEW_ID, 
13165
			   rc.INSERT_STAMP, 
13166
			   rc.INSERTOR_ID, 
13167
			   rc.PKG_STATE
13168
		  FROM RELEASE_CONTENT rc
13169
		 WHERE rc.RTAG_ID = nRefRtagId;
13170
 
13171
 
13172
 
13173
		-- Copy ignore warnings for referenced packages
13174
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
13175
		SELECT nRtagId, 
13176
			   iw.PV_ID, 
13177
			   iw.DPV_ID, 
13178
			   iw.IS_PATCH_IGNORE
13179
		  FROM IGNORE_WARNINGS iw,
13180
		  	   RELEASE_CONTENT rc
13181
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
13182
		   AND iw.PV_ID = rc.PV_ID
13183
		   AND rc.RTAG_ID = nRefRtagId;	 
13184
 
13185
 
13186
 
13187
		-- Reference release 
13188
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
13189
		VALUES ( nRtagId, nRefRtagId );		 
13190
 
13191
 
13192
		-- Refresh Package states
13193
		TOUCH_RELEASE ( nRtagId );
13194
 
13195
	END IF;	 
13196
 
13197
 
13198
END;
13199
/*-------------------------------------------------------------------------------------------------------*/
13200
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
13201
 
13202
 
13203
BEGIN
13204
	/*--------------- Business Rules Here -------------------*/
13205
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
13206
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
13207
	END IF;
13208
 
13209
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
13210
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
13211
	END IF;
13212
 
13213
	/*-------------------------------------------------------*/
13214
 
13215
 
13216
	-- Remove ignore warnings for those packages who use referenced packages
13217
	DELETE FROM IGNORE_WARNINGS iw
13218
	 WHERE iw.RTAG_ID = nRtagId
13219
	   AND iw.DPV_ID IN (
13220
	   						SELECT dep.DPV_ID
13221
							  FROM (
13222
 
13223
									/* Get referenced packages */
13224
									SELECT pv.PKG_ID,
13225
									       pv.V_EXT
13226
									  FROM RELEASE_CONTENT rc,
13227
									  	   PACKAGE_VERSIONS pv
13228
									 WHERE rc.RTAG_ID = nRefRtagId
13229
									   AND rc.PV_ID = pv.PV_ID    
13230
 
13231
									) cr,
13232
									(
13233
 
13234
									/* Get all dependencies for current release */
13235
									SELECT DISTINCT 
13236
										   pv.PKG_ID,
13237
										   pv.V_EXT,
13238
										   dep.DPV_ID
13239
									  FROM RELEASE_CONTENT rc,
13240
										   PACKAGE_DEPENDENCIES dep,
13241
										   PACKAGE_VERSIONS pv
13242
									 WHERE rc.RTAG_ID = nRtagId
13243
									   AND rc.PV_ID = dep.PV_ID		
13244
									   AND dep.PV_ID = pv.PV_ID	   
13245
 
13246
									) dep
13247
							 WHERE dep.PKG_ID = cr.PKG_ID
13248
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13249
	   					);  
13250
 
13251
 
13252
 
13253
 
13254
	-- Remove ignore warnings for those package which are going to be replaced with the reference
13255
	DELETE FROM IGNORE_WARNINGS iw
13256
	 WHERE iw.RTAG_ID = nRtagId
13257
	   AND iw.PV_ID IN (
13258
						SELECT pv.PV_ID
13259
						  FROM (
13260
 
13261
								/* Get referenced packages */
13262
								SELECT pv.PKG_ID,
13263
								       pv.V_EXT
13264
								  FROM RELEASE_CONTENT rc,
13265
								  	   PACKAGE_VERSIONS pv
13266
								 WHERE rc.RTAG_ID = nRefRtagId
13267
								   AND rc.PV_ID = pv.PV_ID    
13268
 
13269
								) cr,
13270
								RELEASE_CONTENT rc,
13271
								PACKAGE_VERSIONS pv
13272
						 WHERE pv.PKG_ID = cr.PKG_ID
13273
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13274
						   AND rc.RTAG_ID = nRtagId
13275
						   AND rc.PV_ID = pv.PV_ID
13276
						);			
13277
 
13278
 
13279
 
13280
 
13281
 
13282
	-- Remove matching packages from release
13283
	DELETE FROM RELEASE_CONTENT rc
13284
	 WHERE rc.RTAG_ID = nRtagId
13285
	   AND rc.PV_ID IN (
13286
						SELECT pv.PV_ID
13287
						  FROM (
13288
 
13289
								/* Get referenced packages */
13290
								SELECT pv.PKG_ID,
13291
								       pv.V_EXT
13292
								  FROM RELEASE_CONTENT rc,
13293
								  	   PACKAGE_VERSIONS pv
13294
								 WHERE rc.RTAG_ID = nRefRtagId
13295
								   AND rc.PV_ID = pv.PV_ID    
13296
 
13297
								) cr,
13298
								RELEASE_CONTENT rc,
13299
								PACKAGE_VERSIONS pv
13300
						 WHERE pv.PKG_ID = cr.PKG_ID
13301
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
13302
						   AND rc.RTAG_ID = nRtagId
13303
						   AND rc.PV_ID = pv.PV_ID
13304
						);	
13305
 
13306
 
13307
 
13308
 
13309
 
13310
	-- Remove Reference release 
13311
	DELETE 
13312
	  FROM RELEASE_LINKS rl
13313
	 WHERE rl.RTAG_ID = nRtagId
13314
	   AND rl.REF_RTAG_ID = nRefRtagId;
13315
 
13316
 
13317
	-- Refresh Package states
13318
	TOUCH_RELEASE ( nRtagId );
13319
 
13320
 
13321
END;
13322
/*-------------------------------------------------------------------------------------------------------*/
13323
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
13324
 
13325
	cReleaseMode CHAR(1);
13326
	cPvMode CHAR(1);
13327
 
13328
BEGIN
13329
 
13330
	-- Get Release Mode
13331
	SELECT rt.OFFICIAL INTO cReleaseMode
13332
	  FROM RELEASE_TAGS rt
13333
	 WHERE rt.RTAG_ID = RtagId;
13334
 
13335
 
13336
	-- Get Package Mode
13337
	SELECT pv.DLOCKED INTO cPvMode
13338
	  FROM PACKAGE_VERSIONS pv
13339
	 WHERE pv.PV_ID = PvId;	 
13340
 
13341
	-- Only check if package is locked 
13342
	IF (cPvMode = 'Y') THEN
13343
 
13344
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
13345
		THEN
13346
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
13347
 
13348
		END IF;
13349
 
13350
	END IF;	
13351
 
13352
 
13353
END;
13354
/*-------------------------------------------------------------------------------------------------------*/
13355
END PK_RELEASE_TEST;
13356
/
13357
 
13358
CREATE OR REPLACE PACKAGE BODY PK_RELEASE IS
13359
 
13360
 
13361
/*
13362
------------------------------
13363
||  Last Modified:  S.Vukovic
13364
||  Modified Date:  12/Sep/2005
13365
||  Body Version:   3.0
13366
------------------------------
13367
*/
13368
 
13369
 
13370
/*-------------------------------------------------------------------------------------------------------*/
13371
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
13372
 
13373
RtagId NUMBER;
13374
ParentRtagId NUMBER;
13375
RecCount NUMBER := 0;
13376
VtreeId NUMBER;
13377
 
13378
 
13379
BEGIN
13380
	/*--------------- Business Rules Here -------------------*/
13381
	-- Check for missing parameters
13382
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
13383
	THEN
13384
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
13385
 
13386
	END IF;
13387
 
13388
 
13389
	-- Check for duplicate Release Names
13390
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13391
	  FROM RELEASE_TAGS rt
13392
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13393
	   AND rt.PROJ_ID = nProjId;
13394
 
13395
	IF (RecCount > 0) THEN
13396
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13397
	END IF;
13398
	/*-------------------------------------------------------*/
13399
 
13400
 
13401
	-- Get rtag_id
13402
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
13403
 
13404
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
13405
 
13406
 
13407
 
13408
	-- Get Parent RtagId
13409
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
13410
 
13411
 
13412
	-- Create new release
13413
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
13414
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
13415
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
13416
	VALUES ( RtagId, 
13417
			 sReleaseName, 
13418
			 sReleaseComments,
13419
			 ORA_SYSDATE,
13420
			 nUserId,
13421
			 'N',
13422
			 'N',
13423
			 0,
13424
			 ParentRtagId,
13425
			 nProjId,
13426
			 VtreeId );
13427
 
13428
	-- Update display Order
13429
	UPDATE_DISPLAY_ORDER ( nProjId );
13430
 
13431
	/* Log Project Action */
13432
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
13433
 
13434
 
13435
	-- Import Release Contents
13436
	IF (NOT nSourceRtagId IS NULL) THEN
13437
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
13438
 
13439
	END IF;
13440
 
13441
 
13442
 
13443
END;
13444
/*-------------------------------------------------------------------------------------------------------*/
13445
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
13446
 
13447
 
13448
BEGIN
13449
 
13450
 
13451
	/*--------------- Business Rules Here -------------------*/
13452
	/*-------------------------------------------------------*/
13453
 
13454
	UPDATE RELEASE_TAGS urt SET
13455
	urt.DISPLAY_ORDER = (
13456
						SELECT qry.REC_NUM
13457
						  FROM (	
13458
								SELECT rel.*, ROWNUM AS REC_NUM
13459
								  FROM (
13460
 
13461
								  		SELECT rt.RTAG_ID, 
13462
											   rt.DISPLAY_ORDER,
13463
										       DECODE( rt.PARENT_RTAG_ID, 
13464
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
13465
										  FROM RELEASE_TAGS rt
13466
										 WHERE rt.PROJ_ID = nProjId 
13467
 
13468
								  		) rel
13469
								START WITH rel.PARENT_RTAG_ID = 0
13470
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
13471
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
13472
								) qry
13473
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
13474
						)
13475
	WHERE urt.PROJ_ID = nProjId;
13476
 
13477
END;
13478
/*-------------------------------------------------------------------------------------------------------*/
13479
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
13480
 
13481
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
13482
	SeqNum NUMBER;
13483
 
13484
BEGIN
13485
 
13486
 
13487
	/*--------------- Business Rules Here -------------------*/
13488
	/*-------------------------------------------------------*/
13489
 
13490
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
13491
 
13492
	-- Set start sequence number
13493
	SeqNum := 1;
13494
 
13495
	FOR i IN 1..nIdCollector.COUNT
13496
	LOOP
13497
 
13498
		-- Update new display order
13499
		UPDATE RELEASE_TAGS rt SET
13500
			rt.DISPLAY_ORDER = SeqNum
13501
		 WHERE rt.PROJ_ID = nProjId
13502
		   AND rt.RTAG_ID = nIdCollector(i);
13503
 
13504
		SeqNum := SeqNum + 1;
13505
 
13506
	END LOOP;
13507
 
13508
END;
13509
/*-------------------------------------------------------------------------------------------------------*/
13510
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
13511
 
13512
RecCount NUMBER := 0;
13513
ProjId NUMBER;
13514
 
13515
BEGIN
13516
 
13517
 
13518
	/*--------------- Business Rules Here -------------------*/
13519
	-- Check for missing parameters
13520
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
13521
	THEN
13522
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
13523
 
13524
	END IF;
13525
 
13526
 
13527
	-- Check for duplicate Release Names
13528
	SELECT rt.PROJ_ID INTO ProjId
13529
	  FROM RELEASE_TAGS rt
13530
	 WHERE rt.RTAG_ID = nRtagId;
13531
 
13532
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
13533
	  FROM RELEASE_TAGS rt
13534
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
13535
	   AND rt.RTAG_ID != nRtagId
13536
	   AND rt.PROJ_ID = ProjId;
13537
 
13538
 
13539
	IF (RecCount > 0) THEN
13540
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
13541
	END IF;
13542
	/*-------------------------------------------------------*/
13543
 
13544
 
13545
 
13546
	-- Update release details
13547
	UPDATE RELEASE_TAGS rt SET
13548
	rt.RTAG_NAME = sReleaseName,
13549
	rt.DESCRIPTION = sReleaseComments,
13550
	rt.PARENT_RTAG_ID = nParentRtagId,
13551
	rt.ASSOC_MASS_REF = nMASSRtagId,
13552
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
13553
	rt.OWNER_EMAIL = sOwnerEmail,
13554
	rt.PRODUCT_STATE_USED = cState
13555
	WHERE rt.RTAG_ID = nRtagId; 
13556
 
13557
	-- Update display Order
13558
	UPDATE_DISPLAY_ORDER ( ProjId );
13559
 
13560
	/* Log Project Action */
13561
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
13562
 
13563
 
13564
 
13565
 
13566
END;
13567
/*-------------------------------------------------------------------------------------------------------*/
13568
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13569
 
13570
	RecCount NUMBER := 0;
13571
	sReleaseId VARCHAR2(4000);
13572
	ProjId NUMBER;
13573
 
13574
BEGIN
13575
	/*--------------- Business Rules Here -------------------*/
13576
	IF (nRtagId IS NULL) 
13577
	THEN
13578
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13579
	END IF;
13580
 
13581
 
13582
 
13583
	-- Check for any kids
13584
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
13585
	  FROM RELEASE_TAGS rt
13586
	 WHERE rt.PARENT_RTAG_ID = nRtagId
13587
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
13588
 
13589
	IF (RecCount > 0) THEN
13590
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
13591
	END IF; 
13592
	/*-------------------------------------------------------*/
13593
 
13594
	-- Clear the release contents
13595
	Clean_Release_Contents ( nRtagId, nUserId );
13596
 
13597
	/* Log Project Action */
13598
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
13599
	  FROM RELEASE_TAGS rt
13600
	 WHERE rt.RTAG_ID = nRtagId;
13601
 
13602
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
13603
 
13604
 
13605
	-- Remove Release
13606
	DELETE 
13607
	  FROM RELEASE_TAGS rt
13608
	 WHERE rt.RTAG_ID = nRtagId;
13609
 
13610
 
13611
 
13612
END;
13613
/*-------------------------------------------------------------------------------------------------------*/
13614
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
13615
 
13616
	sSourceLocation VARCHAR2(4000);
13617
	sTargetLocation VARCHAR2(4000);
13618
	ProjId NUMBER;
13619
	cReleaseMode CHAR(1);
13620
	RconId NUMBER;
13621
 
13622
 
13623
	CURSOR curReleaseConfigs IS
13624
    SELECT *
13625
	  FROM RELEASE_CONFIG rc
13626
	 WHERE rc.RTAG_ID = nSourceRtagId;
13627
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
13628
 
13629
 
13630
BEGIN
13631
	/*--------------- Business Rules Here -------------------*/
13632
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
13633
	THEN
13634
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
13635
	END IF;
13636
 
13637
	IF (nSourceRtagId = nTargetRtagId) THEN
13638
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
13639
	END IF;
13640
 
13641
 
13642
	-- Check if Target release is in OPEN mode
13643
	SELECT rt.OFFICIAL  INTO  cReleaseMode
13644
	  FROM RELEASE_TAGS rt
13645
	 WHERE rt.RTAG_ID = nTargetRtagId;
13646
 
13647
	IF (cReleaseMode != 'N') THEN
13648
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
13649
	END IF;	 
13650
 
13651
	/*-------------------------------------------------------*/
13652
 
13653
	-- Clean target contents
13654
	Clean_Release_Contents ( nTargetRtagId, nUserId );
13655
 
13656
 
13657
	-- Import Released Area Contents
13658
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
13659
	SELECT nTargetRtagId AS RTAG_ID, 
13660
		   rc.PV_ID, 
13661
		   rc.BASE_VIEW_ID, 
13662
		   rc.INSERT_STAMP, 
13663
		   rc.INSERTOR_ID, 
13664
		   rc.PKG_STATE,
13665
		   rc.PKG_ID,
13666
		   rc.DEPRECATED_STATE
13667
	  FROM RELEASE_CONTENT rc
13668
	 WHERE rc.RTAG_ID = nSourceRtagId;
13669
 
13670
 
13671
	--Import Release Configuration Information
13672
	OPEN curReleaseConfigs;
13673
    FETCH curReleaseConfigs INTO recReleaseConfigs;
13674
 
13675
	WHILE curReleaseConfigs%FOUND
13676
	LOOP
13677
 
13678
		-- Get the next rcon id
13679
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
13680
 
13681
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
13682
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
13683
 
13684
		FETCH curReleaseConfigs INTO recReleaseConfigs;
13685
	END LOOP;
13686
 
13687
	CLOSE curReleaseConfigs;		
13688
 
13689
 
13690
 
13691
	-- Import Ignore Warning states
13692
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
13693
	SELECT nTargetRtagId AS RTAG_ID,
13694
	       igw.PV_ID,
13695
	       igw.DPV_ID
13696
	  FROM IGNORE_WARNINGS igw
13697
	 WHERE igw.rtag_id = nSourceRtagId;
13698
 
13699
 
13700
	/* Log Project Action */
13701
	-- Get Source Location
13702
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
13703
	  FROM RELEASE_TAGS rt,
13704
	  	   PROJECTS pr
13705
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13706
	   AND rt.RTAG_ID = nSourceRtagId;
13707
 
13708
	-- Get Target Location
13709
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
13710
	  FROM RELEASE_TAGS rt,
13711
	  	   PROJECTS pr
13712
	 WHERE rt.PROJ_ID = pr.PROJ_ID
13713
	   AND rt.RTAG_ID = nTargetRtagId;	   
13714
 
13715
	-- Get project id   
13716
	SELECT rt.PROJ_ID  INTO  ProjId
13717
	  FROM RELEASE_TAGS rt
13718
	 WHERE rt.RTAG_ID = nTargetRtagId;   
13719
 
13720
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
13721
 
13722
 
13723
END;
13724
/*-------------------------------------------------------------------------------------------------------*/
13725
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
13726
 
13727
	RecCount NUMBER;
13728
        rconIdList VARCHAR2(4000);
13729
 
13730
BEGIN
13731
	/*--------------- Business Rules Here -------------------*/
13732
	IF (nRtagId IS NULL) 
13733
	THEN
13734
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
13735
	END IF;
13736
 
13737
 
13738
	-- Check if other release references this release
13739
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
13740
	  FROM RELEASE_LINKS rl
13741
	 WHERE rl.REF_RTAG_ID = nRtagId;
13742
 
13743
	IF (RecCount > 0) THEN
13744
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
13745
	END IF; 	
13746
	/*-------------------------------------------------------*/
13747
 
13748
	-- Delete Release links
13749
	DELETE 
13750
	  FROM RELEASE_LINKS rl
13751
	 WHERE rl.RTAG_ID = nRtagId;
13752
 
13753
	-- Delete ignore warning
13754
	DELETE 
13755
	  FROM IGNORE_WARNINGS iw
13756
	 WHERE iw.RTAG_ID = nRtagId;
13757
 
13758
 
13759
	-- Delete Build Order cached calculations	  
13760
	DELETE
13761
	  FROM BUILD_ORDER bo
13762
	 WHERE bo.RTAG_ID = nRtagId;
13763
 
13764
 
13765
	-- Delete Notification History
13766
	DELETE
13767
	  FROM NOTIFICATION_HISTORY nh
13768
	 WHERE nh.RTAG_ID = nRtagId;
13769
 
13770
 
13771
	-- Delete Released Area Contents
13772
	DELETE
13773
	  FROM RELEASE_CONTENT rc
13774
	 WHERE rc.RTAG_ID = nRtagId;
13775
 
13776
 
13777
	-- Delete Work In Progress Area Contents
13778
	DELETE
13779
	  FROM WORK_IN_PROGRESS wip
13780
	 WHERE wip.RTAG_ID = nRtagId;
13781
 
13782
 
13783
	-- Delete Pending Area Contents
13784
	DELETE 
13785
	  FROM PLANNED pl
13786
	 WHERE pl.RTAG_ID = nRtagId;
13787
 
13788
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
13789
	DELETE
13790
	  FROM DEPRECATED_PACKAGES dp
13791
	 WHERE dp.RTAG_ID = nRtagId; 
13792
 
13793
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
13794
	DELETE
13795
	  FROM PROJECT_ACTION_LOG pal
13796
	 WHERE pal.RTAG_ID = nRtagId;
13797
 
13798
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
13799
	DELETE
13800
	  FROM DO_NOT_RIPPLE dnr
13801
	 WHERE dnr.RTAG_ID = nRtagId; 
13802
 
13803
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
13804
	DELETE
13805
	  FROM DASH_BOARD db
13806
	 WHERE db.RTAG_ID = nRtagId;
13807
 
13808
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
13809
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
13810
        LOOP
13811
          rconIdList := rconIdList || rcon.RCON_ID || ',';
13812
        END LOOP;
13813
 
13814
        pk_buildapi.DELETE_DAEMON(rconIdList);
13815
 
13816
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
13817
        DELETE
13818
          FROM RELEASE_METRICS rm
13819
         WHERE rm.RTAG_ID = nRtagId;
13820
 
13821
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
13822
	DELETE
13823
	  FROM RELEASE_CONFIG rc
13824
	 WHERE rc.RTAG_ID = nRtagId;
13825
 
13826
 
13827
 
13828
END;
13829
/*-------------------------------------------------------------------------------------------------------*/
13830
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
13831
 
13832
	nSourceParentRtagId NUMBER;
13833
 
13834
BEGIN
13835
	/*--------------- Business Rules Here -------------------*/
13836
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
13837
	THEN
13838
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
13839
	END IF;
13840
	/*-------------------------------------------------------*/
13841
 
13842
 
13843
	IF ( nSourceRtagId IS NULL ) THEN
13844
		-- Create new on main branch
13845
		RETURN nRtagId;
13846
 
13847
	ELSE
13848
		-- Create from source rtag_id
13849
 
13850
		-- Find parent of Source RtagId
13851
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
13852
		  FROM RELEASE_TAGS rt
13853
		 WHERE rt.RTAG_ID = nSourceRtagId;
13854
 
13855
		IF (UPPER(cIsBranch) = 'Y') THEN
13856
			RETURN nSourceRtagId;
13857
		ELSE
13858
			IF (nSourceRtagId = nSourceParentRtagId) THEN
13859
				RETURN nRtagId;
13860
			ELSE
13861
				RETURN nSourceParentRtagId;
13862
			END IF;
13863
		END IF;	
13864
 
13865
 
13866
	END IF;
13867
 
13868
 
13869
END;
13870
/*-------------------------------------------------------------------------------------------------------*/
13871
 
13872
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
13873
-- 							 sNextVersion OUT VARCHAR2,
13874
-- 							 nNextLifeCycle OUT NUMBER,
13875
-- 							 nParentRtagId OUT NUMBER,
13876
-- 							 nProjId IN NUMBER ) IS
13877
-- 							
13878
-- SourceBranchCount NUMBER;
13879
-- ProjRootVersion VARCHAR2(4000);
13880
-- LastLifeCycle NUMBER;
13881
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
13882
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
13883
-- 
13884
-- SourceProjId NUMBER; 
13885
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
13886
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
13887
-- 
13888
-- BEGIN
13889
-- 	/*--------------- Business Rules Here -------------------*/
13890
-- 	/*-------------------------------------------------------*/
13891
-- 	
13892
-- 	   
13893
-- 	BEGIN
13894
-- 		-- Get Project root version
13895
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
13896
-- 		  FROM RELEASE_TAGS rt
13897
-- 		 WHERE rt.PROJ_ID = nProjId
13898
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
13899
-- 	   
13900
-- 		EXCEPTION
13901
-- 		WHEN NO_DATA_FOUND THEN
13902
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
13903
-- 	END;		   
13904
-- 	
13905
-- 	
13906
-- 	
13907
-- 	 
13908
-- 	BEGIN
13909
-- 		-- Get info for source rtagid
13910
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
13911
-- 		  FROM RELEASE_TAGS rt
13912
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
13913
-- 	   
13914
-- 		EXCEPTION
13915
-- 		WHEN NO_DATA_FOUND THEN
13916
-- 		SourceProjId := NULL;
13917
-- 		SourceVersion := NULL;
13918
-- 		SourceLifeCycle := NULL;
13919
-- 	END;	  
13920
-- 	
13921
-- 	
13922
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
13923
-- 	
13924
-- 		/* Blank Release Required  OR  Release imported from other project */
13925
-- 		
13926
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
13927
-- 			/* No Releases found in the project, hence calculate next version available.  */
13928
-- 			
13929
-- 			-- Set parent rtag
13930
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
13931
-- 			
13932
-- 			
13933
-- 			BEGIN
13934
-- 				-- Get Next Available Global Root Version 
13935
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
13936
-- 				  FROM RELEASE_TAGS rt
13937
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
13938
-- 				
13939
-- 				-- Set Next Rtag Version
13940
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
13941
-- 				
13942
-- 				-- Restart Lifecycle
13943
-- 				nNextLifeCycle := 0;
13944
-- 				
13945
-- 				
13946
-- 				EXCEPTION
13947
-- 				WHEN NO_DATA_FOUND THEN
13948
-- 				-- Release Manager has no releases, hence start from 1
13949
-- 				sNextVersion := '1';
13950
-- 				nNextLifeCycle := 0;
13951
-- 				
13952
-- 			END;
13953
-- 			
13954
-- 			
13955
-- 					
13956
-- 		ELSE
13957
-- 			/* Releases found in this project. */
13958
-- 							   
13959
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
13960
-- 			  FROM (
13961
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
13962
-- 					  FROM RELEASE_TAGS rt
13963
-- 					 WHERE rt.PROJ_ID = nProjId
13964
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
13965
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
13966
-- 			  		) qry
13967
-- 			 WHERE ROWNUM = 1;		
13968
-- 
13969
-- 			
13970
-- 			-- Set same Rtag Version
13971
-- 			sNextVersion := ProjRootVersion;
13972
-- 			
13973
-- 			-- Increase Lifecycle
13974
-- 			nNextLifeCycle := LastLifeCycle + 1;
13975
-- 		
13976
-- 		END IF;
13977
-- 				
13978
-- 	
13979
-- 		
13980
-- 	ELSE
13981
-- 		/* Create Release From other release within this project */
13982
-- 		
13983
-- 		-- Set parent id
13984
-- 		nParentRtagId := nSourceRtagId;
13985
-- 		
13986
-- 		
13987
-- 		-- Get number of source branches
13988
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
13989
-- 		  FROM RELEASE_TAGS rt
13990
-- 		 WHERE rt.PROJ_ID = nProjId
13991
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
13992
-- 		   
13993
-- 		   
13994
-- 		IF SourceBranchCount = 0 THEN
13995
-- 			/* Release is Head (i.e. Tip on its branch ) */
13996
-- 			
13997
-- 			-- Set Next Rtag Version
13998
-- 			sNextVersion := SourceVersion;
13999
-- 			
14000
-- 			-- Increase Lifecycle
14001
-- 			nNextLifeCycle := SourceLifeCycle + 1;
14002
-- 			
14003
-- 			
14004
-- 		ELSIF SourceBranchCount = 1 THEN
14005
-- 			/* Release IS NOT Head, but can be branched */
14006
-- 			
14007
-- 			-- Set Next Rtag Version
14008
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
14009
-- 			
14010
-- 			-- Reset Lifecycle to 1
14011
-- 			nNextLifeCycle := 1;
14012
-- 			
14013
-- 			
14014
-- 		ELSE	
14015
-- 			-- Limit of two branches is reached
14016
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
14017
-- 			
14018
-- 		END IF;	
14019
-- 			
14020
-- 			
14021
-- 		
14022
-- 		
14023
-- 		
14024
-- 	
14025
-- 	END IF;
14026
-- 	
14027
-- 		
14028
-- END;
14029
 
14030
/*-------------------------------------------------------------------------------------------------------*/
14031
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
14032
 
14033
	IsBaseView CHAR(1);
14034
 
14035
BEGIN
14036
 
14037
	-- Check if the view is BASE VIEW
14038
	SELECT vi.BASE_VIEW INTO IsBaseView
14039
	  FROM VIEWS vi
14040
	 WHERE vi.VIEW_ID = ViewId;
14041
 
14042
	IF (IsBaseView = 'Y') THEN 
14043
		-- Get Base view content
14044
		OPEN RecordSet FOR
14045
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
14046
			   rel.deprecated_state,
14047
			   pv.pv_id, 
14048
			   pkg.pkg_name, 
14049
			   pv.pkg_version, 
14050
			   pv.dlocked, 
14051
			   pv.pv_description,
14052
			   pv.BUILD_TYPE
14053
		  FROM release_content rel,
14054
		       packages pkg,
14055
		       package_versions pv
14056
		 WHERE pv.pkg_id = pkg.pkg_id
14057
		   AND rel.pv_id = pv.pv_id
14058
		   AND rel.BASE_VIEW_ID = ViewId
14059
		   AND rel.RTAG_ID = RtagId
14060
		 ORDER BY UPPER(pkg.PKG_NAME);
14061
 
14062
	ELSE	 
14063
 
14064
	 	-- Get non base view content
14065
		OPEN RecordSet FOR
14066
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
14067
			   rel.deprecated_state,
14068
			   pv.pv_id, 
14069
			   pkg.pkg_name, 
14070
			   pv.pkg_version, 
14071
			   pv.dlocked, 
14072
			   pv.pv_description,
14073
			   pv.BUILD_TYPE
14074
		  FROM release_content rel,
14075
		       packages pkg,
14076
		       package_versions pv,
14077
			   VIEW_DEF vd
14078
		 WHERE pv.pkg_id = pkg.pkg_id
14079
		   AND rel.pv_id = pv.pv_id
14080
		   AND vd.VIEW_ID = ViewId
14081
		   AND vd.PKG_ID = pv.PKG_ID
14082
		   AND rel.RTAG_ID = RtagId
14083
		 ORDER BY UPPER(pkg.PKG_NAME);		 
14084
 
14085
	END IF;	 	 
14086
 
14087
 
14088
 
14089
 
14090
END;
14091
/*-------------------------------------------------------------------------------------------------------*/
14092
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14093
 
14094
	ReleaseLocation VARCHAR2(4000);
14095
	sPkgVersion VARCHAR2(4000);
14096
	nPkgId NUMBER;
14097
	sVExt VARCHAR2(4000);
14098
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
14099
 
14100
	-- Find package for replacement
14101
	CURSOR curReplacePkg IS
14102
    SELECT pv.PV_ID
14103
	  FROM RELEASE_CONTENT rc,
14104
	  	   PACKAGE_VERSIONS pv
14105
	 WHERE rc.PV_ID = pv.PV_ID
14106
	   AND rc.RTAG_ID = RtagId
14107
	   AND pv.PKG_ID = nPkgId
14108
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
14109
    recReplacePkg curReplacePkg%ROWTYPE;
14110
 
14111
BEGIN
14112
 
14113
	-- Get is_patch, pkg_id and v_ext
14114
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
14115
	  FROM PACKAGE_VERSIONS pv
14116
	 WHERE pv.PV_ID = newPvId;
14117
 
14118
 
14119
	-- Never put patch in relesed area
14120
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
14121
 
14122
		-- Try to get a package to be replaced with this new one.
14123
		-- Use unique constraint of PKG_ID and V_EXT
14124
		OPEN curReplacePkg;
14125
	    FETCH curReplacePkg INTO recReplacePkg;
14126
 
14127
	    IF curReplacePkg%FOUND THEN
14128
			-- Replace package
14129
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
14130
 
14131
		ELSE
14132
			-- Add new package
14133
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
14134
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
14135
 
14136
 
14137
		    /* LOG ACTION */
14138
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14139
			  FROM PROJECTS proj,
14140
			  	   RELEASE_TAGS rt
14141
			 WHERE rt.PROJ_ID = proj.PROJ_ID
14142
			   AND rt.RTAG_ID = RtagId;
14143
 
14144
			SELECT pv.PKG_VERSION INTO sPkgVersion
14145
			  FROM PACKAGE_VERSIONS pv
14146
			 WHERE pv.PV_ID = newPvId;
14147
 
14148
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14149
 
14150
 
14151
		END IF;
14152
 
14153
		CLOSE curReplacePkg;
14154
 
14155
	END IF;
14156
 
14157
END;
14158
/*-------------------------------------------------------------------------------------------------------*/
14159
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14160
 
14161
	ReleaseLocation VARCHAR2(4000);
14162
	sPkgVersion VARCHAR2(4000);
14163
 
14164
BEGIN
14165
 
14166
	-- Replace Package
14167
    UPDATE RELEASE_CONTENT
14168
       SET pv_id = newPvId,
14169
           insert_stamp = Ora_Sysdate,
14170
           insertor_id = UserId,
14171
		   product_state = NULL
14172
     WHERE rtag_id = RtagId
14173
       AND pv_id = oldPvId;  
14174
 
14175
 
14176
    /* LOG ACTION */
14177
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14178
	  FROM PROJECTS proj,
14179
	  	   RELEASE_TAGS rt
14180
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14181
	   AND rt.RTAG_ID = RtagId;
14182
 
14183
	SELECT pv.PKG_VERSION INTO sPkgVersion
14184
	  FROM PACKAGE_VERSIONS pv
14185
	 WHERE pv.PV_ID = newPvId;
14186
 
14187
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
14188
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
14189
 
14190
END;
14191
/*-------------------------------------------------------------------------------------------------------*/
14192
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14193
	ReleaseLocation VARCHAR2(4000);
14194
 
14195
BEGIN
14196
 
14197
 
14198
	-- Delete old package
14199
	DELETE
14200
	  FROM RELEASE_CONTENT rc
14201
	 WHERE rc.PV_ID = PvId
14202
	   AND rc.RTAG_ID = RtagId;
14203
 
14204
 
14205
	/* LOG ACTION */
14206
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14207
	  FROM PROJECTS proj,
14208
	       RELEASE_TAGS rt
14209
	 WHERE rt.PROJ_ID = proj.PROJ_ID
14210
	   AND rt.RTAG_ID = RtagId;
14211
 
14212
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14213
 
14214
 
14215
END;
14216
/*-------------------------------------------------------------------------------------------------------*/
14217
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
14218
	ReleaseLocation VARCHAR2(4000);
14219
 
14220
	CURSOR curMatchingPackage IS
14221
    SELECT mpv.PV_ID
14222
	  FROM RELEASE_CONTENT rc,
14223
	  	   PACKAGE_VERSIONS mpv,
14224
		   PACKAGE_VERSIONS pv
14225
	 WHERE rc.PV_ID = mpv.PV_ID
14226
	   AND rc.RTAG_ID = RtagId
14227
	   AND pv.PV_ID = PvId
14228
	   AND pv.PKG_ID = mpv.PKG_ID
14229
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
14230
    recMatchingPackage curMatchingPackage%ROWTYPE;
14231
 
14232
BEGIN
14233
 
14234
	OPEN curMatchingPackage;
14235
    FETCH curMatchingPackage INTO recMatchingPackage;
14236
 
14237
    IF curMatchingPackage%FOUND THEN
14238
		-- Delete old package
14239
		DELETE
14240
		  FROM RELEASE_CONTENT rc
14241
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
14242
		   AND rc.RTAG_ID = RtagId;
14243
 
14244
 
14245
		/* LOG ACTION */
14246
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14247
		  FROM PROJECTS proj,
14248
		  	   RELEASE_TAGS rt
14249
		 WHERE rt.PROJ_ID = proj.PROJ_ID
14250
		   AND rt.RTAG_ID = RtagId;
14251
 
14252
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
14253
 
14254
	END IF;
14255
 
14256
 
14257
	CLOSE curMatchingPackage;
14258
 
14259
 
14260
 
14261
 
14262
END;
14263
/*-------------------------------------------------------------------------------------------------------*/
14264
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
14265
 
14266
	ReturnValue NUMBER;
14267
 
14268
BEGIN
14269
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
14270
	  FROM RELEASE_CONTENT rc
14271
	 WHERE rc.RTAG_ID = RtagId
14272
	   AND rc.PV_ID = PvId;
14273
 
14274
	RETURN ReturnValue;
14275
END;
14276
/*-------------------------------------------------------------------------------------------------------*/
14277
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
14278
 
14279
BEGIN
14280
	-- Reset Ignore warnings up-the-tree
14281
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
14282
 
14283
	-- Refresh Package states
14284
	TOUCH_RELEASE ( RtagId );
14285
 
14286
END;
14287
/*-------------------------------------------------------------------------------------------------------*/
14288
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
14289
	CURSOR curReleases IS
14290
    SELECT rc.RTAG_ID
14291
	  FROM RELEASE_CONTENT rc
14292
	 WHERE rc.PV_ID = PvId;
14293
    recReleases curReleases%ROWTYPE;
14294
 
14295
BEGIN
14296
 
14297
	OPEN curReleases;
14298
    FETCH curReleases INTO recReleases;
14299
 
14300
	WHILE curReleases%FOUND
14301
	LOOP
14302
 
14303
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
14304
 
14305
		FETCH curReleases INTO recReleases;
14306
	END LOOP;
14307
 
14308
	CLOSE curReleases;	
14309
 
14310
END;
14311
/*-------------------------------------------------------------------------------------------------------*/
14312
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
14313
 
14314
BEGIN
14315
 
14316
	UPDATE RELEASE_CONTENT rc SET
14317
	rc.BASE_VIEW_ID = NewViewId
14318
	WHERE rc.PV_ID = PvId
14319
	  AND rc.RTAG_ID = RtagId;
14320
 
14321
END;
14322
/*-------------------------------------------------------------------------------------------------------*/
14323
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
14324
 
14325
	RowCount NUMBER;
14326
 
14327
 
14328
	CURSOR curPackageClash IS
14329
	SELECT pkg.PKG_NAME,
14330
		   er.*
14331
	  FROM (
14332
 
14333
	  		/* Get existing referenced packages */
14334
			SELECT pv.PKG_ID,
14335
			       pv.V_EXT
14336
			  FROM RELEASE_LINKS rl,
14337
			  	   RELEASE_CONTENT rc,
14338
			  	   PACKAGE_VERSIONS pv
14339
			 WHERE rl.RTAG_ID = nRtagId
14340
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
14341
			   AND rc.PV_ID = pv.PV_ID
14342
 
14343
	  	    ) er,
14344
			(
14345
 
14346
			/* Get current reference packages */
14347
			SELECT pv.PKG_ID,
14348
			       pv.V_EXT
14349
			  FROM RELEASE_CONTENT rc,
14350
			  	   PACKAGE_VERSIONS pv
14351
			 WHERE rc.RTAG_ID = nRefRtagId
14352
			   AND rc.PV_ID = pv.PV_ID    
14353
 
14354
			) cr,
14355
			PACKAGES PKG
14356
	 WHERE er.PKG_ID = cr.PKG_ID
14357
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14358
	   AND er.PKG_ID = pkg.PKG_ID;
14359
 
14360
	recPackageClash curPackageClash%ROWTYPE;	   
14361
 
14362
BEGIN
14363
	/*--------------- Business Rules Here -------------------*/
14364
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14365
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14366
	END IF;
14367
 
14368
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14369
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14370
	END IF;
14371
	/*-------------------------------------------------------*/
14372
	ProblemString := NULL;
14373
 
14374
 
14375
	-- Check if release already has references
14376
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
14377
	  FROM RELEASE_LINKS rl
14378
	 WHERE rl.RTAG_ID = nRtagId;	
14379
 
14380
 
14381
	IF RowCount > 0 THEN
14382
		-- Found existing references
14383
 
14384
		-- Make sure there is no package clashes
14385
		OPEN curPackageClash;
14386
	    FETCH curPackageClash INTO recPackageClash;
14387
 
14388
		IF curPackageClash%FOUND THEN
14389
 
14390
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
14391
 
14392
			WHILE curPackageClash%FOUND
14393
			LOOP
14394
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
14395
 
14396
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
14397
 
14398
				FETCH curPackageClash INTO recPackageClash;
14399
			END LOOP;
14400
 
14401
		END IF;
14402
 
14403
		CLOSE curPackageClash;
14404
 
14405
 
14406
	ELSE
14407
		-- No references found, hence reference a release
14408
 
14409
 
14410
		-- Remove exising package from this release to be referenced
14411
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
14412
 
14413
 
14414
		-- Add new linked packages to release
14415
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
14416
		SELECT nRtagId,
14417
			   rc.PV_ID,
14418
			   rc.BASE_VIEW_ID, 
14419
			   rc.INSERT_STAMP, 
14420
			   rc.INSERTOR_ID, 
14421
			   rc.PKG_STATE
14422
		  FROM RELEASE_CONTENT rc
14423
		 WHERE rc.RTAG_ID = nRefRtagId;
14424
 
14425
 
14426
 
14427
		-- Copy ignore warnings for referenced packages
14428
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
14429
		SELECT nRtagId, 
14430
			   iw.PV_ID, 
14431
			   iw.DPV_ID, 
14432
			   iw.IS_PATCH_IGNORE
14433
		  FROM IGNORE_WARNINGS iw,
14434
		  	   RELEASE_CONTENT rc
14435
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
14436
		   AND iw.PV_ID = rc.PV_ID
14437
		   AND rc.RTAG_ID = nRefRtagId;	 
14438
 
14439
 
14440
 
14441
		-- Reference release 
14442
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
14443
		VALUES ( nRtagId, nRefRtagId );		 
14444
 
14445
 
14446
		-- Refresh Package states
14447
		TOUCH_RELEASE ( nRtagId );
14448
 
14449
	END IF;	 
14450
 
14451
 
14452
END;
14453
/*-------------------------------------------------------------------------------------------------------*/
14454
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
14455
 
14456
 
14457
BEGIN
14458
	/*--------------- Business Rules Here -------------------*/
14459
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
14460
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
14461
	END IF;
14462
 
14463
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
14464
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
14465
	END IF;
14466
 
14467
	/*-------------------------------------------------------*/
14468
 
14469
 
14470
	-- Remove ignore warnings for those packages who use referenced packages
14471
	DELETE FROM IGNORE_WARNINGS iw
14472
	 WHERE iw.RTAG_ID = nRtagId
14473
	   AND iw.DPV_ID IN (
14474
	   						SELECT dep.DPV_ID
14475
							  FROM (
14476
 
14477
									/* Get referenced packages */
14478
									SELECT pv.PKG_ID,
14479
									       pv.V_EXT
14480
									  FROM RELEASE_CONTENT rc,
14481
									  	   PACKAGE_VERSIONS pv
14482
									 WHERE rc.RTAG_ID = nRefRtagId
14483
									   AND rc.PV_ID = pv.PV_ID    
14484
 
14485
									) cr,
14486
									(
14487
 
14488
									/* Get all dependencies for current release */
14489
									SELECT DISTINCT 
14490
										   pv.PKG_ID,
14491
										   pv.V_EXT,
14492
										   dep.DPV_ID
14493
									  FROM RELEASE_CONTENT rc,
14494
										   PACKAGE_DEPENDENCIES dep,
14495
										   PACKAGE_VERSIONS pv
14496
									 WHERE rc.RTAG_ID = nRtagId
14497
									   AND rc.PV_ID = dep.PV_ID		
14498
									   AND dep.PV_ID = pv.PV_ID	   
14499
 
14500
									) dep
14501
							 WHERE dep.PKG_ID = cr.PKG_ID
14502
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14503
	   					);  
14504
 
14505
 
14506
 
14507
 
14508
	-- Remove ignore warnings for those package which are going to be replaced with the reference
14509
	DELETE FROM IGNORE_WARNINGS iw
14510
	 WHERE iw.RTAG_ID = nRtagId
14511
	   AND iw.PV_ID IN (
14512
						SELECT pv.PV_ID
14513
						  FROM (
14514
 
14515
								/* Get referenced packages */
14516
								SELECT pv.PKG_ID,
14517
								       pv.V_EXT
14518
								  FROM RELEASE_CONTENT rc,
14519
								  	   PACKAGE_VERSIONS pv
14520
								 WHERE rc.RTAG_ID = nRefRtagId
14521
								   AND rc.PV_ID = pv.PV_ID    
14522
 
14523
								) cr,
14524
								RELEASE_CONTENT rc,
14525
								PACKAGE_VERSIONS pv
14526
						 WHERE pv.PKG_ID = cr.PKG_ID
14527
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14528
						   AND rc.RTAG_ID = nRtagId
14529
						   AND rc.PV_ID = pv.PV_ID
14530
						);			
14531
 
14532
 
14533
 
14534
 
14535
 
14536
	-- Remove matching packages from release
14537
	DELETE FROM RELEASE_CONTENT rc
14538
	 WHERE rc.RTAG_ID = nRtagId
14539
	   AND rc.PV_ID IN (
14540
						SELECT pv.PV_ID
14541
						  FROM (
14542
 
14543
								/* Get referenced packages */
14544
								SELECT pv.PKG_ID,
14545
								       pv.V_EXT
14546
								  FROM RELEASE_CONTENT rc,
14547
								  	   PACKAGE_VERSIONS pv
14548
								 WHERE rc.RTAG_ID = nRefRtagId
14549
								   AND rc.PV_ID = pv.PV_ID    
14550
 
14551
								) cr,
14552
								RELEASE_CONTENT rc,
14553
								PACKAGE_VERSIONS pv
14554
						 WHERE pv.PKG_ID = cr.PKG_ID
14555
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
14556
						   AND rc.RTAG_ID = nRtagId
14557
						   AND rc.PV_ID = pv.PV_ID
14558
						);	
14559
 
14560
 
14561
 
14562
 
14563
 
14564
	-- Remove Reference release 
14565
	DELETE 
14566
	  FROM RELEASE_LINKS rl
14567
	 WHERE rl.RTAG_ID = nRtagId
14568
	   AND rl.REF_RTAG_ID = nRefRtagId;
14569
 
14570
 
14571
	-- Refresh Package states
14572
	TOUCH_RELEASE ( nRtagId );
14573
 
14574
 
14575
END;
14576
/*-------------------------------------------------------------------------------------------------------*/
14577
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
14578
 
14579
	cReleaseMode CHAR(1);
14580
	cPvMode CHAR(1);
14581
 
14582
BEGIN
14583
 
14584
	-- Get Release Mode
14585
	SELECT rt.OFFICIAL INTO cReleaseMode
14586
	  FROM RELEASE_TAGS rt
14587
	 WHERE rt.RTAG_ID = RtagId;
14588
 
14589
 
14590
	-- Get Package Mode
14591
	SELECT pv.DLOCKED INTO cPvMode
14592
	  FROM PACKAGE_VERSIONS pv
14593
	 WHERE pv.PV_ID = PvId;	 
14594
 
14595
	-- Only check if package is locked 
14596
	IF (cPvMode = 'Y') THEN
14597
 
14598
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
14599
		THEN
14600
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
14601
 
14602
		END IF;
14603
 
14604
	END IF;	
14605
 
14606
 
14607
END;
14608
 
14609
/*-------------------------------------------------------------------------------------------------------*/
14610
END PK_RELEASE;
14611
/
14612
 
14613
CREATE OR REPLACE PACKAGE BODY PK_BUILDAPI_TEST IS
14614
 
14615
/*
14616
------------------------------
14617
||  Last Modified:  S.Vukovic
14618
||  Modified Date:  30/Mar/2005
14619
||  Body Version:   1.0
14620
------------------------------
14621
*/
14622
 
14623
 
14624
/*-------------------------------------------------------------------------------------------------------*/
14625
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14626
								  sOsName IN VARCHAR2,
14627
								  sOrigFilePath IN VARCHAR2,
14628
								  sFileName IN VARCHAR2,
14629
								  sDestFilePath IN VARCHAR2,
14630
								  nByteSize IN NUMBER,
14631
								  sCRCcksum IN VARCHAR2 ) IS
14632
 
14633
	nOsId NUMBER;
14634
 
14635
BEGIN
14636
	/*--------------- Business Rules Here -------------------*/
14637
	-- OS Name Requirements --
14638
	IF (sOsName IS NULL) THEN
14639
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14640
	END IF;
14641
 
14642
 
14643
	-- File Requirements --
14644
	IF (NOT sFileName IS NULL) THEN
14645
 
14646
		IF (nByteSize IS NULL) THEN
14647
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14648
 
14649
		ELSIF (sCRCcksum IS NULL) THEN
14650
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14651
 
14652
		END IF;
14653
 
14654
	END IF;
14655
 
14656
 
14657
	-- Folder Requirements --
14658
	-- No requirements for now.
14659
 
14660
	/*-------------------------------------------------------*/
14661
 
14662
	-- Get OsId
14663
	nOsId := Get_OsId ( sOsName );
14664
 
14665
 
14666
	-- Insert component entry
14667
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14668
    VALUES (
14669
			  nPvId,
14670
			  nOsId,
14671
			  sOrigFilePath,
14672
			  sFileName,
14673
			  sDestFilePath,
14674
			  nByteSize,
14675
			  sCRCcksum
14676
			);
14677
 
14678
 
14679
	EXCEPTION
14680
    WHEN DUP_VAL_ON_INDEX
14681
	THEN
14682
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14683
 
14684
END;
14685
/*-------------------------------------------------------------------------------------------------------*/
14686
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14687
 
14688
	nOsId NUMBER;
14689
 
14690
BEGIN
14691
	/*--------------- Business Rules Here -------------------*/
14692
	/*-------------------------------------------------------*/
14693
 
14694
	-- Get OsId
14695
	nOsId := Get_OsId ( sOsName );
14696
 
14697
 
14698
	-- Delete component entry
14699
	DELETE
14700
	  FROM PRODUCT_COMPONENTS pc
14701
	 WHERE pc.PV_ID = nPvId
14702
	   AND pc.OS_ID = nOsId;
14703
 
14704
 
14705
END;
14706
/*-------------------------------------------------------------------------------------------------------*/
14707
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14708
	Code NUMBER;
14709
 
14710
BEGIN
14711
 
14712
	-- Get Platform Code --
14713
	SELECT pf.CODE INTO Code
14714
	  FROM PLATFORMS pf
14715
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14716
 
14717
 
14718
	RETURN Code;	   
14719
 
14720
	EXCEPTION
14721
    	WHEN NO_DATA_FOUND THEN
14722
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14723
   	RAISE;
14724
END;
14725
/*-------------------------------------------------------------------------------------------------------*/
14726
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14727
			  					 sWebServer IN VARCHAR2,
14728
								 sMailServer IN VARCHAR2,
14729
								 sMailSender IN VARCHAR2) IS
14730
 
14731
BEGIN
14732
 
14733
 
14734
	 UPDATE BUILD_SERVICE_CONFIG
14735
	 SET CONFIG = sDatabaseServer
14736
	 WHERE SERVICE = 'DATABASE SERVER'; 
14737
 
14738
	 UPDATE BUILD_SERVICE_CONFIG
14739
	 SET CONFIG = sWebServer
14740
	 WHERE SERVICE = 'WEB SERVER'; 
14741
 
14742
	 UPDATE BUILD_SERVICE_CONFIG
14743
	 SET CONFIG = sMailServer
14744
	 WHERE SERVICE = 'MAIL SERVER'; 
14745
 
14746
	 UPDATE BUILD_SERVICE_CONFIG
14747
	 SET CONFIG = sMailSender
14748
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14749
 
14750
 
14751
 
14752
END;
14753
/*-------------------------------------------------------------------------------------------------------*/
14754
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14755
 
14756
GBE_ID NUMBER;
14757
 
14758
BEGIN
14759
 
14760
	-- Get GBE_ID
14761
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14762
 
14763
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14764
	VALUES( GBE_ID, sGBEValue);
14765
 
14766
 
14767
END;
14768
/*-------------------------------------------------------------------------------------------------------*/
14769
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14770
 
14771
BEGIN
14772
 
14773
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14774
 
14775
END;
14776
/*-------------------------------------------------------------------------------------------------------*/
14777
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14778
 
14779
BEGIN
14780
 
14781
	 UPDATE GBE_MACHTYPE
14782
	 SET GBE_VALUE = sGBEValue 
14783
	 WHERE GBE_ID = nGBE_ID;
14784
 
14785
 
14786
END;
14787
/*-------------------------------------------------------------------------------------------------------*/
14788
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14789
 
14790
nRecordNumber NUMBER;
14791
nRconId NUMBER;
14792
BEGIN
14793
	-- Get RCON_ID
14794
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14795
 
14796
        SELECT count(*) INTO nRecordNumber 
14797
        FROM RELEASE_CONFIG
14798
        WHERE RTAG_ID = nRtagId;
14799
 
14800
        IF nRecordNumber = 0 THEN
14801
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14802
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14803
        ELSE
14804
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14805
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14806
        END IF;
14807
 
14808
 
14809
 
14810
END;
14811
/*-------------------------------------------------------------------------------------------------------*/        
14812
END PK_BUILDAPI_TEST;
14813
/
14814
 
53 mhunt 14815
CREATE OR REPLACE PACKAGE BODY                   "PK_ENVIRONMENT"
51 mhunt 14816
IS
14817
/*
14818
------------------------------
53 mhunt 14819
||  Last Modified:  G.Huddy
14820
||  Modified Date:  28/May/2008
14821
||  Body Version:   1.3
51 mhunt 14822
------------------------------
14823
*/
14824
 
14825
   /*-------------------------------------------------------------------------------------------------------*/
14826
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
53 mhunt 14827
	  RETURN NUMBER
51 mhunt 14828
   IS
14829
   BEGIN
53 mhunt 14830
	   /*
14831
	  || N - unlocked
14832
	  || Y - release and locked
14833
	  || P - penging approval
14834
	  || A - approved package ready for auto-build
14835
	  */
14836
	  IF cdlock = 'N' OR cdlock = 'R'
14837
	  THEN
14838
		 -- WORK IN PROGRESS --
14839
		 RETURN 0;
14840
	  ELSIF cdlock = 'P' OR cdlock = 'A'
14841
	  THEN
14842
		 -- PENDING --
14843
		 RETURN 1;
14844
	  ELSIF cdlock = 'Y'
14845
	  THEN
14846
		 -- RELEASED --
14847
		 RETURN 2;
14848
	  ELSE
14849
		 -- NOT FOUND --
14850
		 raise_application_error
14851
						 (-20000,
14852
							 'Cannot decide where to place package. [cDlock='
14853
						  || cdlock
14854
						  || ']'
14855
						 );
14856
	  END IF;
51 mhunt 14857
   END;
14858
 
14859
/*-------------------------------------------------------------------------------------------------------*/
14860
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14861
	  RETURN NUMBER
51 mhunt 14862
   IS
53 mhunt 14863
	  envtab	NUMBER			:= -1;
51 mhunt 14864
 
53 mhunt 14865
	  CURSOR curarea
14866
	  IS
14867
		 SELECT 2 AS envtab
14868
		   FROM release_content rc
14869
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14870
		 UNION
14871
		 SELECT 0 AS envtab
14872
		   FROM work_in_progress wip
14873
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14874
		 UNION
14875
		 SELECT 1 AS envtab
14876
		   FROM planned pl
14877
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14878
 
53 mhunt 14879
	  recarea   curarea%ROWTYPE;
51 mhunt 14880
   BEGIN
53 mhunt 14881
	  OPEN curarea;
51 mhunt 14882
 
53 mhunt 14883
	  FETCH curarea
14884
	   INTO recarea;
51 mhunt 14885
 
53 mhunt 14886
	  IF curarea%FOUND
14887
	  THEN
14888
		 envtab := recarea.envtab;
14889
	  END IF;
51 mhunt 14890
 
53 mhunt 14891
	  CLOSE curarea;
51 mhunt 14892
 
53 mhunt 14893
	  RETURN envtab;
51 mhunt 14894
   END;
14895
 
14896
/*-------------------------------------------------------------------------------------------------------*/
14897
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 14898
	  RETURN NUMBER
51 mhunt 14899
   IS
53 mhunt 14900
	  ispatch   package_versions.dlocked%TYPE;
14901
	  viewid	NUMBER						  := -1;
51 mhunt 14902
 
53 mhunt 14903
	  CURSOR curview
14904
	  IS
14905
		 SELECT rc.base_view_id AS view_id
14906
		   FROM release_content rc
14907
		  WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
14908
		 UNION
14909
		 SELECT wip.view_id AS view_id
14910
		   FROM work_in_progress wip
14911
		  WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
14912
		 UNION
14913
		 SELECT pl.view_id AS view_id
14914
		   FROM planned pl
14915
		  WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
51 mhunt 14916
 
53 mhunt 14917
	  recview   curview%ROWTYPE;
51 mhunt 14918
   BEGIN
53 mhunt 14919
	  -- Get dlock state
14920
	  SELECT pv.is_patch
14921
		INTO ispatch
14922
		FROM package_versions pv
14923
	   WHERE pv.pv_id = pvid;
51 mhunt 14924
 
53 mhunt 14925
	  -- Decide which view id should package go under.
14926
	  IF (ispatch != 'Y') OR (ispatch IS NULL)
14927
	  THEN
14928
		 -- Get VIEW ID of Package
14929
		 OPEN curview;
51 mhunt 14930
 
53 mhunt 14931
		 FETCH curview
14932
		  INTO recview;
51 mhunt 14933
 
53 mhunt 14934
		 IF curview%FOUND
14935
		 THEN
14936
			viewid := recview.view_id;
14937
		 ELSE
14938
			raise_application_error
14939
			   (-20000,
14940
				   'Cannot find view_id to proceed. [PvId='
14941
				|| pvid
14942
				|| ']. The current version may not exist in the release anymore.'
14943
			   );
14944
		 END IF;
51 mhunt 14945
 
53 mhunt 14946
		 CLOSE curview;
14947
	  ELSE
14948
		 -- Get VIEW ID of Patch (view id of parent package)
14949
		 SELECT rc.base_view_id
14950
		   INTO viewid
14951
		   FROM release_content rc, package_patches ppv
14952
		  WHERE rc.rtag_id = rtagid
14953
			AND rc.pv_id = ppv.pv_id
14954
			AND ppv.patch_id = pvid;
14955
	  END IF;
51 mhunt 14956
 
53 mhunt 14957
	  RETURN viewid;
51 mhunt 14958
   END;
14959
 
14960
/*-------------------------------------------------------------------------------------------------------*/
14961
   PROCEDURE add_package (
53 mhunt 14962
	  pvid	 IN   NUMBER,
14963
	  viewid   IN   NUMBER,
14964
	  rtagid   IN   NUMBER,
14965
	  userid   IN   NUMBER
51 mhunt 14966
   )
14967
   IS
53 mhunt 14968
	  dlocked   package_versions.dlocked%TYPE;
14969
	  envtab	NUMBER;
51 mhunt 14970
   BEGIN
53 mhunt 14971
	  IF can_edit_pkg_in_project (pvid, rtagid) = 1
14972
	  THEN
14973
		 -- Get dlock state
14974
		 SELECT pv.dlocked
14975
		   INTO dlocked
14976
		   FROM package_versions pv
14977
		  WHERE pv.pv_id = pvid;
51 mhunt 14978
 
53 mhunt 14979
		 -- Get which area should go under
14980
		 envtab := select_environment_area (dlocked);
14981
		 -- Log
14982
		 log_action (pvid, 'action', userid, 'Start of Package Add...');
51 mhunt 14983
 
53 mhunt 14984
		 -- Remove Package
14985
		 IF envtab = 0
14986
		 THEN
14987
			-- WORK IN PROGRESS --
14988
			pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
14989
		 ELSIF envtab = 1
14990
		 THEN
14991
			-- PENDING --
14992
			pk_planned.add_package (pvid, viewid, rtagid, userid);
14993
		 ELSIF envtab = 2
14994
		 THEN
14995
			-- RELEASED --
14996
			-- NOTE: this package will be replaced with matching package
14997
			pk_release.add_package (pvid, viewid, rtagid, userid);
14998
			-- Now do post Release Actions
14999
			pk_release.run_post_actions (pvid, rtagid);
15000
		 END IF;
51 mhunt 15001
 
53 mhunt 15002
		 -- Log
15003
		 log_action (pvid, 'action', userid, 'End of Package Add...');
15004
	  END IF;
51 mhunt 15005
   END;
15006
 
15007
/*-------------------------------------------------------------------------------------------------------*/
15008
   PROCEDURE add_package_bulk (
53 mhunt 15009
	  pvidlist   IN   VARCHAR2,
15010
	  viewid	 IN   NUMBER,
15011
	  rtagid	 IN   NUMBER,
15012
	  userid	 IN   NUMBER
51 mhunt 15013
   )
15014
   IS
53 mhunt 15015
	  nidcollector   relmgr_number_tab_t			:= relmgr_number_tab_t
15016
																		  ();
15017
	  dlocked		package_versions.dlocked%TYPE;
15018
	  pvid		   NUMBER;
15019
	  envtab		 NUMBER;
51 mhunt 15020
   BEGIN
53 mhunt 15021
	  /*--------------- Business Rules Here -------------------*/
15022
	  IF (pvidlist IS NULL)
15023
	  THEN
15024
		 raise_application_error (-20000,
15025
								  'Please select at least one package.'
15026
								 );
15027
	  END IF;
51 mhunt 15028
 
15029
/*-------------------------------------------------------*/
53 mhunt 15030
	  nidcollector := in_list_number (pvidlist);
51 mhunt 15031
 
53 mhunt 15032
	  FOR i IN 1 .. nidcollector.COUNT
15033
	  LOOP
15034
		 pvid := nidcollector (i);
15035
		 add_package (pvid, viewid, rtagid, userid);
15036
	  END LOOP;
51 mhunt 15037
   END;
15038
 
15039
/*-------------------------------------------------------------------------------------------------------*/
15040
   PROCEDURE replace_package (
53 mhunt 15041
	  newpvid   IN   NUMBER,
15042
	  oldpvid   IN   NUMBER,
15043
	  rtagid	IN   NUMBER,
15044
	  userid	IN   NUMBER
51 mhunt 15045
   )
15046
   IS
53 mhunt 15047
	  dlocked		package_versions.dlocked%TYPE;
15048
	  viewid		 NUMBER;
15049
	  envtab		 NUMBER;
15050
	  ROWCOUNT	   NUMBER;
15051
	  creleasemode   CHAR (1);
15052
	  npkgid		 NUMBER;
51 mhunt 15053
   BEGIN
53 mhunt 15054
	  /*--------------- Business Rules Here -------------------*/
15055
	  -- Check if oldPvId exists. It could have been removed
15056
	  SELECT COUNT (pv.pv_id)
15057
		INTO ROWCOUNT
15058
		FROM package_versions pv
15059
	   WHERE pv.pv_id = oldpvid;
51 mhunt 15060
 
15061
/*-------------------------------------------------------*/
15062
 
53 mhunt 15063
	  /* This procedure is usually used by "History" option in Release Manager */
51 mhunt 15064
 
53 mhunt 15065
	  -- Get dlock state
15066
	  SELECT pv.dlocked
15067
		INTO dlocked
15068
		FROM package_versions pv
15069
	   WHERE pv.pv_id = newpvid;
51 mhunt 15070
 
53 mhunt 15071
	  -- Get VIEW_ID ---
15072
	  IF ROWCOUNT = 1
15073
	  THEN
15074
		 viewid := get_view_location (oldpvid, rtagid);
15075
	  ELSE
15076
		 -- Set ViewID to default
15077
		 viewid := 7;
15078
	  END IF;
51 mhunt 15079
 
53 mhunt 15080
	  -- Get which area should go under
15081
	  envtab := select_environment_area (dlocked);
15082
	  -- Log
15083
	  log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
51 mhunt 15084
 
53 mhunt 15085
	  -- Replace package
15086
	  IF envtab = 0
15087
	  THEN
15088
		 -- WORK IN PROGRESS --
51 mhunt 15089
 
53 mhunt 15090
		 -- Delete old package
15091
		 pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
15092
		 -- Add new package
15093
		 pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
15094
	  ELSIF envtab = 1
15095
	  THEN
15096
		 -- PENDING --
51 mhunt 15097
 
53 mhunt 15098
		 -- Delete old package
15099
		 pk_planned.remove_package (oldpvid, rtagid, userid);
15100
		 -- Add new package
15101
		 pk_planned.add_package (newpvid, viewid, rtagid, userid);
15102
	  ELSIF envtab = 2
15103
	  THEN
15104
		 -- RELEASED --
51 mhunt 15105
 
53 mhunt 15106
		 -- Delete old package
15107
		 pk_release.remove_package (oldpvid, rtagid, userid);
15108
		 -- Add new package
15109
		 pk_release.add_package (newpvid, viewid, rtagid, userid);
15110
		 -- Now do post Release Actions
15111
		 pk_release.run_post_actions (newpvid, rtagid);
15112
	  END IF;
51 mhunt 15113
 
53 mhunt 15114
	  -- Log
15115
	  log_action (oldpvid, 'action', userid, 'End of Package Replace...');
51 mhunt 15116
   END;
15117
 
15118
/*-------------------------------------------------------------------------------------------------------*/
15119
   FUNCTION remove_package (
53 mhunt 15120
	  pvid		  IN   NUMBER,
15121
	  rtagid		IN   NUMBER,
15122
	  userid		IN   NUMBER,
15123
	  forceremove   IN   CHAR
51 mhunt 15124
   )
53 mhunt 15125
	  RETURN NUMBER
51 mhunt 15126
   IS
53 mhunt 15127
	  envtab		NUMBER;
15128
	  isused		BOOLEAN;
15129
	  recordcount   NUMBER;
51 mhunt 15130
   BEGIN
15131
/*--------------- Business Rules Here -------------------*/
15132
/*-------------------------------------------------------*/
15133
 
53 mhunt 15134
	  -- Find location of package
15135
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 15136
 
53 mhunt 15137
	  -- Remove Package
15138
	  IF envtab = 0
15139
	  THEN
15140
		 -- WORK IN PROGRESS --
15141
		 -- Delete package
15142
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
15143
		 RETURN 0;
15144
	  ELSIF envtab = 1
15145
	  THEN
15146
		 -- PENDING --
15147
		 -- Delete package
15148
		 pk_planned.remove_package (pvid, rtagid, userid);
15149
		 RETURN 0;
15150
	  ELSIF envtab = 2
15151
	  THEN
15152
		 -- RELEASED --
51 mhunt 15153
 
53 mhunt 15154
		 -- Check if is used by other packages
15155
		 isused := TRUE;
51 mhunt 15156
 
53 mhunt 15157
		 IF forceremove = 'N'
15158
		 THEN
15159
			SELECT COUNT (pv.pv_id)
15160
			  INTO recordcount
15161
			  FROM (SELECT dpv.pkg_id, dpv.v_ext
15162
					  FROM release_content rc,
15163
						   package_dependencies dep,
15164
						   package_versions dpv
15165
					 WHERE rc.rtag_id = rtagid
15166
					   AND rc.pv_id = dep.pv_id
15167
					   AND dep.dpv_id = dpv.pv_id) rdep,
15168
				   package_versions pv
15169
			 WHERE pv.pkg_id = rdep.pkg_id
15170
			   AND NVL (pv.v_ext, '|LINK_A_NULL|') =
15171
											 NVL (rdep.v_ext, '|LINK_A_NULL|')
15172
			   AND pv.pv_id = pvid;
51 mhunt 15173
 
53 mhunt 15174
			IF recordcount > 0
15175
			THEN
15176
			   RETURN 1;					-- Return 1 as package being used
15177
			ELSE
15178
			   isused := FALSE;
15179
			END IF;
15180
		 END IF;
51 mhunt 15181
 
53 mhunt 15182
		 IF forceremove = 'Y' OR NOT isused
15183
		 THEN
15184
			-- Delete old package
15185
			pk_release.remove_package (pvid, rtagid, userid);
15186
			-- Now do post Release Actions
15187
			pk_release.run_post_actions (pvid, rtagid);
15188
			RETURN 0;
15189
		 END IF;
15190
	  END IF;
51 mhunt 15191
   END;
15192
 
15193
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15194
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15195
 
51 mhunt 15196
   PROCEDURE get_environment_items (
53 mhunt 15197
	  viewtype		   IN	   NUMBER,
15198
	  userid			 IN	   NUMBER,
15199
	  rtagid			 IN	   NUMBER,
15200
	  sviewidshowlist	IN	   VARCHAR2,
15201
	  ntruerecordcount   OUT	  NUMBER,
15202
	  recordset		  OUT	  typecur
51 mhunt 15203
   )
15204
   IS
15205
   BEGIN
53 mhunt 15206
	  -- Get true record count because views can give false count
15207
	  SELECT COUNT (pl.pv_id)
15208
		INTO ntruerecordcount
15209
		FROM environment_view pl
15210
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15211
 
53 mhunt 15212
	  IF viewtype = 1
15213
	  THEN
15214
		 /*--- GUEST VIEW ---*/
15215
		 OPEN recordset FOR
15216
			SELECT   *
15217
				FROM (
15218
					  /* Base Views collapsed */
15219
					  SELECT DISTINCT vi.view_id, vi.view_name,
15220
									  TO_NUMBER (NULL) AS pkg_state,
15221
									  TO_NUMBER (NULL) AS deprecated_state,
15222
									  TO_NUMBER (NULL) AS pv_id,
15223
									  NULL AS pkg_name, NULL AS pkg_version,
15224
									  NULL AS dlocked, NULL AS pv_description,
15225
									  rel.operation
15226
								 FROM environment_view rel, views vi
15227
								WHERE rel.view_id = vi.view_id
15228
								  AND rtag_id = rtagid
15229
								  AND rel.view_id NOT IN (
15230
										 SELECT *
15231
										   FROM THE
15232
												   (SELECT CAST
15233
															  (in_list_number
15234
																  (sviewidshowlist
15235
																  ) AS relmgr_number_tab_t
15236
															  )
15237
													  FROM DUAL
15238
												   ))
15239
					  UNION
15240
					  /* Base Views expanded */
15241
					  SELECT vi.view_id, vi.view_name,
15242
							 DECODE (rel.pkg_state,
15243
									 NULL, 0,
15244
									 rel.pkg_state
15245
									) AS pkg_state,
15246
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15247
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15248
							 rel.operation
15249
						FROM environment_view rel,
15250
							 PACKAGES pkg,
15251
							 package_versions pv,
15252
							 views vi
15253
					   WHERE pv.pkg_id = pkg.pkg_id
15254
						 AND rel.pv_id = pv.pv_id
15255
						 AND rel.view_id = vi.view_id
15256
						 AND rel.view_id IN (
15257
								SELECT *
15258
								  FROM THE
15259
										  (SELECT CAST
15260
													 (in_list_number
15261
															  (sviewidshowlist) AS relmgr_number_tab_t
15262
													 )
15263
											 FROM DUAL
15264
										  ))
15265
						 AND rtag_id = rtagid) ord
15266
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15267
	  ELSIF viewtype = 2
15268
	  THEN
15269
		 /*--- PERSONAL VIEW ---*/
15270
		 OPEN recordset FOR
15271
			SELECT   *
15272
				FROM (
15273
					  /* Base Views collapsed */
15274
					  SELECT DISTINCT vi.view_id, vi.view_name,
15275
									  TO_NUMBER (NULL) AS pkg_state,
15276
									  TO_NUMBER (NULL) AS deprecated_state,
15277
									  TO_NUMBER (NULL) AS pv_id,
15278
									  NULL AS pkg_name, NULL AS pkg_version,
15279
									  NULL AS dlocked, NULL AS pv_description,
15280
									  rel.operation
15281
								 FROM environment_view rel,
15282
									  view_settings vs,
15283
									  views vi
15284
								WHERE rel.view_id = vi.view_id
15285
								  AND vs.view_id = rel.view_id
15286
								  AND vs.user_id = userid
15287
								  AND rtag_id = rtagid
15288
								  AND rel.view_id NOT IN (
15289
										 SELECT *
15290
										   FROM THE
15291
												   (SELECT CAST
15292
															  (in_list_number
15293
																  (sviewidshowlist
15294
																  ) AS relmgr_number_tab_t
15295
															  )
15296
													  FROM DUAL
15297
												   ))
15298
					  UNION
15299
					  /* Base Views expanded */
15300
					  SELECT vi.view_id, vi.view_name,
15301
							 DECODE (rel.pkg_state,
15302
									 NULL, 0,
15303
									 rel.pkg_state
15304
									) AS pkg_state,
15305
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15306
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15307
							 rel.operation
15308
						FROM environment_view rel,
15309
							 PACKAGES pkg,
15310
							 package_versions pv,
15311
							 views vi,
15312
							 view_settings vs
15313
					   WHERE pv.pkg_id = pkg.pkg_id
15314
						 AND rel.pv_id = pv.pv_id
15315
						 AND rel.view_id = vi.view_id
15316
						 AND vs.view_id = vi.view_id
15317
						 AND vs.user_id = userid
15318
						 AND rel.view_id IN (
15319
								SELECT *
15320
								  FROM THE
15321
										  (SELECT CAST
15322
													 (in_list_number
15323
															  (sviewidshowlist) AS relmgr_number_tab_t
15324
													 )
15325
											 FROM DUAL
15326
										  ))
15327
						 AND rtag_id = rtagid
15328
					  UNION
15329
					  /* Private Views collapsed */
15330
					  SELECT vi.view_id, vi.view_name,
15331
							 TO_NUMBER (NULL) AS pkg_state,
15332
							 TO_NUMBER (NULL) AS deprecated_state,
15333
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15334
							 NULL AS pkg_version, NULL AS dlocked,
15335
							 NULL AS pv_description,
15336
							 rel.operation
15337
						FROM view_settings vs,
15338
							 view_def vd,
15339
							 views vi,
15340
							 environment_view rel,
15341
							 package_versions pv
15342
					   WHERE vs.view_id = vi.view_id
15343
						 AND rel.pv_id = pv.pv_id
15344
						 AND vd.pkg_id = pv.pkg_id
15345
						 AND vd.view_id = vi.view_id
15346
						 AND vi.base_view = 'N'
15347
						 AND rel.rtag_id = rtagid
15348
						 AND vs.user_id = userid
15349
						 AND vi.view_id NOT IN (
15350
								SELECT *
15351
								  FROM THE
15352
										  (SELECT CAST
15353
													 (in_list_number
15354
															  (sviewidshowlist) AS relmgr_number_tab_t
15355
													 )
15356
											 FROM DUAL
15357
										  ))
15358
					  UNION
15359
					  /* Private Views expanded */
15360
					  SELECT vi.view_id, vi.view_name,
15361
							 DECODE (rel.pkg_state,
15362
									 NULL, 0,
15363
									 rel.pkg_state
15364
									) AS pkg_state,
15365
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15366
							 pv.pkg_version, pv.dlocked, pv.pv_description,
15367
							 rel.operation
15368
						FROM users usr,
15369
							 view_settings vs,
15370
							 view_def vd,
15371
							 views vi,
15372
							 environment_view rel,
15373
							 PACKAGES pkg,
15374
							 package_versions pv
15375
					   WHERE vs.user_id = usr.user_id
15376
						 AND vs.view_id = vi.view_id
15377
						 AND vd.view_id = vi.view_id
15378
						 AND pv.pkg_id = pkg.pkg_id
15379
						 AND rel.pv_id = pv.pv_id
15380
						 AND rel.rtag_id = rtagid
15381
						 AND vd.pkg_id = pkg.pkg_id
15382
						 AND vi.base_view = 'N'
15383
						 AND vi.view_id IN (
15384
								SELECT *
15385
								  FROM THE
15386
										  (SELECT CAST
15387
													 (in_list_number
15388
															  (sviewidshowlist) AS relmgr_number_tab_t
15389
													 )
15390
											 FROM DUAL
15391
										  ))
15392
						 AND usr.user_id = userid) ord
15393
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15394
	  END IF;
51 mhunt 15395
   END;
15396
 
15397
/*-------------------------------------------------------------------------------------------------------*/
15398
   PROCEDURE get_released_items (
53 mhunt 15399
	  viewtype		   IN	   NUMBER,
15400
	  userid			 IN	   NUMBER,
15401
	  rtagid			 IN	   NUMBER,
15402
	  sviewidshowlist	IN	   VARCHAR2,
15403
	  ntruerecordcount   OUT	  NUMBER,
15404
	  recordset		  OUT	  typecur
51 mhunt 15405
   )
15406
   IS
15407
   BEGIN
53 mhunt 15408
	  -- Get true record count because views can give false count
15409
	  SELECT COUNT (rc.pv_id)
15410
		INTO ntruerecordcount
15411
		FROM release_content rc
15412
	   WHERE rc.rtag_id = rtagid;
51 mhunt 15413
 
53 mhunt 15414
	  IF viewtype = 1
15415
	  THEN
15416
		 /*--- GUEST VIEW ---*/
15417
		 OPEN recordset FOR
15418
			SELECT   *
15419
				FROM (
15420
					  /* Base Views collapsed */
15421
					  SELECT DISTINCT vi.view_id, vi.view_name,
15422
									  TO_NUMBER (NULL) AS pkg_state,
15423
									  TO_NUMBER (NULL) AS deprecated_state,
15424
									  TO_NUMBER (NULL) AS pv_id,
15425
									  NULL AS pkg_name, NULL AS pkg_version,
15426
									  NULL AS dlocked, NULL AS pv_description
15427
								 FROM release_content rel, views vi
15428
								WHERE rel.base_view_id = vi.view_id
15429
								  AND rtag_id = rtagid
15430
								  AND rel.base_view_id NOT IN (
15431
										 SELECT *
15432
										   FROM THE
15433
												   (SELECT CAST
15434
															  (in_list_number
15435
																  (sviewidshowlist
15436
																  ) AS relmgr_number_tab_t
15437
															  )
15438
													  FROM DUAL
15439
												   ))
15440
					  UNION
15441
					  /* Base Views expanded */
15442
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15443
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15444
							 pv.pkg_version, pv.dlocked, pv.pv_description
15445
						FROM release_content rel,
15446
							 PACKAGES pkg,
15447
							 package_versions pv,
15448
							 views vi
15449
					   WHERE pv.pkg_id = pkg.pkg_id
15450
						 AND rel.pv_id = pv.pv_id
15451
						 AND rel.base_view_id = vi.view_id
15452
						 AND rel.base_view_id IN (
15453
								SELECT *
15454
								  FROM THE
15455
										  (SELECT CAST
15456
													 (in_list_number
15457
															  (sviewidshowlist) AS relmgr_number_tab_t
15458
													 )
15459
											 FROM DUAL
15460
										  ))
15461
						 AND rtag_id = rtagid) ord
15462
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15463
	  ELSIF viewtype = 2
15464
	  THEN
15465
		 /*--- PERSONAL VIEW ---*/
15466
		 OPEN recordset FOR
15467
			SELECT   *
15468
				FROM (
15469
					  /* Base Views collapsed */
15470
					  SELECT DISTINCT vi.view_id, vi.view_name,
15471
									  TO_NUMBER (NULL) AS pkg_state,
15472
									  TO_NUMBER (NULL) AS deprecated_state,
15473
									  TO_NUMBER (NULL) AS pv_id,
15474
									  NULL AS pkg_name, NULL AS pkg_version,
15475
									  NULL AS dlocked, NULL AS pv_description
15476
								 FROM release_content rel,
15477
									  view_settings vs,
15478
									  views vi
15479
								WHERE rel.base_view_id = vi.view_id
15480
								  AND vs.view_id = rel.base_view_id
15481
								  AND vs.user_id = userid
15482
								  AND rtag_id = rtagid
15483
								  AND rel.base_view_id NOT IN (
15484
										 SELECT *
15485
										   FROM THE
15486
												   (SELECT CAST
15487
															  (in_list_number
15488
																  (sviewidshowlist
15489
																  ) AS relmgr_number_tab_t
15490
															  )
15491
													  FROM DUAL
15492
												   ))
15493
					  UNION
15494
					  /* Base Views expanded */
15495
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15496
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15497
							 pv.pkg_version, pv.dlocked, pv.pv_description
15498
						FROM release_content rel,
15499
							 PACKAGES pkg,
15500
							 package_versions pv,
15501
							 views vi,
15502
							 view_settings vs
15503
					   WHERE pv.pkg_id = pkg.pkg_id
15504
						 AND rel.pv_id = pv.pv_id
15505
						 AND rel.base_view_id = vi.view_id
15506
						 AND vs.view_id = vi.view_id
15507
						 AND vs.user_id = userid
15508
						 AND rel.base_view_id IN (
15509
								SELECT *
15510
								  FROM THE
15511
										  (SELECT CAST
15512
													 (in_list_number
15513
															  (sviewidshowlist) AS relmgr_number_tab_t
15514
													 )
15515
											 FROM DUAL
15516
										  ))
15517
						 AND rtag_id = rtagid
15518
					  UNION
15519
					  /* Private Views collapsed */
15520
					  SELECT vi.view_id, vi.view_name,
15521
							 TO_NUMBER (NULL) AS pkg_state,
15522
							 TO_NUMBER (NULL) AS deprecated_state,
15523
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15524
							 NULL AS pkg_version, NULL AS dlocked,
15525
							 NULL AS pv_description
15526
						FROM view_settings vs,
15527
							 view_def vd,
15528
							 views vi,
15529
							 release_content rel,
15530
							 package_versions pv
15531
					   WHERE vs.view_id = vi.view_id
15532
						 AND rel.pv_id = pv.pv_id
15533
						 AND vd.pkg_id = pv.pkg_id
15534
						 AND vd.view_id = vi.view_id
15535
						 AND vi.base_view = 'N'
15536
						 AND rel.rtag_id = rtagid
15537
						 AND vs.user_id = userid
15538
						 AND vi.view_id NOT IN (
15539
								SELECT *
15540
								  FROM THE
15541
										  (SELECT CAST
15542
													 (in_list_number
15543
															  (sviewidshowlist) AS relmgr_number_tab_t
15544
													 )
15545
											 FROM DUAL
15546
										  ))
15547
					  UNION
15548
					  /* Private Views expanded */
15549
					  SELECT vi.view_id, vi.view_name, rel.pkg_state,
15550
							 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15551
							 pv.pkg_version, pv.dlocked, pv.pv_description
15552
						FROM users usr,
15553
							 view_settings vs,
15554
							 view_def vd,
15555
							 views vi,
15556
							 release_content rel,
15557
							 PACKAGES pkg,
15558
							 package_versions pv
15559
					   WHERE vs.user_id = usr.user_id
15560
						 AND vs.view_id = vi.view_id
15561
						 AND vd.view_id = vi.view_id
15562
						 AND pv.pkg_id = pkg.pkg_id
15563
						 AND rel.pv_id = pv.pv_id
15564
						 AND rel.rtag_id = rtagid
15565
						 AND vd.pkg_id = pkg.pkg_id
15566
						 AND vi.base_view = 'N'
15567
						 AND vi.view_id IN (
15568
								SELECT *
15569
								  FROM THE
15570
										  (SELECT CAST
15571
													 (in_list_number
15572
															  (sviewidshowlist) AS relmgr_number_tab_t
15573
													 )
15574
											 FROM DUAL
15575
										  ))
15576
						 AND usr.user_id = userid) ord
15577
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15578
	  END IF;
51 mhunt 15579
   END;
15580
 
15581
/*-------------------------------------------------------------------------------------------------------*/
15582
   PROCEDURE get_work_in_progress_items (
53 mhunt 15583
	  viewtype		   IN	   NUMBER,
15584
	  userid			 IN	   NUMBER,
15585
	  rtagid			 IN	   NUMBER,
15586
	  sviewidshowlist	IN	   VARCHAR2,
15587
	  ntruerecordcount   OUT	  NUMBER,
15588
	  recordset		  OUT	  typecur
51 mhunt 15589
   )
15590
   IS
15591
   BEGIN
53 mhunt 15592
	  -- Get true record count because views can give false count
15593
	  SELECT COUNT (wip.pv_id)
15594
		INTO ntruerecordcount
15595
		FROM work_in_progress wip
15596
	   WHERE wip.rtag_id = rtagid;
51 mhunt 15597
 
53 mhunt 15598
	  IF viewtype = 1
15599
	  THEN
15600
		 /*--- GUEST VIEW ---*/
15601
		 OPEN recordset FOR
15602
			SELECT   *
15603
				FROM (
15604
					  /* Base Views collapsed */
15605
					  SELECT DISTINCT vi.view_id, vi.view_name,
15606
									  TO_NUMBER (NULL) AS pkg_state,
15607
									  TO_NUMBER (NULL) AS deprecated_state,
15608
									  TO_NUMBER (NULL) AS pv_id,
15609
									  NULL AS pkg_name, NULL AS pkg_version,
15610
									  NULL AS dlocked, NULL AS pv_description
15611
								 FROM work_in_progress rel, views vi
15612
								WHERE rel.view_id = vi.view_id
15613
								  AND rtag_id = rtagid
15614
								  AND rel.view_id NOT IN (
15615
										 SELECT *
15616
										   FROM THE
15617
												   (SELECT CAST
15618
															  (in_list_number
15619
																  (sviewidshowlist
15620
																  ) AS relmgr_number_tab_t
15621
															  )
15622
													  FROM DUAL
15623
												   ))
15624
					  UNION
15625
					  /* Base Views expanded */
15626
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15627
 
15628
							 --rel.pkg_state,
15629
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15630
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15631
							 pv.pv_description
15632
						FROM work_in_progress rel,
15633
							 PACKAGES pkg,
15634
							 package_versions pv,
15635
							 views vi
15636
					   WHERE pv.pkg_id = pkg.pkg_id
15637
						 AND rel.pv_id = pv.pv_id
15638
						 AND rel.view_id = vi.view_id
15639
						 AND rel.view_id IN (
15640
								SELECT *
15641
								  FROM THE
15642
										  (SELECT CAST
15643
													 (in_list_number
15644
															  (sviewidshowlist) AS relmgr_number_tab_t
15645
													 )
15646
											 FROM DUAL
15647
										  ))
15648
						 AND rtag_id = rtagid) ord
15649
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15650
	  ELSIF viewtype = 2
15651
	  THEN
15652
		 /*--- PERSONAL VIEW ---*/
15653
		 OPEN recordset FOR
15654
			SELECT   *
15655
				FROM (
15656
					  /* Base Views collapsed */
15657
					  SELECT DISTINCT vi.view_id, vi.view_name,
15658
									  TO_NUMBER (NULL) AS pkg_state,
15659
									  TO_NUMBER (NULL) AS deprecated_state,
15660
									  TO_NUMBER (NULL) AS pv_id,
15661
									  NULL AS pkg_name, NULL AS pkg_version,
15662
									  NULL AS dlocked, NULL AS pv_description
15663
								 FROM work_in_progress rel,
15664
									  view_settings vs,
15665
									  views vi
15666
								WHERE rel.view_id = vi.view_id
15667
								  AND vs.view_id = rel.view_id
15668
								  AND vs.user_id = userid
15669
								  AND rtag_id = rtagid
15670
								  AND rel.view_id NOT IN (
15671
										 SELECT *
15672
										   FROM THE
15673
												   (SELECT CAST
15674
															  (in_list_number
15675
																  (sviewidshowlist
15676
																  ) AS relmgr_number_tab_t
15677
															  )
15678
													  FROM DUAL
15679
												   ))
15680
					  UNION
15681
					  /* Base Views expanded */
15682
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15683
 
15684
							 --rel.pkg_state,
15685
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15686
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15687
							 pv.pv_description
15688
						FROM work_in_progress rel,
15689
							 PACKAGES pkg,
15690
							 package_versions pv,
15691
							 views vi,
15692
							 view_settings vs
15693
					   WHERE pv.pkg_id = pkg.pkg_id
15694
						 AND rel.pv_id = pv.pv_id
15695
						 AND rel.view_id = vi.view_id
15696
						 AND vs.view_id = vi.view_id
15697
						 AND vs.user_id = userid
15698
						 AND rel.view_id IN (
15699
								SELECT *
15700
								  FROM THE
15701
										  (SELECT CAST
15702
													 (in_list_number
15703
															  (sviewidshowlist) AS relmgr_number_tab_t
15704
													 )
15705
											 FROM DUAL
15706
										  ))
15707
						 AND rtag_id = rtagid
15708
					  UNION
15709
					  /* Private Views collapsed */
15710
					  SELECT vi.view_id, vi.view_name,
15711
							 TO_NUMBER (NULL) AS pkg_state,
15712
							 TO_NUMBER (NULL) AS deprecated_state,
15713
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15714
							 NULL AS pkg_version, NULL AS dlocked,
15715
							 NULL AS pv_description
15716
						FROM view_settings vs,
15717
							 view_def vd,
15718
							 views vi,
15719
							 work_in_progress rel,
15720
							 package_versions pv
15721
					   WHERE vs.view_id = vi.view_id
15722
						 AND rel.pv_id = pv.pv_id
15723
						 AND vd.pkg_id = pv.pkg_id
15724
						 AND vd.view_id = vi.view_id
15725
						 AND vi.base_view = 'N'
15726
						 AND rel.rtag_id = rtagid
15727
						 AND vs.user_id = userid
15728
						 AND vi.view_id NOT 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
					  UNION
15738
					  /* Private Views expanded */
15739
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15740
 
15741
							 --rel.pkg_state,
15742
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15743
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15744
							 pv.pv_description
15745
						FROM users usr,
15746
							 view_settings vs,
15747
							 view_def vd,
15748
							 views vi,
15749
							 work_in_progress rel,
15750
							 PACKAGES pkg,
15751
							 package_versions pv
15752
					   WHERE vs.user_id = usr.user_id
15753
						 AND vs.view_id = vi.view_id
15754
						 AND vd.view_id = vi.view_id
15755
						 AND pv.pkg_id = pkg.pkg_id
15756
						 AND rel.pv_id = pv.pv_id
15757
						 AND rel.rtag_id = rtagid
15758
						 AND vd.pkg_id = pkg.pkg_id
15759
						 AND vi.base_view = 'N'
15760
						 AND vi.view_id IN (
15761
								SELECT *
15762
								  FROM THE
15763
										  (SELECT CAST
15764
													 (in_list_number
15765
															  (sviewidshowlist) AS relmgr_number_tab_t
15766
													 )
15767
											 FROM DUAL
15768
										  ))
15769
						 AND usr.user_id = userid) ord
15770
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15771
	  END IF;
51 mhunt 15772
   END;
15773
 
15774
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 15775
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
15776
 
51 mhunt 15777
   PROCEDURE get_pending_items (
53 mhunt 15778
	  viewtype		   IN	   NUMBER,
15779
	  userid			 IN	   NUMBER,
15780
	  rtagid			 IN	   NUMBER,
15781
	  sviewidshowlist	IN	   VARCHAR2,
15782
	  ntruerecordcount   OUT	  NUMBER,
15783
	  recordset		  OUT	  typecur
51 mhunt 15784
   )
15785
   IS
15786
   BEGIN
53 mhunt 15787
	  -- Get true record count because views can give false count
15788
	  SELECT COUNT (pl.pv_id)
15789
		INTO ntruerecordcount
15790
		FROM planned pl
15791
	   WHERE pl.rtag_id = rtagid;
51 mhunt 15792
 
53 mhunt 15793
	  IF viewtype = 1
15794
	  THEN
15795
		 /*--- GUEST VIEW ---*/
15796
		 OPEN recordset FOR
15797
			SELECT   *
15798
				FROM (
15799
					  /* Base Views collapsed */
15800
					  SELECT DISTINCT vi.view_id, vi.view_name,
15801
									  TO_NUMBER (NULL) AS pkg_state,
15802
									  TO_NUMBER (NULL) AS deprecated_state,
15803
									  TO_NUMBER (NULL) AS pv_id,
15804
									  NULL AS pkg_name, NULL AS pkg_version,
15805
									  NULL AS dlocked, NULL AS pv_description,
15806
									  rel.operation
15807
								 FROM planned rel, views vi
15808
								WHERE rel.view_id = vi.view_id
15809
								  AND rtag_id = rtagid
15810
								  AND rel.view_id NOT IN (
15811
										 SELECT *
15812
										   FROM THE
15813
												   (SELECT CAST
15814
															  (in_list_number
15815
																  (sviewidshowlist
15816
																  ) AS relmgr_number_tab_t
15817
															  )
15818
													  FROM DUAL
15819
												   ))
15820
					  UNION
15821
					  /* Base Views expanded */
15822
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15823
 
15824
							 --rel.pkg_state,
15825
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15826
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15827
							 pv.pv_description,
15828
							 rel.operation
15829
						FROM planned rel,
15830
							 PACKAGES pkg,
15831
							 package_versions pv,
15832
							 views vi
15833
					   WHERE pv.pkg_id = pkg.pkg_id
15834
						 AND rel.pv_id = pv.pv_id
15835
						 AND rel.view_id = vi.view_id
15836
						 AND rel.view_id IN (
15837
								SELECT *
15838
								  FROM THE
15839
										  (SELECT CAST
15840
													 (in_list_number
15841
															  (sviewidshowlist) AS relmgr_number_tab_t
15842
													 )
15843
											 FROM DUAL
15844
										  ))
15845
						 AND rtag_id = rtagid) ord
15846
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15847
	  ELSIF viewtype = 2
15848
	  THEN
15849
		 /*--- PERSONAL VIEW ---*/
15850
		 OPEN recordset FOR
15851
			SELECT   *
15852
				FROM (
15853
					  /* Base Views collapsed */
15854
					  SELECT DISTINCT vi.view_id, vi.view_name,
15855
									  TO_NUMBER (NULL) AS pkg_state,
15856
									  TO_NUMBER (NULL) AS deprecated_state,
15857
									  TO_NUMBER (NULL) AS pv_id,
15858
									  NULL AS pkg_name, NULL AS pkg_version,
15859
									  NULL AS dlocked, NULL AS pv_description,
15860
									  rel.operation
15861
								 FROM planned rel, view_settings vs, views vi
15862
								WHERE rel.view_id = vi.view_id
15863
								  AND vs.view_id = rel.view_id
15864
								  AND vs.user_id = userid
15865
								  AND rtag_id = rtagid
15866
								  AND rel.view_id NOT IN (
15867
										 SELECT *
15868
										   FROM THE
15869
												   (SELECT CAST
15870
															  (in_list_number
15871
																  (sviewidshowlist
15872
																  ) AS relmgr_number_tab_t
15873
															  )
15874
													  FROM DUAL
15875
												   ))
15876
					  UNION
15877
					  /* Base Views expanded */
15878
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15879
 
15880
							 --rel.pkg_state,
15881
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15882
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15883
							 pv.pv_description,
15884
							 rel.operation
15885
						FROM planned rel,
15886
							 PACKAGES pkg,
15887
							 package_versions pv,
15888
							 views vi,
15889
							 view_settings vs
15890
					   WHERE pv.pkg_id = pkg.pkg_id
15891
						 AND rel.pv_id = pv.pv_id
15892
						 AND rel.view_id = vi.view_id
15893
						 AND vs.view_id = vi.view_id
15894
						 AND vs.user_id = userid
15895
						 AND rel.view_id IN (
15896
								SELECT *
15897
								  FROM THE
15898
										  (SELECT CAST
15899
													 (in_list_number
15900
															  (sviewidshowlist) AS relmgr_number_tab_t
15901
													 )
15902
											 FROM DUAL
15903
										  ))
15904
						 AND rtag_id = rtagid
15905
					  UNION
15906
					  /* Private Views collapsed */
15907
					  SELECT vi.view_id, vi.view_name,
15908
							 TO_NUMBER (NULL) AS pkg_state,
15909
							 TO_NUMBER (NULL) AS deprecated_state,
15910
							 TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
15911
							 NULL AS pkg_version, NULL AS dlocked,
15912
							 NULL AS pv_description,
15913
							 rel.operation
15914
						FROM view_settings vs,
15915
							 view_def vd,
15916
							 views vi,
15917
							 planned rel,
15918
							 package_versions pv
15919
					   WHERE vs.view_id = vi.view_id
15920
						 AND rel.pv_id = pv.pv_id
15921
						 AND vd.pkg_id = pv.pkg_id
15922
						 AND vd.view_id = vi.view_id
15923
						 AND vi.base_view = 'N'
15924
						 AND rel.rtag_id = rtagid
15925
						 AND vs.user_id = userid
15926
						 AND vi.view_id NOT IN (
15927
								SELECT *
15928
								  FROM THE
15929
										  (SELECT CAST
15930
													 (in_list_number
15931
															  (sviewidshowlist) AS relmgr_number_tab_t
15932
													 )
15933
											 FROM DUAL
15934
										  ))
15935
					  UNION
15936
					  /* Private Views expanded */
15937
					  SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
15938
 
15939
							 --rel.pkg_state,
15940
							 TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
15941
							 pkg.pkg_name, pv.pkg_version, pv.dlocked,
15942
							 pv.pv_description,
15943
							 rel.operation
15944
						FROM users usr,
15945
							 view_settings vs,
15946
							 view_def vd,
15947
							 views vi,
15948
							 planned rel,
15949
							 PACKAGES pkg,
15950
							 package_versions pv
15951
					   WHERE vs.user_id = usr.user_id
15952
						 AND vs.view_id = vi.view_id
15953
						 AND vd.view_id = vi.view_id
15954
						 AND pv.pkg_id = pkg.pkg_id
15955
						 AND rel.pv_id = pv.pv_id
15956
						 AND rel.rtag_id = rtagid
15957
						 AND vd.pkg_id = pkg.pkg_id
15958
						 AND vi.base_view = 'N'
15959
						 AND vi.view_id IN (
15960
								SELECT *
15961
								  FROM THE
15962
										  (SELECT CAST
15963
													 (in_list_number
15964
															  (sviewidshowlist) AS relmgr_number_tab_t
15965
													 )
15966
											 FROM DUAL
15967
										  ))
15968
						 AND usr.user_id = userid) ord
15969
			ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
15970
	  END IF;
51 mhunt 15971
   END;
15972
 
15973
/*-------------------------------------------------------------------------------------------------------*/
15974
   PROCEDURE get_view_content (
53 mhunt 15975
	  rtagid	  IN	   NUMBER,
15976
	  viewid	  IN	   NUMBER,
15977
	  recordset   OUT	  typecur
51 mhunt 15978
   )
15979
   IS
53 mhunt 15980
	  isbaseview   CHAR (1);
51 mhunt 15981
   BEGIN
53 mhunt 15982
	  -- Check if the view is BASE VIEW
15983
	  SELECT vi.base_view
15984
		INTO isbaseview
15985
		FROM views vi
15986
	   WHERE vi.view_id = viewid;
51 mhunt 15987
 
53 mhunt 15988
	  IF (isbaseview = 'Y')
15989
	  THEN
15990
		 -- Get Base view content
15991
		 OPEN recordset FOR
15992
			SELECT   DECODE (rel.pkg_state,
15993
							 NULL, 0,
15994
							 rel.pkg_state
15995
							) AS pkg_state,
15996
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
15997
					 pv.pkg_version, pv.dlocked, pv.pv_description,
15998
					 pv.build_type,
15999
					 rel.operation
16000
				FROM environment_view rel, PACKAGES pkg, package_versions pv
16001
			   WHERE pv.pkg_id = pkg.pkg_id
16002
				 AND rel.pv_id = pv.pv_id
16003
				 AND rel.view_id = viewid
16004
				 AND rel.rtag_id = rtagid
16005
			ORDER BY UPPER (pkg.pkg_name);
16006
	  ELSE
16007
		 -- Get non base view content
16008
		 OPEN recordset FOR
16009
			SELECT   DECODE (rel.pkg_state,
16010
							 NULL, 0,
16011
							 rel.pkg_state
16012
							) AS pkg_state,
16013
					 rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16014
					 pv.pkg_version, pv.dlocked, pv.pv_description,
16015
					 pv.build_type,
16016
					 rel.operation
16017
				FROM environment_view rel,
16018
					 PACKAGES pkg,
16019
					 package_versions pv,
16020
					 view_def vd
16021
			   WHERE pv.pkg_id = pkg.pkg_id
16022
				 AND rel.pv_id = pv.pv_id
16023
				 AND rel.rtag_id = rtagid
16024
				 AND vd.view_id = viewid
16025
				 AND vd.pkg_id = pv.pkg_id
16026
			ORDER BY UPPER (pkg.pkg_name);
16027
	  END IF;
51 mhunt 16028
   END;
16029
 
16030
/*-------------------------------------------------------------------------------------------------------*/
16031
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
53 mhunt 16032
	  RETURN NUMBER
51 mhunt 16033
   IS
53 mhunt 16034
	  envtab			 NUMBER;
16035
	  returnvalue		NUMBER;
16036
	  return_not_found   NUMBER := -1;
51 mhunt 16037
   BEGIN
53 mhunt 16038
	  envtab := get_package_area (pvid, rtagid);
51 mhunt 16039
 
53 mhunt 16040
	  IF envtab = 0
16041
	  THEN
16042
		 -- WORK IN PROGRESS --
16043
		 returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
16044
	  ELSIF envtab = 1
16045
	  THEN
16046
		 -- PENDING --
16047
		 returnvalue := pk_planned.get_package_view (pvid, rtagid);
16048
	  ELSIF envtab = 2
16049
	  THEN
16050
		 -- RELEASED --
16051
		 returnvalue := pk_release.get_package_view (pvid, rtagid);
16052
	  ELSE
16053
		 -- This may be a Patch not located anywhere but unlocked
16054
		 returnvalue := return_not_found;
16055
	  END IF;
51 mhunt 16056
 
53 mhunt 16057
	  RETURN returnvalue;
51 mhunt 16058
   END;
16059
 
16060
/*-------------------------------------------------------------------------------------------------------*/
16061
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16062
   IS
53 mhunt 16063
	  viewid		  NUMBER;
16064
	  envtab		  NUMBER;
16065
	  ispatch		 CHAR (1) := NULL;
16066
	  buildtype	   CHAR (1) := NULL;
16067
	  lastversionid   NUMBER;
51 mhunt 16068
   BEGIN
53 mhunt 16069
	  -- Check if package is patch
16070
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16071
		INTO ispatch, buildtype, lastversionid
16072
		FROM package_versions pv
16073
	   WHERE pv.pv_id = pvid;
51 mhunt 16074
 
53 mhunt 16075
	  -- Get ViewId
16076
	  viewid := get_package_view (pvid, rtagid);
16077
	  -- Remove from current area
16078
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16079
 
53 mhunt 16080
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16081
	  -- Exclude patches, ripple builds
16082
	  IF (envtab < 0)
16083
	  THEN
16084
		 -- Not found in work-in-progress or pending
16085
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16086
		 THEN
16087
			raise_application_error (-20000,
16088
									 'This package cannot be released here.'
16089
									);
16090
		 END IF;
16091
	  END IF;
51 mhunt 16092
 
53 mhunt 16093
	  -- Log
16094
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16095
 
53 mhunt 16096
	  IF envtab = 0
16097
	  THEN
16098
		 -- WORK IN PROGRESS --
16099
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16100
	  ELSIF envtab = 1
16101
	  THEN
16102
		 -- PENDING --
16103
		 pk_planned.remove_package (pvid, rtagid, userid);
16104
	  END IF;
51 mhunt 16105
 
53 mhunt 16106
	  -- Change package state
16107
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16108
 
53 mhunt 16109
	  -- Make sure it is valid BASE VIEW
16110
	  IF viewid < 1
16111
	  THEN
16112
		 viewid := 7;							-- This is default base view
16113
	  END IF;
51 mhunt 16114
 
53 mhunt 16115
	  IF (ispatch IS NULL)
16116
	  THEN
16117
		 -- Add package to new area
16118
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16119
	  END IF;
51 mhunt 16120
 
53 mhunt 16121
	  -- Now do post Release Actions
16122
	  pk_release.run_post_actions (pvid, rtagid);
51 mhunt 16123
 
53 mhunt 16124
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16125
	  DELETE FROM do_not_ripple
16126
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16127
 
53 mhunt 16128
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16129
	  DELETE FROM advisory_ripple
16130
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16131
 
53 mhunt 16132
	  -- Log
16133
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16134
   END;
16135
 
16136
/*-------------------------------------------------------------------------------------------------------*/
16137
   PROCEDURE auto_make_release (
53 mhunt 16138
	  pvid			IN   NUMBER,
16139
	  rtagid		  IN   NUMBER,
16140
	  userid		  IN   NUMBER,
16141
	  vext			IN   package_versions.v_ext%TYPE,
16142
	  ssv_ext		 IN   package_versions.v_ext%TYPE,
16143
	  clonefrompvid   IN   NUMBER
51 mhunt 16144
   )
16145
   IS
53 mhunt 16146
	  viewid		  NUMBER;
16147
	  envtab		  NUMBER;
16148
	  ispatch		 CHAR (1) := NULL;
16149
	  buildtype	   CHAR (1) := NULL;
16150
	  lastversionid   NUMBER;
51 mhunt 16151
   BEGIN
53 mhunt 16152
	  -- Check if package is patch
16153
	  SELECT pv.is_patch, pv.build_type, pv.last_pv_id
16154
		INTO ispatch, buildtype, lastversionid
16155
		FROM package_versions pv
16156
	   WHERE pv.pv_id = pvid;
51 mhunt 16157
 
53 mhunt 16158
	  IF vext <> ssv_ext
16159
	  THEN
16160
		 -- Get ViewId
16161
		 viewid := get_package_view (clonefrompvid, rtagid);
16162
		 -- Remove from current area
16163
		 envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
16164
	  ELSE
16165
		 -- Get ViewId
16166
		 viewid := get_package_view (pvid, rtagid);
16167
		 -- Remove from current area
16168
		 envtab := pk_environment.get_package_area (pvid, rtagid);
16169
	  END IF;
51 mhunt 16170
 
53 mhunt 16171
	  -- Make sure that package was in work-in-progress or pending before makeing it release
16172
	  -- Exclude patches, ripple builds
16173
	  IF (envtab < 0)
16174
	  THEN
16175
		 -- Not found in work-in-progress or pending
16176
		 IF (ispatch IS NULL) AND (buildtype = 'M')
16177
		 THEN
16178
			raise_application_error (-20000,
16179
									 'This package cannot be released here.'
16180
									);
16181
		 END IF;
16182
	  END IF;
51 mhunt 16183
 
53 mhunt 16184
	  -- Log
16185
	  log_action (pvid, 'action', userid, 'Start of Make Package Release...');
51 mhunt 16186
 
53 mhunt 16187
	  IF vext <> ssv_ext
16188
	  THEN
16189
		 IF envtab = 0
16190
		 THEN
16191
			-- WORK IN PROGRESS --
16192
			pk_work_in_progress.remove_package (clonefrompvid, rtagid,
16193
												userid);
16194
		 ELSIF envtab = 1
16195
		 THEN
16196
			-- PENDING --
16197
			pk_planned.remove_package (clonefrompvid, rtagid, userid);
16198
		 ELSIF envtab = 2
16199
		 THEN
16200
			-- RELEASED --
16201
			pk_release.remove_package (clonefrompvid, rtagid, userid);
16202
		 END IF;
16203
	  ELSE
16204
		 IF envtab = 0
16205
		 THEN
16206
			-- WORK IN PROGRESS --
16207
			pk_work_in_progress.remove_package (pvid, rtagid, userid);
16208
		 ELSIF envtab = 1
16209
		 THEN
16210
			-- PENDING --
16211
			pk_planned.remove_package (pvid, rtagid, userid);
16212
		 END IF;
16213
	  END IF;
51 mhunt 16214
 
53 mhunt 16215
	  -- Change package state
16216
	  pk_package.change_state (pvid, 'Y', userid);
51 mhunt 16217
 
53 mhunt 16218
	  -- Make sure it is valid BASE VIEW
16219
	  IF viewid < 1
16220
	  THEN
16221
		 viewid := 7;							-- This is default base view
16222
	  END IF;
51 mhunt 16223
 
53 mhunt 16224
	  IF (ispatch IS NULL)
16225
	  THEN
16226
		 -- Add package to new area
16227
		 pk_release.add_package (pvid, viewid, rtagid, userid);
16228
	  END IF;
51 mhunt 16229
 
53 mhunt 16230
	  -- Now do post Release Actions
16231
	  pk_release.run_post_actions (pvid, rtagid);
16232
	  -- Now update the Dash_Board Table (DEPRECATED)
16233
	  pk_rmapi.update_dash_board (rtagid);
51 mhunt 16234
 
53 mhunt 16235
	  -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
16236
	  DELETE FROM do_not_ripple
16237
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16238
 
53 mhunt 16239
	  -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
16240
	  DELETE FROM advisory_ripple
16241
			WHERE rtag_id = rtagid AND pv_id = lastversionid;
51 mhunt 16242
 
53 mhunt 16243
	  -- Log
16244
	  log_action (pvid, 'action', userid, 'End of Make Package Release...');
51 mhunt 16245
   END;
16246
 
16247
/*-------------------------------------------------------------------------------------------------------*/
16248
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16249
   IS
53 mhunt 16250
	  viewid   NUMBER;
16251
	  envtab   NUMBER;
51 mhunt 16252
   BEGIN
53 mhunt 16253
	  -- Get ViewId
16254
	  --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
16255
	  viewid := get_package_view (pvid, rtagid);
16256
	  -- Remove from current area
16257
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16258
	  -- Log
16259
	  log_action (pvid,
16260
				  'action',
16261
				  userid,
16262
				  'Start of Make Package UnRelease...'
16263
				 );
51 mhunt 16264
 
53 mhunt 16265
	  IF envtab = 2
16266
	  THEN
16267
		 -- RELEASE AREA --
16268
		 pk_release.remove_package (pvid, rtagid, userid);
16269
	  ELSIF envtab = 1
16270
	  THEN
16271
		 -- PENDING --
16272
		 pk_planned.remove_package (pvid, rtagid, userid);
16273
	  END IF;
51 mhunt 16274
 
53 mhunt 16275
	  -- Change package state
16276
	  pk_package.change_state (pvid, 'N', userid);
51 mhunt 16277
 
53 mhunt 16278
	  -- Make sure it is valid BASE VIEW
16279
	  IF viewid < 1
16280
	  THEN
16281
		 viewid := 7;							-- This is default base view
16282
	  END IF;
51 mhunt 16283
 
53 mhunt 16284
	  -- Add package to new area
16285
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16286
	  -- Now do post Release Actions
16287
	  pk_release.run_post_actions (pvid, rtagid);
16288
	  -- Log
16289
	  log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
51 mhunt 16290
   END;
16291
 
16292
/*-------------------------------------------------------------------------------------------------------*/
16293
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16294
   IS
53 mhunt 16295
	  viewid	  NUMBER;
16296
	  ispatch	 CHAR (1) := NULL;
16297
	  buildtype   CHAR (1) := NULL;
51 mhunt 16298
   BEGIN
53 mhunt 16299
	  -- Check if package is patch
16300
	  SELECT pv.is_patch, pv.build_type
16301
		INTO ispatch, buildtype
16302
		FROM package_versions pv
16303
	   WHERE pv.pv_id = pvid;
51 mhunt 16304
 
53 mhunt 16305
	  -- Get ViewId
16306
	  viewid := get_package_view (pvid, rtagid);
16307
	  --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16308
 
53 mhunt 16309
	  -- Log
16310
	  log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
51 mhunt 16311
 
53 mhunt 16312
	  IF (ispatch IS NULL)
16313
	  THEN
16314
		 -- Remove from current area
16315
		 pk_work_in_progress.remove_package (pvid, rtagid, userid);
16316
		 -- Change package state
16317
		 pk_package.change_state (pvid, 'P', userid);
16318
		 -- Add package to new area
16319
		 pk_planned.add_package (pvid, viewid, rtagid, userid);
16320
	  END IF;
51 mhunt 16321
 
53 mhunt 16322
	  -- Log
16323
	  log_action (pvid, 'action', userid, 'End of Make Package Pending...');
51 mhunt 16324
   END;
16325
 
16326
/*-------------------------------------------------------------------------------------------------------*/
16327
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16328
   IS
16329
   BEGIN
53 mhunt 16330
	  -- Log
16331
	  log_action (pvid,
16332
				  'action',
16333
				  userid,
16334
				  'Start of Package Pending Approval...'
16335
				 );
16336
	  -- Change package state
16337
	  pk_package.change_state (pvid, 'A', userid);
16338
	  -- Log
16339
	  log_action (pvid, 'action', userid,
16340
				  'End of Package Pending Approval...');
51 mhunt 16341
   END;
16342
 
16343
/*-------------------------------------------------------------------------------------------------------*/
16344
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
16345
   IS
53 mhunt 16346
	  viewid   NUMBER;
16347
	  operation CHAR;
51 mhunt 16348
   BEGIN
53 mhunt 16349
	  -- Get ViewId
16350
	  viewid := get_package_view (pvid, rtagid);
16351
	  -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
51 mhunt 16352
 
53 mhunt 16353
	  -- DEVI-45275
16354
	  -- If the package version is an official version that is to be rejected from a merge operation
16355
	  -- then find out in order to prevent it being added back to work-in-progress table . This will
16356
	  -- be denoted by the operation field in the planned table being A or S
16357
	  operation := ' ';
16358
	  SELECT
16359
	  (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
16360
	  FROM planned pl
16361
	  WHERE pl.PV_ID = pvid
16362
	  AND pl.RTAG_ID = rtagid;
16363
 
16364
	  -- Log
16365
	  log_action (pvid, 'action', userid, 'Start of Reject Package...');
16366
	  -- Remove from current area
16367
	  pk_planned.remove_package (pvid, rtagid, userid);
16368
 
16369
	  -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
16370
	  IF operation <> 'A' AND operation <> 'S'
16371
	  THEN
16372
	  -- Change package state
16373
	  pk_package.change_state (pvid, 'R', userid);
16374
	  -- Add package to new area
16375
	  pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
16376
	  ELSE
16377
		log_action (pvid, 'action', userid, 'Rejected Package Merge');
16378
	  END IF;
16379
	  -- Log
16380
	  log_action (pvid, 'action', userid, 'End of Reject Package...');
51 mhunt 16381
   END;
16382
 
16383
/*-------------------------------------------------------------------------------------------------------*/
16384
   PROCEDURE change_package_view (
53 mhunt 16385
	  pvid		IN   NUMBER,
16386
	  rtagid	  IN   NUMBER,
16387
	  newviewid   IN   NUMBER
51 mhunt 16388
   )
16389
   IS
53 mhunt 16390
	  envtab   NUMBER;
51 mhunt 16391
   BEGIN
53 mhunt 16392
	  envtab := pk_environment.get_package_area (pvid, rtagid);
51 mhunt 16393
 
53 mhunt 16394
	  IF envtab = 0
16395
	  THEN
16396
		 -- WORK IN PROGRESS --
16397
		 pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
16398
	  ELSIF envtab = 1
16399
	  THEN
16400
		 -- PENDING --
16401
		 pk_planned.change_package_view (pvid, rtagid, newviewid);
16402
	  ELSIF envtab = 2
16403
	  THEN
16404
		 -- RELEASED --
16405
		 pk_release.change_package_view (pvid, rtagid, newviewid);
16406
	  END IF;
51 mhunt 16407
   END;
16408
 
16409
/*-------------------------------------------------------------------------------------------------------*/
16410
   PROCEDURE find_package (
53 mhunt 16411
	  skeyword	  IN	   VARCHAR2,
16412
	  nrtagid	   IN	   NUMBER,
16413
	  nsearcharea   IN	   NUMBER,
16414
	  recordset	 OUT	  typecur
51 mhunt 16415
   )
16416
   IS
16417
   BEGIN
53 mhunt 16418
	  IF nsearcharea = 0
16419
	  THEN
16420
		 /* Search Work In Progress */
16421
		 OPEN recordset FOR
16422
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16423
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16424
					 pv.modified_stamp, usr.full_name, usr.user_email
16425
				FROM views vi,
16426
					 work_in_progress rc,
16427
					 PACKAGES pkg,
16428
					 package_versions pv,
16429
					 users usr
16430
			   WHERE rc.view_id = vi.view_id
16431
				 AND rc.pv_id = pv.pv_id
16432
				 AND pkg.pkg_id = pv.pkg_id
16433
				 AND pv.modifier_id = usr.user_id
16434
				 AND rc.rtag_id = nrtagid
16435
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16436
			ORDER BY UPPER (pkg.pkg_name);
16437
	  ELSIF nsearcharea = 1
16438
	  THEN
16439
		 /* Search Pending */
16440
		 OPEN recordset FOR
16441
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16442
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16443
					 pv.modified_stamp, usr.full_name, usr.user_email
16444
				FROM views vi,
16445
					 planned rc,
16446
					 PACKAGES pkg,
16447
					 package_versions pv,
16448
					 users usr
16449
			   WHERE rc.view_id = vi.view_id
16450
				 AND rc.pv_id = pv.pv_id
16451
				 AND pkg.pkg_id = pv.pkg_id
16452
				 AND pv.modifier_id = usr.user_id
16453
				 AND rc.rtag_id = nrtagid
16454
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16455
			ORDER BY UPPER (pkg.pkg_name);
16456
	  ELSIF nsearcharea = 2
16457
	  THEN
16458
		 /* Search Released */
16459
		 OPEN recordset FOR
16460
			SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
16461
					 pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
16462
					 pv.modified_stamp, usr.full_name, usr.user_email
16463
				FROM views vi,
16464
					 release_content rc,
16465
					 PACKAGES pkg,
16466
					 package_versions pv,
16467
					 users usr
16468
			   WHERE rc.base_view_id = vi.view_id
16469
				 AND rc.pv_id = pv.pv_id
16470
				 AND pkg.pkg_id = pv.pkg_id
16471
				 AND pv.modifier_id = usr.user_id
16472
				 AND rc.rtag_id = nrtagid
16473
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16474
			ORDER BY UPPER (pkg.pkg_name);
16475
	  ELSIF nsearcharea = 3
16476
	  THEN
16477
		 /* Search ALL */
16478
		 OPEN recordset FOR
16479
			SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
16480
					 pv.pv_id, pv.pkg_version, pv.comments,
16481
					 pv.modified_stamp, usr.full_name, usr.user_email
16482
				FROM views vi,
16483
					 environment_view rc,
16484
					 PACKAGES pkg,
16485
					 package_versions pv,
16486
					 users usr
16487
			   WHERE rc.view_id = vi.view_id
16488
				 AND rc.pv_id = pv.pv_id
16489
				 AND pkg.pkg_id = pv.pkg_id
16490
				 AND pv.modifier_id = usr.user_id
16491
				 AND rc.rtag_id = nrtagid
16492
				 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
16493
			ORDER BY UPPER (pkg.pkg_name);
16494
	  END IF;
51 mhunt 16495
   END;
16496
 
16497
/*-------------------------------------------------------------------------------------------------------*/
16498
   PROCEDURE find_file (
53 mhunt 16499
	  skeyword	  IN	   VARCHAR2,
16500
	  nrtagid	   IN	   NUMBER,
16501
	  nsearcharea   IN	   NUMBER,
16502
	  npagesize	 IN	   NUMBER,
16503
	  recordset	 OUT	  typecur
51 mhunt 16504
   )
16505
   IS
16506
   BEGIN
53 mhunt 16507
	  IF nsearcharea = 0
16508
	  THEN
16509
		 /* Search Work In Progress */
16510
		 OPEN recordset FOR
16511
			SELECT   qry.*
16512
				FROM (
16513
					  /* File search on Packages */
16514
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16515
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16516
						FROM work_in_progress rc,
16517
							 PACKAGES pkg,
16518
							 package_versions pv,
16519
							 release_components art
16520
					   WHERE rc.pv_id = art.pv_id
16521
						 AND pv.pkg_id = pkg.pkg_id
16522
						 AND rc.pv_id = pv.pv_id
16523
						 AND rc.rtag_id = nrtagid
16524
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16525
					  UNION ALL
16526
					  /* File search on Products */
16527
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16528
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16529
						FROM work_in_progress rc,
16530
							 PACKAGES pkg,
16531
							 package_versions pv,
16532
							 product_components art
16533
					   WHERE rc.pv_id = art.pv_id
16534
						 AND pv.pkg_id = pkg.pkg_id
16535
						 AND rc.pv_id = pv.pv_id
16536
						 AND rc.rtag_id = nrtagid
16537
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16538
			   WHERE ROWNUM <= npagesize
16539
			ORDER BY UPPER (qry.pkg_name);
16540
	  ELSIF nsearcharea = 1
16541
	  THEN
16542
		 /* Search Pending */
16543
		 OPEN recordset FOR
16544
			SELECT   qry.*
16545
				FROM (
16546
					  /* File search on Packages */
16547
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16548
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16549
						FROM planned rc,
16550
							 PACKAGES pkg,
16551
							 package_versions pv,
16552
							 release_components art
16553
					   WHERE rc.pv_id = art.pv_id
16554
						 AND pv.pkg_id = pkg.pkg_id
16555
						 AND rc.pv_id = pv.pv_id
16556
						 AND rc.rtag_id = nrtagid
16557
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16558
					  UNION ALL
16559
					  /* File search on Products */
16560
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16561
							 pv.pv_id, pv.pkg_version, art.crc_cksum
16562
						FROM planned rc,
16563
							 PACKAGES pkg,
16564
							 package_versions pv,
16565
							 product_components art
16566
					   WHERE rc.pv_id = art.pv_id
16567
						 AND pv.pkg_id = pkg.pkg_id
16568
						 AND rc.pv_id = pv.pv_id
16569
						 AND rc.rtag_id = nrtagid
16570
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16571
			   WHERE ROWNUM <= npagesize
16572
			ORDER BY UPPER (qry.pkg_name);
16573
	  ELSIF nsearcharea = 2
16574
	  THEN
16575
		 /* Search Released */
16576
		 OPEN recordset FOR
16577
			SELECT   qry.*
16578
				FROM (
16579
					  /* File search on Packages */
16580
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16581
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16582
							 NULL AS patch_id
16583
						FROM release_content rc,
16584
							 PACKAGES pkg,
16585
							 package_versions pv,
16586
							 release_components art
16587
					   WHERE rc.pv_id = art.pv_id
16588
						 AND pv.pkg_id = pkg.pkg_id
16589
						 AND rc.pv_id = pv.pv_id
16590
						 AND rc.rtag_id = nrtagid
16591
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16592
					  UNION ALL
16593
					  /* File search on Products */
16594
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16595
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16596
							 NULL AS patch_id
16597
						FROM release_content rc,
16598
							 PACKAGES pkg,
16599
							 package_versions pv,
16600
							 product_components art
16601
					   WHERE rc.pv_id = art.pv_id
16602
						 AND pv.pkg_id = pkg.pkg_id
16603
						 AND rc.pv_id = pv.pv_id
16604
						 AND rc.rtag_id = nrtagid
16605
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16606
					  UNION ALL
16607
					  /* File search on Patches */
16608
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16609
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16610
							 DECODE (art.file_path,
16611
									 NULL, pp.patch_id,
16612
									 NULL
16613
									) AS patch_id
16614
						FROM release_content rc,
16615
							 PACKAGES pkg,
16616
							 package_versions pv,
16617
							 release_components art,
16618
							 package_patches pp
16619
					   WHERE pv.pv_id = pp.pv_id
16620
						 AND pv.pkg_id = pkg.pkg_id
16621
						 AND rc.rtag_id = nrtagid
16622
						 AND art.pv_id = pp.patch_id
16623
						 AND rc.pv_id = pp.pv_id
16624
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16625
			   WHERE ROWNUM <= npagesize
16626
			ORDER BY UPPER (qry.pkg_name);
16627
	  ELSIF nsearcharea = 3
16628
	  THEN
16629
		 /* Search ALL */
16630
		 OPEN recordset FOR
16631
			SELECT   qry.*
16632
				FROM (
16633
					  /* File search on Packages */
16634
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16635
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16636
							 NULL AS patch_id
16637
						FROM environment_view rc,
16638
							 PACKAGES pkg,
16639
							 package_versions pv,
16640
							 release_components art
16641
					   WHERE rc.pv_id = art.pv_id
16642
						 AND pv.pkg_id = pkg.pkg_id
16643
						 AND rc.pv_id = pv.pv_id
16644
						 AND rc.rtag_id = nrtagid
16645
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16646
					  UNION ALL
16647
					  /* File search on Products */
16648
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16649
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16650
							 NULL AS patch_id
16651
						FROM environment_view rc,
16652
							 PACKAGES pkg,
16653
							 package_versions pv,
16654
							 product_components art
16655
					   WHERE rc.pv_id = art.pv_id
16656
						 AND pv.pkg_id = pkg.pkg_id
16657
						 AND rc.pv_id = pv.pv_id
16658
						 AND rc.rtag_id = nrtagid
16659
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)
16660
					  UNION ALL
16661
					  /* File search on Patches */
16662
					  SELECT art.file_name, art.file_path, pkg.pkg_name,
16663
							 pv.pv_id, pv.pkg_version, art.crc_cksum,
16664
							 DECODE (art.file_path,
16665
									 NULL, pp.patch_id,
16666
									 NULL
16667
									) AS patch_id
16668
						FROM release_content rc,
16669
							 PACKAGES pkg,
16670
							 package_versions pv,
16671
							 release_components art,
16672
							 package_patches pp
16673
					   WHERE pv.pv_id = pp.pv_id
16674
						 AND pv.pkg_id = pkg.pkg_id
16675
						 AND rc.rtag_id = nrtagid
16676
						 AND art.pv_id = pp.patch_id
16677
						 AND rc.pv_id = pp.pv_id
16678
						 AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
16679
			   WHERE ROWNUM <= npagesize
16680
			ORDER BY UPPER (qry.pkg_name);
16681
	  END IF;
51 mhunt 16682
   END;
16683
 
16684
/*-------------------------------------------------------------------------------------------------------*/
16685
   PROCEDURE get_prodrelease_items (
53 mhunt 16686
	  rtagid			 IN	   NUMBER,
16687
	  ntruerecordcount   OUT	  NUMBER,
16688
	  recordset		  OUT	  typecur
51 mhunt 16689
   )
16690
   IS
16691
   BEGIN
53 mhunt 16692
	  -- Get true record count n the number of integration products
16693
	  SELECT COUNT (rc.pv_id)
16694
		INTO ntruerecordcount
16695
		FROM release_content rc
16696
	   WHERE rc.rtag_id = rtagid;
51 mhunt 16697
 
53 mhunt 16698
	  OPEN recordset FOR
16699
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,	--rel.pkg_state,
16700
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16701
				  pv.pkg_version, pv.dlocked, pv.pv_description
16702
			 FROM release_content rel,
16703
				  PACKAGES pkg,
16704
				  package_versions pv,
16705
				  views vi
16706
			WHERE pv.pkg_id = pkg.pkg_id
16707
			  AND rel.pv_id = pv.pv_id
16708
			  AND rel.base_view_id = vi.view_id
16709
			  AND pv.is_deployable = 'Y'
16710
			  AND rtag_id = rtagid
16711
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16712
											  FROM deployment_manager.os_contents)
16713
			  AND rel.product_state IS NULL
16714
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16715
   END;
16716
 
16717
/*-------------------------------------------------------------------------------------------------------*/
16718
   PROCEDURE get_integration_items (
53 mhunt 16719
	  rtagid			 IN	   NUMBER,
16720
	  ntruerecordcount   OUT	  NUMBER,
16721
	  recordset		  OUT	  typecur
51 mhunt 16722
   )
16723
   IS
16724
   BEGIN
53 mhunt 16725
	  -- Get true record count n the number of integration products
16726
	  SELECT COUNT (rc.pv_id)
16727
		INTO ntruerecordcount
16728
		FROM release_content rc
16729
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
51 mhunt 16730
 
53 mhunt 16731
	  OPEN recordset FOR
16732
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16733
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16734
				  pv.pkg_version, pv.dlocked, pv.pv_description
16735
			 FROM release_content rel,
16736
				  PACKAGES pkg,
16737
				  package_versions pv,
16738
				  views vi
16739
			WHERE pv.pkg_id = pkg.pkg_id
16740
			  AND rel.pv_id = pv.pv_id
16741
			  AND rel.base_view_id = vi.view_id
16742
			  AND pv.is_deployable = 'Y'
16743
			  AND rtag_id = rtagid
16744
			  AND rel.product_state IN (1, 5)
16745
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16746
   END;
16747
 
16748
/*-------------------------------------------------------------------------------------------------------*/
16749
   PROCEDURE get_test_items (
53 mhunt 16750
	  rtagid			 IN	   NUMBER,
16751
	  ntruerecordcount   OUT	  NUMBER,
16752
	  recordset		  OUT	  typecur
51 mhunt 16753
   )
16754
   IS
16755
   BEGIN
53 mhunt 16756
	  -- Get true record count n the number of test products
16757
	  SELECT COUNT (rc.pv_id)
16758
		INTO ntruerecordcount
16759
		FROM release_content rc
16760
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
51 mhunt 16761
 
53 mhunt 16762
	  OPEN recordset FOR
16763
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16764
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16765
				  pv.pkg_version, pv.dlocked, pv.pv_description
16766
			 FROM release_content rel,
16767
				  PACKAGES pkg,
16768
				  package_versions pv,
16769
				  views vi
16770
			WHERE pv.pkg_id = pkg.pkg_id
16771
			  AND rel.pv_id = pv.pv_id
16772
			  AND rel.base_view_id = vi.view_id
16773
			  AND pv.is_deployable = 'Y'
16774
			  AND rtag_id = rtagid
16775
			  AND rel.product_state = 2
16776
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16777
   END;
16778
 
16779
/*-------------------------------------------------------------------------------------------------------*/
16780
   PROCEDURE get_deploy_items (
53 mhunt 16781
	  rtagid			 IN	   NUMBER,
16782
	  ntruerecordcount   OUT	  NUMBER,
16783
	  recordset		  OUT	  typecur
51 mhunt 16784
   )
16785
   IS
16786
   BEGIN
53 mhunt 16787
	  -- Get true record count n the number of deploy products
16788
	  SELECT COUNT (rc.pv_id)
16789
		INTO ntruerecordcount
16790
		FROM release_content rc
16791
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
51 mhunt 16792
 
53 mhunt 16793
	  OPEN recordset FOR
16794
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16795
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16796
				  pv.pkg_version, pv.dlocked, pv.pv_description
16797
			 FROM release_content rel,
16798
				  PACKAGES pkg,
16799
				  package_versions pv,
16800
				  views vi
16801
			WHERE pv.pkg_id = pkg.pkg_id
16802
			  AND rel.pv_id = pv.pv_id
16803
			  AND rel.base_view_id = vi.view_id
16804
			  AND pv.is_deployable = 'Y'
16805
			  AND rtag_id = rtagid
16806
			  AND rel.product_state IN (3, 5)
16807
			  AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
16808
											  FROM deployment_manager.os_contents)
16809
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16810
   END;
16811
 
16812
/*-------------------------------------------------------------------------------------------------------*/
16813
   PROCEDURE get_reject_items (
53 mhunt 16814
	  rtagid			 IN	   NUMBER,
16815
	  ntruerecordcount   OUT	  NUMBER,
16816
	  recordset		  OUT	  typecur
51 mhunt 16817
   )
16818
   IS
16819
   BEGIN
53 mhunt 16820
	  -- Get true record count n the number of reject products
16821
	  SELECT COUNT (rc.pv_id)
16822
		INTO ntruerecordcount
16823
		FROM release_content rc
16824
	   WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
51 mhunt 16825
 
53 mhunt 16826
	  OPEN recordset FOR
16827
		 SELECT   vi.view_id, vi.view_name, rel.pkg_state,
16828
				  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
16829
				  pv.pkg_version, pv.dlocked, pv.pv_description
16830
			 FROM release_content rel,
16831
				  PACKAGES pkg,
16832
				  package_versions pv,
16833
				  views vi
16834
			WHERE pv.pkg_id = pkg.pkg_id
16835
			  AND rel.pv_id = pv.pv_id
16836
			  AND rel.base_view_id = vi.view_id
16837
			  AND pv.is_deployable = 'Y'
16838
			  AND rtag_id = rtagid
16839
			  AND rel.product_state = 4
16840
		 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
51 mhunt 16841
   END;
16842
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 16843
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
16844
   -- to the release_content table.
16845
 
16846
  PROCEDURE approve_merge (
16847
	PvId	IN NUMBER,
16848
	RtagId  IN NUMBER,
16849
	UserId  IN NUMBER
16850
  )
16851
  IS
16852
	viewid		  NUMBER;
16853
	envtab		  NUMBER;
16854
	oper			CHAR;
16855
  BEGIN
16856
	   -- Get ViewId
16857
	  viewid := get_package_view (pvid, rtagid);
16858
 
16859
	  -- Get the view tab
16860
	  envtab := pk_environment.get_package_area (pvid, rtagid);
16861
 
16862
	  -- Make sure that package was in pending before merging it to released
16863
	  IF (envtab <> 1)
16864
	  THEN
16865
		 -- Not found in pending
16866
		 raise_application_error (-20000,
16867
								  'This package cannot be released here.'
16868
								 );
16869
	  END IF;
16870
 
16871
	  -- Log
16872
	  log_action (pvid, 'action', userid, 'Start of Package Merge...');
16873
 
16874
	  -- Get the planned operation type A=Add, S=Subtract
16875
	  SELECT ev.operation INTO oper
16876
	  FROM environment_view ev
16877
	  WHERE ev.rtag_id = RtagId
16878
	  AND ev.pv_id = PvId
16879
	  AND (ev.operation = 'A' OR ev.operation = 'S');
16880
 
16881
	  -- Remove from Pending
16882
	  pk_planned.remove_package (PvId, RtagId, UserId);
16883
 
16884
	  -- Either add to the release, or remove from the release as the operation commands
16885
	  IF oper = 'A'
16886
	  THEN
16887
		pk_release.add_package(PvId, viewId, RtagId, UserId);
16888
	  ELSIF oper = 'S'
16889
	  THEN
16890
		  pk_release.remove_package(PvId, RtagId, UserId);
16891
	  END IF;
16892
 
16893
	  touch_release(RtagId);
16894
 
16895
	  -- Log
16896
	  log_action (pvid, 'action', userid, 'End of Package Merge...');
16897
  END;
16898
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 16899
END pk_environment;
16900
/
16901
 
16902
CREATE OR REPLACE PACKAGE BODY PK_WORK_IN_PROGRESS IS
16903
 
16904
/*
16905
------------------------------
16906
||  Last Modified:  S.Vukovic
16907
||  Modified Date:  2/May/2005
16908
||  Body Version:   1.0
16909
------------------------------
16910
*/
16911
 
16912
 
16913
/*-------------------------------------------------------------------------------------------------------*/
16914
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16915
 
16916
	oldPvId NUMBER;
16917
	ReleaseLocation VARCHAR2(4000);
16918
	sLocation VARCHAR2(4000) := NULL;
16919
 
16920
 
16921
BEGIN
16922
	/*--------------- Business Rules Here -------------------*/
16923
	/*-------------------------------------------------------*/
16924
 
16925
	BEGIN
16926
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
16927
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
16928
		  FROM WORK_IN_PROGRESS wip,
16929
		  	   RELEASE_TAGS rt,
16930
			   PROJECTS proj
16931
		 WHERE wip.PV_ID = newPvId
16932
		   AND wip.RTAG_ID = rt.RTAG_ID
16933
		   AND rt.OFFICIAL != 'Y'
16934
		   AND rt.PROJ_ID = proj.PROJ_ID;
16935
 
16936
		EXCEPTION
16937
	    	WHEN NO_DATA_FOUND THEN
16938
	       		sLocation := NULL;
16939
 
16940
	END;	   	   
16941
 
16942
 
16943
 
16944
	IF (sLocation IS NULL)  THEN
16945
 
16946
		-- Add to "Work in progress"
16947
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
16948
		VALUES( RtagId, newPvId, ViewId );
16949
 
16950
 
16951
	    /* LOG ACTION */
16952
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16953
		  FROM PROJECTS proj,
16954
		  	   RELEASE_TAGS rt
16955
		 WHERE rt.PROJ_ID = proj.PROJ_ID
16956
		   AND rt.RTAG_ID = RtagId;
16957
 
16958
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
16959
 
16960
	ELSE
16961
 
16962
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
16963
 
16964
	END IF;
16965
 
16966
END;
16967
/*-------------------------------------------------------------------------------------------------------*/
16968
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
16969
 
16970
	ReleaseLocation VARCHAR2(4000);
16971
 
16972
BEGIN
16973
 
16974
	/*--------------- Business Rules Here -------------------*/
16975
	/*-------------------------------------------------------*/
16976
 
16977
 
16978
	-- Get release location for logging pusposes
16979
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16980
	  FROM PROJECTS proj,
16981
	  	   RELEASE_TAGS rt
16982
	 WHERE rt.PROJ_ID = proj.PROJ_ID
16983
	   AND rt.RTAG_ID = RtagId;
16984
 
16985
 
16986
	-- Delete from Work In Progress
16987
	DELETE
16988
	  FROM WORK_IN_PROGRESS wip
16989
	 WHERE wip.RTAG_ID = RtagId
16990
	   AND wip.PV_ID = PvId;
16991
 
16992
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
16993
 
16994
 
16995
 
16996
 
16997
END;
16998
/*-------------------------------------------------------------------------------------------------------*/
16999
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
17000
 
17001
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17002
	ReleaseLocation VARCHAR2(4000);
17003
	PvId NUMBER;
17004
 
17005
BEGIN
17006
 
17007
	/*--------------- Business Rules Here -------------------*/
17008
	IF (PvIdList IS NULL)
17009
	THEN
17010
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
17011
	END IF;
17012
	/*-------------------------------------------------------*/
17013
 
17014
 
17015
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
17016
 
17017
 
17018
	-- Get release location for logging pusposes
17019
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
17020
	  FROM PROJECTS proj,
17021
	  	   RELEASE_TAGS rt
17022
	 WHERE rt.PROJ_ID = proj.PROJ_ID
17023
	   AND rt.RTAG_ID = RtagId;
17024
 
17025
 
17026
	FOR i IN 1..nIdCollector.COUNT
17027
	LOOP
17028
		PvId := nIdCollector(i);
17029
 
17030
		-- Delete from Work In Progress
17031
		DELETE
17032
		  FROM WORK_IN_PROGRESS wip
17033
		 WHERE wip.RTAG_ID = RtagId
17034
		   AND wip.PV_ID = PvId;
17035
 
17036
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
17037
 
17038
	END LOOP;
17039
 
17040
 
17041
END;
17042
/*-------------------------------------------------------------------------------------------------------*/
17043
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
17044
 
17045
	ReturnValue NUMBER;
17046
 
17047
BEGIN
17048
	SELECT wip.VIEW_ID INTO ReturnValue
17049
	  FROM WORK_IN_PROGRESS wip
17050
	 WHERE wip.RTAG_ID = RtagId
17051
	   AND wip.PV_ID = PvId;
17052
 
17053
	RETURN ReturnValue;
17054
END;
17055
/*-------------------------------------------------------------------------------------------------------*/
17056
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
17057
 
17058
	IsBaseView CHAR(1);
17059
 
17060
BEGIN
17061
 
17062
	-- Check if the view is BASE VIEW
17063
	SELECT vi.BASE_VIEW INTO IsBaseView
17064
	  FROM VIEWS vi
17065
	 WHERE vi.VIEW_ID = ViewId;
17066
 
17067
	IF (IsBaseView = 'Y') THEN 
17068
		-- Get Base view content
17069
		OPEN RecordSet FOR
17070
		SELECT 0 AS PKG_STATE,
17071
			   NULL AS DEPRECATED_STATE,
17072
			   pv.pv_id, 
17073
			   pkg.pkg_name, 
17074
			   pv.pkg_version, 
17075
			   pv.dlocked, 
17076
			   pv.pv_description,
17077
			   pv.BUILD_TYPE
17078
		  FROM WORK_IN_PROGRESS rel,
17079
		       packages pkg,
17080
		       package_versions pv
17081
		 WHERE pv.pkg_id = pkg.pkg_id
17082
		   AND rel.pv_id = pv.pv_id
17083
		   AND rel.VIEW_ID = ViewId
17084
		   AND rel.RTAG_ID = RtagId
17085
		 ORDER BY UPPER(pkg.PKG_NAME);
17086
 
17087
 
17088
	ELSE	 
17089
 
17090
	 	-- Get non base view content
17091
		OPEN RecordSet FOR
17092
		SELECT 0 AS PKG_STATE,
17093
			   NULL AS DEPRECATED_STATE,
17094
			   pv.pv_id, 
17095
			   pkg.pkg_name, 
17096
			   pv.pkg_version, 
17097
			   pv.dlocked, 
17098
			   pv.pv_description,
17099
			   pv.BUILD_TYPE
17100
		  FROM WORK_IN_PROGRESS rel,
17101
		       packages pkg,
17102
		       package_versions pv,
17103
			   VIEW_DEF vd
17104
		 WHERE pv.pkg_id = pkg.pkg_id
17105
		   AND rel.pv_id = pv.pv_id
17106
		   AND vd.VIEW_ID = ViewId
17107
		   AND vd.PKG_ID = pv.PKG_ID
17108
		   AND rel.RTAG_ID = RtagId
17109
		 ORDER BY UPPER(pkg.PKG_NAME);
17110
 
17111
 
17112
	END IF;	 	
17113
 
17114
 
17115
END;
17116
/*-------------------------------------------------------------------------------------------------------*/
17117
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
17118
 
17119
BEGIN
17120
 
17121
	UPDATE WORK_IN_PROGRESS wip SET
17122
	wip.VIEW_ID = NewViewId
17123
	WHERE wip.PV_ID = PvId
17124
	  AND wip.RTAG_ID = RtagId;
17125
 
17126
END;
17127
/*-------------------------------------------------------------------------------------------------------*/
17128
END PK_WORK_IN_PROGRESS;
17129
/
17130
 
17131
CREATE OR REPLACE PACKAGE BODY pk_package_Test
17132
IS
17133
/*
17134
------------------------------
17135
||  Last Modified:  R. Solanki
17136
||  Modified Date:  09/03/2006
17137
||  Body Version:   1.7
17138
------------------------------
17139
*/
17140
 
17141
   /*-------------------------------------------------------------------------------------------------------*/
17142
   PROCEDURE new_version (
17143
      nlastpvid                   IN       NUMBER,
17144
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
17145
      cbuildtype                  IN       CHAR,
17146
      nsettopvid                  IN       NUMBER DEFAULT NULL,
17147
      nrtagid                     IN       NUMBER,
17148
      nuserid                     IN       NUMBER,
17149
      enumissues_state_imported   IN       NUMBER,
17150
      returnpvid                  OUT      NUMBER
17151
   )
17152
   IS
17153
      origpkg_id                   package_versions.pkg_id%TYPE;
17154
      origdlocked                  package_versions.dlocked%TYPE;
17155
      ssv_mm                       package_versions.v_mm%TYPE;
17156
      ssv_nmm                      package_versions.v_nmm%TYPE;
17157
      ssv_ext                      package_versions.v_ext%TYPE;
17158
      spackageversion              VARCHAR2 (4000);
17159
      nissuestypes                 NUMBER;
17160
      nviewid                      NUMBER;
17161
      reccount                     NUMBER;
17162
      isreleased                   package_versions.dlocked%TYPE       := 'N';
17163
      slabel                       VARCHAR2 (4000)                    := NULL;
17164
 
17165
      CURSOR package_versions_cur
17166
      IS
17167
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
17168
           FROM package_versions pv
17169
          WHERE pv.pkg_version = snewpkgversion
17170
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
17171
                                         FROM package_versions origpv
17172
                                        WHERE origpv.pv_id = nlastpvid);
17173
 
17174
      package_versions_rec         package_versions_cur%ROWTYPE;
17175
 
17176
      CURSOR clone_package_versions_cur
17177
      IS
17178
         SELECT DISTINCT pkg_id, dlocked
17179
                    FROM package_versions
17180
                   WHERE pv_id = nlastpvid;
17181
 
17182
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
17183
   BEGIN
17184
      spackageversion := snewpkgversion;
17185
 
17186
      IF nsettopvid IS NULL
17187
      THEN
17188
         -- SetToPv_id is not supplied, hence proceed.
17189
 
17190
         /* ---------------------------------------------------- */
17191
/* Find id package_version exists                       */
17192
/* ---------------------------------------------------- */
17193
         OPEN package_versions_cur;
17194
 
17195
         FETCH package_versions_cur
17196
          INTO package_versions_rec;
17197
 
17198
         IF package_versions_cur%NOTFOUND
17199
         THEN
17200
            ---  Create brand new package ---
17201
            SELECT seq_pv_id.NEXTVAL
17202
              INTO returnpvid
17203
              FROM DUAL;
17204
 
17205
            -- Split Version to get extention + other
17206
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
17207
 
17208
            -- Get previous package to clone from
17209
            OPEN clone_package_versions_cur;
17210
 
17211
            FETCH clone_package_versions_cur
17212
             INTO clone_package_versions_rec;
17213
 
17214
            origpkg_id := clone_package_versions_rec.pkg_id;
17215
            origdlocked := clone_package_versions_rec.dlocked;
17216
 
17217
            CLOSE clone_package_versions_cur;
17218
 
17219
            -- Automated built config
17220
            IF (cbuildtype = 'A')
17221
            THEN
17222
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
17223
                                    -- Make sure that version is still unique
17224
            END IF;
17225
 
17226
            -- Clone Package Version Details --
17227
            INSERT INTO package_versions
17228
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
17229
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
17230
                         v_ext, src_path, pv_description, pv_overview,
17231
                         last_pv_id, owner_id, is_deployable,
17232
                         is_build_env_required, build_type, bs_id, is_autobuildable)
17233
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
17234
                      spackageversion AS pkg_version, 'N' AS dlocked,
17235
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
17236
                      ora_sysdatetime AS modified_stamp,
17237
                      nuserid AS modifier_id, ssv_mm AS v_mm,
17238
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
17239
                      pv.pv_description, pv.pv_overview,
17240
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
17241
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
17242
                 FROM package_versions pv
17243
                WHERE pv.pv_id = nlastpvid;
17244
 
17245
            -- Set Issues Type for cloning ---
17246
            IF origdlocked = 'Y'
17247
            THEN
17248
               nissuestypes := enumissues_state_imported;
17249
            ELSE
17250
               nissuestypes := NULL;
17251
            END IF;
17252
 
17253
            -- Update Label for automated built
17254
            IF (cbuildtype = 'A')
17255
            THEN
17256
               slabel := get_automated_label (returnpvid);
17257
 
17258
               UPDATE package_versions pv
17259
                  SET pv.pkg_label = slabel
17260
                WHERE pv.pv_id = returnpvid;
17261
            END IF;
17262
 
17263
            basic_clone (nlastpvid,
17264
                         returnpvid,
17265
                         nrtagid,
17266
                         nuserid,
17267
                         origpkg_id,
17268
                         nissuestypes
17269
                        );
17270
         ELSE
17271
            --- Package already exists, hence reuse ---
17272
            returnpvid := package_versions_rec.pv_id;
17273
            isreleased := package_versions_rec.dlocked;
17274
         END IF;
17275
 
17276
         CLOSE package_versions_cur;
17277
      ELSE
17278
         returnpvid := nsettopvid;
17279
      END IF;
17280
   END new_version;
17281
 
17282
/*-------------------------------------------------------------------------------------------------------*/
17283
   PROCEDURE change_state (
17284
      pvid       IN   NUMBER,
17285
      newstate   IN   package_versions.dlocked%TYPE,
17286
      userid     IN   NUMBER
17287
   )
17288
   IS
17289
   BEGIN
17290
      -- Set package in Released mode
17291
      UPDATE package_versions pv
17292
         SET pv.dlocked = newstate,
17293
             pv.modified_stamp = ora_sysdatetime,
17294
             pv.modifier_id = userid
17295
       WHERE pv.pv_id = pvid;
17296
 
17297
      -- Log action --
17298
      IF newstate = 'Y'
17299
      THEN
17300
         -- RELEASED --
17301
         log_action (pvid,
17302
                     'makeofficial',
17303
                     userid,
17304
                     'Package state change to: Released'
17305
                    );
17306
      ELSIF newstate = 'N'
17307
      THEN
17308
         -- UNLOCKED --
17309
         log_action (pvid,
17310
                     'makeunofficial',
17311
                     userid,
17312
                     'Package state change to: Ulocked'
17313
                    );
17314
      ELSIF newstate = 'P'
17315
      THEN
17316
         -- PENDING APPROVAL --
17317
         log_action (pvid,
17318
                     'add_to_planned',
17319
                     userid,
17320
                     'Package state change to: Pending Approval'
17321
                    );
17322
      ELSIF newstate = 'R'
17323
      THEN
17324
         -- REJECTED --
17325
         log_action (pvid,
17326
                     'reject_package',
17327
                     userid,
17328
                     'Package state change to: Rejected'
17329
                    );
17330
      ELSIF newstate = 'A'
17331
      THEN
17332
         -- APPROVED --
17333
         log_action (pvid,
17334
                     'approve_package',
17335
                     userid,
17336
                     'Package state change to: Approved'
17337
                    );
17338
      END IF;
17339
   END;
17340
 
17341
/*-------------------------------------------------------------------------------------------------------*/
17342
   PROCEDURE destroy_package (
17343
      pvid               IN       NUMBER,
17344
      overridewarnings   IN       CHAR DEFAULT 'N',
17345
      problemstring      OUT      VARCHAR2
17346
   )
17347
   IS
17348
      LOCKED     CHAR;
17349
      pkgid      NUMBER;
17350
      ROWCOUNT   NUMBER;
17351
   BEGIN
17352
      /*
17353
      || This will destroy all package details from database.
17354
      || It will only be used to remove unwanted work in progress packages,
17355
      || or mestaken versions
17356
      */
17357
 
17358
      /*--------------- Business Rules Here -------------------*/
17359
      problemstring := NULL;
17360
 
17361
      IF overridewarnings = 'N'
17362
      THEN
17363
         -- Package must not be official
17364
         SELECT pv.dlocked
17365
           INTO LOCKED
17366
           FROM package_versions pv
17367
          WHERE pv.pv_id = pvid;
17368
 
17369
         IF LOCKED = 'Y'
17370
         THEN
17371
            problemstring :=
17372
                  problemstring
17373
               || '- Package is locked and released.'
17374
               || UTL_TCP.crlf;
17375
         END IF;
17376
 
17377
         -- Cannot remove if used in BOMs
17378
         SELECT COUNT (osc.prod_id)
17379
           INTO ROWCOUNT
17380
           FROM deployment_manager.os_contents osc
17381
          WHERE osc.prod_id = pvid;
17382
 
17383
         IF ROWCOUNT > 0
17384
         THEN
17385
            problemstring :=
17386
                  problemstring
17387
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
17388
               || UTL_TCP.crlf;
17389
         END IF;
17390
 
17391
         -- Cannot remove if Referenced as build dependency
17392
         SELECT COUNT (dep.pv_id)
17393
           INTO ROWCOUNT
17394
           FROM package_dependencies dep
17395
          WHERE dep.dpv_id = pvid;
17396
 
17397
         IF ROWCOUNT > 0
17398
         THEN
17399
            problemstring :=
17400
                  problemstring
17401
               || '- Package is referenced by other package as build dependency.'
17402
               || UTL_TCP.crlf;
17403
         END IF;
17404
 
17405
         -- Cannot remove if Referenced as runtime dependency
17406
         SELECT COUNT (rd.pv_id)
17407
           INTO ROWCOUNT
17408
           FROM runtime_dependencies rd
17409
          WHERE rd.rtd_id = pvid;
17410
 
17411
         IF ROWCOUNT > 0
17412
         THEN
17413
            problemstring :=
17414
                  problemstring
17415
               || '- Package is referenced by other package as runtime dependency.'
17416
               || UTL_TCP.crlf;
17417
         END IF;
17418
 
17419
         -- Cannot remove if Referenced as patch
17420
         SELECT COUNT (pp.pv_id)
17421
           INTO ROWCOUNT
17422
           FROM package_patches pp
17423
          WHERE pp.patch_id = pvid;
17424
 
17425
         IF ROWCOUNT > 0
17426
         THEN
17427
            problemstring :=
17428
                  problemstring
17429
               || '- Package is used as patch by other package.'
17430
               || UTL_TCP.crlf;
17431
         END IF;
17432
      END IF;
17433
 
17434
/*-------------------------------------------------------*/
17435
      IF (problemstring IS NULL)
17436
      THEN
17437
         --- Remove From Work in Progress
17438
         DELETE FROM work_in_progress wip
17439
               WHERE wip.pv_id = pvid;
17440
 
17441
         --- Remove From Pending
17442
         DELETE FROM planned pl
17443
               WHERE pl.pv_id = pvid;
17444
 
17445
         --- Remove From Released area
17446
         DELETE FROM release_content rc
17447
               WHERE rc.pv_id = pvid;
17448
 
17449
         ---Remove From Package Processes
17450
         DELETE FROM package_processes pp
17451
               WHERE pp.pv_id = pvid;
17452
 
17453
         --- Remove Dependencies
17454
         DELETE FROM package_dependencies dep
17455
               WHERE dep.pv_id = pvid;
17456
 
17457
         DELETE FROM package_dependencies dep
17458
               WHERE dep.dpv_id = pvid;
17459
 
17460
         --- Remove Runtime dependencies
17461
         DELETE FROM runtime_dependencies rtd
17462
               WHERE rtd.pv_id = pvid;
17463
 
17464
         DELETE FROM runtime_dependencies rtd
17465
               WHERE rtd.rtd_id = pvid;
17466
 
17467
         --- Remove components
17468
         DELETE FROM product_components pc
17469
               WHERE pc.pv_id = pvid;
17470
 
17471
         DELETE FROM release_components rc
17472
               WHERE rc.pv_id = pvid;
17473
 
17474
         --- Remove From Notification History
17475
         DELETE FROM notification_history nh
17476
               WHERE nh.pv_id = pvid;
17477
 
17478
         --- Remove From Ignore Warnings
17479
         DELETE FROM ignore_warnings iw
17480
               WHERE iw.pv_id = pvid;
17481
 
17482
         --- Remove From Additional Notes
17483
         DELETE FROM additional_notes an
17484
               WHERE an.pv_id = pvid;
17485
 
17486
         --- Remove From CQ Issues
17487
         DELETE FROM cq_issues cq
17488
               WHERE cq.pv_id = pvid;
17489
 
17490
         --- Remove from Package Patches
17491
         DELETE FROM package_patches pp
17492
               WHERE pp.pv_id = pvid;
17493
 
17494
         DELETE FROM package_patches pp
17495
               WHERE pp.patch_id = pvid;
17496
 
17497
         --- Remove From Package Documents
17498
         DELETE FROM package_documents pd
17499
               WHERE pd.pv_id = pvid;
17500
 
17501
         --- Remove from Code Review
17502
         DELETE FROM code_reviews cr
17503
               WHERE cr.pv_id = pvid;
17504
 
17505
         --- Remove from Unit Tests
17506
         DELETE FROM unit_tests ut
17507
               WHERE ut.pv_id = pvid;
17508
 
17509
         --- Remove from Package BuildEnv
17510
         DELETE FROM package_build_env pbe
17511
               WHERE pbe.pv_id = pvid;
17512
 
17513
		 --- Remove from Package Build Info
17514
		 DELETE FROM package_build_info pbi
17515
		 	   WHERE pbi.pv_id = pvid;    
17516
 
17517
 
17518
         --- Remove from Build Order
17519
         DELETE FROM build_order bo
17520
               WHERE bo.pv_id = pvid;
17521
 
17522
         --- Remove from Note Manager
17523
         DELETE FROM note_manager nm
17524
               WHERE nm.nid = pvid;
17525
 
17526
         --- Remove from Action log
17527
         DELETE FROM action_log al
17528
               WHERE al.pv_id = pvid;
17529
 
17530
		 --- Remove from Do Not Ripple 
17531
		 DELETE FROM DO_NOT_RIPPLE dnr
17532
		 	   WHERE dnr.PV_ID = pvid;
17533
 
17534
		 --- Remove from Jira Issues 
17535
		 DELETE FROM JIRA_ISSUES jira
17536
		 	   WHERE jira.PV_ID = pvid;
17537
 
17538
         --- Finally Remove From Package Versions
17539
         --- Get Package name
17540
         SELECT pv.pkg_id
17541
           INTO pkgid
17542
           FROM package_versions pv
17543
          WHERE pv.pv_id = pvid;
17544
 
17545
         DELETE FROM package_versions pv
17546
               WHERE pv.pv_id = pvid;
17547
 
17548
         --- Remove package name if not used any more
17549
         SELECT COUNT (pv.pv_id)
17550
           INTO ROWCOUNT
17551
           FROM package_versions pv
17552
          WHERE pv.pkg_id = pkgid;
17553
 
17554
         IF ROWCOUNT < 1
17555
         THEN
17556
            DELETE FROM PACKAGES pkg
17557
                  WHERE pkg.pkg_id = pkgid;
17558
         END IF;
17559
      END IF;
17560
   END;
17561
 
17562
/*-------------------------------------------------------------------------------------------------------*/
17563
   PROCEDURE new_patch (
17564
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
17565
      nparentpvid        IN       NUMBER,
17566
      spatchidlist       IN       VARCHAR2,
17567
      nuserid            IN       NUMBER,
17568
      returnpatchid      OUT      NUMBER
17569
   )
17570
   IS
17571
      patchpv_id           NUMBER;
17572
      parpkg_id            NUMBER;
17573
      lastinstallorder     NUMBER;
17574
      ispatchdlocked       package_versions.dlocked%TYPE;
17575
      ssv_mm               package_versions.v_mm%TYPE;
17576
      ssv_nmm              package_versions.v_nmm%TYPE;
17577
      ssv_ext              package_versions.v_ext%TYPE;
17578
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
17579
                                                                          ();
17580
 
17581
      CURSOR parent_cur
17582
      IS
17583
         SELECT pv.*, pkg.pkg_name
17584
           FROM package_versions pv, PACKAGES pkg
17585
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
17586
 
17587
      parent_rec           parent_cur%ROWTYPE;
17588
 
17589
      CURSOR patch_cur
17590
      IS
17591
         SELECT pv.*, pg.pkg_name
17592
           FROM package_versions pv, PACKAGES pg
17593
          WHERE pv.pkg_id = parpkg_id
17594
            AND pv.pkg_version = snewpatchversion
17595
            AND pv.pkg_id = pg.pkg_id;
17596
 
17597
      patch_rec            patch_cur%ROWTYPE;
17598
 
17599
      CURSOR releases_cur
17600
      IS
17601
         SELECT rc.pv_id
17602
           FROM release_content rc
17603
          WHERE rc.pv_id = patch_rec.pv_id;
17604
 
17605
      releases_rec         releases_cur%ROWTYPE;
17606
   BEGIN
17607
      -- Get Last Install Order
17608
      SELECT COUNT (*)
17609
        INTO lastinstallorder
17610
        FROM package_patches pp
17611
       WHERE pp.pv_id = nparentpvid;
17612
 
17613
      -- Get parent details
17614
      OPEN parent_cur;
17615
 
17616
      FETCH parent_cur
17617
       INTO parent_rec;
17618
 
17619
      parpkg_id := parent_rec.pkg_id;
17620
 
17621
      -- Find if patch exists in database
17622
      OPEN patch_cur;
17623
 
17624
      FETCH patch_cur
17625
       INTO patch_rec;
17626
 
17627
      -- Parent must be official
17628
      IF parent_rec.dlocked = 'Y'
17629
      THEN
17630
         IF patch_cur%NOTFOUND
17631
         THEN
17632
            ispatchdlocked := 'N';
17633
 
17634
            -- Create new patch version --
17635
            SELECT seq_pv_id.NEXTVAL
17636
              INTO patchpv_id
17637
              FROM DUAL;
17638
 
17639
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
17640
 
17641
            INSERT INTO package_versions
17642
                        (pv_id, pkg_id, pkg_version,
17643
                         dlocked, created_stamp, creator_id,
17644
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
17645
                         src_path,
17646
                         pv_description,
17647
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
17648
						 is_autobuildable
17649
                        )
17650
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
17651
                         ispatchdlocked, ora_sysdate, nuserid,
17652
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
17653
                         parent_rec.src_path,
17654
                            'This is a patch to '
17655
                         || parent_rec.pkg_name
17656
                         || ' '
17657
                         || parent_rec.pkg_version,
17658
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
17659
                        );
17660
 
17661
            INSERT INTO package_patches
17662
                        (pv_id, patch_id, install_order)
17663
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17664
                       lastinstallorder + 1 AS install_order
17665
                  FROM package_versions pv
17666
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17667
 
17668
            /* LOG ACTION */
17669
            log_action (patchpv_id,
17670
                        'new_version',
17671
                        nuserid,
17672
                        'Patch version created: ' || snewpatchversion
17673
                       );
17674
            log_action (nparentpvid,
17675
                        'patch_add',
17676
                        nuserid,
17677
                        'New patch created and attached: ' || snewpatchversion
17678
                       );
17679
         ELSE
17680
            patchpv_id := patch_rec.pv_id;
17681
            ispatchdlocked := patch_rec.dlocked;
17682
 
17683
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
17684
            OPEN releases_cur;
17685
 
17686
            FETCH releases_cur
17687
             INTO releases_rec;
17688
 
17689
            IF releases_cur%NOTFOUND
17690
            THEN
17691
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
17692
               UPDATE package_versions
17693
                  SET is_patch = 'Y'
17694
                WHERE pv_id = patchpv_id;
17695
 
17696
               INSERT INTO package_patches
17697
                           (pv_id, patch_id, install_order)
17698
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
17699
                          lastinstallorder + 1 AS install_order
17700
                     FROM package_versions pv
17701
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
17702
            END IF;
17703
 
17704
            CLOSE releases_cur;
17705
 
17706
            /* LOG ACTION */
17707
            log_action (nparentpvid,
17708
                        'patch_add',
17709
                        nuserid,
17710
                           'Patch version was found and attached: '
17711
                        || snewpatchversion
17712
                       );
17713
         END IF;
17714
      END IF;
17715
 
17716
      /* Create Patch Dependencies */
17717
      opatchdepcollector := in_list_number (spatchidlist);
17718
 
17719
      -- Make sure patch is unofficial before altering its dependencies
17720
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
17721
      THEN
17722
         -- Delete Existing Dependencies
17723
         DELETE FROM package_dependencies dep
17724
               WHERE dep.pv_id = patchpv_id;
17725
 
17726
         -- Insert new dependencies
17727
         INSERT INTO package_dependencies
17728
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
17729
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
17730
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
17731
                   'L' AS build_type
17732
              FROM package_versions pv
17733
             WHERE pv.pv_id IN (
17734
                      SELECT *
17735
                        FROM TABLE
17736
                                (CAST
17737
                                    (opatchdepcollector AS relmgr_number_tab_t)
17738
                                ));
17739
      END IF;
17740
 
17741
      -- Return patch_id
17742
      returnpatchid := patchpv_id;
17743
 
17744
      CLOSE parent_cur;
17745
 
17746
      CLOSE patch_cur;
17747
   EXCEPTION
17748
      WHEN DUP_VAL_ON_INDEX
17749
      THEN
17750
         raise_application_error (-20000,
17751
                                     'Patch version '
17752
                                  || snewpatchversion
17753
                                  || ' already exist.'
17754
                                 );
17755
   END;
17756
 
17757
/*-------------------------------------------------------------------------------------------------------*/
17758
   PROCEDURE obsolete_patch (
17759
      patchid            IN   NUMBER,
17760
      isobsolete         IN   CHAR,
17761
      obsoletecomments   IN   VARCHAR2,
17762
      userid             IN   NUMBER
17763
   )
17764
   IS
17765
   BEGIN
17766
      -- Update patch
17767
      UPDATE package_versions pv
17768
         SET pv.is_obsolete = isobsolete,
17769
             pv.obsolete_comments = obsoletecomments
17770
       WHERE pv.pv_id = patchid;
17771
 
17772
      /*
17773
      -- Update patch children
17774
      UPDATE PACKAGE_VERSIONS pv SET
17775
      pv.IS_OBSOLETE = IsObsolete,
17776
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17777
      WHERE pv.PV_ID IN (
17778
                     SELECT DISTINCT dep.DPV_ID
17779
                       FROM PACKAGE_DEPENDENCIES dep
17780
                      WHERE dep.PV_ID = PatchId
17781
                     );
17782
 
17783
 
17784
      -- Update patch parent
17785
      UPDATE PACKAGE_VERSIONS pv SET
17786
      pv.IS_OBSOLETE = IsObsolete,
17787
      pv.OBSOLETE_COMMENTS = ObsoleteComments
17788
      WHERE pv.PV_ID IN (
17789
                     SELECT DISTINCT dep.PV_ID
17790
                       FROM PACKAGE_DEPENDENCIES dep
17791
                      WHERE dep.DPV_ID = PatchId
17792
                     );
17793
 
17794
         */
17795
 
17796
      /* LOG ACTION */
17797
      IF isobsolete IS NOT NULL
17798
      THEN
17799
         log_action (patchid,
17800
                     'patch_obsolete',
17801
                     userid,
17802
                     'Obsolete patch. ' || obsoletecomments
17803
                    );
17804
      ELSE
17805
         log_action (patchid,
17806
                     'patch_obsolete',
17807
                     userid,
17808
                     'Undo patch obsolete.'
17809
                    );
17810
      END IF;
17811
   END;
17812
 
17813
/*-------------------------------------------------------------------------------------------------------*/
17814
   PROCEDURE obsolete_patches (
17815
      spatchidlist       IN   VARCHAR2,
17816
      isobsolete         IN   CHAR,
17817
      obsoletecomments   IN   VARCHAR2,
17818
      userid             IN   NUMBER
17819
   )
17820
   IS
17821
   BEGIN
17822
      /*--------------- Business Rules Here -------------------*/
17823
      IF spatchidlist IS NULL
17824
      THEN
17825
         raise_application_error (-20000,
17826
                                  'Please select one or more Patches.'
17827
                                 );
17828
      END IF;
17829
 
17830
/*-------------------------------------------------------*/
17831
 
17832
      -- Update patch
17833
      UPDATE package_versions pv
17834
         SET pv.is_obsolete = isobsolete,
17835
             pv.obsolete_comments = obsoletecomments
17836
       WHERE pv.pv_id IN (
17837
                SELECT *
17838
                  FROM THE
17839
                          (SELECT CAST
17840
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
17841
                                     )
17842
                             FROM DUAL
17843
                          ));
17844
   /*
17845
   -- Update patch children
17846
   UPDATE PACKAGE_VERSIONS pv SET
17847
   pv.IS_OBSOLETE = IsObsolete,
17848
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17849
   WHERE pv.PV_ID IN (
17850
                  SELECT DISTINCT dep.DPV_ID
17851
                    FROM PACKAGE_DEPENDENCIES dep
17852
                   WHERE dep.PV_ID = PatchId
17853
                  );
17854
 
17855
 
17856
   -- Update patch parent
17857
   UPDATE PACKAGE_VERSIONS pv SET
17858
   pv.IS_OBSOLETE = IsObsolete,
17859
   pv.OBSOLETE_COMMENTS = ObsoleteComments
17860
   WHERE pv.PV_ID IN (
17861
                  SELECT DISTINCT dep.PV_ID
17862
                    FROM PACKAGE_DEPENDENCIES dep
17863
                   WHERE dep.DPV_ID = PatchId
17864
                  );
17865
 
17866
      */
17867
 
17868
   /* LOG ACTION
17869
   IF IsObsolete IS NOT NULL THEN
17870
         Log_Action ( PatchId, 'patch_obsolete', UserId,
17871
                  'Obsolete patch. '|| ObsoleteComments );
17872
   ELSE
17873
      Log_Action ( PatchId, 'patch_obsolete', UserId,
17874
                  'Undo patch obsolete.' );
17875
   END IF;  */
17876
   END;
17877
 
17878
/*-------------------------------------------------------------------------------------------------------*/
17879
   PROCEDURE add_process (
17880
      nprocid         IN   processes.proc_id%TYPE,
17881
      shealthtag      IN   processes.proc_name%TYPE,
17882
      sprocdesc       IN   processes.proc_description%TYPE,
17883
      scmdinterface   IN   processes.run_as%TYPE,
17884
      spkgowner       IN   processes.pkg_owner%TYPE,
17885
      sisinterface    IN   processes.is_interface%TYPE,
17886
      npvid           IN   package_processes.pv_id%TYPE,
17887
      nuserid         IN   NUMBER
17888
   )
17889
   IS
17890
      pkgname   VARCHAR2 (100);
17891
/*Rupesh Release on 17/05/2006*/
17892
   BEGIN
17893
      INSERT INTO processes
17894
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
17895
                   is_interface
17896
                  )
17897
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
17898
                   sisinterface
17899
                  );
17900
 
17901
      pk_package.add_package_process (nprocid, npvid, nuserid);
17902
   END;
17903
 
17904
/*-------------------------------------------------------------------------------------------------------*/
17905
   PROCEDURE add_package_process (
17906
      nprocidlist   IN   VARCHAR2,
17907
      npvid         IN   package_processes.pv_id%TYPE,
17908
      nuserid       IN   NUMBER
17909
   )
17910
   IS
17911
      processname   VARCHAR2 (4000);
17912
 
17913
/*Rupesh Release on 17/05/2006*/
17914
      CURSOR proc_cur
17915
      IS
17916
         SELECT prc.proc_id
17917
           FROM processes prc
17918
          WHERE prc.proc_id IN (
17919
                   SELECT *
17920
                     FROM THE
17921
                             (SELECT CAST
17922
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
17923
                                        )
17924
                                FROM DUAL
17925
                             ));
17926
 
17927
      proc_rec      proc_cur%ROWTYPE;
17928
   BEGIN
17929
      OPEN proc_cur;
17930
 
17931
      FETCH proc_cur
17932
       INTO proc_rec;
17933
 
17934
      WHILE proc_cur%FOUND
17935
      LOOP
17936
         INSERT INTO package_processes
17937
                     (proc_id, pv_id
17938
                     )
17939
              VALUES (proc_rec.proc_id, npvid
17940
                     );
17941
 
17942
         SELECT prc.proc_name
17943
           INTO processname
17944
           FROM processes prc
17945
          WHERE prc.proc_id = proc_rec.proc_id;
17946
 
17947
         -- Log Action --
17948
         log_action (npvid,
17949
                     'process_add',
17950
                     nuserid,
17951
                     'Added process with health tag ' || processname
17952
                    );
17953
 
17954
         FETCH proc_cur
17955
          INTO proc_rec;
17956
      END LOOP;
17957
   END;
17958
 
17959
/*-------------------------------------------------------------------------------------------------------*/
17960
   PROCEDURE remove_process (
17961
      nprocid   IN   package_processes.proc_id%TYPE,
17962
      npvid     IN   package_processes.pv_id%TYPE,
17963
      nuserid   IN   NUMBER
17964
   )
17965
   IS
17966
      processname   VARCHAR2 (4000);
17967
/* Rupesh Release on 17/05/2006*/
17968
   BEGIN
17969
      SELECT prc.proc_name
17970
        INTO processname
17971
        FROM processes prc
17972
       WHERE prc.proc_id = nprocid;
17973
 
17974
      DELETE FROM package_processes
17975
            WHERE proc_id = nprocid AND pv_id = npvid;
17976
 
17977
      -- Log Action --
17978
      log_action (npvid,
17979
                  'process_remove',
17980
                  nuserid,
17981
                  'Removed process with health tag ' || processname
17982
                 );
17983
   END;
17984
/*-------------------------------------------------------------------------------------------------------*/
17985
  /* 
17986
  Author: Rupesh Solanki
17987
  Purpose: To move package versions from one release to another
17988
  Release: 4th September 2006 
17989
 
17990
  */
17991
  PROCEDURE move_package (
17992
   	  npvid  			  IN package_versions.pv_id%TYPE,
17993
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
17994
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
17995
	  nuserid			  IN NUMBER	
17996
  )	
17997
  IS	
17998
 
17999
  oldrtag_name VARCHAR2(4000);
18000
  newrtag_name VARCHAR2(4000);
18001
 
18002
 
18003
 
18004
  BEGIN
18005
 
18006
 
18007
  SELECT rtag_name into oldrtag_name
18008
  FROM RELEASE_TAGS
18009
  WHERE rtag_id = nrtagid;
18010
 
18011
  SELECT rtag_name into newrtag_name
18012
  FROM RELEASE_TAGS
18013
  WHERE rtag_id = nnewrtagid;
18014
 
18015
  /* Table Work In Progress*/
18016
  	   UPDATE WORK_IN_PROGRESS
18017
	   SET RTAG_ID = nnewrtagid
18018
	   WHERE RTAG_ID = nrtagid
18019
	   AND PV_ID = npvid;
18020
 
18021
  /* Table PLANNED*/	
18022
  	   UPDATE PLANNED
18023
	   SET RTAG_ID = nnewrtagid
18024
	   WHERE RTAG_ID = nrtagid
18025
	   AND PV_ID = npvid;   
18026
 
18027
      -- Log Action --
18028
      log_action (npvid,
18029
                  'move_package_version',
18030
                  nuserid,
18031
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
18032
                 );  	   	     
18033
 
18034
 
18035
  END;
18036
 
18037
/*-------------------------------------------------------------------------------------------------------*/
18038
PROCEDURE modify_product_state (
18039
   	  npvid IN package_versions.pv_id%TYPE,
18040
	  nstateid IN product_states.state_id%TYPE,
18041
	  nuserid IN NUMBER
18042
   ) IS
18043
 
18044
   sStateName VARCHAR(4000);
18045
 
18046
  /* 
18047
  Author: Rupesh Solanki
18048
  Purpose: To modify the product state from integration to test to deployment
18049
  Release: 25th January 2006 
18050
  */   
18051
 
18052
  BEGIN
18053
 
18054
  UPDATE PACKAGE_VERSIONS
18055
  SET PRODUCT_STATE = nstateid
18056
  WHERE PV_ID = npvid;
18057
 
18058
 
18059
  SELECT STATE INTO sStateName
18060
  FROM PRODUCT_STATES 
18061
  WHERE STATE_ID = nstateid;
18062
 
18063
  -- Log Action --
18064
  log_action (npvid,
18065
              'modify_product_state',
18066
               nuserid,
18067
               sStateName
18068
              );  
18069
 
18070
 
18071
  END;			  	   	     
18072
/*-------------------------------------------------------------------------------------------------------*/   
18073
END pk_package_Test;
18074
/
18075
 
18076
CREATE OR REPLACE PACKAGE BODY pk_project IS
18077
/*
18078
------------------------------
18079
||  Last Modified:  J.Tweddle
18080
||  Modified Date:  23/Aug/2007
18081
||  Body Version:   1.0
18082
------------------------------
18083
*/
18084
 
18085
    /*------------------------------------------------------------------------*/
18086
    PROCEDURE update_base_url ( 
18087
        nprojid   IN  projects.proj_id%TYPE,
18088
        sbaseurl  IN  VARCHAR2
18089
        ) IS
18090
    BEGIN
18091
 
18092
        UPDATE projects
18093
        SET base_url = sbaseurl
18094
        WHERE proj_id = nprojid;
18095
 
18096
    END update_base_url;
18097
    /*------------------------------------------------------------------------*/
18098
 
18099
END pk_project;
18100
/
18101
 
18102
CREATE OR REPLACE PACKAGE BODY pk_buildapi
18103
IS
18104
/*
18105
------------------------------
18106
||  Last Modified:  Jeremy Tweddle
18107
||  Modified Date:  14/Dec/2007
18108
||  Body Version:   3.1
18109
------------------------------
18110
*/
18111
 
18112
   /*-------------------------------------------------------------------------------------------------------*/
18113
   PROCEDURE add_product_component (
18114
      npvid           IN   NUMBER,
18115
      sosname         IN   VARCHAR2,
18116
      sorigfilepath   IN   VARCHAR2,
18117
      sfilename       IN   VARCHAR2,
18118
      sdestfilepath   IN   VARCHAR2,
18119
      nbytesize       IN   NUMBER,
18120
      scrccksum       IN   VARCHAR2
18121
   )
18122
   IS
18123
      nosid   NUMBER;
18124
   BEGIN
18125
      /*--------------- Business Rules Here -------------------*/
18126
      -- OS Name Requirements --
18127
      IF (sosname IS NULL)
18128
      THEN
18129
         raise_application_error (-20000, 'OsName cannot be NULL.');
18130
      END IF;
18131
 
18132
      -- File Requirements --
18133
      IF (NOT sfilename IS NULL)
18134
      THEN
18135
         IF (nbytesize IS NULL)
18136
         THEN
18137
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
18138
         ELSIF (scrccksum IS NULL)
18139
         THEN
18140
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
18141
         END IF;
18142
      END IF;
18143
 
18144
      -- Folder Requirements --
18145
      -- No requirements for now.
18146
 
18147
      /*-------------------------------------------------------*/
18148
 
18149
      -- Get OsId
18150
      nosid := get_osid (sosname);
18151
 
18152
      -- Insert component entry
18153
      INSERT INTO product_components
18154
                  (pv_id, os_id, file_path, file_name, destination_path,
18155
                   byte_size, crc_cksum
18156
                  )
18157
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
18158
                   nbytesize, scrccksum
18159
                  );
18160
   EXCEPTION
18161
      WHEN DUP_VAL_ON_INDEX
18162
      THEN
18163
         raise_application_error (-20000,
18164
                                  'Cannot have duplicate product components.'
18165
                                 );
18166
   END;
18167
 
18168
/*-------------------------------------------------------------------------------------------------------*/
18169
   PROCEDURE remove_all_product_components (
18170
      npvid     IN   NUMBER,
18171
      sosname   IN   VARCHAR2
18172
   )
18173
   IS
18174
      nosid   NUMBER;
18175
   BEGIN
18176
/*--------------- Business Rules Here -------------------*/
18177
/*-------------------------------------------------------*/
18178
 
18179
      -- Get OsId
18180
      nosid := get_osid (sosname);
18181
 
18182
      -- Delete component entry
18183
      DELETE FROM product_components pc
18184
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
18185
   END;
18186
 
18187
/*-------------------------------------------------------------------------------------------------------*/
18188
   FUNCTION get_osid (sosname IN VARCHAR2)
18189
      RETURN NUMBER
18190
   IS
18191
      code   NUMBER;
18192
   BEGIN
18193
      -- Get Platform Code --
18194
      SELECT pf.code
18195
        INTO code
18196
        FROM platforms pf
18197
       WHERE UPPER (pf.NAME) = UPPER (sosname);
18198
 
18199
      RETURN code;
18200
   EXCEPTION
18201
      WHEN NO_DATA_FOUND
18202
      THEN
18203
         raise_application_error
18204
            (-20000,
18205
                'Platform '
18206
             || sosname
18207
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
18208
            );
18209
         RAISE;
18210
   END;
18211
 
18212
/*-------------------------------------------------------------------------------------------------------*/
18213
   PROCEDURE update_build_service (
18214
      sdatabaseserver   IN   VARCHAR2,
18215
      swebserver        IN   VARCHAR2,
18216
      smailserver       IN   VARCHAR2,
18217
      smailsender       IN   VARCHAR2,
18218
      sdiskspace        IN   VARCHAR2,
18219
      ssbommanagement   IN   VARCHAR2
18220
   )
18221
   IS
18222
   BEGIN
18223
      UPDATE build_service_config
18224
         SET config = sdatabaseserver
18225
       WHERE service = 'DATABASE SERVER';
18226
 
18227
      UPDATE build_service_config
18228
         SET config = swebserver
18229
       WHERE service = 'WEB SERVER';
18230
 
18231
      UPDATE build_service_config
18232
         SET config = smailserver
18233
       WHERE service = 'MAIL SERVER';
18234
 
18235
      UPDATE build_service_config
18236
         SET config = smailsender
18237
       WHERE service = 'BUILD FAILURE MAIL SENDER';
18238
 
18239
      UPDATE build_service_config
18240
         SET config = sdiskspace
18241
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
18242
 
18243
      UPDATE build_service_config
18244
         SET config = ssbommanagement
18245
       WHERE service = 'SBOM MANAGEMENT';
18246
   END;
18247
 
18248
/*-------------------------------------------------------------------------------------------------------*/
18249
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
18250
   IS
18251
      gbe_id   NUMBER;
18252
   BEGIN
18253
      -- Get GBE_ID
18254
      SELECT seq_gbe_id.NEXTVAL
18255
        INTO gbe_id
18256
        FROM DUAL;
18257
 
18258
      INSERT INTO gbe_machtype
18259
                  (gbe_id, gbe_value
18260
                  )
18261
           VALUES (gbe_id, sgbevalue
18262
                  );
18263
   END;
18264
 
18265
/*-------------------------------------------------------------------------------------------------------*/
18266
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
18267
   IS
18268
   BEGIN
18269
      DELETE FROM gbe_machtype
18270
            WHERE gbe_id = ngbe_id;
18271
   END;
18272
 
18273
/*-------------------------------------------------------------------------------------------------------*/
18274
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
18275
   IS
18276
   BEGIN
18277
      UPDATE gbe_machtype
18278
         SET gbe_value = sgbevalue
18279
       WHERE gbe_id = ngbe_id;
18280
   END;
18281
 
18282
/*-------------------------------------------------------------------------------------------------------*/
18283
   PROCEDURE add_daemon (
18284
      sdaemonhostname   IN   VARCHAR2,
18285
      nrtagid           IN   NUMBER,
18286
      ngbeid            IN   NUMBER,
18287
      sgbebuildfilter   IN   VARCHAR2
18288
   )
18289
   IS
18290
      nrecordnumber   NUMBER;
18291
      nrconid         NUMBER;
18292
   BEGIN
18293
      -- Get RCON_ID
18294
      SELECT seq_rcon_id.NEXTVAL
18295
        INTO nrconid
18296
        FROM DUAL;
18297
 
18298
      SELECT COUNT (*)
18299
        INTO nrecordnumber
18300
        FROM release_config
18301
       WHERE rtag_id = nrtagid;
18302
 
18303
      IF nrecordnumber = 0
18304
      THEN
18305
         INSERT INTO release_config
18306
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18307
                      gbe_id, gbe_buildfilter
18308
                     )
18309
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
18310
                      ngbeid, sgbebuildfilter
18311
                     );
18312
      ELSE
18313
         INSERT INTO release_config
18314
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
18315
                      gbe_id, gbe_buildfilter
18316
                     )
18317
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
18318
                      ngbeid, sgbebuildfilter
18319
                     );
18320
      END IF;
18321
   END;
18322
 
18323
/*-------------------------------------------------------------------------------------------------------*/
18324
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
18325
   IS
18326
   BEGIN
18327
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
18328
      DELETE FROM daemon_action_log
18329
            WHERE rcon_id IN (
18330
                     SELECT *
18331
                       FROM THE
18332
                               (SELECT CAST
18333
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18334
                                          )
18335
                                  FROM DUAL
18336
                               ));
18337
 
18338
      DELETE FROM run_level
18339
            WHERE rcon_id IN (
18340
                     SELECT *
18341
                       FROM THE
18342
                               (SELECT CAST
18343
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18344
                                          )
18345
                                  FROM DUAL
18346
                               ));
18347
 
18348
      DELETE FROM abt_action_log
18349
            WHERE rcon_id IN (
18350
                     SELECT *
18351
                       FROM THE
18352
                               (SELECT CAST
18353
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18354
                                          )
18355
                                  FROM DUAL
18356
                               ));
18357
 
18358
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
18359
      DELETE FROM release_config
18360
            WHERE rcon_id IN (
18361
                     SELECT *
18362
                       FROM THE
18363
                               (SELECT CAST
18364
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
18365
                                          )
18366
                                  FROM DUAL
18367
                               ));
18368
   END;
18369
 
18370
/*-------------------------------------------------------------------------------------------------------*/
18371
   PROCEDURE update_daemon (
18372
      sdaemonhostname   IN   VARCHAR2,
18373
      nrconid           IN   NUMBER,
18374
      ngbeid            IN   NUMBER,
18375
      sgbebuildfilter   IN   VARCHAR2
18376
   )
18377
   IS
18378
   BEGIN
18379
      UPDATE release_config
18380
         SET daemon_hostname = sdaemonhostname,
18381
             gbe_id = ngbeid,
18382
             gbe_buildfilter = sgbebuildfilter
18383
       WHERE rcon_id = nrconid;
18384
   END;
18385
 
18386
/*-------------------------------------------------------------------------------------------------------*/
18387
   PROCEDURE insert_schedule_info (
18388
      dschedulepause     IN   DATE,
18389
      dscheduleresume    IN   DATE,
18390
      crepeat            IN   VARCHAR2,
18391
      cindefinitepause   IN   VARCHAR2
18392
   )
18393
   IS
18394
      nscheduledid   NUMBER;
18395
   BEGIN
18396
      -- Get Next Available Scheduled Id
18397
      SELECT seq_scheduled_id.NEXTVAL
18398
        INTO nscheduledid
18399
        FROM DUAL;
18400
 
18401
      INSERT INTO run_level_schedule
18402
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
18403
                   cindefinitepause);
18404
   END;
18405
 
18406
/*-------------------------------------------------------------------------------------------------------*/
18407
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
18408
   IS
18409
   BEGIN
18410
      DELETE FROM run_level_schedule
18411
            WHERE scheduled_id = nscheduleid;
18412
   END;
18413
 
18414
/*-------------------------------------------------------------------------------------------------------*/
18415
   PROCEDURE set_infinite_pause
18416
   IS
18417
      nscheduledid   NUMBER;
18418
   BEGIN
18419
      -- Get Next Available Scheduled Id
18420
      SELECT seq_scheduled_id.NEXTVAL
18421
        INTO nscheduledid
18422
        FROM DUAL;
18423
 
18424
      INSERT INTO run_level_schedule
18425
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
18426
   END;
18427
 
18428
/*-------------------------------------------------------------------------------------------------------*/
18429
   PROCEDURE set_resume
18430
   IS
18431
   BEGIN
18432
      DELETE FROM run_level_schedule
18433
            WHERE indefinite_pause = 'P';
18434
   END;
18435
 
18436
/*-------------------------------------------------------------------------------------------------------*/
18437
   PROCEDURE delete_out_of_date_schedule
18438
   IS
18439
   BEGIN
18440
      DELETE FROM run_level_schedule
18441
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
18442
   END;
18443
 
18444
/*-------------------------------------------------------------------------------------------------------*/
18445
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
18446
   IS
18447
   BEGIN
18448
      UPDATE run_level
18449
         SET PAUSE = NULL
18450
       WHERE rcon_id = nrconid;
18451
   END;
18452
 
18453
/*-------------------------------------------------------------------------------------------------------*/
18454
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
18455
   IS
18456
   BEGIN
18457
      UPDATE run_level
18458
         SET PAUSE = 1
18459
       WHERE rcon_id = nrconid;
18460
   END;
18461
/*-------------------------------------------------------------------------------------------------------*/
18462
END pk_buildapi;
18463
/
18464
 
18465
CREATE OR REPLACE PACKAGE BODY Rm_Issues AS
18466
 
18467
-- Private Implementation -----------------------------------------------------
18468
 
18469
 
18470
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18471
	AS
18472
 
18473
	BEGIN
18474
		-- start boundary case
18475
		IF ( XXstart < XX ) THEN
18476
			RETURN 1;
18477
 
18478
		ELSIF ( XXstart = XX ) THEN
18479
 
18480
			-- need to consider YY
18481
			IF ( YYstart < YY ) THEN
18482
				RETURN 1;
18483
 
18484
			ELSIF ( YYstart = YY ) THEN
18485
 
18486
					-- need to consider ZZ
18487
					IF ( ZZstart <= ZZ ) THEN
18488
						RETURN 1;
18489
 
18490
					ELSE
18491
						RETURN 0;
18492
					END IF;
18493
 
18494
			ELSE
18495
				RETURN 0;
18496
			END IF;
18497
		ELSE
18498
			RETURN 0;
18499
		END IF;
18500
	EXCEPTION
18501
		WHEN OTHERS THEN
18502
			RETURN -1;
18503
	END;
18504
 
18505
 
18506
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
18507
	AS
18508
 
18509
	BEGIN
18510
		-- end boundary case
18511
		IF ( XX < XXend ) THEN
18512
			RETURN 1;
18513
 
18514
		ELSIF ( XX = XXend ) THEN
18515
 
18516
			-- need to consider YY
18517
			IF ( YY < YYend ) THEN
18518
				RETURN 1;
18519
 
18520
			ELSIF ( YY = YYend ) THEN
18521
 
18522
					-- need to consider ZZ
18523
					IF ( ZZ <= ZZend ) THEN
18524
						RETURN 1;
18525
 
18526
					ELSE
18527
						RETURN 0;
18528
					END IF;
18529
			ELSE
18530
 
18531
				RETURN 0;
18532
			END IF;
18533
		ELSE
18534
			RETURN 0;
18535
		END IF;
18536
	EXCEPTION
18537
		WHEN OTHERS THEN
18538
			RETURN -1;
18539
	END;
18540
 
18541
	/*
18542
	-	version format:		XX.YY.ZZ.abc
18543
	*/
18544
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
18545
	AS
18546
		XXstart		NUMBER	:=	0;
18547
		XXend		NUMBER	:=	0;
18548
		XX			NUMBER	:=	0;
18549
		YYstart		NUMBER	:=	0;
18550
		YYend		NUMBER	:=	0;
18551
		YY			NUMBER	:=	0;
18552
		ZZstart		NUMBER	:=	0;
18553
		ZZend		NUMBER	:=	0;
18554
		ZZ			NUMBER	:=	0;
18555
		first_dot	NUMBER	:=	0;
18556
		second_dot	NUMBER	:=	0;
18557
		third_dot	NUMBER	:=	0;
18558
 
18559
		ProjExtstart	VARCHAR2(10);
18560
		ProjExtend		VARCHAR2(10);
18561
		ProjExt			VARCHAR2(10);
18562
 
18563
	BEGIN
18564
		-- strip the version number
18565
		first_dot :=  INSTR(version_start, '.', 1, 1);
18566
		second_dot :=  INSTR(version_start, '.', 1, 2);
18567
		third_dot :=  INSTR(version_start, '.', 1, 3);
18568
 
18569
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
18570
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18571
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18572
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
18573
 
18574
		first_dot :=  INSTR(version_end, '.', 1, 1);
18575
		second_dot :=  INSTR(version_end, '.', 1, 2);
18576
		third_dot :=  INSTR(version_end, '.', 1, 3);
18577
 
18578
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
18579
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18580
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18581
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
18582
 
18583
		first_dot :=  INSTR(version, '.', 1, 1);
18584
		second_dot :=  INSTR(version, '.', 1, 2);
18585
		third_dot :=  INSTR(version, '.', 1, 3);
18586
 
18587
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
18588
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
18589
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
18590
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
18591
 
18592
		-- only include versions if all project extensions are the same
18593
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
18594
 
18595
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
18596
				RETURN 1;
18597
			ELSE
18598
				RETURN 0;
18599
			END IF;
18600
		ELSE
18601
			RETURN 0;
18602
		END IF;
18603
 
18604
	EXCEPTION
18605
		WHEN OTHERS THEN
18606
			RETURN -1;
18607
	END;
18608
 
18609
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
18610
	AS
18611
	    pkg_id NUMBER;
18612
	BEGIN
18613
		SELECT
18614
			p.PKG_ID
18615
		INTO
18616
			pkg_id
18617
		FROM
18618
			PACKAGES p
18619
		WHERE
18620
			p.PKG_NAME = pkgName;
18621
 
18622
		RETURN pkg_id;
18623
	EXCEPTION
18624
	    WHEN OTHERS THEN
18625
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
18626
			RETURN -1;
18627
	END;
18628
 
18629
 
18630
-- Public Implementation ------------------------------------------------------
18631
 
18632
	/*
18633
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
18634
	--
18635
	-- INPUT PARAMETERS:
18636
	--
18637
	--		pkg_name  	-  	The name of the top level package to get issues for
18638
	--		version_start	-	The start version for the comparison
18639
	--		version_end	-	The end version for the comparison
18640
	*/
18641
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18642
	AS
18643
		pkgId	NUMBER;
18644
	BEGIN
18645
		-- get pkg_id of the input package:
18646
		pkgId := GetPkgId( pkg_name );
18647
 
18648
		OPEN vCursor FOR
18649
		SELECT
18650
			  pv.PKG_ID,
18651
			  pv.PKG_VERSION,
18652
			  pv.PV_ID,
18653
			  i_pkg.ISS_ID,
18654
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
18655
			  pd.DPKG_ID,
18656
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
18657
			  pd.DPV_ID,
18658
			  i_dpkg.ISS_ID AS ISSUE_ID
18659
		FROM
18660
			 PACKAGE_VERSIONS pv
18661
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
18662
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
18663
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
18664
		WHERE
18665
   			 pv.PKG_ID = pkgId
18666
		AND
18667
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
18668
		AND
18669
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
18670
		ORDER BY
18671
			 pv.PKG_ID,
18672
			 pv.PV_ID,
18673
			 pd.DPKG_ID,
18674
			 pd.DPV_ID;
18675
	EXCEPTION
18676
		WHEN OTHERS THEN
18677
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
18678
	END;
18679
 
18680
 
18681
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
18682
 
18683
	/*
18684
	-- Proc: LoadIssuesTable
18685
	--
18686
	-- Populates Package_Issues table with details of issues from all dependent packages.
18687
	-- This will be for all package versions of the input pkg_name between the
18688
	-- version_start and version_end.
18689
	--
18690
	-- INPUT PARAMETERS:
18691
	--
18692
	--		pkg_name  	-  	The name of the top level package to get issues for
18693
	--		version_start	-	The start version for the comparison
18694
	--		version_end	-	The end version for the comparison
18695
	*/
18696
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
18697
	AS
18698
		pkgId	NUMBER;
18699
 
18700
		CURSOR pack_vers_cur IS
18701
			SELECT
18702
				pv.PV_ID,
18703
				pv.PKG_VERSION,
18704
				pv.PKG_ID,
18705
				p.PKG_NAME
18706
			FROM
18707
				PACKAGE_VERSIONS pv
18708
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18709
			WHERE
18710
   				 pv.PKG_ID = pkgId
18711
			AND
18712
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
18713
 
18714
	BEGIN
18715
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18716
 
18717
		-- get the pkg_id we are finding issues for
18718
		pkgId := GetPkgId( pkg_name );
18719
 
18720
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
18721
		FOR pack_ver_rec IN  pack_vers_cur
18722
		LOOP
18723
			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 );
18724
			COMMIT;
18725
		END LOOP;
18726
 
18727
		-- The output cursor - shows the individual versions of the top level package then were reported on
18728
		OPEN vCursor FOR
18729
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18730
/*removed
18731
		SELECT
18732
			PKG_VERSION
18733
		FROM
18734
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
18735
*/
18736
 
18737
 
18738
	EXCEPTION
18739
		WHEN OTHERS THEN
18740
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
18741
	END;
18742
 
18743
 
18744
	/*
18745
	-- Proc: InsertIssuesForDepends
18746
	--
18747
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
18748
	--
18749
	-- INPUT PARAMETERS:
18750
	--
18751
	--		pvID  		-  	The package version id of the package to get issues for
18752
	--		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)
18753
	--		top_pkgName -  	The package name of the top level package
18754
	--		top_pvID  	-  	The package version id of the top level package
18755
	--		top_pkgVer  -  	The package version description of the top level package
18756
	*/
18757
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
18758
	AS
18759
		pkgId		NUMBER;
18760
		issCnt		NUMBER := 0;
18761
		pkgCheck	NUMBER := 0;
18762
		depCheck	NUMBER := 0;
18763
 
18764
		dpkgName	VARCHAR(50);
18765
		dpkgVersion	VARCHAR(50);
18766
 
18767
		CURSOR dep_packs_cur IS
18768
			SELECT
18769
				DPV_ID
18770
			FROM
18771
				PACKAGE_DEPENDENCIES
18772
			WHERE
18773
				PV_ID = pvID;
18774
 
18775
	BEGIN
18776
 
18777
		-- check to see if the package has been processed previously
18778
		SELECT
18779
			COUNT(*)
18780
		INTO
18781
			pkgCheck
18782
		FROM
18783
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18784
		WHERE
18785
			DPV_ID = pvID;
18786
 
18787
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
18788
 
18789
		-- Package not already processed (no cyclic dependency) - process it
18790
		IF ( pkgCheck = 0 ) THEN
18791
 
18792
			-- check to see if this package version has any issues assigned to it
18793
			SELECT
18794
				COUNT(*)
18795
			INTO
18796
				issCnt
18797
			FROM
18798
				CQ_ISSUES i
18799
			WHERE
18800
				i.PV_ID = pvID;
18801
 
18802
			dbms_output.put_line('issCnt: ' || issCnt );
18803
 
18804
			-- Always enter a marker row into the table even if there are no issues for the package.
18805
			-- This allows us to pick up any cyclic dependencies.
18806
			IF ( issCnt > 0 ) THEN
18807
				-- get issues and insert into RM_PACKAGE_ISSUES
18808
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18809
 
18810
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18811
					SELECT DISTINCT
18812
						top_pkgID		AS PKG_ID,
18813
						top_pkgName		AS PKG_NAME,
18814
						top_pvID		AS PV_ID,
18815
						top_pkgVer		AS PKG_VERSION,
18816
						pv.PV_ID		AS DPV_ID,
18817
						p.PKG_NAME		AS DPKG_NAME,
18818
						pv.PKG_VERSION	AS DPKG_VERSION,
18819
						ci.ISS_DB,
18820
						ci.ISS_ID
18821
					FROM
18822
						PACKAGE_VERSIONS pv
18823
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18824
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
18825
					WHERE
18826
						pv.PV_ID = pvID;
18827
 
18828
			ELSE
18829
				-- get the dpkg details - there will always be a row returned here
18830
				SELECT
18831
					p.PKG_NAME
18832
				INTO
18833
					dpkgName
18834
				FROM
18835
					PACKAGE_VERSIONS pv
18836
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
18837
				WHERE
18838
	   				 pv.PV_ID = pvID;
18839
 
18840
				SELECT
18841
					pv.PKG_VERSION
18842
				INTO
18843
					dpkgVersion
18844
				FROM
18845
					PACKAGE_VERSIONS pv
18846
				WHERE
18847
	   				 pv.PV_ID = pvID;
18848
 
18849
				-- enter a marker row
18850
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
18851
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
18852
				VALUES (
18853
					top_pkgID,
18854
					top_pkgName,
18855
					top_pvID,
18856
					top_pkgVer,
18857
					pvID,
18858
					dpkgName,
18859
					dpkgVersion,
18860
					NULL,
18861
					NULL );
18862
 
18863
			END IF;
18864
 
18865
			-- If this package version has dependencies then recurse
18866
			SELECT
18867
				COUNT(*)
18868
			INTO
18869
				depCheck
18870
			FROM
18871
				PACKAGE_DEPENDENCIES
18872
			WHERE
18873
				PV_ID = pvID;
18874
 
18875
			IF ( depCheck > 0 ) THEN
18876
				-- get dependencies and call this function recursively for each one
18877
				FOR dep_rec IN  dep_packs_cur
18878
				LOOP
18879
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
18880
				END LOOP;
18881
 
18882
			END IF;
18883
 
18884
		END IF;
18885
 
18886
	/*EXCEPTION
18887
		WHEN OTHERS THEN
18888
			no exception handling required
18889
	*/
18890
	END;
18891
 
18892
END Rm_Issues;
18893
/
18894
 
53 mhunt 18895
CREATE OR REPLACE PACKAGE BODY                   "PK_PLANNED" IS
51 mhunt 18896
 
18897
/*
18898
------------------------------
53 mhunt 18899
||  Last Modified:  G.Huddy
57 mhunt 18900
||  Modified Date:  28/May/2008
18901
||  Body Version:   1.1
51 mhunt 18902
------------------------------
18903
*/
18904
 
18905
 
18906
/*-------------------------------------------------------------------------------------------------------*/
18907
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18908
 
57 mhunt 18909
	oldPvId NUMBER;
18910
	ReleaseLocation VARCHAR2(4000);
18911
	IsPatch CHAR(1) := NULL;
18912
	sLocation VARCHAR2(4000) := NULL;
18913
	nRtagIdLocation NUMBER;
51 mhunt 18914
 
18915
 
53 mhunt 18916
 
51 mhunt 18917
BEGIN
57 mhunt 18918
	/*--------------- Business Rules Here -------------------*/
18919
	/*-------------------------------------------------------*/
51 mhunt 18920
 
57 mhunt 18921
	BEGIN
18922
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
18923
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
18924
		  FROM PLANNED pl,
18925
			   RELEASE_TAGS rt,
18926
			   PROJECTS proj
18927
		 WHERE pl.PV_ID = newPvId
18928
		   AND pl.RTAG_ID = rt.RTAG_ID
18929
		   AND rt.OFFICIAL != 'Y'
18930
		   AND rt.PROJ_ID = proj.PROJ_ID;
51 mhunt 18931
 
57 mhunt 18932
		EXCEPTION
18933
			WHEN NO_DATA_FOUND THEN
18934
				sLocation := NULL;
18935
	END;
51 mhunt 18936
 
18937
 
18938
 
57 mhunt 18939
	IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
51 mhunt 18940
 
57 mhunt 18941
		-- Add to "Pending" area
18942
		INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
18943
		VALUES( RtagId, newPvId, ViewId, 'R' );
51 mhunt 18944
 
18945
 
57 mhunt 18946
		/* LOG ACTION */
18947
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18948
		  FROM PROJECTS proj,
18949
			   RELEASE_TAGS rt
18950
		 WHERE rt.PROJ_ID = proj.PROJ_ID
18951
		   AND rt.RTAG_ID = RtagId;
51 mhunt 18952
 
57 mhunt 18953
		Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
53 mhunt 18954
 
57 mhunt 18955
	ELSE
51 mhunt 18956
 
57 mhunt 18957
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
53 mhunt 18958
 
57 mhunt 18959
	END IF;
51 mhunt 18960
 
18961
END;
18962
/*-------------------------------------------------------------------------------------------------------*/
18963
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
18964
 
57 mhunt 18965
	ReleaseLocation VARCHAR2(4000);
51 mhunt 18966
 
18967
BEGIN
18968
 
57 mhunt 18969
	/*--------------- Business Rules Here -------------------*/
18970
	/*-------------------------------------------------------*/
51 mhunt 18971
 
18972
 
57 mhunt 18973
	-- Get release location for logging pusposes
18974
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
18975
	  FROM PROJECTS proj,
18976
		   RELEASE_TAGS rt
18977
	 WHERE rt.PROJ_ID = proj.PROJ_ID
18978
	   AND rt.RTAG_ID = RtagId;
51 mhunt 18979
 
18980
 
57 mhunt 18981
	-- Delete from Work In Progress
18982
	DELETE
18983
	  FROM PLANNED pl
18984
	 WHERE pl.RTAG_ID = RtagId
18985
	   AND pl.PV_ID = PvId;
51 mhunt 18986
 
57 mhunt 18987
	Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
51 mhunt 18988
 
18989
 
18990
 
18991
 
18992
END;
18993
/*-------------------------------------------------------------------------------------------------------*/
18994
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
18995
 
57 mhunt 18996
	ReturnValue NUMBER;
51 mhunt 18997
 
18998
BEGIN
57 mhunt 18999
	SELECT pl.VIEW_ID INTO ReturnValue
19000
	  FROM PLANNED pl
19001
	 WHERE pl.RTAG_ID = RtagId
19002
	   AND pl.PV_ID = PvId;
51 mhunt 19003
 
57 mhunt 19004
	RETURN ReturnValue;
51 mhunt 19005
END;
19006
/*-------------------------------------------------------------------------------------------------------*/
19007
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
19008
 
57 mhunt 19009
	IsBaseView CHAR(1);
53 mhunt 19010
 
51 mhunt 19011
BEGIN
19012
 
57 mhunt 19013
	-- Check if the view is BASE VIEW
19014
	SELECT vi.BASE_VIEW INTO IsBaseView
19015
	  FROM VIEWS vi
19016
	 WHERE vi.VIEW_ID = ViewId;
51 mhunt 19017
 
53 mhunt 19018
 
57 mhunt 19019
	IF (IsBaseView = 'Y') THEN
19020
		-- Get Base view content
19021
		OPEN RecordSet FOR
19022
		SELECT 0 AS PKG_STATE,
19023
			   NULL AS DEPRECATED_STATE,
19024
			   pv.pv_id,
19025
			   pkg.pkg_name,
19026
			   pv.pkg_version,
19027
			   pv.dlocked,
19028
			   pv.pv_description,
19029
			   pv.BUILD_TYPE,
19030
			   rel.operation
19031
		  FROM PLANNED rel,
19032
			   packages pkg,
19033
			   package_versions pv
19034
		 WHERE pv.pkg_id = pkg.pkg_id
19035
		   AND rel.pv_id = pv.pv_id
19036
		   AND rel.VIEW_ID = ViewId
19037
		   AND rel.RTAG_ID = RtagId
19038
		 ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 19039
 
57 mhunt 19040
	ELSE
53 mhunt 19041
 
57 mhunt 19042
		-- Get non base view content
19043
		OPEN RecordSet FOR
19044
		SELECT 0 AS PKG_STATE,
19045
			   NULL AS DEPRECATED_STATE,
19046
			   pv.pv_id,
19047
			   pkg.pkg_name,
19048
			   pv.pkg_version,
19049
			   pv.dlocked,
19050
			   pv.pv_description,
19051
			   pv.BUILD_TYPE,
19052
			   rel.operation
19053
		  FROM PLANNED rel,
19054
			   packages pkg,
19055
			   package_versions pv,
19056
			   VIEW_DEF vd
19057
		 WHERE pv.pkg_id = pkg.pkg_id
19058
		   AND rel.pv_id = pv.pv_id
19059
		   AND rel.RTAG_ID = RtagId
19060
		   AND vd.VIEW_ID = ViewId
19061
		   AND vd.PKG_ID = pv.PKG_ID
19062
		 ORDER BY UPPER(pkg.PKG_NAME);
51 mhunt 19063
 
57 mhunt 19064
	END IF;
53 mhunt 19065
 
19066
 
51 mhunt 19067
END;
19068
/*-------------------------------------------------------------------------------------------------------*/
19069
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
53 mhunt 19070
 
51 mhunt 19071
BEGIN
53 mhunt 19072
 
57 mhunt 19073
	UPDATE PLANNED pl SET
19074
	pl.VIEW_ID = NewViewId
19075
	WHERE pl.PV_ID = PvId
19076
	  AND pl.RTAG_ID = RtagId;
53 mhunt 19077
 
51 mhunt 19078
END;
19079
/*-------------------------------------------------------------------------------------------------------*/
53 mhunt 19080
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
19081
-- version of a package as part of a release-to-release merge operation carried out within release manager.
55 mhunt 19082
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
19083
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
19084
-- via the Release Manager merge manager display
53 mhunt 19085
 
19086
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
19087
 
55 mhunt 19088
    ReleaseLocation VARCHAR2(4000);
53 mhunt 19089
 
55 mhunt 19090
        entryExists NUMBER;
19091
        existingOperation CHAR;
53 mhunt 19092
BEGIN
55 mhunt 19093
    /*--------------- Business Rules Here -------------------*/
19094
    /*-------------------------------------------------------*/
53 mhunt 19095
 
55 mhunt 19096
      -- Determine if the specified PV_ID already exists in the planned table....
19097
      SELECT COUNT (pl.pv_id) INTO entryExists
19098
      FROM PLANNED pl
19099
      WHERE pl.pv_id = newPvId
19100
      AND pl.rtag_id = RtagId
19101
      AND pl.view_id = ViewId;
53 mhunt 19102
 
55 mhunt 19103
      -- If the specified PV_ID already exists in the planned table....
19104
      IF entryExists = 1 THEN
53 mhunt 19105
 
55 mhunt 19106
         -- Get the operation for the existing entry
19107
         SELECT pl.operation INTO existingOperation
19108
         FROM PLANNED pl
19109
         WHERE pl.pv_id = newPvId
19110
         AND pl.rtag_id = RtagId
19111
         AND pl.view_id = ViewId;
53 mhunt 19112
 
55 mhunt 19113
         -- Is the specified merge operation the opposite of the existing entry?
19114
         -- If it is not, then there is nothing to do, otherwise...
19115
         -- NOTE: A = Add, S = Subtract
19116
         IF (mergeOperation = 'S' AND existingOperation = 'A')
19117
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
53 mhunt 19118
 
55 mhunt 19119
           -- It is the opposite, so effectively it cancels the existing entry
19120
           -- Remove the entry from the planned table
19121
           DELETE
19122
            FROM PLANNED pl
19123
           WHERE pl.pv_id = newPvId
19124
             AND pl.rtag_id = RtagId
19125
             AND pl.view_id = ViewId;
53 mhunt 19126
 
55 mhunt 19127
           -- Log action
19128
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19129
             FROM PROJECTS proj,
19130
                  RELEASE_TAGS rt
19131
            WHERE rt.PROJ_ID = proj.PROJ_ID
19132
              AND rt.RTAG_ID = RtagId;
19133
 
19134
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
19135
         END IF;
19136
      ELSE
19137
         -- Add to Planned tabled
19138
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
19139
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
19140
 
19141
         -- Log Action
19142
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
19143
          FROM PROJECTS proj,
19144
               RELEASE_TAGS rt
19145
         WHERE rt.PROJ_ID = proj.PROJ_ID
19146
         AND   rt.RTAG_ID = RtagId;
19147
 
19148
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
19149
      END IF;
19150
 
53 mhunt 19151
END;
19152
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19153
END PK_PLANNED;
19154
/
19155
 
57 mhunt 19156
CREATE OR REPLACE PACKAGE BODY                   "PK_RMAPI"
51 mhunt 19157
IS
19158
/*
19159
------------------------------
57 mhunt 19160
||  Last Modified:  Gordon Huddy
19161
||  Modified Date:  08/Aug/2008
19162
||  Body Version:   3.4
51 mhunt 19163
------------------------------
19164
*/
19165
 
19166
   /*-------------------------------------------------------------------------------------------------------*/
19167
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
19168
      RETURN typecur
19169
   IS
19170
      npvid     NUMBER  := 0;
19171
      RECORDS   typecur;
19172
   BEGIN
19173
      BEGIN
19174
         -- Get PV_ID --
19175
         SELECT pv.pv_id
19176
           INTO npvid
19177
           FROM PACKAGES pkg, package_versions pv
19178
          WHERE pv.pkg_id = pkg.pkg_id
19179
            AND pkg.pkg_name = pkgname
19180
            AND pv.pkg_version = pkgversion;
19181
      EXCEPTION
19182
         WHEN NO_DATA_FOUND
19183
         THEN
19184
            raise_application_error (-20000, 'Package Not Found!');
19185
            --WHEN OTHERS THEN
19186
                  -- Consider logging the error and then re-raise
19187
            RAISE;
19188
      END;
19189
 
19190
      -- Finally get package dependencies --
19191
      OPEN RECORDS FOR
19192
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
19193
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
19194
          WHERE dep.pv_id = npvid
19195
            AND dpv.pkg_id = dpkg.pkg_id
19196
            AND dpv.pv_id = dep.dpv_id;
19197
 
19198
      RETURN RECORDS;
19199
   END;
19200
 
19201
/*-------------------------------------------------------------------------------------------------------*/
19202
   FUNCTION wip_iteration_package (
19203
      projname        VARCHAR2,
19204
      iterationname   VARCHAR2,
19205
      pkgname         VARCHAR2
19206
   )
19207
      RETURN typecur
19208
   IS
19209
      nrtagid   NUMBER  := 0;
19210
      RECORDS   typecur;
19211
   BEGIN
19212
      BEGIN
19213
         -- Get latest rtag_id --
19214
         SELECT rt.rtag_id
19215
           INTO nrtagid
19216
           FROM projects proj, release_tags rt
19217
          WHERE rt.proj_id = proj.proj_id
19218
            AND UPPER (proj.proj_name) = UPPER (projname)
19219
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
19220
 
19221
         IF (nrtagid IS NULL)
19222
         THEN
19223
            raise_application_error (-20000,
19224
                                     'Work In Progress is Not Found!');
19225
         END IF;
19226
      EXCEPTION
19227
         WHEN NO_DATA_FOUND
19228
         THEN
19229
            raise_application_error (-20000,
19230
                                     'Work In Progress is Not Found!');
19231
            RAISE;
19232
      END;
19233
 
19234
      -- Finally get package dependencies --
19235
      OPEN RECORDS FOR
19236
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
19237
                pv.src_path
19238
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
19239
          WHERE pv.pkg_id = pkg.pkg_id
19240
            AND wip.pv_id = pv.pv_id
19241
            AND wip.rtag_id = nrtagid
19242
            AND pkg.pkg_name = pkgname;
19243
 
19244
      RETURN RECORDS;
19245
   END;
19246
 
19247
/*-------------------------------------------------------------------------------------------------------*/
19248
   FUNCTION auto_make_release (
19249
      rtagid                   IN   NUMBER,
19250
      pkgname                  IN   VARCHAR2,
19251
      vext                     IN   VARCHAR2,
19252
      newpkgversion            IN   VARCHAR2,
19253
      label                    IN   VARCHAR2,
19254
      dependenciesimportlist   IN   VARCHAR2,
19255
      isrippled                IN   NUMBER,
19256
      username                 IN   VARCHAR2
19257
   )
19258
      RETURN NUMBER
19259
   IS
19260
      pkgid                           NUMBER;
19261
      pvid                            NUMBER                        := 0;
19262
      userid                          NUMBER;
19263
      dlocked                         VARCHAR2 (20)                 := NULL;
19264
      clonefrompvid                   NUMBER;
19265
      ssv_mm                          package_versions.v_mm%TYPE;
19266
      ssv_nmm                         package_versions.v_nmm%TYPE;
19267
      ssv_ext                         package_versions.v_ext%TYPE;
19268
      return_package_not_found        NUMBER                        := -1;
19269
      return_package_already_exists   NUMBER                        := -2;
19270
      return_not_approved             NUMBER                        := -3;
19271
   BEGIN
19272
      /*--------------- Business Rules Here -------------------*/
19273
      IF (rtagid IS NULL)
19274
      THEN
19275
         raise_application_error (-20000, 'RtagId must be supplied.');
19276
      END IF;
19277
 
19278
      IF (pkgname IS NULL)
19279
      THEN
19280
         raise_application_error (-20000, 'PkgName must be supplied.');
19281
      END IF;
19282
 
19283
      IF (newpkgversion IS NULL)
19284
      THEN
19285
         raise_application_error (-20000, 'PkgVersion must be supplied.');
19286
      END IF;
19287
 
19288
      IF (label IS NULL)
19289
      THEN
19290
         raise_application_error (-20000, 'Label must be supplied.');
19291
      END IF;
19292
 
19293
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
19294
      THEN
19295
         raise_application_error
19296
            (-20000,
19297
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
19298
            );
19299
      END IF;
19300
 
19301
      IF (username IS NULL)
19302
      THEN
19303
         raise_application_error (-20000, 'UserName must be supplied.');
19304
      END IF;
19305
 
19306
      -- Get user_id
19307
      BEGIN
19308
         SELECT usr.user_id
19309
           INTO userid
19310
           FROM users usr
19311
          WHERE UPPER (usr.user_name) = UPPER (username)
19312
            AND usr.is_disabled IS NULL;
19313
      EXCEPTION
19314
         WHEN NO_DATA_FOUND
19315
         THEN
19316
            raise_application_error (-20000,
19317
                                        'UserName '
19318
                                     || username
19319
                                     || ' is not valid or disabled.'
19320
                                    );
19321
      END;
19322
 
19323
/*-------------------------------------------------------*/
19324
 
19325
      -- Create package if necessary
19326
      IF isrippled = 1
19327
      THEN
19328
         /* Ripple Build */
19329
         BEGIN
19330
            -- Make sure that package does not exist
19331
            SELECT pv.pv_id
19332
              INTO pvid
19333
              FROM package_versions pv, PACKAGES pkg
19334
             WHERE pv.pkg_id = pkg.pkg_id
19335
               AND pkg.pkg_name = pkgname
19336
               AND pv.pkg_version = newpkgversion;
19337
         EXCEPTION
19338
            WHEN NO_DATA_FOUND
19339
            THEN
19340
               pvid := 0;
19341
         END;
19342
 
19343
         IF (pvid = 0)
19344
         THEN
19345
            -- Split current version in parts
19346
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19347
 
19348
            BEGIN
19349
               -- Find package to be replaced with thie ripple package
19350
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19351
               THEN
19352
                  SELECT pv.pv_id
19353
                    INTO clonefrompvid
19354
                    FROM PACKAGES pkg, package_versions pv,
19355
                         release_content rc
19356
                   WHERE rc.pv_id = pv.pv_id
19357
                     AND pv.pkg_id = pkg.pkg_id
19358
                     AND rc.rtag_id = rtagid
19359
                     AND pkg.pkg_name = pkgname
19360
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
19361
               ELSE
19362
                  SELECT pv.pv_id
19363
                    INTO clonefrompvid
19364
                    FROM PACKAGES pkg, package_versions pv,
19365
                         release_content rc
19366
                   WHERE rc.pv_id = pv.pv_id
19367
                     AND pv.pkg_id = pkg.pkg_id
19368
                     AND rc.rtag_id = rtagid
19369
                     AND pkg.pkg_name = pkgname
19370
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19371
               END IF;
19372
            EXCEPTION
19373
               WHEN NO_DATA_FOUND
19374
               THEN
19375
                  raise_application_error
19376
                                        (-20000,
19377
                                            'Cannot get CloneFromPvId. VExt='
19378
                                         || vext
19379
                                         || ', RtagId='
19380
                                         || rtagid
19381
                                         || ', PkgName='
19382
                                         || pkgname
19383
                                         || ', SSV_EXT='
19384
                                         || ssv_ext
19385
                                        );
19386
            END;
19387
 
19388
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
19389
            THEN
19390
               -- Create package
19391
               seed_package_names_versions (pkgname,
19392
                                            newpkgversion,
19393
                                            userid,
19394
                                            pvid,
19395
                                            clonefrompvid
19396
                                           );
19397
            ELSE
19398
               -- Create package
19399
               seed_package_names_versions2 (pkgname,
19400
                                             newpkgversion,
19401
                                             userid,
19402
                                             pvid,
19403
                                             clonefrompvid
19404
                                            );
19405
            END IF;
19406
 
19407
            -- Update Package reason for release
19408
            UPDATE package_versions pv
19409
               SET pv.comments = 'Rippled Build.',
19410
                   pv.build_type = 'Y'
19411
             WHERE pv.pv_id = pvid;
19412
         ELSE
19413
            -- Package already exists, hence cannot be used for ripple build
19414
            RETURN return_package_already_exists;
19415
         END IF;
19416
      ELSE
19417
         /* Auto build from Pending area */
19418
 
19419
         -- Find package in pending area
19420
         BEGIN
19421
            SELECT pv.pv_id, pv.dlocked
19422
              INTO pvid, dlocked
19423
              FROM planned pl, package_versions pv, PACKAGES pkg
19424
             WHERE pl.pv_id = pv.pv_id
19425
               AND pv.pkg_id = pkg.pkg_id
19426
               AND pl.rtag_id = rtagid
19427
               AND pkg.pkg_name = pkgname
19428
               AND pv.dlocked = 'A'
19429
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19430
         EXCEPTION
19431
            WHEN NO_DATA_FOUND
19432
            THEN
19433
               pvid := 0;
19434
         END;
19435
 
19436
         IF (pvid = 0)
19437
         THEN
19438
            -- Package does not exist in pending area, hence report it
19439
            RETURN return_package_not_found;
19440
         ELSIF (dlocked != 'A')
19441
         THEN
19442
            -- Package is not approved for autobuild
19443
            RETURN return_not_approved;
19444
         END IF;
19445
      END IF;
19446
 
19447
      BEGIN
19448
         -- Import Dependencies
19449
         import_dependencies (pvid, dependenciesimportlist, userid);
19450
      END;
19451
 
19452
      BEGIN
19453
         -- Split current version in parts
19454
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
19455
 
19456
         -- Update Package Details
19457
         UPDATE package_versions pv
19458
            SET pv.pkg_version = newpkgversion,
19459
                pv.v_ext = ssv_ext,
19460
                pv.v_mm = ssv_mm,
19461
                pv.v_nmm = ssv_nmm,
19462
                pv.pkg_label = label
19463
          WHERE pv.pv_id = pvid;
19464
      EXCEPTION
19465
         WHEN DUP_VAL_ON_INDEX
19466
         THEN
19467
            -- Package already exists, hence cannot be used for ripple build
19468
            RETURN return_package_already_exists;
19469
      END;
19470
 
19471
      -- Update the is_autobuildable
19472
      UPDATE package_versions
19473
         SET is_autobuildable = 'Y'
19474
       WHERE pv_id = pvid;
19475
 
19476
      -- Now release package
19477
      pk_environment.auto_make_release (pvid,
19478
                                        rtagid,
19479
                                        userid,
19480
                                        vext,
19481
                                        ssv_ext,
19482
                                        clonefrompvid
19483
                                       );
19484
 
19485
      --Now clean the PLANNED_VERSIONS table
19486
      SELECT pkg_id
19487
        INTO pkgid
19488
        FROM PACKAGES
19489
       WHERE pkg_name = pkgname;
19490
 
19491
      DELETE FROM planned_versions
19492
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
19493
 
19494
      RETURN pvid;
19495
   END;
19496
 
19497
/*-------------------------------------------------------------------------------------------------------*/
19498
   PROCEDURE import_dependencies (
19499
      pvid                     IN   NUMBER,
19500
      dependenciesimportlist   IN   VARCHAR2,
19501
      userid                   IN   NUMBER
19502
   )
19503
   IS
19504
/*
19505
|| DependenciesImportList Format:
19506
|| "pkgA","1.0.0";"pkgB","2.0.0";
19507
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
19508
*/
19509
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
19510
         INDEX BY VARCHAR2 (4000);
19511
 
19512
      seperator         VARCHAR2 (2)           := '||';
19513
      pkgname           VARCHAR2 (4000);
19514
      pkgversion        VARCHAR2 (4000);
19515
      buildtype         VARCHAR2 (50);
19516
      pkgid             NUMBER;
19517
      vext              VARCHAR2 (4000);
19518
      dpvid             NUMBER;
19519
      slist             VARCHAR2 (4000);
19520
      cbuildtypes       tdictionary;
19521
      dependencyrow     NUMBER;
19522
      sdependency       VARCHAR2 (4000);
19523
      first_pos         VARCHAR2 (4000);
19524
      second_pos        VARCHAR2 (4000);
19525
      third_pos         VARCHAR2 (4000);
19526
      forth_pos         VARCHAR2 (4000);
19527
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
19528
 
19529
      CURSOR curbuildtype
19530
      IS
19531
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
19532
                dep.build_type
19533
           FROM package_dependencies dep, package_versions dpv
19534
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
19535
 
19536
      recbuildtype      curbuildtype%ROWTYPE;
19537
   BEGIN
19538
      slist := dependenciesimportlist;
19539
 
19540
      -- Preformat String
19541
      IF NOT slist IS NULL
19542
      THEN
19543
         slist := REPLACE (slist, ' ');                      -- Remove spaces
19544
         slist := REPLACE (slist, UTL_TCP.crlf);
19545
         -- Remove new line and carriage-return characters
19546
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
19547
      END IF;
19548
 
19549
      -- Get Current Dependencies
19550
      OPEN curbuildtype;
19551
 
19552
      FETCH curbuildtype
19553
       INTO recbuildtype;
19554
 
19555
      WHILE curbuildtype%FOUND
19556
      LOOP
19557
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
19558
 
19559
         FETCH curbuildtype
19560
          INTO recbuildtype;
19561
      END LOOP;
19562
 
19563
      CLOSE curbuildtype;
19564
 
19565
      -- Separate dependencies with ; separator
19566
      citemcollection := in_list_varchar2 (slist, ';');
19567
 
19568
      BEGIN
19569
         -- Remove old dependencies
19570
         DELETE FROM package_dependencies dep
19571
               WHERE dep.pv_id = pvid;
19572
 
19573
         -- Loop through dependencies
19574
         FOR dependencyrow IN 1 .. citemcollection.COUNT
19575
         LOOP
19576
            -- Extract pkg_name and pkg_version
19577
            sdependency := citemcollection (dependencyrow);
19578
            first_pos := INSTR (sdependency, '"', 1, 1);
19579
            second_pos := INSTR (sdependency, '"', 1, 2);
19580
            third_pos := INSTR (sdependency, '"', 1, 3);
19581
            forth_pos := INSTR (sdependency, '"', 1, 4);
19582
            pkgname :=
19583
               SUBSTR (sdependency,
19584
                       (first_pos + 1),
19585
                       (second_pos - first_pos - 1)
19586
                      );
19587
            pkgversion :=
19588
               SUBSTR (sdependency,
19589
                       (third_pos + 1),
19590
                       (forth_pos - third_pos - 1)
19591
                      );
19592
 
19593
            -- Dependency must exits to be linked against
19594
            BEGIN
19595
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
19596
                 INTO dpvid, pkgid, vext
19597
                 FROM package_versions pv, PACKAGES pkg
19598
                WHERE pv.pkg_id = pkg.pkg_id
19599
                  AND pkg.pkg_name = pkgname
19600
                  AND pv.pkg_version = pkgversion;
19601
            EXCEPTION
19602
               WHEN NO_DATA_FOUND
19603
               THEN
19604
                  raise_application_error
19605
                                  (-20000,
19606
                                      'Dependency ['
19607
                                   || pkgname
19608
                                   || ' '
19609
                                   || pkgversion
19610
                                   || '] does not exist yet and cannot be used!'
19611
                                  );
19612
            END;
19613
 
19614
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
19615
            BEGIN
19616
               buildtype := cbuildtypes (pkgid || seperator || vext);
19617
 
19618
               IF buildtype IS NULL
19619
               THEN
19620
                  -- Set build type to LinkPackageArchive by default
19621
                  buildtype := 'L';
19622
               END IF;
19623
            EXCEPTION
19624
               WHEN NO_DATA_FOUND
19625
               THEN
19626
                  buildtype := 'L';
19627
            END;
19628
 
19629
            -- Insert Dependencies
19630
            update_package_dependency (pvid,
19631
                                       pkgname,
19632
                                       pkgversion,
19633
                                       buildtype,
19634
                                       userid,
19635
 
19636
                                      );
19637
         END LOOP;
19638
      END;
19639
   END;
19640
 
19641
/*-------------------------------------------------------------------------------------------------------*/
19642
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
19643
      RETURN VARCHAR2
19644
   IS
19645
      pkgversion   VARCHAR2 (4000);
19646
   BEGIN
19647
      BEGIN
19648
         SELECT pv.pkg_version
19649
           INTO pkgversion
19650
           FROM PACKAGES pkg, release_content rc, package_versions pv
19651
          WHERE pv.pv_id = rc.pv_id
19652
            AND pkg.pkg_id = pv.pkg_id
19653
            AND pkg.pkg_name = pkgname
19654
            AND rc.rtag_id = rtagid;
19655
 
19656
         RETURN pkgversion;
19657
      END;
19658
   END;
19659
 
19660
/*-------------------------------------------------------------------------------------------------------*/
19661
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
19662
      RETURN VARCHAR2
19663
   IS
19664
      pkgversion   VARCHAR2 (4000);
19665
   BEGIN
19666
      BEGIN
19667
         SELECT pv.pkg_version
19668
           INTO pkgversion
19669
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
19670
          WHERE pv.pv_id = wip.pv_id
19671
            AND pkg.pkg_id = pv.pkg_id
19672
            AND pkg.pkg_name = pkgname
19673
            AND wip.rtag_id = rtagid;
19674
 
19675
         IF pkgversion IS NULL
19676
         THEN
19677
            SELECT pv.pkg_version
19678
              INTO pkgversion
19679
              FROM PACKAGES pkg, planned pl, package_versions pv
19680
             WHERE pv.pv_id = pl.pv_id
19681
               AND pkg.pkg_id = pv.pkg_id
19682
               AND pkg.pkg_name = pkgname
19683
               AND pl.rtag_id = rtagid;
19684
         END IF;
19685
 
19686
         RETURN pkgversion;
19687
      END;
19688
   END;
19689
 
19690
/*-------------------------------------------------------------------------------------------------------*/
19691
   PROCEDURE update_dash_board (rtagid IN NUMBER)
19692
   IS
19693
      projid       NUMBER;
19694
      projiddb     NUMBER;
19695
      total        NUMBER;
19696
      auto_total   NUMBER;
19697
      rtagiddb     NUMBER;
19698
   BEGIN
19699
      SELECT COUNT (*)
19700
        INTO total
19701
        FROM release_content rc, package_versions pv
19702
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
19703
 
19704
      SELECT COUNT (*)
19705
        INTO auto_total
19706
        FROM release_content rc, package_versions pv
19707
       WHERE pv.pv_id = rc.pv_id
19708
         AND pv.is_autobuildable = 'Y'
19709
         AND rc.rtag_id = rtagid;
19710
 
19711
      BEGIN
19712
         SELECT rtag_id
19713
           INTO rtagiddb
19714
           FROM dash_board
19715
          WHERE rtag_id = rtagid;
19716
 
19717
         SELECT proj_id
19718
           INTO projiddb
19719
           FROM dash_board
19720
          WHERE rtag_id = rtagid;
19721
      EXCEPTION
19722
         WHEN NO_DATA_FOUND
19723
         THEN
19724
            rtagiddb := '';
19725
      END;
19726
 
19727
      IF rtagiddb IS NULL
19728
      THEN
19729
         SELECT proj_id
19730
           INTO projid
19731
           FROM release_tags
19732
          WHERE rtag_id = rtagid;
19733
 
19734
         INSERT INTO dash_board
19735
                     (proj_id, rtag_id, last_build_time, automated_packages,
19736
                      total_packages
19737
                     )
19738
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
19739
                      total
19740
                     );
19741
      ELSE
19742
         UPDATE dash_board
19743
            SET last_build_time = ora_sysdatetime,
19744
                automated_packages = auto_total,
19745
                total_packages = total
19746
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
19747
      END IF;
19748
   END;
19749
 
19750
/*-------------------------------------------------------------------------------------------------------*/
19751
   FUNCTION exclude_from_build (
19752
      pvid          IN   NUMBER,
19753
      spkgversion   IN   VARCHAR2,
19754
      rtagid        IN   NUMBER,
19755
      username      IN   VARCHAR2
19756
   )
19757
      RETURN NUMBER
19758
   IS
19759
      userid              NUMBER;
19760
      outerrcode          NUMBER;
19761
      pkgid               NUMBER;
19762
 
19763
      CURSOR dnr_duplicate_cur
19764
      IS
19765
         SELECT *
19766
           FROM do_not_ripple
19767
          WHERE pv_id = pvid AND rtag_id = rtagid;
19768
 
19769
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19770
   BEGIN
19771
      outerrcode := -1;       -- Set default return error code to ERROR state
19772
 
19773
      /*--------------- Business Rules Here -------------------*/
19774
      IF (rtagid IS NULL)
19775
      THEN
19776
         RETURN outerrcode;
19777
--         raise_application_error (-20000, 'RtagId must be supplied.');
19778
      END IF;
19779
 
19780
      IF (pvid IS NULL)
19781
      THEN
19782
         RETURN outerrcode;
19783
--         raise_application_error (-20000, 'PvId must be supplied.');
19784
      END IF;
19785
 
19786
      IF (username IS NULL)
19787
      THEN
19788
         RETURN outerrcode;
19789
--         raise_application_error (-20000, 'UserName must be supplied.');
19790
      END IF;
19791
 
19792
      -- Get user_id
19793
      BEGIN
19794
         SELECT usr.user_id
19795
           INTO userid
19796
           FROM users usr
19797
          WHERE UPPER (usr.user_name) = UPPER (username)
19798
            AND usr.is_disabled IS NULL;
19799
      EXCEPTION
19800
         WHEN NO_DATA_FOUND
19801
         THEN
19802
            RETURN outerrcode;
19803
--            raise_application_error (-20000,
19804
--                                        'UserName '
19805
--                                     || username
19806
--                                     || ' is not valid or disabled.'
19807
--                                    );
19808
      END;
19809
 
19810
      OPEN dnr_duplicate_cur;
19811
 
19812
      FETCH dnr_duplicate_cur
19813
       INTO dnr_duplicate_rec;
19814
 
19815
      IF dnr_duplicate_cur%FOUND
19816
      THEN
19817
         outerrcode := 0;
19818
      END IF;
19819
 
19820
      IF dnr_duplicate_cur%NOTFOUND
19821
      THEN
19822
         /* No duplicate recordset */
19823
         unripple_package (pvid, rtagid, userid);
19824
         outerrcode := 0;                            -- Set return to SUCCESS
19825
      END IF;
19826
 
19827
      CLOSE dnr_duplicate_cur;
19828
 
19829
      SELECT pkg_id
19830
        INTO pkgid
19831
        FROM package_versions
19832
       WHERE pv_id = pvid;
19833
 
19834
      DELETE FROM planned_versions
19835
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19836
 
19837
      RETURN outerrcode;
19838
   END;
19839
 
19840
/*-------------------------------------------------------------------------------------------------------*/
55 mhunt 19841
   FUNCTION exclude_indirect_from_build (
19842
      pvid          IN   NUMBER,
19843
      spkgversion   IN   VARCHAR2,
19844
      rtagid        IN   NUMBER,
19845
      username      IN   VARCHAR2,
19846
      rootpvid      IN   NUMBER,
19847
      rootcause     IN   VARCHAR2,
19848
      rootfile      IN   VARCHAR2
19849
   )
19850
      RETURN NUMBER
19851
   IS
19852
      userid              NUMBER;
19853
      outerrcode          NUMBER;
19854
      pkgid               NUMBER;
19855
 
19856
      CURSOR dnr_duplicate_cur
19857
      IS
19858
         SELECT *
19859
           FROM do_not_ripple
19860
          WHERE pv_id = pvid AND rtag_id = rtagid;
19861
 
19862
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
19863
   BEGIN
19864
      outerrcode := -1;       -- Set default return error code to ERROR state
19865
 
19866
      /*--------------- Business Rules Here -------------------*/
19867
      IF (rtagid IS NULL)
19868
      THEN
19869
         RETURN outerrcode;
19870
--         raise_application_error (-20000, 'RtagId must be supplied.');
19871
      END IF;
19872
 
19873
      IF (pvid IS NULL)
19874
      THEN
19875
         RETURN outerrcode;
19876
--         raise_application_error (-20000, 'PvId must be supplied.');
19877
      END IF;
19878
 
19879
      IF (username IS NULL)
19880
      THEN
19881
         RETURN outerrcode;
19882
--         raise_application_error (-20000, 'UserName must be supplied.');
19883
      END IF;
19884
 
19885
      -- Get user_id
19886
      BEGIN
19887
         SELECT usr.user_id
19888
           INTO userid
19889
           FROM users usr
19890
          WHERE UPPER (usr.user_name) = UPPER (username)
19891
            AND usr.is_disabled IS NULL;
19892
      EXCEPTION
19893
         WHEN NO_DATA_FOUND
19894
         THEN
19895
            RETURN outerrcode;
19896
--            raise_application_error (-20000,
19897
--                                        'UserName '
19898
--                                     || username
19899
--                                     || ' is not valid or disabled.'
19900
--                                    );
19901
      END;
19902
 
19903
     /* No duplicate recordset */
19904
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
19905
     outerrcode := 0;                            -- Set return to SUCCESS
19906
 
19907
      SELECT pkg_id
19908
        INTO pkgid
19909
        FROM package_versions
19910
       WHERE pv_id = pvid;
19911
 
19912
      DELETE FROM planned_versions
19913
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
19914
 
19915
      RETURN outerrcode;
19916
   END;
19917
/*-------------------------------------------------------------------------------------------------------*/
51 mhunt 19918
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
19919
   IS
19920
   BEGIN
19921
      INSERT INTO abt_action_log
19922
                  (rcon_id, action_datetime, action
19923
                  )
19924
           VALUES (rconid, ora_sysdatetime, action
19925
                  );
19926
   END;
19927
 
19928
/*-------------------------------------------------------------------------------------------------------*/
19929
   FUNCTION insert_package_metrics (
19930
      rtagid                   IN   NUMBER,
19931
      pkgname                  IN   VARCHAR2,
19932
      vext                     IN   VARCHAR2,
19933
      metricstring             IN   VARCHAR2
19934
   )
19935
      RETURN NUMBER
19936
   IS
19937
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
57 mhunt 19938
      lv_pvid                  NUMBER                 := 0;
51 mhunt 19939
      rownumber                NUMBER;
19940
      rowcontent               VARCHAR2(4000);
19941
      metricname               VARCHAR2(1000);
19942
      metricvalue              VARCHAR2(4000);
19943
      return_insert_error      NUMBER                 := -1;
19944
      return_insert_success    NUMBER                 := 0;
19945
 
19946
      /* Metrics */
57 mhunt 19947
      lv_branches                 NUMBER;
19948
      lv_branchlist               VARCHAR2(4000);
19949
      lv_codefiles                NUMBER;
19950
      lv_ignoredfiles             NUMBER;
19951
      lv_directories              NUMBER;
19952
      lv_directorydepth           NUMBER;
19953
      lv_totalfiles               NUMBER;
19954
      lv_makefiles                NUMBER;
19955
      lv_blanklines               NUMBER;
19956
      lv_codelines                NUMBER;
19957
      lv_commentlines             NUMBER;
51 mhunt 19958
 
19959
   BEGIN
19960
      /*--------------- Business Rules Here -------------------*/
19961
      IF (rtagid IS NULL)
19962
      THEN
19963
         RETURN return_insert_error;
19964
      END IF;
19965
 
19966
      IF (pkgname IS NULL)
19967
      THEN
19968
         RETURN return_insert_error;
19969
      END IF;
19970
 
19971
      IF (metricstring IS NULL)
19972
      THEN
19973
         RETURN return_insert_error;
19974
      END IF;
19975
 
19976
      BEGIN
19977
         SELECT pv.pv_id
57 mhunt 19978
           INTO lv_pvid
51 mhunt 19979
           FROM package_versions pv, packages pkg, release_content rc
19980
          WHERE pv.pkg_id = pkg.pkg_id
19981
            AND rc.rtag_id = rtagid
19982
            AND pv.pv_id = rc.pv_id
19983
            AND pkg.pkg_name = pkgname
19984
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
19985
      EXCEPTION
19986
           WHEN NO_DATA_FOUND
19987
           THEN
57 mhunt 19988
                lv_pvid := 0;
51 mhunt 19989
      END;
19990
 
19991
      citemcollection := in_list_varchar2 (metricstring, ';');
19992
 
19993
      FOR rownumber IN 1 .. citemcollection.COUNT
19994
      LOOP
19995
         rowcontent := citemcollection(rownumber);
19996
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
19997
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
19998
 
57 mhunt 19999
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
20000
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
20001
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
20002
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
20003
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
20004
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
20005
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
20006
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
20007
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
20008
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
20009
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
51 mhunt 20010
         END IF;
20011
      END LOOP;
20012
 
57 mhunt 20013
      IF (lv_pvid > 0)
51 mhunt 20014
      THEN
20015
         -- Delete any existing entries for this package version to makes sure our data is untainted
20016
         DELETE FROM package_metrics pm
57 mhunt 20017
         WHERE pm.pv_id = lv_pvid;
20018
 
51 mhunt 20019
         -- Insert the new data into the metrics table
20020
         INSERT INTO package_metrics
20021
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
20022
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
20023
                     )
57 mhunt 20024
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
20025
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
51 mhunt 20026
                     );
57 mhunt 20027
 
51 mhunt 20028
         -- Now update the Release_Metrics Table
20029
         update_release_metrics(rtagid);
57 mhunt 20030
 
51 mhunt 20031
         RETURN return_insert_success;
20032
      ELSE
20033
         RETURN return_insert_error;
20034
      END IF;
20035
   END;
57 mhunt 20036
 
51 mhunt 20037
/*-------------------------------------------------------------------------------------------------------*/
20038
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
20039
   IS
57 mhunt 20040
      lv_totalpackages       NUMBER;
20041
      lv_autobuilt           NUMBER;
20042
      lv_linesofcode         NUMBER;
20043
      lv_unittested          NUMBER;
20044
      lv_autotested          NUMBER;
20045
      lv_numOfbranches       NUMBER;
20046
      lv_lastbuildtime       DATE;
51 mhunt 20047
   BEGIN
20048
      IF (rtagid > 0)
20049
      THEN
20050
         -- Get the total number of packages in this release and the number of
20051
         -- those that are autobuilt
20052
         SELECT COUNT (DISTINCT rc.pv_id),
20053
                COUNT (DISTINCT autobuilt_qry.pv_id)
57 mhunt 20054
           INTO lv_totalpackages, lv_autobuilt
51 mhunt 20055
           FROM release_content rc,
20056
                package_versions pv,
20057
                (
20058
                 SELECT rc.pv_id
20059
                   FROM release_content rc,
20060
                        package_versions pv
20061
                  WHERE pv.is_autobuildable = 'Y'
20062
                    AND pv.pv_id = rc.pv_id
20063
                    AND rc.rtag_id = rtagid
20064
                ) autobuilt_qry
20065
          WHERE pv.pv_id = rc.pv_id
20066
            AND rc.rtag_id = rtagid
20067
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
57 mhunt 20068
 
51 mhunt 20069
         -- Get the build time of the last package built in this release and the
20070
         -- total number of lines of code
20071
         SELECT MAX(pm.created_stamp),
20072
                SUM(pm.code_lines)
57 mhunt 20073
           INTO lv_lastbuildtime, lv_linesofcode
51 mhunt 20074
           FROM package_metrics pm, release_content rc
20075
          WHERE pm.pv_id = rc.pv_id
20076
            AND rc.rtag_id = rtagid;
57 mhunt 20077
 
51 mhunt 20078
         -- Get the number of packages with unit tests in this release and the
20079
         -- number of those that are autotested
57 mhunt 20080
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
51 mhunt 20081
           FROM unit_tests ut,
57 mhunt 20082
                release_content rc
51 mhunt 20083
          WHERE ut.pv_id = rc.pv_id
20084
            AND rc.rtag_id = rtagid
57 mhunt 20085
        AND ut.test_types_fk != 1;
20086
 
20087
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
20088
          FROM unit_tests ut,
20089
               release_content rc
20090
         WHERE ut.pv_id = rc.pv_id
20091
           AND rc.rtag_id = rtagid
20092
           AND ut.test_types_fk = 7;
20093
 
20094
 
51 mhunt 20095
         -- Count the number of unique branches in the packages in this release.
57 mhunt 20096
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
51 mhunt 20097
--           FROM (
20098
--                SELECT pv_id,
20099
--                       regexp_substr(str, '[^,]+', 1, level) branch,
20100
--                       level lv,
20101
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
20102
--                  FROM (
20103
--                       SELECT pm.pv_id,
20104
--                              ','||pm.branch_list str
20105
--                         FROM package_metrics pm,
20106
--                              release_content rc
20107
--                        WHERE pm.pv_id = rc.pv_id
20108
--                          AND rc.rtag_id = rtagid
20109
--                       )
20110
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
20111
--                )
20112
--          WHERE lv != lg;
57 mhunt 20113
 
51 mhunt 20114
         UPDATE release_metrics rm
57 mhunt 20115
            SET rm.total_packages = lv_totalpackages,
20116
                rm.autobuilt = lv_autobuilt,
20117
                rm.lines_of_code = lv_linesofcode,
20118
                rm.unit_tested = lv_unittested,
20119
                rm.autotested = lv_autotested,
20120
--                rm.branches = lv_numOfbranches,
20121
                rm.last_build_time = lv_lastbuildtime
51 mhunt 20122
          WHERE rtag_id = rtagid;
57 mhunt 20123
 
51 mhunt 20124
         IF (SQL%ROWCOUNT = 0)
20125
         THEN
20126
            INSERT INTO release_metrics
20127
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20128
                         autotested, last_build_time
20129
                        )
57 mhunt 20130
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
20131
                         lv_autotested, lv_lastbuildtime
51 mhunt 20132
                        );
20133
         END IF;
20134
--         IF (SQL%ROWCOUNT = 0)
20135
--         THEN
20136
--            INSERT INTO release_metrics
20137
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
20138
--                         autotested, branches, last_build_time
20139
--                        )
57 mhunt 20140
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
20141
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
51 mhunt 20142
--                        );
20143
--         END IF;
20144
--      ELSE
20145
--         raise_application_error (-20000, 'RtagId must be supplied.');
20146
      END IF;
20147
   END;
20148
/*-------------------------------------------------------------------------------------------------------*/
20149
END pk_rmapi;
20150
/
20151
 
20152
CREATE OR REPLACE PACKAGE BODY pk_environment_test
20153
IS
20154
/*
20155
------------------------------
20156
||  Last Modified:  Rupesh Solanki
20157
||  Modified Date:  29/Jan/2007
20158
||  Body Version:   1.1
20159
------------------------------
20160
*/
20161
 
20162
   /*-------------------------------------------------------------------------------------------------------*/
20163
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
20164
      RETURN NUMBER
20165
   IS
20166
   BEGIN
20167
       /*
20168
      || N - unlocked
20169
      || Y - release and locked
20170
      || P - penging approval
20171
      || A - approved package ready for auto-build
20172
      */
20173
      IF cdlock = 'N' OR cdlock = 'R'
20174
      THEN
20175
         -- WORK IN PROGRESS --
20176
         RETURN 0;
20177
      ELSIF cdlock = 'P' OR cdlock = 'A'
20178
      THEN
20179
         -- PENDING --
20180
         RETURN 1;
20181
      ELSIF cdlock = 'Y'
20182
      THEN
20183
         -- RELEASED --
20184
         RETURN 2;
20185
      ELSE
20186
         -- NOT FOUND --
20187
         raise_application_error
20188
                         (-20000,
20189
                             'Cannot decide where to place package. [cDlock='
20190
                          || cdlock
20191
                          || ']'
20192
                         );
20193
      END IF;
20194
   END;
20195
 
20196
/*-------------------------------------------------------------------------------------------------------*/
20197
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
20198
      RETURN NUMBER
20199
   IS
20200
      envtab    NUMBER            := -1;
20201
 
20202
      CURSOR curarea
20203
      IS
20204
         SELECT 2 AS envtab
20205
           FROM release_content rc
20206
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20207
         UNION
20208
         SELECT 0 AS envtab
20209
           FROM work_in_progress wip
20210
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20211
         UNION
20212
         SELECT 1 AS envtab
20213
           FROM planned pl
20214
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20215
 
20216
      recarea   curarea%ROWTYPE;
20217
   BEGIN
20218
      OPEN curarea;
20219
 
20220
      FETCH curarea
20221
       INTO recarea;
20222
 
20223
      IF curarea%FOUND
20224
      THEN
20225
         envtab := recarea.envtab;
20226
      END IF;
20227
 
20228
      CLOSE curarea;
20229
 
20230
      RETURN envtab;
20231
   END;
20232
 
20233
/*-------------------------------------------------------------------------------------------------------*/
20234
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
20235
      RETURN NUMBER
20236
   IS
20237
      ispatch   package_versions.dlocked%TYPE;
20238
      viewid    NUMBER                          := -1;
20239
 
20240
      CURSOR curview
20241
      IS
20242
         SELECT rc.base_view_id AS view_id
20243
           FROM release_content rc
20244
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
20245
         UNION
20246
         SELECT wip.view_id AS view_id
20247
           FROM work_in_progress wip
20248
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
20249
         UNION
20250
         SELECT pl.view_id AS view_id
20251
           FROM planned pl
20252
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
20253
 
20254
      recview   curview%ROWTYPE;
20255
   BEGIN
20256
      -- Get dlock state
20257
      SELECT pv.is_patch
20258
        INTO ispatch
20259
        FROM package_versions pv
20260
       WHERE pv.pv_id = pvid;
20261
 
20262
      -- Decide which view id should package go under.
20263
      IF (ispatch != 'Y') OR (ispatch IS NULL)
20264
      THEN
20265
         -- Get VIEW ID of Package
20266
         OPEN curview;
20267
 
20268
         FETCH curview
20269
          INTO recview;
20270
 
20271
         IF curview%FOUND
20272
         THEN
20273
            viewid := recview.view_id;
20274
         ELSE
20275
            raise_application_error
20276
               (-20000,
20277
                   'Cannot find view_id to proceed. [PvId='
20278
                || pvid
20279
                || ']. The current version may not exist in the release anymore.'
20280
               );
20281
         END IF;
20282
 
20283
         CLOSE curview;
20284
      ELSE
20285
         -- Get VIEW ID of Patch (view id of parent package)
20286
         SELECT rc.base_view_id
20287
           INTO viewid
20288
           FROM release_content rc, package_patches ppv
20289
          WHERE rc.rtag_id = rtagid
20290
            AND rc.pv_id = ppv.pv_id
20291
            AND ppv.patch_id = pvid;
20292
      END IF;
20293
 
20294
      RETURN viewid;
20295
   END;
20296
 
20297
/*-------------------------------------------------------------------------------------------------------*/
20298
   PROCEDURE add_package (
20299
      pvid     IN   NUMBER,
20300
      viewid   IN   NUMBER,
20301
      rtagid   IN   NUMBER,
20302
      userid   IN   NUMBER
20303
   )
20304
   IS
20305
      dlocked   package_versions.dlocked%TYPE;
20306
      envtab    NUMBER;
20307
   BEGIN
20308
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
20309
      THEN
20310
         -- Get dlock state
20311
         SELECT pv.dlocked
20312
           INTO dlocked
20313
           FROM package_versions pv
20314
          WHERE pv.pv_id = pvid;
20315
 
20316
         -- Get which area should go under
20317
         envtab := select_environment_area (dlocked);
20318
         -- Log
20319
         log_action (pvid, 'action', userid, 'Start of Package Add...');
20320
 
20321
         -- Remove Package
20322
         IF envtab = 0
20323
         THEN
20324
            -- WORK IN PROGRESS --
20325
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
20326
         ELSIF envtab = 1
20327
         THEN
20328
            -- PENDING --
20329
            pk_planned.add_package (pvid, viewid, rtagid, userid);
20330
         ELSIF envtab = 2
20331
         THEN
20332
            -- RELEASED --
20333
            -- NOTE: this package will be replaced with matching package
20334
            pk_release.add_package (pvid, viewid, rtagid, userid);
20335
            -- Now do post Release Actions
20336
            pk_release.run_post_actions (pvid, rtagid);
20337
         END IF;
20338
 
20339
         -- Log
20340
         log_action (pvid, 'action', userid, 'End of Package Add...');
20341
      END IF;
20342
   END;
20343
 
20344
/*-------------------------------------------------------------------------------------------------------*/
20345
   PROCEDURE add_package_bulk (
20346
      pvidlist   IN   VARCHAR2,
20347
      viewid     IN   NUMBER,
20348
      rtagid     IN   NUMBER,
20349
      userid     IN   NUMBER
20350
   )
20351
   IS
20352
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
20353
                                                                          ();
20354
      dlocked        package_versions.dlocked%TYPE;
20355
      pvid           NUMBER;
20356
      envtab         NUMBER;
20357
   BEGIN
20358
      /*--------------- Business Rules Here -------------------*/
20359
      IF (pvidlist IS NULL)
20360
      THEN
20361
         raise_application_error (-20000,
20362
                                  'Please select at least one package.'
20363
                                 );
20364
      END IF;
20365
 
20366
/*-------------------------------------------------------*/
20367
      nidcollector := in_list_number (pvidlist);
20368
 
20369
      FOR i IN 1 .. nidcollector.COUNT
20370
      LOOP
20371
         pvid := nidcollector (i);
20372
         add_package (pvid, viewid, rtagid, userid);
20373
      END LOOP;
20374
   END;
20375
 
20376
/*-------------------------------------------------------------------------------------------------------*/
20377
   PROCEDURE replace_package (
20378
      newpvid   IN   NUMBER,
20379
      oldpvid   IN   NUMBER,
20380
      rtagid    IN   NUMBER,
20381
      userid    IN   NUMBER
20382
   )
20383
   IS
20384
      dlocked        package_versions.dlocked%TYPE;
20385
      viewid         NUMBER;
20386
      envtab         NUMBER;
20387
      ROWCOUNT       NUMBER;
20388
      creleasemode   CHAR (1);
20389
      npkgid         NUMBER;
20390
   BEGIN
20391
      /*--------------- Business Rules Here -------------------*/
20392
      -- Check if oldPvId exists. It could have been removed
20393
      SELECT COUNT (pv.pv_id)
20394
        INTO ROWCOUNT
20395
        FROM package_versions pv
20396
       WHERE pv.pv_id = oldpvid;
20397
 
20398
/*-------------------------------------------------------*/
20399
 
20400
      /* This procedure is usually used by "History" option in Release Manager */
20401
 
20402
      -- Get dlock state
20403
      SELECT pv.dlocked
20404
        INTO dlocked
20405
        FROM package_versions pv
20406
       WHERE pv.pv_id = newpvid;
20407
 
20408
      -- Get VIEW_ID ---
20409
      IF ROWCOUNT = 1
20410
      THEN
20411
         viewid := get_view_location (oldpvid, rtagid);
20412
      ELSE
20413
         -- Set ViewID to default
20414
         viewid := 7;
20415
      END IF;
20416
 
20417
      -- Get which area should go under
20418
      envtab := select_environment_area (dlocked);
20419
      -- Log
20420
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
20421
 
20422
      -- Replace package
20423
      IF envtab = 0
20424
      THEN
20425
         -- WORK IN PROGRESS --
20426
 
20427
         -- Delete old package
20428
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
20429
         -- Add new package
20430
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
20431
      ELSIF envtab = 1
20432
      THEN
20433
         -- PENDING --
20434
 
20435
         -- Delete old package
20436
         pk_planned.remove_package (oldpvid, rtagid, userid);
20437
         -- Add new package
20438
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
20439
      ELSIF envtab = 2
20440
      THEN
20441
         -- RELEASED --
20442
 
20443
         -- Delete old package
20444
         pk_release.remove_package (oldpvid, rtagid, userid);
20445
         -- Add new package
20446
         pk_release.add_package (newpvid, viewid, rtagid, userid);
20447
         -- Now do post Release Actions
20448
         pk_release.run_post_actions (newpvid, rtagid);
20449
      END IF;
20450
 
20451
      -- Log
20452
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
20453
   END;
20454
 
20455
/*-------------------------------------------------------------------------------------------------------*/
20456
   FUNCTION remove_package (
20457
      pvid          IN   NUMBER,
20458
      rtagid        IN   NUMBER,
20459
      userid        IN   NUMBER,
20460
      forceremove   IN   CHAR
20461
   )
20462
      RETURN NUMBER
20463
   IS
20464
      envtab        NUMBER;
20465
      isused        BOOLEAN;
20466
      recordcount   NUMBER;
20467
   BEGIN
20468
/*--------------- Business Rules Here -------------------*/
20469
/*-------------------------------------------------------*/
20470
 
20471
      -- Find location of package
20472
      envtab := get_package_area (pvid, rtagid);
20473
 
20474
      -- Remove Package
20475
      IF envtab = 0
20476
      THEN
20477
         -- WORK IN PROGRESS --
20478
         -- Delete package
20479
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
20480
         RETURN 0;
20481
      ELSIF envtab = 1
20482
      THEN
20483
         -- PENDING --
20484
         -- Delete package
20485
         pk_planned.remove_package (pvid, rtagid, userid);
20486
         RETURN 0;
20487
      ELSIF envtab = 2
20488
      THEN
20489
         -- RELEASED --
20490
 
20491
         -- Check if is used by other packages
20492
         isused := TRUE;
20493
 
20494
         IF forceremove = 'N'
20495
         THEN
20496
            SELECT COUNT (pv.pv_id)
20497
              INTO recordcount
20498
              FROM (SELECT dpv.pkg_id, dpv.v_ext
20499
                      FROM release_content rc,
20500
                           package_dependencies dep,
20501
                           package_versions dpv
20502
                     WHERE rc.rtag_id = rtagid
20503
                       AND rc.pv_id = dep.pv_id
20504
                       AND dep.dpv_id = dpv.pv_id) rdep,
20505
                   package_versions pv
20506
             WHERE pv.pkg_id = rdep.pkg_id
20507
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
20508
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
20509
               AND pv.pv_id = pvid;
20510
 
20511
            IF recordcount > 0
20512
            THEN
20513
               RETURN 1;                    -- Return 1 as package being used
20514
            ELSE
20515
               isused := FALSE;
20516
            END IF;
20517
         END IF;
20518
 
20519
         IF forceremove = 'Y' OR NOT isused
20520
         THEN
20521
            -- Delete old package
20522
            pk_release.remove_package (pvid, rtagid, userid);
20523
            -- Now do post Release Actions
20524
            pk_release.run_post_actions (pvid, rtagid);
20525
            RETURN 0;
20526
         END IF;
20527
      END IF;
20528
   END;
20529
 
20530
/*-------------------------------------------------------------------------------------------------------*/
20531
   PROCEDURE get_environment_items (
20532
      viewtype           IN       NUMBER,
20533
      userid             IN       NUMBER,
20534
      rtagid             IN       NUMBER,
20535
      sviewidshowlist    IN       VARCHAR2,
20536
      ntruerecordcount   OUT      NUMBER,
20537
      recordset          OUT      typecur
20538
   )
20539
   IS
20540
   BEGIN
20541
      -- Get true record count because views can give false count
20542
      SELECT COUNT (pl.pv_id)
20543
        INTO ntruerecordcount
20544
        FROM environment_view pl
20545
       WHERE pl.rtag_id = rtagid;
20546
 
20547
      IF viewtype = 1
20548
      THEN
20549
         /*--- GUEST VIEW ---*/
20550
         OPEN recordset FOR
20551
            SELECT   *
20552
                FROM (
20553
                      /* Base Views collapsed */
20554
                      SELECT DISTINCT vi.view_id, vi.view_name,
20555
                                      TO_NUMBER (NULL) AS pkg_state,
20556
                                      TO_NUMBER (NULL) AS deprecated_state,
20557
                                      TO_NUMBER (NULL) AS pv_id,
20558
                                      NULL AS pkg_name, NULL AS pkg_version,
20559
                                      NULL AS dlocked, NULL AS pv_description
20560
                                 FROM environment_view rel, views vi
20561
                                WHERE rel.view_id = vi.view_id
20562
                                  AND rtag_id = rtagid
20563
                                  AND rel.view_id NOT IN (
20564
                                         SELECT *
20565
                                           FROM THE
20566
                                                   (SELECT CAST
20567
                                                              (in_list_number
20568
                                                                  (sviewidshowlist
20569
                                                                  ) AS relmgr_number_tab_t
20570
                                                              )
20571
                                                      FROM DUAL
20572
                                                   ))
20573
                      UNION
20574
                      /* Base Views expanded */
20575
                      SELECT vi.view_id, vi.view_name,
20576
                             DECODE (rel.pkg_state,
20577
                                     NULL, 0,
20578
                                     rel.pkg_state
20579
                                    ) AS pkg_state,
20580
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20581
                             pv.pkg_version, pv.dlocked, pv.pv_description
20582
                        FROM environment_view rel,
20583
                             PACKAGES pkg,
20584
                             package_versions pv,
20585
                             views vi
20586
                       WHERE pv.pkg_id = pkg.pkg_id
20587
                         AND rel.pv_id = pv.pv_id
20588
                         AND rel.view_id = vi.view_id
20589
                         AND rel.view_id IN (
20590
                                SELECT *
20591
                                  FROM THE
20592
                                          (SELECT CAST
20593
                                                     (in_list_number
20594
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20595
                                                     )
20596
                                             FROM DUAL
20597
                                          ))
20598
                         AND rtag_id = rtagid) ord
20599
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20600
      ELSIF viewtype = 2
20601
      THEN
20602
         /*--- PERSONAL VIEW ---*/
20603
         OPEN recordset FOR
20604
            SELECT   *
20605
                FROM (
20606
                      /* Base Views collapsed */
20607
                      SELECT DISTINCT vi.view_id, vi.view_name,
20608
                                      TO_NUMBER (NULL) AS pkg_state,
20609
                                      TO_NUMBER (NULL) AS deprecated_state,
20610
                                      TO_NUMBER (NULL) AS pv_id,
20611
                                      NULL AS pkg_name, NULL AS pkg_version,
20612
                                      NULL AS dlocked, NULL AS pv_description
20613
                                 FROM environment_view rel,
20614
                                      view_settings vs,
20615
                                      views vi
20616
                                WHERE rel.view_id = vi.view_id
20617
                                  AND vs.view_id = rel.view_id
20618
                                  AND vs.user_id = userid
20619
                                  AND rtag_id = rtagid
20620
                                  AND rel.view_id NOT IN (
20621
                                         SELECT *
20622
                                           FROM THE
20623
                                                   (SELECT CAST
20624
                                                              (in_list_number
20625
                                                                  (sviewidshowlist
20626
                                                                  ) AS relmgr_number_tab_t
20627
                                                              )
20628
                                                      FROM DUAL
20629
                                                   ))
20630
                      UNION
20631
                      /* Base Views expanded */
20632
                      SELECT vi.view_id, vi.view_name,
20633
                             DECODE (rel.pkg_state,
20634
                                     NULL, 0,
20635
                                     rel.pkg_state
20636
                                    ) AS pkg_state,
20637
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20638
                             pv.pkg_version, pv.dlocked, pv.pv_description
20639
                        FROM environment_view rel,
20640
                             PACKAGES pkg,
20641
                             package_versions pv,
20642
                             views vi,
20643
                             view_settings vs
20644
                       WHERE pv.pkg_id = pkg.pkg_id
20645
                         AND rel.pv_id = pv.pv_id
20646
                         AND rel.view_id = vi.view_id
20647
                         AND vs.view_id = vi.view_id
20648
                         AND vs.user_id = userid
20649
                         AND rel.view_id IN (
20650
                                SELECT *
20651
                                  FROM THE
20652
                                          (SELECT CAST
20653
                                                     (in_list_number
20654
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20655
                                                     )
20656
                                             FROM DUAL
20657
                                          ))
20658
                         AND rtag_id = rtagid
20659
                      UNION
20660
                      /* Private Views collapsed */
20661
                      SELECT vi.view_id, vi.view_name,
20662
                             TO_NUMBER (NULL) AS pkg_state,
20663
                             TO_NUMBER (NULL) AS deprecated_state,
20664
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20665
                             NULL AS pkg_version, NULL AS dlocked,
20666
                             NULL AS pv_description
20667
                        FROM view_settings vs,
20668
                             view_def vd,
20669
                             views vi,
20670
                             environment_view rel,
20671
                             package_versions pv
20672
                       WHERE vs.view_id = vi.view_id
20673
                         AND rel.pv_id = pv.pv_id
20674
                         AND vd.pkg_id = pv.pkg_id
20675
                         AND vd.view_id = vi.view_id
20676
                         AND vi.base_view = 'N'
20677
                         AND rel.rtag_id = rtagid
20678
                         AND vs.user_id = userid
20679
                         AND vi.view_id NOT IN (
20680
                                SELECT *
20681
                                  FROM THE
20682
                                          (SELECT CAST
20683
                                                     (in_list_number
20684
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20685
                                                     )
20686
                                             FROM DUAL
20687
                                          ))
20688
                      UNION
20689
                      /* Private Views expanded */
20690
                      SELECT vi.view_id, vi.view_name,
20691
                             DECODE (rel.pkg_state,
20692
                                     NULL, 0,
20693
                                     rel.pkg_state
20694
                                    ) AS pkg_state,
20695
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20696
                             pv.pkg_version, pv.dlocked, pv.pv_description
20697
                        FROM users usr,
20698
                             view_settings vs,
20699
                             view_def vd,
20700
                             views vi,
20701
                             environment_view rel,
20702
                             PACKAGES pkg,
20703
                             package_versions pv
20704
                       WHERE vs.user_id = usr.user_id
20705
                         AND vs.view_id = vi.view_id
20706
                         AND vd.view_id = vi.view_id
20707
                         AND pv.pkg_id = pkg.pkg_id
20708
                         AND rel.pv_id = pv.pv_id
20709
                         AND rel.rtag_id = rtagid
20710
                         AND vd.pkg_id = pkg.pkg_id
20711
                         AND vi.base_view = 'N'
20712
                         AND vi.view_id IN (
20713
                                SELECT *
20714
                                  FROM THE
20715
                                          (SELECT CAST
20716
                                                     (in_list_number
20717
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20718
                                                     )
20719
                                             FROM DUAL
20720
                                          ))
20721
                         AND usr.user_id = userid) ord
20722
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20723
      END IF;
20724
   END;
20725
 
20726
/*-------------------------------------------------------------------------------------------------------*/
20727
   PROCEDURE get_released_items (
20728
      viewtype           IN       NUMBER,
20729
      userid             IN       NUMBER,
20730
      rtagid             IN       NUMBER,
20731
      sviewidshowlist    IN       VARCHAR2,
20732
      ntruerecordcount   OUT      NUMBER,
20733
      recordset          OUT      typecur
20734
   )
20735
   IS
20736
   BEGIN
20737
      -- Get true record count because views can give false count
20738
      SELECT COUNT (rc.pv_id)
20739
        INTO ntruerecordcount
20740
        FROM release_content rc
20741
       WHERE rc.rtag_id = rtagid;
20742
 
20743
      IF viewtype = 1
20744
      THEN
20745
         /*--- GUEST VIEW ---*/
20746
         OPEN recordset FOR
20747
            SELECT   *
20748
                FROM (
20749
                      /* Base Views collapsed */
20750
                      SELECT DISTINCT vi.view_id, vi.view_name,
20751
                                      TO_NUMBER (NULL) AS pkg_state,
20752
                                      TO_NUMBER (NULL) AS deprecated_state,
20753
                                      TO_NUMBER (NULL) AS pv_id,
20754
                                      NULL AS pkg_name, NULL AS pkg_version,
20755
                                      NULL AS dlocked, NULL AS pv_description
20756
                                 FROM release_content rel, views vi
20757
                                WHERE rel.base_view_id = vi.view_id
20758
                                  AND rtag_id = rtagid
20759
                                  AND rel.base_view_id NOT IN (
20760
                                         SELECT *
20761
                                           FROM THE
20762
                                                   (SELECT CAST
20763
                                                              (in_list_number
20764
                                                                  (sviewidshowlist
20765
                                                                  ) AS relmgr_number_tab_t
20766
                                                              )
20767
                                                      FROM DUAL
20768
                                                   ))
20769
                      UNION
20770
                      /* Base Views expanded */
20771
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20772
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20773
                             pv.pkg_version, pv.dlocked, pv.pv_description
20774
                        FROM release_content rel,
20775
                             PACKAGES pkg,
20776
                             package_versions pv,
20777
                             views vi
20778
                       WHERE pv.pkg_id = pkg.pkg_id
20779
                         AND rel.pv_id = pv.pv_id
20780
                         AND rel.base_view_id = vi.view_id
20781
                         AND rel.base_view_id IN (
20782
                                SELECT *
20783
                                  FROM THE
20784
                                          (SELECT CAST
20785
                                                     (in_list_number
20786
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20787
                                                     )
20788
                                             FROM DUAL
20789
                                          ))
20790
                         AND rtag_id = rtagid) ord
20791
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20792
      ELSIF viewtype = 2
20793
      THEN
20794
         /*--- PERSONAL VIEW ---*/
20795
         OPEN recordset FOR
20796
            SELECT   *
20797
                FROM (
20798
                      /* Base Views collapsed */
20799
                      SELECT DISTINCT vi.view_id, vi.view_name,
20800
                                      TO_NUMBER (NULL) AS pkg_state,
20801
                                      TO_NUMBER (NULL) AS deprecated_state,
20802
                                      TO_NUMBER (NULL) AS pv_id,
20803
                                      NULL AS pkg_name, NULL AS pkg_version,
20804
                                      NULL AS dlocked, NULL AS pv_description
20805
                                 FROM release_content rel,
20806
                                      view_settings vs,
20807
                                      views vi
20808
                                WHERE rel.base_view_id = vi.view_id
20809
                                  AND vs.view_id = rel.base_view_id
20810
                                  AND vs.user_id = userid
20811
                                  AND rtag_id = rtagid
20812
                                  AND rel.base_view_id NOT IN (
20813
                                         SELECT *
20814
                                           FROM THE
20815
                                                   (SELECT CAST
20816
                                                              (in_list_number
20817
                                                                  (sviewidshowlist
20818
                                                                  ) AS relmgr_number_tab_t
20819
                                                              )
20820
                                                      FROM DUAL
20821
                                                   ))
20822
                      UNION
20823
                      /* Base Views expanded */
20824
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20825
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20826
                             pv.pkg_version, pv.dlocked, pv.pv_description
20827
                        FROM release_content rel,
20828
                             PACKAGES pkg,
20829
                             package_versions pv,
20830
                             views vi,
20831
                             view_settings vs
20832
                       WHERE pv.pkg_id = pkg.pkg_id
20833
                         AND rel.pv_id = pv.pv_id
20834
                         AND rel.base_view_id = vi.view_id
20835
                         AND vs.view_id = vi.view_id
20836
                         AND vs.user_id = userid
20837
                         AND rel.base_view_id IN (
20838
                                SELECT *
20839
                                  FROM THE
20840
                                          (SELECT CAST
20841
                                                     (in_list_number
20842
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20843
                                                     )
20844
                                             FROM DUAL
20845
                                          ))
20846
                         AND rtag_id = rtagid
20847
                      UNION
20848
                      /* Private Views collapsed */
20849
                      SELECT vi.view_id, vi.view_name,
20850
                             TO_NUMBER (NULL) AS pkg_state,
20851
                             TO_NUMBER (NULL) AS deprecated_state,
20852
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
20853
                             NULL AS pkg_version, NULL AS dlocked,
20854
                             NULL AS pv_description
20855
                        FROM view_settings vs,
20856
                             view_def vd,
20857
                             views vi,
20858
                             release_content rel,
20859
                             package_versions pv
20860
                       WHERE vs.view_id = vi.view_id
20861
                         AND rel.pv_id = pv.pv_id
20862
                         AND vd.pkg_id = pv.pkg_id
20863
                         AND vd.view_id = vi.view_id
20864
                         AND vi.base_view = 'N'
20865
                         AND rel.rtag_id = rtagid
20866
                         AND vs.user_id = userid
20867
                         AND vi.view_id NOT IN (
20868
                                SELECT *
20869
                                  FROM THE
20870
                                          (SELECT CAST
20871
                                                     (in_list_number
20872
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20873
                                                     )
20874
                                             FROM DUAL
20875
                                          ))
20876
                      UNION
20877
                      /* Private Views expanded */
20878
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
20879
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
20880
                             pv.pkg_version, pv.dlocked, pv.pv_description
20881
                        FROM users usr,
20882
                             view_settings vs,
20883
                             view_def vd,
20884
                             views vi,
20885
                             release_content rel,
20886
                             PACKAGES pkg,
20887
                             package_versions pv
20888
                       WHERE vs.user_id = usr.user_id
20889
                         AND vs.view_id = vi.view_id
20890
                         AND vd.view_id = vi.view_id
20891
                         AND pv.pkg_id = pkg.pkg_id
20892
                         AND rel.pv_id = pv.pv_id
20893
                         AND rel.rtag_id = rtagid
20894
                         AND vd.pkg_id = pkg.pkg_id
20895
                         AND vi.base_view = 'N'
20896
                         AND vi.view_id IN (
20897
                                SELECT *
20898
                                  FROM THE
20899
                                          (SELECT CAST
20900
                                                     (in_list_number
20901
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20902
                                                     )
20903
                                             FROM DUAL
20904
                                          ))
20905
                         AND usr.user_id = userid) ord
20906
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20907
      END IF;
20908
   END;
20909
 
20910
/*-------------------------------------------------------------------------------------------------------*/
20911
   PROCEDURE get_work_in_progress_items (
20912
      viewtype           IN       NUMBER,
20913
      userid             IN       NUMBER,
20914
      rtagid             IN       NUMBER,
20915
      sviewidshowlist    IN       VARCHAR2,
20916
      ntruerecordcount   OUT      NUMBER,
20917
      recordset          OUT      typecur
20918
   )
20919
   IS
20920
   BEGIN
20921
      -- Get true record count because views can give false count
20922
      SELECT COUNT (wip.pv_id)
20923
        INTO ntruerecordcount
20924
        FROM work_in_progress wip
20925
       WHERE wip.rtag_id = rtagid;
20926
 
20927
      IF viewtype = 1
20928
      THEN
20929
         /*--- GUEST VIEW ---*/
20930
         OPEN recordset FOR
20931
            SELECT   *
20932
                FROM (
20933
                      /* Base Views collapsed */
20934
                      SELECT DISTINCT vi.view_id, vi.view_name,
20935
                                      TO_NUMBER (NULL) AS pkg_state,
20936
                                      TO_NUMBER (NULL) AS deprecated_state,
20937
                                      TO_NUMBER (NULL) AS pv_id,
20938
                                      NULL AS pkg_name, NULL AS pkg_version,
20939
                                      NULL AS dlocked, NULL AS pv_description
20940
                                 FROM work_in_progress rel, views vi
20941
                                WHERE rel.view_id = vi.view_id
20942
                                  AND rtag_id = rtagid
20943
                                  AND rel.view_id NOT IN (
20944
                                         SELECT *
20945
                                           FROM THE
20946
                                                   (SELECT CAST
20947
                                                              (in_list_number
20948
                                                                  (sviewidshowlist
20949
                                                                  ) AS relmgr_number_tab_t
20950
                                                              )
20951
                                                      FROM DUAL
20952
                                                   ))
20953
                      UNION
20954
                      /* Base Views expanded */
20955
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
20956
 
20957
                             --rel.pkg_state,
20958
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
20959
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
20960
                             pv.pv_description
20961
                        FROM work_in_progress rel,
20962
                             PACKAGES pkg,
20963
                             package_versions pv,
20964
                             views vi
20965
                       WHERE pv.pkg_id = pkg.pkg_id
20966
                         AND rel.pv_id = pv.pv_id
20967
                         AND rel.view_id = vi.view_id
20968
                         AND rel.view_id IN (
20969
                                SELECT *
20970
                                  FROM THE
20971
                                          (SELECT CAST
20972
                                                     (in_list_number
20973
                                                              (sviewidshowlist) AS relmgr_number_tab_t
20974
                                                     )
20975
                                             FROM DUAL
20976
                                          ))
20977
                         AND rtag_id = rtagid) ord
20978
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
20979
      ELSIF viewtype = 2
20980
      THEN
20981
         /*--- PERSONAL VIEW ---*/
20982
         OPEN recordset FOR
20983
            SELECT   *
20984
                FROM (
20985
                      /* Base Views collapsed */
20986
                      SELECT DISTINCT vi.view_id, vi.view_name,
20987
                                      TO_NUMBER (NULL) AS pkg_state,
20988
                                      TO_NUMBER (NULL) AS deprecated_state,
20989
                                      TO_NUMBER (NULL) AS pv_id,
20990
                                      NULL AS pkg_name, NULL AS pkg_version,
20991
                                      NULL AS dlocked, NULL AS pv_description
20992
                                 FROM work_in_progress rel,
20993
                                      view_settings vs,
20994
                                      views vi
20995
                                WHERE rel.view_id = vi.view_id
20996
                                  AND vs.view_id = rel.view_id
20997
                                  AND vs.user_id = userid
20998
                                  AND rtag_id = rtagid
20999
                                  AND rel.view_id NOT IN (
21000
                                         SELECT *
21001
                                           FROM THE
21002
                                                   (SELECT CAST
21003
                                                              (in_list_number
21004
                                                                  (sviewidshowlist
21005
                                                                  ) AS relmgr_number_tab_t
21006
                                                              )
21007
                                                      FROM DUAL
21008
                                                   ))
21009
                      UNION
21010
                      /* Base Views expanded */
21011
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21012
 
21013
                             --rel.pkg_state,
21014
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21015
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21016
                             pv.pv_description
21017
                        FROM work_in_progress rel,
21018
                             PACKAGES pkg,
21019
                             package_versions pv,
21020
                             views vi,
21021
                             view_settings vs
21022
                       WHERE pv.pkg_id = pkg.pkg_id
21023
                         AND rel.pv_id = pv.pv_id
21024
                         AND rel.view_id = vi.view_id
21025
                         AND vs.view_id = vi.view_id
21026
                         AND vs.user_id = userid
21027
                         AND rel.view_id IN (
21028
                                SELECT *
21029
                                  FROM THE
21030
                                          (SELECT CAST
21031
                                                     (in_list_number
21032
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21033
                                                     )
21034
                                             FROM DUAL
21035
                                          ))
21036
                         AND rtag_id = rtagid
21037
                      UNION
21038
                      /* Private Views collapsed */
21039
                      SELECT vi.view_id, vi.view_name,
21040
                             TO_NUMBER (NULL) AS pkg_state,
21041
                             TO_NUMBER (NULL) AS deprecated_state,
21042
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21043
                             NULL AS pkg_version, NULL AS dlocked,
21044
                             NULL AS pv_description
21045
                        FROM view_settings vs,
21046
                             view_def vd,
21047
                             views vi,
21048
                             work_in_progress rel,
21049
                             package_versions pv
21050
                       WHERE vs.view_id = vi.view_id
21051
                         AND rel.pv_id = pv.pv_id
21052
                         AND vd.pkg_id = pv.pkg_id
21053
                         AND vd.view_id = vi.view_id
21054
                         AND vi.base_view = 'N'
21055
                         AND rel.rtag_id = rtagid
21056
                         AND vs.user_id = userid
21057
                         AND vi.view_id NOT 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
                      UNION
21067
                      /* Private Views expanded */
21068
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21069
 
21070
                             --rel.pkg_state,
21071
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21072
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21073
                             pv.pv_description
21074
                        FROM users usr,
21075
                             view_settings vs,
21076
                             view_def vd,
21077
                             views vi,
21078
                             work_in_progress rel,
21079
                             PACKAGES pkg,
21080
                             package_versions pv
21081
                       WHERE vs.user_id = usr.user_id
21082
                         AND vs.view_id = vi.view_id
21083
                         AND vd.view_id = vi.view_id
21084
                         AND pv.pkg_id = pkg.pkg_id
21085
                         AND rel.pv_id = pv.pv_id
21086
                         AND rel.rtag_id = rtagid
21087
                         AND vd.pkg_id = pkg.pkg_id
21088
                         AND vi.base_view = 'N'
21089
                         AND vi.view_id IN (
21090
                                SELECT *
21091
                                  FROM THE
21092
                                          (SELECT CAST
21093
                                                     (in_list_number
21094
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21095
                                                     )
21096
                                             FROM DUAL
21097
                                          ))
21098
                         AND usr.user_id = userid) ord
21099
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21100
      END IF;
21101
   END;
21102
 
21103
/*-------------------------------------------------------------------------------------------------------*/
21104
   PROCEDURE get_pending_items (
21105
      viewtype           IN       NUMBER,
21106
      userid             IN       NUMBER,
21107
      rtagid             IN       NUMBER,
21108
      sviewidshowlist    IN       VARCHAR2,
21109
      ntruerecordcount   OUT      NUMBER,
21110
      recordset          OUT      typecur
21111
   )
21112
   IS
21113
   BEGIN
21114
      -- Get true record count because views can give false count
21115
      SELECT COUNT (pl.pv_id)
21116
        INTO ntruerecordcount
21117
        FROM planned pl
21118
       WHERE pl.rtag_id = rtagid;
21119
 
21120
      IF viewtype = 1
21121
      THEN
21122
         /*--- GUEST VIEW ---*/
21123
         OPEN recordset FOR
21124
            SELECT   *
21125
                FROM (
21126
                      /* Base Views collapsed */
21127
                      SELECT DISTINCT vi.view_id, vi.view_name,
21128
                                      TO_NUMBER (NULL) AS pkg_state,
21129
                                      TO_NUMBER (NULL) AS deprecated_state,
21130
                                      TO_NUMBER (NULL) AS pv_id,
21131
                                      NULL AS pkg_name, NULL AS pkg_version,
21132
                                      NULL AS dlocked, NULL AS pv_description
21133
                                 FROM planned rel, views vi
21134
                                WHERE rel.view_id = vi.view_id
21135
                                  AND rtag_id = rtagid
21136
                                  AND rel.view_id NOT IN (
21137
                                         SELECT *
21138
                                           FROM THE
21139
                                                   (SELECT CAST
21140
                                                              (in_list_number
21141
                                                                  (sviewidshowlist
21142
                                                                  ) AS relmgr_number_tab_t
21143
                                                              )
21144
                                                      FROM DUAL
21145
                                                   ))
21146
                      UNION
21147
                      /* Base Views expanded */
21148
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21149
 
21150
                             --rel.pkg_state,
21151
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21152
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21153
                             pv.pv_description
21154
                        FROM planned rel,
21155
                             PACKAGES pkg,
21156
                             package_versions pv,
21157
                             views vi
21158
                       WHERE pv.pkg_id = pkg.pkg_id
21159
                         AND rel.pv_id = pv.pv_id
21160
                         AND rel.view_id = vi.view_id
21161
                         AND rel.view_id IN (
21162
                                SELECT *
21163
                                  FROM THE
21164
                                          (SELECT CAST
21165
                                                     (in_list_number
21166
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21167
                                                     )
21168
                                             FROM DUAL
21169
                                          ))
21170
                         AND rtag_id = rtagid) ord
21171
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21172
      ELSIF viewtype = 2
21173
      THEN
21174
         /*--- PERSONAL VIEW ---*/
21175
         OPEN recordset FOR
21176
            SELECT   *
21177
                FROM (
21178
                      /* Base Views collapsed */
21179
                      SELECT DISTINCT vi.view_id, vi.view_name,
21180
                                      TO_NUMBER (NULL) AS pkg_state,
21181
                                      TO_NUMBER (NULL) AS deprecated_state,
21182
                                      TO_NUMBER (NULL) AS pv_id,
21183
                                      NULL AS pkg_name, NULL AS pkg_version,
21184
                                      NULL AS dlocked, NULL AS pv_description
21185
                                 FROM planned rel, view_settings vs, views vi
21186
                                WHERE rel.view_id = vi.view_id
21187
                                  AND vs.view_id = rel.view_id
21188
                                  AND vs.user_id = userid
21189
                                  AND rtag_id = rtagid
21190
                                  AND rel.view_id NOT IN (
21191
                                         SELECT *
21192
                                           FROM THE
21193
                                                   (SELECT CAST
21194
                                                              (in_list_number
21195
                                                                  (sviewidshowlist
21196
                                                                  ) AS relmgr_number_tab_t
21197
                                                              )
21198
                                                      FROM DUAL
21199
                                                   ))
21200
                      UNION
21201
                      /* Base Views expanded */
21202
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21203
 
21204
                             --rel.pkg_state,
21205
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21206
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21207
                             pv.pv_description
21208
                        FROM planned rel,
21209
                             PACKAGES pkg,
21210
                             package_versions pv,
21211
                             views vi,
21212
                             view_settings vs
21213
                       WHERE pv.pkg_id = pkg.pkg_id
21214
                         AND rel.pv_id = pv.pv_id
21215
                         AND rel.view_id = vi.view_id
21216
                         AND vs.view_id = vi.view_id
21217
                         AND vs.user_id = userid
21218
                         AND rel.view_id IN (
21219
                                SELECT *
21220
                                  FROM THE
21221
                                          (SELECT CAST
21222
                                                     (in_list_number
21223
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21224
                                                     )
21225
                                             FROM DUAL
21226
                                          ))
21227
                         AND rtag_id = rtagid
21228
                      UNION
21229
                      /* Private Views collapsed */
21230
                      SELECT vi.view_id, vi.view_name,
21231
                             TO_NUMBER (NULL) AS pkg_state,
21232
                             TO_NUMBER (NULL) AS deprecated_state,
21233
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
21234
                             NULL AS pkg_version, NULL AS dlocked,
21235
                             NULL AS pv_description
21236
                        FROM view_settings vs,
21237
                             view_def vd,
21238
                             views vi,
21239
                             planned rel,
21240
                             package_versions pv
21241
                       WHERE vs.view_id = vi.view_id
21242
                         AND rel.pv_id = pv.pv_id
21243
                         AND vd.pkg_id = pv.pkg_id
21244
                         AND vd.view_id = vi.view_id
21245
                         AND vi.base_view = 'N'
21246
                         AND rel.rtag_id = rtagid
21247
                         AND vs.user_id = userid
21248
                         AND vi.view_id NOT 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
                      UNION
21258
                      /* Private Views expanded */
21259
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
21260
 
21261
                             --rel.pkg_state,
21262
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
21263
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
21264
                             pv.pv_description
21265
                        FROM users usr,
21266
                             view_settings vs,
21267
                             view_def vd,
21268
                             views vi,
21269
                             planned rel,
21270
                             PACKAGES pkg,
21271
                             package_versions pv
21272
                       WHERE vs.user_id = usr.user_id
21273
                         AND vs.view_id = vi.view_id
21274
                         AND vd.view_id = vi.view_id
21275
                         AND pv.pkg_id = pkg.pkg_id
21276
                         AND rel.pv_id = pv.pv_id
21277
                         AND rel.rtag_id = rtagid
21278
                         AND vd.pkg_id = pkg.pkg_id
21279
                         AND vi.base_view = 'N'
21280
                         AND vi.view_id IN (
21281
                                SELECT *
21282
                                  FROM THE
21283
                                          (SELECT CAST
21284
                                                     (in_list_number
21285
                                                              (sviewidshowlist) AS relmgr_number_tab_t
21286
                                                     )
21287
                                             FROM DUAL
21288
                                          ))
21289
                         AND usr.user_id = userid) ord
21290
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
21291
      END IF;
21292
   END;
21293
 
21294
/*-------------------------------------------------------------------------------------------------------*/
21295
   PROCEDURE get_view_content (
21296
      rtagid      IN       NUMBER,
21297
      viewid      IN       NUMBER,
21298
      recordset   OUT      typecur
21299
   )
21300
   IS
21301
      isbaseview   CHAR (1);
21302
   BEGIN
21303
      -- Check if the view is BASE VIEW
21304
      SELECT vi.base_view
21305
        INTO isbaseview
21306
        FROM views vi
21307
       WHERE vi.view_id = viewid;
21308
 
21309
      IF (isbaseview = 'Y')
21310
      THEN
21311
         -- Get Base view content
21312
         OPEN recordset FOR
21313
            SELECT   DECODE (rel.pkg_state,
21314
                             NULL, 0,
21315
                             rel.pkg_state
21316
                            ) AS pkg_state,
21317
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21318
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21319
                     pv.build_type
21320
                FROM environment_view rel, PACKAGES pkg, package_versions pv
21321
               WHERE pv.pkg_id = pkg.pkg_id
21322
                 AND rel.pv_id = pv.pv_id
21323
                 AND rel.view_id = viewid
21324
                 AND rel.rtag_id = rtagid
21325
            ORDER BY UPPER (pkg.pkg_name);
21326
      ELSE
21327
         -- Get non base view content
21328
         OPEN recordset FOR
21329
            SELECT   DECODE (rel.pkg_state,
21330
                             NULL, 0,
21331
                             rel.pkg_state
21332
                            ) AS pkg_state,
21333
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
21334
                     pv.pkg_version, pv.dlocked, pv.pv_description,
21335
                     pv.build_type
21336
                FROM environment_view rel,
21337
                     PACKAGES pkg,
21338
                     package_versions pv,
21339
                     view_def vd
21340
               WHERE pv.pkg_id = pkg.pkg_id
21341
                 AND rel.pv_id = pv.pv_id
21342
                 AND rel.rtag_id = rtagid
21343
                 AND vd.view_id = viewid
21344
                 AND vd.pkg_id = pv.pkg_id
21345
            ORDER BY UPPER (pkg.pkg_name);
21346
      END IF;
21347
   END;
21348
 
21349
/*-------------------------------------------------------------------------------------------------------*/
21350
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
21351
      RETURN NUMBER
21352
   IS
21353
      envtab             NUMBER;
21354
      returnvalue        NUMBER;
21355
      return_not_found   NUMBER := -1;
21356
   BEGIN
21357
      envtab := get_package_area (pvid, rtagid);
21358
 
21359
      IF envtab = 0
21360
      THEN
21361
         -- WORK IN PROGRESS --
21362
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
21363
      ELSIF envtab = 1
21364
      THEN
21365
         -- PENDING --
21366
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
21367
      ELSIF envtab = 2
21368
      THEN
21369
         -- RELEASED --
21370
         returnvalue := pk_release.get_package_view (pvid, rtagid);
21371
      ELSE
21372
         -- This may be a Patch not located anywhere but unlocked
21373
         returnvalue := return_not_found;
21374
      END IF;
21375
 
21376
      RETURN returnvalue;
21377
   END;
21378
 
21379
/*-------------------------------------------------------------------------------------------------------*/
21380
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21381
   IS
21382
      viewid          NUMBER;
21383
      envtab          NUMBER;
21384
      ispatch         CHAR (1) := NULL;
21385
      buildtype       CHAR (1) := NULL;
21386
      lastversionid   NUMBER;
21387
   BEGIN
21388
      -- Check if package is patch
21389
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21390
        INTO ispatch, buildtype, lastversionid
21391
        FROM package_versions pv
21392
       WHERE pv.pv_id = pvid;
21393
 
21394
      -- Get ViewId
21395
      viewid := get_package_view (pvid, rtagid);
21396
      -- Remove from current area
21397
      envtab := pk_environment.get_package_area (pvid, rtagid);
21398
 
21399
      -- Make sure that package was in work-in-progress or pending before makeing it release
21400
      -- Exclude patches, ripple builds
21401
      IF (envtab < 0)
21402
      THEN
21403
         -- Not found in work-in-progress or pending
21404
         IF (ispatch IS NULL) AND (buildtype = 'M')
21405
         THEN
21406
            raise_application_error (-20000,
21407
                                     'This package cannot be released here.'
21408
                                    );
21409
         END IF;
21410
      END IF;
21411
 
21412
      -- Log
21413
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21414
 
21415
      IF envtab = 0
21416
      THEN
21417
         -- WORK IN PROGRESS --
21418
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21419
      ELSIF envtab = 1
21420
      THEN
21421
         -- PENDING --
21422
         pk_planned.remove_package (pvid, rtagid, userid);
21423
      END IF;
21424
 
21425
      -- Change package state
21426
      pk_package.change_state (pvid, 'Y', userid);
21427
 
21428
      -- Make sure it is valid BASE VIEW
21429
      IF viewid < 1
21430
      THEN
21431
         viewid := 7;                            -- This is default base view
21432
      END IF;
21433
 
21434
      IF (ispatch IS NULL)
21435
      THEN
21436
         -- Add package to new area
21437
         pk_release.add_package (pvid, viewid, rtagid, userid);
21438
      END IF;
21439
 
21440
      -- Now do post Release Actions
21441
      pk_release.run_post_actions (pvid, rtagid);
21442
 
21443
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21444
      DELETE FROM do_not_ripple
21445
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21446
 
21447
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21448
      DELETE FROM advisory_ripple
21449
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21450
 
21451
      -- Log
21452
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21453
   END;
21454
 
21455
/*-------------------------------------------------------------------------------------------------------*/
21456
   PROCEDURE auto_make_release (
21457
      pvid            IN   NUMBER,
21458
      rtagid          IN   NUMBER,
21459
      userid          IN   NUMBER,
21460
      vext            IN   package_versions.v_ext%TYPE,
21461
      ssv_ext         IN   package_versions.v_ext%TYPE,
21462
      clonefrompvid   IN   NUMBER
21463
   )
21464
   IS
21465
      viewid          NUMBER;
21466
      envtab          NUMBER;
21467
      ispatch         CHAR (1) := NULL;
21468
      buildtype       CHAR (1) := NULL;
21469
      lastversionid   NUMBER;
21470
   BEGIN
21471
      -- Check if package is patch
21472
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
21473
        INTO ispatch, buildtype, lastversionid
21474
        FROM package_versions pv
21475
       WHERE pv.pv_id = pvid;
21476
 
21477
      IF vext <> ssv_ext
21478
      THEN
21479
         -- Get ViewId
21480
         viewid := get_package_view (clonefrompvid, rtagid);
21481
         -- Remove from current area
21482
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
21483
      ELSE
21484
         -- Get ViewId
21485
         viewid := get_package_view (pvid, rtagid);
21486
         -- Remove from current area
21487
         envtab := pk_environment.get_package_area (pvid, rtagid);
21488
      END IF;
21489
 
21490
      -- Make sure that package was in work-in-progress or pending before makeing it release
21491
      -- Exclude patches, ripple builds
21492
      IF (envtab < 0)
21493
      THEN
21494
         -- Not found in work-in-progress or pending
21495
         IF (ispatch IS NULL) AND (buildtype = 'M')
21496
         THEN
21497
            raise_application_error (-20000,
21498
                                     'This package cannot be released here.'
21499
                                    );
21500
         END IF;
21501
      END IF;
21502
 
21503
      -- Log
21504
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
21505
 
21506
      IF vext <> ssv_ext
21507
      THEN
21508
         IF envtab = 0
21509
         THEN
21510
            -- WORK IN PROGRESS --
21511
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
21512
                                                userid);
21513
         ELSIF envtab = 1
21514
         THEN
21515
            -- PENDING --
21516
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
21517
         ELSIF envtab = 2
21518
         THEN
21519
            -- RELEASED --
21520
            pk_release.remove_package (clonefrompvid, rtagid, userid);
21521
         END IF;
21522
      ELSE
21523
         IF envtab = 0
21524
         THEN
21525
            -- WORK IN PROGRESS --
21526
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
21527
         ELSIF envtab = 1
21528
         THEN
21529
            -- PENDING --
21530
            pk_planned.remove_package (pvid, rtagid, userid);
21531
         END IF;
21532
      END IF;
21533
 
21534
      -- Change package state
21535
      pk_package.change_state (pvid, 'Y', userid);
21536
 
21537
      -- Make sure it is valid BASE VIEW
21538
      IF viewid < 1
21539
      THEN
21540
         viewid := 7;                            -- This is default base view
21541
      END IF;
21542
 
21543
      IF (ispatch IS NULL)
21544
      THEN
21545
         -- Add package to new area
21546
         pk_release.add_package (pvid, viewid, rtagid, userid);
21547
      END IF;
21548
 
21549
      -- Now do post Release Actions
21550
      pk_release.run_post_actions (pvid, rtagid);
21551
      -- Now update the Dash_Board Table
21552
      pk_rmapi.update_dash_board (rtagid);
21553
 
21554
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
21555
      DELETE FROM do_not_ripple
21556
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21557
 
21558
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
21559
      DELETE FROM advisory_ripple
21560
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
21561
 
21562
      -- Log
21563
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
21564
   END;
21565
 
21566
/*-------------------------------------------------------------------------------------------------------*/
21567
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21568
   IS
21569
      viewid   NUMBER;
21570
      envtab   NUMBER;
21571
   BEGIN
21572
      -- Get ViewId
21573
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
21574
      viewid := get_package_view (pvid, rtagid);
21575
      -- Remove from current area
21576
      envtab := pk_environment.get_package_area (pvid, rtagid);
21577
      -- Log
21578
      log_action (pvid,
21579
                  'action',
21580
                  userid,
21581
                  'Start of Make Package UnRelease...'
21582
                 );
21583
 
21584
      IF envtab = 2
21585
      THEN
21586
         -- RELEASE AREA --
21587
         pk_release.remove_package (pvid, rtagid, userid);
21588
      ELSIF envtab = 1
21589
      THEN
21590
         -- PENDING --
21591
         pk_planned.remove_package (pvid, rtagid, userid);
21592
      END IF;
21593
 
21594
      -- Change package state
21595
      pk_package.change_state (pvid, 'N', userid);
21596
 
21597
      -- Make sure it is valid BASE VIEW
21598
      IF viewid < 1
21599
      THEN
21600
         viewid := 7;                            -- This is default base view
21601
      END IF;
21602
 
21603
      -- Add package to new area
21604
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21605
      -- Now do post Release Actions
21606
      pk_release.run_post_actions (pvid, rtagid);
21607
      -- Log
21608
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
21609
   END;
21610
 
21611
/*-------------------------------------------------------------------------------------------------------*/
21612
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21613
   IS
21614
      viewid      NUMBER;
21615
      ispatch     CHAR (1) := NULL;
21616
      buildtype   CHAR (1) := NULL;
21617
   BEGIN
21618
      -- Check if package is patch
21619
      SELECT pv.is_patch, pv.build_type
21620
        INTO ispatch, buildtype
21621
        FROM package_versions pv
21622
       WHERE pv.pv_id = pvid;
21623
 
21624
      -- Get ViewId
21625
      viewid := get_package_view (pvid, rtagid);
21626
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
21627
 
21628
      -- Log
21629
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
21630
 
21631
      IF (ispatch IS NULL)
21632
      THEN
21633
         -- Remove from current area
21634
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
21635
         -- Change package state
21636
         pk_package.change_state (pvid, 'P', userid);
21637
         -- Add package to new area
21638
         pk_planned.add_package (pvid, viewid, rtagid, userid);
21639
      END IF;
21640
 
21641
      -- Log
21642
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
21643
   END;
21644
 
21645
/*-------------------------------------------------------------------------------------------------------*/
21646
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21647
   IS
21648
   BEGIN
21649
      -- Log
21650
      log_action (pvid,
21651
                  'action',
21652
                  userid,
21653
                  'Start of Package Pending Approval...'
21654
                 );
21655
      -- Change package state
21656
      pk_package.change_state (pvid, 'A', userid);
21657
      -- Log
21658
      log_action (pvid, 'action', userid,
21659
                  'End of Package Pending Approval...');
21660
   END;
21661
 
21662
/*-------------------------------------------------------------------------------------------------------*/
21663
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
21664
   IS
21665
      viewid   NUMBER;
21666
   BEGIN
21667
      -- Get ViewId
21668
      viewid := get_package_view (pvid, rtagid);
21669
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
21670
 
21671
      -- Log
21672
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21673
      -- Remove from current area
21674
      pk_planned.remove_package (pvid, rtagid, userid);
21675
      -- Change package state
21676
      pk_package.change_state (pvid, 'R', userid);
21677
      -- Add package to new area
21678
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
21679
      -- Log
21680
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
21681
   END;
21682
 
21683
/*-------------------------------------------------------------------------------------------------------*/
21684
   PROCEDURE change_package_view (
21685
      pvid        IN   NUMBER,
21686
      rtagid      IN   NUMBER,
21687
      newviewid   IN   NUMBER
21688
   )
21689
   IS
21690
      envtab   NUMBER;
21691
   BEGIN
21692
      envtab := pk_environment.get_package_area (pvid, rtagid);
21693
 
21694
      IF envtab = 0
21695
      THEN
21696
         -- WORK IN PROGRESS --
21697
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
21698
      ELSIF envtab = 1
21699
      THEN
21700
         -- PENDING --
21701
         pk_planned.change_package_view (pvid, rtagid, newviewid);
21702
      ELSIF envtab = 2
21703
      THEN
21704
         -- RELEASED --
21705
         pk_release.change_package_view (pvid, rtagid, newviewid);
21706
      END IF;
21707
   END;
21708
 
21709
/*-------------------------------------------------------------------------------------------------------*/
21710
   PROCEDURE find_package (
21711
      skeyword      IN       VARCHAR2,
21712
      nrtagid       IN       NUMBER,
21713
      nsearcharea   IN       NUMBER,
21714
      recordset     OUT      typecur
21715
   )
21716
   IS
21717
   BEGIN
21718
      IF nsearcharea = 0
21719
      THEN
21720
         /* Search Work In Progress */
21721
         OPEN recordset FOR
21722
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21723
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21724
                     pv.modified_stamp, usr.full_name, usr.user_email
21725
                FROM views vi,
21726
                     work_in_progress rc,
21727
                     PACKAGES pkg,
21728
                     package_versions pv,
21729
                     users usr
21730
               WHERE rc.view_id = vi.view_id
21731
                 AND rc.pv_id = pv.pv_id
21732
                 AND pkg.pkg_id = pv.pkg_id
21733
                 AND pv.modifier_id = usr.user_id
21734
                 AND rc.rtag_id = nrtagid
21735
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21736
            ORDER BY UPPER (pkg.pkg_name);
21737
      ELSIF nsearcharea = 1
21738
      THEN
21739
         /* Search Pending */
21740
         OPEN recordset FOR
21741
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21742
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21743
                     pv.modified_stamp, usr.full_name, usr.user_email
21744
                FROM views vi,
21745
                     planned rc,
21746
                     PACKAGES pkg,
21747
                     package_versions pv,
21748
                     users usr
21749
               WHERE rc.view_id = vi.view_id
21750
                 AND rc.pv_id = pv.pv_id
21751
                 AND pkg.pkg_id = pv.pkg_id
21752
                 AND pv.modifier_id = usr.user_id
21753
                 AND rc.rtag_id = nrtagid
21754
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21755
            ORDER BY UPPER (pkg.pkg_name);
21756
      ELSIF nsearcharea = 2
21757
      THEN
21758
         /* Search Released */
21759
         OPEN recordset FOR
21760
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
21761
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
21762
                     pv.modified_stamp, usr.full_name, usr.user_email
21763
                FROM views vi,
21764
                     release_content rc,
21765
                     PACKAGES pkg,
21766
                     package_versions pv,
21767
                     users usr
21768
               WHERE rc.base_view_id = vi.view_id
21769
                 AND rc.pv_id = pv.pv_id
21770
                 AND pkg.pkg_id = pv.pkg_id
21771
                 AND pv.modifier_id = usr.user_id
21772
                 AND rc.rtag_id = nrtagid
21773
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21774
            ORDER BY UPPER (pkg.pkg_name);
21775
      ELSIF nsearcharea = 3
21776
      THEN
21777
         /* Search ALL */
21778
         OPEN recordset FOR
21779
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
21780
                     pv.pv_id, pv.pkg_version, pv.comments,
21781
                     pv.modified_stamp, usr.full_name, usr.user_email
21782
                FROM views vi,
21783
                     environment_view rc,
21784
                     PACKAGES pkg,
21785
                     package_versions pv,
21786
                     users usr
21787
               WHERE rc.view_id = vi.view_id
21788
                 AND rc.pv_id = pv.pv_id
21789
                 AND pkg.pkg_id = pv.pkg_id
21790
                 AND pv.modifier_id = usr.user_id
21791
                 AND rc.rtag_id = nrtagid
21792
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
21793
            ORDER BY UPPER (pkg.pkg_name);
21794
      END IF;
21795
   END;
21796
 
21797
/*-------------------------------------------------------------------------------------------------------*/
21798
   PROCEDURE find_file (
21799
      skeyword      IN       VARCHAR2,
21800
      nrtagid       IN       NUMBER,
21801
      nsearcharea   IN       NUMBER,
21802
      npagesize     IN       NUMBER,
21803
      recordset     OUT      typecur
21804
   )
21805
   IS
21806
   BEGIN
21807
      IF nsearcharea = 0
21808
      THEN
21809
         /* Search Work In Progress */
21810
         OPEN recordset FOR
21811
            SELECT   qry.*
21812
                FROM (
21813
                      /* File search on Packages */
21814
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21815
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21816
                        FROM work_in_progress rc,
21817
                             PACKAGES pkg,
21818
                             package_versions pv,
21819
                             release_components art
21820
                       WHERE rc.pv_id = art.pv_id
21821
                         AND pv.pkg_id = pkg.pkg_id
21822
                         AND rc.pv_id = pv.pv_id
21823
                         AND rc.rtag_id = nrtagid
21824
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21825
                      UNION ALL
21826
                      /* File search on Products */
21827
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21828
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21829
                        FROM work_in_progress rc,
21830
                             PACKAGES pkg,
21831
                             package_versions pv,
21832
                             product_components art
21833
                       WHERE rc.pv_id = art.pv_id
21834
                         AND pv.pkg_id = pkg.pkg_id
21835
                         AND rc.pv_id = pv.pv_id
21836
                         AND rc.rtag_id = nrtagid
21837
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21838
               WHERE ROWNUM <= npagesize
21839
            ORDER BY UPPER (qry.pkg_name);
21840
      ELSIF nsearcharea = 1
21841
      THEN
21842
         /* Search Pending */
21843
         OPEN recordset FOR
21844
            SELECT   qry.*
21845
                FROM (
21846
                      /* File search on Packages */
21847
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21848
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21849
                        FROM planned rc,
21850
                             PACKAGES pkg,
21851
                             package_versions pv,
21852
                             release_components art
21853
                       WHERE rc.pv_id = art.pv_id
21854
                         AND pv.pkg_id = pkg.pkg_id
21855
                         AND rc.pv_id = pv.pv_id
21856
                         AND rc.rtag_id = nrtagid
21857
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21858
                      UNION ALL
21859
                      /* File search on Products */
21860
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21861
                             pv.pv_id, pv.pkg_version, art.crc_cksum
21862
                        FROM planned rc,
21863
                             PACKAGES pkg,
21864
                             package_versions pv,
21865
                             product_components art
21866
                       WHERE rc.pv_id = art.pv_id
21867
                         AND pv.pkg_id = pkg.pkg_id
21868
                         AND rc.pv_id = pv.pv_id
21869
                         AND rc.rtag_id = nrtagid
21870
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21871
               WHERE ROWNUM <= npagesize
21872
            ORDER BY UPPER (qry.pkg_name);
21873
      ELSIF nsearcharea = 2
21874
      THEN
21875
         /* Search Released */
21876
         OPEN recordset FOR
21877
            SELECT   qry.*
21878
                FROM (
21879
                      /* File search on Packages */
21880
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21881
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21882
                             NULL AS patch_id
21883
                        FROM release_content rc,
21884
                             PACKAGES pkg,
21885
                             package_versions pv,
21886
                             release_components art
21887
                       WHERE rc.pv_id = art.pv_id
21888
                         AND pv.pkg_id = pkg.pkg_id
21889
                         AND rc.pv_id = pv.pv_id
21890
                         AND rc.rtag_id = nrtagid
21891
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21892
                      UNION ALL
21893
                      /* File search on Products */
21894
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21895
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21896
                             NULL AS patch_id
21897
                        FROM release_content rc,
21898
                             PACKAGES pkg,
21899
                             package_versions pv,
21900
                             product_components art
21901
                       WHERE rc.pv_id = art.pv_id
21902
                         AND pv.pkg_id = pkg.pkg_id
21903
                         AND rc.pv_id = pv.pv_id
21904
                         AND rc.rtag_id = nrtagid
21905
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21906
                      UNION ALL
21907
                      /* File search on Patches */
21908
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21909
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21910
                             DECODE (art.file_path,
21911
                                     NULL, pp.patch_id,
21912
                                     NULL
21913
                                    ) AS patch_id
21914
                        FROM release_content rc,
21915
                             PACKAGES pkg,
21916
                             package_versions pv,
21917
                             release_components art,
21918
                             package_patches pp
21919
                       WHERE pv.pv_id = pp.pv_id
21920
                         AND pv.pkg_id = pkg.pkg_id
21921
                         AND rc.rtag_id = nrtagid
21922
                         AND art.pv_id = pp.patch_id
21923
                         AND rc.pv_id = pp.pv_id
21924
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21925
               WHERE ROWNUM <= npagesize
21926
            ORDER BY UPPER (qry.pkg_name);
21927
      ELSIF nsearcharea = 3
21928
      THEN
21929
         /* Search ALL */
21930
         OPEN recordset FOR
21931
            SELECT   qry.*
21932
                FROM (
21933
                      /* File search on Packages */
21934
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21935
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21936
                             NULL AS patch_id
21937
                        FROM environment_view rc,
21938
                             PACKAGES pkg,
21939
                             package_versions pv,
21940
                             release_components art
21941
                       WHERE rc.pv_id = art.pv_id
21942
                         AND pv.pkg_id = pkg.pkg_id
21943
                         AND rc.pv_id = pv.pv_id
21944
                         AND rc.rtag_id = nrtagid
21945
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21946
                      UNION ALL
21947
                      /* File search on Products */
21948
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21949
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21950
                             NULL AS patch_id
21951
                        FROM environment_view rc,
21952
                             PACKAGES pkg,
21953
                             package_versions pv,
21954
                             product_components art
21955
                       WHERE rc.pv_id = art.pv_id
21956
                         AND pv.pkg_id = pkg.pkg_id
21957
                         AND rc.pv_id = pv.pv_id
21958
                         AND rc.rtag_id = nrtagid
21959
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
21960
                      UNION ALL
21961
                      /* File search on Patches */
21962
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
21963
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
21964
                             DECODE (art.file_path,
21965
                                     NULL, pp.patch_id,
21966
                                     NULL
21967
                                    ) AS patch_id
21968
                        FROM release_content rc,
21969
                             PACKAGES pkg,
21970
                             package_versions pv,
21971
                             release_components art,
21972
                             package_patches pp
21973
                       WHERE pv.pv_id = pp.pv_id
21974
                         AND pv.pkg_id = pkg.pkg_id
21975
                         AND rc.rtag_id = nrtagid
21976
                         AND art.pv_id = pp.patch_id
21977
                         AND rc.pv_id = pp.pv_id
21978
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
21979
               WHERE ROWNUM <= npagesize
21980
            ORDER BY UPPER (qry.pkg_name);
21981
      END IF;
21982
   END;
21983
 
21984
/*-------------------------------------------------------------------------------------------------------*/
21985
   PROCEDURE get_prodrelease_items (
21986
      rtagid             IN       NUMBER,
21987
      ntruerecordcount   OUT      NUMBER,
21988
      recordset          OUT      typecur
21989
   )
21990
   IS
21991
   BEGIN
21992
      -- Get true record count n the number of integration products
21993
      SELECT COUNT (rc.pv_id)
21994
        INTO ntruerecordcount
21995
        FROM release_content rc
21996
       WHERE rc.rtag_id = rtagid;
21997
 
21998
      OPEN recordset FOR
21999
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
22000
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22001
                  pv.pkg_version, pv.dlocked, pv.pv_description
22002
             FROM release_content rel,
22003
                  PACKAGES pkg,
22004
                  package_versions pv,
22005
                  views vi
22006
            WHERE pv.pkg_id = pkg.pkg_id
22007
              AND rel.pv_id = pv.pv_id
22008
              AND rel.base_view_id = vi.view_id
22009
              AND pv.is_deployable = 'Y'
22010
              AND rtag_id = rtagid
22011
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
22012
                                              FROM deployment_manager.os_contents)
22013
              AND rel.product_state IS NULL
22014
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22015
   END;
22016
 
22017
/*-------------------------------------------------------------------------------------------------------*/
22018
   PROCEDURE get_integration_items (
22019
      rtagid             IN       NUMBER,
22020
      ntruerecordcount   OUT      NUMBER,
22021
      recordset          OUT      typecur
22022
   )
22023
   IS
22024
   BEGIN
22025
      -- Get true record count n the number of integration products
22026
      SELECT COUNT (rc.pv_id)
22027
        INTO ntruerecordcount
22028
        FROM release_content rc
22029
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
22030
 
22031
      OPEN recordset FOR
22032
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22033
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22034
                  pv.pkg_version, pv.dlocked, pv.pv_description
22035
             FROM release_content rel,
22036
                  PACKAGES pkg,
22037
                  package_versions pv,
22038
                  views vi
22039
            WHERE pv.pkg_id = pkg.pkg_id
22040
              AND rel.pv_id = pv.pv_id
22041
              AND rel.base_view_id = vi.view_id
22042
              AND pv.is_deployable = 'Y'
22043
              AND rtag_id = rtagid
22044
              AND rel.product_state IN (1, 5)
22045
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22046
   END;
22047
 
22048
/*-------------------------------------------------------------------------------------------------------*/
22049
   PROCEDURE get_test_items (
22050
      rtagid             IN       NUMBER,
22051
      ntruerecordcount   OUT      NUMBER,
22052
      recordset          OUT      typecur
22053
   )
22054
   IS
22055
   BEGIN
22056
      -- Get true record count n the number of test products
22057
      SELECT COUNT (rc.pv_id)
22058
        INTO ntruerecordcount
22059
        FROM release_content rc
22060
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
22061
 
22062
      OPEN recordset FOR
22063
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22064
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22065
                  pv.pkg_version, pv.dlocked, pv.pv_description
22066
             FROM release_content rel,
22067
                  PACKAGES pkg,
22068
                  package_versions pv,
22069
                  views vi
22070
            WHERE pv.pkg_id = pkg.pkg_id
22071
              AND rel.pv_id = pv.pv_id
22072
              AND rel.base_view_id = vi.view_id
22073
              AND pv.is_deployable = 'Y'
22074
              AND rtag_id = rtagid
22075
              AND rel.product_state = 2
22076
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22077
   END;
22078
 
22079
/*-------------------------------------------------------------------------------------------------------*/
22080
   PROCEDURE get_deploy_items (
22081
      rtagid             IN       NUMBER,
22082
      ntruerecordcount   OUT      NUMBER,
22083
      recordset          OUT      typecur
22084
   )
22085
   IS
22086
   BEGIN
22087
      -- Get true record count n the number of deploy products
22088
      SELECT COUNT (rc.pv_id)
22089
        INTO ntruerecordcount
22090
        FROM release_content rc
22091
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
22092
 
22093
      OPEN recordset FOR
22094
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22095
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22096
                  pv.pkg_version, pv.dlocked, pv.pv_description
22097
             FROM release_content rel,
22098
                  PACKAGES pkg,
22099
                  package_versions pv,
22100
                  views vi
22101
            WHERE pv.pkg_id = pkg.pkg_id
22102
              AND rel.pv_id = pv.pv_id
22103
              AND rel.base_view_id = vi.view_id
22104
              AND pv.is_deployable = 'Y'
22105
              AND rtag_id = rtagid
22106
              AND rel.product_state IN (3, 5)
22107
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
22108
                                              FROM deployment_manager.os_contents)
22109
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22110
   END;
22111
 
22112
/*-------------------------------------------------------------------------------------------------------*/
22113
   PROCEDURE get_reject_items (
22114
      rtagid             IN       NUMBER,
22115
      ntruerecordcount   OUT      NUMBER,
22116
      recordset          OUT      typecur
22117
   )
22118
   IS
22119
   BEGIN
22120
      -- Get true record count n the number of reject products
22121
      SELECT COUNT (rc.pv_id)
22122
        INTO ntruerecordcount
22123
        FROM release_content rc
22124
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
22125
 
22126
      OPEN recordset FOR
22127
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
22128
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
22129
                  pv.pkg_version, pv.dlocked, pv.pv_description
22130
             FROM release_content rel,
22131
                  PACKAGES pkg,
22132
                  package_versions pv,
22133
                  views vi
22134
            WHERE pv.pkg_id = pkg.pkg_id
22135
              AND rel.pv_id = pv.pv_id
22136
              AND rel.base_view_id = vi.view_id
22137
              AND pv.is_deployable = 'Y'
22138
              AND rtag_id = rtagid
22139
              AND rel.product_state = 4
22140
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
22141
   END;
22142
/*-------------------------------------------------------------------------------------------------------*/
22143
END pk_environment_test;
22144
/
22145
 
57 mhunt 22146
CREATE OR REPLACE PACKAGE BODY                   "PK_LICENCING" IS
22147
 
22148
/*
22149
------------------------------
22150
||  Last Modified:  G.Huddy
22151
||  Modified Date:  19/Aug/2008
22152
||  Body Version:   1.0
22153
------------------------------
22154
*/
22155
 
22156
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
22157
   BEGIN
22158
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
22159
         -- Add entry to licencing table
22160
         INSERT INTO licencing (pv_id, licence)
22161
         VALUES (PvId, licenceId);
22162
 
22163
         -- log action
22164
         -- TODO
22165
      END IF;
22166
 
22167
   END;
22168
 
22169
/*-------------------------------------------------------------------------------------------------------*/
22170
 
22171
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
22172
   BEGIN
22173
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
22174
         -- Delete entry from licencing table
22175
         DELETE FROM licencing
22176
         WHERE pv_id = PvId
22177
         AND licence = licenceId;
22178
 
22179
         -- log action
22180
         -- TODO
22181
      END IF;
22182
   END;
22183
 
22184
/*-------------------------------------------------------------------------------------------------------*/
22185
 
22186
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
22187
 
22188
      CURSOR licencing_cur
22189
      IS
22190
         SELECT *
22191
         FROM licencing
22192
         WHERE pv_id = fromPvId;
22193
 
22194
      licencing_rec licencing_cur%ROWTYPE;
22195
 
22196
   BEGIN
22197
      -- For each licence association that the Last PV_ID had, create a similar
22198
      -- arrangement for the new PV_ID
22199
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
22200
      -- does not have, are retained. The assumption is that the user has made those and so we do not
22201
      -- have any right to destroy them without asking them.
22202
      OPEN licencing_cur;
22203
 
22204
      FETCH licencing_cur
22205
      INTO licencing_rec;
22206
 
22207
      WHILE licencing_cur%FOUND
22208
      LOOP
22209
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
22210
 
22211
         FETCH licencing_cur
22212
         INTO licencing_rec;
22213
      END LOOP;
22214
   END;
22215
 
22216
/*-------------------------------------------------------------------------------------------------------*/
22217
 
22218
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
22219
      found NUMBER;
22220
   BEGIN
22221
 
22222
      SELECT COUNT(*) INTO found
22223
      FROM licencing
22224
      WHERE pv_id = PvId
22225
      AND licence = LicenceId;
22226
 
22227
      RETURN found;
22228
   END;
22229
 
22230
/*-------------------------------------------------------------------------------------------------------*/
22231
 
22232
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
22233
 
22234
      CURSOR licencing_cur
22235
      IS
22236
         SELECT *
22237
         FROM licencing
22238
         WHERE pv_id = PvId;
22239
 
22240
      licencing_rec licencing_cur%ROWTYPE;
22241
   BEGIN
22242
      -- For each licence association that the PV_ID had, remove it
22243
      OPEN licencing_cur;
22244
 
22245
      FETCH licencing_cur
22246
      INTO licencing_rec;
22247
 
22248
      WHILE licencing_cur%FOUND
22249
      LOOP
22250
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
22251
 
22252
         FETCH licencing_cur
22253
         INTO licencing_rec;
22254
      END LOOP;
22255
   END;
22256
 
22257
/*-------------------------------------------------------------------------------------------------------*/
22258
END PK_LICENCING;
22259
/
22260