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_ARCHIVE" 
2
IS
3
/*
4
------------------------------
5
||  Author:  Rupesh Solanki
6
||  Date:    26 October 2006
7
||  Version:   1.0
8
------------------------------
9
*/
10
/*---------------------------*/
11
PROCEDURE populate_packages_table IS
12
 
13
BEGIN
14
		  INSERT INTO archive_manager.PACKAGES
15
		  (
16
		  select * from packages where pkg_id not in 
17
		  		  (select pkg_id from archive_manager.packages)
18
		  );
19
 
20
          INSERT INTO archive_manager.PROCESSES
21
          (
22
          select * from processes where proc_id not in 
23
            (select proc_id from archive_manager.processes)
24
          );
25
 
26
 
27
 
28
END;
29
/*-------------------------------------------------------------------------------------------------------*/
30
   PROCEDURE populate_archive_data_table (
31
      nrtagid   IN   release_tags.rtag_id%TYPE
32
   )
33
   IS
34
/*
35
Reason: To populate the archive_data table with information regarding the
36
         number of package versions that exist in other releases.
37
*/
38
      numcount      NUMBER;
39
      numusedby     NUMBER;
40
      numruntime    NUMBER;
41
 
42
      /* Get all the package versions in the release */
43
      CURSOR archive_cur
44
      IS
45
         SELECT pv_id
46
           FROM release_content
47
          WHERE rtag_id = nrtagid;
48
 
49
      archive_rec   archive_cur%ROWTYPE;
50
   BEGIN
51
/*--------------- Business Rules Here -------------------*/
52
/*-------------------------------------------------------*/
53
      OPEN archive_cur;
54
 
55
      FETCH archive_cur
56
       INTO archive_rec;
57
 
58
      WHILE archive_cur%FOUND
59
      LOOP
60
        /* How many packages depend on this package version? */
61
         SELECT COUNT (*)
62
           INTO numusedby
63
           FROM package_dependencies
64
          WHERE dpv_id = archive_rec.pv_id;
65
 
66
        /* How many project releases use this package version?  */
67
         SELECT COUNT (*)
68
           INTO numcount
69
           FROM release_content
70
          WHERE pv_id = archive_rec.pv_id;
71
 
72
        /* How many packages have this package version as runtime
73
        dependency? */
74
         SELECT COUNT (*)
75
           INTO numruntime
76
           FROM runtime_dependencies
77
          WHERE rtd_id = archive_rec.pv_id;
78
 
79
        /* Insert into the archive_data table if they are not runtime dependant
80
        and package dependant and they exist in that particular release only*/
81
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
82
         THEN
83
            INSERT INTO archive_data
84
                        (rtag_id, pv_id
85
                        )
86
                 VALUES (nrtagid, archive_rec.pv_id
87
                        );
88
         END IF;
89
 
90
         FETCH archive_cur
91
          INTO archive_rec;
92
      END LOOP;
93
   END;
94
 
95
/*-------------------------------------------------------------------------------------------------------*/
96
   PROCEDURE migrate_pv_to_archive_schema (
97
      nrtagid   IN   release_tags.rtag_id%TYPE
98
   )
99
   IS
100
   BEGIN
101
 
102
      /* MIGRATION - PACKAGE_VERSIONS */
103
      INSERT INTO archive_manager.package_versions
104
         SELECT *
105
           FROM package_versions
106
          WHERE pv_id IN (SELECT pv_id
107
                            FROM archive_data);
108
 
109
      /* MIGRATION - PACKAGE_BUILD_ENV */
110
      INSERT INTO archive_manager.package_build_env
111
         SELECT *
112
           FROM package_build_env
113
          WHERE pv_id IN (SELECT pv_id
114
                            FROM archive_data);
115
 
116
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
117
      DELETE FROM package_build_env
118
            WHERE pv_id IN (SELECT pv_id
119
                              FROM archive_data);
120
 
121
      /* MIGRATION - PACKAGE_BUILD_INFO */
