Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
221 vnguyen 1
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
2
IS
3
/*
4
------------------------------
5
||  Last Modified:  R. Solanki
6
||  Modified Date:  09/03/2006
7
||  Body Version:   1.7
8
------------------------------
9
*/
10
 
11
   /*-------------------------------------------------------------------------------------------------------*/
12
   PROCEDURE new_version (
13
      nlastpvid                   IN       NUMBER,
14
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
15
      cbuildtype                  IN       CHAR,
16
      nsettopvid                  IN       NUMBER DEFAULT NULL,
17
      nrtagid                     IN       NUMBER,
18
      nuserid                     IN       NUMBER,
19
      enumissues_state_imported   IN       NUMBER,
20
      returnpvid                  OUT      NUMBER
21
   )
22
   IS
23
      origpkg_id                   package_versions.pkg_id%TYPE;
24
      origdlocked                  package_versions.dlocked%TYPE;
25
      ssv_mm                       package_versions.v_mm%TYPE;
26
      ssv_nmm                      package_versions.v_nmm%TYPE;
27
      ssv_ext                      package_versions.v_ext%TYPE;
28
      spackageversion              VARCHAR2 (4000);
29
      nissuestypes                 NUMBER;
30
      nviewid                      NUMBER;
31
      reccount                     NUMBER;
32
      isreleased                   package_versions.dlocked%TYPE       := 'N';
33
      slabel                       VARCHAR2 (4000)                    := NULL;
34
 
35
      CURSOR package_versions_cur
36
      IS
37
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
38
           FROM package_versions pv
39
          WHERE pv.pkg_version = snewpkgversion
40
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
41
                                         FROM package_versions origpv
42
                                        WHERE origpv.pv_id = nlastpvid);
43
 
44
      package_versions_rec         package_versions_cur%ROWTYPE;
45
 
46
      CURSOR clone_package_versions_cur
47
      IS
48
         SELECT DISTINCT pkg_id, dlocked
49
                    FROM package_versions
50
                   WHERE pv_id = nlastpvid;
51
 
52
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
53
   BEGIN
54
      spackageversion := snewpkgversion;
55
 
56
      IF nsettopvid IS NULL
57
      THEN
58
         -- SetToPv_id is not supplied, hence proceed.
59
 
60
         /* ---------------------------------------------------- */
61
/* Find id package_version exists                       */
62
/* ---------------------------------------------------- */
63
         OPEN package_versions_cur;
64
 
65
         FETCH package_versions_cur
66
          INTO package_versions_rec;
67
 
68
         IF package_versions_cur%NOTFOUND
69
         THEN
70
            ---  Create brand new package ---
71
            SELECT seq_pv_id.NEXTVAL
72
              INTO returnpvid
73
              FROM DUAL;
74
 
75
            -- Split Version to get extention + other
76
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
77
 
78
            -- Get previous package to clone from
79
            OPEN clone_package_versions_cur;
80
 
81
            FETCH clone_package_versions_cur
82
             INTO clone_package_versions_rec;
83
 
84
            origpkg_id := clone_package_versions_rec.pkg_id;
85
            origdlocked := clone_package_versions_rec.dlocked;
86
 
87
            CLOSE clone_package_versions_cur;
88
 
89
            -- Automated built config
90
            IF (cbuildtype = 'A')
91
            THEN
92
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
93
                                    -- Make sure that version is still unique
94
            END IF;
95
 
96
            -- Clone Package Version Details --
97
            INSERT INTO package_versions
98
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
99
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
100
                         v_ext, src_path, pv_description, pv_overview,
101
                         last_pv_id, owner_id, is_deployable,
102
                         is_build_env_required, build_type, bs_id, is_autobuildable)
103
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
104
                      spackageversion AS pkg_version, 'N' AS dlocked,
105
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
106
                      ora_sysdatetime AS modified_stamp,
107
                      nuserid AS modifier_id, ssv_mm AS v_mm,
108
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
109
                      pv.pv_description, pv.pv_overview,
110
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
111
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
112
                 FROM package_versions pv
113
                WHERE pv.pv_id = nlastpvid;
114
 
115
            -- Set Issues Type for cloning ---
116
            IF origdlocked = 'Y'
117
            THEN
118
               nissuestypes := enumissues_state_imported;
119
            ELSE
120
               nissuestypes := NULL;
121
            END IF;
122
 
123
            -- Update Label for automated built
124
            IF (cbuildtype = 'A')
125
            THEN
126
               slabel := get_automated_label (returnpvid);
127
 
128
               UPDATE package_versions pv
129
                  SET pv.pkg_label = slabel
130
                WHERE pv.pv_id = returnpvid;
131
            END IF;
132
 
133
            basic_clone (nlastpvid,
134
                         returnpvid,
135
                         nrtagid,
136
                         nuserid,
137
                         origpkg_id,
138
                         nissuestypes
139
                        );
140
         ELSE
141
            --- Package already exists, hence reuse ---
142
            returnpvid := package_versions_rec.pv_id;
143
            isreleased := package_versions_rec.dlocked;
144
         END IF;
145
 
146
         CLOSE package_versions_cur;
147
      ELSE
148
         returnpvid := nsettopvid;
149
      END IF;
150
   END new_version;
151
 
152
/*-------------------------------------------------------------------------------------------------------*/
153
   PROCEDURE change_state (
154
      pvid       IN   NUMBER,
155
      newstate   IN   package_versions.dlocked%TYPE,
156
      userid     IN   NUMBER
157
   )
158
   IS
159
   BEGIN
160
      -- Set package in Released mode
161
      UPDATE package_versions pv
162
         SET pv.dlocked = newstate,
163
             pv.modified_stamp = ora_sysdatetime,
164
             pv.modifier_id = userid
165
       WHERE pv.pv_id = pvid;
166
 
167
      -- Log action --
168
      IF newstate = 'Y'
169
      THEN
170
         -- RELEASED --
171
         log_action (pvid,
172
                     'makeofficial',
173
                     userid,
174
                     'Package state change to: Released'
175
                    );
176
      ELSIF newstate = 'N'
177
      THEN
178
         -- UNLOCKED --
179
         log_action (pvid,
180
                     'makeunofficial',
181
                     userid,
182
                     'Package state change to: Ulocked'
183
                    );
184
      ELSIF newstate = 'P'
185
      THEN
186
         -- PENDING APPROVAL --
187
         log_action (pvid,
188
                     'add_to_planned',
189
                     userid,
190
                     'Package state change to: Pending Approval'
191
                    );
192
      ELSIF newstate = 'R'
193
      THEN
194
         -- REJECTED --
195
         log_action (pvid,
196
                     'reject_package',
197
                     userid,
198
                     'Package state change to: Rejected'
199
                    );
200
      ELSIF newstate = 'A'
201
      THEN
202
         -- APPROVED --
203
         log_action (pvid,
204
                     'approve_package',
205
                     userid,
206
                     'Package state change to: Approved'
207
                    );
208
      END IF;
209
   END;
210
 
211
/*-------------------------------------------------------------------------------------------------------*/
212
   PROCEDURE destroy_package (
213
      pvid               IN       NUMBER,
214
      overridewarnings   IN       CHAR DEFAULT 'N',
215
      problemstring      OUT      VARCHAR2
216
   )
217
   IS
218
      LOCKED     CHAR;
219
      pkgid      NUMBER;
220
      ROWCOUNT   NUMBER;
221
   BEGIN
222
      /*
223
      || This will destroy all package details from database.
224
      || It will only be used to remove unwanted work in progress packages,
225
      || or mestaken versions
226
      */
227
 
228
      /*--------------- Business Rules Here -------------------*/
229
      problemstring 
230
:= NULL;
231
 
232
      IF overridewarnings = 'N'
233
      THEN
234
         -- Package must not be official
235
         SELECT pv.dlocked
236
           INTO LOCKED
237
           FROM package_versions pv
238
          WHERE pv.pv_id = pvid;