122
      INSERT INTO archive_manager.package_build_info
123
         SELECT *
124
           FROM package_build_info
125
          WHERE pv_id IN (SELECT pv_id
126
                            FROM archive_data);
127
 
128
      /* PURGE DATA FROM PACKAGE_BUILD_info */
129
      DELETE FROM package_build_info
130
            WHERE pv_id IN (SELECT pv_id
131
                              FROM archive_data);							  
132
 
133
      /* MIGRATION - UNIT_TESTS  */
134
      INSERT INTO archive_manager.unit_tests
135
         SELECT *
136
           FROM unit_tests
137
          WHERE pv_id IN (SELECT pv_id
138
                            FROM archive_data);
139
 
140
      /* PURGE DATA FROM UNIT_TESTS*/
141
      DELETE FROM unit_tests
142
            WHERE pv_id IN (SELECT pv_id
143
                              FROM archive_data);
144
 
145
      /* MIGRATION - PACKAGE_PROCESSES */
146
      INSERT INTO archive_manager.package_processes
147
         SELECT *
148
           FROM package_processes
149
          WHERE pv_id IN (SELECT pv_id
150
                            FROM archive_data);
151
 
152
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
153
      DELETE FROM package_processes
154
            WHERE pv_id IN (SELECT pv_id
155
                              FROM archive_data);
156
 
157
      /* MIGRATION - PACKAGE_DEPENDENCIES */
158
      INSERT INTO archive_manager.package_dependencies
159
         SELECT *
160
           FROM package_dependencies
161
          WHERE pv_id IN (SELECT pv_id
162
                            FROM archive_data);
163
 
164
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
165
      DELETE FROM package_dependencies
166
            WHERE pv_id IN (SELECT pv_id
167
                              FROM archive_data);
168
 
169
      /* MIGRATION - CODE_REVIEWS */
170
      INSERT INTO archive_manager.code_reviews
171
         SELECT *
172
           FROM code_reviews
173
          WHERE pv_id IN (SELECT pv_id
174
                            FROM archive_data);
175
 
176
      /* PURGE DATA FROM CODE_REVIEWS*/
177
      DELETE FROM code_reviews
178
            WHERE pv_id IN (SELECT pv_id
179
                              FROM archive_data);
180
 
181
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
182
      INSERT INTO archive_manager.runtime_dependencies
183
         SELECT *
184
           FROM runtime_dependencies
185
          WHERE pv_id IN (SELECT pv_id
186
                            FROM archive_data);
187
 
188
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
189
      DELETE FROM runtime_dependencies
190
            WHERE pv_id IN (SELECT pv_id
191
                              FROM archive_data);
192
 
193
      /* MIGRATION - PACKAGE_DOCUMENTS */
194
      INSERT INTO archive_manager.package_documents
195
         SELECT *
196
           FROM package_documents
197
          WHERE pv_id IN (SELECT pv_id
198
                            FROM archive_data);
199
 
200
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
201
      DELETE FROM package_documents
202
            WHERE pv_id IN (SELECT pv_id
203
                              FROM archive_data);
204
 
205
      /* MIGRATION - PACKAGE_PATCHES */
206
      INSERT INTO archive_manager.package_patches
207
         SELECT *
208
           FROM package_patches
209
          WHERE pv_id IN (SELECT pv_id
210
                            FROM archive_data);
211
 
212
      /* PURGE DATA FROM PACKAGE_PATCHES*/
213
      DELETE FROM package_patches
214
            WHERE pv_id IN (SELECT pv_id
215
                              FROM archive_data);
216
 
217
      /* MIGRATION - CQ_ISSUES */
218
      INSERT INTO archive_manager.cq_issues
219
         SELECT *
220
           FROM cq_issues
221
          WHERE pv_id IN (SELECT pv_id
222
                            FROM archive_data);
223
 
224
      /* PURGE DATA FROM CQ_ISSUES*/
225
      DELETE FROM cq_issues
226
            WHERE pv_id IN (SELECT pv_id
227
                              FROM archive_data);