239
 
240
         IF LOCKED = 'Y'
241
         THEN
242
            problemstring :=
243
                  problemstring
244
               || '- Package is locked and released.'
245
               || UTL_TCP.crlf;
246
         END IF;
247
 
248
         -- Cannot remove if used in BOMs
249
         SELECT COUNT (osc.prod_id)
250
           INTO ROWCOUNT
251
           FROM deployment_manager.os_contents osc
252
          WHERE osc.prod_id = pvid;
253
 
254
         IF ROWCOUNT > 0
255
         THEN
256
            problemstring :=
257
                  problemstring
258
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
259
               || UTL_TCP.crlf;
260
         END IF;
261
 
262
         -- Cannot remove if Referenced as build dependency
263
         SELECT COUNT (dep.pv_id)
264
           INTO ROWCOUNT
265
           FROM package_dependencies dep
266
          WHERE dep.dpv_id = pvid;
267
 
268
         IF ROWCOUNT > 0
269
         THEN
270
            problemstring :=
271
                  problemstring
272
               || '- Package is referenced by other package as build dependency.'
273
               || UTL_TCP.crlf;
274
         END IF;
275
 
276
         -- Cannot remove if Referenced as runtime dependency
277
         SELECT COUNT (rd.pv_id)
278
           INTO ROWCOUNT
279
           FROM runtime_dependencies rd
280
          WHERE rd.rtd_id = pvid;
281
 
282
         IF ROWCOUNT > 0
283
         THEN
284
            problemstring :=
285
                  problemstring
286
               || '- Package is referenced by other package as runtime dependency.'
287
               || UTL_TCP.crlf;
288
         END IF;
289
 
290
         -- Cannot remove if Referenced as patch
291
         SELECT COUNT (pp.pv_id)
292
           INTO ROWCOUNT
293
           FROM package_patches pp
294
          WHERE pp.patch_id = pvid;
295
 
296
         IF ROWCOUNT > 0
297
         THEN
298
            problemstring :=
299
                  problemstring
300
               || '- Package is used as patch by other package.'
301
               || UTL_TCP.crlf;
302
         END IF;
303
      END IF;
304
 
305
/*-------------------------------------------------------*/
306
      IF (problemstring IS NULL)
307
      THEN
308
         --- Remove From Work in Progress
309
         DELETE FROM work_in_progress wip
310
               WHERE wip.pv_id = pvid;
311
 
312
         --- Remove From Pending
313
         DELETE FROM planned pl
314
               WHERE pl.pv_id = pvid;
315
 
316
         --- Remove From Released area
317
         DELETE FROM release_content rc
318
               WHERE rc.pv_id = pvid;
319
 
320
         ---Remove From Package Processes
321
         DELETE FROM package_processes pp
322
               WHERE pp.pv_id = pvid;
323
 
324
         --- Remove Dependencies
325
         DELETE FROM package_dependencies dep
326
               WHERE dep.pv_id = pvid;
327
 
328
         DELETE FROM package_dependencies dep
329
               WHERE dep.dpv_id = pvid;
330
 
331
         --- Remove Runtime dependencies
332
         DELETE FROM runtime_dependencies rtd
333
               WHERE rtd.pv_id = pvid;
334
 
335
         DELETE FROM runtime_dependencies rtd
336
               WHERE rtd.rtd_id = pvid;
337
 
338
         --- Remove components
339
         DELETE FROM product_components pc
340
               WHERE pc.pv_id = pvid;
341
 
342
         DELETE FROM release_components rc
343
               WHERE rc.pv_id = pvid;
344
 
345
         --- Remove From Notification History
346
         DELETE FROM notification_history nh
347
               WHERE nh.pv_id = pvid;
348
 
349
         --- Remove From Ignore Warnings
350
         DELETE FROM ignore_warnings iw
351
               WHERE iw.pv_id = pvid;
352
 
353
         --- Remove From Additional Notes
354
         DELETE FROM additional_notes an
355
               WHERE an.pv_id = pvid;
356
 
357
         --- Remove From CQ Issues
358
         DELETE FROM cq_issues cq
359
               WHERE cq.pv_id = pvid;
360
 
361
         --- Remove from Package Patches
362
         DELETE FROM package_patches pp
363
               WHERE pp.pv_id = pvid;
364
 
365
         DELETE FROM package_patches pp
366
               WHERE pp.patch_id = pvid;
367
 
368
         --- Remove From Package Documents
369
         DELETE FROM package_documents pd
370
               WHERE pd.pv_id = pvid;
371
 
372
         --- Remove from Code Review
373
         DELETE FROM code_reviews cr
374
               WHERE cr.pv_id = pvid;
375
 
376
         --- Remove from Unit Tests
377
         DELETE FROM unit_tests ut
378
               WHERE ut.pv_id = pvid;
379
 
380
         --- Remove from Package BuildEnv
381
         DELETE FROM package_build_env pbe
382
               WHERE pbe.pv_id = pvid;
383
 
384
		 --- Remove from Package Build Info
385
		 DELETE FROM package_build_info pbi
386
		 	   WHERE pbi.pv_id = pvid;    
387
 
388
 
389
         --- Remove from Build Order
390
         DELETE FROM build_order bo
391
               WHERE bo.pv_id = pvid;
392
 
393
         --- Remove from Note Manager
394
         DELETE FROM note_manager nm
395
               WHERE nm.nid = pvid;
396
 
397
         --- Remove from Action log
398
         DELETE FROM action_log al
399
               WHERE al.pv_id = pvid;
400
 
401
		 --- Remove from Do Not Ripple 
402
		 DELETE FROM DO_NOT_RIPPLE dnr
403
		 	   WHERE dnr.PV_ID = pvid;
404
 
405
		 --- Remove from Jira Issues 
406
		 DELETE FROM JIRA_ISSUES jira
407
		 	   WHERE jira.PV_ID = pvid;
408
 
409
         --- Finally Remove From Package Versions
410
         --- Get Package name
411
         SELECT pv.pkg_id
412
           INTO pkgid
413
           FROM package_versions pv
414
          WHERE pv.pv_id = pvid;
415
 
416
         DELETE FROM package_versions pv
417
               WHERE pv.pv_id = pvid;
418
 
419
         --- Remove package name if not used any more
420
         SELECT COUNT (pv.pv_id)
421
           INTO ROWCOUNT
422
           FROM package_versions pv
423
          WHERE pv.pkg_id = pkgid;
424
 
425
         IF ROWCOUNT < 1
426
         THEN
427
            DELETE FROM PACKAGES pkg
428
                  WHERE pkg.pkg_id = pkgid;
429
         END IF;
430
      END IF;
431
   END;
432
 
433
/*-------------------------------------------------------------------------------------------------------*/
434
   PROCEDURE new_patch (
435
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
436
      nparentpvid        IN       NUMBER,
437
      spatchidlist       IN       VARCHAR2,
438
      nuserid            IN       NUMBER,
439
      returnpatchid      OUT      NUMBER
440
   )
441
   IS
442
      patchpv_id           NUMBER;
443
      parpkg_id            NUMBER;
444
      lastinstallorder     NUMBER;
445
      ispatchdlocked       package_versions.dlocked%TYPE;
446
      ssv_mm               package_versions.v_mm%TYPE;
447
      ssv_nmm              package_versions.v_nmm%TYPE;
448
      ssv_ext              package_versions.v_ext%TYPE;
449
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
450
                                                                          ();
451
 
452
      CURSOR parent_cur
453
      IS
454
         SELECT pv.*, pkg.pkg_name
455
           FROM package_versions pv, PACKAGES pkg
456
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
457
 
458
      parent_rec           parent_cur%ROWTYPE;
459
 
460
      CURSOR patch_cur
461
      IS
462
         SELECT pv.*, pg.pkg_name
463
           FROM package_versions pv, PACKAGES pg
464
          WHERE pv.pkg_id = parpkg_id
465
            AND pv.pkg_version = snewpatchversion