228
 
229
      /* MIGRATION - ADDITIONAL_NOTES */
230
      INSERT INTO archive_manager.additional_notes
231
         SELECT *
232
           FROM additional_notes
233
          WHERE pv_id IN (SELECT pv_id
234
                            FROM archive_data);
235
 
236
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
237
      DELETE FROM additional_notes
238
            WHERE pv_id IN (SELECT pv_id
239
                              FROM archive_data);
240
 
241
      /* MIGRATION - RELEASE_COMPONENTS */
242
      INSERT INTO archive_manager.release_components
243
         SELECT *
244
           FROM release_components
245
          WHERE pv_id IN (SELECT pv_id
246
                            FROM archive_data);
247
 
248
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
249
      DELETE FROM release_components
250
            WHERE pv_id IN (SELECT pv_id
251
                              FROM archive_data);
252
 
253
      /* MIGRATION - IGNORE_WARNINGS */
254
      INSERT INTO archive_manager.ignore_warnings
255
         SELECT *
256
           FROM ignore_warnings
257
          WHERE pv_id IN (SELECT pv_id
258
                            FROM 
259
archive_data);
260
 
261
      /* PURGE DATA FROM IGNORE_WARNINGS*/
262
      DELETE FROM ignore_warnings
263
            WHERE pv_id IN (SELECT pv_id
264
                              FROM archive_data);
265
 
266
      /* PURGE DATA FROM WORK_IN_PROGRESS */
267
      DELETE FROM work_in_progress
268
            WHERE rtag_id = nrtagid;
269
 
270
      /* PURGE DATA FROM PLANNED */
271
      DELETE FROM planned
272
            WHERE rtag_id = nrtagid;
273
 
274
      /* MIGRATION - JIRA_ISSUES */
275
      INSERT INTO archive_manager.jira_issues
276
         SELECT *
277
           FROM jira_issues
278
          WHERE pv_id IN (SELECT pv_id
279
                            FROM archive_data);
280
 
281
      /* PURGE DATA FROM JIRA_ISSUES*/
282
      DELETE FROM jira_issues
283
            WHERE pv_id IN (SELECT pv_id
284
                              FROM archive_data);
285
 
286
      /* MIGRATION - PRODUCT_COMPONENTS */
287
      INSERT INTO archive_manager.product_components
288
         SELECT *
289
           FROM product_components
290
          WHERE pv_id IN (SELECT pv_id
291
                            FROM archive_data);
292
 
293
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
294
      DELETE FROM product_components
295
            WHERE pv_id IN (SELECT pv_id
296
                              FROM archive_data);
297
 
298
      /* MIGRATION - ACTION_LOG */
299
      INSERT INTO archive_manager.action_log
300
         SELECT *
301
           FROM action_log
302
          WHERE pv_id IN (SELECT pv_id
303
                            FROM archive_data);
304
 
305
      /* PURGE DATA FROM ACTION_LOG*/
306
      DELETE FROM action_log
307
            WHERE pv_id IN (SELECT pv_id
308
                              FROM archive_data);
309
 
310
 
311
   END;
312
 
313
/*-------------------------------------------------------------------------------------------------------*/
314
   PROCEDURE migrate_rtag_to_archive_schema (
315
      nrtagid   IN   release_tags.rtag_id%TYPE
316
   )
317
   IS
318
   BEGIN
319
      /* MIGRATION - DO_NOT_RIPPLE */
320
      INSERT INTO archive_manager.do_not_ripple
321
         SELECT *
322
           FROM do_not_ripple dnp
323
          WHERE rtag_id = nrtagid;
324
 
325
      /* PURGE DATA FROM DO_NOT_RIPPLE */
326
      DELETE FROM do_not_ripple
327
            WHERE rtag_id = nrtagid;
328
 
329
      /* MIGRATION - ADVISORY_RIPPLES*/
330
      INSERT INTO archive_manager.advisory_ripples
331
         SELECT *