466
            AND pv.pkg_id = pg.pkg_id;
467
 
468
      patch_rec            patch_cur%ROWTYPE;
469
 
470
      CURSOR releases_cur
471
      IS
472
         SELECT rc.pv_id
473
           FROM release_content rc
474
          WHERE rc.pv_id = patch_rec.pv_id;
475
 
476
      releases_rec         releases_cur%ROWTYPE;
477
   BEGIN
478
      -- Get Last Install Order
479
      SELECT COUNT (*)
480
        INTO lastinstallorder
481
        FROM package_patches pp
482
       WHERE pp.pv_id = nparentpvid;
483
 
484
      -- Get parent details
485
      OPEN parent_cur;
486
 
487
      FETCH parent_cur
488
       INTO parent_rec;
489
 
490
      parpkg_id := parent_rec.pkg_id;
491
 
492
      -- Find if patch exists in database
493
      OPEN patch_cur;
494
 
495
      FETCH patch_cur
496
       INTO patch_rec;
497
 
498
      -- Parent must be official
499
      IF parent_rec.dlocked = 'Y'
500
      THEN
501
         IF patch_cur%NOTFOUND
502
         THEN
503
            ispatchdlocked := 'N';
504
 
505
            -- Create new patch version --
506
            SELECT seq_pv_id.NEXTVAL
507
              INTO patchpv_id
508
              FROM DUAL;
509
 
510
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
511
 
512
            INSERT INTO package_versions
513
                        (pv_id, 
514
pkg_id, pkg_version,
515
                         dlocked, created_stamp, creator_id,
516
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
517
                         src_path,
518
                         pv_description,
519
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
520
						 is_autobuildable
521
                        )
522
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
523
                         ispatchdlocked, ora_sysdate, nuserid,
524
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
525
                         parent_rec.src_path,
526
                            'This is a patch to '
527
                         || parent_rec.pkg_name
528
                         || ' '
529
                         || parent_rec.pkg_version,
530
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
531
                        );
532
 
533
            INSERT INTO package_patches
534
                        (pv_id, patch_id, install_order)
535
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
536
                       lastinstallorder + 1 AS install_order
537
                  FROM package_versions pv
538
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
539
 
540
            /* LOG ACTION */
541
            log_action (patchpv_id,
542
                        'new_version',
543
                        nuserid,
544
                        'Patch version created: ' || snewpatchversion
545
                       );
546
            log_action (nparentpvid,
547
                        'patch_add',
548
                        nuserid,
549
                        'New patch created and attached: ' || snewpatchversion
550
                       );
551
         ELSE
552
            patchpv_id := patch_rec.pv_id;
553
            ispatchdlocked := patch_rec.dlocked;
554
 
555
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
556
            OPEN releases_cur;
557
 
558
            FETCH releases_cur
559
             INTO releases_rec;
560
 
561
            IF releases_cur%NOTFOUND
562
            THEN
563
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
564
               UPDATE package_versions
565
                  SET is_patch = 'Y'
566
                WHERE pv_id = patchpv_id;
567
 
568
               INSERT INTO package_patches
569
                           (pv_id, patch_id, install_order)
570
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
571
                          lastinstallorder + 1 AS install_order
572
                     FROM package_versions pv
573
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
574
            END IF;
575
 
576
            CLOSE releases_cur;
577
 
578
            /* LOG ACTION */
579
            log_action (nparentpvid,
580
                        'patch_add',
581
                        nuserid,
582
                           'Patch version was found and attached: '
583
                        || snewpatchversion
584
                       );
585
         END IF;
586
      END IF;
587
 
588
      /* Create Patch Dependencies */
589
      opatchdepcollector := in_list_number (spatchidlist);
590
 
591
      -- Make sure patch is unofficial before altering its dependencies
592
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
593
      THEN
594
         -- Delete Existing Dependencies
595
         DELETE FROM package_dependencies dep
596
               WHERE dep.pv_id = patchpv_id;
597
 
598
         -- Insert new dependencies
599
         INSERT INTO package_dependencies
600
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
601
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
602
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
603
                   'L' AS build_type
604
              FROM package_versions pv
605
             WHERE pv.pv_id IN (
606
                      SELECT *
607
                        FROM TABLE
608
                                (CAST
609
                                    (opatchdepcollector AS relmgr_number_tab_t)
610
                                ));
611
      END IF;
612
 
613
      -- Return patch_id
614
      returnpatchid := patchpv_id;
615
 
616
      CLOSE parent_cur;
617
 
618
      CLOSE patch_cur;
619
   EXCEPTION
620
      WHEN DUP_VAL_ON_INDEX
621
      THEN
622
         raise_application_error (-20000,
623
                                     'Patch version '
624
                                  || snewpatchversion
625
                                  || ' already exist.'
626
                                 );
627
   END;
628
 
629
/*-------------------------------------------------------------------------------------------------------*/
630
   PROCEDURE obsolete_patch (
631
      patchid            IN   NUMBER,
632
      isobsolete         IN   CHAR,
633
      obsoletecomments   IN   VARCHAR2,
634
      userid             IN   NUMBER
635
   )
636
   IS
637
   BEGIN
638
      -- Update patch
639
      UPDATE package_versions pv
640
         SET pv.is_obsolete = isobsolete,
641
             pv.obsolete_comments = obsoletecomments
642
       WHERE pv.pv_id = patchid;
643
 
644
      /*
645
      -- Update patch children
646
      UPDATE PACKAGE_VERSIONS pv SET
647
      pv.IS_OBSOLETE = IsObsolete,
648
      pv.OBSOLETE_COMMENTS = ObsoleteComments
649
      WHERE pv.PV_ID IN (
650
                     SELECT DISTINCT dep.DPV_ID
651
                       FROM PACKAGE_DEPENDENCIES dep
652
                      WHERE dep.PV_ID = PatchId
653
                     );
654
 
655
 
656
      -- Update patch parent
657
      UPDATE PACKAGE_VERSIONS pv SET
658
      pv.IS_OBSOLETE = IsObsolete,
659
      pv.OBSOLETE_COMMENTS = ObsoleteComments
660
      WHERE pv.PV_ID IN (
661
                     SELECT DISTINCT dep.PV_ID
662
                       FROM PACKAGE_DEPENDENCIES dep
663
                      WHERE dep.DPV_ID = PatchId
664
                     );
665
 
666
         */
667
 
668
      /* LOG ACTION */
669
      IF isobsolete IS NOT NULL
670
      THEN
671
         log_action (patchid,
672
                     'patch_obsolete',
673
                     userid,
674
                     'Obsolete patch. ' || obsoletecomments
675
                    );
676
      ELSE
677
         log_action (patchid,
678
                     'patch_obsolete',
679
                     userid,
680
                     'Undo patch obsolete.'
681
                    );
682
      END IF;
683
   END;
684
 
685
/*-------------------------------------------------------------------------------------------------------*/
686
   PROCEDURE obsolete_patches (
687
      spatchidlist       IN   VARCHAR2,
688
      isobsolete         IN   CHAR,
689
      obsoletecomments   IN   VARCHAR2,
690
      userid             IN   NUMBER
691
   )
692
   IS
693
   BEGIN
694
      /*--------------- Business Rules Here -------------------*/
695
      IF spatchidlist IS NULL
696
      THEN
697
         raise_application_error (-20000,
698
                                  'Please select one or more Patches.'
699
                                 );
700
      END IF;
701
 
702
/*-------------------------------------------------------*/
703
 
704
      -- Update patch
705
      UPDATE package_versions pv
706
         SET pv.is_obsolete = isobsolete,
707
             pv.obsolete_comments = obsoletecomments
708
       WHERE pv.pv_id IN (
709
                SELECT *
710
                  FROM THE
711
                          (SELECT CAST
712
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
713
                                     )
714
                             FROM DUAL
715
                          ));