332
           FROM advisory_ripple dnp
333
          WHERE rtag_id = nrtagid;
334
 
335
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
336
      DELETE FROM advisory_ripple
337
            WHERE rtag_id = nrtagid;			
338
 
339
      /* MIGRATION - RELEASE_CONTENT */
340
      INSERT INTO archive_manager.release_content
341
         SELECT *
342
           FROM release_content
343
          WHERE rtag_id = nrtagid;
344
 
345
      /* PURGE DATA FROM RELEASE_CONTENT*/
346
      DELETE FROM release_content
347
            WHERE rtag_id = nrtagid;
348
 
349
      /* MIGRATION - NOTIFICATION_HISTORY */
350
      INSERT INTO archive_manager.notification_history
351
         SELECT *
352
           FROM notification_history
353
          WHERE rtag_id = nrtagid;
354
 
355
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
356
      DELETE FROM notification_history
357
            WHERE rtag_id = nrtagid;
358
 
359
      /* MIGRATION - BUILD_ORDER   */
360
      INSERT INTO archive_manager.build_order
361
         SELECT *
362
           FROM build_order
363
          WHERE rtag_id = nrtagid;
364
 
365
      /* PURGE DATA FROM BUILD_ORDER*/
366
      DELETE FROM build_order
367
            WHERE rtag_id = nrtagid;
368
 
369
      /* MIGRATION - PROJECT_ACTION_LOG */
370
      INSERT INTO archive_manager.project_action_log
371
         SELECT *
372
           FROM project_action_log
373
          WHERE rtag_id = nrtagid;
374
 
375
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
376
      DELETE FROM project_action_log
377
            WHERE rtag_id = nrtagid;
378
 
379
      /* MIGRATION - DEPRECATED_PACKAGES */
380
      INSERT INTO archive_manager.deprecated_packages
381
         SELECT *
382
           FROM deprecated_packages
383
          WHERE rtag_id = nrtagid;
384
 
385
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
386
      DELETE FROM deprecated_packages
387
            WHERE rtag_id = nrtagid;
388
 
389
      /* MIGRATION - RELEASE_TAGS */
390
      INSERT INTO archive_manager.release_tags
391
         SELECT *
392
           FROM release_tags
393
          WHERE rtag_id = nrtagid;
394
 
395
 
396
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
397
      DELETE FROM package_versions
398
            WHERE pv_id IN (SELECT pv_id
399
                              FROM archive_data);
400
 
401
 
402
   END;
403
 
404
/*-------------------------------------------------------------------------------------------------------*/
405
   PROCEDURE clean_up_archive_data_table (
406
      nrtagid   IN   release_tags.rtag_id%TYPE
407
   )
408
   IS
409
   BEGIN
410
      /* Cleaning Up The Archive_Data Table */
411
      DELETE FROM archive_data
412
            WHERE rtag_id = nrtagid;
413
   END;
414
 
415
/*-------------------------------------------------------------------------------------------------------*/
416
   PROCEDURE write_action_log (
417
      nuserid   IN   NUMBER,
418
      nrtagid   IN   release_tags.rtag_id%TYPE
419
   )
420
   IS
421
   BEGIN
422
      /* Write Into Archive_Action_Log Table */
423
      INSERT INTO archive_action_log
424
                  (user_id, date_time_stamp, rtag_id,
425
                   description
426
                  )
427
           VALUES (nuserid, ora_sysdatetime, nrtagid,
428
                   'Release has been archived to the ARCHIVE_MANAGER schema'
429
                  );
430
   END;
431
/*-------------------------------------------------------------------------------------------------------*/
432
END pk_archive; 
433
/
434
ALTER PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" 
435
  COMPILE BODY 
436
    PLSQL_OPTIMIZE_LEVEL=  2
437
    PLSQL_CODE_TYPE=  INTERPRETED
438
    PLSQL_DEBUG=  TRUE
439
 REUSE SETTINGS TIMESTAMP '2008-02-18 13:19:10'
440
/