716
   /*
717
   -- Update patch children
718
   UPDATE PACKAGE_VERSIONS pv SET
719
   pv.IS_OBSOLETE = IsObsolete,
720
   pv.OBSOLETE_COMMENTS = ObsoleteComments
721
   WHERE pv.PV_ID IN (
722
                  SELECT DISTINCT dep.DPV_ID
723
                    FROM PACKAGE_DEPENDENCIES dep
724
                   WHERE dep.PV_ID = PatchId
725
                  );
726
 
727
 
728
   -- Update patch parent
729
   UPDATE PACKAGE_VERSIONS pv SET
730
   pv.IS_OBSOLETE = IsObsolete,
731
   pv.OBSOLETE_COMMENTS = ObsoleteComments
732
   WHERE pv.PV_ID IN (
733
                  SELECT DISTINCT dep.PV_ID
734
                    FROM PACKAGE_DEPENDENCIES dep
735
                   WHERE dep.DPV_ID = PatchId
736
                  );
737
 
738
      */
739
 
740
   /* LOG ACTION
741
   IF IsObsolete IS NOT NULL THEN
742
         Log_Action ( PatchId, 'patch_obsolete', UserId,
743
                  'Obsolete patch. '|| ObsoleteComments );
744
   ELSE
745
      Log_Action ( PatchId, 'patch_obsolete', UserId,
746
                  'Undo patch obsolete.' );
747
   END IF;  */
748
   END;
749
 
750
/*-------------------------------------------------------------------------------------------------------*/
751
 
752
PROCEDURE add_process (
753
      nprocid         IN   processes.proc_id%TYPE,
754
      shealthtag      IN   processes.proc_name%TYPE,
755
      sprocdesc       IN   processes.proc_description%TYPE,
756
      scmdinterface   IN   processes.run_as%TYPE,
757
      spkgowner       IN   processes.pkg_owner%TYPE,
758
      sisinterface    IN   processes.is_interface%TYPE,
759
      npvid           IN   package_processes.pv_id%TYPE,
760
      nuserid         IN   NUMBER
761
   )
762
   IS
763
      pkgname   VARCHAR2 (100);
764
/*Rupesh Release on 17/05/2006*/
765
   BEGIN
766
      INSERT INTO processes
767
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
768
                   is_interface
769
                  )
770
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
771
                   sisinterface
772
                  );
773
 
774
      pk_package.add_package_process (nprocid, npvid, nuserid);
775
   END;
776
 
777
/*-------------------------------------------------------------------------------------------------------*/
778
   PROCEDURE add_package_process (
779
      nprocidlist   IN   VARCHAR2,
780
      npvid         IN   package_processes.pv_id%TYPE,
781
      nuserid       IN   NUMBER
782
   )
783
   IS
784
      processname   VARCHAR2 (4000);
785
 
786
/*Rupesh Release on 17/05/2006*/
787
      CURSOR proc_cur
788
      IS
789
         SELECT prc.proc_id
790
           FROM processes prc
791
          WHERE prc.proc_id IN (
792
                   SELECT *
793
                     FROM THE
794
                             (SELECT CAST
795
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
796
                                        )
797
                                FROM DUAL
798
                             ));
799
 
800
      proc_rec      proc_cur%ROWTYPE;
801
   BEGIN
802
      OPEN proc_cur;
803
 
804
      FETCH proc_cur
805
       INTO proc_rec;
806
 
807
      WHILE proc_cur%FOUND
808
      LOOP
809
         INSERT INTO package_processes
810
                     (proc_id, pv_id
811
                     )
812
              VALUES (proc_rec.proc_id, npvid
813
                     );
814
 
815
         SELECT prc.proc_name
816
           INTO processname
817
           FROM processes prc
818
          WHERE prc.proc_id = proc_rec.proc_id;
819
 
820
         -- Log Action --
821
         log_action (npvid,
822
                     'process_add',
823
                     nuserid,
824
                     'Added process with health tag ' || processname
825
                    );
826
 
827
         FETCH proc_cur
828
          INTO proc_rec;
829
      END LOOP;
830
   END;
831
 
832
/*-------------------------------------------------------------------------------------------------------*/
833
   PROCEDURE remove_process (
834
      nprocid   IN   package_processes.proc_id%TYPE,
835
      npvid     IN   package_processes.pv_id%TYPE,
836
      nuserid   IN   NUMBER
837
   )
838
   IS
839
      processname   VARCHAR2 (4000);
840
/* Rupesh Release on 17/05/2006*/
841
   BEGIN
842
      SELECT prc.proc_name
843
        INTO processname
844
        FROM processes prc
845
       WHERE prc.proc_id = nprocid;
846
 
847
      DELETE FROM package_processes
848
            WHERE proc_id = nprocid AND pv_id = npvid;
849
 
850
      -- Log Action --
851
      log_action (npvid,
852
                  'process_remove',
853
                  nuserid,
854
                  'Removed process with health tag ' || processname
855
                 );
856
   END;
857
/*-------------------------------------------------------------------------------------------------------*/
858
  /* 
859
  Author: Rupesh Solanki
860
  Purpose: To move package versions from one release to another
861
  Release: 4th September 2006 
862
 
863
  */
864
  PROCEDURE move_package (
865
   	  npvid  			  IN package_versions.pv_id%TYPE,
866
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
867
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
868
	  nuserid			  IN NUMBER	
869
  )	
870
  IS	
871
 
872
  oldrtag_name VARCHAR2(4000);
873
  newrtag_name VARCHAR2(4000);
874
 
875
 
876
 
877
  BEGIN
878
 
879
 
880
  SELECT rtag_name into oldrtag_name
881
  FROM RELEASE_TAGS
882
  WHERE rtag_id = nrtagid;
883
 
884
  SELECT rtag_name into newrtag_name
885
  FROM RELEASE_TAGS
886
  WHERE rtag_id = nnewrtagid;
887
 
888
  /* Table Work In Progress*/
889
  	   UPDATE WORK_IN_PROGRESS
890
	   SET RTAG_ID = nnewrtagid
891
	   WHERE RTAG_ID = nrtagid
892
	   AND PV_ID = npvid;
893
 
894
  /* Table PLANNED*/	
895
  	   UPDATE PLANNED
896
	   SET RTAG_ID = nnewrtagid
897
	   WHERE RTAG_ID = nrtagid
898
	   AND PV_ID = npvid;   
899
 
900
      -- Log Action --
901
      log_action (npvid,
902
                  'move_package_version',
903
                  nuserid,
904
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
905
                 );  	   	     
906
 
907
 
908
  END;
909
 
910
/*-------------------------------------------------------------------------------------------------------*/
911
PROCEDURE modify_product_state (
912
   	  npvid IN package_versions.pv_id%TYPE,
913
	  nstateid IN product_states.state_id%TYPE,
914
	  nuserid IN NUMBER
915
   ) IS
916
 
917
   sStateName VARCHAR(4000);
918
 
919
  /* 
920
  Author: Rupesh Solanki
921
  Purpose: To modify the product state from integration to test to deployment
922
  Release: 25th January 2006 
923
  */   
924
 
925
  BEGIN
926
 
927
  UPDATE PACKAGE_VERSIONS
928
  SET PRODUCT_STATE = nstateid
929
  WHERE PV_ID = npvid;
930
 
931
 
932
  SELECT STATE INTO sStateName
933
  FROM PRODUCT_STATES 
934
  WHERE STATE_ID = nstateid;
935
 
936
  -- Log Action --
937
  log_action (npvid,
938
              'modify_product_state',
939
               nuserid,
940
               sStateName
941
              );  
942
 
943
 
944
  END;			  	   	     
945
/*-------------------------------------------------------------------------------------------------------*/   
946
END pk_package_Test;
947
/
948
ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
949
  COMPILE BODY 
950
    PLSQL_OPTIMIZE_LEVEL=  2
951
    PLSQL_CODE_TYPE=  INTERPRETED
952
    PLSQL_DEBUG=  FALSE
953
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:45'
954
/