Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
224 hknight 1
-- CONNECT RELEASE_MANAGER
2
-- new object type path is: SCHEMA_EXPORT/USER
3
-- CONNECT SYSTEM
4
 CREATE USER "RELEASE_MANAGER" IDENTIFIED BY VALUES '1F0884EAE574CCCE'
5
      DEFAULT TABLESPACE "USERS"
6
      TEMPORARY TABLESPACE "TEMP";
7
 
8
-- new object type path is: SCHEMA_EXPORT/TABLESPACE_QUOTA
9
DECLARE 
10
  TEMP_COUNT NUMBER; 
11
  SQLSTR VARCHAR2(200); 
12
BEGIN 
13
  SQLSTR := 'ALTER USER "RELEASE_MANAGER" QUOTA UNLIMITED ON "USERS"';
14
  EXECUTE IMMEDIATE SQLSTR;
15
EXCEPTION 
16
  WHEN OTHERS THEN
17
    IF SQLCODE = -30041 THEN 
18
      SQLSTR := 'SELECT COUNT(*) FROM USER_TABLESPACES 
19
              WHERE TABLESPACE_NAME = ''USERS'' AND CONTENTS = ''TEMPORARY''';
20
      EXECUTE IMMEDIATE SQLSTR INTO TEMP_COUNT;
21
      IF TEMP_COUNT = 1 THEN RETURN; 
22
      ELSE RAISE; 
23
      END IF;
24
    ELSE
25
      RAISE;
26
    END IF;
27
END;
28
/
29
 
30
-- new object type path is: SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
31
-- CONNECT RELEASE_MANAGER
32
 
33
BEGIN 
34
sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'), export_db_name=>'RELMAND1', inst_scn=>'192130887');
35
COMMIT; 
36
END; 
37
/ 
38
 
39
-- new object type path is: SCHEMA_EXPORT/SYNONYM/SYNONYM
40
CREATE  SYNONYM "RELEASE_MANAGER"."APPLICATIONS" FOR "ACCESS_MANAGER"."APPLICATIONS";
41
 
42
CREATE  SYNONYM "RELEASE_MANAGER"."APPLICATION_PAGES" FOR "ACCESS_MANAGER"."APPLICATION_PAGES";
43
 
44
CREATE  SYNONYM "RELEASE_MANAGER"."CONTROL_OBJECTS" FOR "ACCESS_MANAGER"."CONTROL_OBJECTS";
45
 
46
CREATE  SYNONYM "RELEASE_MANAGER"."DATA_PERMISSIONS" FOR "ACCESS_MANAGER"."DATA_PERMISSIONS";
47
 
48
CREATE  SYNONYM "RELEASE_MANAGER"."DATA_TABLES" FOR "ACCESS_MANAGER"."DATA_TABLES";
49
 
50
CREATE  SYNONYM "RELEASE_MANAGER"."PAGE_CONTROL_OBJECTS" FOR "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS";
51
 
52
CREATE  SYNONYM "RELEASE_MANAGER"."PERMISSION_TYPES" FOR "ACCESS_MANAGER"."PERMISSION_TYPES";
53
 
54
CREATE  SYNONYM "RELEASE_MANAGER"."PK_AMUTILS" FOR "ACCESS_MANAGER"."PK_AMUTILS";
55
 
56
CREATE  SYNONYM "RELEASE_MANAGER"."PK_SECURITY" FOR "ACCESS_MANAGER"."PK_SECURITY";
57
 
58
CREATE  SYNONYM "RELEASE_MANAGER"."ROLES" FOR "ACCESS_MANAGER"."ROLES";
59
 
60
CREATE  SYNONYM "RELEASE_MANAGER"."ROLE_PRIVILEGES" FOR "ACCESS_MANAGER"."ROLE_PRIVILEGES";
61
 
62
CREATE  SYNONYM "RELEASE_MANAGER"."USERS" FOR "ACCESS_MANAGER"."USERS";
63
 
64
CREATE  SYNONYM "RELEASE_MANAGER"."USER_APPLICATIONS" FOR "ACCESS_MANAGER"."USER_APPLICATIONS";
65
 
66
CREATE  SYNONYM "RELEASE_MANAGER"."USER_ROLES" FOR "ACCESS_MANAGER"."USER_ROLES";
67
 
68
-- new object type path is: SCHEMA_EXPORT/TYPE/TYPE_SPEC
69
CREATE TYPE "RELEASE_MANAGER"."RELMGR_NUMBER_TAB_T" 
70
  OID 'B3A08BE610F011D8BD1F00104B0E428C' as TABLE of NUMBER
71
/
72
 
73
ALTER TYPE "RELEASE_MANAGER"."RELMGR_NUMBER_TAB_T" 
74
  COMPILE SPECIFICATION 
75
    PLSQL_OPTIMIZE_LEVEL=  2
76
    PLSQL_CODE_TYPE=  INTERPRETED
77
    PLSQL_DEBUG=  FALSE
78
/
79
 
80
CREATE TYPE "RELEASE_MANAGER"."RELMGR_VARCHAR2_TAB_T" 
81
  OID 'F7327D0030312415E0340003BA71070D' 
82
as TABLE of VARCHAR2(4000)
83
/
84
 
85
ALTER TYPE "RELEASE_MANAGER"."RELMGR_VARCHAR2_TAB_T" 
86
  COMPILE SPECIFICATION 
87
    PLSQL_OPTIMIZE_LEVEL=  2
88
    PLSQL_CODE_TYPE=  INTERPRETED
89
    PLSQL_DEBUG=  FALSE
90
/
91
 
92
CREATE TYPE "RELEASE_MANAGER"."TDICTIONARY" 
93
  OID 'F7327D00302E2415E0340003BA71070D' AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
94
/
95
 
96
ALTER TYPE "RELEASE_MANAGER"."TDICTIONARY" 
97
  COMPILE SPECIFICATION 
98
    PLSQL_OPTIMIZE_LEVEL=  2
99
    PLSQL_CODE_TYPE=  INTERPRETED
100
    PLSQL_DEBUG=  FALSE
101
/
102
 
103
-- new object type path is: SCHEMA_EXPORT/SEQUENCE/SEQUENCE
104
 CREATE SEQUENCE  "RELEASE_MANAGER"."MICROSOFTSEQDTPROPERTIES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 50 NOORDER  NOCYCLE ;
105
 
106
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 21669 CACHE 20 ORDER  NOCYCLE ;
107
 
108
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 2221 CACHE 20 ORDER  NOCYCLE ;
109
 
110
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_GBE_ID"  MINVALUE 40 MAXVALUE 9999999999999999999999990 INCREMENT BY 10 START WITH 840 CACHE 20 ORDER  NOCYCLE ;
111
 
112
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_GROUP_EMAIL_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 722 CACHE 20 NOORDER  NOCYCLE ;
113
 
114
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_MSG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 402 CACHE 20 ORDER  NOCYCLE ;
115
 
116
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 28845 CACHE 20 ORDER  NOCYCLE ;
117
 
118
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 481 CACHE 20 ORDER  NOCYCLE ;
119
 
120
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 157986 CACHE 20 ORDER  NOCYCLE ;
121
 
122
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 4023 CACHE 20 ORDER  NOCYCLE ;
123
 
124
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 9763 CACHE 20 ORDER  NOCYCLE ;
125
 
126
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 16741 CACHE 20 ORDER  NOCYCLE ;
127
 
128
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 221309 CACHE 20 ORDER  NOCYCLE ;
129
 
130
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 93390 CACHE 20 ORDER  NOCYCLE ;
131
 
132
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_USER_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3961 CACHE 20 ORDER  NOCYCLE ;
133
 
134
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_VIEW_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3701 CACHE 20 ORDER  NOCYCLE ;
135
 
136
 CREATE SEQUENCE  "RELEASE_MANAGER"."SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 6582 CACHE 20 ORDER  NOCYCLE ;
137
 
138
-- new object type path is: SCHEMA_EXPORT/TABLE/TABLE
139
CREATE TABLE "RELEASE_MANAGER"."ACTION_LOG" 
140
   (	"USER_ID" NUMBER NOT NULL ENABLE, 
141
	"ACTION_DATETIME" DATE NOT NULL ENABLE, 
142
	"PV_ID" NUMBER NOT NULL ENABLE, 
143
	"DESCRIPTION" VARCHAR2(4000), 
144
	"ACTTYPE_ID" NUMBER NOT NULL ENABLE
145
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
146
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
147
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
148
  TABLESPACE "USERS" ;
149
 
150
CREATE TABLE "RELEASE_MANAGER"."ACTION_TYPE" 
151
   (	"ACTTYPE_ID" NUMBER NOT NULL ENABLE, 
152
	"NAME" VARCHAR2(255) NOT NULL ENABLE, 
153
	"DESCRIPTION" VARCHAR2(4000)
154
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
155
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
156
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
157
  TABLESPACE "USERS" ;
158
 
159
CREATE TABLE "RELEASE_MANAGER"."ADDITIONAL_NOTES" 
160
   (	"NOTE_ID" NUMBER NOT NULL ENABLE, 
161
	"PV_ID" NUMBER NOT NULL ENABLE, 
162
	"NOTE_TITLE" VARCHAR2(2000) NOT NULL ENABLE, 
163
	"NOTE_BODY" VARCHAR2(4000), 
164
	"MOD_DATE" DATE NOT NULL ENABLE, 
165
	"MOD_USER" NUMBER NOT NULL ENABLE
166
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
167
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
168
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
169
  TABLESPACE "USERS" ;
170
 
171
CREATE TABLE "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" 
172
   (	"BE_ID" NUMBER NOT NULL ENABLE, 
173
	"BE_NAME" VARCHAR2(255) NOT NULL ENABLE
174
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
175
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
176
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
177
  TABLESPACE "USERS" ;
178
 
179
CREATE TABLE "RELEASE_MANAGER"."BUILD_ENV_DOCUMENTS" 
180
   (	"BE_ID" NUMBER NOT NULL ENABLE, 
181
	"DOC_NUM" VARCHAR2(255) NOT NULL ENABLE
182
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
183
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
184
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
185
  TABLESPACE "USERS" ;
186
 
187
CREATE TABLE "RELEASE_MANAGER"."CODE_REVIEWS" 
188
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
189
	"DATE_OF_REVIEW" DATE, 
190
	"TIME_SPENT" FLOAT(126), 
191
	"REVIEW_REASON" VARCHAR2(4000), 
192
	"RTEAM_DOMAIN_EXPERT" VARCHAR2(4000), 
193
	"RTEAM_LANGUAGE_EXPERT" VARCHAR2(4000), 
194
	"RTEAM_PEER_DEVELOPER" VARCHAR2(4000), 
195
	"RTEAM_AUTHOR" VARCHAR2(4000), 
196
	"FILES_REVIEWED" VARCHAR2(4000), 
197
	"REVIEW_RESULTS" NUMBER, 
198
	"ISSUES_RAISED" VARCHAR2(4000), 
199
	"REVIEW_COMMENTS" VARCHAR2(4000), 
200
	"FNC_S_MEETS_FUNCTIONALITY" CHAR(1), 
201
	"FNC_C_MEETS_FUNCTIONALITY" VARCHAR2(4000), 
202
	"RBS_S_BOUND_COND_HANDLED" CHAR(1), 
203
	"RBS_C_BOUND_COND_HANDLED" VARCHAR2(4000), 
204
	"RBS_S_CLASS_INTERF_PRECOND" CHAR(1), 
205
	"RBS_C_CLASS_INTERF_PRECOND" VARCHAR2(4000), 
206
	"RBS_S_NO_UNITIALISED_DATE" CHAR(1), 
207
	"RBS_C_NO_UNITIALISED_DATE" VARCHAR2(4000), 
208
	"RBS_S_EXCEP_HANDING" CHAR(1), 
209
	"RBS_C_EXCEP_HANDING" VARCHAR2(4000), 
210
	"RBS_S_RESOURCE_MNG" CHAR(1), 
211
	"RBS_C_RESOURCE_MNG" VARCHAR2(4000), 
212
	"RBS_S_TRANS_COMPLET" CHAR(1), 
213
	"RBS_C_TRANS_COMPLET" VARCHAR2(4000), 
214
	"RBS_S_THREADSAFETY" CHAR(1), 
215
	"RBS_C_THREADSAFETY" VARCHAR2(4000), 
216
	"RBS_S_RET_VALS" CHAR(1), 
217
	"RBS_C_RET_VALS" VARCHAR2(4000), 
218
	"RBS_S_CORR_ERR_HANDLING" CHAR(1), 
219
	"RBS_C_CORR_ERR_HANDLING" VARCHAR2(4000), 
220
	"RBS_S_SQL_STD" CHAR(1), 
221
	"RBS_C_SQL_STD" VARCHAR2(4000), 
222
	"MNT_S_EXT_REF" CHAR(1), 
223
	"MNT_C_EXT_REF" VARCHAR2(4000), 
224
	"MNT_S_CLASS_SIZE" CHAR(1), 
225
	"MNT_C_CLASS_SIZE" VARCHAR2(4000), 
226
	"MNT_S_METHOD_SIZE" CHAR(1), 
227
	"MNT_C_METHOD_SIZE" VARCHAR2(4000), 
228
	"MNT_S_APPROP_COMM" CHAR(1), 
229
	"MNT_C_APPROP_COMM" VARCHAR2(4000), 
230
	"MNT_S_IDENT_NAME_STD" CHAR(1), 
231
	"MNT_C_IDENT_NAME_STD" VARCHAR2(4000), 
232
	"MNT_S_SWITCH_HAVE_DEFAULTS" CHAR(1), 
233
	"MNT_C_SWITCH_HAVE_DEFAULTS" VARCHAR2(4000), 
234
	"MNT_S_NO_LIT_NUM" CHAR(1), 
235
	"MNT_C_NO_LIT_NUM" VARCHAR2(4000), 
236
	"MNT_S_NO_DEAD_CODE" CHAR(1), 
237
	"MNT_C_NO_DEAD_CODE" VARCHAR2(4000), 
238
	"DEI_S_STD_DES_PATT" CHAR(1), 
239
	"DEI_C_STD_DES_PATT" VARCHAR2(4000), 
240
	"DEI_S_APPROP_ALGOR" CHAR(1), 
241
	"DEI_C_APPROP_ALGOR" VARCHAR2(4000), 
242
	"DEI_S_APPROP_OBJ" CHAR(1), 
243
	"DEI_C_APPROP_OBJ" VARCHAR2(4000), 
244
	"DEI_S_APPROP_ERR_MSG" CHAR(1), 
245
	"DEI_C_APPROP_ERR_MSG" VARCHAR2(4000), 
246
	"DEI_S_STD_FRAMEW_COMP" CHAR(1), 
247
	"DEI_C_STD_FRAMEW_COMP" VARCHAR2(4000), 
248
	"DEI_S_APPROP_LOGGING" CHAR(1), 
249
	"DEI_C_APPROP_LOGGING" VARCHAR2(4000)
250
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
251
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
252
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
253
  TABLESPACE "USERS" ;
254
 
255
CREATE TABLE "RELEASE_MANAGER"."CQ_ISSUES" 
256
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
257
	"ISS_DB" NUMBER NOT NULL ENABLE, 
258
	"ISS_ID" NUMBER NOT NULL ENABLE, 
259
	"ISS_STATE" NUMBER NOT NULL ENABLE, 
260
	"MOD_DATE" DATE NOT NULL ENABLE, 
261
	"NOTES" VARCHAR2(255)
262
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
263
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
264
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
265
  TABLESPACE "SYSTEM" ;
266
 
267
CREATE TABLE "RELEASE_MANAGER"."IGNORE_WARNINGS" 
268
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
269
	"PV_ID" NUMBER NOT NULL ENABLE, 
270
	"DPV_ID" NUMBER NOT NULL ENABLE, 
271
	"IS_PATCH_IGNORE" CHAR(1)
272
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
273
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
274
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
275
  TABLESPACE "USERS" ;
276
 
277
CREATE TABLE "RELEASE_MANAGER"."MESSAGE_BOARD" 
278
   (	"MSG_ID" NUMBER NOT NULL ENABLE, 
279
	"MSG_DETAILS" VARCHAR2(2000) NOT NULL ENABLE, 
280
	"SUBMITION_DATE" DATE NOT NULL ENABLE, 
281
	"EXPIRY_DATE" DATE, 
282
	"DUE_DATE" DATE
283
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
284
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
285
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
286
  TABLESPACE "SYSTEM" ;
287
 
288
CREATE TABLE "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" 
289
   (	"ID" NUMBER CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE, 
290
	"OBJECTID" NUMBER, 
291
	"PROPERTY" VARCHAR2(64) CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE, 
292
	"VALUE" VARCHAR2(255), 
293
	"LVALUE" LONG RAW, 
294
	"VERSION" NUMBER DEFAULT (0) CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE
295
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
296
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
297
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
298
  TABLESPACE "USERS" ;
299
 
300
CREATE TABLE "RELEASE_MANAGER"."NOTE_MANAGER" 
301
   (	"NID" VARCHAR2(30) NOT NULL ENABLE, 
302
	"LAST_USER" VARCHAR2(20), 
303
	"LAST_DATE" DATE, 
304
	"DESCRIPTION" VARCHAR2(4000)
305
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
306
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
307
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
308
  TABLESPACE "USERS" ;
309
 
310
CREATE TABLE "RELEASE_MANAGER"."NOTIFICATION_HISTORY" 
311
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
312
	"PV_ID" NUMBER NOT NULL ENABLE, 
313
	"USER_ID" NUMBER NOT NULL ENABLE, 
314
	"DATE_TIME_STAMP" DATE NOT NULL ENABLE
315
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
316
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
317
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
318
  TABLESPACE "USERS" ;
319
 
320
CREATE TABLE "RELEASE_MANAGER"."PACKAGES" 
321
   (	"PKG_ID" NUMBER NOT NULL ENABLE, 
322
	"PKG_NAME" VARCHAR2(255) NOT NULL ENABLE, 
323
	"SUNOS_ELECTRONIC_NAME" VARCHAR2(255), 
324
	"WIN_ELECTRONIC_NAME" VARCHAR2(255)
325
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
326
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
327
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
328
  TABLESPACE "SYSTEM" ;
329
 
330
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_BUILD_ENV" 
331
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
332
	"BE_ID" NUMBER NOT NULL ENABLE, 
333
	"BUILD_TYPE" NUMBER
334
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
335
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
336
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
337
  TABLESPACE "USERS" ;
338
 
339
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" 
340
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
341
	"DPV_ID" NUMBER NOT NULL ENABLE, 
342
	"PKG_ID" NUMBER NOT NULL ENABLE, 
343
	"DPKG_ID" NUMBER NOT NULL ENABLE, 
344
	"BUILD_TYPE" CHAR(1) NOT NULL ENABLE, 
345
	"DISPLAY_ORDER" NUMBER
346
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
347
  STORAGE(INITIAL 327680 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
348
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
349
  TABLESPACE "SYSTEM" ;
350
 
351
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" 
352
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
353
	"TEST_ID" NUMBER, 
354
	"DOC_ID" NUMBER NOT NULL ENABLE, 
355
	"DOC_NUM" VARCHAR2(50) NOT NULL ENABLE, 
356
	"IS_LATEST" CHAR(1)
357
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
358
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
359
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
360
  TABLESPACE "USERS" ;
361
 
362
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_PATCHES" 
363
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
364
	"PATCH_ID" NUMBER NOT NULL ENABLE, 
365
	"INSTALL_ORDER" NUMBER NOT NULL ENABLE, 
366
	"PATCH_OBSOLETED_BY" NUMBER
367
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
368
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
369
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
370
  TABLESPACE "USERS" ;
371
 
372
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_VERSIONS" 
373
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
374
	"PKG_ID" NUMBER NOT NULL ENABLE, 
375
	"PKG_VERSION" VARCHAR2(50) NOT NULL ENABLE, 
376
	"DLOCKED" CHAR(1) NOT NULL ENABLE, 
377
	"RELEASED_AT" NUMBER, 
378
	"MODIFIED_STAMP" DATE, 
379
	"MODIFIER_ID" NUMBER NOT NULL ENABLE, 
380
	"CREATED_STAMP" DATE, 
381
	"CREATOR_ID" NUMBER NOT NULL ENABLE, 
382
	"COMMENTS" VARCHAR2(4000), 
383
	"V_MM" VARCHAR2(50), 
384
	"V_NMM" VARCHAR2(50), 
385
	"V_EXT" VARCHAR2(50), 
386
	"PKG_LABEL" VARCHAR2(60), 
387
	"SRC_PATH" VARCHAR2(2000), 
388
	"PV_DESCRIPTION" VARCHAR2(4000), 
389
	"OWNER_ID" NUMBER NOT NULL ENABLE, 
390
	"PV_OVERVIEW" VARCHAR2(4000), 
391
	"IS_PATCH" CHAR(1), 
392
	"LAST_PV_ID" NUMBER NOT NULL ENABLE, 
393
	"RELEASE_NOTES_INFO" VARCHAR2(1000), 
394
	"IS_DEPLOYABLE" CHAR(1), 
395
	"IS_BUILD_ENV_REQUIRED" CHAR(1), 
396
	"IS_OBSOLETE" CHAR(1), 
397
	"OBSOLETE_COMMENTS" VARCHAR2(4000), 
398
	"BUILD_TYPE" CHAR(1) NOT NULL ENABLE, 
399
	"CHANGE_TYPE" CHAR(1), 
400
	"LINK" VARCHAR2(4000), 
401
	"PATCH_ELECTRONIC_NAME" VARCHAR2(4000), 
402
	"BS_ID" NUMBER, 
403
	"IS_AUTOBUILDABLE" CHAR(1), 
404
	"SBOM_PRIORITY" CHAR(1), 
405
	"RIPPLE_FIELD" CHAR(1 CHAR), 
406
	"MAXIMUM_BUILD_TIME" NUMBER, 
407
	"ESTIMATED_COMPLETION_TIME" DATE
408
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
409
  STORAGE(INITIAL 196608 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
410
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
411
  TABLESPACE "SYSTEM" ;
412
 
413
CREATE TABLE "RELEASE_MANAGER"."PROCESSES" 
414
   (	"PROC_ID" NUMBER NOT NULL ENABLE, 
415
	"PROC_NAME" VARCHAR2(255) NOT NULL ENABLE, 
416
	"PROC_DESCRIPTION" VARCHAR2(255), 
417
	"RUN_AS" VARCHAR2(255), 
418
	"PKG_OWNER" VARCHAR2(4000), 
419
	"IS_INTERFACE" CHAR(1)
420
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
421
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
422
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
423
  TABLESPACE "USERS" ;
424
 
425
CREATE TABLE "RELEASE_MANAGER"."PROJECTS" 
426
   (	"PROJ_ID" NUMBER NOT NULL ENABLE, 
427
	"PROJ_NAME" VARCHAR2(50) NOT NULL ENABLE, 
428
	"BASE_URL" VARCHAR2(4000)
429
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
430
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
431
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
432
  TABLESPACE "SYSTEM" ;
433
 
434
CREATE TABLE "RELEASE_MANAGER"."PROJECT_EXTENTIONS" 
435
   (	"PROJ_ID" NUMBER NOT NULL ENABLE, 
436
	"EXT_NAME" VARCHAR2(10) NOT NULL ENABLE
437
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
438
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
439
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
440
  TABLESPACE "SYSTEM" ;
441
 
442
CREATE TABLE "RELEASE_MANAGER"."RELEASE_COMPONENTS" 
443
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
444
	"FILE_NAME" VARCHAR2(255), 
445
	"FILE_PATH" VARCHAR2(2000), 
446
	"BYTE_SIZE" NUMBER, 
447
	"CRC_CKSUM" VARCHAR2(50), 
448
	"CRC_MODCRC" VARCHAR2(50)
449
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
450
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
451
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
452
  TABLESPACE "USERS" ;
453
 
454
CREATE TABLE "RELEASE_MANAGER"."RELEASE_CONTENT" 
455
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
456
	"PV_ID" NUMBER NOT NULL ENABLE, 
457
	"BASE_VIEW_ID" NUMBER NOT NULL ENABLE, 
458
	"INSERT_STAMP" DATE NOT NULL ENABLE, 
459
	"INSERTOR_ID" NUMBER NOT NULL ENABLE, 
460
	"PKG_STATE" NUMBER NOT NULL ENABLE, 
461
	"PKG_ID" NUMBER, 
462
	"DEPRECATED_STATE" NUMBER, 
463
	"PRODUCT_STATE" NUMBER
464
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
465
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
466
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
467
  TABLESPACE "SYSTEM" ;
468
 
469
CREATE TABLE "RELEASE_MANAGER"."RELEASE_TAGS" 
470
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
471
	"VTREE_ID" NUMBER, 
472
	"RTAG_NAME" VARCHAR2(50) NOT NULL ENABLE, 
473
	"DESCRIPTION" VARCHAR2(4000), 
474
	"CREATED_STAMP" DATE, 
475
	"CREATOR_ID" NUMBER, 
476
	"OFFICIAL_STAMP" DATE, 
477
	"RELEASOR_ID" NUMBER, 
478
	"OFFICIAL" CHAR(1) NOT NULL ENABLE, 
479
	"REBUILD_ENV" CHAR(1) NOT NULL ENABLE, 
480
	"REBUILD_STAMP" NUMBER NOT NULL ENABLE, 
481
	"RTAG_VERSION" VARCHAR2(4000), 
482
	"RTAG_LIFE_CYCLE" NUMBER, 
483
	"PARENT_RTAG_ID" NUMBER NOT NULL ENABLE, 
484
	"PROJ_ID" NUMBER NOT NULL ENABLE, 
485
	"DISPLAY_ORDER" NUMBER, 
486
	"OWNER_EMAIL" VARCHAR2(1000), 
487
	"ASSOC_MASS_REF" NUMBER, 
488
	"OWNER_PERSONAL_EMAIL" VARCHAR2(1000), 
489
	"CONFIG_SPEC_BRANCH" VARCHAR2(4000), 
490
	"PRODUCT_STATE_USED" CHAR(1)
491
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
492
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
493
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
494
  TABLESPACE "SYSTEM" ;
495
 
496
CREATE TABLE "RELEASE_MANAGER"."RUNTIME_DEPENDENCIES" 
497
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
498
	"RTD_ID" NUMBER, 
499
	"RTD_COMMENTS" VARCHAR2(2000), 
500
	"RTD_URL" VARCHAR2(2000), 
501
	"MOD_DATE" DATE NOT NULL ENABLE, 
502
	"MOD_USER" NUMBER NOT NULL ENABLE
503
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
504
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
505
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
506
  TABLESPACE "USERS" ;
507
 
508
CREATE TABLE "RELEASE_MANAGER"."TEMP_ENV_STATES" 
509
   (	"SESSION_NUM" NUMBER NOT NULL ENABLE, 
510
	"LEVEL_NUM" NUMBER NOT NULL ENABLE, 
511
	"PV_ID" NUMBER NOT NULL ENABLE, 
512
	"PKG_ID" NUMBER NOT NULL ENABLE, 
513
	"V_EXT" VARCHAR2(50), 
514
	"TES_STATE" NUMBER NOT NULL ENABLE
515
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
516
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
517
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
518
  TABLESPACE "USERS" ;
519
 
520
CREATE TABLE "RELEASE_MANAGER"."TEST_TYPES" 
521
   (	"TEST_TYPE_ID" NUMBER NOT NULL ENABLE, 
522
	"TEST_TYPE_NAME" VARCHAR2(50) NOT NULL ENABLE, 
523
	"DISPLAY_ORDER" NUMBER
524
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
525
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
526
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
527
  TABLESPACE "USERS" ;
528
 
529
CREATE TABLE "RELEASE_MANAGER"."UNIT_TESTS" 
530
   (	"TEST_ID" NUMBER NOT NULL ENABLE, 
531
	"PV_ID" NUMBER NOT NULL ENABLE, 
532
	"TEST_TYPES_FK" NUMBER NOT NULL ENABLE, 
533
	"TEST_SUMMARY" VARCHAR2(4000), 
534
	"COMPLETION_DATE" DATE, 
535
	"COMPLETED_BY" NUMBER, 
536
	"RESULTS_URL" VARCHAR2(2000), 
537
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
538
	"TEST_ACCEPTED" CHAR(1), 
539
	"ACCEPTANCE_DATE" DATE, 
540
	"ACCEPTED_BY" NUMBER, 
541
	"REVIEW_COMMENTS" VARCHAR2(4000), 
542
	"NUMOF_TEST" VARCHAR2(50)
543
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
544
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
545
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
546
  TABLESPACE "USERS" ;
547
 
548
CREATE TABLE "RELEASE_MANAGER"."VALIDATION_RULES" 
549
   (	"FIELD_NAME" VARCHAR2(1000) NOT NULL ENABLE, 
550
	"IS_REQUIRED" CHAR(1) NOT NULL ENABLE, 
551
	"IS_NUMERIC" CHAR(1), 
552
	"MIN_NUMERIC_VALUE" NUMBER, 
553
	"MAX_NUMERIC_VALUE" NUMBER, 
554
	"IS_DATE" CHAR(1), 
555
	"START_DATE" DATE, 
556
	"END_DATE" DATE, 
557
	"MIN_STRING_LENGTH" NUMBER, 
558
	"MAX_STRING_LENGTH" NUMBER, 
559
	"REGEXP" VARCHAR2(4000), 
560
	"REGEXP_DESCRIPTION" VARCHAR2(50)
561
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
562
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
563
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
564
  TABLESPACE "USERS" ;
565
 
566
CREATE TABLE "RELEASE_MANAGER"."VIEWS" 
567
   (	"VIEW_ID" NUMBER NOT NULL ENABLE, 
568
	"VIEW_NAME" VARCHAR2(30) NOT NULL ENABLE, 
569
	"OWNER_ID" NUMBER NOT NULL ENABLE, 
570
	"BASE_VIEW" CHAR(1) NOT NULL ENABLE, 
571
	"PUBLIC_READ" CHAR(1) NOT NULL ENABLE
572
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
573
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
574
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
575
  TABLESPACE "SYSTEM" ;
576
 
577
CREATE TABLE "RELEASE_MANAGER"."VIEW_DEF" 
578
   (	"VIEW_ID" NUMBER NOT NULL ENABLE, 
579
	"PKG_ID" NUMBER NOT NULL ENABLE
580
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
581
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
582
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
583
  TABLESPACE "SYSTEM" ;
584
 
585
CREATE TABLE "RELEASE_MANAGER"."VIEW_SETTINGS" 
586
   (	"USER_ID" NUMBER NOT NULL ENABLE, 
587
	"VIEW_ID" NUMBER NOT NULL ENABLE
588
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
589
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
590
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
591
  TABLESPACE "SYSTEM" ;
592
 
593
CREATE TABLE "RELEASE_MANAGER"."VTREES" 
594
   (	"VTREE_ID" NUMBER NOT NULL ENABLE, 
595
	"PROJ_ID" NUMBER NOT NULL ENABLE, 
596
	"VTREE_NAME" VARCHAR2(50) NOT NULL ENABLE, 
597
	"HIDE" CHAR(1) NOT NULL ENABLE
598
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
599
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
600
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
601
  TABLESPACE "SYSTEM" ;
602
 
603
CREATE TABLE "RELEASE_MANAGER"."VTREES_WORLD" 
604
   (	"WORLD_ID" NUMBER NOT NULL ENABLE, 
605
	"VTREE_ID" NUMBER NOT NULL ENABLE
606
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
607
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
608
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
609
  TABLESPACE "USERS" ;
610
 
611
CREATE TABLE "RELEASE_MANAGER"."WORLDS" 
612
   (	"WORLD_ID" NUMBER NOT NULL ENABLE, 
613
	"WORLD_NAME" VARCHAR2(30) NOT NULL ENABLE, 
614
	"WORLD_DESC" VARCHAR2(255)
615
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
616
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
617
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
618
  TABLESPACE "USERS" ;
619
 
620
CREATE TABLE "RELEASE_MANAGER"."TEMP_TREE_BROWSE" 
621
   (	"SESSION_NUM" NUMBER, 
622
	"LEVEL_NUM" NUMBER, 
623
	"PV_ID" NUMBER, 
624
	"PKG_ID" NUMBER, 
625
	"V_EXT" VARCHAR2(50), 
626
	"DIRECTION" NUMBER
627
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
628
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
629
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
630
  TABLESPACE "USERS" ;
631
 
632
CREATE TABLE "RELEASE_MANAGER"."BUILD_ORDER" 
633
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
634
	"STEP_NUM" NUMBER NOT NULL ENABLE, 
635
	"PV_ID" NUMBER NOT NULL ENABLE, 
636
	"UNRESOLVED" CHAR(1)
637
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
638
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
639
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
640
  TABLESPACE "USERS" ;
641
 
642
CREATE TABLE "RELEASE_MANAGER"."PRODUCT_COMPONENTS" 
643
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
644
	"OS_ID" NUMBER NOT NULL ENABLE, 
645
	"FILE_PATH" VARCHAR2(4000), 
646
	"FILE_NAME" VARCHAR2(4000), 
647
	"DESTINATION_PATH" VARCHAR2(4000), 
648
	"BYTE_SIZE" NUMBER, 
649
	"CRC_CKSUM" VARCHAR2(2000)
650
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
651
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
652
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
653
  TABLESPACE "USERS" ;
654
 
655
CREATE TABLE "RELEASE_MANAGER"."RM_PACKAGE_ISSUES" 
656
   (	"PKG_ID" NUMBER, 
657
	"PKG_NAME" VARCHAR2(50), 
658
	"PV_ID" NUMBER, 
659
	"PKG_VERSION" VARCHAR2(50), 
660
	"DPV_ID" NUMBER, 
661
	"DPKG_NAME" VARCHAR2(50), 
662
	"DPKG_VERSION" VARCHAR2(50), 
663
	"ISS_DB" NUMBER, 
664
	"ISS_ID" NUMBER
665
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
666
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
667
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
668
  TABLESPACE "USERS" ;
669
 
670
CREATE TABLE "RELEASE_MANAGER"."WORK_IN_PROGRESS" 
671
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
672
	"PV_ID" NUMBER NOT NULL ENABLE, 
673
	"VIEW_ID" NUMBER NOT NULL ENABLE
674
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
675
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
676
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
677
  TABLESPACE "USERS" ;
678
 
679
CREATE TABLE "RELEASE_MANAGER"."PLANNED" 
680
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
681
	"PV_ID" NUMBER NOT NULL ENABLE, 
682
	"VIEW_ID" NUMBER NOT NULL ENABLE
683
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
684
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
685
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
686
  TABLESPACE "USERS" ;
687
 
688
CREATE TABLE "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" 
689
   (	"ABTN_ID" NUMBER NOT NULL ENABLE, 
690
	"ABTN_NAME" VARCHAR2(1000) NOT NULL ENABLE, 
691
	"TEXT" VARCHAR2(50), 
692
	"ACTION_LINK" VARCHAR2(4000), 
693
	"EVENT_HANDLER" VARCHAR2(4000), 
694
	"IMG_ENABLED" VARCHAR2(1000), 
695
	"IMG_DISABLED" VARCHAR2(1000), 
696
	"HINT" VARCHAR2(255), 
697
	"VISIBLE" CHAR(1) NOT NULL ENABLE, 
698
	"ACTIVE" CHAR(1) NOT NULL ENABLE, 
699
	"IS_READONLY_ACTION" CHAR(1) NOT NULL ENABLE
700
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
701
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
702
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
703
  TABLESPACE "USERS" ;
704
 
705
CREATE TABLE "RELEASE_MANAGER"."PLATFORMS" 
706
   (	"CODE" NUMBER NOT NULL ENABLE, 
707
	"NAME" VARCHAR2(255) NOT NULL ENABLE
708
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
709
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
710
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
711
  TABLESPACE "USERS" ;
712
 
713
CREATE TABLE "RELEASE_MANAGER"."RELEASE_LINKS" 
714
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
715
	"REF_RTAG_ID" NUMBER NOT NULL ENABLE
716
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
717
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
718
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
719
  TABLESPACE "USERS" ;
720
 
721
CREATE TABLE "RELEASE_MANAGER"."PROJECT_ACTION_LOG" 
722
   (	"USER_ID" NUMBER NOT NULL ENABLE, 
723
	"ACTION_DATETIME" DATE NOT NULL ENABLE, 
724
	"PROJ_ID" NUMBER NOT NULL ENABLE, 
725
	"DESCRIPTION" VARCHAR2(4000), 
726
	"ACTTYPE_ID" NUMBER NOT NULL ENABLE, 
727
	"RTAG_ID" NUMBER
728
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
729
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
730
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
731
  TABLESPACE "USERS" ;
732
 
733
CREATE TABLE "RELEASE_MANAGER"."TEMP_SASH" 
734
   (	"RTAG_ID" NUMBER, 
735
	"PROJ_ID" NUMBER
736
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
737
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
738
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
739
  TABLESPACE "USERS" ;
740
 
741
CREATE TABLE "RELEASE_MANAGER"."JIRA_ISSUES" 
742
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
743
	"ISS_KEY" VARCHAR2(4000), 
744
	"DATE_TIME_STAMP" DATE
745
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
746
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
747
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
748
  TABLESPACE "SYSTEM" ;
749
 
750
CREATE TABLE "RELEASE_MANAGER"."DO_NOT_RIPPLE" 
751
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
752
	"PV_ID" NUMBER NOT NULL ENABLE
753
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
754
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
755
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
756
  TABLESPACE "USERS" ;
757
 
758
CREATE TABLE "RELEASE_MANAGER"."DEPRECATED_PACKAGES" 
759
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
760
	"PKG_ID" NUMBER NOT NULL ENABLE, 
761
	"COMMENTS" VARCHAR2(4000) NOT NULL ENABLE, 
762
	"V_EXT" VARCHAR2(50)
763
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
764
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
765
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
766
  TABLESPACE "USERS" ;
767
 
768
CREATE TABLE "RELEASE_MANAGER"."AUTOBUILD_FAILURE" 
769
   (	"GROUP_EMAIL_ID" NUMBER NOT NULL ENABLE, 
770
	"PROJ_ID" NUMBER, 
771
	"VIEW_ID" NUMBER
772
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
773
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
774
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
775
  TABLESPACE "USERS" ;
776
 
777
CREATE TABLE "RELEASE_MANAGER"."MEMBERS_GROUP" 
778
   (	"GROUP_EMAIL_ID" NUMBER NOT NULL ENABLE, 
779
	"USER_ID" NUMBER
780
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
781
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
782
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
783
  TABLESPACE "USERS" ;
784
 
785
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_INTEREST" 
786
   (	"PKG_ID" NUMBER NOT NULL ENABLE, 
787
	"PROJ_ID" NUMBER NOT NULL ENABLE, 
788
	"USER_ID" NUMBER NOT NULL ENABLE
789
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
790
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
791
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
792
  TABLESPACE "USERS" ;
793
 
794
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_PROCESSES" 
795
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
796
	"PROC_ID" NUMBER NOT NULL ENABLE
797
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
798
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
799
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
800
  TABLESPACE "USERS" ;
801
 
802
CREATE TABLE "RELEASE_MANAGER"."ARCHIVE_DATA" 
803
   (	"RTAG_ID" NUMBER(*,0) NOT NULL ENABLE, 
804
	"PV_ID" NUMBER(*,0) NOT NULL ENABLE
805
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
806
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
807
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
808
  TABLESPACE "USERS" ;
809
 
810
CREATE TABLE "RELEASE_MANAGER"."ARCHIVE_ACTION_LOG" 
811
   (	"USER_ID" NUMBER NOT NULL ENABLE, 
812
	"DATE_TIME_STAMP" DATE NOT NULL ENABLE, 
813
	"RTAG_ID" NUMBER NOT NULL ENABLE, 
814
	"DESCRIPTION" VARCHAR2(4000) NOT NULL ENABLE
815
   ) PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
816
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
817
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
818
  TABLESPACE "USERS" ;
819
 
820
CREATE TABLE "RELEASE_MANAGER"."BUILD_MACHINES" 
821
   (	"BM_ID" NUMBER NOT NULL ENABLE, 
822
	"BM_NAME" VARCHAR2(20) NOT NULL ENABLE
823
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
824
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
825
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
826
  TABLESPACE "USERS" ;
827
 
828
CREATE TABLE "RELEASE_MANAGER"."BUILD_STANDARDS" 
829
   (	"BS_ID" NUMBER NOT NULL ENABLE, 
830
	"BS_NAME" VARCHAR2(20) NOT NULL ENABLE
831
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
832
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
833
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
834
  TABLESPACE "USERS" ;
835
 
836
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_BUILD_INFO" 
837
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
838
	"BM_ID" NUMBER NOT NULL ENABLE, 
839
	"BSA_ID" NUMBER
840
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
841
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
842
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
843
  TABLESPACE "USERS" ;
844
 
845
CREATE TABLE "RELEASE_MANAGER"."BUILD_SERVICE_CONFIG" 
846
   (	"SERVICE" VARCHAR2(50) NOT NULL ENABLE, 
847
	"CONFIG" VARCHAR2(2000) NOT NULL ENABLE
848
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
849
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
850
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
851
  TABLESPACE "USERS" ;
852
 
853
CREATE TABLE "RELEASE_MANAGER"."GBE_MACHTYPE" 
854
   (	"GBE_ID" NUMBER NOT NULL ENABLE, 
855
	"GBE_VALUE" VARCHAR2(20) NOT NULL ENABLE
856
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
857
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
858
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
859
  TABLESPACE "USERS" ;
860
 
861
CREATE TABLE "RELEASE_MANAGER"."RELEASE_CONFIG" 
862
   (	"RCON_ID" NUMBER NOT NULL ENABLE, 
863
	"RTAG_ID" NUMBER NOT NULL ENABLE, 
864
	"GBE_ID" NUMBER NOT NULL ENABLE, 
865
	"DAEMON_HOSTNAME" VARCHAR2(50), 
866
	"DAEMON_MODE" CHAR(1 CHAR), 
867
	"GBE_BUILDFILTER" VARCHAR2(255)
868
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
869
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
870
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
871
  TABLESPACE "USERS" ;
872
 
873
CREATE TABLE "RELEASE_MANAGER"."DASH_BOARD" 
874
   (	"PROJ_ID" NUMBER NOT NULL ENABLE, 
875
	"RTAG_ID" NUMBER NOT NULL ENABLE, 
876
	"LAST_BUILD_TIME" DATE NOT NULL ENABLE, 
877
	"AUTOMATED_PACKAGES" NUMBER NOT NULL ENABLE, 
878
	"TOTAL_PACKAGES" NUMBER NOT NULL ENABLE
879
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
880
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
881
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
882
  TABLESPACE "USERS" ;
883
 
884
CREATE TABLE "RELEASE_MANAGER"."PRODUCT_STATES" 
885
   (	"STATE_ID" NUMBER NOT NULL ENABLE, 
886
	"STATE" VARCHAR2(4000) NOT NULL ENABLE
887
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
888
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
889
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
890
  TABLESPACE "USERS" ;
891
 
892
CREATE TABLE "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" 
893
   (	"BSA_ID" NUMBER NOT NULL ENABLE, 
894
	"BSA_NAME" VARCHAR2(4000) NOT NULL ENABLE, 
895
	"BS_ID" NUMBER NOT NULL ENABLE
896
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
897
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
898
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
899
  TABLESPACE "USERS" ;
900
 
901
CREATE TABLE "RELEASE_MANAGER"."PLANNED_VERSIONS" 
902
   (	"PKG_ID" NUMBER, 
903
	"PKG_VERSION" VARCHAR2(50)
904
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
905
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
906
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
907
  TABLESPACE "USERS" ;
908
 
909
CREATE TABLE "RELEASE_MANAGER"."ADVISORY_RIPPLE" 
910
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
911
	"PV_ID" NUMBER NOT NULL ENABLE
912
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
913
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
914
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
915
  TABLESPACE "USERS" ;
916
 
917
CREATE TABLE "RELEASE_MANAGER"."RIPPLE_FIELD_STATES" 
918
   (	"STATE_ID" NUMBER NOT NULL ENABLE, 
919
	"STATE_ACRONYM" CHAR(1) NOT NULL DISABLE, 
920
	"STATE_NAME" VARCHAR2(50)
921
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
922
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
923
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
924
  TABLESPACE "USERS" ;
925
 
926
CREATE TABLE "RELEASE_MANAGER"."REPEAT_SCHEDULE" 
927
   (	"RPT_ID" NUMBER, 
928
	"REPEAT" CHAR(1)
929
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
930
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
931
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
932
  TABLESPACE "USERS" ;
933
 
934
CREATE TABLE "RELEASE_MANAGER"."RUN_LEVEL_SCHEDULE" 
935
   (	"SCHEDULED_ID" NUMBER NOT NULL ENABLE, 
936
	"SCHEDULED_PAUSE" DATE, 
937
	"SCHEDULED_RESUME" DATE, 
938
	"REPEAT" CHAR(1), 
939
	"INDEFINITE_PAUSE" CHAR(1)
940
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
941
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
942
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
943
  TABLESPACE "USERS" ;
944
 
945
CREATE TABLE "RELEASE_MANAGER"."DAEMON_ACTION_LOG" 
946
   (	"USER_ID" NUMBER NOT NULL ENABLE, 
947
	"ACTION_DATETIME" DATE, 
948
	"RCON_ID" NUMBER NOT NULL ENABLE, 
949
	"DESCRIPTION" VARCHAR2(4000), 
950
	"ACTTYPE_ID" NUMBER
951
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
952
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
953
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
954
  TABLESPACE "USERS" ;
955
 
956
CREATE TABLE "RELEASE_MANAGER"."CODE_REVIEW_URL" 
957
   (	"CR_ID" NUMBER NOT NULL ENABLE, 
958
	"PV_ID" NUMBER NOT NULL ENABLE, 
959
	"PROJ_ID" NUMBER NOT NULL ENABLE, 
960
	"URL" VARCHAR2(4000) NOT NULL ENABLE, 
961
	"REASON" VARCHAR2(4000), 
962
	"DATE_OF_REVIEW" DATE NOT NULL ENABLE, 
963
	"LAST_MODIFIED" DATE
964
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
965
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
966
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
967
  TABLESPACE "USERS" ;
968
 
969
CREATE TABLE "RELEASE_MANAGER"."ABT_ACTION_LOG" 
970
   (	"RCON_ID" NUMBER NOT NULL ENABLE, 
971
	"ACTION_DATETIME" DATE, 
972
	"ACTION" VARCHAR2(4000)
973
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
974
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
975
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
976
  TABLESPACE "USERS" ;
977
 
978
CREATE TABLE "RELEASE_MANAGER"."PACKAGE_METRICS" 
979
   (	"PV_ID" NUMBER NOT NULL ENABLE, 
980
	"BRANCHES" NUMBER, 
981
	"BRANCH_LIST" VARCHAR2(4000), 
982
	"CODE_FILES" NUMBER, 
983
	"IGNORED_FILES" NUMBER, 
984
	"DIRECTORIES" NUMBER, 
985
	"DIRECTORY_DEPTH" NUMBER, 
986
	"TOTAL_FILES" NUMBER, 
987
	"MAKEFILES" NUMBER, 
988
	"BLANK_LINES" NUMBER, 
989
	"CODE_LINES" NUMBER, 
990
	"COMMENT_LINES" NUMBER, 
991
	"CREATED_STAMP" DATE
992
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
993
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
994
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
995
  TABLESPACE "USERS" ;
996
 
997
CREATE TABLE "RELEASE_MANAGER"."RELEASE_METRICS" 
998
   (	"RTAG_ID" NUMBER NOT NULL ENABLE, 
999
	"TOTAL_PACKAGES" NUMBER, 
1000
	"AUTOBUILT" NUMBER, 
1001
	"LINES_OF_CODE" NUMBER, 
1002
	"UNIT_TESTED" NUMBER, 
1003
	"AUTOTESTED" NUMBER, 
1004
	"BRANCHES" NUMBER, 
1005
	"LAST_BUILD_TIME" DATE
1006
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
1007
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1008
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1009
  TABLESPACE "USERS" ;
1010
 
1011
CREATE GLOBAL TEMPORARY TABLE "RELEASE_MANAGER"."RM_PKG_ISSUES" 
1012
   (	"PKG_ID" NUMBER, 
1013
	"PKG_NAME" VARCHAR2(50), 
1014
	"PV_ID" NUMBER, 
1015
	"PKG_VERSION" VARCHAR2(50), 
1016
	"DPV_ID" NUMBER, 
1017
	"DPKG_NAME" VARCHAR2(50), 
1018
	"DPKG_VERSION" VARCHAR2(50), 
1019
	"ISS_DB" NUMBER, 
1020
	"ISS_ID" NUMBER
1021
   ) ON COMMIT PRESERVE ROWS ;
1022
 
1023
CREATE TABLE "RELEASE_MANAGER"."RUN_LEVEL" 
1024
   (	"RCON_ID" NUMBER, 
1025
	"CURRENT_BUILD_FILES" CLOB, 
1026
	"CURRENT_RUN_LEVEL" NUMBER, 
1027
	"PAUSE" NUMBER, 
1028
	"CURRENT_PKG_ID_BEING_BUILT" NUMBER
1029
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
1030
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1031
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1032
  TABLESPACE "USERS" 
1033
 LOB ("CURRENT_BUILD_FILES") STORE AS (
1034
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
1035
  NOCACHE LOGGING 
1036
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1037
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) ;
1038
 
1039
-- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/INDEX
1040
CREATE INDEX "RELEASE_MANAGER"."INX_ACTION_LOG_PV_ID" ON "RELEASE_MANAGER"."ACTION_LOG" ("PV_ID") 
1041
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1042
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1043
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1044
  TABLESPACE "USERS" PARALLEL 1 ;
1045
 
1046
  ALTER INDEX "RELEASE_MANAGER"."INX_ACTION_LOG_PV_ID" NOPARALLEL;
1047
 
1048
CREATE INDEX "RELEASE_MANAGER"."INX_ACTION_DATE_TIME" ON "RELEASE_MANAGER"."ACTION_LOG" ("ACTION_DATETIME") 
1049
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1050
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1051
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1052
  TABLESPACE "USERS" PARALLEL 1 ;
1053
 
1054
  ALTER INDEX "RELEASE_MANAGER"."INX_ACTION_DATE_TIME" NOPARALLEL;
1055
 
1056
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_ACTTYPE_ID" ON "RELEASE_MANAGER"."ACTION_TYPE" ("ACTTYPE_ID") 
1057
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1058
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1059
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1060
  TABLESPACE "USERS" PARALLEL 1 ;
1061
 
1062
  ALTER INDEX "RELEASE_MANAGER"."UNQ_ACTTYPE_ID" NOPARALLEL;
1063
 
1064
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_AN_PART1" ON "RELEASE_MANAGER"."ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
1065
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1066
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1067
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1068
  TABLESPACE "USERS" PARALLEL 1 ;
1069
 
1070
  ALTER INDEX "RELEASE_MANAGER"."UNQ_AN_PART1" NOPARALLEL;
1071
 
1072
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_AN_PART2" ON "RELEASE_MANAGER"."ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
1073
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1074
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1075
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1076
  TABLESPACE "USERS" PARALLEL 1 ;
1077
 
1078
  ALTER INDEX "RELEASE_MANAGER"."UNQ_AN_PART2" NOPARALLEL;
1079
 
1080
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_BUILD_ENVIRONMENTS" ON "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ("BE_ID") 
1081
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1082
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1083
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1084
  TABLESPACE "USERS" PARALLEL 1 ;
1085
 
1086
  ALTER INDEX "RELEASE_MANAGER"."PK_BUILD_ENVIRONMENTS" NOPARALLEL;
1087
 
1088
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV" ON "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ("BE_NAME") 
1089
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1090
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1091
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1092
  TABLESPACE "USERS" PARALLEL 1 ;
1093
 
1094
  ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV" NOPARALLEL;
1095
 
1096
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV_DOCS" ON "RELEASE_MANAGER"."BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
1097
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1098
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1099
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1100
  TABLESPACE "USERS" PARALLEL 1 ;
1101
 
1102
  ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV_DOCS" NOPARALLEL;
1103
 
1104
CREATE UNIQUE INDEX "RELEASE_MANAGER"."INX_CODE_REVIEW" ON "RELEASE_MANAGER"."CODE_REVIEWS" ("PV_ID") 
1105
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1106
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1107
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1108
  TABLESPACE "USERS" PARALLEL 1 ;
1109
 
1110
  ALTER INDEX "RELEASE_MANAGER"."INX_CODE_REVIEW" NOPARALLEL;
1111
 
1112
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_CQ" ON "RELEASE_MANAGER"."CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1113
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1114
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1115
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1116
  TABLESPACE "USERS" PARALLEL 1 ;
1117
 
1118
  ALTER INDEX "RELEASE_MANAGER"."UNQ_CQ" NOPARALLEL;
1119
 
1120
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_IGW" ON "RELEASE_MANAGER"."IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
1121
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1122
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1123
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1124
  TABLESPACE "USERS" PARALLEL 1 ;
1125
 
1126
  ALTER INDEX "RELEASE_MANAGER"."UNQ_IGW" NOPARALLEL;
1127
 
1128
CREATE INDEX "RELEASE_MANAGER"."INX_IS_PATCH_IGNORE" ON "RELEASE_MANAGER"."IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
1129
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1130
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1131
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1132
  TABLESPACE "USERS" PARALLEL 1 ;
1133
 
1134
  ALTER INDEX "RELEASE_MANAGER"."INX_IS_PATCH_IGNORE" NOPARALLEL;
1135
 
1136
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_MESSAGE_BOARD" ON "RELEASE_MANAGER"."MESSAGE_BOARD" ("MSG_ID") 
1137
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1138
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1139
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1140
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1141
 
1142
  ALTER INDEX "RELEASE_MANAGER"."PK_MESSAGE_BOARD" NOPARALLEL;
1143
 
1144
CREATE INDEX "RELEASE_MANAGER"."INX_MSGBOARD" ON "RELEASE_MANAGER"."MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
1145
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1146
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1147
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1148
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1149
 
1150
  ALTER INDEX "RELEASE_MANAGER"."INX_MSGBOARD" NOPARALLEL;
1151
 
1152
CREATE UNIQUE INDEX "RELEASE_MANAGER"."MICROSOFT_PK_DTPROPERTIES" ON "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
1153
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1154
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1155
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1156
  TABLESPACE "USERS" PARALLEL 1 ;
1157
 
1158
  ALTER INDEX "RELEASE_MANAGER"."MICROSOFT_PK_DTPROPERTIES" NOPARALLEL;
1159
 
1160
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PKNOTE_MANAGER1" ON "RELEASE_MANAGER"."NOTE_MANAGER" ("NID") 
1161
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1162
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1163
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1164
  TABLESPACE "USERS" PARALLEL 1 ;
1165
 
1166
  ALTER INDEX "RELEASE_MANAGER"."PKNOTE_MANAGER1" NOPARALLEL;
1167
 
1168
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_NOTIFICATION_HISTORY" ON "RELEASE_MANAGER"."NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
1169
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1170
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1171
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1172
  TABLESPACE "USERS" PARALLEL 1 ;
1173
 
1174
  ALTER INDEX "RELEASE_MANAGER"."PK_NOTIFICATION_HISTORY" NOPARALLEL;
1175
 
1176
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PACKAGES" ON "RELEASE_MANAGER"."PACKAGES" ("PKG_ID") 
1177
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1178
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1179
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1180
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1181
 
1182
  ALTER INDEX "RELEASE_MANAGER"."PK_PACKAGES" NOPARALLEL;
1183
 
1184
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGES" ON "RELEASE_MANAGER"."PACKAGES" ("PKG_NAME") 
1185
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1186
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1187
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1188
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1189
 
1190
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGES" NOPARALLEL;
1191
 
1192
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PKG_BUILD_ENV" ON "RELEASE_MANAGER"."PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
1193
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1194
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1195
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1196
  TABLESPACE "USERS" PARALLEL 1 ;
1197
 
1198
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PKG_BUILD_ENV" NOPARALLEL;
1199
 
1200
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_DEPENDENCIES" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
1201
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1202
  STORAGE(INITIAL 393216 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1203
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1204
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1205
 
1206
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_DEPENDENCIES" NOPARALLEL;
1207
 
1208
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PV_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PV_ID") 
1209
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1210
  STORAGE(INITIAL 393216 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1211
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1212
  TABLESPACE "USERS" PARALLEL 1 ;
1213
 
1214
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PV_ID" NOPARALLEL;
1215
 
1216
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPKG_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("DPKG_ID") 
1217
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1218
  STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1219
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1220
  TABLESPACE "USERS" PARALLEL 1 ;
1221
 
1222
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPKG_ID" NOPARALLEL;
1223
 
1224
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPV_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("DPV_ID") 
1225
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1226
  STORAGE(INITIAL 393216 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1227
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1228
  TABLESPACE "USERS" PARALLEL 1 ;
1229
 
1230
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPV_ID" NOPARALLEL;
1231
 
1232
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PKG_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PKG_ID") 
1233
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1234
  STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1235
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1236
  TABLESPACE "USERS" PARALLEL 1 ;
1237
 
1238
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PKG_ID" NOPARALLEL;
1239
 
1240
CREATE INDEX "RELEASE_MANAGER"."INX_PV_ID_PKGDOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID") 
1241
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1242
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1243
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1244
  TABLESPACE "USERS" PARALLEL 1 ;
1245
 
1246
  ALTER INDEX "RELEASE_MANAGER"."INX_PV_ID_PKGDOC" NOPARALLEL;
1247
 
1248
CREATE INDEX "RELEASE_MANAGER"."INX_PV_ID_TEST_ID_PKGDOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
1249
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1250
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1251
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1252
  TABLESPACE "USERS" PARALLEL 1 ;
1253
 
1254
  ALTER INDEX "RELEASE_MANAGER"."INX_PV_ID_TEST_ID_PKGDOC" NOPARALLEL;
1255
 
1256
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PKG_DOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
1257
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1258
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1259
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1260
  TABLESPACE "USERS" PARALLEL 1 ;
1261
 
1262
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PKG_DOC" NOPARALLEL;
1263
 
1264
CREATE INDEX "RELEASE_MANAGER"."INX_PP_PV_ID" ON "RELEASE_MANAGER"."PACKAGE_PATCHES" ("PV_ID") 
1265
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1266
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1267
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1268
  TABLESPACE "USERS" PARALLEL 1 ;
1269
 
1270
  ALTER INDEX "RELEASE_MANAGER"."INX_PP_PV_ID" NOPARALLEL;
1271
 
1272
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_PATCHES" ON "RELEASE_MANAGER"."PACKAGE_PATCHES" ("PATCH_ID") 
1273
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1274
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1275
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1276
  TABLESPACE "USERS" PARALLEL 1 ;
1277
 
1278
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_PATCHES" NOPARALLEL;
1279
 
1280
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PACKAGE_VERSIONS" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PV_ID") 
1281
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1282
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1283
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1284
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1285
 
1286
  ALTER INDEX "RELEASE_MANAGER"."PK_PACKAGE_VERSIONS" NOPARALLEL;
1287
 
1288
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_VERSIONS" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
1289
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1290
  STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1291
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1292
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1293
 
1294
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_VERSIONS" NOPARALLEL;
1295
 
1296
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_NAME" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_ID") 
1297
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1298
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1299
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1300
  TABLESPACE "USERS" PARALLEL 1 ;
1301
 
1302
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_NAME" NOPARALLEL;
1303
 
1304
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_VERSION" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_VERSION") 
1305
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1306
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1307
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1308
  TABLESPACE "USERS" PARALLEL 1 ;
1309
 
1310
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_VERSION" NOPARALLEL;
1311
 
1312
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_MM" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_MM") 
1313
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1314
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1315
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1316
  TABLESPACE "USERS" PARALLEL 1 ;
1317
 
1318
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_MM" NOPARALLEL;
1319
 
1320
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_NMM" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_NMM") 
1321
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1322
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1323
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1324
  TABLESPACE "USERS" PARALLEL 1 ;
1325
 
1326
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_NMM" NOPARALLEL;
1327
 
1328
CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_EXT" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_EXT") 
1329
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1330
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1331
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1332
  TABLESPACE "USERS" PARALLEL 1 ;
1333
 
1334
  ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_EXT" NOPARALLEL;
1335
 
1336
CREATE INDEX "RELEASE_MANAGER"."INX_PV_OWNER_ID" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("OWNER_ID") 
1337
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1338
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1339
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1340
  TABLESPACE "USERS" PARALLEL 1 ;
1341
 
1342
  ALTER INDEX "RELEASE_MANAGER"."INX_PV_OWNER_ID" NOPARALLEL;
1343
 
1344
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PROCESSES_PK" ON "RELEASE_MANAGER"."PROCESSES" ("PROC_ID") 
1345
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1346
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1347
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1348
  TABLESPACE "USERS" PARALLEL 1 ;
1349
 
1350
  ALTER INDEX "RELEASE_MANAGER"."PROCESSES_PK" NOPARALLEL;
1351
 
1352
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PROJECTS" ON "RELEASE_MANAGER"."PROJECTS" ("PROJ_ID") 
1353
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1354
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1355
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1356
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1357
 
1358
  ALTER INDEX "RELEASE_MANAGER"."PK_PROJECTS" NOPARALLEL;
1359
 
1360
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PROJECTS" ON "RELEASE_MANAGER"."PROJECTS" ("PROJ_NAME") 
1361
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1362
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1363
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1364
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1365
 
1366
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PROJECTS" NOPARALLEL;
1367
 
1368
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PROJECT_EXT" ON "RELEASE_MANAGER"."PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
1369
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1370
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1371
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1372
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1373
 
1374
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PROJECT_EXT" NOPARALLEL;
1375
 
1376
CREATE INDEX "RELEASE_MANAGER"."INX_RCOMP_PV_ID" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" ("PV_ID") 
1377
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1378
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1379
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1380
  TABLESPACE "USERS" PARALLEL 1 ;
1381
 
1382
  ALTER INDEX "RELEASE_MANAGER"."INX_RCOMP_PV_ID" NOPARALLEL;
1383
 
1384
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_REL_COMPONENTS" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
1385
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1386
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1387
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1388
  TABLESPACE "USERS" PARALLEL 1 ;
1389
 
1390
  ALTER INDEX "RELEASE_MANAGER"."UNQ_REL_COMPONENTS" NOPARALLEL;
1391
 
1392
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_CONTENTS" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
1393
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1394
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1395
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1396
  TABLESPACE "USERS" PARALLEL 1 ;
1397
 
1398
  ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_CONTENTS" NOPARALLEL;
1399
 
1400
CREATE INDEX "RELEASE_MANAGER"."INX_RC_BASE_VIEW_ID" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("BASE_VIEW_ID") 
1401
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1402
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1403
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1404
  TABLESPACE "USERS" PARALLEL 1 ;
1405
 
1406
  ALTER INDEX "RELEASE_MANAGER"."INX_RC_BASE_VIEW_ID" NOPARALLEL;
1407
 
1408
CREATE INDEX "RELEASE_MANAGER"."INX_RC_PKG_STATE" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("PKG_STATE") 
1409
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1410
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1411
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1412
  TABLESPACE "USERS" PARALLEL 1 ;
1413
 
1414
  ALTER INDEX "RELEASE_MANAGER"."INX_RC_PKG_STATE" NOPARALLEL;
1415
 
1416
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_RELEASE_TAGS" ON "RELEASE_MANAGER"."RELEASE_TAGS" ("RTAG_ID") 
1417
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1418
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1419
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1420
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1421
 
1422
  ALTER INDEX "RELEASE_MANAGER"."PK_RELEASE_TAGS" NOPARALLEL;
1423
 
1424
CREATE INDEX "RELEASE_MANAGER"."FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_MANAGER"."RELEASE_TAGS" ("PROJ_ID") 
1425
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1426
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1427
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1428
  TABLESPACE "USERS" PARALLEL 1 ;
1429
 
1430
  ALTER INDEX "RELEASE_MANAGER"."FK_PROJ_ID_RELEASE_TAGS" NOPARALLEL;
1431
 
1432
CREATE INDEX "RELEASE_MANAGER"."UNQ_RTD" ON "RELEASE_MANAGER"."RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
1433
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1434
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1435
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1436
  TABLESPACE "USERS" PARALLEL 1 ;
1437
 
1438
  ALTER INDEX "RELEASE_MANAGER"."UNQ_RTD" NOPARALLEL;
1439
 
1440
CREATE INDEX "RELEASE_MANAGER"."INX_TES_PKGEXT" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
1441
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1442
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1443
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1444
  TABLESPACE "USERS" PARALLEL 1 ;
1445
 
1446
  ALTER INDEX "RELEASE_MANAGER"."INX_TES_PKGEXT" NOPARALLEL;
1447
 
1448
CREATE INDEX "RELEASE_MANAGER"."INX_TES_PV" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("PV_ID") 
1449
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1450
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1451
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1452
  TABLESPACE "USERS" PARALLEL 1 ;
1453
 
1454
  ALTER INDEX "RELEASE_MANAGER"."INX_TES_PV" NOPARALLEL;
1455
 
1456
CREATE INDEX "RELEASE_MANAGER"."INX_TES_TES_STATE" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("TES_STATE") 
1457
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
1458
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1459
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1460
  TABLESPACE "USERS" PARALLEL 1 ;
1461
 
1462
  ALTER INDEX "RELEASE_MANAGER"."INX_TES_TES_STATE" NOPARALLEL;
1463
 
1464
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_TEST_TYPES" ON "RELEASE_MANAGER"."TEST_TYPES" ("TEST_TYPE_ID") 
1465
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1466
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1467
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1468
  TABLESPACE "USERS" PARALLEL 1 ;
1469
 
1470
  ALTER INDEX "RELEASE_MANAGER"."PK_TEST_TYPES" NOPARALLEL;
1471
 
1472
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_TEST_TYPE_NAME" ON "RELEASE_MANAGER"."TEST_TYPES" ("TEST_TYPE_NAME") 
1473
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1474
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1475
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1476
  TABLESPACE "USERS" PARALLEL 1 ;
1477
 
1478
  ALTER INDEX "RELEASE_MANAGER"."UNQ_TEST_TYPE_NAME" NOPARALLEL;
1479
 
1480
CREATE INDEX "RELEASE_MANAGER"."INX_UT_COMPLETED" ON "RELEASE_MANAGER"."UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
1481
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1482
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1483
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1484
  TABLESPACE "USERS" PARALLEL 1 ;
1485
 
1486
  ALTER INDEX "RELEASE_MANAGER"."INX_UT_COMPLETED" NOPARALLEL;
1487
 
1488
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_UT_PART1" ON "RELEASE_MANAGER"."UNIT_TESTS" ("PV_ID", "TEST_ID") 
1489
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1490
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1491
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1492
  TABLESPACE "USERS" PARALLEL 1 ;
1493
 
1494
  ALTER INDEX "RELEASE_MANAGER"."UNQ_UT_PART1" NOPARALLEL;
1495
 
1496
CREATE INDEX "RELEASE_MANAGER"."INX_UT_PV_TEST_TYPE" ON "RELEASE_MANAGER"."UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
1497
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1498
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1499
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1500
  TABLESPACE "USERS" PARALLEL 1 ;
1501
 
1502
  ALTER INDEX "RELEASE_MANAGER"."INX_UT_PV_TEST_TYPE" NOPARALLEL;
1503
 
1504
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VALIDATION_RULES" ON "RELEASE_MANAGER"."VALIDATION_RULES" ("FIELD_NAME") 
1505
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1506
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1507
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1508
  TABLESPACE "USERS" PARALLEL 1 ;
1509
 
1510
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VALIDATION_RULES" NOPARALLEL;
1511
 
1512
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEWS" ON "RELEASE_MANAGER"."VIEWS" ("VIEW_NAME", "OWNER_ID") 
1513
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1514
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1515
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1516
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1517
 
1518
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEWS" NOPARALLEL;
1519
 
1520
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_VIEWS" ON "RELEASE_MANAGER"."VIEWS" ("VIEW_ID") 
1521
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1522
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1523
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1524
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1525
 
1526
  ALTER INDEX "RELEASE_MANAGER"."PK_VIEWS" NOPARALLEL;
1527
 
1528
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEW_DEF" ON "RELEASE_MANAGER"."VIEW_DEF" ("VIEW_ID", "PKG_ID") 
1529
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1530
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1531
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1532
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1533
 
1534
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEW_DEF" NOPARALLEL;
1535
 
1536
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEW_SETTINGS" ON "RELEASE_MANAGER"."VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
1537
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1538
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1539
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1540
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1541
 
1542
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEW_SETTINGS" NOPARALLEL;
1543
 
1544
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_VTREES" ON "RELEASE_MANAGER"."VTREES" ("VTREE_ID") 
1545
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1546
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1547
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1548
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1549
 
1550
  ALTER INDEX "RELEASE_MANAGER"."PK_VTREES" NOPARALLEL;
1551
 
1552
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VTREES" ON "RELEASE_MANAGER"."VTREES" ("PROJ_ID", "VTREE_NAME") 
1553
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1554
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1555
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1556
  TABLESPACE "SYSTEM" PARALLEL 1 ;
1557
 
1558
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VTREES" NOPARALLEL;
1559
 
1560
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VTREE_WORLD" ON "RELEASE_MANAGER"."VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
1561
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1562
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1563
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1564
  TABLESPACE "USERS" PARALLEL 1 ;
1565
 
1566
  ALTER INDEX "RELEASE_MANAGER"."UNQ_VTREE_WORLD" NOPARALLEL;
1567
 
1568
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_WORLDS" ON "RELEASE_MANAGER"."WORLDS" ("WORLD_ID") 
1569
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1570
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1571
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1572
  TABLESPACE "USERS" PARALLEL 1 ;
1573
 
1574
  ALTER INDEX "RELEASE_MANAGER"."PK_WORLDS" NOPARALLEL;
1575
 
1576
CREATE INDEX "RELEASE_MANAGER"."INX_TTB_PKG" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
1577
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1578
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1579
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1580
  TABLESPACE "USERS" PARALLEL 1 ;
1581
 
1582
  ALTER INDEX "RELEASE_MANAGER"."INX_TTB_PKG" NOPARALLEL;
1583
 
1584
CREATE INDEX "RELEASE_MANAGER"."INX_TTB_SESSION" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("SESSION_NUM") 
1585
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1586
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1587
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1588
  TABLESPACE "USERS" PARALLEL 1 ;
1589
 
1590
  ALTER INDEX "RELEASE_MANAGER"."INX_TTB_SESSION" NOPARALLEL;
1591
 
1592
CREATE INDEX "RELEASE_MANAGER"."INX_TTB_LEVEL_NUM" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1593
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1594
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1595
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1596
  TABLESPACE "USERS" PARALLEL 1 ;
1597
 
1598
  ALTER INDEX "RELEASE_MANAGER"."INX_TTB_LEVEL_NUM" NOPARALLEL;
1599
 
1600
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ORDER" ON "RELEASE_MANAGER"."BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
1601
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1602
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1603
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1604
  TABLESPACE "USERS" PARALLEL 1 ;
1605
 
1606
  ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ORDER" NOPARALLEL;
1607
 
1608
CREATE INDEX "RELEASE_MANAGER"."INX_PCOMP_FK_PV_ID" ON "RELEASE_MANAGER"."PRODUCT_COMPONENTS" ("PV_ID") 
1609
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1610
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1611
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1612
  TABLESPACE "USERS" PARALLEL 1 ;
1613
 
1614
  ALTER INDEX "RELEASE_MANAGER"."INX_PCOMP_FK_PV_ID" NOPARALLEL;
1615
 
1616
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_WORK_IN_PROGRESS" ON "RELEASE_MANAGER"."WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
1617
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1618
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1619
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1620
  TABLESPACE "USERS" PARALLEL 1 ;
1621
 
1622
  ALTER INDEX "RELEASE_MANAGER"."UNQ_WORK_IN_PROGRESS" NOPARALLEL;
1623
 
1624
CREATE INDEX "RELEASE_MANAGER"."UNQ_PLANNED" ON "RELEASE_MANAGER"."PLANNED" ("RTAG_ID", "PV_ID") 
1625
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1626
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1627
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1628
  TABLESPACE "USERS" PARALLEL 1 ;
1629
 
1630
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PLANNED" NOPARALLEL;
1631
 
1632
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_DEF_ACTION_BUTTONS" ON "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ("ABTN_ID") 
1633
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1634
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1635
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1636
  TABLESPACE "USERS" PARALLEL 1 ;
1637
 
1638
  ALTER INDEX "RELEASE_MANAGER"."PK_DEF_ACTION_BUTTONS" NOPARALLEL;
1639
 
1640
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_ABTN_DEF" ON "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ("ABTN_NAME") 
1641
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1642
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1643
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1644
  TABLESPACE "USERS" PARALLEL 1 ;
1645
 
1646
  ALTER INDEX "RELEASE_MANAGER"."UNQ_ABTN_DEF" NOPARALLEL;
1647
 
1648
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PLATFORM" ON "RELEASE_MANAGER"."PLATFORMS" ("NAME") 
1649
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1650
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1651
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1652
  TABLESPACE "USERS" PARALLEL 1 ;
1653
 
1654
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PLATFORM" NOPARALLEL;
1655
 
1656
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_LINKS" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
1657
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1658
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1659
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1660
  TABLESPACE "USERS" PARALLEL 1 ;
1661
 
1662
  ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_LINKS" NOPARALLEL;
1663
 
1664
CREATE INDEX "RELEASE_MANAGER"."INX_RL_RTAG_ID" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("RTAG_ID") 
1665
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1666
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1667
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1668
  TABLESPACE "USERS" PARALLEL 1 ;
1669
 
1670
  ALTER INDEX "RELEASE_MANAGER"."INX_RL_RTAG_ID" NOPARALLEL;
1671
 
1672
CREATE INDEX "RELEASE_MANAGER"."INX_RL_REFRTAG_ID" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("REF_RTAG_ID") 
1673
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1674
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1675
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1676
  TABLESPACE "USERS" PARALLEL 1 ;
1677
 
1678
  ALTER INDEX "RELEASE_MANAGER"."INX_RL_REFRTAG_ID" NOPARALLEL;
1679
 
1680
CREATE INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_DATE_TIME" ON "RELEASE_MANAGER"."PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
1681
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1682
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1683
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1684
  TABLESPACE "USERS" PARALLEL 1 ;
1685
 
1686
  ALTER INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_DATE_TIME" NOPARALLEL;
1687
 
1688
CREATE INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_LOG_PROJ" ON "RELEASE_MANAGER"."PROJECT_ACTION_LOG" ("PROJ_ID") 
1689
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1690
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1691
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1692
  TABLESPACE "USERS" PARALLEL 1 ;
1693
 
1694
  ALTER INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_LOG_PROJ" NOPARALLEL;
1695
 
1696
CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_MACHINES_PK" ON "RELEASE_MANAGER"."BUILD_MACHINES" ("BM_ID") 
1697
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1698
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1699
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1700
  TABLESPACE "USERS" PARALLEL 1 ;
1701
 
1702
  ALTER INDEX "RELEASE_MANAGER"."BUILD_MACHINES_PK" NOPARALLEL;
1703
 
1704
CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_PK" ON "RELEASE_MANAGER"."BUILD_STANDARDS" ("BS_ID") 
1705
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1706
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1707
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1708
  TABLESPACE "USERS" PARALLEL 1 ;
1709
 
1710
  ALTER INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_PK" NOPARALLEL;
1711
 
1712
CREATE UNIQUE INDEX "RELEASE_MANAGER"."PRODUCT_STATES_PK" ON "RELEASE_MANAGER"."PRODUCT_STATES" ("STATE_ID") 
1713
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1714
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1715
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1716
  TABLESPACE "USERS" PARALLEL 1 ;
1717
 
1718
  ALTER INDEX "RELEASE_MANAGER"."PRODUCT_STATES_PK" NOPARALLEL;
1719
 
1720
CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM_PK" ON "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
1721
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1722
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1723
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1724
  TABLESPACE "USERS" PARALLEL 1 ;
1725
 
1726
  ALTER INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM_PK" NOPARALLEL;
1727
 
1728
CREATE UNIQUE INDEX "RELEASE_MANAGER"."CODE_REVIEW_URL_PK" ON "RELEASE_MANAGER"."CODE_REVIEW_URL" ("CR_ID") 
1729
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1730
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1731
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1732
  TABLESPACE "USERS" PARALLEL 1 ;
1733
 
1734
  ALTER INDEX "RELEASE_MANAGER"."CODE_REVIEW_URL_PK" NOPARALLEL;
1735
 
1736
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_METRICS" ON "RELEASE_MANAGER"."PACKAGE_METRICS" ("PV_ID") 
1737
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1738
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1739
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1740
  TABLESPACE "USERS" PARALLEL 1 ;
1741
 
1742
  ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_METRICS" NOPARALLEL;
1743
 
1744
CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_METRICS" ON "RELEASE_MANAGER"."RELEASE_METRICS" ("RTAG_ID") 
1745
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
1746
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1747
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1748
  TABLESPACE "USERS" PARALLEL 1 ;
1749
 
1750
  ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_METRICS" NOPARALLEL;
1751
 
1752
-- new object type path is: SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
1753
ALTER TABLE "RELEASE_MANAGER"."ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID")
1754
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1755
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1756
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1757
  TABLESPACE "USERS"  ENABLE;
1758
 
1759
ALTER TABLE "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID")
1760
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1761
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1762
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1763
  TABLESPACE "USERS"  ENABLE;
1764
 
1765
ALTER TABLE "RELEASE_MANAGER"."MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID")
1766
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1767
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1768
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1769
  TABLESPACE "SYSTEM"  ENABLE;
1770
 
1771
ALTER TABLE "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY")
1772
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1773
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1774
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1775
  TABLESPACE "USERS"  ENABLE;
1776
 
1777
ALTER TABLE "RELEASE_MANAGER"."NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID")
1778
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1779
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1780
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1781
  TABLESPACE "USERS"  ENABLE;
1782
 
1783
ALTER TABLE "RELEASE_MANAGER"."NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID")
1784
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1785
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1786
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1787
  TABLESPACE "USERS"  ENABLE;
1788
 
1789
ALTER TABLE "RELEASE_MANAGER"."PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID")
1790
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1791
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1792
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1793
  TABLESPACE "SYSTEM"  ENABLE;
1794
 
1795
ALTER TABLE "RELEASE_MANAGER"."PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID")
1796
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1797
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1798
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1799
  TABLESPACE "SYSTEM"  ENABLE;
1800
 
1801
ALTER TABLE "RELEASE_MANAGER"."PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID")
1802
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1803
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1804
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1805
  TABLESPACE "USERS"  ENABLE;
1806
 
1807
ALTER TABLE "RELEASE_MANAGER"."PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID")
1808
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1809
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1810
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1811
  TABLESPACE "SYSTEM"  ENABLE;
1812
 
1813
ALTER TABLE "RELEASE_MANAGER"."RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID")
1814
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1815
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1816
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1817
  TABLESPACE "SYSTEM"  ENABLE;
1818
 
1819
ALTER TABLE "RELEASE_MANAGER"."TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID")
1820
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1821
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1822
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1823
  TABLESPACE "USERS"  ENABLE;
1824
 
1825
ALTER TABLE "RELEASE_MANAGER"."VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID")
1826
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1827
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1828
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1829
  TABLESPACE "SYSTEM"  ENABLE;
1830
 
1831
ALTER TABLE "RELEASE_MANAGER"."VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID")
1832
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1833
  STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
1834
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1835
  TABLESPACE "SYSTEM"  ENABLE;
1836
 
1837
ALTER TABLE "RELEASE_MANAGER"."WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID")
1838
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1839
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1840
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1841
  TABLESPACE "USERS"  ENABLE;
1842
 
1843
ALTER TABLE "RELEASE_MANAGER"."PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID")
1844
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1845
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1846
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1847
  TABLESPACE "USERS"  ENABLE;
1848
 
1849
ALTER TABLE "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ADD CONSTRAINT "PK_DEF_ACTION_BUTTONS" PRIMARY KEY ("ABTN_ID")
1850
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1851
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1852
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1853
  TABLESPACE "USERS"  ENABLE;
1854
 
1855
ALTER TABLE "RELEASE_MANAGER"."AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID")
1856
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1857
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1858
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1859
  TABLESPACE "USERS"  ENABLE;
1860
 
1861
ALTER TABLE "RELEASE_MANAGER"."BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID")
1862
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1863
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1864
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1865
  TABLESPACE "USERS"  ENABLE;
1866
 
1867
ALTER TABLE "RELEASE_MANAGER"."BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID")
1868
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1869
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1870
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1871
  TABLESPACE "USERS"  ENABLE;
1872
 
1873
ALTER TABLE "RELEASE_MANAGER"."GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID")
1874
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1875
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1876
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1877
  TABLESPACE "USERS"  ENABLE;
1878
 
1879
ALTER TABLE "RELEASE_MANAGER"."RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID")
1880
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1881
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1882
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1883
  TABLESPACE "USERS"  ENABLE;
1884
 
1885
ALTER TABLE "RELEASE_MANAGER"."PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID")
1886
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1887
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1888
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1889
  TABLESPACE "USERS"  ENABLE;
1890
 
1891
ALTER TABLE "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID")
1892
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1893
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1894
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1895
  TABLESPACE "USERS"  ENABLE;
1896
 
1897
ALTER TABLE "RELEASE_MANAGER"."REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID")
1898
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1899
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1900
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1901
  TABLESPACE "USERS"  ENABLE;
1902
 
1903
ALTER TABLE "RELEASE_MANAGER"."RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID")
1904
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1905
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1906
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1907
  TABLESPACE "USERS"  ENABLE;
1908
 
1909
ALTER TABLE "RELEASE_MANAGER"."CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID")
1910
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1911
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1912
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1913
  TABLESPACE "USERS"  ENABLE;
1914
 
1915
ALTER TABLE "RELEASE_MANAGER"."PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID")
1916
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1917
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1918
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1919
  TABLESPACE "USERS"  ENABLE;
1920
 
1921
ALTER TABLE "RELEASE_MANAGER"."RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID")
1922
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
1923
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
1924
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
1925
  TABLESPACE "USERS"  ENABLE;
1926
 
1927
-- new object type path is: SCHEMA_EXPORT/TABLE/COMMENT
1928
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_ID" IS '';
1929
 
1930
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_NAME" IS '';
1931
 
1932
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PV_ID" IS '';
1933
 
1934
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_VERSION" IS '';
1935
 
1936
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPV_ID" IS '';
1937
 
1938
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPKG_NAME" IS '';
1939
 
1940
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPKG_VERSION" IS '';
1941
 
1942
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."ISS_DB" IS '';
1943
 
1944
 COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."ISS_ID" IS '';
1945
 
1946
 COMMENT ON TABLE "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"  IS '';
1947
 
1948
-- new object type path is: SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
1949
CREATE PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" IS
1950
/*
1951
------------------------------
1952
||  Last Modified:  S.Vukovic
1953
||  Modified Date:  26/Apr/2005
1954
||  Spec Version:   1.0
1955
------------------------------
1956
*/
1957
 
1958
	TYPE typeCur IS REF CURSOR;
1959
 
1960
    /*================================================================================================*/
1961
 
1962
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
1963
 
1964
	/*================================================================================================*/
1965
 
1966
END PK_APP_UTILS;
1967
/
1968
 
1969
CREATE PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" 
1970
IS
1971
/*
1972
------------------------------
1973
||  Author:  Rupesh Solanki
1974
||  Date:    26 October 2006
1975
||  Version:   1.0
1976
------------------------------
1977
*/
1978
 
1979
   /*================================================================================================*/
1980
   PROCEDURE populate_packages_table;
1981
 
1982
   PROCEDURE populate_archive_data_table (
1983
      nrtagid   IN   release_tags.rtag_id%TYPE
1984
   );
1985
 
1986
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1987
 
1988
   PROCEDURE migrate_rtag_to_archive_schema (
1989
      nrtagid   IN   release_tags.rtag_id%TYPE
1990
   );
1991
 
1992
   PROCEDURE clean_up_archive_data_table (
1993
      nrtagid   IN   release_tags.rtag_id%TYPE
1994
   );
1995
 
1996
   PROCEDURE write_action_log (
1997
      nuserid   IN   NUMBER,
1998
      nrtagid   IN   release_tags.rtag_id%TYPE
1999
   );
2000
/*================================================================================================*/
2001
END pk_archive;
2002
/
2003
 
2004
CREATE PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" 
2005
IS
2006
/*
2007
------------------------------
2008
||  Last Modified:  Rupesh Solanki
2009
||  Modified Date:  26/Jun/2007
2010
||  Spec Version:   3.0
2011
------------------------------
2012
*/
2013
 
2014
   /*================================================================================================*/
2015
   PROCEDURE add_product_component (
2016
      npvid           IN   NUMBER,
2017
      sosname         IN   VARCHAR2,
2018
      sorigfilepath   IN   VARCHAR2,
2019
      sfilename       IN   VARCHAR2,
2020
      sdestfilepath   IN   VARCHAR2,
2021
      nbytesize       IN   NUMBER,
2022
      scrccksum       IN   VARCHAR2
2023
   );
2024
 
2025
   PROCEDURE remove_all_product_components (
2026
      npvid     IN   NUMBER,
2027
      sosname   IN   VARCHAR2
2028
   );
2029
 
2030
/*================================================================================================*/
2031
   FUNCTION get_osid (sosname IN VARCHAR2)
2032
      RETURN NUMBER;
2033
 
2034
/*================================================================================================*/
2035
   PROCEDURE update_build_service (
2036
      sdatabaseserver   IN   VARCHAR2,
2037
      swebserver        IN   VARCHAR2,
2038
      smailserver       IN   VARCHAR2,
2039
      smailsender       IN   VARCHAR2,
2040
      sdiskspace        IN   VARCHAR2,
2041
      ssbommanagement   IN   VARCHAR2
2042
   );
2043
 
2044
/*================================================================================================*/
2045
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2);
2046
 
2047
/*================================================================================================*/
2048
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
2049
 
2050
/*================================================================================================*/
2051
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2);
2052
 
2053
/*================================================================================================*/
2054
   PROCEDURE add_daemon (
2055
      sdaemonhostname   IN   VARCHAR2,
2056
      nrtagid           IN   NUMBER,
2057
      ngbeid            IN   NUMBER,
2058
      sgbebuildfilter   IN   VARCHAR2
2059
   );
2060
 
2061
/*================================================================================================*/
2062
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
2063
 
2064
/*================================================================================================*/
2065
   PROCEDURE update_daemon (
2066
      sdaemonhostname   IN   VARCHAR2,
2067
      nrconid           IN   NUMBER,
2068
      ngbeid            IN   NUMBER,
2069
      sgbebuildfilter   IN   VARCHAR2
2070
   );
2071
 
2072
/*================================================================================================*/
2073
   PROCEDURE insert_schedule_info (
2074
      dschedulepause     IN   DATE,
2075
      dscheduleresume    IN   DATE,
2076
      crepeat            IN   VARCHAR2,
2077
      cindefinitepause   IN   VARCHAR2
2078
   );
2079
 
2080
/*================================================================================================*/
2081
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
2082
 
2083
/*================================================================================================*/
2084
   PROCEDURE set_infinite_pause;
2085
 
2086
/*================================================================================================*/
2087
   PROCEDURE set_resume;
2088
 
2089
/*================================================================================================*/
2090
   PROCEDURE delete_out_of_date_schedule;
2091
 
2092
/*================================================================================================*/
2093
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
2094
 
2095
/*================================================================================================*/
2096
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
2097
/*================================================================================================*/
2098
END pk_buildapi;
2099
/
2100
 
2101
CREATE PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" IS
2102
/*
2103
------------------------------
2104
||  Last Modified:  S.Vukovic
2105
||  Modified Date:  30/Mar/2005
2106
||  Spec Version:   1.0
2107
------------------------------
2108
*/
2109
 
2110
	/*================================================================================================*/
2111
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
2112
								  sOsName IN VARCHAR2,
2113
								  sOrigFilePath IN VARCHAR2,
2114
								  sFileName IN VARCHAR2,
2115
								  sDestFilePath IN VARCHAR2,
2116
								  nByteSize IN NUMBER,
2117
								  sCRCcksum IN VARCHAR2 );
2118
 
2119
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
2120
    /*================================================================================================*/
2121
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
2122
	/*================================================================================================*/
2123
 
2124
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
2125
			  					   	 sWebServer IN VARCHAR2,
2126
									 sMailServer IN VARCHAR2,
2127
									 sMailSender IN VARCHAR2);
2128
	/*================================================================================================*/
2129
 
2130
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
2131
	/*================================================================================================*/
2132
 
2133
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
2134
	/*================================================================================================*/
2135
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
2136
	/*================================================================================================*/	        
2137
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
2138
	/*================================================================================================*/	
2139
 
2140
END PK_BUILDAPI_TEST;
2141
/
2142
 
2143
CREATE PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" IS
2144
/*
2145
------------------------------
2146
||  Last Modified:  Rupesh Solanki
2147
||  Modified Date:  29/Jan/2007
2148
||  Spec Version:   1.1
2149
------------------------------
2150
*/
2151
 
2152
	TYPE typeCur IS REF CURSOR;
2153
 
2154
    /*================================================================================================*/
2155
 
2156
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
2157
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2158
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2159
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2160
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2161
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2162
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
2163
 
2164
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2165
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2166
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2167
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2168
 
2169
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
2170
 
2171
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2172
 
2173
 
2174
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2175
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2176
 
2177
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2178
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2179
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2180
 
2181
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2182
 
2183
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
2184
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
2185
 
2186
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
2187
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
2188
							 CloneFromPvId IN NUMBER );
2189
 
2190
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2191
 
2192
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
2193
 
2194
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2195
 
2196
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
2197
 
2198
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
2199
	/*================================================================================================*/
2200
 
2201
END PK_ENVIRONMENT;
2202
/
2203
 
2204
CREATE PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" IS
2205
/*
2206
------------------------------
2207
||  Last Modified:  Rupesh Solanki
2208
||  Modified Date:  29/Jan/2007
2209
||  Spec Version:   1.1
2210
------------------------------
2211
*/
2212
 
2213
	TYPE typeCur IS REF CURSOR;
2214
 
2215
    /*================================================================================================*/
2216
 
2217
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
2218
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2219
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2220
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2221
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2222
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2223
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
2224
 
2225
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2226
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2227
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2228
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2229
 
2230
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
2231
 
2232
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2233
 
2234
 
2235
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2236
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2237
 
2238
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2239
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2240
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2241
 
2242
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2243
 
2244
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
2245
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
2246
 
2247
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
2248
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
2249
							 CloneFromPvId IN NUMBER );
2250
 
2251
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2252
 
2253
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
2254
 
2255
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
2256
 
2257
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
2258
 
2259
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
2260
	/*================================================================================================*/
2261
 
2262
END PK_ENVIRONMENT_test;
2263
/
2264
 
2265
CREATE PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" 
2266
IS
2267
/*
2268
------------------------------
2269
||  Last Modified:  Jeremy Tweddle
2270
||  Modified Date:  24/08/2007
2271
||
2272
------------------------------
2273
*/
2274
   TYPE typecur IS REF CURSOR;
2275
 
2276
/*================================================================================================*/
2277
   PROCEDURE new_version (
2278
      nlastpvid                   IN       NUMBER,
2279
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
2280
      cbuildtype                  IN       CHAR,
2281
      nsettopvid                  IN       NUMBER DEFAULT NULL,
2282
      nrtagid                     IN       NUMBER,
2283
      nuserid                     IN       NUMBER,
2284
      enumissues_state_imported   IN       NUMBER,
2285
      returnpvid                  OUT      NUMBER
2286
   );
2287
 
2288
   PROCEDURE change_state (
2289
      pvid       IN   NUMBER,
2290
      newstate   IN   package_versions.dlocked%TYPE,
2291
      userid     IN   NUMBER
2292
   );
2293
 
2294
   PROCEDURE new_patch (
2295
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
2296
      nparentpvid        IN       NUMBER,
2297
      spatchidlist       IN       VARCHAR2,
2298
      nuserid            IN       NUMBER,
2299
      returnpatchid      OUT      NUMBER
2300
   );
2301
 
2302
   PROCEDURE obsolete_patch (
2303
      patchid            IN   NUMBER,
2304
      isobsolete         IN   CHAR,
2305
      obsoletecomments   IN   VARCHAR2,
2306
      userid             IN   NUMBER
2307
   );
2308
 
2309
   PROCEDURE obsolete_patches (
2310
      spatchidlist       IN   VARCHAR2,
2311
      isobsolete         IN   CHAR,
2312
      obsoletecomments   IN   VARCHAR2,
2313
      userid             IN   NUMBER
2314
   );
2315
 
2316
   PROCEDURE destroy_package (
2317
      pvid               IN       NUMBER,
2318
      overridewarnings   IN       CHAR DEFAULT 'N',
2319
      problemstring      OUT      VARCHAR2
2320
   );
2321
 
2322
   PROCEDURE add_process (
2323
      nprocid         IN   processes.proc_id%TYPE,
2324
      shealthtag      IN   processes.proc_name%TYPE,
2325
      sprocdesc       IN   processes.proc_description%TYPE,
2326
      scmdinterface   IN   processes.run_as%TYPE,
2327
      spkgowner       IN   processes.pkg_owner%TYPE,
2328
      sisinterface    IN   processes.is_interface%TYPE,
2329
      npvid           IN   package_processes.pv_id%TYPE,
2330
      nuserid         IN   NUMBER
2331
   );
2332
 
2333
   PROCEDURE add_package_process (
2334
      nprocidlist   IN   VARCHAR2,
2335
      npvid         IN   package_processes.pv_id%TYPE,
2336
      nuserid       IN   NUMBER
2337
   );
2338
 
2339
 
2340
 
2341
   PROCEDURE remove_process (
2342
      nprocid   IN   package_processes.proc_id%TYPE,
2343
      npvid     IN   package_processes.pv_id%TYPE,
2344
      nuserid   IN   NUMBER
2345
   );
2346
 
2347
   PROCEDURE move_package (
2348
   	  npvid  			  IN package_versions.pv_id%TYPE,
2349
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
2350
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
2351
	  nuserid			  IN NUMBER		 
2352
   ); 
2353
 
2354
   PROCEDURE modify_product_state (
2355
   	  npvid IN package_versions.pv_id%TYPE,
2356
	  nrtagid IN release_tags.rtag_id%TYPE,
2357
	  nstateid IN product_states.state_id%TYPE,
2358
	  nuserid IN NUMBER
2359
   );
2360
 
2361
   PROCEDURE add_code_review_url (
2362
        npvid           IN    NUMBER,
2363
        nprojid         IN    NUMBER,
2364
        surl            IN    VARCHAR2,
2365
        sreason         IN    VARCHAR2,
2366
        ddateofreview   IN    DATE
2367
   );
2368
 
2369
   PROCEDURE update_code_review_url (
2370
        ncrid           IN    NUMBER,
2371
        nprojid         IN    NUMBER,
2372
        surl            IN    VARCHAR2,
2373
        sreason         IN    VARCHAR2
2374
   );
2375
 
2376
   PROCEDURE remove_code_review_url (
2377
        ncrid           IN    NUMBER
2378
   );
2379
/*================================================================================================*/
2380
END pk_package;
2381
/
2382
 
2383
CREATE PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
2384
IS
2385
/*
2386
------------------------------
2387
||  Last Modified:  Rupesh Solanki
2388
||  Modified Date:  18/05/2006
2389
||
2390
------------------------------
2391
*/
2392
   TYPE typecur IS REF CURSOR;
2393
 
2394
/*================================================================================================*/
2395
   PROCEDURE new_version (
2396
      nlastpvid                   IN       NUMBER,
2397
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
2398
      cbuildtype                  IN       CHAR,
2399
      nsettopvid                  IN       NUMBER DEFAULT NULL,
2400
      nrtagid                     IN       NUMBER,
2401
      nuserid                     IN       NUMBER,
2402
      enumissues_state_imported   IN       NUMBER,
2403
      returnpvid                  OUT      NUMBER
2404
   );
2405
 
2406
   PROCEDURE change_state (
2407
      pvid       IN   NUMBER,
2408
      newstate   IN   package_versions.dlocked%TYPE,
2409
      userid     IN   NUMBER
2410
   );
2411
 
2412
   PROCEDURE new_patch (
2413
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
2414
      nparentpvid        IN       NUMBER,
2415
      spatchidlist       IN       VARCHAR2,
2416
      nuserid            IN       NUMBER,
2417
      returnpatchid      OUT      NUMBER
2418
   );
2419
 
2420
   PROCEDURE obsolete_patch (
2421
      patchid            IN   NUMBER,
2422
      isobsolete         IN   CHAR,
2423
      obsoletecomments   IN   VARCHAR2,
2424
      userid             IN   NUMBER
2425
   );
2426
 
2427
   PROCEDURE obsolete_patches (
2428
      spatchidlist       IN   VARCHAR2,
2429
      isobsolete         IN   CHAR,
2430
      obsoletecomments   IN   VARCHAR2,
2431
      userid             IN   NUMBER
2432
   );
2433
 
2434
   PROCEDURE destroy_package (
2435
      pvid               IN       NUMBER,
2436
      overridewarnings   IN       CHAR DEFAULT 'N',
2437
      problemstring      OUT      VARCHAR2
2438
   );
2439
 
2440
   PROCEDURE add_process (
2441
      nprocid         IN   processes.proc_id%TYPE,
2442
      shealthtag      IN   processes.proc_name%TYPE,
2443
      sprocdesc       IN   processes.proc_description%TYPE,
2444
      scmdinterface   IN   processes.run_as%TYPE,
2445
      spkgowner       IN   processes.pkg_owner%TYPE,
2446
      sisinterface    IN   processes.is_interface%TYPE,
2447
      npvid           IN   package_processes.pv_id%TYPE,
2448
      nuserid         IN   NUMBER
2449
   );
2450
 
2451
   PROCEDURE add_package_process (
2452
      nprocidlist   IN   VARCHAR2,
2453
      npvid         IN   package_processes.pv_id%TYPE,
2454
      nuserid       IN   NUMBER
2455
   );
2456
 
2457
 
2458
 
2459
   PROCEDURE remove_process (
2460
      nprocid   IN   package_processes.proc_id%TYPE,
2461
      npvid     IN   package_processes.pv_id%TYPE,
2462
      nuserid   IN   NUMBER
2463
   );
2464
 
2465
   PROCEDURE move_package (
2466
   	  npvid  			  IN package_versions.pv_id%TYPE,
2467
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
2468
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
2469
	  nuserid			  IN NUMBER		 
2470
   ); 
2471
 
2472
PROCEDURE modify_product_state (
2473
   	  npvid IN package_versions.pv_id%TYPE,
2474
	  nstateid IN product_states.state_id%TYPE,
2475
	  nuserid IN NUMBER
2476
   );
2477
/*================================================================================================*/
2478
END pk_package_Test;
2479
/
2480
 
2481
CREATE PACKAGE "RELEASE_MANAGER"."PK_PLANNED" IS
2482
/*
2483
------------------------------
2484
||  Last Modified:  S.Vukovic
2485
||  Modified Date:  6/May/2005
2486
||  Spec Version:   1.0
2487
------------------------------
2488
*/
2489
 
2490
	TYPE typeCur IS REF CURSOR;
2491
 
2492
    /*================================================================================================*/
2493
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2494
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2495
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2496
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
2497
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2498
	/*================================================================================================*/
2499
 
2500
END PK_PLANNED;
2501
/
2502
 
2503
CREATE PACKAGE "RELEASE_MANAGER"."PK_PROJECT" IS
2504
/*
2505
------------------------------
2506
||  Last Modified:  J.Tweddle
2507
||  Modified Date:  23/Aug/2007
2508
||  Spec Version:   1.0
2509
------------------------------
2510
*/
2511
 
2512
    TYPE typecur IS REF CURSOR;
2513
 
2514
    /*------------------------------------------------------------------------*/
2515
    PROCEDURE update_base_url (
2516
        nprojid   IN  projects.proj_id%TYPE,
2517
        sbaseurl  IN  VARCHAR2
2518
    );
2519
    /*------------------------------------------------------------------------*/
2520
 
2521
END pk_project;
2522
/
2523
 
2524
CREATE PACKAGE "RELEASE_MANAGER"."PK_RELEASE" IS
2525
/*
2526
------------------------------
2527
||  Last Modified:  S.Vukovic
2528
||  Modified Date:  12/Sep/2005
2529
||  Body Version:   3.0
2530
------------------------------
2531
*/
2532
 
2533
	TYPE typeCur IS REF CURSOR;
2534
 
2535
    /*================================================================================================*/
2536
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
2537
	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 );
2538
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
2539
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
2540
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
2541
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
2542
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
2543
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
2544
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
2545
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2546
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
2547
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2548
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2549
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2550
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2551
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
2552
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
2553
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2554
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
2555
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
2556
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
2557
 
2558
	/*================================================================================================*/
2559
 
2560
END PK_RELEASE;
2561
/
2562
 
2563
CREATE PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" IS
2564
/*
2565
------------------------------
2566
||  Last Modified:  S.Vukovic
2567
||  Modified Date:  12/Sep/2005
2568
||  Body Version:   3.0
2569
------------------------------
2570
*/
2571
 
2572
	TYPE typeCur IS REF CURSOR;
2573
 
2574
    /*================================================================================================*/
2575
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
2576
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
2577
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
2578
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
2579
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
2580
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
2581
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
2582
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
2583
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
2584
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2585
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2586
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2587
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2588
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2589
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
2590
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
2591
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2592
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
2593
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
2594
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
2595
	/*================================================================================================*/
2596
 
2597
END PK_RELEASE_TEST;
2598
/
2599
 
2600
CREATE PACKAGE "RELEASE_MANAGER"."PK_RMAPI" 
2601
IS
2602
/*
2603
------------------------------
2604
||  Last Modified:  Jeremy Tweddle
2605
||  Modified Date:  08/Feb/2008
2606
||  Body Version:   3.3
2607
------------------------------
2608
*/
2609
   TYPE typecur IS REF CURSOR;
2610
 
2611
/*================================================================================================*/
2612
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
2613
      RETURN typecur;
2614
 
2615
   FUNCTION wip_iteration_package (
2616
      projname        VARCHAR2,
2617
      iterationname   VARCHAR2,
2618
      pkgname         VARCHAR2
2619
   )
2620
      RETURN typecur;
2621
 
2622
   FUNCTION auto_make_release (
2623
      rtagid                   IN   NUMBER,
2624
      pkgname                  IN   VARCHAR2,
2625
      vext                     IN   VARCHAR2,
2626
      newpkgversion            IN   VARCHAR2,
2627
      label                    IN   VARCHAR2,
2628
      dependenciesimportlist   IN   VARCHAR2,
2629
      isrippled                IN   NUMBER,
2630
      username                 IN   VARCHAR2
2631
   )
2632
      RETURN NUMBER;
2633
 
2634
   PROCEDURE import_dependencies (
2635
      pvid                     IN   NUMBER,
2636
      dependenciesimportlist   IN   VARCHAR2,
2637
      userid                   IN   NUMBER
2638
   );
2639
 
2640
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
2641
      RETURN VARCHAR2;
2642
 
2643
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
2644
      RETURN VARCHAR2;
2645
 
2646
   PROCEDURE update_dash_board (rtagid IN NUMBER);
2647
 
2648
   FUNCTION exclude_from_build (
2649
      pvid          IN   NUMBER,
2650
      spkgversion   IN   VARCHAR2,
2651
      rtagid        IN   NUMBER,
2652
      username      IN   VARCHAR2
2653
   )
2654
      RETURN NUMBER;
2655
 
2656
/*================================================================================================*/
2657
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
2658
 
2659
   FUNCTION insert_package_metrics (
2660
      rtagid IN NUMBER,
2661
      pkgname IN VARCHAR2,
2662
      vext IN VARCHAR2,
2663
      metricstring IN VARCHAR2
2664
   )
2665
      RETURN NUMBER;
2666
 
2667
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
2668
 
2669
END pk_rmapi; 
2670
/
2671
 
2672
CREATE PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" IS
2673
/*
2674
------------------------------
2675
||  Last Modified:  S.Vukovic
2676
||  Modified Date:  19/May/2005
2677
||  Spec Version:   2.0
2678
------------------------------
2679
*/
2680
 
2681
	TYPE typeCur IS REF CURSOR;
2682
 
2683
    /*================================================================================================*/
2684
 
2685
	FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur;
2686
 
2687
	FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur;
2688
 
2689
 
2690
	FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, 
2691
							 PkgName IN VARCHAR2, 
2692
							 VExt IN VARCHAR2,
2693
							 NewPkgVersion IN VARCHAR2, 
2694
							 Label IN VARCHAR2,
2695
							 DependenciesImportList IN VARCHAR2,
2696
							 IsRippled IN NUMBER,
2697
							 UserName IN VARCHAR2 ) RETURN NUMBER;	
2698
 
2699
	PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER );
2700
 
2701
    FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2;
2702
 
2703
	PROCEDURE CQ_TEST;
2704
 
2705
	PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER );
2706
	/*================================================================================================*/
2707
 
2708
END PK_RMAPI_test;
2709
/
2710
 
2711
CREATE PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" IS
2712
/*
2713
------------------------------
2714
||  Last Modified:  S.Vukovic
2715
||  Modified Date:  2/May/2005
2716
||  Spec Version:   1.0
2717
------------------------------
2718
*/
2719
 
2720
	TYPE typeCur IS REF CURSOR;
2721
 
2722
    /*================================================================================================*/
2723
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2724
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
2725
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
2726
 
2727
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
2728
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
2729
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
2730
	/*================================================================================================*/
2731
 
2732
END PK_WORK_IN_PROGRESS;
2733
/
2734
 
2735
CREATE PACKAGE "RELEASE_MANAGER"."RM_ISSUES" AS
2736
 
2737
	TYPE T_Cur IS REF CURSOR;
2738
 
2739
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
2740
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
2741
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
2742
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
2743
 
2744
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
2745
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
2746
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
2747
 
2748
END Rm_Issues;
2749
/
2750
 
2751
-- new object type path is: SCHEMA_EXPORT/FUNCTION/FUNCTION
2752
CREATE FUNCTION "RELEASE_MANAGER"."CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
2753
 
2754
/* ---------------------------------------------------------------------------
2755
    Version: 3.0.0
2756
   --------------------------------------------------------------------------- */
2757
 
2758
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
2759
	ProjId NUMBER;
2760
	RowCount NUMBER;
2761
	cReleaseMode CHAR(1);
2762
 
2763
BEGIN
2764
 
2765
	--RETURN 1;
2766
 
2767
 
2768
	/*--------------- Business Rules Here -------------------*/
2769
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
2770
		RETURN 0;
2771
	END IF;
2772
	/*-------------------------------------------------------*/
2773
 
2774
 
2775
 
2776
 
2777
 
2778
 
2779
	/*-- First Check. See if package is used through release reference --*/
2780
	SELECT COUNT(rc.PV_ID) INTO RowCount
2781
	  FROM (
2782
	  		SELECT rl.REF_RTAG_ID
2783
			  FROM RELEASE_LINKS rl
2784
			 WHERE rl.RTAG_ID = nRtagId
2785
	  		) rl,
2786
			RELEASE_CONTENT rc
2787
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
2788
	    AND rc.PV_ID = nPvId;			
2789
 
2790
 
2791
	-- Decide if package can be edited  
2792
	IF RowCount > 0 THEN
2793
		-- Package is referenced from other release, hence cannot be edited
2794
		RETURN 0;	
2795
 
2796
	ELSE
2797
 
2798
		-- Check is only done for releases in restrictive mode
2799
		SELECT rt.OFFICIAL INTO cReleaseMode
2800
		  FROM RELEASE_TAGS rt
2801
		 WHERE rt.RTAG_ID = nRtagId;
2802
 
2803
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
2804
			-- Do not do any firther checking,
2805
			-- Package is editable here
2806
			RETURN 1;
2807
		END IF;	
2808
 
2809
	END IF;
2810
 
2811
 
2812
 
2813
 
2814
	/*-- Further checking --*/
2815
	-- Get proj_id
2816
	SELECT rt.PROJ_ID  INTO  ProjId
2817
	  FROM RELEASE_TAGS rt
2818
	 WHERE rt.RTAG_ID = nRtagId;
2819
 
2820
 
2821
 
2822
	BEGIN
2823
 
2824
		-- Get v_ext
2825
		SELECT pv.V_EXT  INTO  Vext
2826
		  FROM PACKAGE_VERSIONS pv
2827
		 WHERE pv.PV_ID = nPvId;  
2828
 
2829
		EXCEPTION
2830
	    	WHEN NO_DATA_FOUND THEN
2831
	       		Vext := NULL;
2832
 
2833
	END;	 
2834
 
2835
 
2836
	--Temp Hack for Step Project
2837
	IF ProjId != 281 THEN
2838
		-- Find if package can be edited in this project
2839
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
2840
	 		FROM PROJECT_EXTENTIONS pe
2841
			WHERE pe.PROJ_ID != ProjId  
2842
	  		AND pe.EXT_NAME = VExt;
2843
	END IF;		
2844
 
2845
 
2846
	-- Decide if package can be edited  
2847
	IF RowCount > 0 THEN
2848
		-- Package extension is found in other projects, hece NOT EDITABLE
2849
		RETURN 0;
2850
	ELSE
2851
		RETURN 1;	
2852
	END IF;
2853
 
2854
 
2855
END CAN_EDIT_PKG_IN_PROJECT;
2856
/
2857
 
2858
CREATE FUNCTION "RELEASE_MANAGER"."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;
2859
/
2860
 
2861
CREATE FUNCTION "RELEASE_MANAGER"."GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
2862
 
2863
/* ---------------------------------------------------------------------------
2864
    Version: 3.0.0
2865
   --------------------------------------------------------------------------- */
2866
 
2867
	sPkgName VARCHAR2(4000);
2868
	sVext VARCHAR2(4000);
2869
 
2870
BEGIN
2871
 
2872
	-- Get package details
2873
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
2874
	  FROM PACKAGE_VERSIONS pv,
2875
	  	   PACKAGES pkg
2876
	 WHERE pv.PKG_ID = pkg.PKG_ID
2877
	   AND pv.PV_ID = nPvId;
2878
 
2879
 
2880
	-- Generate Label for automated build
2881
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
2882
 
2883
END GET_AUTOMATED_LABEL;
2884
/
2885
 
2886
CREATE FUNCTION "RELEASE_MANAGER"."GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
2887
IS
2888
/* ---------------------------------------------------------------------------
2889
    Version: 1.0.0
2890
   --------------------------------------------------------------------------- */
2891
BEGIN
2892
    IF is_number(s_version) AND LENGTH(s_version) > 3
2893
    THEN
2894
        RETURN MOD(TO_NUMBER(s_version), 1000);
2895
    ELSE
2896
        RETURN 0;
2897
    END IF;
2898
END get_build_number;
2899
/
2900
 
2901
CREATE FUNCTION "RELEASE_MANAGER"."GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
2902
IS
2903
/* ---------------------------------------------------------------------------
2904
    Version: 1.0.0
2905
   --------------------------------------------------------------------------- */
2906
BEGIN
2907
    IF is_number(s_version) AND LENGTH(s_version) > 3
2908
    THEN
2909
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
2910
    ELSE
2911
        RETURN s_version;
2912
    END IF;
2913
END get_patch_version;
2914
/
2915
 
2916
CREATE FUNCTION "RELEASE_MANAGER"."GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
2917
 
2918
/* ---------------------------------------------------------------------------
2919
    Version: 3.0.0
2920
   --------------------------------------------------------------------------- */
2921
 
2922
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
2923
    lastDot NUMBER;
2924
 
2925
BEGIN
2926
    lastDot := INSTR (SSpkg_version, '.', -1);
2927
 
2928
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
2929
    THEN
2930
        -- YES dot separator found --
2931
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
2932
 
2933
        IF IS_VERSION_EXTENSION ( SSV_EXT )
2934
        THEN
2935
            RETURN SSV_EXT;
2936
        ELSE
2937
            RETURN NULL;
2938
        END IF;
2939
 
2940
    ELSE
2941
        -- NO dot separator found --
2942
        RETURN NULL;
2943
    END IF;
2944
 
2945
END GET_V_EXT;
2946
/
2947
 
2948
CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
2949
 
2950
/* ---------------------------------------------------------------------------
2951
    Version: 3.0.0
2952
   --------------------------------------------------------------------------- */
2953
 
2954
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
2955
	pos				   NUMBER;
2956
	in_list			   VARCHAR2(4000) := sInList || ',';
2957
 
2958
BEGIN
2959
 
2960
	IF NOT sInList IS NULL
2961
	THEN
2962
		LOOP
2963
	        EXIT WHEN in_list IS NULL;
2964
	        pos := INSTR ( in_list, ',' );
2965
	        sync_rtags.extend;
2966
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
2967
	        in_list := SUBSTR ( in_list, pos+1 );
2968
		END LOOP;
2969
	END IF;
2970
 
2971
	RETURN sync_rtags;
2972
END IN_LIST_NUMBER;
2973
/
2974
 
2975
CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
2976
 
2977
/* ---------------------------------------------------------------------------
2978
    Version: 3.0.0
2979
   --------------------------------------------------------------------------- */
2980
 
2981
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
2982
	pos				   NUMBER;
2983
	in_list			   VARCHAR2(32767) := sInList || ',';
2984
 
2985
BEGIN
2986
 
2987
	IF NOT sInList IS NULL
2988
	THEN
2989
		LOOP
2990
	        EXIT WHEN in_list IS NULL;
2991
	        pos := INSTR ( in_list, ',' );
2992
	        sync_rtags.extend;
2993
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
2994
	        in_list := SUBSTR ( in_list, pos+1 );
2995
		END LOOP;
2996
	END IF;
2997
 
2998
	RETURN sync_rtags;
2999
END IN_LIST_NUMBER2;
3000
/
3001
 
3002
CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3003
 
3004
/* ---------------------------------------------------------------------------
3005
    Version: 3.1
3006
   --------------------------------------------------------------------------- */
3007
 
3008
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3009
	pos				   NUMBER;
3010
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3011
	val				   VARCHAR2(4000);
3012
 
3013
BEGIN
3014
 
3015
	IF NOT sInList IS NULL
3016
	THEN
3017
		LOOP
3018
	        EXIT WHEN in_list IS NULL;
3019
	        pos := INSTR ( in_list, cSeparator );
3020
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3021
 
3022
			IF (NOT val IS NULL) THEN
3023
		        cItemCollection.extend;
3024
		        cItemCollection(cItemCollection.count) := val;
3025
			END IF;
3026
 
3027
	        in_list := SUBSTR ( in_list, pos+1 );
3028
		END LOOP;
3029
	END IF;
3030
 
3031
	RETURN cItemCollection;
3032
END IN_LIST_VARCHAR2;
3033
/
3034
 
3035
CREATE FUNCTION "RELEASE_MANAGER"."IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3036
IS
3037
   temp_num NUMBER;
3038
/* ---------------------------------------------------------------------------
3039
    Version: 1.0.0
3040
   --------------------------------------------------------------------------- */
3041
BEGIN
3042
   temp_num := TO_NUMBER(p_val);
3043
   RETURN true;
3044
EXCEPTION WHEN VALUE_ERROR THEN
3045
   RETURN false;
3046
END IS_NUMBER;
3047
/
3048
 
3049
CREATE FUNCTION "RELEASE_MANAGER"."IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3050
IS
3051
/* ---------------------------------------------------------------------------
3052
    Version: 3.0.0
3053
   --------------------------------------------------------------------------- */
3054
 
3055
BEGIN
3056
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3057
    THEN
3058
        RETURN FALSE;
3059
    ELSE
3060
        RETURN TRUE;
3061
    END IF;
3062
 
3063
END IS_VERSION_EXTENSION;
3064
/
3065
 
3066
CREATE FUNCTION "RELEASE_MANAGER"."ORA_SYSDATE" 
3067
RETURN DATE
3068
IS
3069
/* ---------------------------------------------------------------------------
3070
    Version: 3.0.0
3071
   --------------------------------------------------------------------------- */
3072
BEGIN
3073
 
3074
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3075
END ORA_SYSDATE;
3076
/
3077
 
3078
CREATE FUNCTION "RELEASE_MANAGER"."ORA_SYSDATETIME" 
3079
RETURN DATE
3080
IS
3081
/* ---------------------------------------------------------------------------
3082
    Version: 3.0.0
3083
   --------------------------------------------------------------------------- */
3084
BEGIN
3085
 
3086
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3087
END ORA_SYSDATETIME;
3088
/
3089
 
3090
CREATE FUNCTION "RELEASE_MANAGER"."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;
3091
/
3092
 
3093
CREATE FUNCTION "RELEASE_MANAGER"."RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
3094
 
3095
/* ---------------------------------------------------------------------------
3096
    Version: 3.0.0
3097
   --------------------------------------------------------------------------- */
3098
 
3099
   returnValue CHAR(1);
3100
 
3101
BEGIN
3102
 
3103
    /*--------------- Business Rules Here -------------------*/
3104
	/*-------------------------------------------------------*/
3105
 
3106
	-- Get release mode
3107
	SELECT rt.OFFICIAL INTO returnValue
3108
	  FROM RELEASE_TAGS rt
3109
	 WHERE rt.RTAG_ID = nRtagId;
3110
 
3111
	RETURN returnValue;
3112
 
3113
END RELEASE_MODE;
3114
/
3115
 
3116
-- new object type path is: SCHEMA_EXPORT/PROCEDURE/PROCEDURE
3117
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_AUTOBUILD_FAILURE_INFO" (
3118
   nprojid     IN   NUMBER,
3119
   nviewid     IN   NUMBER,
3120
   suserlist   IN   VARCHAR2
3121
)
3122
IS
3123
   groupid   NUMBER;
3124
/******************************************************************************
3125
   NAME:       ADD_AUTOBUILD_FAILURE
3126
   PURPOSE:
3127
 
3128
   REVISIONS:
3129
   Ver        Date        Author           Description
3130
   ---------  ----------  ---------------  ------------------------------------
3131
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
3132
 
3133
   NOTES:
3134
 
3135
   Automatically available Auto Replace Keywords:
3136
      Object Name:     ADD_AUTOBUILD_FAILURE
3137
      Sysdate:         11/04/2006
3138
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
3139
      Username:         (set in TOAD Options, Procedure Editor)
3140
      Table Name:       (set in the "New PL/SQL Object" dialog)
3141
 
3142
******************************************************************************/
3143
BEGIN
3144
   BEGIN
3145
      SELECT group_email_id
3146
        INTO groupid
3147
        FROM autobuild_failure
3148
       WHERE proj_id = nprojid AND view_id = nviewid;
3149
   EXCEPTION
3150
      WHEN NO_DATA_FOUND
3151
      THEN
3152
         --  Create Next Sequence Id ---
3153
         SELECT seq_group_email_id.NEXTVAL
3154
           INTO groupid
3155
           FROM DUAL;
3156
 
3157
         INSERT INTO autobuild_failure
3158
                     (group_email_id, proj_id, view_id
3159
                     )
3160
              VALUES (groupid, nprojid, nviewid
3161
                     );
3162
   END;
3163
 
3164
   add_view_members (groupid, suserlist);
3165
END add_autobuild_failure_info;
3166
/
3167
 
3168
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
3169
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
3170
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
3171
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
3172
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
3173
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
3174
                                           ) IS
3175
/* ---------------------------------------------------------------------------
3176
    Version: 3.0.0
3177
   --------------------------------------------------------------------------- */
3178
 
3179
 
3180
BEGIN
3181
 
3182
	 --- Insert into RELEASE_COMPONENTS
3183
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
3184
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
3185
 
3186
 
3187
 
3188
 
3189
END Add_Component;
3190
/
3191
 
3192
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
3193
	   	  		  								  nPkgIdList IN VARCHAR2,
3194
												  nUserId IN NUMBER
3195
	   	  		  								  ) IS
3196
 
3197
/******************************************************************************
3198
   NAME:       ADD_PACKAGE_INTEREST
3199
   PURPOSE:    
3200
 
3201
   REVISIONS:
3202
   Ver        Date        Author           Description
3203
   ---------  ----------  ---------------  ------------------------------------
3204
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
3205
 
3206
   NOTES:
3207
 
3208
   Automatically available Auto Replace Keywords:
3209
      Object Name:     ADD_PACKAGE_INTEREST
3210
      Sysdate:         12/05/2006
3211
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
3212
      Username:         (set in TOAD Options, Procedure Editor)
3213
      Table Name:       (set in the "New PL/SQL Object" dialog)
3214
 
3215
******************************************************************************/
3216
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
3217
   nPkgId NUMBER;
3218
BEGIN
3219
 
3220
	 npkgidcollector := in_list_number2 (nPkgIdList);
3221
 
3222
	FOR i IN 1..npkgidcollector.COUNT
3223
	LOOP
3224
		nPkgId := npkgidcollector(i);
3225
 
3226
	 --- Insert into PACKAGE_INTEREST TABLE
3227
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
3228
	 VALUES(nProjId, nPkgId, nUserId);
3229
	END LOOP;	 
3230
 
3231
 
3232
END ADD_PACKAGE_INTEREST;
3233
/
3234
 
3235
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
3236
	   	  		  								  nPkgIdList IN VARCHAR2,
3237
												  nUserId IN NUMBER
3238
	   	  		  								  ) IS
3239
 
3240
/******************************************************************************
3241
   NAME:       ADD_PACKAGE_INTEREST
3242
   PURPOSE:    
3243
 
3244
   REVISIONS:
3245
   Ver        Date        Author           Description
3246
   ---------  ----------  ---------------  ------------------------------------
3247
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
3248
 
3249
   NOTES:
3250
 
3251
   Automatically available Auto Replace Keywords:
3252
      Object Name:     ADD_PACKAGE_INTEREST
3253
      Sysdate:         12/05/2006
3254
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
3255
      Username:         (set in TOAD Options, Procedure Editor)
3256
      Table Name:       (set in the "New PL/SQL Object" dialog)
3257
 
3258
******************************************************************************/
3259
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
3260
   nPkgId NUMBER;
3261
BEGIN
3262
 
3263
	 npkgidcollector := in_list_number2 (nPkgIdList);
3264
 
3265
	FOR i IN 1..npkgidcollector.COUNT
3266
	LOOP
3267
		nPkgId := npkgidcollector(i);
3268
 
3269
	 --- Insert into PACKAGE_INTEREST TABLE
3270
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
3271
	 VALUES(nProjId, nPkgId, nUserId);
3272
	END LOOP;	 
3273
 
3274
 
3275
END ADD_PACKAGE_INTEREST_TEST;
3276
/
3277
 
3278
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
3279
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
3280
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
3281
                                                     NNuser_id IN NUMBER
3282
                                                    ) IS
3283
/* ---------------------------------------------------------------------------
3284
    Version: 3.1
3285
   --------------------------------------------------------------------------- */
3286
 
3287
    retRTD_ID NUMBER;
3288
 
3289
	CURSOR rtd_cur IS
3290
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
3291
    rtd_rec rtd_cur%ROWTYPE;
3292
 
3293
BEGIN
3294
    --- Seed database with package_name and version if required ---
3295
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
3296
 
3297
	OPEN rtd_cur;
3298
    FETCH rtd_cur INTO rtd_rec;
3299
 
3300
    IF rtd_cur%NOTFOUND
3301
    THEN
3302
		/* Make sure it does not exists already as runtime dependency */
3303
 
3304
		--- Add new Runtime Dependency ---
3305
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
3306
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
3307
 
3308
    	/* LOG ACTION */
3309
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
3310
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
3311
 
3312
	END IF;
3313
 
3314
 
3315
END Add_Runtime_Dependency;
3316
/
3317
 
3318
CREATE PROCEDURE "RELEASE_MANAGER"."ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
3319
 
3320
/******************************************************************************
3321
   NAME:       ADD_VIEW_MEMBERS
3322
   PURPOSE:    
3323
 
3324
   REVISIONS:
3325
   Ver        Date        Author           Description
3326
   ---------  ----------  ---------------  ------------------------------------
3327
   1.0        11/04/2006          1. Created this procedure.
3328
 
3329
   NOTES:
3330
 
3331
   Automatically available Auto Replace Keywords:
3332
      Object Name:     ADD_VIEW_MEMBERS
3333
      Sysdate:         11/04/2006
3334
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
3335
      Username:         (set in TOAD Options, Procedure Editor)
3336
      Table Name:       (set in the "New PL/SQL Object" dialog)
3337
 
3338
******************************************************************************/
3339
CURSOR user_cur IS
3340
	SELECT u.USER_ID
3341
	  FROM USERS u
3342
	 WHERE u.USER_ID IN (
3343
	 	   			   	SELECT * 
3344
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
3345
						);
3346
user_rec user_cur%ROWTYPE;
3347
 
3348
 
3349
BEGIN
3350
 
3351
	 OPEN user_cur;
3352
	 FETCH user_cur INTO user_rec;
3353
 
3354
	 WHILE user_cur%FOUND
3355
	 LOOP
3356
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
3357
	 	 VALUES ( nGroupId, user_rec.USER_ID);
3358
 
3359
	 	 FETCH user_cur INTO user_rec;	 
3360
	 END LOOP;	 
3361
 
3362
 
3363
 
3364
END ADD_VIEW_MEMBERS;
3365
/
3366
 
3367
CREATE PROCEDURE "RELEASE_MANAGER"."BASIC_CLONE" ( nFROMpv_id IN NUMBER,
3368
										  nTOpv_id IN NUMBER,
3369
                                          nRtag_id IN NUMBER,
3370
                                          nUser_id IN NUMBER,
3371
                                          nTOpkg_id IN NUMBER DEFAULT NULL,
3372
                                          enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
3373
/* ---------------------------------------------------------------------------
3374
    Version: 3.5
3375
   --------------------------------------------------------------------------- */
3376
 
3377
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
3378
 
3379
BEGIN
3380
 
3381
------------------------------------- Clone Dependencies ---------------------------------------------------
3382
	IF NOT nRtag_id IS NULL
3383
    THEN
3384
		-- Auto Update Dependencies --
3385
		INSERT INTO PACKAGE_DEPENDENCIES
3386
		    SELECT nTOpv_id AS pv_id,
3387
		           DECODE(nUser_id,
3388
		                  frc.modifier_id,
3389
		                  frc.pv_id,
3390
		                  DECODE(frc.dlocked,
3391
		                         'Y',
3392
		                         frc.pv_id,
3393
		                         dep.dpv_id)
3394
		                  ) AS dpv_id,
3395
		           nTOpkg_id AS pkg_id,
3396
		           dep.dpkg_id,
3397
		           dep.build_type,
3398
				   dep.display_order
3399
		      FROM PACKAGE_DEPENDENCIES dep,
3400
		           PACKAGE_VERSIONS pv,
3401
		           (
3402
		           /* Full Release Contents used for reference*/
3403
		           SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
3404
		           FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
3405
		           WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
3406
		           ) frc
3407
		     WHERE dep.pv_id = nFROMpv_id
3408
		       AND dep.dpv_id = pv.pv_id
3409
		       AND pv.pkg_id = frc.pkg_id(+)
3410
		       AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
3411
 
3412
	ELSE
3413
		-- Clone Dependencies --
3414
		INSERT INTO PACKAGE_DEPENDENCIES
3415
		    SELECT nTOpv_id         AS pv_id,
3416
		           dep.dpv_id,
3417
		           nTOpkg_id        AS pkg_id,
3418
		           dep.dpkg_id,
3419
		           dep.build_type,
3420
				   dep.display_order
3421
		      FROM PACKAGE_DEPENDENCIES dep
3422
		     WHERE dep.pv_id = nFROMpv_id;
3423
 
3424
	END IF;
3425
 
3426
----------------------------------------- Clone Issues -------------------------------------------------------
3427
	IF enumISSUES_STATE_IMPORTED IS NULL
3428
	THEN
3429
        /* All Issues */
3430
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
3431
	         SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
3432
	           FROM CQ_ISSUES
3433
              WHERE pv_id = nFROMpv_id;
3434
	ELSE
3435
    	/* Outstanding Issues Only */
3436
	    INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
3437
	        SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
3438
	          FROM CQ_ISSUES
3439
             WHERE pv_id = nFROMpv_id
3440
               AND iss_state = enumISSUES_STATE_IMPORTED;
3441
	END IF;
3442
 
3443
 
3444
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
3445
	INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
3446
	    SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
3447
	    FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
3448
 
3449
 
3450
--------------------------------------- Clone Additional Notes ------------------------------------------------
3451
	INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
3452
    	 SELECT an.NOTE_ID,
3453
                nTOpv_id AS PV_ID,
3454
                an.NOTE_TITLE,
3455
                an.NOTE_BODY,
3456
                an.MOD_DATE,
3457
                an.MOD_USER
3458
           FROM ADDITIONAL_NOTES an
3459
          WHERE an.PV_ID = nFROMpv_id;
3460
 
3461
 
3462
-------------------------------------------- Clone Unit Tests -------------------------------------------------
3463
	-- Clone only Automatic unit tests --
3464
	INSERT INTO UNIT_TESTS (
3465
							TEST_ID,
3466
							PV_ID,
3467
							TEST_TYPES_FK,
3468
							TEST_SUMMARY,
3469
							COMPLETION_DATE,
3470
							COMPLETED_BY,
3471
							RESULTS_URL,
3472
							RESULTS_ATTACHMENT_NAME,
3473
							NUMOF_TEST
3474
							)
3475
    	 SELECT ut.TEST_ID,
3476
                nTOpv_id AS PV_ID,
3477
                ut.TEST_TYPES_FK,
3478
                ut.TEST_SUMMARY,
3479
                Ora_Sysdate AS COMPLETION_DATE,
3480
                nUser_id AS COMPLETED_BY,
3481
                ut.RESULTS_URL,
3482
				ut.RESULTS_ATTACHMENT_NAME,
3483
				ut.NUMOF_TEST
3484
           FROM UNIT_TESTS ut
3485
          WHERE ut.PV_ID = nFROMpv_id
3486
            AND ut.TEST_TYPES_FK IN ( 5, 7 );
3487
 
3488
	-- Clone only Interactive Unit Tests --
3489
	INSERT INTO UNIT_TESTS (
3490
		   				    TEST_ID, 
3491
							PV_ID,
3492
							TEST_TYPES_FK,
3493
							TEST_SUMMARY
3494
							)
3495
		SELECT ut.TEST_ID, 
3496
			   nTOpv_id AS PV_ID,
3497
			   ut.TEST_TYPES_FK,
3498
			   ut.TEST_SUMMARY
3499
		  FROM UNIT_TESTS ut
3500
		 WHERE ut.PV_ID = nFROMpv_id
3501
		   AND ut.TEST_TYPES_FK IN (6);
3502
 
3503
 
3504
-------------------------------------------- Clone Package Documents ------------------------------------------
3505
	INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
3506
    	 SELECT nTOpv_id AS PV_ID,
3507
		 		pd.test_id,
3508
				pd.doc_num,
3509
				pd.doc_id,
3510
                pd.IS_LATEST
3511
           FROM PACKAGE_DOCUMENTS pd
3512
          WHERE pd.PV_ID = nFROMpv_id;
3513
 
3514
-------------------------------------------- Clone Build Environments -----------------------------------------
3515
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
3516
	SELECT nTOpv_id AS PV_ID,
3517
		   pkgbe.BE_ID,
3518
		   pkgbe.BUILD_TYPE
3519
	  FROM PACKAGE_BUILD_ENV pkgbe
3520
	 WHERE pkgbe.PV_ID = nFROMpv_id;
3521
---------------------------------------------Clone Package Build Info------------------------------------------
3522
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
3523
	SELECT nTOpv_id AS PV_ID, 
3524
		   pkgbinfo.BM_ID,
3525
		   pkgbinfo.BSA_ID
3526
	  FROM PACKAGE_BUILD_INFO pkgbinfo
3527
	 WHERE pkgbinfo.PV_ID = nFROMpv_id;
3528
---------------------------------------------Clone Package Version Processes-----------------------------------
3529
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
3530
	SELECT nTOpv_id AS PV_ID,
3531
		   pp.PROC_ID
3532
	  FROM PACKAGE_PROCESSES pp
3533
	  WHERE pp.PV_ID = nFROMpv_id;		   
3534
---------------------------------------------------------------------------------------------------------------
3535
 
3536
	/* LOG ACTION */
3537
    SELECT pv.PKG_VERSION INTO FromVersion
3538
      FROM PACKAGE_VERSIONS pv
3539
     WHERE pv.PV_ID = nFROMpv_id;
3540
 
3541
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
3542
    			 'Details cloned from: '|| FromVersion );
3543
 
3544
---------------------------------------------------------------------------------------------------------------
3545
 
3546
END Basic_Clone;
3547
/
3548
 
3549
CREATE PROCEDURE "RELEASE_MANAGER"."BUILD_TREE" ( nRtag_id IN NUMBER,
3550
	   	  		  					     retSessionNum OUT NUMBER ) IS
3551
 
3552
/* ---------------------------------------------------------------------------
3553
    Version: 3.0.0
3554
   --------------------------------------------------------------------------- */
3555
    rowCnt 			NUMBER := 0;						-- Iterations counter
3556
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
3557
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
3558
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
3559
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
3560
    sessionNum 		NUMBER;
3561
	levelNum		NUMBER;
3562
 
3563
BEGIN
3564
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
3565
 
3566
	/*
3567
	||	   Start UP THE TREE
3568
	*/
3569
 
3570
 
3571
	/* Packages with no dependencies */    
3572
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
3573
		SELECT sessionNum AS SESSION_NUM,
3574
			   iteration AS LEVEL_NUM,
3575
			   UP_THE_TREE AS DIRECTION,
3576
			   rc.pv_id, pv.pkg_id, pv.v_ext
3577
		  FROM release_content rc,
3578
		  	   package_versions pv
3579
		 WHERE rc.rtag_id = nRtag_id
3580
		   AND rc.pv_id = pv.pv_id
3581
		 MINUS
3582
		SELECT sessionNum AS SESSION_NUM, 
3583
			   iteration AS LEVEL_NUM,
3584
			   UP_THE_TREE AS DIRECTION,
3585
			   dep.pv_id, pv.pkg_id, pv.v_ext
3586
		  FROM package_dependencies dep,
3587
		  	   package_versions pv
3588
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
3589
		   AND dep.pv_id = pv.pv_id;
3590
 
3591
 
3592
	/* Browse UP the build tree */	   
3593
	iteration := iteration + 1;
3594
    LOOP
3595
 
3596
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
3597
			SELECT DISTINCT 
3598
			       sessionNum AS SESSION_NUM,
3599
			       iteration AS LEVEL_NUM,
3600
				   UP_THE_TREE AS DIRECTION, 
3601
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
3602
			  FROM (  
3603
			        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
3604
			          FROM package_dependencies dep,
3605
			               release_content rc,
3606
						   package_versions pv,
3607
						   package_versions dpv
3608
			         WHERE dep.pv_id = rc.pv_id
3609
			           AND rc.rtag_id = nRtag_id
3610
					   AND dep.pv_id = pv.pv_id
3611
					   AND dep.dpv_id = dpv.pv_id
3612
					) rdep,
3613
					temp_tree_browse ttb
3614
			 WHERE rdep.dpkg_id  = ttb.pkg_id
3615
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
3616
			   AND ttb.SESSION_NUM = sessionNum
3617
			   AND ttb.LEVEL_NUM = iteration - 1	
3618
			MINUS
3619
			/* Packages with all depencencies NOT matched */  
3620
			SELECT DISTINCT 
3621
			       sessionNum AS SESSION_NUM,
3622
			       iteration AS LEVEL_NUM, 
3623
				   UP_THE_TREE AS DIRECTION,
3624
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
3625
			  FROM (  
3626
			        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
3627
			          FROM package_dependencies dep,
3628
			               release_content rc,
3629
						   package_versions pv,
3630
						   package_versions dpv
3631
			         WHERE dep.pv_id = rc.pv_id
3632
			           AND rc.rtag_id = nRtag_id
3633
					   AND dep.pv_id = pv.pv_id
3634
					   AND dep.dpv_id = dpv.pv_id
3635
					) rdep,
3636
					(
3637
					 SELECT tb.*
3638
					   FROM temp_tree_browse tb
3639
					  WHERE tb.SESSION_NUM = sessionNum
3640
					) ttb
3641
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
3642
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
3643
			   AND ttb.SESSION_NUM IS NULL;
3644
 
3645
		rowCnt := SQL%ROWCOUNT;
3646
		IF rowCnt > 0 THEN
3647
           iteration := iteration + 1;
3648
		END IF;
3649
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
3650
    END LOOP;
3651
 
3652
	/*---------------------------------------------------------------------------------------------------------------------*/
3653
 
3654
	/*     Check for unresolved dependencies
3655
	||  
3656
	*/
3657
	/* UNRESOLVED */
3658
	 SELECT COUNT(*) INTO rowCnt
3659
	   FROM (
3660
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
3661
			  FROM release_content rc,
3662
			  	   package_versions pv
3663
			 WHERE rc.rtag_id = nRtag_id
3664
			   AND rc.pv_id = pv.pv_id	   
3665
			MINUS
3666
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
3667
			  FROM temp_tree_browse ttb
3668
			 WHERE ttb.session_num = sessionNum
3669
			);
3670
 
3671
 
3672
 
3673
	 IF rowCnt > 0 
3674
	 THEN
3675
	 	 /*     Circular dependencies detected.
3676
		 ||     Try to resolve build order from the top now.
3677
		 ||		Start DOWN THE TREE
3678
		 */
3679
 
3680
		iteration := 0; 
3681
		 /* Top Level packages */	
3682
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
3683
			SELECT sessionNum AS SESSION_NUM,
3684
			       iteration AS LEVEL_NUM,
3685
				   DOWN_THE_TREE AS DIRECTION,
3686
				   pv.pv_id, pv.pkg_id, pv.v_ext
3687
			  FROM (		   
3688
					/* Packages no one depends on ( Top level packages )*/
3689
					( 
3690
					/* All parents*/ 
3691
					SELECT pv.pkg_id, pv.v_ext
3692
			          FROM package_dependencies dep,
3693
			               release_content rc,
3694
						   package_versions pv
3695
			         WHERE dep.pv_id = rc.pv_id
3696
			           AND rc.rtag_id = nRtag_id
3697
					   AND dep.pv_id = pv.pv_id
3698
					 MINUS
3699
					 /* All children */
3700
					SELECT dpv.pkg_id, dpv.v_ext
3701
			          FROM package_dependencies dep,
3702
			               release_content rc,
3703
						   package_versions dpv
3704
			         WHERE dep.pv_id = rc.pv_id
3705
			           AND rc.rtag_id = nRtag_id
3706
					   AND dep.dpv_id = dpv.pv_id
3707
					 ) 
3708
					 MINUS
3709
					/* Packages with resolved dependencies from UP THE TREE */ 
3710
					SELECT ttb.pkg_id, ttb.v_ext
3711
					  FROM temp_tree_browse ttb
3712
					 WHERE ttb.session_num = sessionNum
3713
				  ) tpkg,
3714
				  package_versions pv,
3715
				  release_content rc
3716
			WHERE rc.rtag_id = nRtag_id
3717
			  AND rc.pv_id = pv.pv_id
3718
			  AND tpkg.pkg_id = pv.pkg_id
3719
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
3720
 
3721
 
3722
		 /* Keep taking packages which no one depende on */			  
3723
		 iteration := iteration - 1;  
3724
		 LOOP	  
3725
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
3726
					SELECT sessionNum AS SESSION_NUM,
3727
					       iteration AS LEVEL_NUM,
3728
					       DOWN_THE_TREE AS DIRECTION,
3729
					       pv.pv_id, pv.pkg_id, pv.v_ext
3730
					  FROM (		   
3731
					 	/* All Unresolved */
3732
					 	(
3733
					 	SELECT pv.pkg_id, pv.v_ext
3734
					 	  FROM release_content rc,
3735
					 	  	   package_versions pv
3736
					 	 WHERE rc.rtag_id = nRtag_id
3737
					 	   AND rc.pv_id = pv.pv_id	   
3738
					 	MINUS
3739
					 	SELECT ttb.pkg_id, ttb.v_ext
3740
					 	  FROM temp_tree_browse ttb
3741
					 	 WHERE ttb.session_num = sessionNum
3742
					 	)
3743
					 	 MINUS
3744
					 	(  
3745
					 	 /* Children of Unresolved */  
3746
					 	SELECT dpv.pkg_id, dpv.V_EXT
3747
					 	  FROM (
3748
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
3749
					 			  FROM release_content rc,
3750
					 			  	   package_versions pv
3751
					 			 WHERE rc.rtag_id = nRtag_id
3752
					 			   AND rc.pv_id = pv.pv_id	   
3753
					 			MINUS
3754
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
3755
					 			  FROM temp_tree_browse ttb
3756
					 			 WHERE ttb.session_num = sessionNum
3757
					 		   ) unr,
3758
					 		   package_dependencies dep,
3759
					 		   package_versions dpv
3760
					 	 WHERE unr.pv_id = dep.pv_id
3761
					 	   AND dep.dpv_id = dpv.pv_id
3762
					 	 )  
3763
					   ) tpkg,
3764
					   package_versions pv,
3765
					   release_content rc
3766
					WHERE rc.rtag_id = nRtag_id
3767
					  AND rc.pv_id = pv.pv_id
3768
					  AND tpkg.pkg_id = pv.pkg_id
3769
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
3770
 
3771
            rowCnt := SQL%ROWCOUNT;
3772
        	IF rowCnt > 0 THEN
3773
	           iteration := iteration - 1;
3774
			END IF;
3775
            EXIT WHEN (rowCnt < 1);
3776
     	END LOOP;
3777
 
3778
	 END IF;
3779
 
3780
 
3781
	/*---------------------------------------------------------------------------------------------------------------------*/
3782
 
3783
	/* 
3784
	|| 	 Save results from temp table
3785
	*/	
3786
	/* Clean up build_order table */
3787
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
3788
 
3789
	/* Save UP THE TREE */
3790
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
3791
		SELECT nRtag_id AS rtag_id,
3792
			   ttb.level_num AS step_num, 
3793
			   ttb.PV_ID
3794
		  FROM temp_tree_browse ttb
3795
		 WHERE ttb.session_num = sessionNum
3796
		   AND ttb.direction = UP_THE_TREE;	
3797
 
3798
	/*Get last step_num */
3799
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
3800
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
3801
 
3802
	/* UNRESOLVED */
3803
	 SELECT 
3804
COUNT(*) INTO rowCnt
3805
	   FROM (
3806
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
3807
			  FROM release_content rc,
3808
			  	   package_versions pv
3809
			 WHERE rc.rtag_id = nRtag_id
3810
			   AND rc.pv_id = pv.pv_id	   
3811
			MINUS
3812
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
3813
			  FROM temp_tree_browse ttb
3814
			 WHERE ttb.session_num = sessionNum
3815
			);
3816
 
3817
 
3818
	IF rowCnt > 0
3819
	THEN
3820
		/* Save unresolved packages */
3821
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
3822
		    SELECT  nRtag_id AS rtag_id,
3823
				    levelNum AS step_num, 
3824
				    upv.PV_ID,
3825
					'Y' AS UNRESOLVED
3826
			   FROM (
3827
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
3828
					  FROM release_content rc,
3829
					  	   package_versions pv
3830
					 WHERE rc.rtag_id = nRtag_id
3831
					   AND rc.pv_id = pv.pv_id	   
3832
					MINUS
3833
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
3834
					  FROM temp_tree_browse ttb
3835
					 WHERE ttb.session_num = sessionNum
3836
					) upv;
3837
	END IF;	
3838
 
3839
	/* Save DOWN THE TREE */
3840
	levelNum := 1000;
3841
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
3842
		SELECT nRtag_id AS rtag_id,
3843
			   levelNum + ttb.level_num  AS step_num, 
3844
			   ttb.PV_ID
3845
		  FROM temp_tree_browse ttb
3846
		 WHERE ttb.session_num = sessionNum
3847
		   AND ttb.direction = DOWN_THE_TREE;
3848
 
3849
 
3850
	/*---------------------------------------------------------------------------------------------------------------------*/
3851
 
3852
	/* Clean up temp table */
3853
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
3854
 
3855
	retSessionNum := sessionNum;
3856
END Build_Tree;
3857
/
3858
 
3859
CREATE PROCEDURE "RELEASE_MANAGER"."CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
3860
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
3861
/* ---------------------------------------------------------------------------
3862
    Version: 4.0
3863
   --------------------------------------------------------------------------- */
3864
 
3865
BEGIN
3866
 
3867
    -- Unlock Package
3868
    UPDATE RELEASE_CONTENT rc SET
3869
    	rc.PKG_STATE = 0
3870
    WHERE rc.PV_ID = nPvId
3871
	AND rc.RTAG_ID = nRtagId;
3872
 
3873
    /* LOG ACTION */
3874
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
3875
 
3876
END Change_Package_State;
3877
/
3878
 
3879
CREATE PROCEDURE "RELEASE_MANAGER"."CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
3880
/* ---------------------------------------------------------------------------
3881
    Version: 3.0.0
3882
   --------------------------------------------------------------------------- */
3883
 
3884
	cMode CHAR(1) := NULL;  
3885
	nProjId NUMBER; 
3886
 
3887
BEGIN
3888
 
3889
 
3890
	/*
3891
	Author: Rupesh Solanki
3892
	Modified: 24th October 2006
3893
	Reason: Added the archive mode state into Release Manager 
3894
	||	1 - Open Mode
3895
	||	2 - Restrictive Mode
3896
	||	3 - Closed Mode
3897
	||	4 - CCB Mode
3898
	||	5 - Archive Mode
3899
	*/	
3900
	-- Get project Id
3901
	SELECT rt.PROJ_ID INTO nProjId
3902
	  FROM RELEASE_TAGS rt
3903
	 WHERE rt.RTAG_ID = nRtagId; 
3904
 
3905
	IF nModeCode = 1 THEN
3906
		-- Open Mode
3907
		cMode := 'N';
3908
 
3909
		/* LOG ACTION */
3910
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
3911
 
3912
	ELSIF nModeCode = 2 THEN
3913
		-- Restrictive Mode
3914
		cMode := 'R';
3915
 
3916
		/* LOG ACTION */
3917
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
3918
 
3919
	ELSIF nModeCode = 3 THEN
3920
		-- Closed Mode
3921
		cMode := 'Y';
3922
 
3923
		/* LOG ACTION */
3924
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
3925
 
3926
	ELSIF nModeCode = 4 THEN
3927
		-- CCB Mode
3928
		cMode := 'C';
3929
 
3930
		/* LOG ACTION */
3931
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
3932
 
3933
	ELSIF nModeCode = 5 THEN
3934
		-- Archive Mode
3935
		cMode := 'A';
3936
 
3937
		/* LOG ACTION */
3938
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
3939
 
3940
 
3941
	END IF;
3942
 
3943
 
3944
 
3945
	-- Now update table
3946
	IF NOT cMode IS NULL THEN
3947
		UPDATE RELEASE_TAGS rt SET
3948
		rt.OFFICIAL = cMode
3949
		WHERE rt.RTAG_ID = nRtagId;
3950
 
3951
	END IF;
3952
 
3953
 
3954
END CHANGE_RELEASE_MODE;
3955
/
3956
 
3957
CREATE PROCEDURE "RELEASE_MANAGER"."CHECK_NEW_PATCHES" (
3958
   nrtagid   IN   release_content.rtag_id%TYPE
3959
)
3960
IS
3961
/* ---------------------------------------------------------------------------
3962
    Version: 3.0
3963
   --------------------------------------------------------------------------- */
3964
BEGIN
3965
   /*--------------- Business Rules Here -------------------*/
3966
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
3967
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
3968
   END IF
3969
 
3970
   /*-------------------------------------------------------*/
3971
   UPDATE release_content rc
3972
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
3973
    WHERE rc.pv_id IN (
3974
             SELECT prod.pv_id
3975
               FROM (SELECT   pp.pv_id AS orig_parent_id,
3976
                              COUNT (*) AS num_of_patches
3977
                         FROM release_content rc, package_patches pp
3978
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
3979
                     GROUP BY pp.pv_id) orig,
3980
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
3981
                              COUNT (*) AS num_of_patches
3982
                         FROM release_content rc,
3983
                              package_patches pp,
3984
                              package_dependencies dep,
3985
                              package_versions pv,
3986
                              package_patches prodpp
3987
                        WHERE rc.pv_id = pp.pv_id
3988
                          AND rc.rtag_id = nrtagid
3989
                          AND pp.patch_id = dep.dpv_id
3990
                          AND dep.pv_id = pv.pv_id
3991
                          AND pv.is_patch = 'Y'
3992
                          AND pv.dlocked = 'Y'
3993
                          AND prodpp.patch_id = dep.pv_id
3994
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
3995
                    release_content rc
3996
              WHERE orig.orig_parent_id = prod.pv_id
3997
                AND orig.num_of_patches != prod.num_of_patches
3998
                AND rc.rtag_id = nrtagid
3999
                AND rc.pv_id = prod.pv_id
4000
                AND rc.pkg_state = 0
4001
             UNION
4002
             SELECT   prodpp.pv_id
4003
                 FROM release_content rc,
4004
                      package_patches pp,
4005
                      package_dependencies dep,
4006
                      package_versions pv,
4007
                      package_patches prodpp
4008
                WHERE rc.pv_id = pp.pv_id
4009
                  AND rc.rtag_id = nrtagid
4010
                  AND pp.patch_id = dep.dpv_id
4011
                  AND dep.pv_id = pv.pv_id
4012
                  AND pv.is_patch = 'Y'
4013
                  AND pv.dlocked = 'Y'
4014
                  AND prodpp.patch_id = dep.pv_id
4015
             GROUP BY prodpp.pv_id, pp.pv_id
4016
             MINUS
4017
             SELECT   pp.pv_id
4018
                 FROM release_content rc, package_patches pp
4019
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
4020
             GROUP BY pp.pv_id);
4021
END check_new_patches;
4022
/
4023
 
4024
CREATE PROCEDURE "RELEASE_MANAGER"."CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
4025
IS
4026
/******************************************************************************
4027
   NAME:       DELETE_DO_NOT_RIPPLE
4028
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
4029
               IS RELEASED
4030
 
4031
   REVISIONS:
4032
   Ver        Date        Author           Description
4033
   ---------  ----------  ---------------  ------------------------------------
4034
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
4035
 
4036
   NOTES:
4037
 
4038
   Automatically available Auto Replace Keywords:
4039
      Object Name:     DELETE_DO_NOT_RIPPLE
4040
      Sysdate:         21/04/2006
4041
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
4042
      Username:         (set in TOAD Options, Procedure Editor)
4043
      Table Name:       (set in the "New PL/SQL Object" dialog)
4044
 
4045
******************************************************************************/
4046
BEGIN
4047
   DELETE FROM do_not_ripple
4048
         WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id
4049
                                                     FROM release_content
4050
                                                    WHERE rtag_id = nrtagid);
4051
END clean_do_not_ripple;
4052
/
4053
 
4054
CREATE PROCEDURE "RELEASE_MANAGER"."CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
4055
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
4056
											 nUserId IN NUMBER ) IS
4057
/* ---------------------------------------------------------------------------
4058
    Version: 4.0
4059
   --------------------------------------------------------------------------- */
4060
 
4061
BEGIN
4062
 
4063
    -- Clear Advisory Ripple Package
4064
    DELETE FROM ADVISORY_RIPPLE
4065
	WHERE PV_ID = nPvId
4066
	AND RTAG_ID = nRtagId;
4067
 
4068
    /* LOG ACTION */
4069
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
4070
 
4071
	/*Rebuild_Environment(nRtagId);*/
4072
 
4073
END Clear_Advisory_Ripple;
4074
/
4075
 
4076
CREATE PROCEDURE "RELEASE_MANAGER"."CLONED_PACKAGE_PROCESSES" 
4077
IS
4078
 
4079
proc_id NUMBER;
4080
/******************************************************************************
4081
   NAME:       DELETE_DO_NOT_RIPPLE
4082
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
4083
               IS RELEASED
4084
 
4085
   REVISIONS:
4086
   Ver        Date        Author           Description
4087
   ---------  ----------  ---------------  ------------------------------------
4088
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
4089
 
4090
   NOTES:
4091
 
4092
   Automatically available Auto Replace Keywords:
4093
      Object Name:     DELETE_DO_NOT_RIPPLE
4094
      Sysdate:         21/04/2006
4095
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
4096
      Username:         (set in TOAD Options, Procedure Editor)
4097
      Table Name:       (set in the "New PL/SQL Object" dialog)
4098
 
4099
******************************************************************************/
4100
   CURSOR ripple_cur
4101
   IS
4102
      select distinct proc_id, prod_id from deployment_manager.processes_config;
4103
 
4104
   ripple_rec   ripple_cur%ROWTYPE;
4105
BEGIN
4106
   OPEN ripple_cur;
4107
 
4108
   FETCH ripple_cur
4109
    INTO ripple_rec;
4110
 
4111
   WHILE ripple_cur%FOUND
4112
   LOOP
4113
 
4114
 
4115
 
4116
insert into package_processes (PROC_ID, PV_ID) 
4117
values( ripple_rec.proc_id, ripple_rec.prod_id);
4118
 
4119
      FETCH ripple_cur
4120
       INTO ripple_rec;
4121
   END LOOP;
4122
END CLONED_PACKAGE_PROCESSES;
4123
/
4124
 
4125
CREATE PROCEDURE "RELEASE_MANAGER"."CLONED_PROCESSES" 
4126
IS
4127
 
4128
proc_id NUMBER;
4129
/******************************************************************************
4130
   NAME:       DELETE_DO_NOT_RIPPLE
4131
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
4132
               IS RELEASED
4133
 
4134
   REVISIONS:
4135
   Ver        Date        Author           Description
4136
   ---------  ----------  ---------------  ------------------------------------
4137
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
4138
 
4139
   NOTES:
4140
 
4141
   Automatically available Auto Replace Keywords:
4142
      Object Name:     DELETE_DO_NOT_RIPPLE
4143
      Sysdate:         21/04/2006
4144
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
4145
      Username:         (set in TOAD Options, Procedure Editor)
4146
      Table Name:       (set in the "New PL/SQL Object" dialog)
4147
 
4148
******************************************************************************/
4149
   CURSOR ripple_cur
4150
   IS
4151
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
4152
 
4153
   ripple_rec   ripple_cur%ROWTYPE;
4154
BEGIN
4155
   OPEN ripple_cur;
4156
 
4157
   FETCH ripple_cur
4158
    INTO ripple_rec;
4159
 
4160
   WHILE ripple_cur%FOUND
4161
   LOOP
4162
 
4163
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
4164
 
4165
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
4166
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
4167
 
4168
      FETCH ripple_cur
4169
       INTO ripple_rec;
4170
   END LOOP;
4171
END CLONED_PROCESSES;
4172
/
4173
 
4174
CREATE PROCEDURE "RELEASE_MANAGER"."DELETE_AUTOBUILD_FAILURE_INFO" 
4175
IS
4176
/******************************************************************************
4177
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
4178
   PURPOSE:
4179
 
4180
   REVISIONS:
4181
   Ver        Date        Author           Description
4182
   ---------  ----------  ---------------  ------------------------------------
4183
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
4184
 
4185
   NOTES:
4186
 
4187
   Automatically available Auto Replace Keywords:
4188
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
4189
      Sysdate:         2/06/2006
4190
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
4191
      Username:         (set in TOAD Options, Procedure Editor)
4192
      Table Name:       (set in the "New PL/SQL Object" dialog)
4193
 
4194
******************************************************************************/
4195
BEGIN
4196
   DELETE FROM autobuild_failure
4197
         WHERE group_email_id NOT IN (SELECT group_email_id
4198
                                        FROM members_group);
4199
END delete_autobuild_failure_info;
4200
/
4201
 
4202
CREATE PROCEDURE "RELEASE_MANAGER"."DEPLOY_TO_RELEASE" IS
4203
 
4204
/******************************************************************************
4205
 
4206
 
4207
******************************************************************************/
4208
 
4209
	CURSOR curInfo IS
4210
    SELECT DISTINCT
4211
        qry.DPV_ID
4212
     FROM (
4213
             SELECT dep.*,
4214
                    LEVEL AS LEVEL_NUM
4215
               FROM PACKAGE_DEPENDENCIES dep
4216
             START WITH dep.PV_ID IN ( 
4217
 
4218
                        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,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
4219
 
4220
                        ) 
4221
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
4222
 		) qry,
4223
 		PACKAGES pkg,
4224
		PACKAGE_VERSIONS pv
4225
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
4226
         and (pv.is_patch is null or pv.is_patch = 'N');
4227
    recInfo curInfo%ROWTYPE;
4228
 
4229
 
4230
BEGIN
4231
 
4232
	OPEN curInfo;
4233
    FETCH curInfo INTO recInfo;
4234
 
4235
	WHILE curInfo%FOUND
4236
	LOOP
4237
 
4238
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
4239
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
4240
 
4241
    FETCH curInfo INTO recInfo;
4242
 
4243
	END LOOP;
4244
 
4245
	CLOSE curInfo;
4246
 
4247
 
4248
 
4249
 
4250
END DEPLOY_TO_RELEASE; /
4251
 
4252
CREATE PROCEDURE "RELEASE_MANAGER"."DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
4253
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
4254
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
4255
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
4256
											   nUserId IN NUMBER) IS
4257
ext VARCHAR2(50);
4258
 
4259
 
4260
 
4261
 
4262
BEGIN
4263
 
4264
	--Extract the package version extension
4265
	SELECT V_EXT into ext
4266
	FROM PACKAGE_VERSIONS
4267
	WHERE PV_ID = nPvId; 
4268
 
4269
    -- Deprecate Package
4270
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
4271
	VALUES (nRtagId, nPkgId, sComments, ext);
4272
 
4273
	IF ext IS NOT NULL THEN
4274
	   UPDATE RELEASE_CONTENT 
4275
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
4276
	   WHERE RTAG_ID = nRtagId
4277
	   AND PV_ID IN (SELECT PV.PV_ID 
4278
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
4279
				  	WHERE PKG.PKG_ID = PV.PKG_ID
4280
				  	AND PV.V_EXT = ext
4281
				  	AND PKG.PKG_ID = nPkgId
4282
				 	);						
4283
	ELSE
4284
	   UPDATE RELEASE_CONTENT 
4285
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
4286
	   WHERE RTAG_ID = nRtagId
4287
	   AND PV_ID IN (SELECT PV.PV_ID 
4288
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
4289
				  	WHERE PKG.PKG_ID = PV.PKG_ID
4290
				  	AND PV.V_EXT IS NULL
4291
				  	AND PKG.PKG_ID = nPkgId
4292
				 	);
4293
	END IF;
4294
 
4295
	UPDATE RELEASE_CONTENT
4296
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
4297
	WHERE RTAG_ID = nRtagId
4298
	AND PV_ID IN (		   SELECT DISTINCT
4299
 	 		  	 		   qry.PV_ID
4300
						        FROM (
4301
								 	  SELECT dep.*,
4302
									  LEVEL AS LEVEL_NUM
4303
									  FROM PACKAGE_DEPENDENCIES dep 
4304
 								START WITH dep.DPV_ID IN ( nPvId ) 
4305
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
4306
 								) qry,
4307
								PACKAGES pkg,
4308
								PACKAGE_VERSIONS pv,
4309
								RELEASE_CONTENT rc
4310
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
4311
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
4312
							 AND rc.DEPRECATED_STATE IS NULL
4313
				 );			 
4314
 
4315
    /* LOG ACTION */
4316
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
4317
 
4318
 
4319
END Deprecate_Package;
4320
/
4321
 
4322
CREATE PROCEDURE "RELEASE_MANAGER"."DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4323
/
4324
 
4325
CREATE PROCEDURE "RELEASE_MANAGER"."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;
4326
/
4327
 
4328
CREATE PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
4329
														 nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
4330
                                                         sIgnoreIdList IN VARCHAR2,
4331
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
4332
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
4333
/* ---------------------------------------------------------------------------
4334
    Version: 5.0
4335
   --------------------------------------------------------------------------- */
4336
 
4337
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4338
ReleaseLocation VARCHAR2(4000);
4339
ActionTypeId NUMBER;
4340
 
4341
BEGIN
4342
 
4343
 
4344
   	IF (NOT bDoPatchIgnore) THEN
4345
    	/* Manual Ignore Warnings */
4346
        oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
4347
 
4348
 
4349
        /* Log Action */
4350
        -- Get Release Location
4351
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
4352
		  FROM PROJECTS proj,
4353
		  	   RELEASE_TAGS rt
4354
		 WHERE rt.PROJ_ID = proj.PROJ_ID
4355
		   AND rt.RTAG_ID = nRtagId;
4356
 
4357
        -- Get Action Type Id for IGNORE_ON
4358
        SELECT act.ACTTYPE_ID INTO ActionTypeId
4359
	      FROM ACTION_TYPE act
4360
	     WHERE act.NAME = 'ignore_on';
4361
 
4362
        -- Get Ignored (Current MINUS Old)
4363
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
4364
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
4365
		  FROM (
4366
		      SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
4367
		        FROM PACKAGE_VERSIONS pv
4368
		       WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4369
		      MINUS
4370
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
4371
		        FROM IGNORE_WARNINGS igw
4372
		       WHERE igw.RTAG_ID = nRtagId
4373
		         AND igw.PV_ID = nPvId
4374
		       ) qry,
4375
		       PACKAGE_VERSIONS pv,
4376
		       PACKAGES pkg,
4377
		       RELEASE_CONTENT rc,
4378
		       PACKAGE_VERSIONS rpv
4379
		 WHERE pv.PKG_ID = pkg.PKG_ID
4380
		   AND rc.RTAG_ID = nRtagId
4381
		   AND rc.PV_ID = rpv.PV_ID
4382
		   AND rpv.PKG_ID = pv.PKG_ID
4383
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
4384
		   AND qry.DPV_ID = pv.PV_ID;
4385
 
4386
 
4387
        -- Get Action Type Id for IGNORE_OFF
4388
        SELECT act.ACTTYPE_ID INTO ActionTypeId
4389
	      FROM ACTION_TYPE act
4390
	     WHERE act.NAME = 'ignore_off';
4391
 
4392
        -- Get UnIgnored (Old MINUS Current)
4393
        INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
4394
		SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
4395
		  FROM (
4396
		      SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
4397
		          FROM IGNORE_WARNINGS igw
4398
		         WHERE igw.RTAG_ID = nRtagId
4399
		           AND igw.PV_ID = nPvId
4400
                MINUS
4401
                SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
4402
		          FROM PACKAGE_VERSIONS pv
4403
		         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
4404
		       ) qry,
4405
		       PACKAGE_VERSIONS pv,
4406
		       PACKAGES pkg,
4407
		       RELEASE_CONTENT rc,
4408
		       PACKAGE_VERSIONS rpv
4409
		 WHERE pv.PKG_ID = pkg.PKG_ID
4410
		   AND rc.RTAG_ID = nRtagId
4411
		   AND rc.PV_ID = rpv.PV_ID
4412
		   AND rpv.PKG_ID = pv.PKG_ID
4413
		   AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
4414
		   AND qry.DPV_ID = pv.PV_ID;
4415
 
4416
 
4417
 
4418
       	-- Delete Current Ignore Warnings
4419
	    DELETE
4420
	      FROM IGNORE_WARNINGS igw
4421
	     WHERE igw.RTAG_ID = nRtagId
4422
	       AND igw.PV_ID = nPvId
4423
	       AND igw.IS_PATCH_IGNORE IS NULL;
4424
 
4425
 
4426
        IF (oIgnoreIdCollector.COUNT > 0) THEN
4427
		    -- Insert Ignore Warnings
4428
		    INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
4429
		    SELECT nRtagId,
4430
	        	   nPvId,
4431
	               pv.PV_ID AS DPV_ID
4432
	          FROM PACKAGE_VERSIONS pv
4433
	         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4434
        END IF;
4435
 
4436
 
4437
		-- Touch Release if package is in Release Area
4438
		IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN
4439
			Touch_Release (nRtagId);
4440
		END IF;
4441
 
4442
	ELSE
4443
       	/* Patch Ignore Warnings */
4444
 
4445
        -- Delete Current Patch Ignore Warnings
4446
	    DELETE
4447
	      FROM IGNORE_WARNINGS igw
4448
	     WHERE igw.RTAG_ID = nRtagId
4449
	       AND igw.IS_PATCH_IGNORE = 'Y';
4450
 
4451
 
4452
        -- Delete Manual Ignores that need to be Patch Ignores
4453
	    DELETE
4454
	      FROM IGNORE_WARNINGS igw
4455
	     WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
4456
         	(
4457
				SELECT DISTINCT
4458
                       nRtagId,
4459
					   err.PV_ID,
4460
                       err.ERR_DPV AS DPV_ID
4461
				  FROM
4462
				       (
4463
				       /* Full Release Contents used for reference*/
4464
				       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
4465
				         FROM release_content rel, package_versions rpv
4466
				        WHERE rel.pv_id = rpv.pv_id
4467
				          AND rtag_id = nRtagId
4468
				       ) frc,
4469
				       (
4470
				        /* DPV_IDs not fount in release*/
4471
				        SELECT dep.pv_id, dep.dpv_id AS err_dpv
4472
				          FROM package_dependencies dep
4473
				         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
4474
				           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
4475
				       ) err,
4476
				       (
4477
				        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
4478
				          FROM PACKAGE_PATCHES pp,
4479
				          	   PACKAGE_DEPENDENCIES dep,
4480
				          	   RELEASE_CONTENT rc
4481
				         WHERE rc.RTAG_ID = nRtagId
4482
				           AND rc.PV_ID = pp.PV_ID
4483
				           AND dep.PV_ID = pp.PATCH_ID
4484
				       ) pp,
4485
				       package_versions errpkg,
4486
				       package_versions errpv
4487
				 WHERE err.err_dpv = errpv.pv_id
4488
				   AND errpv.pkg_id = frc.pkg_id(+)
4489
				   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
4490
				   AND err.pv_id = errpkg.pv_id
4491
				   AND err.PV_ID = pp.PV_ID
4492
				   AND frc.PV_ID = pp.DPV_ID
4493
			);
4494
 
4495
        /*
4496
        ---------------------------------------------------
4497
        --  Make sure that select statement above and below are same
4498
        ---------------------------------------------------
4499
        */
4500
 
4501
 
4502
		-- Insert Patch Ignores
4503
		INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
4504
		SELECT DISTINCT
4505
			   nRtagId,
4506
		       err.PV_ID,
4507
		       err.ERR_DPV AS DPV_ID,
4508
		       'Y'
4509
		  FROM
4510
		       (
4511
		       /* Full Release Contents used for reference*/
4512
		       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
4513
		         FROM release_content rel, package_versions rpv
4514
		        WHERE rel.pv_id = rpv.pv_id
4515
		          AND rtag_id = nRtagId
4516
		       ) frc,
4517
		       (
4518
		        /* DPV_IDs not fount in release*/
4519
		        SELECT dep.pv_id, dep.dpv_id AS err_dpv
4520
		          FROM package_dependencies dep
4521
		         WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
4522
		           AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
4523
		       ) err,
4524
		       (
4525
		        SELECT DISTINCT pp.PV_ID, dep.DPV_ID
4526
		          FROM PACKAGE_PATCHES pp,
4527
		          	   PACKAGE_DEPENDENCIES dep,
4528
		          	   RELEASE_CONTENT rc
4529
		         WHERE rc.RTAG_ID = nRtagId
4530
		           AND rc.PV_ID = pp.PV_ID
4531
		           AND dep.PV_ID = pp.PATCH_ID
4532
		       ) pp,
4533
		       package_versions errpkg,
4534
		       package_versions errpv
4535
		 WHERE err.err_dpv = errpv.pv_id
4536
		   AND errpv.pkg_id = frc.pkg_id(+)
4537
		   AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
4538
		   AND err.pv_id = errpkg.pv_id
4539
		   AND err.PV_ID = pp.PV_ID
4540
		   AND frc.PV_ID = pp.DPV_ID;
4541
 
4542
 
4543
    END IF;
4544
 
4545
 
4546
END Ignore_Dependency_Warnings;
4547
/
4548
 
4549
CREATE PROCEDURE "RELEASE_MANAGER"."INSERT_INTO_PACKAGE_BUILD_INFO" IS
4550
 
4551
/******************************************************************************
4552
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
4553
   PURPOSE:    
4554
 
4555
   REVISIONS:
4556
   Ver        Date        Author           Description
4557
   ---------  ----------  ---------------  ------------------------------------
4558
   1.0        6/12/2006          1. Created this procedure.
4559
 
4560
   NOTES:
4561
 
4562
   Automatically available Auto Replace Keywords:
4563
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
4564
      Sysdate:         6/12/2006
4565
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4566
      Username:         (set in TOAD Options, Procedure Editor)
4567
      Table Name:       (set in the "New PL/SQL Object" dialog)
4568
 
4569
******************************************************************************/
4570
 
4571
	CURSOR curInfo IS
4572
    SELECT PV_ID
4573
	FROM PACKAGE_BUILD_ENV
4574
	WHERE BE_ID IN (11, 12);
4575
    recInfo curInfo%ROWTYPE;
4576
 
4577
 
4578
BEGIN
4579
 
4580
	OPEN curInfo;
4581
    FETCH curInfo INTO recInfo;
4582
 
4583
	WHILE curInfo%FOUND
4584
	LOOP
4585
 
4586
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
4587
		VALUES( recInfo.PV_ID, 2, 5);
4588
 
4589
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
4590
 
4591
		FETCH curInfo INTO recInfo;
4592
 
4593
	END LOOP;
4594
 
4595
	CLOSE curInfo;
4596
 
4597
 
4598
 
4599
 
4600
END INSERT_INTO_PACKAGE_BUILD_INFO;
4601
/
4602
 
4603
CREATE PROCEDURE "RELEASE_MANAGER"."INSERT_MULTIPLE_STICKY_NOTES" IS
4604
 
4605
/******************************************************************************
4606
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
4607
   PURPOSE:    
4608
 
4609
   REVISIONS:
4610
   Ver        Date        Author           Description
4611
   ---------  ----------  ---------------  ------------------------------------
4612
   1.0        6/12/2006          1. Created this procedure.
4613
 
4614
   NOTES:
4615
 
4616
   Automatically available Auto Replace Keywords:
4617
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
4618
      Sysdate:         6/12/2006
4619
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
4620
      Username:         (set in TOAD Options, Procedure Editor)
4621
      Table Name:       (set in the "New PL/SQL Object" dialog)
4622
 
4623
******************************************************************************/
4624
 
4625
	CURSOR curInfo IS
4626
    SELECT PV_ID
4627
	FROM PACKAGE_BUILD_ENV
4628
	WHERE BE_ID IN (11, 12);
4629
    recInfo curInfo%ROWTYPE;
4630
 
4631
 
4632
BEGIN
4633
 
4634
	OPEN curInfo;
4635
    FETCH curInfo INTO recInfo;
4636
 
4637
	WHILE curInfo%FOUND
4638
	LOOP
4639
 
4640
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
4641
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
4642
 
4643
		FETCH curInfo INTO recInfo;
4644
 
4645
	END LOOP;
4646
 
4647
	CLOSE curInfo;
4648
 
4649
 
4650
 
4651
 
4652
END INSERT_MULTIPLE_STICKY_NOTES;
4653
/
4654
 
4655
CREATE PROCEDURE "RELEASE_MANAGER"."LEVEL_N_CONFLICTS" (
4656
   nnrtag_id       IN       NUMBER,
4657
   nnsession_num   IN       NUMBER,
4658
   nnrowcnt        OUT      NUMBER,
4659
   nniteration     IN       NUMBER
4660
)
4661
IS
4662
/* ---------------------------------------------------------------------------
4663
    Version: 3.0.1
4664
   --------------------------------------------------------------------------- */
4665
   previteration   NUMBER := nniteration - 1;
4666
BEGIN
4667
   /* ---------  LEVEL 1 CONFILCTS -----------
4668
   || Following states are used:
4669
   || 0 -> NOT FOUND
4670
   || 1 -> MAJOR
4671
   || 2 -> MINOR MINOR
4672
   */
4673
   INSERT INTO temp_env_states
4674
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
4675
                      pv.pv_id, pv.pkg_id, pv.v_ext,
4676
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
4677
                 FROM package_dependencies dep,
4678
                      package_versions dpv,
4679
                      package_versions pv,
4680
                      release_content rel,
4681
                      temp_env_states tes
4682
                WHERE rel.pv_id = dep.pv_id
4683
                  AND rel.rtag_id = nnrtag_id
4684
                  AND dep.pv_id = pv.pv_id
4685
                  AND dep.dpv_id = dpv.pv_id
4686
                  AND dpv.pkg_id = tes.pkg_id
4687
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
4688
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
4689
                  AND tes.session_num = nnsession_num
4690
                  AND tes.level_num = previteration
4691
                  AND (dep.pv_id, dep.dpv_id) IN 
4692
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
4693
                                                 || packages already stored in Temp Table.
4694
                                                 */
4695
                      (
4696
                         SELECT pd.pv_id, pd.dpv_id
4697
                           FROM package_dependencies pd, release_content rc
4698
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
4699
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
4700
                         MINUS
4701
                         SELECT igw.pv_id, igw.dpv_id
4702
                           FROM ignore_warnings igw
4703
                          WHERE igw.rtag_id = nnrtag_id);
4704
 
4705
   nnrowcnt := SQL%ROWCOUNT;
4706
END level_n_conflicts;
4707
/
4708
 
4709
CREATE PROCEDURE "RELEASE_MANAGER"."LEVEL_ONE_CONFLICTS" (
4710
   nnrtag_id       IN   NUMBER,
4711
   nnsession_num   IN   NUMBER
4712
)
4713
IS
4714
/* ---------------------------------------------------------------------------
4715
    Version: 3.0.0
4716
   --------------------------------------------------------------------------- */
4717
BEGIN
4718
   /* ---------  LEVEL 1 CONFILCTS -----------
4719
   || Following states are used:
4720
   || 0 -> NOT FOUND
4721
   || 1 -> MAJOR
4722
   || 2 -> MINOR MINOR
4723
   */
4724
   INSERT INTO temp_env_states
4725
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
4726
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
4727
                      DECODE (frc.v_nmm,
4728
                              NULL, 0,
4729
                              errpv.v_nmm, DECODE (frc.v_mm,
4730
                                                   errpv.v_mm, NULL,
4731
                                                   2
4732
                                                  ),
4733
                              1
4734
                             ) AS MESSAGE
4735
                 FROM (
4736
                       /* Full Release Contents used for reference*/
4737
                       SELECT rpv.pkg_id,
4738
                              NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
4739
                              rpv.pkg_version, rpv.v_nmm, rpv.v_mm
4740
                         FROM release_content rel, package_versions rpv
4741
                        WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc,
4742
                      (
4743
                       /* DPV_IDs not fount in release*/
4744
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
4745
                         FROM package_dependencies dep
4746
                        WHERE dep.pv_id IN (SELECT pv_id
4747
                                              FROM release_content
4748
                                             WHERE rtag_id = nnrtag_id)
4749
                          AND NOT dep.dpv_id IN (SELECT pv_id
4750
                                                   FROM release_content
4751
                                                  WHERE rtag_id = nnrtag_id)
4752
                       MINUS
4753
                       /* MINUS Dependencies to be ignored */
4754
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
4755
                         FROM ignore_warnings igw
4756
                        WHERE rtag_id = nnrtag_id) err,
4757
                      package_versions errpkg,
4758
                      package_versions errpv
4759
                WHERE err.err_dpv = errpv.pv_id
4760
                  AND errpv.pkg_id = frc.pkg_id(+)
4761
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
4762
                  AND err.pv_id = errpkg.pv_id;
4763
END level_one_conflicts;
4764
/
4765
 
4766
CREATE PROCEDURE "RELEASE_MANAGER"."LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
4767
											 nUserId IN NUMBER ) IS
4768
/* ---------------------------------------------------------------------------
4769
    Version: 4.0
4770
   --------------------------------------------------------------------------- */
4771
 
4772
BEGIN
4773
 
4774
    -- Lock Package
4775
    UPDATE PACKAGE_VERSIONS pv SET
4776
    	pv.DLOCKED = 'Y'
4777
    WHERE pv.PV_ID = nPvId;
4778
 
4779
    /* LOG ACTION */
4780
   	Log_Action ( nPvId, 'lock_package', nUserId );
4781
 
4782
END Lock_Package;
4783
/
4784
 
4785
CREATE PROCEDURE "RELEASE_MANAGER"."LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
4786
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
4787
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
4788
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
4789
/* ---------------------------------------------------------------------------
4790
    Version: 3.0
4791
   --------------------------------------------------------------------------- */
4792
 
4793
    ActionTypeId NUMBER;
4794
 
4795
BEGIN
4796
 
4797
    -- Get Action Type FK
4798
    SELECT act.ACTTYPE_ID INTO ActionTypeId
4799
      FROM ACTION_TYPE act
4800
     WHERE act.NAME = enumActionTypeName;
4801
 
4802
 
4803
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
4804
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
4805
 
4806
 
4807
END Log_Action;
4808
/
4809
 
4810
CREATE PROCEDURE "RELEASE_MANAGER"."LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
4811
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
4812
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
4813
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
4814
/* ---------------------------------------------------------------------------
4815
    Version: 3.0
4816
   --------------------------------------------------------------------------- */
4817
 
4818
    ActionTypeId NUMBER;
4819
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4820
 
4821
BEGIN
4822
 
4823
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
4824
 
4825
    -- Get Action Type FK
4826
    SELECT act.ACTTYPE_ID INTO ActionTypeId
4827
      FROM ACTION_TYPE act
4828
     WHERE act.NAME = enumActionTypeName;
4829
 
4830
    -- Log Action
4831
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
4832
    SELECT nUserId,
4833
    	   ORA_SYSDATETIME,
4834
           pv.PV_ID,
4835
           sAdditionalComments,
4836
           ActionTypeId
4837
      FROM PACKAGE_VERSIONS pv
4838
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
4839
 
4840
 
4841
END Log_Action_Bulk;
4842
/
4843
 
4844
CREATE PROCEDURE "RELEASE_MANAGER"."LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
4845
												 enumActionTypeName IN VARCHAR2,
4846
		                                         nUserId IN NUMBER,
4847
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
4848
/* ---------------------------------------------------------------------------
4849
    Version: 3.0
4850
   --------------------------------------------------------------------------- */
4851
 
4852
    ActionTypeId NUMBER;
4853
 
4854
BEGIN
4855
 
4856
    -- Get Action Type FK
4857
    SELECT act.ACTTYPE_ID INTO ActionTypeId
4858
      FROM ACTION_TYPE act
4859
     WHERE act.NAME = enumActionTypeName;
4860
 
4861
 
4862
    INSERT INTO DAEMON_ACTION_LOG
4863
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
4864
 
4865
 
4866
END Log_Daemon_Action;
4867
/
4868
 
4869
CREATE PROCEDURE "RELEASE_MANAGER"."LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
4870
												 enumActionTypeName IN VARCHAR2,
4871
		                                         nUserId IN NUMBER,
4872
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
4873
												 nRtagId IN NUMBER  ) IS
4874
/* ---------------------------------------------------------------------------
4875
    Version: 3.0
4876
   --------------------------------------------------------------------------- */
4877
 
4878
    ActionTypeId NUMBER;
4879
 
4880
BEGIN
4881
 
4882
    -- Get Action Type FK
4883
    SELECT act.ACTTYPE_ID INTO ActionTypeId
4884
      FROM ACTION_TYPE act
4885
     WHERE act.NAME = enumActionTypeName;
4886
 
4887
 
4888
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
4889
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
4890
 
4891
 
4892
END Log_Project_Action;
4893
/
4894
 
4895
CREATE PROCEDURE "RELEASE_MANAGER"."NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
4896
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
4897
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
4898
                                                  pnUser_id IN NUMBER,
4899
                                                  outErrCode OUT NUMBER
4900
                                                 ) IS
4901
/* ---------------------------------------------------------------------------
4902
    Version: 3.0.0
4903
   --------------------------------------------------------------------------- */
4904
 
4905
    newID NUMBER;
4906
 
4907
	CURSOR an_duplicate_cur IS
4908
        SELECT note_id
4909
          FROM ADDITIONAL_NOTES
4910
         WHERE pv_id = pnPv_id
4911
           AND note_title = psNote_title;
4912
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
4913
 
4914
BEGIN
4915
	outErrCode := -1;		-- Set default return error code to ERROR state
4916
 
4917
	OPEN an_duplicate_cur;
4918
    FETCH an_duplicate_cur INTO an_duplicate_rec;
4919
 
4920
    IF an_duplicate_cur%NOTFOUND
4921
    THEN
4922
		/* No duplicate titles */
4923
		-- Get new ID --
4924
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
4925
 
4926
		--- Add Additional Note ---
4927
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
4928
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
4929
		outErrCode := 0;		-- Set return to SUCCESS
4930
	END IF;
4931
 
4932
	CLOSE an_duplicate_cur;
4933
END New_Additional_Note;
4934
/
4935
 
4936
CREATE PROCEDURE "RELEASE_MANAGER"."NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
4937
                                               retPKG_ID OUT NUMBER ) IS
4938
/* ---------------------------------------------------------------------------
4939
    Version: 3.0.0
4940
   --------------------------------------------------------------------------- */
4941
 
4942
    CURSOR packages_cur IS
4943
        SELECT pkg.pkg_id
4944
          FROM packages pkg
4945
         WHERE pkg.pkg_name = SSpkg_name;
4946
    packages_rec packages_cur%ROWTYPE;
4947
 
4948
 
4949
BEGIN
4950
 
4951
    /* ---------------------------------------------------- */
4952
    /* Find if package name exists                          */
4953
    /* ---------------------------------------------------- */
4954
 
4955
    OPEN packages_cur;
4956
    FETCH packages_cur INTO packages_rec;
4957
 
4958
    IF packages_cur%NOTFOUND
4959
    THEN
4960
        -- Create new pkg_name --
4961
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
4962
 
4963
        INSERT INTO packages ( pkg_id, pkg_name )
4964
        VALUES ( retPKG_ID, SSpkg_name );
4965
 
4966
    ELSE
4967
        retPKG_ID := packages_rec.pkg_id;
4968
 
4969
    END IF;
4970
 
4971
 
4972
    CLOSE packages_cur;
4973
 
4974
END New_Package_Name;
4975
/
4976
 
4977
CREATE PROCEDURE "RELEASE_MANAGER"."NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
4978
 	   	  		  					  	NNparent_id IN NUMBER,
4979
                                        sPatchIdList IN VARCHAR2,
4980
										NNuser_id IN NUMBER ) IS
4981
/* ---------------------------------------------------------------------------
4982
    Version: 3.5
4983
   --------------------------------------------------------------------------- */
4984
 
4985
    patchPv_id    NUMBER;
4986
	parPkg_id	  NUMBER;
4987
    LastInstallOrder NUMBER;
4988
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
4989
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
4990
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
4991
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
4992
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4993
 
4994
	CURSOR parent_cur IS
4995
        SELECT pv.*, pkg.pkg_name
4996
          FROM package_versions pv,
4997
		       packages pkg
4998
         WHERE pv.pv_id = NNparent_id
4999
		   AND pv.pkg_id = pkg.pkg_id;
5000
    parent_rec parent_cur%ROWTYPE;
5001
 
5002
    CURSOR patch_cur IS
5003
        SELECT pv.*, pg.pkg_name
5004
          FROM package_versions pv,
5005
		       packages pg
5006
         WHERE pv.pkg_id = parPkg_id
5007
		   AND pv.pkg_version = SSpatch_version
5008
		   AND pv.pkg_id = pg.pkg_id;
5009
    patch_rec patch_cur%ROWTYPE;
5010
 
5011
	CURSOR releases_cur IS
5012
        SELECT rc.pv_id
5013
		  FROM release_content rc
5014
		 WHERE rc.pv_id = patch_rec.pv_id;
5015
    releases_rec releases_cur%ROWTYPE;
5016
 
5017
 
5018
BEGIN
5019
 
5020
	-- Get Last Install Order
5021
    SELECT Count(*) INTO LastInstallOrder
5022
	  FROM PACKAGE_PATCHES pp
5023
	 WHERE pp.PV_ID = NNparent_id;
5024
 
5025
 
5026
    -- Get parent details
5027
	OPEN parent_cur;
5028
    FETCH parent_cur INTO parent_rec;
5029
	parPkg_id := parent_rec.pkg_id;
5030
 
5031
 
5032
	-- Find if patch exists in database
5033
    OPEN patch_cur;
5034
    FETCH patch_cur INTO patch_rec;
5035
 
5036
 
5037
    -- Parent must be official
5038
    IF parent_rec.dlocked = 'Y' THEN
5039
 
5040
	    IF patch_cur%NOTFOUND
5041
	    THEN
5042
        	isPatchDlocked := 'N';
5043
 
5044
	        -- Create new patch version --
5045
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
5046
 
5047
 
5048
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
5049
 
5050
	        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 )
5051
				   VALUES (
5052
						   patchPv_id,
5053
	                       parPkg_id,
5054
	                       SSpatch_version,
5055
	                       isPatchDlocked,
5056
	                       ORA_SYSDATE,
5057
	                       NNuser_id,
5058
	                       ORA_SYSDATETIME,
5059
	                       NNuser_id,
5060
	                       SSV_MM,
5061
	                       SSV_NMM,
5062
	                       SSV_EXT,
5063
	                       parent_rec.src_path,
5064
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
5065
	                       NNuser_id,
5066
						   'Y',
5067
                           patchPv_id,
5068
						   parent_rec.bs_id,
5069
						   parent_rec.is_autobuildable,
5070
						   parent_rec.ripple_field
5071
 
5072
						   );
5073
 
5074
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5075
		    	   ( SELECT NNparent_id AS pv_id,
5076
				            pv.pv_id AS patch_id,
5077
	                        LastInstallOrder + 1 AS INSTALL_ORDER
5078
				       FROM package_versions pv
5079
					  WHERE pv.pv_id = patchPv_id
5080
					    AND pv.is_patch = 'Y' );
5081
 
5082
	        /* LOG ACTION */
5083
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
5084
        			     'Patch version created: '|| SSpatch_version );
5085
 
5086
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5087
        			     'New patch created and attached: '|| SSpatch_version );
5088
 
5089
 
5090
	    ELSE
5091
 
5092
		    patchPv_id := patch_rec.pv_id;
5093
	    	isPatchDlocked := patch_rec.dlocked;
5094
 
5095
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
5096
		    OPEN releases_cur;
5097
		    FETCH releases_cur INTO releases_rec;
5098
 
5099
			IF releases_cur%NOTFOUND
5100
	   		THEN
5101
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
5102
				UPDATE package_versions SET
5103
					   is_patch = 'Y'
5104
					   WHERE pv_id = patchPv_id;
5105
 
5106
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
5107
			    	   ( SELECT NNparent_id AS pv_id,
5108
					            pv.pv_id AS patch_id,
5109
	                            LastInstallOrder + 1 AS INSTALL_ORDER
5110
					       FROM package_versions pv
5111
						  WHERE pv.pv_id = patchPv_id
5112
						    AND pv.is_patch = 'Y' );
5113
 
5114
			END IF;
5115
 
5116
			CLOSE releases_cur;
5117
 
5118
            /* LOG ACTION */
5119
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
5120
        			     'Patch version was found and attached: '|| SSpatch_version );
5121
 
5122
	    END IF;
5123
 
5124
 
5125
 
5126
 
5127
    END IF;
5128
 
5129
 
5130
 
5131
    /* Create Patch Dependencies */
5132
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
5133
 
5134
 
5135
    -- Make sure patch is unofficial before altering its dependencies
5136
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
5137
    	-- Delete Existing Dependencies
5138
        DELETE
5139
          FROM PACKAGE_DEPENDENCIES dep
5140
         WHERE dep.PV_ID = patchPv_id;
5141
 
5142
 
5143
        -- Insert new dependencies
5144
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
5145
        SELECT patchPv_id AS PV_ID,
5146
        	   pv.PV_ID AS DPV_ID,
5147
               parPkg_id AS PKG_ID,
5148
               pv.PKG_ID AS DPKG_ID,
5149
               'L' AS BUILD_TYPE
5150
          FROM PACKAGE_VERSIONS pv
5151
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
5152
 
5153
 
5154
    END IF;
5155
 
5156
 
5157
    CLOSE parent_cur;
5158
    CLOSE patch_cur;
5159
END New_Patch;
5160
/
5161
 
5162
CREATE PROCEDURE "RELEASE_MANAGER"."NEW_UNIT_TEST" ( nPv_id IN NUMBER,
5163
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
5164
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
5165
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
5166
                                            sDpkg_path IN VARCHAR2,
5167
                                            sResults IN VARCHAR2,
5168
                                            sCompletion_date IN VARCHAR2,
5169
                                            nCompleted_by IN NUMBER,
5170
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
5171
											enumTEST_TYPE_NOT_DONE IN NUMBER,
5172
											outFileName OUT VARCHAR2
5173
                                           ) IS
5174
/* ---------------------------------------------------------------------------
5175
    Version: 3.2.0
5176
   --------------------------------------------------------------------------- */
5177
 
5178
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
5179
 
5180
    newID NUMBER;
5181
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
5182
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
5183
 
5184
BEGIN
5185
 
5186
	-- Get new ID --
5187
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
5188
 
5189
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
5190
       	ResultsURL := sResults;
5191
       ELSE
5192
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
5193
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
5194
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
5195
           END IF;
5196
       END IF;
5197
 
5198
	-- Remove NOT_DONE entry if exists
5199
	DELETE FROM UNIT_TESTS
5200
	 WHERE pv_id = nPv_id
5201
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
5202
 
5203
	--- Add Additional Note ---
5204
    INSERT INTO UNIT_TESTS ( TEST_ID,
5205
								PV_ID,
5206
								TEST_TYPES_FK,
5207
								TEST_SUMMARY,
5208
								COMPLETION_DATE,
5209
								COMPLETED_BY,
5210
								RESULTS_URL,
5211
								RESULTS_ATTACHMENT_NAME,
5212
								NUMOF_TEST )
5213
    VALUES (
5214
       	newID,
5215
           nPv_id,
5216
           nTestTypeId,
5217
           sTest_summary,
5218
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
5219
           nCompleted_by,
5220
           ResultsURL,
5221
           ResultsAttachment,
5222
		   sNumOfTest );
5223
 
5224
END New_Unit_Test;
5225
/
5226
 
5227
CREATE PROCEDURE "RELEASE_MANAGER"."NEW_VERSION" ( NNorig_pv_id IN NUMBER,
5228
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
5229
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
5230
                                          NNrtag_id IN NUMBER,
5231
                                          NNuser_id IN NUMBER,
5232
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
5233
                                          retPv_id OUT NUMBER ) IS
5234
 
5235
 
5236
  TO BE REMOVED   !!!										  
5237
 
5238
 
5239
 
5240
 
5241
/* ---------------------------------------------------------------------------
5242
    Version: 3.3
5243
   --------------------------------------------------------------------------- */
5244
 
5245
    ReleaseLocation VARCHAR2(4000);
5246
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
5247
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
5248
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5249
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5250
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5251
    nIssuesTypes NUMBER;
5252
 
5253
    CURSOR package_versions_cur IS
5254
        SELECT pv.pv_id, pv.is_patch
5255
          FROM PACKAGE_VERSIONS pv
5256
         WHERE pv.pkg_version = SSpkg_version
5257
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
5258
    package_versions_rec package_versions_cur%ROWTYPE;
5259
 
5260
    CURSOR clone_package_versions_cur IS
5261
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
5262
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
5263
 
5264
BEGIN
5265
	IF NNsetto_pv_id IS NULL
5266
    THEN
5267
		-- SetToPv_id is not supplied, hence proceed.
5268
 
5269
	    /* ---------------------------------------------------- */
5270
	    /* Find id package_version exists                       */
5271
	    /* ---------------------------------------------------- */
5272
 
5273
	    OPEN package_versions_cur;
5274
	    FETCH package_versions_cur INTO package_versions_rec;
5275
 
5276
	    IF package_versions_cur%NOTFOUND
5277
	    THEN
5278
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
5279
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
5280
 
5281
	        OPEN clone_package_versions_cur;
5282
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
5283
	        origPkg_id := clone_package_versions_rec.pkg_id;
5284
	        origDlocked := clone_package_versions_rec.dlocked;
5285
	        CLOSE clone_package_versions_cur;
5286
 
5287
	        -- Clone Package Version Details --
5288
	        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,
5289
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
5290
	            SELECT retPv_id         AS pv_id,
5291
	                   origPkg_id       AS pkg_id,
5292
	                   SSpkg_version    AS pkg_version,
5293
	                   'N'              AS dlocked,
5294
	                   Ora_Sysdate      AS created_stamp,
5295
	                   NNuser_id        AS creator_id,
5296
	                   Ora_Sysdatetime  AS modified_stamp,
5297
	                   NNuser_id        AS modifier_id,
5298
	                   SSV_MM           AS V_MM,
5299
	                   SSV_NMM          AS V_NMM,
5300
	                   SSV_EXT          AS V_EXT,
5301
	                   pv.src_path,
5302
	                   pv.pv_description,
5303
                       pv.PV_OVERVIEW,
5304
                       NNorig_pv_id 	AS LAST_PV_ID,
5305
	                   pv.owner_id,
5306
					   pv.IS_DEPLOYABLE,
5307
					   pv.IS_BUILD_ENV_REQUIRED
5308
	              FROM PACKAGE_VERSIONS pv
5309
	             WHERE pv.pv_id = NNorig_pv_id;
5310
 
5311
 
5312
	        -- Set Issues Type for cloning ---
5313
	        IF origDlocked = 'Y'
5314
	        THEN
5315
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
5316
	        ELSE
5317
            	nIssuesTypes := NULL;
5318
	        END IF;
5319
 
5320
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
5321
 
5322
 
5323
 
5324
	    ELSE
5325
	        retPv_id := package_versions_rec.pv_id;
5326
 
5327
	    END IF;
5328
 
5329
        CLOSE package_versions_cur;
5330
 
5331
	ELSE
5332
    	retPv_id := NNsetto_pv_id;
5333
    END IF;
5334
 
5335
 
5336
    /* ---------------------------------------------------- */
5337
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
5338
    /* ---------------------------------------------------- */
5339
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
5340
	    UPDATE RELEASE_CONTENT
5341
	       SET pv_id = retPv_id,
5342
	           insert_stamp = Ora_Sysdate,
5343
	           insertor_id = NNuser_id
5344
	     WHERE rtag_id = NNrtag_id
5345
	       AND pv_id = NNorig_pv_id;
5346
 
5347
        /* LOG ACTION */
5348
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
5349
		  FROM PROJECTS proj,
5350
		  	   VTREES vt,
5351
		       RELEASE_TAGS rt
5352
		 WHERE rt.VTREE_ID = vt.VTREE_ID
5353
		   AND vt.PROJ_ID = proj.PROJ_ID
5354
		   AND rt.RTAG_ID = NNrtag_id;
5355
 
5356
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
5357
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
5358
 
5359
	END IF;
5360
 
5361
 
5362
END New_Version;
5363
/
5364
 
5365
CREATE PROCEDURE "RELEASE_MANAGER"."OLE" 
5366
IS retval VARCHAR2(40);   
5367
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
5368
DBMS_OUTPUT.PUT_LINE(retval);
5369
/
5370
 
5371
CREATE PROCEDURE "RELEASE_MANAGER"."PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
5372
 
5373
    sessionNumber NUMBER := 0;
5374
    iteration NUMBER := 1; 
5375
    rowCnt NUMBER := 0;
5376
    maxIterations 	NUMBER := 50;
5377
 
5378
BEGIN
5379
 
5380
 
5381
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
5382
    SELECT sessionNumber, iteration, rc.PV_ID
5383
      FROM RELEASE_CONTENT rc
5384
     WHERE rc.RTAG_ID = nRtag_id;
5385
 
5386
    iteration := iteration + 1;
5387
    LOOP
5388
 
5389
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
5390
		SELECT sessionNumber,     
5391
               iteration,
5392
               dep.DPV_ID
5393
          FROM TEMP_TREE_BROWSE ttb,
5394
               PACKAGE_DEPENDENCIES dep
5395
         WHERE dep.PV_ID = ttb.PV_ID 
5396
           AND ttb.LEVEL_NUM = iteration - 1 
5397
 
5398
         MINUS  
5399
 
5400
        SELECT sessionNumber, iteration, ttb.PV_ID
5401
          FROM TEMP_TREE_BROWSE ttb;   
5402
 
5403
 
5404
 
5405
 
5406
		rowCnt := SQL%ROWCOUNT;
5407
		IF rowCnt > 0 THEN
5408
           iteration := iteration + 1;
5409
		END IF;
5410
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
5411
    END LOOP; 
5412
 
5413
END PAOLO_Build_Tree;
5414
/
5415
 
5416
CREATE PROCEDURE "RELEASE_MANAGER"."PENDING_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
5417
											 nUserId IN NUMBER ) IS
5418
/* ---------------------------------------------------------------------------
5419
    Version: 4.0
5420
   --------------------------------------------------------------------------- */
5421
 
5422
BEGIN
5423
 
5424
    -- Lock Package
5425
    UPDATE PACKAGE_VERSIONS pv SET
5426
    	pv.DLOCKED = 'A'
5427
    WHERE pv.PV_ID = nPvId;
5428
 
5429
    /* LOG ACTION */
5430
   	Log_Action ( nPvId, 'lock_package', nUserId );
5431
END Pending_Package;
5432
/
5433
 
5434
CREATE PROCEDURE "RELEASE_MANAGER"."REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
5435
 
5436
/* ---------------------------------------------------------------------------
5437
    Version: 3.3
5438
   --------------------------------------------------------------------------- */
5439
    rowCnt NUMBER := 0;
5440
    iteration NUMBER := 2;          -- Iterations counter
5441
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
5442
                                    -- This will prevent infinite loops if cyrcular dependencies are found
5443
    sessionNum NUMBER;
5444
BEGIN
5445
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
5446
 
5447
 
5448
    -- Redo Patch Ignore warnings
5449
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
5450
 
5451
 
5452
    Level_One_Conflicts ( NNrtag_id, sessionNum );
5453
 
5454
    LOOP
5455
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
5456
        iteration := iteration + 1;
5457
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
5458
    END LOOP;
5459
 
5460
    Update_Package_States ( NNrtag_id, sessionNum );
5461
 
5462
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
5463
 
5464
    -- Flag Packages with New Patches Available
5465
    Check_New_Patches ( NNrtag_id );
5466
 
5467
	Clean_Do_Not_Ripple( NNrtag_id );
5468
 
5469
 
5470
	/* Circular Dependency Flag */
5471
    /*
5472
	IF iteration > maxIterations
5473
	THEN
5474
		UPDATE release_tags SET
5475
		   	   circular_dependency = 'Y'
5476
		 WHERE rtag_id = NNrtag_id;
5477
	ELSE
5478
		UPDATE release_tags SET
5479
		   	   circular_dependency = NULL
5480
		 WHERE rtag_id = NNrtag_id;
5481
	END IF;
5482
    */
5483
END Rebuild_Environment;
5484
/
5485
 
5486
CREATE PROCEDURE "RELEASE_MANAGER"."RELEASE_MANAGER_MAILOUT" (
5487
  sender      IN VARCHAR2,
5488
  recipient   IN VARCHAR2,
5489
  ccrecipient IN VARCHAR2,
5490
  subject     IN VARCHAR2,
5491
  message     IN VARCHAR2
5492
  ) IS
5493
 
5494
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
5495
  connection utl_smtp.connection;
5496
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
5497
  header VARCHAR2(1000);
5498
 
5499
BEGIN
5500
 
5501
  --
5502
  -- Start the connection.
5503
  --
5504
  connection := utl_smtp.open_connection(mailhost,25);
5505
 
5506
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
5507
     'From: '||sender||''||crlf||
5508
  'Subject: '||subject||crlf||
5509
       'To: '||recipient||crlf||
5510
       'CC: '||ccrecipient;
5511
 
5512
  --
5513
  -- Handshake with the SMTP server
5514
  --
5515
  utl_smtp.helo(connection, mailhost);
5516
  utl_smtp.mail(connection, sender);
5517
  utl_smtp.rcpt(connection, recipient);
5518
  utl_smtp.rcpt(connection, ccrecipient);
5519
  utl_smtp.open_data(connection);
5520
  --
5521
  -- Write the header
5522
  --
5523
  utl_smtp.write_data(connection, header);
5524
  --
5525
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
5526
  --
5527
  utl_smtp.write_data(connection, crlf ||message);
5528
  utl_smtp.close_data(connection);
5529
  utl_smtp.quit(connection);
5530
 
5531
EXCEPTION
5532
  WHEN UTL_SMTP.INVALID_OPERATION THEN
5533
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
5534
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
5535
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
5536
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
5537
    dbms_output.put_line(' Errors in code for SMTP transaction.');
5538
 
5539
END RELEASE_MANAGER_MAILOUT;
5540
/
5541
 
5542
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
5543
/* ---------------------------------------------------------------------------
5544
    Version: 3.0.0
5545
   --------------------------------------------------------------------------- */
5546
 
5547
 
5548
BEGIN
5549
 
5550
	 --- Delete From RELEASE_COMPONENTS
5551
	 DELETE FROM RELEASE_COMPONENTS
5552
	 WHERE PV_ID = nPvId;
5553
 
5554
END Remove_Components;
5555
/
5556
 
5557
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
5558
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
5559
                                              nUserId IN NUMBER ) IS
5560
/* ---------------------------------------------------------------------------
5561
    Version: 3.0
5562
   --------------------------------------------------------------------------- */
5563
 
5564
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
5565
 
5566
BEGIN
5567
 
5568
	-- Get Doc Num
5569
    SELECT pd.DOC_NUM INTO DocNumber
5570
      FROM PACKAGE_DOCUMENTS pd
5571
     WHERE pd.PV_ID = nPvId
5572
       AND pd.DOC_ID = nDocId;
5573
 
5574
 
5575
	-- Delete Document
5576
    DELETE
5577
      FROM PACKAGE_DOCUMENTS pd
5578
     WHERE pd.PV_ID = nPvId
5579
       AND pd.DOC_ID = nDocId;
5580
 
5581
 
5582
    /* LOG ACTION */
5583
   	Log_Action ( nPvId, 'document_remove', nUserId,
5584
   			     'Document number: '|| DocNumber );
5585
 
5586
 
5587
END Remove_Document;
5588
/
5589
 
5590
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
5591
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
5592
												  	nUserId IN NUMBER
5593
	   	  		  									) IS
5594
 
5595
/******************************************************************************
5596
   NAME:       REMOVE_PACKAGE_INTEREST
5597
   PURPOSE:    To remove interest in a given package per project
5598
 
5599
   REVISIONS:
5600
   Ver        Date        Author           Description
5601
   ---------  ----------  ---------------  ------------------------------------
5602
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
5603
 
5604
   NOTES:
5605
 
5606
   Automatically available Auto Replace Keywords:
5607
      Object Name:     REMOVE_PACKAGE_INTEREST
5608
      Sysdate:         12/05/2006
5609
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
5610
      Username:         (set in TOAD Options, Procedure Editor)
5611
      Table Name:       (set in the "New PL/SQL Object" dialog)
5612
 
5613
******************************************************************************/
5614
BEGIN
5615
 
5616
	 --Delete from PACKAGE_INTEREST
5617
	 DELETE FROM PACKAGE_INTEREST
5618
	 WHERE PROJ_ID = nProjId
5619
	 AND PKG_ID = nPkgId
5620
	 AND USER_ID = nUserId;
5621
 
5622
END REMOVE_PACKAGE_INTEREST;
5623
/
5624
 
5625
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
5626
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
5627
                                           nUserId IN NUMBER ) IS
5628
/* ---------------------------------------------------------------------------
5629
    Version: 4.0
5630
   --------------------------------------------------------------------------- */
5631
 
5632
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
5633
 
5634
CURSOR curPatch IS
5635
	SELECT pp.PV_ID,
5636
		   pp.PATCH_ID,
5637
	       ROWNUM AS NEW_INSTALL_ORDER
5638
	  FROM PACKAGE_PATCHES pp
5639
	 WHERE pp.PV_ID = nPvId
5640
	ORDER BY pp.INSTALL_ORDER;
5641
recPatch curPatch%ROWTYPE;
5642
 
5643
BEGIN
5644
 
5645
	 -- Delete Patch
5646
     DELETE
5647
       FROM PACKAGE_PATCHES pp
5648
      WHERE pp.PV_ID = nPvId
5649
        AND pp.PATCH_ID = nPatchId;
5650
 
5651
 
5652
	-- Redo Install Order
5653
    OPEN curPatch;
5654
	FETCH curPatch INTO recPatch;
5655
 
5656
	WHILE curPatch%FOUND
5657
	LOOP
5658
 
5659
		UPDATE PACKAGE_PATCHES pp SET
5660
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
5661
		WHERE pp.PV_ID = nPvId
5662
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
5663
 
5664
		FETCH curPatch INTO recPatch;
5665
	END LOOP;
5666
 
5667
	CLOSE curPatch;
5668
 
5669
 
5670
 
5671
 
5672
    /* LOG ACTION */
5673
    SELECT pv.PKG_VERSION INTO PatchVersion
5674
      FROM PACKAGE_VERSIONS pv
5675
     WHERE pv.PV_ID = nPatchId;
5676
 
5677
   	Log_Action ( nPvId, 'patch_remove', nUserId,
5678
   			     'Version: '|| PatchVersion );
5679
 
5680
END Remove_Patch;
5681
/
5682
 
5683
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
5684
	   	  		  						 			  nViewId IN NUMBER,
5685
										 			  sUserIdList IN VARCHAR2,
5686
										 			  nUserId IN NUMBER ) IS
5687
 
5688
GroupId NUMBER;													  
5689
 
5690
 
5691
 
5692
/******************************************************************************
5693
   NAME:       UPDATE_VIEW
5694
   PURPOSE:    
5695
 
5696
   REVISIONS:
5697
   Ver        Date        Author           		Description
5698
   ---------  ----------  ---------------  ------------------------------------
5699
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
5700
 
5701
   NOTES:
5702
 
5703
   Automatically available Auto Replace Keywords:
5704
      Object Name:     UPDATE_VIEW
5705
      Sysdate:         10/04/2006
5706
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
5707
      Username:         (set in TOAD Options, Procedure Editor)
5708
      Table Name:       (set in the "New PL/SQL Object" dialog)
5709
 
5710
******************************************************************************/
5711
 
5712
BEGIN
5713
	 SELECT GROUP_EMAIL_ID into GroupId
5714
	 FROM AUTOBUILD_FAILURE
5715
	 WHERE PROJ_ID = nProjId
5716
	 AND VIEW_ID = nViewId;
5717
 
5718
	 DELETE FROM MEMBERS_GROUP
5719
	 WHERE GROUP_EMAIL_ID = GroupId
5720
	 AND USER_ID IN (
5721
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
5722
	 );
5723
 
5724
 
5725
 
5726
END REMOVE_PROJECT_VIEW_OWNER;
5727
/
5728
 
5729
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
5730
													 sNotPvIdList IN VARCHAR2,
5731
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
5732
/* ---------------------------------------------------------------------------
5733
    Version: 3.0
5734
   --------------------------------------------------------------------------- */
5735
 
5736
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5737
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5738
 
5739
BEGIN
5740
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5741
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
5742
 
5743
    -- Delete From Release Content
5744
    DELETE
5745
      FROM RELEASE_CONTENT
5746
	 WHERE rtag_id = nRTagId
5747
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5748
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
5749
 
5750
 
5751
 
5752
END Remove_Release_Content;
5753
/
5754
 
5755
CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
5756
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
5757
                                             nUserId IN NUMBER ) IS
5758
/* ---------------------------------------------------------------------------
5759
    Version: 3.0
5760
   --------------------------------------------------------------------------- */
5761
 
5762
   RuntimeDependency VARCHAR2(4000);
5763
 
5764
BEGIN
5765
 
5766
	-- Get Runtime dependency
5767
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
5768
	  FROM RUNTIME_DEPENDENCIES rtd,
5769
	  	   PACKAGES pkg,
5770
	       PACKAGE_VERSIONS pv
5771
	 WHERE rtd.PV_ID = nPvId
5772
	   AND pv.PKG_ID = pkg.PKG_ID
5773
	   AND rtd.RTD_ID = pv.PV_ID
5774
	   AND rtd.RTD_ID = nRuntimeId;
5775
 
5776
 
5777
	-- Delete Document
5778
    DELETE
5779
      FROM RUNTIME_DEPENDENCIES rtd
5780
     WHERE rtd.PV_ID = nPvId
5781
       AND rtd.RTD_ID = nRuntimeId;
5782
 
5783
 
5784
    /* LOG ACTION */
5785
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
5786
   			     'Runtime package: '|| RuntimeDependency );
5787
 
5788
 
5789
END Remove_Runtime;
5790
/
5791
 
5792
CREATE PROCEDURE "RELEASE_MANAGER"."RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
5793
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5794
													 cBuildType IN CHAR,
5795
                                                     NNuser_id IN NUMBER,
5796
                                                     errMessage OUT VARCHAR2 ) IS
5797
/* ---------------------------------------------------------------------------
5798
    Version: 3.2
5799
   --------------------------------------------------------------------------- */
5800
 
5801
    sPackageVersion VARCHAR2(4000);
5802
	sLabel VARCHAR2(4000) := NULL;
5803
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
5804
 
5805
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5806
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5807
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5808
 
5809
    CURSOR package_versions_cur IS
5810
        SELECT pv_id
5811
     	  FROM package_versions
5812
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
5813
     	   AND pkg_version = SSpkg_version;
5814
    package_versions_rec package_versions_cur%ROWTYPE;
5815
 
5816
 
5817
BEGIN
5818
 
5819
    /* ---------------------------------------------------- */
5820
    /* Find if package_version exists                       */
5821
    /* ---------------------------------------------------- */
5822
 
5823
	errMessage := NULL;
5824
 
5825
 
5826
	-- Get previous version
5827
	SELECT pv.PKG_VERSION INTO OldPkgVersion
5828
      FROM PACKAGE_VERSIONS pv
5829
     WHERE pv.PV_ID = NNpv_id;
5830
 
5831
 
5832
	sPackageVersion := SSpkg_version;
5833
 
5834
 
5835
	IF OldPkgVersion != sPackageVersion THEN
5836
 
5837
	    OPEN package_versions_cur;
5838
	    FETCH package_versions_cur INTO package_versions_rec;
5839
 
5840
	    IF package_versions_cur%NOTFOUND
5841
	    THEN
5842
 
5843
			-- Split current version in parts
5844
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
5845
 
5846
 
5847
		    -- Automated built config
5848
			IF (cBuildType = 'A') THEN
5849
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
5850
			END IF;
5851
 
5852
 
5853
	        -- Packge version not found, hence rename it.
5854
	        UPDATE package_versions
5855
	           SET pkg_version = sPackageVersion,
5856
	               v_mm = SSV_MM,
5857
	               v_nmm = SSV_NMM,
5858
	               v_ext = SSV_EXT,
5859
	               modified_stamp = ORA_SYSDATETIME,
5860
	               modifier_id = NNuser_id,
5861
				   build_type = cBuildType,
5862
				   pkg_label = NULL
5863
	         WHERE pv_id = NNpv_id;
5864
 
5865
 
5866
			IF (cBuildType = 'A') THEN
5867
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
5868
				UPDATE PACKAGE_VERSIONS pv SET
5869
					pv.PKG_LABEL = sLabel
5870
		         WHERE pv_id = NNpv_id;
5871
			END IF;
5872
 
5873
			/* LOG ACTION */
5874
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
5875
 
5876
	    ELSE
5877
	        -- Package version exists. Cannot proceed.
5878
	        errMessage := 'enum_MSG_VERSION_EXISTS';
5879
 
5880
	    END IF;
5881
 
5882
	    CLOSE package_versions_cur;
5883
 
5884
	END IF;
5885
 
5886
 
5887
 
5888
 
5889
END Rename_Package_Version;
5890
/
5891
 
5892
CREATE PROCEDURE "RELEASE_MANAGER"."RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
5893
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
5894
/* ---------------------------------------------------------------------------
5895
    Version: 5.0
5896
   --------------------------------------------------------------------------- */
5897
 
5898
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
5899
 
5900
BEGIN
5901
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
5902
 
5903
    -- Remove Ignore Warnings
5904
     DELETE
5905
       FROM ignore_warnings
5906
	  WHERE (rtag_id, pv_id, dpv_id) IN
5907
	     (
5908
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
5909
	        FROM ignore_warnings igw,
5910
	             package_versions dpv,
5911
	             package_versions pv
5912
	       WHERE igw.dpv_id = dpv.pv_id
5913
	         AND igw.rtag_id = nRTagId
5914
	         AND dpv.pkg_id = pv.pkg_id
5915
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
5916
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
5917
         );
5918
 
5919
END Reset_Ignore_Warnings;
5920
/
5921
 
5922
CREATE PROCEDURE "RELEASE_MANAGER"."RIPPLE_PACKAGE" (
5923
        sPvIdList IN VARCHAR2,
5924
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
5925
        nUserId IN NUMBER
5926
    ) IS
5927
/* ---------------------------------------------------------------------------
5928
    Version: 4.1
5929
   --------------------------------------------------------------------------- */
5930
 
5931
BEGIN
5932
 
5933
    IF (sPvIdList IS NULL) THEN
5934
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
5935
    END IF;
5936
 
5937
    -- Ripple Package
5938
    DELETE FROM DO_NOT_RIPPLE
5939
    WHERE RTAG_ID = nRtagId
5940
    AND PV_ID IN (
5941
        SELECT *
5942
        FROM THE (
5943
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
5944
            AS RELMGR_NUMBER_TAB_t )
5945
            FROM DUAL
5946
        )
5947
    );
5948
 
5949
    /* LOG ACTION */
5950
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
5951
 
5952
END Ripple_Package;
5953
/
5954
 
5955
CREATE PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
5956
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
5957
                                                          NNuser_id IN NUMBER,
5958
                                                          retPV_ID OUT NUMBER,
5959
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
5960
/* ---------------------------------------------------------------------------
5961
    Version: 4.0
5962
   --------------------------------------------------------------------------- */
5963
 
5964
    parPkg_id   NUMBER;
5965
    parPv_id    NUMBER;
5966
    cloneFrom_pv_id NUMBER;
5967
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
5968
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
5969
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
5970
 
5971
    CURSOR packages_cur IS
5972
        SELECT pkg_id FROM PACKAGES
5973
        WHERE pkg_name = SSpkg_name;
5974
    packages_rec packages_cur%ROWTYPE;
5975
 
5976
    CURSOR package_versions_cur IS
5977
        SELECT pv_id FROM PACKAGE_VERSIONS
5978
        WHERE pkg_id = parPkg_id
5979
        AND pkg_version = SSpkg_version;
5980
    package_versions_rec package_versions_cur%ROWTYPE;
5981
 
5982
    CURSOR clone_package_versions_cur IS
5983
        SELECT MAX(pv_id) AS pv_id
5984
          FROM PACKAGE_VERSIONS
5985
         WHERE pkg_id = parPkg_id
5986
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
5987
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
5988
 
5989
BEGIN
5990
    /* -------------------------------------------- */
5991
    /* Find if pkg_name exists and seed if required */
5992
    /* -------------------------------------------- */
5993
    OPEN packages_cur;
5994
    FETCH packages_cur INTO packages_rec;
5995
 
5996
    IF packages_cur%NOTFOUND
5997
    THEN
5998
        /* INSERT into packages table */
5999
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6000
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6001
 
6002
    ELSE
6003
        parPkg_id := packages_rec.pkg_id;
6004
 
6005
    END IF;
6006
 
6007
    CLOSE packages_cur;
6008
 
6009
 
6010
 
6011
    /* ---------------------------------------------------- */
6012
    /* Find if package_version exists and seed if required  */
6013
    /* ---------------------------------------------------- */
6014
    OPEN package_versions_cur;
6015
    FETCH package_versions_cur INTO package_versions_rec;
6016
 
6017
    IF package_versions_cur%NOTFOUND
6018
    THEN
6019
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6020
 
6021
        /* LOG ACTION */
6022
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6023
        			 'New package version: '|| SSpkg_version );
6024
 
6025
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6026
 
6027
        /* Find similar pkg_name + ext to clone from */
6028
        OPEN clone_package_versions_cur;
6029
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
6030
 
6031
 
6032
        IF NOT clone_package_versions_rec.pv_id IS NULL
6033
        THEN
6034
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6035
			IF ( NOT nCloneFromPvId IS NULL) THEN
6036
            	cloneFrom_pv_id := nCloneFromPvId;
6037
			ELSE
6038
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6039
			END IF;
6040
 
6041
            -- Clone Package Version Details --
6042
            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,
6043
                                           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  )
6044
                SELECT parPv_id         AS pv_id,
6045
                       parPkg_id        AS pkg_id,
6046
                       SSpkg_version    AS pkg_version,
6047
                       'N'              AS dlocked,
6048
                       Ora_Sysdate      AS created_stamp,
6049
                       NNuser_id        AS creator_id,
6050
                       Ora_Sysdatetime  AS modified_stamp,
6051
                       NNuser_id        AS modifier_id,
6052
                       SSV_MM           AS V_MM,
6053
                       SSV_NMM          AS V_NMM,
6054
                       SSV_EXT          AS V_EXT,
6055
                       pv.src_path,
6056
                       pv.pv_description,
6057
                       pv.PV_OVERVIEW,
6058
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6059
                       pv.owner_id,
6060
					   pv.BUILD_TYPE,
6061
					   pv.IS_BUILD_ENV_REQUIRED,
6062
					   pv.BS_ID,
6063
					   pv.is_autobuildable,
6064
					   pv.IS_DEPLOYABLE, 
6065
					   pv.ripple_field
6066
                  FROM PACKAGE_VERSIONS pv
6067
                 WHERE pv.pv_id = cloneFrom_pv_id;
6068
 
6069
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6070
 
6071
        ELSE
6072
            /* BRAND NEW version + ext */
6073
            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 )
6074
        	VALUES (
6075
                    parPv_id,
6076
                    parPkg_id,
6077
                    SSpkg_version,
6078
                    'N',
6079
                    Ora_Sysdate,
6080
                    NNuser_id,
6081
                    Ora_Sysdatetime,
6082
                    NNuser_id,
6083
                    SSV_MM,
6084
                    SSV_NMM,
6085
                    SSV_EXT,
6086
                    NNuser_id,
6087
                    parPv_id,
6088
					'M',
6089
					'b'
6090
                   );
6091
 
6092
        END IF;
6093
 
6094
        CLOSE clone_package_versions_cur;
6095
        retPV_ID := parPv_id;
6096
 
6097
    ELSE
6098
        retPV_ID := package_versions_rec.pv_id;
6099
 
6100
    END IF;
6101
 
6102
    CLOSE package_versions_cur;
6103
 
6104
 
6105
 
6106
 
6107
END Seed_Package_Names_Versions;
6108
/
6109
 
6110
CREATE PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
6111
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6112
                                                          NNuser_id IN NUMBER,
6113
                                                          retPV_ID OUT NUMBER,
6114
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
6115
/* ---------------------------------------------------------------------------
6116
    Version: 4.0
6117
   --------------------------------------------------------------------------- */
6118
 
6119
    parPkg_id   NUMBER;
6120
    parPv_id    NUMBER;
6121
    cloneFrom_pv_id NUMBER;
6122
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6123
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6124
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6125
 
6126
    CURSOR packages_cur IS
6127
        SELECT pkg_id FROM PACKAGES
6128
        WHERE pkg_name = SSpkg_name;
6129
    packages_rec packages_cur%ROWTYPE;
6130
 
6131
    CURSOR package_versions_cur IS
6132
        SELECT pv_id FROM PACKAGE_VERSIONS
6133
        WHERE pkg_id = parPkg_id
6134
        AND pkg_version = SSpkg_version;
6135
    package_versions_rec package_versions_cur%ROWTYPE;
6136
 
6137
    CURSOR clone_package_versions_cur IS
6138
        SELECT MAX(pv_id) AS pv_id
6139
          FROM PACKAGE_VERSIONS
6140
         WHERE pkg_id = parPkg_id
6141
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
6142
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
6143
 
6144
BEGIN
6145
    /* -------------------------------------------- */
6146
    /* Find if pkg_name exists and seed if required */
6147
    /* -------------------------------------------- */
6148
    OPEN packages_cur;
6149
    FETCH packages_cur INTO packages_rec;
6150
 
6151
    IF packages_cur%NOTFOUND
6152
    THEN
6153
        /* INSERT into packages table */
6154
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
6155
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
6156
 
6157
    ELSE
6158
        parPkg_id := packages_rec.pkg_id;
6159
 
6160
    END IF;
6161
 
6162
    CLOSE packages_cur;
6163
 
6164
 
6165
 
6166
    /* ---------------------------------------------------- */
6167
    /* Find if package_version exists and seed if required  */
6168
    /* ---------------------------------------------------- */
6169
    OPEN package_versions_cur;
6170
    FETCH package_versions_cur INTO package_versions_rec;
6171
 
6172
    IF package_versions_cur%NOTFOUND
6173
    THEN
6174
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6175
 
6176
        /* LOG ACTION */
6177
        Log_Action ( parPv_id, 'new_version', NNuser_id,
6178
        			 'New package version: '|| SSpkg_version );
6179
 
6180
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
6181
 
6182
 
6183
 
6184
 
6185
 
6186
            /* CLONE details from similar version  OR  from nCloneFromPvId */
6187
			IF ( NOT nCloneFromPvId IS NULL) THEN
6188
            	cloneFrom_pv_id := nCloneFromPvId;
6189
			ELSE
6190
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
6191
			END IF;
6192
 
6193
            -- Clone Package Version Details --
6194
            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,
6195
                                           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 )
6196
                SELECT parPv_id         AS pv_id,
6197
                       parPkg_id        AS pkg_id,
6198
                       SSpkg_version    AS pkg_version,
6199
                       'N'              AS dlocked,
6200
                       Ora_Sysdate      AS created_stamp,
6201
                       NNuser_id        AS creator_id,
6202
                       Ora_Sysdatetime  AS modified_stamp,
6203
                       NNuser_id        AS modifier_id,
6204
                       SSV_MM           AS V_MM,
6205
                       SSV_NMM          AS V_NMM,
6206
                       SSV_EXT          AS V_EXT,
6207
                       pv.src_path,
6208
                       pv.pv_description,
6209
                       pv.PV_OVERVIEW,
6210
                       cloneFrom_pv_id 	AS LAST_PV_ID,
6211
                       pv.owner_id,
6212
					   pv.BUILD_TYPE,
6213
					   pv.IS_BUILD_ENV_REQUIRED,
6214
					   pv.bs_id,
6215
					   pv.is_autobuildable,
6216
					   pv.IS_DEPLOYABLE,
6217
					   pv.ripple_field
6218
                  FROM PACKAGE_VERSIONS pv
6219
                 WHERE pv.pv_id = cloneFrom_pv_id;
6220
 
6221
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
6222
 
6223
        retPV_ID := parPv_id;
6224
 
6225
    ELSE
6226
        retPV_ID := package_versions_rec.pv_id;
6227
 
6228
    END IF;
6229
 
6230
    CLOSE package_versions_cur;
6231
 
6232
 
6233
 
6234
 
6235
END Seed_Package_Names_Versions2;
6236
/
6237
 
6238
CREATE PROCEDURE "RELEASE_MANAGER"."SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6239
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
6240
											 nUserId IN NUMBER ) IS
6241
/* ---------------------------------------------------------------------------
6242
    Version: 4.0
6243
   --------------------------------------------------------------------------- */
6244
 
6245
BEGIN
6246
 
6247
    -- Set Advisory Ripple Package
6248
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
6249
	VALUES (nRtagId, nPvId);
6250
 
6251
    /* LOG ACTION */
6252
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
6253
 
6254
	/*Rebuild_Environment(nRtagId);*/
6255
 
6256
END Set_Advisory_Ripple;
6257
/
6258
 
6259
CREATE PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6260
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
6261
/* ---------------------------------------------------------------------------
6262
    Last Modified: Rupesh Solanki
6263
	Version: 3.0.1
6264
   --------------------------------------------------------------------------- */
6265
 
6266
 
6267
BEGIN
6268
 
6269
   -- Delete Current Build Env settings
6270
   DELETE FROM PACKAGE_BUILD_ENV
6271
   WHERE pv_id = nPvId;
6272
 
6273
   -- Delet Current Package Build Info Settings
6274
   DELETE FROM PACKAGE_BUILD_INFO
6275
   WHERE pv_id = nPvId;
6276
 
6277
   -- Reset flag to N
6278
   UPDATE PACKAGE_VERSIONS SET
6279
	   IS_BUILD_ENV_REQUIRED = 'N'
6280
   WHERE PV_ID = nPvId;
6281
 
6282
 
6283
   -- Set new Build Env
6284
   IF NOT sBuildEnvIdList IS NULL THEN
6285
   	  -- Insert into PACKAGE_BUILD_ENV
6286
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6287
	  SELECT nPvId AS PV_ID,
6288
	  		 be.BE_ID
6289
	    FROM BUILD_ENVIRONMENTS be
6290
	   WHERE be.BE_ID IN (
6291
	   		 		  	   SELECT *
6292
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
6293
	   		 		  	 );
6294
 
6295
   	  -- Insert into PACKAGE_BUILD_INFO
6296
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6297
	  SELECT nPvId AS PV_ID,
6298
	  		 be.BM_ID
6299
	    FROM BUILD_MACHINES be
6300
	   WHERE be.BM_ID IN (
6301
	   		 		  	   SELECT *
6302
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
6303
	   		 		  	 );						 
6304
 
6305
	   -- Set flag to Y
6306
	   UPDATE PACKAGE_VERSIONS SET
6307
		   IS_BUILD_ENV_REQUIRED = 'Y'
6308
	   WHERE PV_ID = nPvId;
6309
 
6310
   END IF;
6311
 
6312
 
6313
END Set_Package_Build_Env;
6314
/
6315
 
6316
CREATE PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
6317
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
6318
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
6319
														 ) IS
6320
/* ---------------------------------------------------------------------------
6321
    Last Modified: Rupesh Solanki
6322
	Version: 3.0.1
6323
   --------------------------------------------------------------------------- */
6324
 
6325
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
6326
   BsId NUMBER;
6327
   HackBsId NUMBER;
6328
 
6329
 
6330
BEGIN
6331
 
6332
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
6333
 
6334
   -- Delete Current Build Env settings
6335
   DELETE FROM PACKAGE_BUILD_ENV
6336
   WHERE pv_id = nPvId;
6337
 
6338
   -- Delet Current Package Build Info Settings
6339
   DELETE FROM PACKAGE_BUILD_INFO
6340
   WHERE pv_id = nPvId;
6341
 
6342
   -- Reset flag to N
6343
   UPDATE PACKAGE_VERSIONS SET
6344
	   IS_BUILD_ENV_REQUIRED = 'N'
6345
   WHERE PV_ID = nPvId;
6346
 
6347
 
6348
   -- Set new Build Env
6349
   IF NOT sBuildEnvIdList IS NULL THEN
6350
	FOR i IN 1..nBsCollector.COUNT
6351
	LOOP   
6352
 
6353
	BsId := nBsCollector(i);
6354
 
6355
	IF nBuildStandard = 2 THEN
6356
	   IF BsId = 1 THEN
6357
	   	  HackBsId := 11;
6358
	   ELSE
6359
	   	  HackBsId := 12;
6360
	   END IF;
6361
 
6362
   	  -- Insert into PACKAGE_BUILD_ENV
6363
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6364
	  SELECT nPvId AS PV_ID,
6365
	  		 be.BE_ID
6366
	    FROM BUILD_ENVIRONMENTS be
6367
	   WHERE be.BE_ID IN ( HackBsId );
6368
 
6369
   	  -- Insert into PACKAGE_BUILD_INFO
6370
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6371
	  SELECT nPvId AS PV_ID,
6372
	  		 be.BM_ID
6373
	    FROM BUILD_MACHINES be
6374
	   WHERE be.BM_ID IN ( BsId );						 
6375
 
6376
	   -- Set flag to Y
6377
	   UPDATE PACKAGE_VERSIONS SET
6378
		   IS_BUILD_ENV_REQUIRED = 'Y'
6379
	   WHERE PV_ID = nPvId;	
6380
 
6381
 
6382
	ELSE
6383
 
6384
   	  -- Insert into PACKAGE_BUILD_ENV
6385
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
6386
	  SELECT nPvId AS PV_ID,
6387
	  		 be.BE_ID
6388
	    FROM BUILD_ENVIRONMENTS be
6389
	   WHERE be.BE_ID IN ( BsId );
6390
 
6391
   	  -- Insert into PACKAGE_BUILD_INFO
6392
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
6393
	  SELECT nPvId AS PV_ID,
6394
	  		 be.BM_ID
6395
	    FROM BUILD_MACHINES be
6396
	   WHERE be.BM_ID IN ( BsId );						 
6397
 
6398
	   -- Set flag to Y
6399
	   UPDATE PACKAGE_VERSIONS SET
6400
		   IS_BUILD_ENV_REQUIRED = 'Y'
6401
	   WHERE PV_ID = nPvId;
6402
 
6403
	END IF;  
6404
 
6405
 
6406
	END LOOP;	   
6407
 
6408
   END IF;
6409
 
6410
 
6411
END Set_Package_Build_Env_Temp;
6412
/
6413
 
6414
CREATE PROCEDURE "RELEASE_MANAGER"."SET_TO_AUTOBUILDABLE" (
6415
   nrtagid     IN   NUMBER,
6416
   spvidlist   IN   VARCHAR2
6417
)
6418
IS
6419
/******************************************************************************
6420
   NAME:       SET_TO_AUTOBUILDABLE
6421
   PURPOSE:
6422
 
6423
   REVISIONS:
6424
   Ver        Date        Author           Description
6425
   ---------  ----------  ---------------  ------------------------------------
6426
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
6427
 
6428
   NOTES:
6429
 
6430
   Automatically available Auto Replace Keywords:
6431
      Object Name:     SET_TO_AUTOBUILDABLE
6432
      Sysdate:         15/12/2006
6433
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
6434
      Username:         (set in TOAD Options, Procedure Editor)
6435
      Table Name:       (set in the "New PL/SQL Object" dialog)
6436
 
6437
******************************************************************************/
6438
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
6439
   PvId NUMBER;
6440
BEGIN
6441
 
6442
   npvidcollector := in_list_number2 (spvidlist);
6443
 
6444
   UPDATE package_versions
6445
      SET is_autobuildable = 'N'
6446
    WHERE pv_id IN (SELECT pv_id
6447
                      FROM release_content
6448
                     WHERE rtag_id = nrtagid);
6449
 
6450
 
6451
 
6452
   	FOR i IN 1..npvidcollector.COUNT
6453
	LOOP
6454
		PvId := npvidcollector(i);
6455
 
6456
		UPDATE package_versions
6457
		set is_autobuildable = 'Y'
6458
		where pv_id = PvId;
6459
 
6460
	END LOOP;
6461
 
6462
 
6463
END set_to_autobuildable;
6464
/
6465
 
6466
CREATE PROCEDURE "RELEASE_MANAGER"."SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
6467
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
6468
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
6469
/* ---------------------------------------------------------------------------
6470
    Version: 3.0
6471
   --------------------------------------------------------------------------- */
6472
 
6473
currInstallOrder NUMBER;
6474
FromInstallOrder NUMBER;
6475
 
6476
BEGIN
6477
 
6478
	 -- Get Current Install Order
6479
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
6480
       FROM PACKAGE_PATCHES pp
6481
      WHERE pp.PV_ID = nPvId
6482
        AND pp.PATCH_ID = nPatchId;
6483
 
6484
 
6485
	 IF currInstallOrder > nToInstallOrder
6486
	 THEN
6487
 
6488
		FromInstallOrder := nToInstallOrder;
6489
 
6490
	    -- Shift others Up
6491
		UPDATE PACKAGE_PATCHES pp SET
6492
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
6493
		 WHERE pp.PV_ID = nPvId
6494
           AND pp.PATCH_ID != nPatchId
6495
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
6496
 
6497
 
6498
	 ELSIF currInstallOrder < nToInstallOrder
6499
	 THEN
6500
 
6501
		FromInstallOrder := currInstallOrder + 1;
6502
 
6503
		-- Shift others Down
6504
        UPDATE PACKAGE_PATCHES pp SET
6505
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
6506
		 WHERE pp.PV_ID = nPvId
6507
           AND pp.PATCH_ID != nPatchId
6508
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
6509
 
6510
	 END IF;
6511
 
6512
 
6513
	 -- Move Patch to new install order
6514
     UPDATE PACKAGE_PATCHES pp SET
6515
		    pp.INSTALL_ORDER = nToInstallOrder
6516
	  WHERE pp.PV_ID = nPvId
6517
	    AND pp.PATCH_ID = nPatchId;
6518
 
6519
 
6520
END Shift_Install_Order;
6521
/
6522
 
6523
CREATE PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
6524
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
6525
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
6526
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
6527
/* ---------------------------------------------------------------------------
6528
    Version: 3.0.0
6529
   --------------------------------------------------------------------------- */
6530
 
6531
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
6532
        INDEX BY BINARY_INTEGER;
6533
 
6534
    version_components VERSION_COMPONENTS_TYPE;
6535
    lastDot NUMBER := 0;
6536
    currDot NUMBER := 0;
6537
 
6538
BEGIN
6539
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
6540
 
6541
    IF ( currDot > 0 )
6542
    THEN
6543
        -- YES dot separator found --
6544
        SSV_EXT := GET_V_EXT( SSpkg_version );
6545
 
6546
        IF NOT SSV_EXT IS NULL
6547
        THEN
6548
            lastDot := currDot;
6549
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
6550
 
6551
            IF ( currDot > 0 )
6552
            THEN
6553
                -- XXXX.M.E
6554
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
6555
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
6556
            ELSE
6557
                -- XXXX.E
6558
                SSV_MM := NULL;
6559
                SSV_NMM := SSpkg_version;
6560
            END IF;
6561
 
6562
        ELSE
6563
            -- XXXX.M
6564
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
6565
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
6566
 
6567
        END IF;
6568
 
6569
    ELSE
6570
        -- NO dot separator found --
6571
        -- XXXXXX
6572
        SSV_MM  := NULL;
6573
        SSV_NMM := SSpkg_version;
6574
        SSV_EXT := NULL;
6575
 
6576
    END IF;
6577
 
6578
END Split_Version;
6579
/
6580
 
6581
CREATE PROCEDURE "RELEASE_MANAGER"."SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
6582
Auto CHAR;
6583
/******************************************************************************
6584
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
6585
   PURPOSE:    
6586
 
6587
   REVISIONS:
6588
   Ver        Date        Author           Description
6589
   ---------  ----------  ---------------  ------------------------------------
6590
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
6591
 
6592
   NOTES:
6593
 
6594
   Automatically available Auto Replace Keywords:
6595
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
6596
      Sysdate:         14/12/2006
6597
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
6598
      Username:         (set in TOAD Options, Procedure Editor)
6599
      Table Name:       (set in the "New PL/SQL Object" dialog)
6600
 
6601
******************************************************************************/
6602
BEGIN
6603
 
6604
	 SELECT IS_AUTOBUILDABLE into Auto
6605
	 FROM PACKAGE_VERSIONS 
6606
	 WHERE PV_ID = nPvId;
6607
 
6608
	 IF Auto = 'N' Then
6609
 
6610
	 	UPDATE PACKAGE_VERSIONS
6611
	 	SET IS_AUTOBUILDABLE = 'Y'
6612
	 	WHERE PV_ID = nPvId;
6613
 
6614
 
6615
	 	/* LOG ACTION */
6616
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
6617
 
6618
	 Else
6619
 
6620
		 UPDATE PACKAGE_VERSIONS
6621
		 SET IS_AUTOBUILDABLE = 'N'
6622
		 WHERE PV_ID = nPvId;
6623
 
6624
 
6625
	 	 /* LOG ACTION */
6626
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
6627
 
6628
	 End If;
6629
 
6630
 
6631
 
6632
 
6633
 
6634
 
6635
 
6636
 
6637
END SWITCH_REPRODUCIBLE_PACKAGE;
6638
/
6639
 
6640
CREATE PROCEDURE "RELEASE_MANAGER"."SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
6641
														  sSyncRtagsInList		IN VARCHAR2,
6642
				                                          nUser_id 				IN NUMBER ) IS
6643
/* ---------------------------------------------------------------------------
6644
    Version: 3.0.0
6645
   --------------------------------------------------------------------------- */
6646
 
6647
	CURSOR sync_rtags_cur IS
6648
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
6649
		  FROM release_content rc,
6650
		  	   package_versions pv,
6651
		       package_versions opv
6652
		 WHERE rc.pv_id = pv.pv_id
6653
		   AND opv.pkg_id = pv.pkg_id
6654
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
6655
		   AND opv.pv_id = nPv_id
6656
		   AND rtag_id IN ( SELECT *
6657
		   	   		   	      FROM THE (
6658
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
6659
					       		   	    FROM dual
6660
									   )
6661
						  );
6662
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
6663
 
6664
BEGIN
6665
 
6666
	OPEN sync_rtags_cur;
6667
	FETCH sync_rtags_cur INTO sync_rtags_rec;
6668
 
6669
	WHILE sync_rtags_cur%FOUND
6670
	LOOP
6671
		DELETE FROM RELEASE_CONTENT
6672
		 WHERE rtag_id = sync_rtags_rec.rtag_id
6673
	       AND pv_id = sync_rtags_rec.pv_id;
6674
 
6675
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
6676
	   		   VALUES ( sync_rtags_rec.rtag_id,
6677
		       		  	nPv_id,
6678
						sync_rtags_rec.BASE_VIEW_ID,
6679
	           			Ora_Sysdate,
6680
	           			nUser_id,
6681
 
6682
	      	   		   );
6683
 
6684
-- 		UPDATE RELEASE_CONTENT
6685
-- 	       SET pv_id = nPv_id,
6686
-- 	           insert_stamp = Ora_Sysdate,
6687
-- 	           insertor_id = nUser_id
6688
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
6689
-- 	       AND pv_id = sync_rtags_rec.pv_id;
6690
 
6691
		FETCH sync_rtags_cur INTO sync_rtags_rec;
6692
	END LOOP;
6693
 
6694
	CLOSE sync_rtags_cur;
6695
 
6696
END Sync_Projects_New_Version;
6697
/
6698
 
6699
CREATE PROCEDURE "RELEASE_MANAGER"."TEST" 
6700
IS
6701
 
6702
proc_id NUMBER;
6703
/******************************************************************************
6704
   NAME:       DELETE_DO_NOT_RIPPLE
6705
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
6706
               IS RELEASED
6707
 
6708
   REVISIONS:
6709
   Ver        Date        Author           Description
6710
   ---------  ----------  ---------------  ------------------------------------
6711
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
6712
 
6713
   NOTES:
6714
 
6715
   Automatically available Auto Replace Keywords:
6716
      Object Name:     DELETE_DO_NOT_RIPPLE
6717
      Sysdate:         21/04/2006
6718
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
6719
      Username:         (set in TOAD Options, Procedure Editor)
6720
      Table Name:       (set in the "New PL/SQL Object" dialog)
6721
 
6722
******************************************************************************/
6723
   CURSOR ripple_cur
6724
   IS
6725
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
6726
 
6727
   ripple_rec   ripple_cur%ROWTYPE;
6728
BEGIN
6729
   OPEN ripple_cur;
6730
 
6731
   FETCH ripple_cur
6732
    INTO ripple_rec;
6733
 
6734
   WHILE ripple_cur%FOUND
6735
   LOOP
6736
 
6737
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
6738
 
6739
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
6740
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
6741
 
6742
      FETCH ripple_cur
6743
       INTO ripple_rec;
6744
   END LOOP;
6745
END test;
6746
/
6747
 
6748
CREATE PROCEDURE "RELEASE_MANAGER"."TEST_MARCO" IS
6749
/******************************************************************************
6750
   NAME:       TEST_MARCO
6751
   PURPOSE:    
6752
 
6753
   REVISIONS:
6754
   Ver        Date        Author           Description
6755
   ---------  ----------  ---------------  ------------------------------------
6756
   1.0        2/03/2007          1. Created this procedure.
6757
 
6758
   NOTES:
6759
 
6760
   Automatically available Auto Replace Keywords:
6761
      Object Name:     TEST_MARCO
6762
      Sysdate:         2/03/2007
6763
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
6764
      Username:         (set in TOAD Options, Procedure Editor)
6765
      Table Name:       (set in the "New PL/SQL Object" dialog)
6766
 
6767
******************************************************************************/
6768
 
6769
parPv_id    NUMBER;
6770
parPkg_id   NUMBER;
6771
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
6772
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
6773
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
6774
BEGIN
6775
 
6776
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
6777
 
6778
        /* LOG ACTION */
6779
        Log_Action ( parPv_id, 'new_version', 3764,
6780
        			 'New package version: '|| parPv_id || '.' );
6781
 
6782
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
6783
 
6784
     -- Clone Package Version Details --
6785
            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,
6786
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
6787
                SELECT parPv_id         AS pv_id,
6788
                       pv.pkg_id        AS pkg_id,
6789
                       parPv_id || '.'    AS pkg_version,
6790
                       'N'              AS dlocked,
6791
                       Ora_Sysdate      AS created_stamp,
6792
                       3764        AS creator_id,
6793
                       Ora_Sysdatetime  AS modified_stamp,
6794
                       3764        AS modifier_id,
6795
                       SSV_MM          AS V_MM,
6796
                       SSV_NMM         AS V_NMM,
6797
                       SSV_EXT          AS V_EXT,
6798
                       pv.src_path,
6799
                       pv.pv_description,
6800
                       pv.PV_OVERVIEW,
6801
                       112982 	AS LAST_PV_ID,
6802
                       pv.owner_id,
6803
					   pv.BUILD_TYPE,
6804
					   pv.IS_BUILD_ENV_REQUIRED,
6805
					   pv.bs_id,
6806
					   pv.is_autobuildable,
6807
					   pv.IS_DEPLOYABLE
6808
                  FROM PACKAGE_VERSIONS pv
6809
                 WHERE pv.pv_id = 112982;		
6810
 
6811
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
6812
 
6813
 
6814
END TEST_MARCO;
6815
/
6816
 
6817
CREATE PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
6818
/* ---------------------------------------------------------------------------
6819
    Version: 3.0
6820
   --------------------------------------------------------------------------- */
6821
 
6822
 
6823
BEGIN
6824
 
6825
	 -- Touch Release for Rebuild
6826
     UPDATE RELEASE_TAGS rt SET
6827
     	rt.REBUILD_ENV = 'Y',
6828
        rt.REBUILD_STAMP = 0
6829
      WHERE rt.RTAG_ID = nRtagId;
6830
 
6831
	COMMIT;	  
6832
 
6833
END Touch_Release;
6834
/
6835
 
6836
CREATE PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
6837
/* ---------------------------------------------------------------------------
6838
    Version: 3.0
6839
   --------------------------------------------------------------------------- */
6840
 
6841
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6842
 
6843
BEGIN
6844
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
6845
 
6846
	 -- Touch Release for Rebuild
6847
     UPDATE RELEASE_TAGS rt SET
6848
     	rt.REBUILD_ENV = 'Y',
6849
        rt.REBUILD_STAMP = 0
6850
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
6851
 
6852
 
6853
END Touch_Release_Bulk;
6854
/
6855
 
6856
CREATE PROCEDURE "RELEASE_MANAGER"."TO_INSERT_VTREE_ID" IS
6857
 
6858
/******************************************************************************
6859
   NAME:       TO_INSERT_VTREE_ID
6860
   PURPOSE:    
6861
 
6862
   REVISIONS:
6863
   Ver        Date        Author           Description
6864
   ---------  ----------  ---------------  ------------------------------------
6865
   1.0        2/02/2007          1. Created this procedure.
6866
 
6867
   NOTES:
6868
 
6869
   Automatically available Auto Replace Keywords:
6870
      Object Name:     TO_INSERT_VTREE_ID
6871
      Sysdate:         2/02/2007
6872
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
6873
      Username:         (set in TOAD Options, Procedure Editor)
6874
      Table Name:       (set in the "New PL/SQL Object" dialog)
6875
 
6876
******************************************************************************/
6877
VTreeId NUMBER;																			  																	   
6878
 
6879
 
6880
	CURSOR curInfo IS
6881
    SELECT RTAG_ID
6882
	FROM RELEASE_TAGS
6883
	WHERE VTREE_ID IS NULL;
6884
    recInfo curInfo%ROWTYPE;
6885
 
6886
 
6887
BEGIN
6888
 
6889
	OPEN curInfo;
6890
    FETCH curInfo INTO recInfo;
6891
 
6892
	WHILE curInfo%FOUND
6893
	LOOP
6894
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
6895
 
6896
		UPDATE RELEASE_TAGS
6897
		SET VTREE_ID = VTreeId
6898
		WHERE RTAG_ID = recInfo.RTAG_ID;
6899
 
6900
		FETCH curInfo INTO recInfo;
6901
	END LOOP;
6902
 
6903
	CLOSE curInfo;
6904
 
6905
END TO_INSERT_VTREE_ID;
6906
/
6907
 
6908
CREATE PROCEDURE "RELEASE_MANAGER"."UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
6909
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
6910
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
6911
											   	 nUserId IN NUMBER) IS
6912
 
6913
ext VARCHAR2(50);
6914
PvIdList VARCHAR2(32767);
6915
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
6916
PvId NUMBER;
6917
sComments VARCHAR2(32767);
6918
 
6919
BEGIN
6920
 
6921
 
6922
 
6923
	--Extract the package extension
6924
	SELECT V_EXT into ext 
6925
	FROM PACKAGE_VERSIONS 
6926
	WHERE PV_ID = nPvId;
6927
 
6928
	--SELECT COMMENTS into sComments 
6929
	--FROM DEPRECATED_PACKAGES
6930
	--WHERE RTAG_ID = nRtagId
6931
	--AND V_EXT = ext
6932
	--AND PKG_ID = nPkgId;
6933
 
6934
	--SELECT PV_ID into PvIdList FROM
6935
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
6936
	--AND PKG_STATE = 6
6937
	--AND PV_ID NOT IN nPvId;
6938
 
6939
 
6940
	IF ext IS NOT NULL THEN
6941
       -- Undeprecate Package
6942
       DELETE FROM DEPRECATED_PACKAGES 
6943
	   WHERE RTAG_ID = nRtagId 
6944
	   AND PKG_ID = nPkgId
6945
	   AND V_EXT = ext;	
6946
 
6947
		UPDATE RELEASE_CONTENT 
6948
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
6949
		WHERE RTAG_ID = nRtagId
6950
		AND PV_ID IN (SELECT PV.PV_ID 
6951
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6952
					  WHERE PKG.PKG_ID = PV.PKG_ID
6953
					  AND PKG.PKG_ID = nPkgId
6954
					  AND PV.V_EXT = ext
6955
					  UNION
6956
					  SELECT DISTINCT
6957
	 	 		  	 		   qry.PV_ID
6958
							        FROM (
6959
									 	  SELECT dep.*,
6960
										  LEVEL AS LEVEL_NUM
6961
										  FROM PACKAGE_DEPENDENCIES dep
6962
	 								START WITH dep.DPV_ID IN ( nPvId )
6963
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
6964
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6965
	 								) qry,
6966
									PACKAGES pkg,
6967
									PACKAGE_VERSIONS pv,
6968
									RELEASE_CONTENT rc
6969
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
6970
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
6971
 
6972
					 );	 
6973
 
6974
	ELSE
6975
       -- Undeprecate Package
6976
       DELETE FROM DEPRECATED_PACKAGES 
6977
	   WHERE RTAG_ID = nRtagId 
6978
	   AND PKG_ID = nPkgId
6979
	   AND V_EXT IS NULL;	
6980
 
6981
		UPDATE RELEASE_CONTENT 
6982
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
6983
		WHERE RTAG_ID = nRtagId
6984
		AND PV_ID IN (SELECT PV.PV_ID 
6985
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
6986
					  WHERE PKG.PKG_ID = PV.PKG_ID
6987
					  AND PKG.PKG_ID = nPkgId
6988
					  AND PV.V_EXT IS NULL
6989
					  UNION
6990
					  SELECT DISTINCT
6991
	 	 		  	 		   qry.PV_ID
6992
							        FROM (
6993
									 	  SELECT dep.*,
6994
										  LEVEL AS LEVEL_NUM
6995
										  FROM PACKAGE_DEPENDENCIES dep
6996
	 								START WITH dep.DPV_ID IN ( nPvId )
6997
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
6998
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
6999
	 								) qry,
7000
									PACKAGES pkg,
7001
									PACKAGE_VERSIONS pv,
7002
									RELEASE_CONTENT rc
7003
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
7004
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
7005
 
7006
					 );	 	   
7007
 
7008
	END IF;
7009
 
7010
	--IF PvIdList IS NOT NULL THEN
7011
 
7012
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
7013
 
7014
	 --  FOR i IN 1..nIdCollector.COUNT
7015
	 --  LOOP
7016
	--	   PvId := nIdCollector(i);
7017
 
7018
 
7019
 
7020
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
7021
	--		END LOOP;
7022
	--END IF;
7023
 
7024
	Rebuild_environment(nRtagId);			 
7025
 
7026
 
7027
 
7028
END Undeprecate_Package;
7029
/
7030
 
7031
CREATE PROCEDURE "RELEASE_MANAGER"."UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
7032
											 nUserId IN NUMBER ) IS
7033
/* ---------------------------------------------------------------------------
7034
    Author: Rupesh Solanki
7035
 
7036
	Version: 4.0
7037
   --------------------------------------------------------------------------- */
7038
   STATE CHAR;
7039
 
7040
BEGIN
7041
 
7042
	SELECT DLOCKED INTO STATE
7043
	FROM PACKAGE_VERSIONS
7044
	WHERE PV_ID = nPvId; 
7045
 
7046
	IF STATE = 'A' THEN --It was made official for autobuilds
7047
		-- Unlock Package
7048
		UPDATE PACKAGE_VERSIONS pv SET
7049
		pv.DLOCKED = 'P'
7050
		WHERE pv.PV_ID = nPvId;	
7051
	ELSE
7052
		-- Unlock Package
7053
		UPDATE PACKAGE_VERSIONS pv SET
7054
		pv.DLOCKED = 'N'
7055
		WHERE pv.PV_ID = nPvId;	
7056
 
7057
	END IF;	   
7058
 
7059
    /* LOG ACTION */
7060
   	Log_Action ( nPvId, 'unlock_package', nUserId );
7061
 
7062
END Unlock_Package;
7063
/
7064
 
7065
CREATE PROCEDURE "RELEASE_MANAGER"."UNRIPPLE_PACKAGE" (
7066
        sPvIdList IN VARCHAR2,
7067
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
7068
        nUserId IN NUMBER
7069
    ) IS
7070
/* ---------------------------------------------------------------------------
7071
    Version: 4.1
7072
   --------------------------------------------------------------------------- */
7073
 
7074
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
7075
 
7076
BEGIN
7077
 
7078
    IF (sPvIdList IS NULL) THEN
7079
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
7080
    END IF;
7081
 
7082
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
7083
 
7084
    -- UnRipple Package
7085
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
7086
    SELECT nRtagId, pv.PV_ID
7087
    FROM PACKAGE_VERSIONS pv
7088
    WHERE pv.PV_ID IN (
7089
        SELECT *
7090
        FROM TABLE (
7091
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
7092
        )
7093
    );
7094
 
7095
    /* LOG ACTION */
7096
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
7097
 
7098
END UnRipple_Package;
7099
/
7100
 
7101
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
7102
													 pnPv_id IN NUMBER,
7103
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
7104
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
7105
                                                     pnUser_id IN NUMBER,
7106
                                                     outErrCode OUT NUMBER
7107
                                                    ) IS
7108
/* ---------------------------------------------------------------------------
7109
    Version: 3.0.1
7110
   --------------------------------------------------------------------------- */
7111
 
7112
    newID NUMBER;
7113
 
7114
    /* Disallow duplicate Note Titles */
7115
	CURSOR an_duplicate_cur IS
7116
        SELECT COUNT(*) AS cnt_note
7117
          FROM ADDITIONAL_NOTES
7118
         WHERE pv_id = pnPv_id
7119
           AND note_id != pnNote_id
7120
           AND note_title = psNote_title;
7121
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
7122
 
7123
BEGIN
7124
	outErrCode := -1;		-- Set default return error code to ERROR state
7125
 
7126
	OPEN an_duplicate_cur;
7127
    FETCH an_duplicate_cur INTO an_duplicate_rec;
7128
 
7129
    IF an_duplicate_rec.cnt_note < 1
7130
    THEN
7131
		--- Update Additional Note ---
7132
	    UPDATE ADDITIONAL_NOTES SET
7133
		       note_title = psNote_title,
7134
		       note_body = psNote_body,
7135
		       mod_date = Ora_Sysdate,
7136
		       mod_user = pnUser_id
7137
         WHERE note_id = pnNote_id
7138
           AND pv_id = pnPv_id;
7139
		outErrCode := 0;		-- Set return to SUCCESS
7140
	END IF;
7141
 
7142
	CLOSE an_duplicate_cur;
7143
END Update_Additional_Note;
7144
/
7145
 
7146
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
7147
 
7148
recno NUMBER;
7149
 
7150
CURSOR deprecate_cur IS
7151
 
7152
SELECT rc.pv_id
7153
FROM release_content rc
7154
WHERE rtag_id = nnrtag_id
7155
 AND deprecated_state IN(7);
7156
 
7157
deprecate_rec deprecate_cur % rowtype;
7158
 
7159
BEGIN
7160
 
7161
  OPEN deprecate_cur;
7162
 
7163
  FETCH deprecate_cur
7164
  INTO deprecate_rec;
7165
 
7166
  WHILE deprecate_cur % FOUND
7167
  LOOP
7168
 
7169
    SELECT COUNT(*)
7170
    INTO recno
7171
    FROM package_dependencies pd,
7172
      release_content rc
7173
    WHERE pd.pv_id = deprecate_rec.pv_id
7174
     AND rc.pv_id = pd.dpv_id
7175
     AND rc.rtag_id = nnrtag_id
7176
     AND rc.deprecated_state IN(6,   7);
7177
 
7178
    IF recno = 0 THEN
7179
 
7180
      UPDATE release_content
7181
      SET pkg_id = NULL, deprecated_state = NULL
7182
      WHERE pv_id = deprecate_rec.pv_id
7183
       AND rtag_id = nnrtag_id;
7184
 
7185
    END IF;
7186
 
7187
    FETCH deprecate_cur
7188
    INTO deprecate_rec;
7189
  END LOOP;
7190
 
7191
END;
7192
/
7193
 
7194
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_MISC_VIEW" IS
7195
/******************************************************************************
7196
   NAME:       UPDATE_MISC_VIEW
7197
   PURPOSE:    
7198
 
7199
   REVISIONS:
7200
   Ver        Date        Author           Description
7201
   ---------  ----------  ---------------  ------------------------------------
7202
   1.0        16/03/2007          1. Created this procedure.
7203
 
7204
   NOTES:
7205
 
7206
   Automatically available Auto Replace Keywords:
7207
      Object Name:     UPDATE_MISC_VIEW
7208
      Sysdate:         16/03/2007
7209
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
7210
      Username:         (set in TOAD Options, Procedure Editor)
7211
      Table Name:       (set in the "New PL/SQL Object" dialog)
7212
 
7213
******************************************************************************/
7214
   CURSOR view_cur /*Create a record set to store the ripple data*/
7215
   IS
7216
   	 SELECT pkg.pkg_id, rc.base_view_id 
7217
	 FROM package_versions pv, packages pkg, release_content rc
7218
	 where rc.rtag_id = 2362
7219
	 and rc.pv_id = pv.pv_id
7220
	 and pv.pkg_id = pkg.pkg_id;
7221
   view_rec   view_cur%ROWTYPE;
7222
 
7223
 
7224
 
7225
BEGIN
7226
   OPEN view_cur;
7227
 
7228
   FETCH view_cur
7229
    INTO view_rec;
7230
 
7231
   WHILE view_cur%FOUND
7232
   LOOP
7233
 
7234
 
7235
	   update release_content
7236
	   set base_view_id = view_rec.base_view_id
7237
	   where rtag_id = 8027
7238
	   and pv_id IN 
7239
	   (
7240
	   	select pv.pv_id from release_content rc, package_versions pv
7241
		where rc.rtag_id = 8027
7242
		and pv.pv_id = rc.pv_id
7243
		and pv.pkg_id = view_rec.pkg_id 
7244
 
7245
	   );
7246
 
7247
 
7248
 
7249
 
7250
 
7251
 
7252
 
7253
 
7254
 
7255
   FETCH view_cur
7256
   		 INTO view_rec;
7257
   END LOOP;	 
7258
 
7259
 
7260
 
7261
 
7262
 
7263
END UPDATE_MISC_VIEW; /
7264
 
7265
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
7266
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
7267
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7268
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
7269
                                                        NNuser_id IN NUMBER,
7270
                                                        NNdelete_old_dependency IN NUMBER
7271
                                                       ) IS
7272
/* ---------------------------------------------------------------------------
7273
    Version: 3.3
7274
   --------------------------------------------------------------------------- */
7275
 
7276
    retPV_ID NUMBER;
7277
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
7278
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
7279
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
7280
    NNpkg_id NUMBER;
7281
    NNdpkg_id NUMBER;
7282
 
7283
BEGIN
7284
    --- Seed database with package_name and version if required ---
7285
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
7286
 
7287
    -- get v_ext,pkg_id of current dependency
7288
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
7289
      FROM PACKAGE_VERSIONS
7290
     WHERE pv_id = retPV_ID;
7291
 
7292
    -- get pkg_id of parent package
7293
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
7294
      FROM PACKAGE_VERSIONS
7295
     WHERE pv_id = NNpv_id;
7296
 
7297
 
7298
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
7299
    	( (PvIsPatch IS NOT NULL) )THEN
7300
 
7301
	    IF NNdelete_old_dependency = 1 THEN
7302
	        /* Used for CUSTOM dependency add/edit */
7303
 
7304
	        --- Remove old dependency ---
7305
            IF (PvIsPatch IS NULL) THEN
7306
            	-- Do it for Packages
7307
		        DELETE FROM PACKAGE_DEPENDENCIES
7308
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
7309
		            (
7310
		            SELECT dep.*
7311
		              FROM PACKAGE_DEPENDENCIES dep,
7312
		                   PACKAGE_VERSIONS dpv,
7313
		                   PACKAGE_VERSIONS pv
7314
		             WHERE dep.dpv_id = dpv.pv_id
7315
		               AND dep.pv_id = NNpv_id
7316
		               AND pv.pv_id = retPV_ID
7317
		               AND dpv.pkg_id = pv.pkg_id
7318
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
7319
		            );
7320
            ELSE
7321
            	-- Do it for Patches
7322
                DELETE FROM PACKAGE_DEPENDENCIES
7323
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
7324
		            (
7325
		            SELECT dep.*
7326
		              FROM PACKAGE_DEPENDENCIES dep
7327
		             WHERE dep.dpv_id = retPV_ID
7328
		               AND dep.pv_id = NNpv_id
7329
		            );
7330
			END IF;
7331
 
7332
	    END IF;
7333
 
7334
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
7335
 
7336
	    --- Add new dependency ---
7337
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
7338
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
7339
 
7340
	END IF;
7341
 
7342
END Update_Package_Dependency;
7343
/
7344
 
7345
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
7346
                                                    NNsession_num IN NUMBER ) IS
7347
/* ---------------------------------------------------------------------------
7348
    Version: 3.0.0
7349
   --------------------------------------------------------------------------- */
7350
 
7351
/* =============  STATE RULES =================== */
7352
/*
7353
   MNR   MRR   MN   MR    |   pkg_state
7354
   ------------------------------------
7355
 
7356
 
7357
 
7358
 
7359
   ------------------------------------
7360
 
7361
 
7362
 
7363
 
7364
   ------------------------------------
7365
    1     0     0     0   |      MINOR_READY
7366
    1     0     0     1   |      MAJOR
7367
    1     0     1     0   |      MINOR
7368
    1     0     1     1   |      MAJOR
7369
   ------------------------------------
7370
    1     1     0     0   |      MAJOR_READY
7371
    1     1     0     1   |      MAJOR
7372
    1     1     1     0   |      MAJOR
7373
    1     1     1     1   |      MAJOR
7374
   ------------------------------------
7375
*/
7376
 
7377
BEGIN
7378
    /*----------------------------------------------
7379
    ||              MINOR READY
7380
    */----------------------------------------------
7381
 
7382
    UPDATE release_content
7383
       SET pkg_state = 4
7384
     WHERE rtag_id = NNrtag_id
7385
       AND pv_id IN
7386
           (
7387
           SELECT DISTINCT pv_id
7388
           FROM temp_env_states
7389
           WHERE session_num = NNsession_num
7390
             AND level_num = 1
7391
             AND tes_state = 2
7392
           );
7393
 
7394
    /*----------------------------------------------
7395
    ||              MAJOR READY
7396
    */----------------------------------------------
7397
    UPDATE release_content
7398
       SET pkg_state = 3
7399
     WHERE rtag_id = NNrtag_id
7400
       AND pv_id IN
7401
           (
7402
           SELECT DISTINCT pv_id
7403
           FROM temp_env_states
7404
           WHERE session_num = NNsession_num
7405
             AND level_num = 1
7406
             AND tes_state IN (0,1)
7407
           );
7408
 
7409
    /*----------------------------------------------
7410
    ||                MINOR
7411
    */----------------------------------------------
7412
    UPDATE release_content
7413
       SET pkg_state = 2
7414
     WHERE rtag_id = NNrtag_id
7415
       AND pv_id IN
7416
           (
7417
           SELECT DISTINCT pv_id
7418
            FROM temp_env_states
7419
            WHERE session_num = NNsession_num
7420
              AND level_num >= 2
7421
              AND tes_state = 2
7422
            MINUS
7423
           SELECT pv_id
7424
             FROM release_content
7425
            WHERE rtag_id = NNrtag_id
7426
              AND pkg_state = 3
7427
           );
7428
 
7429
    /*----------------------------------------------
7430
    ||                MAJOR
7431
    */----------------------------------------------
7432
    UPDATE release_content
7433
       SET pkg_state = 1
7434
     WHERE rtag_id = NNrtag_id
7435
       AND pv_id IN
7436
           (
7437
           SELECT DISTINCT pv_id
7438
           FROM temp_env_states
7439
           WHERE session_num = NNsession_num
7440
             AND level_num >= 2
7441
             AND tes_state IN (0,1)
7442
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
7443
           UNION
7444
           SELECT DISTINCT tes.pv_id
7445
           FROM temp_env_states tes,
7446
                release_content rc
7447
           WHERE tes.session_num = NNsession_num
7448
             AND tes.level_num >= 2
7449
             AND tes.tes_state = 2
7450
             AND rtag_id = NNrtag_id
7451
             AND rc.pv_id = tes.pv_id
7452
             AND rc.pkg_state = 3
7453
           );
7454
 
7455
    /*----------------------------------------------
7456
    ||                 OK
7457
    */----------------------------------------------
7458
    UPDATE release_content
7459
       SET pkg_state = 0
7460
     WHERE rtag_id = NNrtag_id
7461
       AND pv_id IN
7462
           (
7463
           SELECT rc.pv_id
7464
             FROM release_content rc
7465
            WHERE rc.rtag_id = NNrtag_id
7466
              AND NOT rc.pv_id IN
7467
                    (
7468
                     SELECT DISTINCT pv_id
7469
                     FROM temp_env_states WHERE session_num = NNsession_num
7470
                    )
7471
           );
7472
 
7473
 
7474
    /*----------------------------------------------
7475
    ||              ADVISORY RIPPLE - NEW STUFF
7476
    */----------------------------------------------
7477
 /*   UPDATE release_content
7478
       SET pkg_state = 8
7479
     WHERE rtag_id = NNrtag_id
7480
       AND pv_id IN
7481
           (
7482
           SELECT DISTINCT pv_id
7483
           FROM temp_env_states
7484
           WHERE session_num = NNsession_num
7485
             AND level_num = 1
7486
             AND tes_state = 3
7487
           );	*/
7488
 
7489
 
7490
 
7491
    /*----------------------------------------------
7492
    ||              ADVISORY RIPPLE DEPENDANT
7493
    */----------------------------------------------			   
7494
  /*  UPDATE release_content
7495
       SET pkg_state = 9
7496
     WHERE rtag_id = NNrtag_id
7497
       AND pv_id IN
7498
           (
7499
           SELECT DISTINCT pv_id
7500
           FROM temp_env_states
7501
           WHERE session_num = NNsession_num
7502
             AND level_num >= 2
7503
             AND tes_state = 3
7504
           );		*/	   
7505
 
7506
      Update_Deprecation_State (NNrtag_id);
7507
 
7508
END Update_Package_States;
7509
/
7510
 
7511
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PROCESSES" 
7512
IS
7513
 
7514
proc_id NUMBER;
7515
/******************************************************************************
7516
   NAME:       DELETE_DO_NOT_RIPPLE
7517
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
7518
               IS RELEASED
7519
 
7520
   REVISIONS:
7521
   Ver        Date        Author           Description
7522
   ---------  ----------  ---------------  ------------------------------------
7523
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
7524
 
7525
   NOTES:
7526
 
7527
   Automatically available Auto Replace Keywords:
7528
      Object Name:     DELETE_DO_NOT_RIPPLE
7529
      Sysdate:         21/04/2006
7530
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
7531
      Username:         (set in TOAD Options, Procedure Editor)
7532
      Table Name:       (set in the "New PL/SQL Object" dialog)
7533
 
7534
******************************************************************************/
7535
   CURSOR ripple_cur
7536
   IS
7537
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
7538
 
7539
   ripple_rec   ripple_cur%ROWTYPE;
7540
BEGIN
7541
   OPEN ripple_cur;
7542
 
7543
   FETCH ripple_cur
7544
    INTO ripple_rec;
7545
 
7546
   WHILE ripple_cur%FOUND
7547
   LOOP
7548
 
7549
 
7550
update deployment_manager.processes_config 
7551
set proc_id = ripple_rec.proc_id
7552
where pkg_health_tag = ripple_rec.proc_name
7553
and cmd_interface IS NULL
7554
and pkg_owner IS NULL
7555
and is_interface IS NULL; 
7556
 
7557
 
7558
      FETCH ripple_cur
7559
       INTO ripple_rec;
7560
   END LOOP;
7561
END UPDATE_PROCESSES;
7562
/
7563
 
7564
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
7565
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
7566
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
7567
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
7568
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
7569
													    NNuser_id IN NUMBER ) IS
7570
/* ---------------------------------------------------------------------------
7571
    Version: 3.0.1
7572
   --------------------------------------------------------------------------- */
7573
 
7574
    retRTD_ID	NUMBER;
7575
	CURSOR rtd_cur IS
7576
	    SELECT pv.pkg_version, pkg.pkg_name
7577
		  FROM runtime_dependencies rtd,
7578
		       package_versions pv,
7579
			   packages pkg
7580
		 WHERE rtd.rtd_id = pv.pv_id
7581
		   AND pv.pkg_id = pkg.pkg_id
7582
		   AND rtd.pv_id = NNpv_id
7583
		   AND rtd.rtd_id = NNrtd_id;
7584
	   rtd_rec rtd_cur%ROWTYPE;
7585
 
7586
	CURSOR old_rtd_cur IS
7587
	    SELECT pv.pv_id
7588
		  FROM package_versions pv
7589
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
7590
		 	   			 	    FROM package_versions rtdpv
7591
							   WHERE rtdpv.pv_id = NNrtd_id )
7592
		   AND pv.pkg_version = SSrtd_version;
7593
	old_rtd_rec old_rtd_cur%ROWTYPE;
7594
 
7595
 
7596
BEGIN
7597
 
7598
    -- Get current runtime dependency details
7599
	OPEN rtd_cur;
7600
    FETCH rtd_cur INTO rtd_rec;
7601
 
7602
 
7603
 
7604
 
7605
	IF rtd_rec.pkg_version != SSrtd_version THEN
7606
           -- Version has changed, hence create new runtime dependency --
7607
	    /* NOTE: You must create new version as updating just a version will affect
7608
		        all packages using this runtime dependency and user does not expect that.
7609
		        It is safer to create new version */
7610
		OPEN old_rtd_cur;
7611
		FETCH old_rtd_cur INTO old_rtd_rec;
7612
 
7613
 
7614
		IF old_rtd_cur%NOTFOUND
7615
		THEN
7616
			-- Version not found, hence Create New version --
7617
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
7618
 
7619
			-- Update runtime dependency table --
7620
			UPDATE runtime_dependencies SET
7621
				   rtd_id = retRTD_ID,
7622
				   rtd_url = SSrtd_url,
7623
				   rtd_comments = SSrtd_comments
7624
			 WHERE pv_id = NNpv_id
7625
			   AND rtd_id = NNrtd_id;
7626
 
7627
		ELSE
7628
			-- Update runtime dependency table --
7629
			UPDATE runtime_dependencies SET
7630
				   rtd_id = old_rtd_rec.pv_id,
7631
				   rtd_url = SSrtd_url,
7632
				   rtd_comments = SSrtd_comments
7633
			 WHERE pv_id = NNpv_id
7634
			   AND rtd_id = NNrtd_id;
7635
 
7636
		END IF;
7637
 
7638
 
7639
		CLOSE old_rtd_cur;
7640
 
7641
	ELSE
7642
		--  Version has not changed, hence update everithing except	version --
7643
		UPDATE runtime_dependencies SET
7644
			   rtd_url = SSrtd_url,
7645
			   rtd_comments = SSrtd_comments
7646
		 WHERE pv_id = NNpv_id
7647
		   AND rtd_id = NNrtd_id;
7648
 
7649
 
7650
 
7651
	END IF;
7652
 
7653
 
7654
	CLOSE rtd_cur;
7655
 
7656
END Update_Runtime_Dependency;
7657
/
7658
 
7659
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
7660
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
7661
											   nPv_id IN NUMBER,
7662
											   nUserId IN NUMBER,
7663
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
7664
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
7665
	                                           sCompletion_date IN VARCHAR2,
7666
											   sDpkg_path IN VARCHAR2,
7667
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
7668
											   sResults IN VARCHAR2,
7669
											   outFileName OUT VARCHAR2
7670
                                              ) IS
7671
/* ---------------------------------------------------------------------------
7672
    Version: 3.1.0
7673
   --------------------------------------------------------------------------- */
7674
 
7675
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
7676
 
7677
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
7678
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
7679
 
7680
 
7681
BEGIN
7682
 
7683
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
7684
       	ResultsURL := sResults;
7685
       ELSE
7686
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
7687
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
7688
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
7689
           END IF;
7690
       END IF;
7691
 
7692
	--- Update Unit Test ---
7693
    UPDATE UNIT_TESTS SET
7694
           TEST_SUMMARY = sTest_summary,
7695
		   NUMOF_TEST = sNumof_test,
7696
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
7697
		   COMPLETED_BY = nUserId,
7698
		   RESULTS_URL = ResultsURL,
7699
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
7700
     WHERE TEST_ID = nTest_id
7701
       AND PV_ID = nPv_id;
7702
 
7703
END Update_Unit_Test;
7704
/
7705
 
7706
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
7707
														  pnPv_id IN NUMBER,
7708
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
7709
														  sAcceptanceDate IN VARCHAR2,
7710
														  sAcceptedBy IN NUMBER,
7711
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
7712
														  cUpdateAcceptedStateOnly IN CHAR
7713
					                                     ) IS
7714
/* ---------------------------------------------------------------------------
7715
    Version: 3.0.0
7716
   --------------------------------------------------------------------------- */
7717
 
7718
 
7719
 
7720
BEGIN
7721
	IF cUpdateAcceptedStateOnly = 'Y'
7722
	THEN
7723
		--- Update Accepted State Only ---
7724
		IF ( sAccepted IS NULL )
7725
		THEN
7726
			-- Clear alleptance
7727
			UPDATE UNIT_TESTS SET
7728
		           TEST_ACCEPTED = NULL,
7729
		           ACCEPTANCE_DATE = NULL,
7730
				   ACCEPTED_BY = NULL,
7731
				   REVIEW_COMMENTS = NULL
7732
		     WHERE TEST_ID = pnTest_id
7733
		       AND PV_ID = pnPv_id;
7734
 
7735
	    ELSE
7736
			UPDATE UNIT_TESTS SET
7737
		           TEST_ACCEPTED = sAccepted,
7738
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
7739
				   ACCEPTED_BY = sAcceptedBy
7740
		     WHERE TEST_ID = pnTest_id
7741
		       AND PV_ID = pnPv_id;
7742
 
7743
		END IF;
7744
 
7745
 
7746
	ELSE
7747
		--- Update Unit Test Acceptance ---
7748
	    UPDATE UNIT_TESTS SET
7749
	           TEST_ACCEPTED = sAccepted,
7750
			   REVIEW_COMMENTS = sReviewComments,
7751
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
7752
			   ACCEPTED_BY = sAcceptedBy
7753
	     WHERE TEST_ID = pnTest_id
7754
	       AND PV_ID = pnPv_id;
7755
 
7756
	END IF;
7757
 
7758
END Update_Unit_Test_Acceptance;
7759
/
7760
 
7761
CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
7762
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
7763
											   nPv_id IN NUMBER,
7764
											   nUserId IN NUMBER,
7765
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
7766
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
7767
	                                           sCompletion_date IN VARCHAR2,
7768
											   sDpkg_path IN VARCHAR2,
7769
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
7770
											   sResults IN VARCHAR2,
7771
											   outFileName OUT VARCHAR2
7772
                                              ) IS
7773
/* ---------------------------------------------------------------------------
7774
    Version: 3.1.0
7775
   --------------------------------------------------------------------------- */
7776
 
7777
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
7778
 
7779
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
7780
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
7781
 
7782
 
7783
BEGIN
7784
 
7785
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
7786
       	ResultsURL := sResults;
7787
       ELSE
7788
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
7789
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
7790
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
7791
           END IF;
7792
       END IF;
7793
 
7794
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
7795
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
7796
    		sResults_url:= 'doc' || '/' || 
7797
			;
7798
        END IF;*/
7799
	--- Update Unit Test ---
7800
    UPDATE UNIT_TESTS SET
7801
           TEST_SUMMARY = sTest_summary,
7802
		   NUMOF_TEST = sNumof_test,
7803
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
7804
		   COMPLETED_BY = nUserId,
7805
		   RESULTS_URL = ResultsURL,
7806
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
7807
     WHERE TEST_ID = nTest_id
7808
       AND PV_ID = nPv_id;
7809
 
7810
END Update_Unit_Test_Test;
7811
/
7812
 
7813
-- new object type path is: SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
7814
 
7815
ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" 
7816
  COMPILE SPECIFICATION 
7817
    PLSQL_OPTIMIZE_LEVEL=  2
7818
    PLSQL_CODE_TYPE=  INTERPRETED
7819
    PLSQL_DEBUG=  TRUE
7820
 REUSE SETTINGS TIMESTAMP '2008-05-01 16:39:47'
7821
/
7822
 
7823
 
7824
ALTER PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" 
7825
  COMPILE SPECIFICATION 
7826
    PLSQL_OPTIMIZE_LEVEL=  2
7827
    PLSQL_CODE_TYPE=  INTERPRETED
7828
    PLSQL_DEBUG=  TRUE
7829
 REUSE SETTINGS TIMESTAMP '2008-02-18 12:29:42'
7830
/
7831
 
7832
 
7833
ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" 
7834
  COMPILE SPECIFICATION 
7835
    PLSQL_OPTIMIZE_LEVEL=  2
7836
    PLSQL_CODE_TYPE=  INTERPRETED
7837
    PLSQL_DEBUG=  FALSE
7838
 REUSE SETTINGS TIMESTAMP '2007-08-30 11:02:00'
7839
/
7840
 
7841
 
7842
ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
7843
  COMPILE SPECIFICATION 
7844
    PLSQL_OPTIMIZE_LEVEL=  2
7845
    PLSQL_CODE_TYPE=  INTERPRETED
7846
    PLSQL_DEBUG=  FALSE
7847
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27'
7848
/
7849
 
7850
 
7851
ALTER PACKAGE "RELEASE_MANAGER"."RM_ISSUES" 
7852
  COMPILE SPECIFICATION 
7853
    PLSQL_OPTIMIZE_LEVEL=  2
7854
    PLSQL_CODE_TYPE=  INTERPRETED
7855
    PLSQL_DEBUG=  FALSE
7856
 REUSE SETTINGS TIMESTAMP '2006-03-10 14:39:00'
7857
/
7858
 
7859
 
7860
ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" 
7861
  COMPILE SPECIFICATION 
7862
    PLSQL_OPTIMIZE_LEVEL=  2
7863
    PLSQL_CODE_TYPE=  INTERPRETED
7864
    PLSQL_DEBUG=  FALSE
7865
 REUSE SETTINGS TIMESTAMP '2006-11-24 14:53:11'
7866
/
7867
 
7868
 
7869
ALTER PACKAGE "RELEASE_MANAGER"."PK_PROJECT" 
7870
  COMPILE SPECIFICATION 
7871
    PLSQL_OPTIMIZE_LEVEL=  2
7872
    PLSQL_CODE_TYPE=  INTERPRETED
7873
    PLSQL_DEBUG=  FALSE
7874
 REUSE SETTINGS TIMESTAMP '2007-08-23 16:12:34'
7875
/
7876
 
7877
 
7878
ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" 
7879
  COMPILE SPECIFICATION 
7880
    PLSQL_OPTIMIZE_LEVEL=  2
7881
    PLSQL_CODE_TYPE=  INTERPRETED
7882
    PLSQL_DEBUG=  FALSE
7883
 REUSE SETTINGS TIMESTAMP '2006-03-28 08:59:35'
7884
/
7885
 
7886
 
7887
ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI" 
7888
  COMPILE SPECIFICATION 
7889
    PLSQL_OPTIMIZE_LEVEL=  2
7890
    PLSQL_CODE_TYPE=  INTERPRETED
7891
    PLSQL_DEBUG=  TRUE
7892
 REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:07'
7893
/
7894
 
7895
 
7896
ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" 
7897
  COMPILE SPECIFICATION 
7898
    PLSQL_OPTIMIZE_LEVEL=  2
7899
    PLSQL_CODE_TYPE=  INTERPRETED
7900
    PLSQL_DEBUG=  FALSE
7901
 REUSE SETTINGS TIMESTAMP '2007-02-01 09:25:39'
7902
/
7903
 
7904
 
7905
ALTER PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" 
7906
  COMPILE SPECIFICATION 
7907
    PLSQL_OPTIMIZE_LEVEL=  2
7908
    PLSQL_CODE_TYPE=  INTERPRETED
7909
    PLSQL_DEBUG=  TRUE
7910
 REUSE SETTINGS TIMESTAMP '2008-04-11 16:21:22'
7911
/
7912
 
7913
 
7914
ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" 
7915
  COMPILE SPECIFICATION 
7916
    PLSQL_OPTIMIZE_LEVEL=  2
7917
    PLSQL_CODE_TYPE=  INTERPRETED
7918
    PLSQL_DEBUG=  TRUE
7919
 REUSE SETTINGS TIMESTAMP '2008-05-01 16:39:53'
7920
/
7921
 
7922
 
7923
ALTER PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" 
7924
  COMPILE SPECIFICATION 
7925
    PLSQL_OPTIMIZE_LEVEL=  2
7926
    PLSQL_CODE_TYPE=  INTERPRETED
7927
    PLSQL_DEBUG=  FALSE
7928
 REUSE SETTINGS TIMESTAMP '2006-09-07 12:23:44'
7929
/
7930
 
7931
 
7932
ALTER PACKAGE "RELEASE_MANAGER"."PK_PLANNED" 
7933
  COMPILE SPECIFICATION 
7934
    PLSQL_OPTIMIZE_LEVEL=  2
7935
    PLSQL_CODE_TYPE=  INTERPRETED
7936
    PLSQL_DEBUG=  FALSE
7937
 REUSE SETTINGS TIMESTAMP '2005-10-11 10:18:44'
7938
/
7939
 
7940
 
7941
ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE" 
7942
  COMPILE SPECIFICATION 
7943
    PLSQL_OPTIMIZE_LEVEL=  2
7944
    PLSQL_CODE_TYPE=  INTERPRETED
7945
    PLSQL_DEBUG=  TRUE
7946
 REUSE SETTINGS TIMESTAMP '2008-04-11 13:14:35'
7947
/
7948
 
7949
 
7950
ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" 
7951
  COMPILE SPECIFICATION 
7952
    PLSQL_OPTIMIZE_LEVEL=  2
7953
    PLSQL_CODE_TYPE=  INTERPRETED
7954
    PLSQL_DEBUG=  TRUE
7955
 REUSE SETTINGS TIMESTAMP '2008-04-11 12:58:32'
7956
/
7957
 
7958
-- new object type path is: SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
7959
 
7960
ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER2" 
7961
  COMPILE 
7962
    PLSQL_OPTIMIZE_LEVEL=  2
7963
    PLSQL_CODE_TYPE=  INTERPRETED
7964
    PLSQL_DEBUG=  FALSE
7965
 REUSE SETTINGS TIMESTAMP '2006-12-18 09:42:17'
7966
/
7967
 
7968
 
7969
ALTER FUNCTION "RELEASE_MANAGER"."ORA_SYSDATE" 
7970
  COMPILE 
7971
    PLSQL_OPTIMIZE_LEVEL=  2
7972
    PLSQL_CODE_TYPE=  INTERPRETED
7973
    PLSQL_DEBUG=  TRUE
7974
 REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12'
7975
/
7976
 
7977
 
7978
ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER" 
7979
  COMPILE 
7980
    PLSQL_OPTIMIZE_LEVEL=  2
7981
    PLSQL_CODE_TYPE=  INTERPRETED
7982
    PLSQL_DEBUG=  TRUE
7983
 REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12'
7984
/
7985
 
7986
 
7987
ALTER FUNCTION "RELEASE_MANAGER"."ORA_SYSDATETIME" 
7988
  COMPILE 
7989
    PLSQL_OPTIMIZE_LEVEL=  2
7990
    PLSQL_CODE_TYPE=  INTERPRETED
7991
    PLSQL_DEBUG=  TRUE
7992
 REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12'
7993
/
7994
 
7995
 
7996
ALTER FUNCTION "RELEASE_MANAGER"."GET_V_EXT" 
7997
  COMPILE 
7998
    PLSQL_OPTIMIZE_LEVEL=  2
7999
    PLSQL_CODE_TYPE=  INTERPRETED
8000
    PLSQL_DEBUG=  TRUE
8001
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42'
8002
/
8003
 
8004
 
8005
ALTER FUNCTION "RELEASE_MANAGER"."DT_ADDUSEROBJECT" 
8006
  COMPILE 
8007
    PLSQL_OPTIMIZE_LEVEL=  2
8008
    PLSQL_CODE_TYPE=  INTERPRETED
8009
    PLSQL_DEBUG=  FALSE
8010
 REUSE SETTINGS TIMESTAMP '2005-02-01 09:57:30'
8011
/
8012
 
8013
 
8014
ALTER FUNCTION "RELEASE_MANAGER"."PERL_DBD_TESTFUNC" 
8015
  COMPILE 
8016
    PLSQL_OPTIMIZE_LEVEL=  2
8017
    PLSQL_CODE_TYPE=  INTERPRETED
8018
    PLSQL_DEBUG=  FALSE
8019
 REUSE SETTINGS TIMESTAMP '2004-10-15 22:30:52'
8020
/
8021
 
8022
 
8023
ALTER FUNCTION "RELEASE_MANAGER"."IS_VERSION_EXTENSION" 
8024
  COMPILE 
8025
    PLSQL_OPTIMIZE_LEVEL=  2
8026
    PLSQL_CODE_TYPE=  INTERPRETED
8027
    PLSQL_DEBUG=  TRUE
8028
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42'
8029
/
8030
 
8031
 
8032
ALTER FUNCTION "RELEASE_MANAGER"."IS_NUMBER" 
8033
  COMPILE 
8034
    PLSQL_OPTIMIZE_LEVEL=  2
8035
    PLSQL_CODE_TYPE=  INTERPRETED
8036
    PLSQL_DEBUG=  TRUE
8037
 REUSE SETTINGS TIMESTAMP '2008-02-12 19:43:52'
8038
/
8039
 
8040
 
8041
ALTER FUNCTION "RELEASE_MANAGER"."GET_PATCH_VERSION" 
8042
  COMPILE 
8043
    PLSQL_OPTIMIZE_LEVEL=  2
8044
    PLSQL_CODE_TYPE=  INTERPRETED
8045
    PLSQL_DEBUG=  TRUE
8046
 REUSE SETTINGS TIMESTAMP '2008-02-12 20:10:35'
8047
/
8048
 
8049
 
8050
ALTER FUNCTION "RELEASE_MANAGER"."GET_BUILD_NUMBER" 
8051
  COMPILE 
8052
    PLSQL_OPTIMIZE_LEVEL=  2
8053
    PLSQL_CODE_TYPE=  INTERPRETED
8054
    PLSQL_DEBUG=  TRUE
8055
 REUSE SETTINGS TIMESTAMP '2008-02-13 13:12:28'
8056
/
8057
 
8058
 
8059
ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_VARCHAR2" 
8060
  COMPILE 
8061
    PLSQL_OPTIMIZE_LEVEL=  2
8062
    PLSQL_CODE_TYPE=  INTERPRETED
8063
    PLSQL_DEBUG=  TRUE
8064
 REUSE SETTINGS TIMESTAMP '2005-06-01 12:30:02'
8065
/
8066
 
8067
 
8068
ALTER FUNCTION "RELEASE_MANAGER"."CAN_EDIT_PKG_IN_PROJECT" 
8069
  COMPILE 
8070
    PLSQL_OPTIMIZE_LEVEL=  2
8071
    PLSQL_CODE_TYPE=  INTERPRETED
8072
    PLSQL_DEBUG=  FALSE
8073
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:38'
8074
/
8075
 
8076
 
8077
ALTER FUNCTION "RELEASE_MANAGER"."RELEASE_MODE" 
8078
  COMPILE 
8079
    PLSQL_OPTIMIZE_LEVEL=  2
8080
    PLSQL_CODE_TYPE=  INTERPRETED
8081
    PLSQL_DEBUG=  FALSE
8082
 REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:40'
8083
/
8084
 
8085
 
8086
ALTER FUNCTION "RELEASE_MANAGER"."GET_AUTOMATED_LABEL" 
8087
  COMPILE 
8088
    PLSQL_OPTIMIZE_LEVEL=  2
8089
    PLSQL_CODE_TYPE=  INTERPRETED
8090
    PLSQL_DEBUG=  TRUE
8091
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42'
8092
/
8093
 
8094
-- new object type path is: SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
8095
 
8096
ALTER PROCEDURE "RELEASE_MANAGER"."TEST" 
8097
  COMPILE 
8098
    PLSQL_OPTIMIZE_LEVEL=  2
8099
    PLSQL_CODE_TYPE=  INTERPRETED
8100
    PLSQL_DEBUG=  FALSE
8101
 REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:24'
8102
/
8103
 
8104
 
8105
ALTER PROCEDURE "RELEASE_MANAGER"."INSERT_MULTIPLE_STICKY_NOTES" 
8106
  COMPILE 
8107
    PLSQL_OPTIMIZE_LEVEL=  2
8108
    PLSQL_CODE_TYPE=  INTERPRETED
8109
    PLSQL_DEBUG=  FALSE
8110
 REUSE SETTINGS TIMESTAMP '2007-05-25 14:57:25'
8111
/
8112
 
8113
 
8114
ALTER PROCEDURE "RELEASE_MANAGER"."CHANGE_PACKAGE_STATE" 
8115
  COMPILE 
8116
    PLSQL_OPTIMIZE_LEVEL=  2
8117
    PLSQL_CODE_TYPE=  INTERPRETED
8118
    PLSQL_DEBUG=  FALSE
8119
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27'
8120
/
8121
 
8122
 
8123
ALTER PROCEDURE "RELEASE_MANAGER"."DEPLOY_TO_RELEASE" 
8124
  COMPILE 
8125
    PLSQL_OPTIMIZE_LEVEL=  2
8126
    PLSQL_CODE_TYPE=  INTERPRETED
8127
    PLSQL_DEBUG=  FALSE
8128
 REUSE SETTINGS TIMESTAMP '2007-11-01 13:35:34'
8129
/
8130
 
8131
 
8132
ALTER PROCEDURE "RELEASE_MANAGER"."SET_TO_AUTOBUILDABLE" 
8133
  COMPILE 
8134
    PLSQL_OPTIMIZE_LEVEL=  2
8135
    PLSQL_CODE_TYPE=  INTERPRETED
8136
    PLSQL_DEBUG=  FALSE
8137
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31'
8138
/
8139
 
8140
 
8141
ALTER PROCEDURE "RELEASE_MANAGER"."BUILD_TREE" 
8142
  COMPILE 
8143
    PLSQL_OPTIMIZE_LEVEL=  2
8144
    PLSQL_CODE_TYPE=  INTERPRETED
8145
    PLSQL_DEBUG=  FALSE
8146
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8147
/
8148
 
8149
 
8150
ALTER PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS" 
8151
  COMPILE 
8152
    PLSQL_OPTIMIZE_LEVEL=  2
8153
    PLSQL_CODE_TYPE=  INTERPRETED
8154
    PLSQL_DEBUG=  FALSE
8155
 REUSE SETTINGS TIMESTAMP '2007-06-19 14:59:44'
8156
/
8157
 
8158
 
8159
ALTER PROCEDURE "RELEASE_MANAGER"."LOG_ACTION" 
8160
  COMPILE 
8161
    PLSQL_OPTIMIZE_LEVEL=  2
8162
    PLSQL_CODE_TYPE=  INTERPRETED
8163
    PLSQL_DEBUG=  TRUE
8164
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:39'
8165
/
8166
 
8167
 
8168
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_RUNTIME_DEPENDENCY" 
8169
  COMPILE 
8170
    PLSQL_OPTIMIZE_LEVEL=  2
8171
    PLSQL_CODE_TYPE=  INTERPRETED
8172
    PLSQL_DEBUG=  FALSE
8173
 REUSE SETTINGS TIMESTAMP '2007-06-19 16:18:20'
8174
/
8175
 
8176
 
8177
ALTER PROCEDURE "RELEASE_MANAGER"."BASIC_CLONE" 
8178
  COMPILE 
8179
    PLSQL_OPTIMIZE_LEVEL=  2
8180
    PLSQL_CODE_TYPE=  INTERPRETED
8181
    PLSQL_DEBUG=  FALSE
8182
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42'
8183
/
8184
 
8185
 
8186
ALTER PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" 
8187
  COMPILE 
8188
    PLSQL_OPTIMIZE_LEVEL=  2
8189
    PLSQL_CODE_TYPE=  INTERPRETED
8190
    PLSQL_DEBUG=  FALSE
8191
 REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:34'
8192
/
8193
 
8194
 
8195
ALTER PROCEDURE "RELEASE_MANAGER"."LEVEL_N_CONFLICTS" 
8196
  COMPILE 
8197
    PLSQL_OPTIMIZE_LEVEL=  2
8198
    PLSQL_CODE_TYPE=  INTERPRETED
8199
    PLSQL_DEBUG=  FALSE
8200
 REUSE SETTINGS TIMESTAMP '2007-06-20 16:18:28'
8201
/
8202
 
8203
 
8204
ALTER PROCEDURE "RELEASE_MANAGER"."NEW_ADDITIONAL_NOTE" 
8205
  COMPILE 
8206
    PLSQL_OPTIMIZE_LEVEL=  2
8207
    PLSQL_CODE_TYPE=  INTERPRETED
8208
    PLSQL_DEBUG=  FALSE
8209
 REUSE SETTINGS TIMESTAMP '2005-07-13 11:01:22'
8210
/
8211
 
8212
 
8213
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_COMPONENTS" 
8214
  COMPILE 
8215
    PLSQL_OPTIMIZE_LEVEL=  2
8216
    PLSQL_CODE_TYPE=  INTERPRETED
8217
    PLSQL_DEBUG=  FALSE
8218
 REUSE SETTINGS TIMESTAMP '2005-03-29 15:50:37'
8219
/
8220
 
8221
 
8222
ALTER PROCEDURE "RELEASE_MANAGER"."LEVEL_ONE_CONFLICTS" 
8223
  COMPILE 
8224
    PLSQL_OPTIMIZE_LEVEL=  2
8225
    PLSQL_CODE_TYPE=  INTERPRETED
8226
    PLSQL_DEBUG=  FALSE
8227
 REUSE SETTINGS TIMESTAMP '2007-06-20 16:18:11'
8228
/
8229
 
8230
 
8231
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_STATES" 
8232
  COMPILE 
8233
    PLSQL_OPTIMIZE_LEVEL=  2
8234
    PLSQL_CODE_TYPE=  INTERPRETED
8235
    PLSQL_DEBUG=  FALSE
8236
 REUSE SETTINGS TIMESTAMP '2007-06-20 16:17:01'
8237
/
8238
 
8239
 
8240
ALTER PROCEDURE "RELEASE_MANAGER"."CHECK_NEW_PATCHES" 
8241
  COMPILE 
8242
    PLSQL_OPTIMIZE_LEVEL=  2
8243
    PLSQL_CODE_TYPE=  INTERPRETED
8244
    PLSQL_DEBUG=  FALSE
8245
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:45'
8246
/
8247
 
8248
 
8249
ALTER PROCEDURE "RELEASE_MANAGER"."REBUILD_ENVIRONMENT" 
8250
  COMPILE 
8251
    PLSQL_OPTIMIZE_LEVEL=  2
8252
    PLSQL_CODE_TYPE=  INTERPRETED
8253
    PLSQL_DEBUG=  FALSE
8254
 REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:34'
8255
/
8256
 
8257
 
8258
ALTER PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" 
8259
  COMPILE 
8260
    PLSQL_OPTIMIZE_LEVEL=  2
8261
    PLSQL_CODE_TYPE=  INTERPRETED
8262
    PLSQL_DEBUG=  TRUE
8263
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42'
8264
/
8265
 
8266
 
8267
ALTER PROCEDURE "RELEASE_MANAGER"."NEW_VERSION" 
8268
  COMPILE 
8269
    PLSQL_OPTIMIZE_LEVEL=  2
8270
    PLSQL_CODE_TYPE=  INTERPRETED
8271
    PLSQL_DEBUG=  TRUE
8272
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:33'
8273
/
8274
 
8275
 
8276
ALTER PROCEDURE "RELEASE_MANAGER"."NEW_UNIT_TEST" 
8277
  COMPILE 
8278
    PLSQL_OPTIMIZE_LEVEL=  2
8279
    PLSQL_CODE_TYPE=  INTERPRETED
8280
    PLSQL_DEBUG=  FALSE
8281
 REUSE SETTINGS TIMESTAMP '2006-06-09 09:42:59'
8282
/
8283
 
8284
 
8285
ALTER PROCEDURE "RELEASE_MANAGER"."NEW_PATCH" 
8286
  COMPILE 
8287
    PLSQL_OPTIMIZE_LEVEL=  2
8288
    PLSQL_CODE_TYPE=  INTERPRETED
8289
    PLSQL_DEBUG=  FALSE
8290
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23'
8291
/
8292
 
8293
 
8294
ALTER PROCEDURE "RELEASE_MANAGER"."NEW_PACKAGE_NAME" 
8295
  COMPILE 
8296
    PLSQL_OPTIMIZE_LEVEL=  2
8297
    PLSQL_CODE_TYPE=  INTERPRETED
8298
    PLSQL_DEBUG=  FALSE
8299
 REUSE SETTINGS TIMESTAMP '2006-03-01 12:04:59'
8300
/
8301
 
8302
 
8303
ALTER PROCEDURE "RELEASE_MANAGER"."LOG_ACTION_BULK" 
8304
  COMPILE 
8305
    PLSQL_OPTIMIZE_LEVEL=  2
8306
    PLSQL_CODE_TYPE=  INTERPRETED
8307
    PLSQL_DEBUG=  FALSE
8308
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23'
8309
/
8310
 
8311
 
8312
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_DEPENDENCY" 
8313
  COMPILE 
8314
    PLSQL_OPTIMIZE_LEVEL=  2
8315
    PLSQL_CODE_TYPE=  INTERPRETED
8316
    PLSQL_DEBUG=  FALSE
8317
 REUSE SETTINGS TIMESTAMP '2007-06-19 15:01:50'
8318
/
8319
 
8320
 
8321
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_ADDITIONAL_NOTE" 
8322
  COMPILE 
8323
    PLSQL_OPTIMIZE_LEVEL=  2
8324
    PLSQL_CODE_TYPE=  INTERPRETED
8325
    PLSQL_DEBUG=  FALSE
8326
 REUSE SETTINGS TIMESTAMP '2005-07-13 11:01:53'
8327
/
8328
 
8329
 
8330
ALTER PROCEDURE "RELEASE_MANAGER"."UNLOCK_PACKAGE" 
8331
  COMPILE 
8332
    PLSQL_OPTIMIZE_LEVEL=  2
8333
    PLSQL_CODE_TYPE=  INTERPRETED
8334
    PLSQL_DEBUG=  FALSE
8335
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23'
8336
/
8337
 
8338
 
8339
ALTER PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE_BULK" 
8340
  COMPILE 
8341
    PLSQL_OPTIMIZE_LEVEL=  2
8342
    PLSQL_CODE_TYPE=  INTERPRETED
8343
    PLSQL_DEBUG=  FALSE
8344
 REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:38'
8345
/
8346
 
8347
 
8348
ALTER PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE" 
8349
  COMPILE 
8350
    PLSQL_OPTIMIZE_LEVEL=  2
8351
    PLSQL_CODE_TYPE=  INTERPRETED
8352
    PLSQL_DEBUG=  TRUE
8353
 REUSE SETTINGS TIMESTAMP '2007-01-25 10:48:17'
8354
/
8355
 
8356
 
8357
ALTER PROCEDURE "RELEASE_MANAGER"."SYNC_PROJECTS_NEW_VERSION" 
8358
  COMPILE 
8359
    PLSQL_OPTIMIZE_LEVEL=  2
8360
    PLSQL_CODE_TYPE=  INTERPRETED
8361
    PLSQL_DEBUG=  FALSE
8362
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23'
8363
/
8364
 
8365
 
8366
ALTER PROCEDURE "RELEASE_MANAGER"."SHIFT_INSTALL_ORDER" 
8367
  COMPILE 
8368
    PLSQL_OPTIMIZE_LEVEL=  2
8369
    PLSQL_CODE_TYPE=  INTERPRETED
8370
    PLSQL_DEBUG=  FALSE
8371
 REUSE SETTINGS TIMESTAMP '2006-07-03 14:09:33'
8372
/
8373
 
8374
 
8375
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_ACCEPTANCE" 
8376
  COMPILE 
8377
    PLSQL_OPTIMIZE_LEVEL=  2
8378
    PLSQL_CODE_TYPE=  INTERPRETED
8379
    PLSQL_DEBUG=  FALSE
8380
 REUSE SETTINGS TIMESTAMP '2006-06-09 09:19:13'
8381
/
8382
 
8383
 
8384
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST" 
8385
  COMPILE 
8386
    PLSQL_OPTIMIZE_LEVEL=  2
8387
    PLSQL_CODE_TYPE=  INTERPRETED
8388
    PLSQL_DEBUG=  FALSE
8389
 REUSE SETTINGS TIMESTAMP '2006-07-18 13:38:34'
8390
/
8391
 
8392
 
8393
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_RUNTIME_DEPENDENCY" 
8394
  COMPILE 
8395
    PLSQL_OPTIMIZE_LEVEL=  2
8396
    PLSQL_CODE_TYPE=  INTERPRETED
8397
    PLSQL_DEBUG=  FALSE
8398
 REUSE SETTINGS TIMESTAMP '2007-06-19 16:18:21'
8399
/
8400
 
8401
 
8402
ALTER PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV" 
8403
  COMPILE 
8404
    PLSQL_OPTIMIZE_LEVEL=  2
8405
    PLSQL_CODE_TYPE=  INTERPRETED
8406
    PLSQL_DEBUG=  FALSE
8407
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8408
/
8409
 
8410
 
8411
ALTER PROCEDURE "RELEASE_MANAGER"."RESET_IGNORE_WARNINGS" 
8412
  COMPILE 
8413
    PLSQL_OPTIMIZE_LEVEL=  2
8414
    PLSQL_CODE_TYPE=  INTERPRETED
8415
    PLSQL_DEBUG=  FALSE
8416
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:43'
8417
/
8418
 
8419
 
8420
ALTER PROCEDURE "RELEASE_MANAGER"."RENAME_PACKAGE_VERSION" 
8421
  COMPILE 
8422
    PLSQL_OPTIMIZE_LEVEL=  2
8423
    PLSQL_CODE_TYPE=  INTERPRETED
8424
    PLSQL_DEBUG=  FALSE
8425
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8426
/
8427
 
8428
 
8429
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_RUNTIME" 
8430
  COMPILE 
8431
    PLSQL_OPTIMIZE_LEVEL=  2
8432
    PLSQL_CODE_TYPE=  INTERPRETED
8433
    PLSQL_DEBUG=  FALSE
8434
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8435
/
8436
 
8437
 
8438
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_RELEASE_CONTENT" 
8439
  COMPILE 
8440
    PLSQL_OPTIMIZE_LEVEL=  2
8441
    PLSQL_CODE_TYPE=  INTERPRETED
8442
    PLSQL_DEBUG=  FALSE
8443
 REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:39'
8444
/
8445
 
8446
 
8447
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PATCH" 
8448
  COMPILE 
8449
    PLSQL_OPTIMIZE_LEVEL=  2
8450
    PLSQL_CODE_TYPE=  INTERPRETED
8451
    PLSQL_DEBUG=  FALSE
8452
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8453
/
8454
 
8455
 
8456
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_DOCUMENT" 
8457
  COMPILE 
8458
    PLSQL_OPTIMIZE_LEVEL=  2
8459
    PLSQL_CODE_TYPE=  INTERPRETED
8460
    PLSQL_DEBUG=  FALSE
8461
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24'
8462
/
8463
 
8464
 
8465
ALTER PROCEDURE "RELEASE_MANAGER"."DELETE_AUTOBUILD_FAILURE_INFO" 
8466
  COMPILE 
8467
    PLSQL_OPTIMIZE_LEVEL=  2
8468
    PLSQL_CODE_TYPE=  INTERPRETED
8469
    PLSQL_DEBUG=  FALSE
8470
 REUSE SETTINGS TIMESTAMP '2006-06-02 08:43:39'
8471
/
8472
 
8473
 
8474
ALTER PROCEDURE "RELEASE_MANAGER"."TEST_MARCO" 
8475
  COMPILE 
8476
    PLSQL_OPTIMIZE_LEVEL=  2
8477
    PLSQL_CODE_TYPE=  INTERPRETED
8478
    PLSQL_DEBUG=  FALSE
8479
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:35'
8480
/
8481
 
8482
 
8483
ALTER PROCEDURE "RELEASE_MANAGER"."SWITCH_REPRODUCIBLE_PACKAGE" 
8484
  COMPILE 
8485
    PLSQL_OPTIMIZE_LEVEL=  2
8486
    PLSQL_CODE_TYPE=  INTERPRETED
8487
    PLSQL_DEBUG=  FALSE
8488
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31'
8489
/
8490
 
8491
 
8492
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_MISC_VIEW" 
8493
  COMPILE 
8494
    PLSQL_OPTIMIZE_LEVEL=  2
8495
    PLSQL_CODE_TYPE=  INTERPRETED
8496
    PLSQL_DEBUG=  FALSE
8497
 REUSE SETTINGS TIMESTAMP '2007-11-01 13:39:48'
8498
/
8499
 
8500
 
8501
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_AUTOBUILD_FAILURE_INFO" 
8502
  COMPILE 
8503
    PLSQL_OPTIMIZE_LEVEL=  2
8504
    PLSQL_CODE_TYPE=  INTERPRETED
8505
    PLSQL_DEBUG=  FALSE
8506
 REUSE SETTINGS TIMESTAMP '2006-04-21 15:36:25'
8507
/
8508
 
8509
 
8510
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_VIEW_MEMBERS" 
8511
  COMPILE 
8512
    PLSQL_OPTIMIZE_LEVEL=  2
8513
    PLSQL_CODE_TYPE=  INTERPRETED
8514
    PLSQL_DEBUG=  FALSE
8515
 REUSE SETTINGS TIMESTAMP '2006-04-11 10:01:25'
8516
/
8517
 
8518
 
8519
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PROJECT_VIEW_OWNER" 
8520
  COMPILE 
8521
    PLSQL_OPTIMIZE_LEVEL=  2
8522
    PLSQL_CODE_TYPE=  INTERPRETED
8523
    PLSQL_DEBUG=  FALSE
8524
 REUSE SETTINGS TIMESTAMP '2006-04-11 15:25:47'
8525
/
8526
 
8527
 
8528
ALTER PROCEDURE "RELEASE_MANAGER"."TO_INSERT_VTREE_ID" 
8529
  COMPILE 
8530
    PLSQL_OPTIMIZE_LEVEL=  2
8531
    PLSQL_CODE_TYPE=  INTERPRETED
8532
    PLSQL_DEBUG=  FALSE
8533
 REUSE SETTINGS TIMESTAMP '2007-02-02 08:48:49'
8534
/
8535
 
8536
 
8537
ALTER PROCEDURE "RELEASE_MANAGER"."INSERT_INTO_PACKAGE_BUILD_INFO" 
8538
  COMPILE 
8539
    PLSQL_OPTIMIZE_LEVEL=  2
8540
    PLSQL_CODE_TYPE=  INTERPRETED
8541
    PLSQL_DEBUG=  FALSE
8542
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31'
8543
/
8544
 
8545
 
8546
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST_TEST" 
8547
  COMPILE 
8548
    PLSQL_OPTIMIZE_LEVEL=  2
8549
    PLSQL_CODE_TYPE=  INTERPRETED
8550
    PLSQL_DEBUG=  FALSE
8551
 REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20'
8552
/
8553
 
8554
 
8555
ALTER PROCEDURE "RELEASE_MANAGER"."LOG_DAEMON_ACTION" 
8556
  COMPILE 
8557
    PLSQL_OPTIMIZE_LEVEL=  2
8558
    PLSQL_CODE_TYPE=  INTERPRETED
8559
    PLSQL_DEBUG=  FALSE
8560
 REUSE SETTINGS TIMESTAMP '2007-06-29 08:55:37'
8561
/
8562
 
8563
 
8564
ALTER PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV_TEMP" 
8565
  COMPILE 
8566
    PLSQL_OPTIMIZE_LEVEL=  2
8567
    PLSQL_CODE_TYPE=  INTERPRETED
8568
    PLSQL_DEBUG=  FALSE
8569
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:45:53'
8570
/
8571
 
8572
 
8573
ALTER PROCEDURE "RELEASE_MANAGER"."SET_ADVISORY_RIPPLE" 
8574
  COMPILE 
8575
    PLSQL_OPTIMIZE_LEVEL=  2
8576
    PLSQL_CODE_TYPE=  INTERPRETED
8577
    PLSQL_DEBUG=  FALSE
8578
 REUSE SETTINGS TIMESTAMP '2007-06-26 10:29:42'
8579
/
8580
 
8581
 
8582
ALTER PROCEDURE "RELEASE_MANAGER"."CLEAR_ADVISORY_RIPPLE" 
8583
  COMPILE 
8584
    PLSQL_OPTIMIZE_LEVEL=  2
8585
    PLSQL_CODE_TYPE=  INTERPRETED
8586
    PLSQL_DEBUG=  FALSE
8587
 REUSE SETTINGS TIMESTAMP '2007-06-26 10:29:21'
8588
/
8589
 
8590
 
8591
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_DEPRECATION_STATE" 
8592
  COMPILE 
8593
    PLSQL_OPTIMIZE_LEVEL=  2
8594
    PLSQL_CODE_TYPE=  INTERPRETED
8595
    PLSQL_DEBUG=  FALSE
8596
 REUSE SETTINGS TIMESTAMP '2007-01-25 09:10:33'
8597
/
8598
 
8599
 
8600
ALTER PROCEDURE "RELEASE_MANAGER"."LOG_PROJECT_ACTION" 
8601
  COMPILE 
8602
    PLSQL_OPTIMIZE_LEVEL=  2
8603
    PLSQL_CODE_TYPE=  INTERPRETED
8604
    PLSQL_DEBUG=  FALSE
8605
 REUSE SETTINGS TIMESTAMP '2006-02-10 09:12:31'
8606
/
8607
 
8608
 
8609
ALTER PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS2" 
8610
  COMPILE 
8611
    PLSQL_OPTIMIZE_LEVEL=  2
8612
    PLSQL_CODE_TYPE=  INTERPRETED
8613
    PLSQL_DEBUG=  FALSE
8614
 REUSE SETTINGS TIMESTAMP '2007-06-15 10:55:58'
8615
/
8616
 
8617
 
8618
ALTER PROCEDURE "RELEASE_MANAGER"."CLONED_PROCESSES" 
8619
  COMPILE 
8620
    PLSQL_OPTIMIZE_LEVEL=  2
8621
    PLSQL_CODE_TYPE=  INTERPRETED
8622
    PLSQL_DEBUG=  FALSE
8623
 REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26'
8624
/
8625
 
8626
 
8627
ALTER PROCEDURE "RELEASE_MANAGER"."CLONED_PACKAGE_PROCESSES" 
8628
  COMPILE 
8629
    PLSQL_OPTIMIZE_LEVEL=  2
8630
    PLSQL_CODE_TYPE=  INTERPRETED
8631
    PLSQL_DEBUG=  FALSE
8632
 REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26'
8633
/
8634
 
8635
 
8636
ALTER PROCEDURE "RELEASE_MANAGER"."OLE" 
8637
  COMPILE 
8638
    PLSQL_OPTIMIZE_LEVEL=  2
8639
    PLSQL_CODE_TYPE=  INTERPRETED
8640
    PLSQL_DEBUG=  FALSE
8641
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:35'
8642
/
8643
 
8644
 
8645
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PROCESSES" 
8646
  COMPILE 
8647
    PLSQL_OPTIMIZE_LEVEL=  2
8648
    PLSQL_CODE_TYPE=  INTERPRETED
8649
    PLSQL_DEBUG=  FALSE
8650
 REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26'
8651
/
8652
 
8653
 
8654
ALTER PROCEDURE "RELEASE_MANAGER"."PENDING_PACKAGE" 
8655
  COMPILE 
8656
    PLSQL_OPTIMIZE_LEVEL=  2
8657
    PLSQL_CODE_TYPE=  INTERPRETED
8658
    PLSQL_DEBUG=  FALSE
8659
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27'
8660
/
8661
 
8662
 
8663
ALTER PROCEDURE "RELEASE_MANAGER"."DEPRECATE_PACKAGE" 
8664
  COMPILE 
8665
    PLSQL_OPTIMIZE_LEVEL=  2
8666
    PLSQL_CODE_TYPE=  INTERPRETED
8667
    PLSQL_DEBUG=  FALSE
8668
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:28'
8669
/
8670
 
8671
 
8672
ALTER PROCEDURE "RELEASE_MANAGER"."UNDEPRECATE_PACKAGE" 
8673
  COMPILE 
8674
    PLSQL_OPTIMIZE_LEVEL=  2
8675
    PLSQL_CODE_TYPE=  INTERPRETED
8676
    PLSQL_DEBUG=  FALSE
8677
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:35'
8678
/
8679
 
8680
 
8681
ALTER PROCEDURE "RELEASE_MANAGER"."CLEAN_DO_NOT_RIPPLE" 
8682
  COMPILE 
8683
    PLSQL_OPTIMIZE_LEVEL=  2
8684
    PLSQL_CODE_TYPE=  INTERPRETED
8685
    PLSQL_DEBUG=  FALSE
8686
 REUSE SETTINGS TIMESTAMP '2007-06-21 09:15:13'
8687
/
8688
 
8689
 
8690
ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_TEST" 
8691
  COMPILE 
8692
    PLSQL_OPTIMIZE_LEVEL=  2
8693
    PLSQL_CODE_TYPE=  INTERPRETED
8694
    PLSQL_DEBUG=  FALSE
8695
 REUSE SETTINGS TIMESTAMP '2006-07-18 12:51:44'
8696
/
8697
 
8698
 
8699
ALTER PROCEDURE "RELEASE_MANAGER"."PAOLO_BUILD_TREE" 
8700
  COMPILE 
8701
    PLSQL_OPTIMIZE_LEVEL=  2
8702
    PLSQL_CODE_TYPE=  INTERPRETED
8703
    PLSQL_DEBUG=  FALSE
8704
 REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:39'
8705
/
8706
 
8707
 
8708
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST" 
8709
  COMPILE 
8710
    PLSQL_OPTIMIZE_LEVEL=  2
8711
    PLSQL_CODE_TYPE=  INTERPRETED
8712
    PLSQL_DEBUG=  FALSE
8713
 REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20'
8714
/
8715
 
8716
 
8717
ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PACKAGE_INTEREST" 
8718
  COMPILE 
8719
    PLSQL_OPTIMIZE_LEVEL=  2
8720
    PLSQL_CODE_TYPE=  INTERPRETED
8721
    PLSQL_DEBUG=  FALSE
8722
 REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20'
8723
/
8724
 
8725
 
8726
ALTER PROCEDURE "RELEASE_MANAGER"."DT_DROPUSEROBJECTBYID" 
8727
  COMPILE 
8728
    PLSQL_OPTIMIZE_LEVEL=  2
8729
    PLSQL_CODE_TYPE=  INTERPRETED
8730
    PLSQL_DEBUG=  FALSE
8731
 REUSE SETTINGS TIMESTAMP '2005-02-01 09:57:31'
8732
/
8733
 
8734
 
8735
ALTER PROCEDURE "RELEASE_MANAGER"."DT_SETPROPERTYBYID" 
8736
  COMPILE 
8737
    PLSQL_OPTIMIZE_LEVEL=  2
8738
    PLSQL_CODE_TYPE=  INTERPRETED
8739
    PLSQL_DEBUG=  FALSE
8740
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:36'
8741
/
8742
 
8743
 
8744
ALTER PROCEDURE "RELEASE_MANAGER"."ADD_COMPONENT" 
8745
  COMPILE 
8746
    PLSQL_OPTIMIZE_LEVEL=  2
8747
    PLSQL_CODE_TYPE=  INTERPRETED
8748
    PLSQL_DEBUG=  FALSE
8749
 REUSE SETTINGS TIMESTAMP '2005-03-29 15:50:37'
8750
/
8751
 
8752
 
8753
ALTER PROCEDURE "RELEASE_MANAGER"."CHANGE_RELEASE_MODE" 
8754
  COMPILE 
8755
    PLSQL_OPTIMIZE_LEVEL=  2
8756
    PLSQL_CODE_TYPE=  INTERPRETED
8757
    PLSQL_DEBUG=  FALSE
8758
 REUSE SETTINGS TIMESTAMP '2007-01-25 13:34:37'
8759
/
8760
 
8761
 
8762
ALTER PROCEDURE "RELEASE_MANAGER"."LOCK_PACKAGE" 
8763
  COMPILE 
8764
    PLSQL_OPTIMIZE_LEVEL=  2
8765
    PLSQL_CODE_TYPE=  INTERPRETED
8766
    PLSQL_DEBUG=  FALSE
8767
 REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:26'
8768
/
8769
 
8770
 
8771
ALTER PROCEDURE "RELEASE_MANAGER"."RELEASE_MANAGER_MAILOUT" 
8772
  COMPILE 
8773
    PLSQL_OPTIMIZE_LEVEL=  2
8774
    PLSQL_CODE_TYPE=  INTERPRETED
8775
    PLSQL_DEBUG=  FALSE
8776
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:38'
8777
/
8778
 
8779
 
8780
ALTER PROCEDURE "RELEASE_MANAGER"."UNRIPPLE_PACKAGE" 
8781
  COMPILE 
8782
    PLSQL_OPTIMIZE_LEVEL=  2
8783
    PLSQL_CODE_TYPE=  INTERPRETED
8784
    PLSQL_DEBUG=  TRUE
8785
 REUSE SETTINGS TIMESTAMP '2007-08-29 09:26:48'
8786
/
8787
 
8788
 
8789
ALTER PROCEDURE "RELEASE_MANAGER"."RIPPLE_PACKAGE" 
8790
  COMPILE 
8791
    PLSQL_OPTIMIZE_LEVEL=  2
8792
    PLSQL_CODE_TYPE=  INTERPRETED
8793
    PLSQL_DEBUG=  TRUE
8794
 REUSE SETTINGS TIMESTAMP '2007-08-29 09:26:24'
8795
/
8796
 
8797
-- new object type path is: SCHEMA_EXPORT/VIEW/VIEW
8798
CREATE  FORCE VIEW "RELEASE_MANAGER"."RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
8799
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
8800
 
8801
;
8802
 
8803
CREATE  FORCE VIEW "RELEASE_MANAGER"."ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP") AS 
8804
  SELECT 2 AS ENV_AREA,
8805
    rc.PV_ID,
8806
    rc.RTAG_ID,
8807
    rc.BASE_VIEW_ID AS VIEW_ID,
8808
    rc.PKG_STATE,
8809
 rc.DEPRECATED_STATE,
8810
    rc.INSERTOR_ID,
8811
    rc.INSERT_STAMP
8812
  FROM RELEASE_CONTENT rc
8813
UNION
8814
SELECT 0 AS ENV_AREA,
8815
    wip.PV_ID,
8816
    wip.RTAG_ID,
8817
    wip.VIEW_ID,
8818
    NULL AS PKG_STATE,
8819
 NULL AS DEPRECATED_STATE,
8820
    NULL AS INSERTOR_ID,
8821
    NULL AS INSERT_STAMP
8822
  FROM WORK_IN_PROGRESS wip 
8823
UNION 
8824
SELECT 1 AS ENV_AREA,
8825
    pl.PV_ID,
8826
    pl.RTAG_ID,
8827
    pl.VIEW_ID,
8828
    NULL AS PKG_STATE,
8829
 NULL AS DEPRECATED_STATE,
8830
    NULL AS INSERTOR_ID,
8831
    NULL AS INSERT_STAMP
8832
  FROM PLANNED pl;
8833
 
8834
-- new object type path is: SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
8835
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RELEASE" IS
8836
 
8837
 
8838
/*
8839
------------------------------
8840
||  Last Modified:  S.Vukovic
8841
||  Modified Date:  12/Sep/2005
8842
||  Body Version:   3.0
8843
------------------------------
8844
*/
8845
 
8846
 
8847
/*-------------------------------------------------------------------------------------------------------*/
8848
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
8849
 
8850
RtagId NUMBER;
8851
ParentRtagId NUMBER;
8852
RecCount NUMBER := 0;
8853
VtreeId NUMBER;
8854
 
8855
 
8856
BEGIN
8857
	/*--------------- Business Rules Here -------------------*/
8858
	-- Check for missing parameters
8859
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
8860
	THEN
8861
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
8862
 
8863
	END IF;
8864
 
8865
 
8866
	-- Check for duplicate Release Names
8867
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
8868
	  FROM RELEASE_TAGS rt
8869
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
8870
	   AND rt.PROJ_ID = nProjId;
8871
 
8872
	IF (RecCount > 0) THEN
8873
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
8874
	END IF;
8875
	/*-------------------------------------------------------*/
8876
 
8877
 
8878
	-- Get rtag_id
8879
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
8880
 
8881
	SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
8882
 
8883
 
8884
 
8885
	-- Get Parent RtagId
8886
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
8887
 
8888
 
8889
	-- Create new release
8890
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
8891
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
8892
							   PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
8893
	VALUES ( RtagId, 
8894
			 sReleaseName, 
8895
			 sReleaseComments,
8896
			 ORA_SYSDATE,
8897
			 nUserId,
8898
			 'N',
8899
			 'N',
8900
			 0,
8901
			 ParentRtagId,
8902
			 nProjId,
8903
			 VtreeId );
8904
 
8905
	-- Update display Order
8906
	UPDATE_DISPLAY_ORDER ( nProjId );
8907
 
8908
	/* Log Project Action */
8909
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
8910
 
8911
 
8912
	-- Import Release Contents
8913
	IF (NOT nSourceRtagId IS NULL) THEN
8914
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
8915
 
8916
	END IF;
8917
 
8918
 
8919
 
8920
END;
8921
/*-------------------------------------------------------------------------------------------------------*/
8922
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
8923
 
8924
 
8925
BEGIN
8926
 
8927
 
8928
	/*--------------- Business Rules Here -------------------*/
8929
	/*-------------------------------------------------------*/
8930
 
8931
	UPDATE RELEASE_TAGS urt SET
8932
	urt.DISPLAY_ORDER = (
8933
						SELECT qry.REC_NUM
8934
						  FROM (	
8935
								SELECT rel.*, ROWNUM AS REC_NUM
8936
								  FROM (
8937
 
8938
								  		SELECT rt.RTAG_ID, 
8939
											   rt.DISPLAY_ORDER,
8940
										       DECODE( rt.PARENT_RTAG_ID, 
8941
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
8942
										  FROM RELEASE_TAGS rt
8943
										 WHERE rt.PROJ_ID = nProjId 
8944
 
8945
								  		) rel
8946
								START WITH rel.PARENT_RTAG_ID = 0
8947
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
8948
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
8949
								) qry
8950
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
8951
						)
8952
	WHERE urt.PROJ_ID = nProjId;
8953
 
8954
END;
8955
/*-------------------------------------------------------------------------------------------------------*/
8956
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
8957
 
8958
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
8959
	SeqNum NUMBER;
8960
 
8961
BEGIN
8962
 
8963
 
8964
	/*--------------- Business Rules Here -------------------*/
8965
	/*-------------------------------------------------------*/
8966
 
8967
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
8968
 
8969
	-- Set start sequence number
8970
	SeqNum := 1;
8971
 
8972
	FOR i IN 1..nIdCollector.COUNT
8973
	LOOP
8974
 
8975
		-- Update new display order
8976
		UPDATE RELEASE_TAGS rt SET
8977
			rt.DISPLAY_ORDER = SeqNum
8978
		 WHERE rt.PROJ_ID = nProjId
8979
		   AND rt.RTAG_ID = nIdCollector(i);
8980
 
8981
		SeqNum := SeqNum + 1;
8982
 
8983
	END LOOP;
8984
 
8985
END;
8986
/*-------------------------------------------------------------------------------------------------------*/
8987
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
8988
 
8989
RecCount NUMBER := 0;
8990
ProjId NUMBER;
8991
 
8992
BEGIN
8993
 
8994
 
8995
	/*--------------- Business Rules Here -------------------*/
8996
	-- Check for missing parameters
8997
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
8998
	THEN
8999
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9000
 
9001
	END IF;
9002
 
9003
 
9004
	-- Check for duplicate Release Names
9005
	SELECT rt.PROJ_ID INTO ProjId
9006
	  FROM RELEASE_TAGS rt
9007
	 WHERE rt.RTAG_ID = nRtagId;
9008
 
9009
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
9010
	  FROM RELEASE_TAGS rt
9011
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9012
	   AND rt.RTAG_ID != nRtagId
9013
	   AND rt.PROJ_ID = ProjId;
9014
 
9015
 
9016
	IF (RecCount > 0) THEN
9017
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
9018
	END IF;
9019
	/*-------------------------------------------------------*/
9020
 
9021
 
9022
 
9023
	-- Update release details
9024
	UPDATE RELEASE_TAGS rt SET
9025
	rt.RTAG_NAME = sReleaseName,
9026
	rt.DESCRIPTION = sReleaseComments,
9027
	rt.PARENT_RTAG_ID = nParentRtagId,
9028
	rt.ASSOC_MASS_REF = nMASSRtagId,
9029
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9030
	rt.OWNER_EMAIL = sOwnerEmail,
9031
	rt.PRODUCT_STATE_USED = cState
9032
	WHERE rt.RTAG_ID = nRtagId; 
9033
 
9034
	-- Update display Order
9035
	UPDATE_DISPLAY_ORDER ( ProjId );
9036
 
9037
	/* Log Project Action */
9038
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9039
 
9040
 
9041
 
9042
 
9043
END;
9044
/*-------------------------------------------------------------------------------------------------------*/
9045
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9046
 
9047
	RecCount NUMBER := 0;
9048
	sReleaseId VARCHAR2(4000);
9049
	ProjId NUMBER;
9050
 
9051
BEGIN
9052
	/*--------------- Business Rules Here -------------------*/
9053
	IF (nRtagId IS NULL) 
9054
	THEN
9055
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9056
	END IF;
9057
 
9058
 
9059
 
9060
	-- Check for any kids
9061
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9062
	  FROM RELEASE_TAGS rt
9063
	 WHERE rt.PARENT_RTAG_ID = nRtagId
9064
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9065
 
9066
	IF (RecCount > 0) THEN
9067
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9068
	END IF; 
9069
	/*-------------------------------------------------------*/
9070
 
9071
	-- Clear the release contents
9072
	Clean_Release_Contents ( nRtagId, nUserId );
9073
 
9074
	/* Log Project Action */
9075
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9076
	  FROM RELEASE_TAGS rt
9077
	 WHERE rt.RTAG_ID = nRtagId;
9078
 
9079
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9080
 
9081
 
9082
	-- Remove Release
9083
	DELETE 
9084
	  FROM RELEASE_TAGS rt
9085
	 WHERE rt.RTAG_ID = nRtagId;
9086
 
9087
 
9088
 
9089
END;
9090
/*-------------------------------------------------------------------------------------------------------*/
9091
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9092
 
9093
	sSourceLocation VARCHAR2(4000);
9094
	sTargetLocation VARCHAR2(4000);
9095
	ProjId NUMBER;
9096
	cReleaseMode CHAR(1);
9097
	RconId NUMBER;
9098
 
9099
 
9100
	CURSOR curReleaseConfigs IS
9101
    SELECT *
9102
	  FROM RELEASE_CONFIG rc
9103
	 WHERE rc.RTAG_ID = nSourceRtagId;
9104
    recReleaseConfigs curReleaseConfigs%ROWTYPE;
9105
 
9106
 
9107
BEGIN
9108
	/*--------------- Business Rules Here -------------------*/
9109
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9110
	THEN
9111
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9112
	END IF;
9113
 
9114
	IF (nSourceRtagId = nTargetRtagId) THEN
9115
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9116
	END IF;
9117
 
9118
 
9119
	-- Check if Target release is in OPEN mode
9120
	SELECT rt.OFFICIAL  INTO  cReleaseMode
9121
	  FROM RELEASE_TAGS rt
9122
	 WHERE rt.RTAG_ID = nTargetRtagId;
9123
 
9124
	IF (cReleaseMode != 'N') 
9125
THEN
9126
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9127
	END IF;	 
9128
 
9129
	/*-------------------------------------------------------*/
9130
 
9131
	-- Clean target contents
9132
	Clean_Release_Contents ( nTargetRtagId, nUserId );
9133
 
9134
 
9135
	-- Import Released Area Contents
9136
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) 
9137
	SELECT nTargetRtagId AS RTAG_ID, 
9138
		   rc.PV_ID, 
9139
		   rc.BASE_VIEW_ID, 
9140
		   rc.INSERT_STAMP, 
9141
		   rc.INSERTOR_ID, 
9142
		   rc.PKG_STATE,
9143
		   rc.PKG_ID,
9144
		   rc.DEPRECATED_STATE
9145
	  FROM RELEASE_CONTENT rc
9146
	 WHERE rc.RTAG_ID = nSourceRtagId;
9147
 
9148
 
9149
	--Import Release Configuration Information
9150
	OPEN curReleaseConfigs;
9151
    FETCH curReleaseConfigs INTO recReleaseConfigs;
9152
 
9153
	WHILE curReleaseConfigs%FOUND
9154
	LOOP
9155
 
9156
		-- Get the next rcon id
9157
		SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL;
9158
 
9159
		INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER )
9160
		VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter );
9161
 
9162
		FETCH curReleaseConfigs INTO recReleaseConfigs;
9163
	END LOOP;
9164
 
9165
	CLOSE curReleaseConfigs;		
9166
 
9167
 
9168
 
9169
	-- Import Ignore Warning states
9170
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9171
	SELECT nTargetRtagId AS RTAG_ID,
9172
	       igw.PV_ID,
9173
	       igw.DPV_ID
9174
	  FROM IGNORE_WARNINGS igw
9175
	 WHERE igw.rtag_id = nSourceRtagId;
9176
 
9177
 
9178
	/* Log Project Action */
9179
	-- Get Source Location
9180
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9181
	  FROM RELEASE_TAGS rt,
9182
	  	   PROJECTS pr
9183
	 WHERE rt.PROJ_ID = pr.PROJ_ID
9184
	   AND rt.RTAG_ID = nSourceRtagId;
9185
 
9186
	-- Get Target Location
9187
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9188
	  FROM RELEASE_TAGS rt,
9189
	  	   PROJECTS pr
9190
	 WHERE rt.PROJ_ID = pr.PROJ_ID
9191
	   AND rt.RTAG_ID = nTargetRtagId;	   
9192
 
9193
	-- Get project id   
9194
	SELECT rt.PROJ_ID  INTO  ProjId
9195
	  FROM RELEASE_TAGS rt
9196
	 WHERE rt.RTAG_ID = nTargetRtagId;   
9197
 
9198
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
9199
 
9200
 
9201
END;
9202
/*-------------------------------------------------------------------------------------------------------*/
9203
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9204
 
9205
	RecCount NUMBER;
9206
        rconIdList VARCHAR2(4000);
9207
 
9208
BEGIN
9209
	/*--------------- Business Rules Here -------------------*/
9210
	IF (nRtagId IS NULL) 
9211
	THEN
9212
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9213
	END IF;
9214
 
9215
 
9216
	-- Check if other release references this release
9217
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9218
	  FROM RELEASE_LINKS rl
9219
	 WHERE rl.REF_RTAG_ID = nRtagId;
9220
 
9221
	IF (RecCount > 0) THEN
9222
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9223
	END IF; 	
9224
	/*-------------------------------------------------------*/
9225
 
9226
	-- Delete Release links
9227
	DELETE 
9228
	  FROM RELEASE_LINKS rl
9229
	 WHERE rl.RTAG_ID = nRtagId;
9230
 
9231
	-- Delete ignore warning
9232
	DELETE 
9233
	  FROM IGNORE_WARNINGS iw
9234
	 WHERE iw.RTAG_ID = nRtagId;
9235
 
9236
 
9237
	-- Delete Build Order cached calculations	  
9238
	DELETE
9239
	  FROM BUILD_ORDER bo
9240
	 WHERE bo.RTAG_ID = nRtagId;
9241
 
9242
 
9243
	-- Delete Notification History
9244
	DELETE
9245
	  FROM NOTIFICATION_HISTORY nh
9246
	 WHERE nh.RTAG_ID = nRtagId;
9247
 
9248
 
9249
	-- Delete Released Area Contents
9250
	DELETE
9251
	  FROM RELEASE_CONTENT rc
9252
	 WHERE rc.RTAG_ID = nRtagId;
9253
 
9254
 
9255
	-- Delete Work In Progress Area Contents
9256
	DELETE
9257
	  FROM WORK_IN_PROGRESS wip
9258
	 WHERE wip.RTAG_ID = nRtagId;
9259
 
9260
 
9261
	-- Delete Pending Area Contents
9262
	DELETE 
9263
	  FROM PLANNED pl
9264
	 WHERE pl.RTAG_ID = nRtagId;
9265
 
9266
	-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)
9267
	DELETE
9268
	  FROM DEPRECATED_PACKAGES dp
9269
	 WHERE dp.RTAG_ID = nRtagId; 
9270
 
9271
	-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)
9272
	DELETE
9273
	  FROM PROJECT_ACTION_LOG pal
9274
	 WHERE pal.RTAG_ID = nRtagId;
9275
 
9276
	-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)
9277
	DELETE
9278
	  FROM DO_NOT_RIPPLE dnr
9279
	 WHERE dnr.RTAG_ID = nRtagId; 
9280
 
9281
	-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)
9282
	DELETE
9283
	  FROM DASH_BOARD db
9284
	 WHERE db.RTAG_ID = nRtagId;
9285
 
9286
        -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008)        
9287
        FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9288
        LOOP
9289
          rconIdList := rconIdList || rcon.RCON_ID || ',';
9290
        END LOOP;
9291
 
9292
        pk_buildapi.DELETE_DAEMON(rconIdList);
9293
 
9294
        -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)
9295
        DELETE
9296
          FROM RELEASE_METRICS rm
9297
         WHERE rm.RTAG_ID = nRtagId;
9298
 
9299
	-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)
9300
	DELETE
9301
	  FROM RELEASE_CONFIG rc
9302
	 WHERE rc.RTAG_ID = nRtagId;
9303
 
9304
 
9305
 
9306
END;
9307
/*-------------------------------------------------------------------------------------------------------*/
9308
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
9309
 
9310
	nSourceParentRtagId NUMBER;
9311
 
9312
BEGIN
9313
	/*--------------- Business Rules Here -------------------*/
9314
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
9315
	THEN
9316
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
9317
	END IF;
9318
	/*-------------------------------------------------------*/
9319
 
9320
 
9321
	IF ( nSourceRtagId IS NULL ) THEN
9322
		-- Create new on main branch
9323
		RETURN nRtagId;
9324
 
9325
	ELSE
9326
		-- Create from source rtag_id
9327
 
9328
		-- Find parent of Source RtagId
9329
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
9330
		  FROM RELEASE_TAGS rt
9331
		 WHERE rt.RTAG_ID = nSourceRtagId;
9332
 
9333
		IF (UPPER(cIsBranch) = 'Y') THEN
9334
			RETURN nSourceRtagId;
9335
		ELSE
9336
			IF (nSourceRtagId = nSourceParentRtagId) THEN
9337
				RETURN nRtagId;
9338
			ELSE
9339
				RETURN nSourceParentRtagId;
9340
			END IF;
9341
		END IF;	
9342
 
9343
 
9344
	END IF;
9345
 
9346
 
9347
END;
9348
/*-------------------------------------------------------------------------------------------------------*/
9349
 
9350
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
9351
-- 							 sNextVersion OUT VARCHAR2,
9352
-- 							 nNextLifeCycle OUT NUMBER,
9353
-- 							 nParentRtagId OUT NUMBER,
9354
-- 							 nProjId IN NUMBER ) IS
9355
-- 							
9356
-- SourceBranchCount NUMBER;
9357
-- ProjRootVersion VARCHAR2(4000);
9358
-- LastLifeCycle NUMBER;
9359
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
9360
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
9361
-- 
9362
-- SourceProjId NUMBER; 
9363
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
9364
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
9365
-- 
9366
-- BEGIN
9367
-- 	/*--------------- Business Rules Here -------------------*/
9368
-- 	/*-------------------------------------------------------*/
9369
-- 	
9370
-- 	   
9371
-- 	BEGIN
9372
-- 		-- Get Project root version
9373
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
9374
-- 		  FROM RELEASE_TAGS rt
9375
-- 		 WHERE rt.PROJ_ID = nProjId
9376
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
9377
-- 	   
9378
-- 		EXCEPTION
9379
-- 		WHEN NO_DATA_FOUND THEN
9380
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
9381
-- 	END;		   
9382
-- 	
9383
-- 	
9384
-- 	
9385
-- 	 
9386
-- 	BEGIN
9387
-- 		-- Get info for source rtagid
9388
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
9389
-- 		  FROM RELEASE_TAGS rt
9390
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
9391
-- 	   
9392
-- 		EXCEPTION
9393
-- 		WHEN NO_DATA_FOUND THEN
9394
-- 		SourceProjId := NULL;
9395
-- 		SourceVersion := NULL;
9396
-- 		SourceLifeCycle := NULL;
9397
-- 	END;	  
9398
-- 	
9399
-- 	
9400
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
9401
-- 	
9402
-- 		/* Blank Release Required  OR  Release imported from other project */
9403
-- 		
9404
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
9405
-- 			/* No Releases found in the project, hence calculate next version available.  */
9406
-- 			
9407
-- 			-- Set parent rtag
9408
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
9409
-- 			
9410
-- 			
9411
-- 			BEGIN
9412
-- 				-- Get Next Available Global Root Version 
9413
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
9414
-- 				  
9415
FROM RELEASE_TAGS rt
9416
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
9417
-- 				
9418
-- 				-- Set Next Rtag Version
9419
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
9420
-- 				
9421
-- 				-- Restart Lifecycle
9422
-- 				nNextLifeCycle := 0;
9423
-- 				
9424
-- 				
9425
-- 				EXCEPTION
9426
-- 				WHEN NO_DATA_FOUND THEN
9427
-- 				-- Release Manager has no releases, hence start from 1
9428
-- 				sNextVersion := '1';
9429
-- 				nNextLifeCycle := 0;
9430
-- 				
9431
-- 			END;
9432
-- 			
9433
-- 			
9434
-- 					
9435
-- 		ELSE
9436
-- 			/* Releases found in this project. */
9437
-- 							   
9438
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
9439
-- 			  FROM (
9440
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
9441
-- 					  FROM RELEASE_TAGS rt
9442
-- 					 WHERE rt.PROJ_ID = nProjId
9443
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
9444
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
9445
-- 			  		) qry
9446
-- 			 WHERE ROWNUM = 1;		
9447
-- 
9448
-- 			
9449
-- 			-- Set same Rtag Version
9450
-- 			sNextVersion := ProjRootVersion;
9451
-- 			
9452
-- 			-- Increase Lifecycle
9453
-- 			nNextLifeCycle := LastLifeCycle + 1;
9454
-- 		
9455
-- 		END IF;
9456
-- 				
9457
-- 	
9458
-- 		
9459
-- 	ELSE
9460
-- 		/* Create Release From other release within this project */
9461
-- 		
9462
-- 		-- Set parent id
9463
-- 		nParentRtagId := nSourceRtagId;
9464
-- 		
9465
-- 		
9466
-- 		-- Get number of source branches
9467
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
9468
-- 		  FROM RELEASE_TAGS rt
9469
-- 		 WHERE rt.PROJ_ID = nProjId
9470
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
9471
-- 		   
9472
-- 		   
9473
-- 		IF SourceBranchCount = 0 THEN
9474
-- 			/* Release is Head (i.e. Tip on its branch ) */
9475
-- 			
9476
-- 			-- Set Next Rtag Version
9477
-- 			sNextVersion := SourceVersion;
9478
-- 			
9479
-- 			-- Increase Lifecycle
9480
-- 			nNextLifeCycle := SourceLifeCycle + 1;
9481
-- 			
9482
-- 			
9483
-- 		ELSIF SourceBranchCount = 1 THEN
9484
-- 			/* Release IS NOT Head, but can be branched */
9485
-- 			
9486
-- 			-- Set Next Rtag Version
9487
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
9488
-- 			
9489
-- 			-- Reset Lifecycle to 1
9490
-- 			nNextLifeCycle := 1;
9491
-- 			
9492
-- 			
9493
-- 		ELSE	
9494
-- 			-- Limit of two branches is reached
9495
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
9496
-- 			
9497
-- 		END IF;	
9498
-- 			
9499
-- 			
9500
-- 		
9501
-- 		
9502
-- 		
9503
-- 	
9504
-- 	END IF;
9505
-- 	
9506
-- 		
9507
-- END;
9508
 
9509
/*-------------------------------------------------------------------------------------------------------*/
9510
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9511
 
9512
	IsBaseView CHAR(1);
9513
 
9514
BEGIN
9515
 
9516
	-- Check if the view is BASE VIEW
9517
	SELECT vi.BASE_VIEW INTO IsBaseView
9518
	  FROM VIEWS vi
9519
	 WHERE vi.VIEW_ID = ViewId;
9520
 
9521
	IF (IsBaseView = 'Y') THEN 
9522
		-- Get Base view content
9523
		OPEN RecordSet FOR
9524
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9525
			   rel.deprecated_state,
9526
			   pv.pv_id, 
9527
			   pkg.pkg_name, 
9528
			   pv.pkg_version, 
9529
			   pv.dlocked, 
9530
			   pv.pv_description,
9531
			   pv.BUILD_TYPE
9532
		  FROM release_content rel,
9533
		       packages pkg,
9534
		       package_versions pv
9535
		 WHERE pv.pkg_id = pkg.pkg_id
9536
		   AND rel.pv_id = pv.pv_id
9537
		   AND rel.BASE_VIEW_ID = ViewId
9538
		   AND rel.RTAG_ID = RtagId
9539
		 ORDER BY UPPER(pkg.PKG_NAME);
9540
 
9541
	ELSE	 
9542
 
9543
	 	-- Get non base view content
9544
		OPEN RecordSet FOR
9545
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9546
			   rel.deprecated_state,
9547
			   pv.pv_id, 
9548
			   pkg.pkg_name, 
9549
			   pv.pkg_version, 
9550
			   pv.dlocked, 
9551
			   pv.pv_description,
9552
			   pv.BUILD_TYPE
9553
		  FROM release_content rel,
9554
		       packages pkg,
9555
		       package_versions pv,
9556
			   VIEW_DEF vd
9557
		 WHERE pv.pkg_id = pkg.pkg_id
9558
		   AND rel.pv_id = pv.pv_id
9559
		   AND vd.VIEW_ID = ViewId
9560
		   AND vd.PKG_ID = pv.PKG_ID
9561
		   AND rel.RTAG_ID = RtagId
9562
		 ORDER BY UPPER(pkg.PKG_NAME);		 
9563
 
9564
	END IF;	 	 
9565
 
9566
 
9567
 
9568
 
9569
END;
9570
/*-------------------------------------------------------------------------------------------------------*/
9571
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9572
 
9573
	ReleaseLocation VARCHAR2(4000);
9574
	sPkgVersion VARCHAR2(4000);
9575
	nPkgId NUMBER;
9576
	sVExt VARCHAR2(4000);
9577
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
9578
 
9579
	-- Find package for replacement
9580
	CURSOR curReplacePkg IS
9581
    SELECT pv.PV_ID
9582
	  FROM RELEASE_CONTENT rc,
9583
	  	   PACKAGE_VERSIONS pv
9584
	 WHERE rc.PV_ID = pv.PV_ID
9585
	   AND rc.RTAG_ID = RtagId
9586
	   AND pv.PKG_ID = nPkgId
9587
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
9588
    recReplacePkg curReplacePkg%ROWTYPE;
9589
 
9590
BEGIN
9591
 
9592
	-- Get is_patch, pkg_id and v_ext
9593
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
9594
	  FROM PACKAGE_VERSIONS pv
9595
	 WHERE pv.PV_ID = newPvId;
9596
 
9597
 
9598
	-- Never put patch in relesed area
9599
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
9600
 
9601
		-- Try to get a package to be replaced with this new one.
9602
		-- Use unique constraint of PKG_ID and V_EXT
9603
		OPEN curReplacePkg;
9604
	    FETCH curReplacePkg INTO recReplacePkg;
9605
 
9606
	    IF curReplacePkg%FOUND THEN
9607
			-- Replace package
9608
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
9609
 
9610
		ELSE
9611
			-- Add new package
9612
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
9613
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
9614
 
9615
 
9616
		    /* LOG ACTION */
9617
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9618
			  FROM PROJECTS proj,
9619
			  	   RELEASE_TAGS rt
9620
			 WHERE rt.PROJ_ID = proj.PROJ_ID
9621
			   AND rt.RTAG_ID = RtagId;
9622
 
9623
			SELECT pv.PKG_VERSION INTO sPkgVersion
9624
			  FROM PACKAGE_VERSIONS pv
9625
			 WHERE pv.PV_ID = newPvId;
9626
 
9627
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9628
 
9629
 
9630
		END IF;
9631
 
9632
		CLOSE curReplacePkg;
9633
 
9634
	END IF;
9635
 
9636
END;
9637
/*-------------------------------------------------------------------------------------------------------*/
9638
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9639
 
9640
	ReleaseLocation VARCHAR2(4000);
9641
	sPkgVersion VARCHAR2(4000);
9642
 
9643
BEGIN
9644
 
9645
	-- Replace Package
9646
    UPDATE RELEASE_CONTENT
9647
       SET pv_id = newPvId,
9648
           insert_stamp = Ora_Sysdate,
9649
           insertor_id = UserId,
9650
		   product_state = NULL
9651
     WHERE rtag_id = RtagId
9652
       AND pv_id = oldPvId;  
9653
 
9654
 
9655
    /* LOG ACTION */
9656
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9657
	  FROM PROJECTS proj,
9658
	  	   RELEASE_TAGS rt
9659
	 WHERE rt.PROJ_ID = proj.PROJ_ID
9660
	   AND rt.RTAG_ID = RtagId;
9661
 
9662
	SELECT pv.PKG_VERSION INTO sPkgVersion
9663
	  FROM PACKAGE_VERSIONS pv
9664
	 WHERE pv.PV_ID = newPvId;
9665
 
9666
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
9667
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9668
 
9669
END;
9670
/*-------------------------------------------------------------------------------------------------------*/
9671
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9672
	ReleaseLocation VARCHAR2(4000);
9673
 
9674
BEGIN
9675
 
9676
 
9677
	-- Delete old package
9678
	DELETE
9679
	  FROM RELEASE_CONTENT rc
9680
	 WHERE rc.PV_ID = PvId
9681
	   AND rc.RTAG_ID = RtagId;
9682
 
9683
 
9684
	/* LOG ACTION */
9685
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9686
	  FROM PROJECTS proj,
9687
	       RELEASE_TAGS rt
9688
	 WHERE rt.PROJ_ID = proj.PROJ_ID
9689
	   AND rt.RTAG_ID = RtagId;
9690
 
9691
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
9692
 
9693
 
9694
END;
9695
/*-------------------------------------------------------------------------------------------------------*/
9696
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9697
	ReleaseLocation VARCHAR2(4000);
9698
 
9699
	CURSOR curMatchingPackage IS
9700
    SELECT mpv.PV_ID
9701
	  FROM RELEASE_CONTENT rc,
9702
	  	   PACKAGE_VERSIONS mpv,
9703
		   PACKAGE_VERSIONS pv
9704
	 WHERE rc.PV_ID = mpv.PV_ID
9705
	   AND rc.RTAG_ID = RtagId
9706
	   AND pv.PV_ID = PvId
9707
	   AND pv.PKG_ID = mpv.PKG_ID
9708
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
9709
    recMatchingPackage curMatchingPackage%ROWTYPE;
9710
 
9711
BEGIN
9712
 
9713
	OPEN curMatchingPackage;
9714
    FETCH curMatchingPackage INTO recMatchingPackage;
9715
 
9716
    IF curMatchingPackage%FOUND THEN
9717
		-- Delete old package
9718
		DELETE
9719
		  FROM RELEASE_CONTENT rc
9720
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
9721
		   AND rc.RTAG_ID = RtagId;
9722
 
9723
 
9724
		/* LOG ACTION */
9725
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO 
9726
ReleaseLocation
9727
		  FROM PROJECTS proj,
9728
		  	   RELEASE_TAGS rt
9729
		 WHERE rt.PROJ_ID = proj.PROJ_ID
9730
		   AND rt.RTAG_ID = RtagId;
9731
 
9732
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
9733
 
9734
	END IF;
9735
 
9736
 
9737
	CLOSE curMatchingPackage;
9738
 
9739
 
9740
 
9741
 
9742
END;
9743
/*-------------------------------------------------------------------------------------------------------*/
9744
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
9745
 
9746
	ReturnValue NUMBER;
9747
 
9748
BEGIN
9749
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
9750
	  FROM RELEASE_CONTENT rc
9751
	 WHERE rc.RTAG_ID = RtagId
9752
	   AND rc.PV_ID = PvId;
9753
 
9754
	RETURN ReturnValue;
9755
END;
9756
/*-------------------------------------------------------------------------------------------------------*/
9757
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
9758
 
9759
BEGIN
9760
	-- Reset Ignore warnings up-the-tree
9761
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
9762
 
9763
	-- Refresh Package states
9764
	TOUCH_RELEASE ( RtagId );
9765
 
9766
END;
9767
/*-------------------------------------------------------------------------------------------------------*/
9768
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
9769
	CURSOR curReleases IS
9770
    SELECT rc.RTAG_ID
9771
	  FROM RELEASE_CONTENT rc
9772
	 WHERE rc.PV_ID = PvId;
9773
    recReleases curReleases%ROWTYPE;
9774
 
9775
BEGIN
9776
 
9777
	OPEN curReleases;
9778
    FETCH curReleases INTO recReleases;
9779
 
9780
	WHILE curReleases%FOUND
9781
	LOOP
9782
 
9783
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
9784
 
9785
		FETCH curReleases INTO recReleases;
9786
	END LOOP;
9787
 
9788
	CLOSE curReleases;	
9789
 
9790
END;
9791
/*-------------------------------------------------------------------------------------------------------*/
9792
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
9793
 
9794
BEGIN
9795
 
9796
	UPDATE RELEASE_CONTENT rc SET
9797
	rc.BASE_VIEW_ID = NewViewId
9798
	WHERE rc.PV_ID = PvId
9799
	  AND rc.RTAG_ID = RtagId;
9800
 
9801
END;
9802
/*-------------------------------------------------------------------------------------------------------*/
9803
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
9804
 
9805
	RowCount NUMBER;
9806
 
9807
 
9808
	CURSOR curPackageClash IS
9809
	SELECT pkg.PKG_NAME,
9810
		   er.*
9811
	  FROM (
9812
 
9813
	  		/* Get existing referenced packages */
9814
			SELECT pv.PKG_ID,
9815
			       pv.V_EXT
9816
			  FROM RELEASE_LINKS rl,
9817
			  	   RELEASE_CONTENT rc,
9818
			  	   PACKAGE_VERSIONS pv
9819
			 WHERE rl.RTAG_ID = nRtagId
9820
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
9821
			   AND rc.PV_ID = pv.PV_ID
9822
 
9823
	  	    ) er,
9824
			(
9825
 
9826
			/* Get current reference packages */
9827
			SELECT pv.PKG_ID,
9828
			       pv.V_EXT
9829
			  FROM RELEASE_CONTENT rc,
9830
			  	   PACKAGE_VERSIONS pv
9831
			 WHERE rc.RTAG_ID = nRefRtagId
9832
			   AND rc.PV_ID = pv.PV_ID    
9833
 
9834
			) cr,
9835
			PACKAGES PKG
9836
	 WHERE er.PKG_ID = cr.PKG_ID
9837
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
9838
	   AND er.PKG_ID = pkg.PKG_ID;
9839
 
9840
	recPackageClash curPackageClash%ROWTYPE;	   
9841
 
9842
BEGIN
9843
	/*--------------- Business Rules Here -------------------*/
9844
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
9845
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
9846
	END IF;
9847
 
9848
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
9849
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
9850
	END IF;
9851
	/*-------------------------------------------------------*/
9852
	ProblemString := NULL;
9853
 
9854
 
9855
	-- Check if release already has references
9856
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
9857
	  FROM RELEASE_LINKS rl
9858
	 WHERE rl.RTAG_ID = nRtagId;	
9859
 
9860
 
9861
	IF RowCount > 0 THEN
9862
		-- Found existing references
9863
 
9864
		-- Make sure there is no package clashes
9865
		OPEN curPackageClash;
9866
	    FETCH curPackageClash INTO recPackageClash;
9867
 
9868
		IF curPackageClash%FOUND THEN
9869
 
9870
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
9871
 
9872
			WHILE curPackageClash%FOUND
9873
			LOOP
9874
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
9875
 
9876
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
9877
 
9878
				FETCH curPackageClash INTO recPackageClash;
9879
			END LOOP;
9880
 
9881
		END IF;
9882
 
9883
		CLOSE curPackageClash;
9884
 
9885
 
9886
	ELSE
9887
		-- No references found, hence reference a release
9888
 
9889
 
9890
		-- Remove exising package from this release to be referenced
9891
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
9892
 
9893
 
9894
		-- Add new linked packages to release
9895
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
9896
		SELECT nRtagId,
9897
			   rc.PV_ID,
9898
			   rc.BASE_VIEW_ID, 
9899
			   rc.INSERT_STAMP, 
9900
			   rc.INSERTOR_ID, 
9901
			   rc.PKG_STATE
9902
		  FROM RELEASE_CONTENT rc
9903
		 WHERE rc.RTAG_ID = nRefRtagId;
9904
 
9905
 
9906
 
9907
		-- Copy ignore warnings for referenced packages
9908
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
9909
		SELECT nRtagId, 
9910
			   iw.PV_ID, 
9911
			   iw.DPV_ID, 
9912
			   iw.IS_PATCH_IGNORE
9913
		  FROM IGNORE_WARNINGS iw,
9914
		  	   RELEASE_CONTENT rc
9915
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
9916
		   AND iw.PV_ID = rc.PV_ID
9917
		   AND rc.RTAG_ID = nRefRtagId;	 
9918
 
9919
 
9920
 
9921
		-- Reference release 
9922
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
9923
		VALUES ( nRtagId, nRefRtagId );		 
9924
 
9925
 
9926
		-- Refresh Package states
9927
		TOUCH_RELEASE ( nRtagId );
9928
 
9929
	END IF;	 
9930
 
9931
 
9932
END;
9933
/*-------------------------------------------------------------------------------------------------------*/
9934
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
9935
 
9936
 
9937
BEGIN
9938
	/*--------------- Business Rules Here -------------------*/
9939
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
9940
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
9941
	END IF;
9942
 
9943
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
9944
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
9945
	END IF;
9946
 
9947
	/*-------------------------------------------------------*/
9948
 
9949
 
9950
	-- Remove ignore warnings for those packages who use referenced packages
9951
	DELETE FROM IGNORE_WARNINGS iw
9952
	 WHERE iw.RTAG_ID = nRtagId
9953
	   AND iw.DPV_ID IN (
9954
	   						SELECT dep.DPV_ID
9955
							  FROM (
9956
 
9957
									/* Get referenced packages */
9958
									SELECT pv.PKG_ID,
9959
									       pv.V_EXT
9960
									  FROM RELEASE_CONTENT rc,
9961
									  	   PACKAGE_VERSIONS pv
9962
									 WHERE rc.RTAG_ID = nRefRtagId
9963
									   AND rc.PV_ID = pv.PV_ID    
9964
 
9965
									) cr,
9966
									(
9967
 
9968
									/* Get all dependencies for current release */
9969
									SELECT DISTINCT 
9970
										   pv.PKG_ID,
9971
										   pv.V_EXT,
9972
										   dep.DPV_ID
9973
									  FROM RELEASE_CONTENT rc,
9974
										   PACKAGE_DEPENDENCIES dep,
9975
										   PACKAGE_VERSIONS pv
9976
									 WHERE rc.RTAG_ID = nRtagId
9977
									   AND rc.PV_ID = dep.PV_ID		
9978
									   AND dep.PV_ID = pv.PV_ID	   
9979
 
9980
									) dep
9981
							 WHERE dep.PKG_ID = cr.PKG_ID
9982
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
9983
	   					);  
9984
 
9985
 
9986
 
9987
 
9988
	-- Remove ignore warnings for those package which are going to be replaced with the reference
9989
	DELETE FROM IGNORE_WARNINGS iw
9990
	 WHERE iw.RTAG_ID = nRtagId
9991
	   AND iw.PV_ID IN (
9992
						SELECT pv.PV_ID
9993
						  FROM (
9994
 
9995
								/* Get referenced packages */
9996
								SELECT pv.PKG_ID,
9997
								       pv.V_EXT
9998
								  FROM RELEASE_CONTENT rc,
9999
								  	   PACKAGE_VERSIONS pv
10000
								 WHERE rc.RTAG_ID = nRefRtagId
10001
								   AND rc.PV_ID = pv.PV_ID    
10002
 
10003
								) cr,
10004
								RELEASE_CONTENT rc,
10005
								PACKAGE_VERSIONS pv
10006
						 WHERE pv.PKG_ID = cr.PKG_ID
10007
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10008
						   AND rc.RTAG_ID = nRtagId
10009
						   AND rc.PV_ID = pv.PV_ID
10010
						);			
10011
 
10012
 
10013
 
10014
 
10015
 
10016
	-- Remove matching packages from release
10017
	DELETE FROM RELEASE_CONTENT rc
10018
	 WHERE rc.RTAG_ID = nRtagId
10019
	   AND rc.PV_ID IN (
10020
						SELECT pv.PV_ID
10021
						  FROM (
10022
 
10023
								/* Get referenced packages */
10024
								SELECT pv.PKG_ID,
10025
								       pv.V_EXT
10026
								  FROM RELEASE_CONTENT rc,
10027
								  	   PACKAGE_VERSIONS pv
10028
								 WHERE rc.RTAG_ID = nRefRtagId
10029
								   AND rc.PV_ID = pv.PV_ID    
10030
 
10031
 
10032
								) cr,
10033
								RELEASE_CONTENT rc,
10034
								PACKAGE_VERSIONS pv
10035
						 WHERE pv.PKG_ID = cr.PKG_ID
10036
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10037
						   AND rc.RTAG_ID = nRtagId
10038
						   AND rc.PV_ID = pv.PV_ID
10039
						);	
10040
 
10041
 
10042
 
10043
 
10044
 
10045
	-- Remove Reference release 
10046
	DELETE 
10047
	  FROM RELEASE_LINKS rl
10048
	 WHERE rl.RTAG_ID = nRtagId
10049
	   AND rl.REF_RTAG_ID = nRefRtagId;
10050
 
10051
 
10052
	-- Refresh Package states
10053
	TOUCH_RELEASE ( nRtagId );
10054
 
10055
 
10056
END;
10057
/*-------------------------------------------------------------------------------------------------------*/
10058
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10059
 
10060
	cReleaseMode CHAR(1);
10061
	cPvMode CHAR(1);
10062
 
10063
BEGIN
10064
 
10065
	-- Get Release Mode
10066
	SELECT rt.OFFICIAL INTO cReleaseMode
10067
	  FROM RELEASE_TAGS rt
10068
	 WHERE rt.RTAG_ID = RtagId;
10069
 
10070
 
10071
	-- Get Package Mode
10072
	SELECT pv.DLOCKED INTO cPvMode
10073
	  FROM PACKAGE_VERSIONS pv
10074
	 WHERE pv.PV_ID = PvId;	 
10075
 
10076
	-- Only check if package is locked 
10077
	IF (cPvMode = 'Y') THEN
10078
 
10079
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
10080
		THEN
10081
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10082
 
10083
		END IF;
10084
 
10085
	END IF;	
10086
 
10087
 
10088
END;
10089
 
10090
/*-------------------------------------------------------------------------------------------------------*/
10091
END PK_RELEASE;
10092
/
10093
 
10094
ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE" 
10095
  COMPILE BODY 
10096
    PLSQL_OPTIMIZE_LEVEL=  2
10097
    PLSQL_CODE_TYPE=  INTERPRETED
10098
    PLSQL_DEBUG=  TRUE
10099
 REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:32'
10100
/
10101
 
10102
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" IS
10103
 
10104
/*
10105
------------------------------
10106
||  Last Modified:  S.Vukovic
10107
||  Modified Date:  2/May/2005
10108
||  Body Version:   1.0
10109
------------------------------
10110
*/
10111
 
10112
 
10113
/*-------------------------------------------------------------------------------------------------------*/
10114
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10115
 
10116
	oldPvId NUMBER;
10117
	ReleaseLocation VARCHAR2(4000);
10118
	sLocation VARCHAR2(4000) := NULL;
10119
 
10120
 
10121
BEGIN
10122
	/*--------------- Business Rules Here -------------------*/
10123
	/*-------------------------------------------------------*/
10124
 
10125
	BEGIN
10126
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
10127
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
10128
		  FROM WORK_IN_PROGRESS wip,
10129
		  	   RELEASE_TAGS rt,
10130
			   PROJECTS proj
10131
		 WHERE wip.PV_ID = newPvId
10132
		   AND wip.RTAG_ID = rt.RTAG_ID
10133
		   AND rt.OFFICIAL != 'Y'
10134
		   AND rt.PROJ_ID = proj.PROJ_ID;
10135
 
10136
		EXCEPTION
10137
	    	WHEN NO_DATA_FOUND THEN
10138
	       		sLocation := NULL;
10139
 
10140
	END;	   	   
10141
 
10142
 
10143
 
10144
	IF (sLocation IS NULL)  THEN
10145
 
10146
		-- Add to "Work in progress"
10147
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
10148
		VALUES( RtagId, newPvId, ViewId );
10149
 
10150
 
10151
	    /* LOG ACTION */
10152
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10153
		  FROM PROJECTS proj,
10154
		  	   RELEASE_TAGS rt
10155
		 WHERE rt.PROJ_ID = proj.PROJ_ID
10156
		   AND rt.RTAG_ID = RtagId;
10157
 
10158
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
10159
 
10160
	ELSE
10161
 
10162
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
10163
 
10164
	END IF;
10165
 
10166
END;
10167
/*-------------------------------------------------------------------------------------------------------*/
10168
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10169
 
10170
	ReleaseLocation VARCHAR2(4000);
10171
 
10172
BEGIN
10173
 
10174
	/*--------------- Business Rules Here -------------------*/
10175
	/*-------------------------------------------------------*/
10176
 
10177
 
10178
	-- Get release location for logging pusposes
10179
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10180
	  FROM PROJECTS proj,
10181
	  	   RELEASE_TAGS rt
10182
	 WHERE rt.PROJ_ID = proj.PROJ_ID
10183
	   AND rt.RTAG_ID = RtagId;
10184
 
10185
 
10186
	-- Delete from Work In Progress
10187
	DELETE
10188
	  FROM WORK_IN_PROGRESS wip
10189
	 WHERE wip.RTAG_ID = RtagId
10190
	   AND wip.PV_ID = PvId;
10191
 
10192
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
10193
 
10194
 
10195
 
10196
 
10197
END;
10198
/*-------------------------------------------------------------------------------------------------------*/
10199
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
10200
 
10201
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
10202
	ReleaseLocation VARCHAR2(4000);
10203
	PvId NUMBER;
10204
 
10205
BEGIN
10206
 
10207
	/*--------------- Business Rules Here -------------------*/
10208
	IF (PvIdList IS NULL)
10209
	THEN
10210
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
10211
	END IF;
10212
	/*-------------------------------------------------------*/
10213
 
10214
 
10215
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
10216
 
10217
 
10218
	-- Get release location for logging pusposes
10219
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10220
	  FROM PROJECTS proj,
10221
	  	   RELEASE_TAGS rt
10222
	 WHERE rt.PROJ_ID = proj.PROJ_ID
10223
	   AND rt.RTAG_ID = RtagId;
10224
 
10225
 
10226
	FOR i IN 1..nIdCollector.COUNT
10227
	LOOP
10228
		PvId := nIdCollector(i);
10229
 
10230
		-- Delete from Work In Progress
10231
		DELETE
10232
		  FROM WORK_IN_PROGRESS wip
10233
		 WHERE wip.RTAG_ID = RtagId
10234
		   AND wip.PV_ID = PvId;
10235
 
10236
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
10237
 
10238
	END LOOP;
10239
 
10240
 
10241
END;
10242
/*-------------------------------------------------------------------------------------------------------*/
10243
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10244
 
10245
	ReturnValue NUMBER;
10246
 
10247
BEGIN
10248
	SELECT wip.VIEW_ID INTO ReturnValue
10249
	  FROM WORK_IN_PROGRESS wip
10250
	 WHERE wip.RTAG_ID = RtagId
10251
	   AND wip.PV_ID = PvId;
10252
 
10253
	RETURN ReturnValue;
10254
END;
10255
/*-------------------------------------------------------------------------------------------------------*/
10256
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
10257
 
10258
	IsBaseView CHAR(1);
10259
 
10260
BEGIN
10261
 
10262
	-- Check if the view is BASE VIEW
10263
	SELECT vi.BASE_VIEW INTO IsBaseView
10264
	  FROM VIEWS vi
10265
	 WHERE vi.VIEW_ID = ViewId;
10266
 
10267
	IF (IsBaseView = 'Y') THEN 
10268
		-- Get Base view content
10269
		OPEN RecordSet FOR
10270
		SELECT 0 AS PKG_STATE,
10271
			   NULL AS DEPRECATED_STATE,
10272
			   pv.pv_id, 
10273
			   pkg.pkg_name, 
10274
			   pv.pkg_version, 
10275
			   pv.dlocked, 
10276
			   pv.pv_description,
10277
			   pv.BUILD_TYPE
10278
		  FROM WORK_IN_PROGRESS rel,
10279
		       packages pkg,
10280
		       package_versions pv
10281
		 WHERE pv.pkg_id = pkg.pkg_id
10282
		   AND rel.pv_id = pv.pv_id
10283
		   AND rel.VIEW_ID = ViewId
10284
		   AND rel.RTAG_ID = RtagId
10285
		 ORDER BY UPPER(pkg.PKG_NAME);
10286
 
10287
 
10288
	ELSE	 
10289
 
10290
	 	-- Get non base view content
10291
		OPEN RecordSet FOR
10292
		SELECT 0 AS PKG_STATE,
10293
			   NULL AS DEPRECATED_STATE,
10294
			   pv.pv_id, 
10295
			   pkg.pkg_name, 
10296
			   pv.pkg_version, 
10297
			   pv.dlocked, 
10298
			   pv.pv_description,
10299
			   pv.BUILD_TYPE
10300
		  FROM WORK_IN_PROGRESS rel,
10301
		       packages pkg,
10302
		       package_versions pv,
10303
			   VIEW_DEF vd
10304
		 WHERE pv.pkg_id = pkg.pkg_id
10305
		   AND rel.pv_id = pv.pv_id
10306
		   AND vd.VIEW_ID = ViewId
10307
		   AND vd.PKG_ID = pv.PKG_ID
10308
		   AND rel.RTAG_ID = RtagId
10309
		 ORDER BY UPPER(pkg.PKG_NAME);
10310
 
10311
 
10312
	END IF;	 	
10313
 
10314
 
10315
END;
10316
/*-------------------------------------------------------------------------------------------------------*/
10317
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10318
 
10319
BEGIN
10320
 
10321
	UPDATE WORK_IN_PROGRESS wip SET
10322
	wip.VIEW_ID = NewViewId
10323
	WHERE wip.PV_ID = PvId
10324
	  AND wip.RTAG_ID = RtagId;
10325
 
10326
END;
10327
/*-------------------------------------------------------------------------------------------------------*/
10328
END PK_WORK_IN_PROGRESS;
10329
/
10330
 
10331
ALTER PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" 
10332
  COMPILE BODY 
10333
    PLSQL_OPTIMIZE_LEVEL=  2
10334
    PLSQL_CODE_TYPE=  INTERPRETED
10335
    PLSQL_DEBUG=  FALSE
10336
 REUSE SETTINGS TIMESTAMP '2007-08-23 16:23:51'
10337
/
10338
 
10339
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_BUILDAPI" 
10340
IS
10341
/*
10342
------------------------------
10343
||  Last Modified:  Jeremy Tweddle
10344
||  Modified Date:  14/Dec/2007
10345
||  Body Version:   3.1
10346
------------------------------
10347
*/
10348
 
10349
   /*-------------------------------------------------------------------------------------------------------*/
10350
   PROCEDURE add_product_component (
10351
      npvid           IN   NUMBER,
10352
      sosname         IN   VARCHAR2,
10353
      sorigfilepath   IN   VARCHAR2,
10354
      sfilename       IN   VARCHAR2,
10355
      sdestfilepath   IN   VARCHAR2,
10356
      nbytesize       IN   NUMBER,
10357
      scrccksum       IN   VARCHAR2
10358
   )
10359
   IS
10360
      nosid   NUMBER;
10361
   BEGIN
10362
      /*--------------- Business Rules Here -------------------*/
10363
      -- OS Name Requirements --
10364
      IF (sosname IS NULL)
10365
      THEN
10366
         raise_application_error (-20000, 'OsName cannot be NULL.');
10367
      END IF;
10368
 
10369
      -- File Requirements --
10370
      IF (NOT sfilename IS NULL)
10371
      THEN
10372
         IF (nbytesize IS NULL)
10373
         THEN
10374
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
10375
         ELSIF (scrccksum IS NULL)
10376
         THEN
10377
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
10378
         END IF;
10379
      END IF;
10380
 
10381
      -- Folder Requirements --
10382
      -- No requirements for now.
10383
 
10384
      /*-------------------------------------------------------*/
10385
 
10386
      -- Get OsId
10387
      nosid := get_osid (sosname);
10388
 
10389
      -- Insert component entry
10390
      INSERT INTO product_components
10391
                  (pv_id, os_id, file_path, file_name, destination_path,
10392
                   byte_size, crc_cksum
10393
                  )
10394
           VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
10395
                   nbytesize, scrccksum
10396
                  );
10397
   EXCEPTION
10398
      WHEN DUP_VAL_ON_INDEX
10399
      THEN
10400
         raise_application_error (-20000,
10401
                                  'Cannot have duplicate product components.'
10402
                                 );
10403
   END;
10404
 
10405
/*-------------------------------------------------------------------------------------------------------*/
10406
   PROCEDURE remove_all_product_components (
10407
      npvid     IN   NUMBER,
10408
      sosname   IN   VARCHAR2
10409
   )
10410
   IS
10411
      nosid   NUMBER;
10412
   BEGIN
10413
/*--------------- Business Rules Here -------------------*/
10414
/*-------------------------------------------------------*/
10415
 
10416
      -- Get OsId
10417
      nosid := get_osid (sosname);
10418
 
10419
      -- Delete component entry
10420
      DELETE FROM product_components pc
10421
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
10422
   END;
10423
 
10424
/*-------------------------------------------------------------------------------------------------------*/
10425
   FUNCTION get_osid (sosname IN VARCHAR2)
10426
      RETURN NUMBER
10427
   IS
10428
      code   NUMBER;
10429
   BEGIN
10430
      -- Get Platform Code --
10431
      SELECT pf.code
10432
        INTO code
10433
        FROM platforms pf
10434
       WHERE UPPER (pf.NAME) = UPPER (sosname);
10435
 
10436
      RETURN code;
10437
   EXCEPTION
10438
      WHEN NO_DATA_FOUND
10439
      THEN
10440
         raise_application_error
10441
            (-20000,
10442
                'Platform '
10443
             || sosname
10444
             || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
10445
            );
10446
         RAISE;
10447
   END;
10448
 
10449
/*-------------------------------------------------------------------------------------------------------*/
10450
   PROCEDURE update_build_service (
10451
      sdatabaseserver   IN   VARCHAR2,
10452
      swebserver        IN   VARCHAR2,
10453
      smailserver       IN   VARCHAR2,
10454
      smailsender       IN   VARCHAR2,
10455
      sdiskspace        IN   VARCHAR2,
10456
      ssbommanagement   IN   VARCHAR2
10457
   )
10458
   IS
10459
   BEGIN
10460
      UPDATE build_service_config
10461
         SET config = sdatabaseserver
10462
       WHERE service = 'DATABASE SERVER';
10463
 
10464
      UPDATE build_service_config
10465
         SET config = swebserver
10466
       WHERE service = 'WEB SERVER';
10467
 
10468
      UPDATE build_service_config
10469
         SET config = smailserver
10470
       WHERE service = 'MAIL SERVER';
10471
 
10472
      UPDATE build_service_config
10473
         SET config = smailsender
10474
       WHERE service = 'BUILD FAILURE MAIL SENDER';
10475
 
10476
      UPDATE build_service_config
10477
         SET config = sdiskspace
10478
       WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
10479
 
10480
      UPDATE build_service_config
10481
         SET config = ssbommanagement
10482
       WHERE service = 'SBOM MANAGEMENT';
10483
   END;
10484
 
10485
/*-------------------------------------------------------------------------------------------------------*/
10486
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)
10487
   IS
10488
      gbe_id   NUMBER;
10489
   BEGIN
10490
      -- Get GBE_ID
10491
      SELECT seq_gbe_id.NEXTVAL
10492
        INTO gbe_id
10493
        FROM DUAL;
10494
 
10495
      INSERT INTO gbe_machtype
10496
                  (gbe_id, gbe_value
10497
                  )
10498
           VALUES (gbe_id, sgbevalue
10499
                  );
10500
   END;
10501
 
10502
/*-------------------------------------------------------------------------------------------------------*/
10503
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
10504
   IS
10505
   BEGIN
10506
      DELETE FROM gbe_machtype
10507
            WHERE gbe_id = ngbe_id;
10508
   END;
10509
 
10510
/*-------------------------------------------------------------------------------------------------------*/
10511
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)
10512
   IS
10513
   BEGIN
10514
      UPDATE gbe_machtype
10515
         SET gbe_value = sgbevalue
10516
       WHERE gbe_id = ngbe_id;
10517
   END;
10518
 
10519
/*-------------------------------------------------------------------------------------------------------*/
10520
   PROCEDURE add_daemon (
10521
      sdaemonhostname   IN   VARCHAR2,
10522
      nrtagid           IN   NUMBER,
10523
      ngbeid            IN   NUMBER,
10524
      sgbebuildfilter   IN   VARCHAR2
10525
   )
10526
   IS
10527
      nrecordnumber   NUMBER;
10528
      nrconid         NUMBER;
10529
   BEGIN
10530
      -- Get RCON_ID
10531
      SELECT seq_rcon_id.NEXTVAL
10532
        INTO nrconid
10533
        FROM DUAL;
10534
 
10535
      SELECT COUNT (*)
10536
        INTO nrecordnumber
10537
        FROM release_config
10538
       WHERE rtag_id = nrtagid;
10539
 
10540
      IF nrecordnumber = 0
10541
      THEN
10542
         INSERT INTO release_config
10543
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
10544
                      gbe_id, gbe_buildfilter
10545
                     )
10546
              VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
10547
                      ngbeid, sgbebuildfilter
10548
                     );
10549
      ELSE
10550
         INSERT INTO release_config
10551
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
10552
                      gbe_id, gbe_buildfilter
10553
                     )
10554
              VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
10555
                      ngbeid, sgbebuildfilter
10556
                     );
10557
      END IF;
10558
   END;
10559
 
10560
/*-------------------------------------------------------------------------------------------------------*/
10561
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
10562
   IS
10563
   BEGIN
10564
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
10565
      DELETE FROM daemon_action_log
10566
            WHERE rcon_id IN (
10567
                     SELECT *
10568
                       FROM THE
10569
                               (SELECT CAST
10570
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
10571
                                          )
10572
                                  FROM DUAL
10573
                               ));
10574
 
10575
      DELETE FROM run_level
10576
            WHERE rcon_id IN (
10577
                     SELECT *
10578
                       FROM THE
10579
                               (SELECT CAST
10580
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
10581
                                          )
10582
                                  FROM DUAL
10583
                               ));
10584
 
10585
      DELETE FROM abt_action_log
10586
            WHERE rcon_id IN (
10587
                     SELECT *
10588
                       FROM THE
10589
                               (SELECT CAST
10590
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
10591
                                          )
10592
                                  FROM DUAL
10593
                               ));
10594
 
10595
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
10596
      DELETE FROM release_config
10597
            WHERE rcon_id IN (
10598
                     SELECT *
10599
                       FROM THE
10600
                               (SELECT CAST
10601
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
10602
                                          )
10603
                                  FROM DUAL
10604
                               ));
10605
   END;
10606
 
10607
/*-------------------------------------------------------------------------------------------------------*/
10608
   PROCEDURE update_daemon (
10609
      sdaemonhostname   IN   VARCHAR2,
10610
      nrconid           IN   NUMBER,
10611
      ngbeid            IN   NUMBER,
10612
      sgbebuildfilter   IN   VARCHAR2
10613
   )
10614
   IS
10615
   BEGIN
10616
      UPDATE release_config
10617
         SET daemon_hostname = sdaemonhostname,
10618
             gbe_id = ngbeid,
10619
             gbe_buildfilter = sgbebuildfilter
10620
       WHERE rcon_id = nrconid;
10621
   END;
10622
 
10623
/*-------------------------------------------------------------------------------------------------------*/
10624
   PROCEDURE insert_schedule_info (
10625
      dschedulepause     IN   DATE,
10626
      dscheduleresume    IN   DATE,
10627
      crepeat            IN   VARCHAR2,
10628
      cindefinitepause   IN   VARCHAR2
10629
   )
10630
   IS
10631
      nscheduledid   NUMBER;
10632
   BEGIN
10633
      -- Get Next Available Scheduled Id
10634
      SELECT seq_scheduled_id.NEXTVAL
10635
        INTO nscheduledid
10636
        FROM DUAL;
10637
 
10638
      INSERT INTO run_level_schedule
10639
           VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
10640
                   cindefinitepause);
10641
   END;
10642
 
10643
/*-------------------------------------------------------------------------------------------------------*/
10644
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
10645
   IS
10646
   BEGIN
10647
      DELETE FROM run_level_schedule
10648
            WHERE scheduled_id = nscheduleid;
10649
   END;
10650
 
10651
/*-------------------------------------------------------------------------------------------------------*/
10652
   PROCEDURE set_infinite_pause
10653
   IS
10654
      nscheduledid   NUMBER;
10655
   BEGIN
10656
      -- Get Next Available Scheduled Id
10657
      SELECT seq_scheduled_id.NEXTVAL
10658
        INTO nscheduledid
10659
        FROM DUAL;
10660
 
10661
      INSERT INTO run_level_schedule
10662
           VALUES (nscheduledid, NULL, NULL, NULL, 'P');
10663
   END;
10664
 
10665
/*-------------------------------------------------------------------------------------------------------*/
10666
   PROCEDURE set_resume
10667
   IS
10668
   BEGIN
10669
      DELETE FROM run_level_schedule
10670
            WHERE indefinite_pause = 'P';
10671
   END;
10672
 
10673
/*-------------------------------------------------------------------------------------------------------*/
10674
   PROCEDURE delete_out_of_date_schedule
10675
   IS
10676
   BEGIN
10677
      DELETE FROM run_level_schedule
10678
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
10679
   END;
10680
 
10681
/*-------------------------------------------------------------------------------------------------------*/
10682
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
10683
   IS
10684
   BEGIN
10685
      UPDATE run_level
10686
         SET PAUSE = NULL
10687
       WHERE rcon_id = nrconid;
10688
   END;
10689
 
10690
/*-------------------------------------------------------------------------------------------------------*/
10691
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
10692
   IS
10693
   BEGIN
10694
      UPDATE run_level
10695
         SET PAUSE = 1
10696
       WHERE rcon_id = nrconid;
10697
   END;
10698
/*-------------------------------------------------------------------------------------------------------*/
10699
END pk_buildapi;
10700
/
10701
 
10702
ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" 
10703
  COMPILE BODY 
10704
    PLSQL_OPTIMIZE_LEVEL=  2
10705
    PLSQL_CODE_TYPE=  INTERPRETED
10706
    PLSQL_DEBUG=  TRUE
10707
 REUSE SETTINGS TIMESTAMP '2008-05-02 10:57:20'
10708
/
10709
 
10710
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ARCHIVE" 
10711
IS
10712
/*
10713
------------------------------
10714
||  Author:  Rupesh Solanki
10715
||  Date:    26 October 2006
10716
||  Version:   1.0
10717
------------------------------
10718
*/
10719
/*---------------------------*/
10720
PROCEDURE populate_packages_table IS
10721
 
10722
BEGIN
10723
		  INSERT INTO archive_manager.PACKAGES
10724
		  (
10725
		  select * from packages where pkg_id not in 
10726
		  		  (select pkg_id from archive_manager.packages)
10727
		  );
10728
 
10729
          INSERT INTO archive_manager.PROCESSES
10730
          (
10731
          select * from processes where proc_id not in 
10732
            (select proc_id from archive_manager.processes)
10733
          );
10734
 
10735
 
10736
 
10737
END;
10738
/*-------------------------------------------------------------------------------------------------------*/
10739
   PROCEDURE populate_archive_data_table (
10740
      nrtagid   IN   release_tags.rtag_id%TYPE
10741
   )
10742
   IS
10743
/*
10744
Reason: To populate the archive_data table with information regarding the
10745
         number of package versions that exist in other releases.
10746
*/
10747
      numcount      NUMBER;
10748
      numusedby     NUMBER;
10749
      numruntime    NUMBER;
10750
 
10751
      /* Get all the package versions in the release */
10752
      CURSOR archive_cur
10753
      IS
10754
         SELECT pv_id
10755
           FROM release_content
10756
          WHERE rtag_id = nrtagid;
10757
 
10758
      archive_rec   archive_cur%ROWTYPE;
10759
   BEGIN
10760
/*--------------- Business Rules Here -------------------*/
10761
/*-------------------------------------------------------*/
10762
      OPEN archive_cur;
10763
 
10764
      FETCH archive_cur
10765
       INTO archive_rec;
10766
 
10767
      WHILE archive_cur%FOUND
10768
      LOOP
10769
        /* How many packages depend on this package version? */
10770
         SELECT COUNT (*)
10771
           INTO numusedby
10772
           FROM package_dependencies
10773
          WHERE dpv_id = archive_rec.pv_id;
10774
 
10775
        /* How many project releases use this package version?  */
10776
         SELECT COUNT (*)
10777
           INTO numcount
10778
           FROM release_content
10779
          WHERE pv_id = archive_rec.pv_id;
10780
 
10781
        /* How many packages have this package version as runtime
10782
        dependency? */
10783
         SELECT COUNT (*)
10784
           INTO numruntime
10785
           FROM runtime_dependencies
10786
          WHERE rtd_id = archive_rec.pv_id;
10787
 
10788
        /* Insert into the archive_data table if they are not runtime dependant
10789
        and package dependant and they exist in that particular release only*/
10790
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
10791
         THEN
10792
            INSERT INTO archive_data
10793
                        (rtag_id, pv_id
10794
                        )
10795
                 VALUES (nrtagid, archive_rec.pv_id
10796
                        );
10797
         END IF;
10798
 
10799
         FETCH archive_cur
10800
          INTO archive_rec;
10801
      END LOOP;
10802
   END;
10803
 
10804
/*-------------------------------------------------------------------------------------------------------*/
10805
   PROCEDURE migrate_pv_to_archive_schema (
10806
      nrtagid   IN   release_tags.rtag_id%TYPE
10807
   )
10808
   IS
10809
   BEGIN
10810
 
10811
      /* MIGRATION - PACKAGE_VERSIONS */
10812
      INSERT INTO archive_manager.package_versions
10813
         SELECT *
10814
           FROM package_versions
10815
          WHERE pv_id IN (SELECT pv_id
10816
                            FROM archive_data);
10817
 
10818
      /* MIGRATION - PACKAGE_BUILD_ENV */
10819
      INSERT INTO archive_manager.package_build_env
10820
         SELECT *
10821
           FROM package_build_env
10822
          WHERE pv_id IN (SELECT pv_id
10823
                            FROM archive_data);
10824
 
10825
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
10826
      DELETE FROM package_build_env
10827
            WHERE pv_id IN (SELECT pv_id
10828
                              FROM archive_data);
10829
 
10830
      /* MIGRATION - PACKAGE_BUILD_INFO */
10831
      INSERT INTO archive_manager.package_build_info
10832
         SELECT *
10833
           FROM package_build_info
10834
          WHERE pv_id IN (SELECT pv_id
10835
                            FROM archive_data);
10836
 
10837
      /* PURGE DATA FROM PACKAGE_BUILD_info */
10838
      DELETE FROM package_build_info
10839
            WHERE pv_id IN (SELECT pv_id
10840
                              FROM archive_data);							  
10841
 
10842
      /* MIGRATION - UNIT_TESTS  */
10843
      INSERT INTO archive_manager.unit_tests
10844
         SELECT *
10845
           FROM unit_tests
10846
          WHERE pv_id IN (SELECT pv_id
10847
                            FROM archive_data);
10848
 
10849
      /* PURGE DATA FROM UNIT_TESTS*/
10850
      DELETE FROM unit_tests
10851
            WHERE pv_id IN (SELECT pv_id
10852
                              FROM archive_data);
10853
 
10854
      /* MIGRATION - PACKAGE_PROCESSES */
10855
      INSERT INTO archive_manager.package_processes
10856
         SELECT *
10857
           FROM package_processes
10858
          WHERE pv_id IN (SELECT pv_id
10859
                            FROM archive_data);
10860
 
10861
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
10862
      DELETE FROM package_processes
10863
            WHERE pv_id IN (SELECT pv_id
10864
                              FROM archive_data);
10865
 
10866
      /* MIGRATION - PACKAGE_DEPENDENCIES */
10867
      INSERT INTO archive_manager.package_dependencies
10868
         SELECT *
10869
           FROM package_dependencies
10870
          WHERE pv_id IN (SELECT pv_id
10871
                            FROM archive_data);
10872
 
10873
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
10874
      DELETE FROM package_dependencies
10875
            WHERE pv_id IN (SELECT pv_id
10876
                              FROM archive_data);
10877
 
10878
      /* MIGRATION - CODE_REVIEWS */
10879
      INSERT INTO archive_manager.code_reviews
10880
         SELECT *
10881
           FROM code_reviews
10882
          WHERE pv_id IN (SELECT pv_id
10883
                            FROM archive_data);
10884
 
10885
      /* PURGE DATA FROM CODE_REVIEWS*/
10886
      DELETE FROM code_reviews
10887
            WHERE pv_id IN (SELECT pv_id
10888
                              FROM archive_data);
10889
 
10890
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
10891
      INSERT INTO archive_manager.runtime_dependencies
10892
         SELECT *
10893
           FROM runtime_dependencies
10894
          WHERE pv_id IN (SELECT pv_id
10895
                            FROM archive_data);
10896
 
10897
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
10898
      DELETE FROM runtime_dependencies
10899
            WHERE pv_id IN (SELECT pv_id
10900
                              FROM archive_data);
10901
 
10902
      /* MIGRATION - PACKAGE_DOCUMENTS */
10903
      INSERT INTO archive_manager.package_documents
10904
         SELECT *
10905
           FROM package_documents
10906
          WHERE pv_id IN (SELECT pv_id
10907
                            FROM archive_data);
10908
 
10909
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
10910
      DELETE FROM package_documents
10911
            WHERE pv_id IN (SELECT pv_id
10912
                              FROM archive_data);
10913
 
10914
      /* MIGRATION - PACKAGE_PATCHES */
10915
      INSERT INTO archive_manager.package_patches
10916
         SELECT *
10917
           FROM package_patches
10918
          WHERE pv_id IN (SELECT pv_id
10919
                            FROM archive_data);
10920
 
10921
      /* PURGE DATA FROM PACKAGE_PATCHES*/
10922
      DELETE FROM package_patches
10923
            WHERE pv_id IN (SELECT pv_id
10924
                              FROM archive_data);
10925
 
10926
      /* MIGRATION - CQ_ISSUES */
10927
      INSERT INTO archive_manager.cq_issues
10928
         SELECT *
10929
           FROM cq_issues
10930
          WHERE pv_id IN (SELECT pv_id
10931
                            FROM archive_data);
10932
 
10933
      /* PURGE DATA FROM CQ_ISSUES*/
10934
      DELETE FROM cq_issues
10935
            WHERE pv_id IN (SELECT pv_id
10936
                              FROM archive_data);
10937
 
10938
      /* MIGRATION - ADDITIONAL_NOTES */
10939
      INSERT INTO archive_manager.additional_notes
10940
         SELECT *
10941
           FROM additional_notes
10942
          WHERE pv_id IN (SELECT pv_id
10943
                            FROM archive_data);
10944
 
10945
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
10946
      DELETE FROM additional_notes
10947
            WHERE pv_id IN (SELECT pv_id
10948
                              FROM archive_data);
10949
 
10950
      /* MIGRATION - RELEASE_COMPONENTS */
10951
      INSERT INTO archive_manager.release_components
10952
         SELECT *
10953
           FROM release_components
10954
          WHERE pv_id IN (SELECT pv_id
10955
                            FROM archive_data);
10956
 
10957
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
10958
      DELETE FROM release_components
10959
            WHERE pv_id IN (SELECT pv_id
10960
                              FROM archive_data);
10961
 
10962
      /* MIGRATION - IGNORE_WARNINGS */
10963
      INSERT INTO archive_manager.ignore_warnings
10964
         SELECT *
10965
           FROM ignore_warnings
10966
          WHERE pv_id IN (SELECT pv_id
10967
                            FROM 
10968
archive_data);
10969
 
10970
      /* PURGE DATA FROM IGNORE_WARNINGS*/
10971
      DELETE FROM ignore_warnings
10972
            WHERE pv_id IN (SELECT pv_id
10973
                              FROM archive_data);
10974
 
10975
      /* PURGE DATA FROM WORK_IN_PROGRESS */
10976
      DELETE FROM work_in_progress
10977
            WHERE rtag_id = nrtagid;
10978
 
10979
      /* PURGE DATA FROM PLANNED */
10980
      DELETE FROM planned
10981
            WHERE rtag_id = nrtagid;
10982
 
10983
      /* MIGRATION - JIRA_ISSUES */
10984
      INSERT INTO archive_manager.jira_issues
10985
         SELECT *
10986
           FROM jira_issues
10987
          WHERE pv_id IN (SELECT pv_id
10988
                            FROM archive_data);
10989
 
10990
      /* PURGE DATA FROM JIRA_ISSUES*/
10991
      DELETE FROM jira_issues
10992
            WHERE pv_id IN (SELECT pv_id
10993
                              FROM archive_data);
10994
 
10995
      /* MIGRATION - PRODUCT_COMPONENTS */
10996
      INSERT INTO archive_manager.product_components
10997
         SELECT *
10998
           FROM product_components
10999
          WHERE pv_id IN (SELECT pv_id
11000
                            FROM archive_data);
11001
 
11002
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
11003
      DELETE FROM product_components
11004
            WHERE pv_id IN (SELECT pv_id
11005
                              FROM archive_data);
11006
 
11007
      /* MIGRATION - ACTION_LOG */
11008
      INSERT INTO archive_manager.action_log
11009
         SELECT *
11010
           FROM action_log
11011
          WHERE pv_id IN (SELECT pv_id
11012
                            FROM archive_data);
11013
 
11014
      /* PURGE DATA FROM ACTION_LOG*/
11015
      DELETE FROM action_log
11016
            WHERE pv_id IN (SELECT pv_id
11017
                              FROM archive_data);
11018
 
11019
 
11020
   END;
11021
 
11022
/*-------------------------------------------------------------------------------------------------------*/
11023
   PROCEDURE migrate_rtag_to_archive_schema (
11024
      nrtagid   IN   release_tags.rtag_id%TYPE
11025
   )
11026
   IS
11027
   BEGIN
11028
      /* MIGRATION - DO_NOT_RIPPLE */
11029
      INSERT INTO archive_manager.do_not_ripple
11030
         SELECT *
11031
           FROM do_not_ripple dnp
11032
          WHERE rtag_id = nrtagid;
11033
 
11034
      /* PURGE DATA FROM DO_NOT_RIPPLE */
11035
      DELETE FROM do_not_ripple
11036
            WHERE rtag_id = nrtagid;
11037
 
11038
      /* MIGRATION - ADVISORY_RIPPLES*/
11039
      INSERT INTO archive_manager.advisory_ripples
11040
         SELECT *
11041
           FROM advisory_ripple dnp
11042
          WHERE rtag_id = nrtagid;
11043
 
11044
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
11045
      DELETE FROM advisory_ripple
11046
            WHERE rtag_id = nrtagid;			
11047
 
11048
      /* MIGRATION - RELEASE_CONTENT */
11049
      INSERT INTO archive_manager.release_content
11050
         SELECT *
11051
           FROM release_content
11052
          WHERE rtag_id = nrtagid;
11053
 
11054
      /* PURGE DATA FROM RELEASE_CONTENT*/
11055
      DELETE FROM release_content
11056
            WHERE rtag_id = nrtagid;
11057
 
11058
      /* MIGRATION - NOTIFICATION_HISTORY */
11059
      INSERT INTO archive_manager.notification_history
11060
         SELECT *
11061
           FROM notification_history
11062
          WHERE rtag_id = nrtagid;
11063
 
11064
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
11065
      DELETE FROM notification_history
11066
            WHERE rtag_id = nrtagid;
11067
 
11068
      /* MIGRATION - BUILD_ORDER   */
11069
      INSERT INTO archive_manager.build_order
11070
         SELECT *
11071
           FROM build_order
11072
          WHERE rtag_id = nrtagid;
11073
 
11074
      /* PURGE DATA FROM BUILD_ORDER*/
11075
      DELETE FROM build_order
11076
            WHERE rtag_id = nrtagid;
11077
 
11078
      /* MIGRATION - PROJECT_ACTION_LOG */
11079
      INSERT INTO archive_manager.project_action_log
11080
         SELECT *
11081
           FROM project_action_log
11082
          WHERE rtag_id = nrtagid;
11083
 
11084
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
11085
      DELETE FROM project_action_log
11086
            WHERE rtag_id = nrtagid;
11087
 
11088
      /* MIGRATION - DEPRECATED_PACKAGES */
11089
      INSERT INTO archive_manager.deprecated_packages
11090
         SELECT *
11091
           FROM deprecated_packages
11092
          WHERE rtag_id = nrtagid;
11093
 
11094
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
11095
      DELETE FROM deprecated_packages
11096
            WHERE rtag_id = nrtagid;
11097
 
11098
      /* MIGRATION - RELEASE_TAGS */
11099
      INSERT INTO archive_manager.release_tags
11100
         SELECT *
11101
           FROM release_tags
11102
          WHERE rtag_id = nrtagid;
11103
 
11104
 
11105
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
11106
      DELETE FROM package_versions
11107
            WHERE pv_id IN (SELECT pv_id
11108
                              FROM archive_data);
11109
 
11110
 
11111
   END;
11112
 
11113
/*-------------------------------------------------------------------------------------------------------*/
11114
   PROCEDURE clean_up_archive_data_table (
11115
      nrtagid   IN   release_tags.rtag_id%TYPE
11116
   )
11117
   IS
11118
   BEGIN
11119
      /* Cleaning Up The Archive_Data Table */
11120
      DELETE FROM archive_data
11121
            WHERE rtag_id = nrtagid;
11122
   END;
11123
 
11124
/*-------------------------------------------------------------------------------------------------------*/
11125
   PROCEDURE write_action_log (
11126
      nuserid   IN   NUMBER,
11127
      nrtagid   IN   release_tags.rtag_id%TYPE
11128
   )
11129
   IS
11130
   BEGIN
11131
      /* Write Into Archive_Action_Log Table */
11132
      INSERT INTO archive_action_log
11133
                  (user_id, date_time_stamp, rtag_id,
11134
                   description
11135
                  )
11136
           VALUES (nuserid, ora_sysdatetime, nrtagid,
11137
                   'Release has been archived to the ARCHIVE_MANAGER schema'
11138
                  );
11139
   END;
11140
/*-------------------------------------------------------------------------------------------------------*/
11141
END pk_archive; 
11142
/
11143
 
11144
ALTER PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" 
11145
  COMPILE BODY 
11146
    PLSQL_OPTIMIZE_LEVEL=  2
11147
    PLSQL_CODE_TYPE=  INTERPRETED
11148
    PLSQL_DEBUG=  TRUE
11149
 REUSE SETTINGS TIMESTAMP '2008-02-18 13:19:10'
11150
/
11151
 
11152
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" 
11153
IS
11154
/*
11155
------------------------------
11156
||  Last Modified:  Rupesh Solanki
11157
||  Modified Date:  29/Jan/2007
11158
||  Body Version:   1.1
11159
------------------------------
11160
*/
11161
 
11162
   /*-------------------------------------------------------------------------------------------------------*/
11163
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
11164
      RETURN NUMBER
11165
   IS
11166
   BEGIN
11167
       /*
11168
      || N - unlocked
11169
      || Y - release and locked
11170
      || P - penging approval
11171
      || A - approved package ready for auto-build
11172
      */
11173
      IF cdlock = 'N' OR cdlock = 'R'
11174
      THEN
11175
         -- WORK IN PROGRESS --
11176
         RETURN 0;
11177
      ELSIF cdlock = 'P' OR cdlock = 'A'
11178
      THEN
11179
         -- PENDING --
11180
         RETURN 1;
11181
      ELSIF cdlock = 'Y'
11182
      THEN
11183
         -- RELEASED --
11184
         RETURN 2;
11185
      ELSE
11186
         -- NOT FOUND --
11187
         raise_application_error
11188
                         (-20000,
11189
                             'Cannot decide where to place package. [cDlock='
11190
                          || cdlock
11191
                          || ']'
11192
                         );
11193
      END IF;
11194
   END;
11195
 
11196
/*-------------------------------------------------------------------------------------------------------*/
11197
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
11198
      RETURN NUMBER
11199
   IS
11200
      envtab    NUMBER            := -1;
11201
 
11202
      CURSOR curarea
11203
      IS
11204
         SELECT 2 AS envtab
11205
           FROM release_content rc
11206
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
11207
         UNION
11208
         SELECT 0 AS envtab
11209
           FROM work_in_progress wip
11210
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
11211
         UNION
11212
         SELECT 1 AS envtab
11213
           FROM planned pl
11214
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
11215
 
11216
      recarea   curarea%ROWTYPE;
11217
   BEGIN
11218
      OPEN curarea;
11219
 
11220
      FETCH curarea
11221
       INTO recarea;
11222
 
11223
      IF curarea%FOUND
11224
      THEN
11225
         envtab := recarea.envtab;
11226
      END IF;
11227
 
11228
      CLOSE curarea;
11229
 
11230
      RETURN envtab;
11231
   END;
11232
 
11233
/*-------------------------------------------------------------------------------------------------------*/
11234
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
11235
      RETURN NUMBER
11236
   IS
11237
      ispatch   package_versions.dlocked%TYPE;
11238
      viewid    NUMBER                          := -1;
11239
 
11240
      CURSOR curview
11241
      IS
11242
         SELECT rc.base_view_id AS view_id
11243
           FROM release_content rc
11244
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
11245
         UNION
11246
         SELECT wip.view_id AS view_id
11247
           FROM work_in_progress wip
11248
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
11249
         UNION
11250
         SELECT pl.view_id AS view_id
11251
           FROM planned pl
11252
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
11253
 
11254
      recview   curview%ROWTYPE;
11255
   BEGIN
11256
      -- Get dlock state
11257
      SELECT pv.is_patch
11258
        INTO ispatch
11259
        FROM package_versions pv
11260
       WHERE pv.pv_id = pvid;
11261
 
11262
      -- Decide which view id should package go under.
11263
      IF (ispatch != 'Y') OR (ispatch IS NULL)
11264
      THEN
11265
         -- Get VIEW ID of Package
11266
         OPEN curview;
11267
 
11268
         FETCH curview
11269
          INTO recview;
11270
 
11271
         IF curview%FOUND
11272
         THEN
11273
            viewid := recview.view_id;
11274
         ELSE
11275
            raise_application_error
11276
               (-20000,
11277
                   'Cannot find view_id to proceed. [PvId='
11278
                || pvid
11279
                || ']. The current version may not exist in the release anymore.'
11280
               );
11281
         END IF;
11282
 
11283
         CLOSE curview;
11284
      ELSE
11285
         -- Get VIEW ID of Patch (view id of parent package)
11286
         SELECT rc.base_view_id
11287
           INTO viewid
11288
           FROM release_content rc, package_patches ppv
11289
          WHERE rc.rtag_id = rtagid
11290
            AND rc.pv_id = ppv.pv_id
11291
            AND ppv.patch_id = pvid;
11292
      END IF;
11293
 
11294
      RETURN viewid;
11295
   END;
11296
 
11297
/*-------------------------------------------------------------------------------------------------------*/
11298
   PROCEDURE add_package (
11299
      pvid     IN   NUMBER,
11300
      viewid   IN   NUMBER,
11301
      rtagid   IN   NUMBER,
11302
      userid   IN   NUMBER
11303
   )
11304
   IS
11305
      dlocked   package_versions.dlocked%TYPE;
11306
      envtab    NUMBER;
11307
   BEGIN
11308
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
11309
      THEN
11310
         -- Get dlock state
11311
         SELECT pv.dlocked
11312
           INTO dlocked
11313
           FROM package_versions pv
11314
          WHERE pv.pv_id = pvid;
11315
 
11316
         -- Get which area should go under
11317
         envtab := select_environment_area (dlocked);
11318
         -- Log
11319
         log_action (pvid, 'action', userid, 'Start of Package Add...');
11320
 
11321
         -- Remove Package
11322
         IF envtab = 0
11323
         THEN
11324
            -- WORK IN PROGRESS --
11325
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
11326
         ELSIF envtab = 1
11327
         THEN
11328
            -- PENDING --
11329
            pk_planned.add_package (pvid, viewid, rtagid, userid);
11330
         ELSIF envtab = 2
11331
         THEN
11332
            -- RELEASED --
11333
            -- NOTE: this package will be replaced with matching package
11334
            pk_release.add_package (pvid, viewid, rtagid, userid);
11335
            -- Now do post Release Actions
11336
            pk_release.run_post_actions (pvid, rtagid);
11337
         END IF;
11338
 
11339
         -- Log
11340
         log_action (pvid, 'action', userid, 'End of Package Add...');
11341
      END IF;
11342
   END;
11343
 
11344
/*-------------------------------------------------------------------------------------------------------*/
11345
   PROCEDURE add_package_bulk (
11346
      pvidlist   IN   VARCHAR2,
11347
      viewid     IN   NUMBER,
11348
      rtagid     IN   NUMBER,
11349
      userid     IN   NUMBER
11350
   )
11351
   IS
11352
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
11353
                                                                          ();
11354
      dlocked        package_versions.dlocked%TYPE;
11355
      pvid           NUMBER;
11356
      envtab         NUMBER;
11357
   BEGIN
11358
      /*--------------- Business Rules Here -------------------*/
11359
      IF (pvidlist IS NULL)
11360
      THEN
11361
         raise_application_error (-20000,
11362
                                  'Please select at least one package.'
11363
                                 );
11364
      END IF;
11365
 
11366
/*-------------------------------------------------------*/
11367
      nidcollector := in_list_number (pvidlist);
11368
 
11369
      FOR i IN 1 .. nidcollector.COUNT
11370
      LOOP
11371
         pvid := nidcollector (i);
11372
         add_package (pvid, viewid, rtagid, userid);
11373
      END LOOP;
11374
   END;
11375
 
11376
/*-------------------------------------------------------------------------------------------------------*/
11377
   PROCEDURE replace_package (
11378
      newpvid   IN   NUMBER,
11379
      oldpvid   IN   NUMBER,
11380
      rtagid    IN   NUMBER,
11381
      userid    IN   NUMBER
11382
   )
11383
   IS
11384
      dlocked        package_versions.dlocked%TYPE;
11385
      viewid         NUMBER;
11386
      envtab         NUMBER;
11387
      ROWCOUNT       NUMBER;
11388
      creleasemode   CHAR (1);
11389
      npkgid         NUMBER;
11390
   BEGIN
11391
      /*--------------- Business Rules Here -------------------*/
11392
      -- Check if oldPvId exists. It could have been removed
11393
      SELECT COUNT (pv.pv_id)
11394
        INTO ROWCOUNT
11395
        FROM package_versions pv
11396
       WHERE pv.pv_id = oldpvid;
11397
 
11398
/*-------------------------------------------------------*/
11399
 
11400
      /* This procedure is usually used by "History" option in Release Manager */
11401
 
11402
      -- Get dlock state
11403
      SELECT pv.dlocked
11404
        INTO dlocked
11405
        FROM package_versions pv
11406
       WHERE pv.pv_id = newpvid;
11407
 
11408
      -- Get VIEW_ID ---
11409
      IF ROWCOUNT = 1
11410
      THEN
11411
         viewid := get_view_location (oldpvid, rtagid);
11412
      ELSE
11413
         -- Set ViewID to default
11414
         viewid := 7;
11415
      END IF;
11416
 
11417
      -- Get which area should go under
11418
      envtab := select_environment_area (dlocked);
11419
      -- Log
11420
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
11421
 
11422
      -- Replace package
11423
      IF envtab = 0
11424
      THEN
11425
         -- WORK IN PROGRESS --
11426
 
11427
         -- Delete old package
11428
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
11429
         -- Add new package
11430
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
11431
      ELSIF 
11432
envtab = 1
11433
      THEN
11434
         -- PENDING --
11435
 
11436
         -- Delete old package
11437
         pk_planned.remove_package (oldpvid, rtagid, userid);
11438
         -- Add new package
11439
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
11440
      ELSIF envtab = 2
11441
      THEN
11442
         -- RELEASED --
11443
 
11444
         -- Delete old package
11445
         pk_release.remove_package (oldpvid, rtagid, userid);
11446
         -- Add new package
11447
         pk_release.add_package (newpvid, viewid, rtagid, userid);
11448
         -- Now do post Release Actions
11449
         pk_release.run_post_actions (newpvid, rtagid);
11450
      END IF;
11451
 
11452
      -- Log
11453
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
11454
   END;
11455
 
11456
/*-------------------------------------------------------------------------------------------------------*/
11457
   FUNCTION remove_package (
11458
      pvid          IN   NUMBER,
11459
      rtagid        IN   NUMBER,
11460
      userid        IN   NUMBER,
11461
      forceremove   IN   CHAR
11462
   )
11463
      RETURN NUMBER
11464
   IS
11465
      envtab        NUMBER;
11466
      isused        BOOLEAN;
11467
      recordcount   NUMBER;
11468
   BEGIN
11469
/*--------------- Business Rules Here -------------------*/
11470
/*-------------------------------------------------------*/
11471
 
11472
      -- Find location of package
11473
      envtab := get_package_area (pvid, rtagid);
11474
 
11475
      -- Remove Package
11476
      IF envtab = 0
11477
      THEN
11478
         -- WORK IN PROGRESS --
11479
         -- Delete package
11480
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
11481
         RETURN 0;
11482
      ELSIF envtab = 1
11483
      THEN
11484
         -- PENDING --
11485
         -- Delete package
11486
         pk_planned.remove_package (pvid, rtagid, userid);
11487
         RETURN 0;
11488
      ELSIF envtab = 2
11489
      THEN
11490
         -- RELEASED --
11491
 
11492
         -- Check if is used by other packages
11493
         isused := TRUE;
11494
 
11495
         IF forceremove = 'N'
11496
         THEN
11497
            SELECT COUNT (pv.pv_id)
11498
              INTO recordcount
11499
              FROM (SELECT dpv.pkg_id, dpv.v_ext
11500
                      FROM release_content rc,
11501
                           package_dependencies dep,
11502
                           package_versions dpv
11503
                     WHERE rc.rtag_id = rtagid
11504
                       AND rc.pv_id = dep.pv_id
11505
                       AND dep.dpv_id = dpv.pv_id) rdep,
11506
                   package_versions pv
11507
             WHERE pv.pkg_id = rdep.pkg_id
11508
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
11509
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
11510
               AND pv.pv_id = pvid;
11511
 
11512
            IF recordcount > 0
11513
            THEN
11514
               RETURN 1;                    -- Return 1 as package being used
11515
            ELSE
11516
               isused := FALSE;
11517
            END IF;
11518
         END IF;
11519
 
11520
         IF forceremove = 'Y' OR NOT isused
11521
         THEN
11522
            -- Delete old package
11523
            pk_release.remove_package (pvid, rtagid, userid);
11524
            -- Now do post Release Actions
11525
            pk_release.run_post_actions (pvid, rtagid);
11526
            RETURN 0;
11527
         END IF;
11528
      END IF;
11529
   END;
11530
 
11531
/*-------------------------------------------------------------------------------------------------------*/
11532
   PROCEDURE get_environment_items (
11533
      viewtype           IN       NUMBER,
11534
      userid             IN       NUMBER,
11535
      rtagid             IN       NUMBER,
11536
      sviewidshowlist    IN       VARCHAR2,
11537
      ntruerecordcount   OUT      NUMBER,
11538
      recordset          OUT      typecur
11539
   )
11540
   IS
11541
   BEGIN
11542
      -- Get true record count because views can give false count
11543
      SELECT COUNT (pl.pv_id)
11544
        INTO ntruerecordcount
11545
        FROM environment_view pl
11546
       WHERE pl.rtag_id = rtagid;
11547
 
11548
      IF viewtype = 1
11549
      THEN
11550
         /*--- GUEST VIEW ---*/
11551
         OPEN recordset FOR
11552
            SELECT   *
11553
                FROM (
11554
                      /* Base Views collapsed */
11555
                      SELECT DISTINCT vi.view_id, vi.view_name,
11556
                                      TO_NUMBER (NULL) AS pkg_state,
11557
                                      TO_NUMBER (NULL) AS deprecated_state,
11558
                                      TO_NUMBER (NULL) AS pv_id,
11559
                                      NULL AS pkg_name, NULL AS pkg_version,
11560
                                      NULL AS dlocked, NULL AS pv_description
11561
                                 FROM environment_view rel, views vi
11562
                                WHERE rel.view_id = vi.view_id
11563
                                  AND rtag_id = rtagid
11564
                                  AND rel.view_id NOT IN (
11565
                                         SELECT *
11566
                                           FROM THE
11567
                                                   (SELECT CAST
11568
                                                              (in_list_number
11569
                                                                  (sviewidshowlist
11570
                                                                  ) AS relmgr_number_tab_t
11571
                                                              )
11572
                                                      FROM DUAL
11573
                                                   ))
11574
                      UNION
11575
                      /* Base Views expanded */
11576
                      SELECT vi.view_id, vi.view_name,
11577
                             DECODE (rel.pkg_state,
11578
                                     NULL, 0,
11579
                                     rel.pkg_state
11580
                                    ) AS pkg_state,
11581
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11582
                             pv.pkg_version, pv.dlocked, pv.pv_description
11583
                        FROM environment_view rel,
11584
                             PACKAGES pkg,
11585
                             package_versions pv,
11586
                             views vi
11587
                       WHERE pv.pkg_id = pkg.pkg_id
11588
                         AND rel.pv_id = pv.pv_id
11589
                         AND rel.view_id = vi.view_id
11590
                         AND rel.view_id IN (
11591
                                SELECT *
11592
                                  FROM THE
11593
                                          (SELECT CAST
11594
                                                     (in_list_number
11595
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11596
                                                     )
11597
                                             FROM DUAL
11598
                                          ))
11599
                         AND rtag_id = rtagid) ord
11600
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
11601
      ELSIF viewtype = 2
11602
      THEN
11603
         /*--- PERSONAL VIEW ---*/
11604
         OPEN recordset FOR
11605
            SELECT   *
11606
                FROM (
11607
                      /* Base Views collapsed */
11608
                      SELECT DISTINCT vi.view_id, vi.view_name,
11609
                                      TO_NUMBER (NULL) AS pkg_state,
11610
                                      TO_NUMBER (NULL) AS deprecated_state,
11611
                                      TO_NUMBER (NULL) AS pv_id,
11612
                                      NULL AS pkg_name, NULL AS pkg_version,
11613
                                      NULL AS dlocked, NULL AS pv_description
11614
                                 FROM environment_view rel,
11615
                                      view_settings vs,
11616
                                      views vi
11617
                                WHERE rel.view_id = vi.view_id
11618
                                  AND vs.view_id = rel.view_id
11619
                                  AND vs.user_id = userid
11620
                                  AND rtag_id = rtagid
11621
                                  AND rel.view_id NOT IN (
11622
                                         SELECT *
11623
                                           FROM THE
11624
                                                   (SELECT CAST
11625
                                                              (in_list_number
11626
                                                                  (sviewidshowlist
11627
                                                                  ) AS relmgr_number_tab_t
11628
                                                              )
11629
                                                      FROM DUAL
11630
 
11631
                                  ))
11632
                      UNION
11633
                      /* Base Views expanded */
11634
                      SELECT vi.view_id, vi.view_name,
11635
                             DECODE (rel.pkg_state,
11636
                                     NULL, 0,
11637
                                     rel.pkg_state
11638
                                    ) AS pkg_state,
11639
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11640
                             pv.pkg_version, pv.dlocked, pv.pv_description
11641
                        FROM environment_view rel,
11642
                             PACKAGES pkg,
11643
                             package_versions pv,
11644
                             views vi,
11645
                             view_settings vs
11646
                       WHERE pv.pkg_id = pkg.pkg_id
11647
                         AND rel.pv_id = pv.pv_id
11648
                         AND rel.view_id = vi.view_id
11649
                         AND vs.view_id = vi.view_id
11650
                         AND vs.user_id = userid
11651
                         AND rel.view_id IN (
11652
                                SELECT *
11653
                                  FROM THE
11654
                                          (SELECT CAST
11655
                                                     (in_list_number
11656
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11657
                                                     )
11658
                                             FROM DUAL
11659
                                          ))
11660
                         AND rtag_id = rtagid
11661
                      UNION
11662
                      /* Private Views collapsed */
11663
                      SELECT vi.view_id, vi.view_name,
11664
                             TO_NUMBER (NULL) AS pkg_state,
11665
                             TO_NUMBER (NULL) AS deprecated_state,
11666
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
11667
                             NULL AS pkg_version, NULL AS dlocked,
11668
                             NULL AS pv_description
11669
                        FROM view_settings vs,
11670
                             view_def vd,
11671
                             views vi,
11672
                             environment_view rel,
11673
                             package_versions pv
11674
                       WHERE vs.view_id = vi.view_id
11675
                         AND rel.pv_id = pv.pv_id
11676
                         AND vd.pkg_id = pv.pkg_id
11677
                         AND vd.view_id = vi.view_id
11678
                         AND vi.base_view = 'N'
11679
                         AND rel.rtag_id = rtagid
11680
                         AND vs.user_id = userid
11681
                         AND vi.view_id NOT IN (
11682
                                SELECT *
11683
                                  FROM THE
11684
                                          (SELECT CAST
11685
                                                     (in_list_number
11686
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11687
                                                     )
11688
                                             FROM DUAL
11689
                                          ))
11690
                      UNION
11691
                      /* Private Views expanded */
11692
                      SELECT vi.view_id, vi.view_name,
11693
                             DECODE (rel.pkg_state,
11694
                                     NULL, 0,
11695
                                     rel.pkg_state
11696
                                    ) AS pkg_state,
11697
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11698
                             pv.pkg_version, pv.dlocked, pv.pv_description
11699
                        FROM users usr,
11700
                             view_settings vs,
11701
                             view_def vd,
11702
                             views vi,
11703
                             environment_view rel,
11704
                             PACKAGES pkg,
11705
                             package_versions pv
11706
                       WHERE vs.user_id = usr.user_id
11707
                         AND vs.view_id = vi.view_id
11708
                         AND vd.view_id = vi.view_id
11709
                         AND pv.pkg_id = pkg.pkg_id
11710
                         AND rel.pv_id = pv.pv_id
11711
                         AND rel.rtag_id = rtagid
11712
                         AND vd.pkg_id = pkg.pkg_id
11713
                         AND vi.base_view = 'N'
11714
                         AND vi.view_id IN (
11715
                                SELECT *
11716
                                  FROM THE
11717
                                          (SELECT CAST
11718
                                                     (in_list_number
11719
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11720
                                                     )
11721
                                             FROM DUAL
11722
                                          ))
11723
                         AND usr.user_id = userid) ord
11724
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
11725
      END IF;
11726
   END;
11727
 
11728
/*-------------------------------------------------------------------------------------------------------*/
11729
   PROCEDURE get_released_items (
11730
      viewtype           IN       NUMBER,
11731
      userid             IN       NUMBER,
11732
      rtagid             IN       NUMBER,
11733
      sviewidshowlist    IN       VARCHAR2,
11734
      ntruerecordcount   OUT      NUMBER,
11735
      recordset          OUT      typecur
11736
   )
11737
   IS
11738
   BEGIN
11739
      -- Get true record count because views can give false count
11740
      SELECT COUNT (rc.pv_id)
11741
        INTO ntruerecordcount
11742
        FROM release_content rc
11743
       WHERE rc.rtag_id = rtagid;
11744
 
11745
      IF viewtype = 1
11746
      THEN
11747
         /*--- GUEST VIEW ---*/
11748
         OPEN recordset FOR
11749
            SELECT   *
11750
                FROM (
11751
                      /* Base Views collapsed */
11752
                      SELECT DISTINCT vi.view_id, vi.view_name,
11753
                                      TO_NUMBER (NULL) AS pkg_state,
11754
                                      TO_NUMBER (NULL) AS deprecated_state,
11755
                                      TO_NUMBER (NULL) AS pv_id,
11756
                                      NULL AS pkg_name, NULL AS pkg_version,
11757
                                      NULL AS dlocked, NULL AS pv_description
11758
                                 FROM release_content rel, views vi
11759
                                WHERE rel.base_view_id = vi.view_id
11760
                                  AND rtag_id = rtagid
11761
                                  AND rel.base_view_id NOT IN (
11762
                                         SELECT *
11763
                                           FROM THE
11764
                                                   (SELECT CAST
11765
                                                              (in_list_number
11766
                                                                  (sviewidshowlist
11767
                                                                  ) AS relmgr_number_tab_t
11768
                                                              )
11769
                                                      FROM DUAL
11770
                                                   ))
11771
                      UNION
11772
                      /* Base Views expanded */
11773
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
11774
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11775
                             pv.pkg_version, pv.dlocked, pv.pv_description
11776
                        FROM release_content rel,
11777
                             PACKAGES pkg,
11778
                             package_versions pv,
11779
                             views vi
11780
                       WHERE pv.pkg_id = pkg.pkg_id
11781
                         AND rel.pv_id = pv.pv_id
11782
                         AND rel.base_view_id = vi.view_id
11783
                         AND rel.base_view_id IN (
11784
                                SELECT *
11785
                                  FROM THE
11786
                                          (SELECT CAST
11787
                                                     (in_list_number
11788
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11789
                                                     )
11790
                                             FROM DUAL
11791
 
11792
                     ))
11793
                         AND rtag_id = rtagid) ord
11794
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
11795
      ELSIF viewtype = 2
11796
      THEN
11797
         /*--- PERSONAL VIEW ---*/
11798
         OPEN recordset FOR
11799
            SELECT   *
11800
                FROM (
11801
                      /* Base Views collapsed */
11802
                      SELECT DISTINCT vi.view_id, vi.view_name,
11803
                                      TO_NUMBER (NULL) AS pkg_state,
11804
                                      TO_NUMBER (NULL) AS deprecated_state,
11805
                                      TO_NUMBER (NULL) AS pv_id,
11806
                                      NULL AS pkg_name, NULL AS pkg_version,
11807
                                      NULL AS dlocked, NULL AS pv_description
11808
                                 FROM release_content rel,
11809
                                      view_settings vs,
11810
                                      views vi
11811
                                WHERE rel.base_view_id = vi.view_id
11812
                                  AND vs.view_id = rel.base_view_id
11813
                                  AND vs.user_id = userid
11814
                                  AND rtag_id = rtagid
11815
                                  AND rel.base_view_id NOT IN (
11816
                                         SELECT *
11817
                                           FROM THE
11818
                                                   (SELECT CAST
11819
                                                              (in_list_number
11820
                                                                  (sviewidshowlist
11821
                                                                  ) AS relmgr_number_tab_t
11822
                                                              )
11823
                                                      FROM DUAL
11824
                                                   ))
11825
                      UNION
11826
                      /* Base Views expanded */
11827
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
11828
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11829
                             pv.pkg_version, pv.dlocked, pv.pv_description
11830
                        FROM release_content rel,
11831
                             PACKAGES pkg,
11832
                             package_versions pv,
11833
                             views vi,
11834
                             view_settings vs
11835
                       WHERE pv.pkg_id = pkg.pkg_id
11836
                         AND rel.pv_id = pv.pv_id
11837
                         AND rel.base_view_id = vi.view_id
11838
                         AND vs.view_id = vi.view_id
11839
                         AND vs.user_id = userid
11840
                         AND rel.base_view_id IN (
11841
                                SELECT *
11842
                                  FROM THE
11843
                                          (SELECT CAST
11844
                                                     (in_list_number
11845
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11846
                                                     )
11847
                                             FROM DUAL
11848
                                          ))
11849
                         AND rtag_id = rtagid
11850
                      UNION
11851
                      /* Private Views collapsed */
11852
                      SELECT vi.view_id, vi.view_name,
11853
                             TO_NUMBER (NULL) AS pkg_state,
11854
                             TO_NUMBER (NULL) AS deprecated_state,
11855
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
11856
                             NULL AS pkg_version, NULL AS dlocked,
11857
                             NULL AS pv_description
11858
                        FROM view_settings vs,
11859
                             view_def vd,
11860
                             views vi,
11861
                             release_content rel,
11862
                             package_versions pv
11863
                       WHERE vs.view_id = vi.view_id
11864
                         AND rel.pv_id = pv.pv_id
11865
                         AND vd.pkg_id = pv.pkg_id
11866
                         AND vd.view_id = vi.view_id
11867
                         AND vi.base_view = 'N'
11868
                         AND rel.rtag_id = rtagid
11869
                         AND vs.user_id = userid
11870
                         AND vi.view_id NOT IN (
11871
                                SELECT *
11872
                                  FROM THE
11873
                                          (SELECT CAST
11874
                                                     (in_list_number
11875
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11876
                                                     )
11877
                                             FROM DUAL
11878
                                          ))
11879
                      UNION
11880
                      /* Private Views expanded */
11881
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
11882
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
11883
                             pv.pkg_version, pv.dlocked, pv.pv_description
11884
                        FROM users usr,
11885
                             view_settings vs,
11886
                             view_def vd,
11887
                             views vi,
11888
                             release_content rel,
11889
                             PACKAGES pkg,
11890
                             package_versions pv
11891
                       WHERE vs.user_id = usr.user_id
11892
                         AND vs.view_id = vi.view_id
11893
                         AND vd.view_id = vi.view_id
11894
                         AND pv.pkg_id = pkg.pkg_id
11895
                         AND rel.pv_id = pv.pv_id
11896
                         AND rel.rtag_id = rtagid
11897
                         AND vd.pkg_id = pkg.pkg_id
11898
                         AND vi.base_view = 'N'
11899
                         AND vi.view_id IN (
11900
                                SELECT *
11901
                                  FROM THE
11902
                                          (SELECT CAST
11903
                                                     (in_list_number
11904
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11905
                                                     )
11906
                                             FROM DUAL
11907
                                          ))
11908
                         AND usr.user_id = userid) ord
11909
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
11910
      END IF;
11911
   END;
11912
 
11913
/*-------------------------------------------------------------------------------------------------------*/
11914
   PROCEDURE get_work_in_progress_items (
11915
      viewtype           IN       NUMBER,
11916
      userid             IN       NUMBER,
11917
      rtagid             IN       NUMBER,
11918
      sviewidshowlist    IN       VARCHAR2,
11919
      ntruerecordcount   OUT      NUMBER,
11920
      recordset          OUT      typecur
11921
   )
11922
   IS
11923
   BEGIN
11924
      -- Get true record count because views can give false count
11925
      SELECT COUNT (wip.pv_id)
11926
        INTO ntruerecordcount
11927
        FROM work_in_progress wip
11928
       WHERE wip.rtag_id = rtagid;
11929
 
11930
      IF viewtype = 1
11931
      THEN
11932
         /*--- GUEST VIEW ---*/
11933
         OPEN recordset FOR
11934
            SELECT   *
11935
                FROM (
11936
                      /* Base Views collapsed */
11937
                      SELECT DISTINCT vi.view_id, vi.view_name,
11938
                                      TO_NUMBER (NULL) AS pkg_state,
11939
                                      TO_NUMBER (NULL) AS deprecated_state,
11940
                                      TO_NUMBER (NULL) AS pv_id,
11941
                                      NULL AS pkg_name, NULL AS pkg_version,
11942
                                      NULL AS dlocked, NULL AS pv_description
11943
                                 FROM work_in_progress rel, views vi
11944
                                WHERE rel.view_id = vi.view_id
11945
                                  AND rtag_id = rtagid
11946
                                  AND rel.view_id NOT IN (
11947
                                         SELECT *
11948
                                           FROM THE
11949
                                                   (SELECT CAST
11950
                                                              (in_list_number
11951
 
11952
                   (sviewidshowlist
11953
                                                                  ) AS relmgr_number_tab_t
11954
                                                              )
11955
                                                      FROM DUAL
11956
                                                   ))
11957
                      UNION
11958
                      /* Base Views expanded */
11959
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
11960
 
11961
                             --rel.pkg_state,
11962
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
11963
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
11964
                             pv.pv_description
11965
                        FROM work_in_progress rel,
11966
                             PACKAGES pkg,
11967
                             package_versions pv,
11968
                             views vi
11969
                       WHERE pv.pkg_id = pkg.pkg_id
11970
                         AND rel.pv_id = pv.pv_id
11971
                         AND rel.view_id = vi.view_id
11972
                         AND rel.view_id IN (
11973
                                SELECT *
11974
                                  FROM THE
11975
                                          (SELECT CAST
11976
                                                     (in_list_number
11977
                                                              (sviewidshowlist) AS relmgr_number_tab_t
11978
                                                     )
11979
                                             FROM DUAL
11980
                                          ))
11981
                         AND rtag_id = rtagid) ord
11982
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
11983
      ELSIF viewtype = 2
11984
      THEN
11985
         /*--- PERSONAL VIEW ---*/
11986
         OPEN recordset FOR
11987
            SELECT   *
11988
                FROM (
11989
                      /* Base Views collapsed */
11990
                      SELECT DISTINCT vi.view_id, vi.view_name,
11991
                                      TO_NUMBER (NULL) AS pkg_state,
11992
                                      TO_NUMBER (NULL) AS deprecated_state,
11993
                                      TO_NUMBER (NULL) AS pv_id,
11994
                                      NULL AS pkg_name, NULL AS pkg_version,
11995
                                      NULL AS dlocked, NULL AS pv_description
11996
                                 FROM work_in_progress rel,
11997
                                      view_settings vs,
11998
                                      views vi
11999
                                WHERE rel.view_id = vi.view_id
12000
                                  AND vs.view_id = rel.view_id
12001
                                  AND vs.user_id = userid
12002
                                  AND rtag_id = rtagid
12003
                                  AND rel.view_id NOT IN (
12004
                                         SELECT *
12005
                                           FROM THE
12006
                                                   (SELECT CAST
12007
                                                              (in_list_number
12008
                                                                  (sviewidshowlist
12009
                                                                  ) AS relmgr_number_tab_t
12010
                                                              )
12011
                                                      FROM DUAL
12012
                                                   ))
12013
                      UNION
12014
                      /* Base Views expanded */
12015
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
12016
 
12017
                             --rel.pkg_state,
12018
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
12019
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
12020
                             pv.pv_description
12021
                        FROM work_in_progress rel,
12022
                             PACKAGES pkg,
12023
                             package_versions pv,
12024
                             views vi,
12025
                             view_settings vs
12026
                       WHERE pv.pkg_id = pkg.pkg_id
12027
                         AND rel.pv_id = pv.pv_id
12028
                         AND rel.view_id = vi.view_id
12029
                         AND vs.view_id = vi.view_id
12030
                         AND vs.user_id = userid
12031
                         AND rel.view_id IN (
12032
                                SELECT *
12033
                                  FROM THE
12034
                                          (SELECT CAST
12035
                                                     (in_list_number
12036
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12037
                                                     )
12038
                                             FROM DUAL
12039
                                          ))
12040
                         AND rtag_id = rtagid
12041
                      UNION
12042
                      /* Private Views collapsed */
12043
                      SELECT vi.view_id, vi.view_name,
12044
                             TO_NUMBER (NULL) AS pkg_state,
12045
                             TO_NUMBER (NULL) AS deprecated_state,
12046
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
12047
                             NULL AS pkg_version, NULL AS dlocked,
12048
                             NULL AS pv_description
12049
                        FROM view_settings vs,
12050
                             view_def vd,
12051
                             views vi,
12052
                             work_in_progress rel,
12053
                             package_versions pv
12054
                       WHERE vs.view_id = vi.view_id
12055
                         AND rel.pv_id = pv.pv_id
12056
                         AND vd.pkg_id = pv.pkg_id
12057
                         AND vd.view_id = vi.view_id
12058
                         AND vi.base_view = 'N'
12059
                         AND rel.rtag_id = rtagid
12060
                         AND vs.user_id = userid
12061
                         AND vi.view_id NOT IN (
12062
                                SELECT *
12063
                                  FROM THE
12064
                                          (SELECT CAST
12065
                                                     (in_list_number
12066
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12067
                                                     )
12068
                                             FROM DUAL
12069
                                          ))
12070
                      UNION
12071
                      /* Private Views expanded */
12072
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
12073
 
12074
                             --rel.pkg_state,
12075
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
12076
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
12077
                             pv.pv_description
12078
                        FROM users usr,
12079
                             view_settings vs,
12080
                             view_def vd,
12081
                             views vi,
12082
                             work_in_progress rel,
12083
                             PACKAGES pkg,
12084
                             package_versions pv
12085
                       WHERE vs.user_id = usr.user_id
12086
                         AND vs.view_id = vi.view_id
12087
                         AND vd.view_id = vi.view_id
12088
                         AND pv.pkg_id = pkg.pkg_id
12089
                         AND rel.pv_id = pv.pv_id
12090
                         AND rel.rtag_id = rtagid
12091
                         AND vd.pkg_id = pkg.pkg_id
12092
                         AND vi.base_view = 'N'
12093
                         AND vi.view_id IN (
12094
                                SELECT *
12095
                                  FROM THE
12096
                                          (SELECT CAST
12097
                                                     (in_list_number
12098
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12099
                                                     )
12100
                                             FROM DUAL
12101
                                          ))
12102
                         AND usr.user_id = userid) ord
12103
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
12104
      END IF;
12105
 
12106
END;
12107
 
12108
/*-------------------------------------------------------------------------------------------------------*/
12109
   PROCEDURE get_pending_items (
12110
      viewtype           IN       NUMBER,
12111
      userid             IN       NUMBER,
12112
      rtagid             IN       NUMBER,
12113
      sviewidshowlist    IN       VARCHAR2,
12114
      ntruerecordcount   OUT      NUMBER,
12115
      recordset          OUT      typecur
12116
   )
12117
   IS
12118
   BEGIN
12119
      -- Get true record count because views can give false count
12120
      SELECT COUNT (pl.pv_id)
12121
        INTO ntruerecordcount
12122
        FROM planned pl
12123
       WHERE pl.rtag_id = rtagid;
12124
 
12125
      IF viewtype = 1
12126
      THEN
12127
         /*--- GUEST VIEW ---*/
12128
         OPEN recordset FOR
12129
            SELECT   *
12130
                FROM (
12131
                      /* Base Views collapsed */
12132
                      SELECT DISTINCT vi.view_id, vi.view_name,
12133
                                      TO_NUMBER (NULL) AS pkg_state,
12134
                                      TO_NUMBER (NULL) AS deprecated_state,
12135
                                      TO_NUMBER (NULL) AS pv_id,
12136
                                      NULL AS pkg_name, NULL AS pkg_version,
12137
                                      NULL AS dlocked, NULL AS pv_description
12138
                                 FROM planned rel, views vi
12139
                                WHERE rel.view_id = vi.view_id
12140
                                  AND rtag_id = rtagid
12141
                                  AND rel.view_id NOT IN (
12142
                                         SELECT *
12143
                                           FROM THE
12144
                                                   (SELECT CAST
12145
                                                              (in_list_number
12146
                                                                  (sviewidshowlist
12147
                                                                  ) AS relmgr_number_tab_t
12148
                                                              )
12149
                                                      FROM DUAL
12150
                                                   ))
12151
                      UNION
12152
                      /* Base Views expanded */
12153
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
12154
 
12155
                             --rel.pkg_state,
12156
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
12157
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
12158
                             pv.pv_description
12159
                        FROM planned rel,
12160
                             PACKAGES pkg,
12161
                             package_versions pv,
12162
                             views vi
12163
                       WHERE pv.pkg_id = pkg.pkg_id
12164
                         AND rel.pv_id = pv.pv_id
12165
                         AND rel.view_id = vi.view_id
12166
                         AND rel.view_id IN (
12167
                                SELECT *
12168
                                  FROM THE
12169
                                          (SELECT CAST
12170
                                                     (in_list_number
12171
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12172
                                                     )
12173
                                             FROM DUAL
12174
                                          ))
12175
                         AND rtag_id = rtagid) ord
12176
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
12177
      ELSIF viewtype = 2
12178
      THEN
12179
         /*--- PERSONAL VIEW ---*/
12180
         OPEN recordset FOR
12181
            SELECT   *
12182
                FROM (
12183
                      /* Base Views collapsed */
12184
                      SELECT DISTINCT vi.view_id, vi.view_name,
12185
                                      TO_NUMBER (NULL) AS pkg_state,
12186
                                      TO_NUMBER (NULL) AS deprecated_state,
12187
                                      TO_NUMBER (NULL) AS pv_id,
12188
                                      NULL AS pkg_name, NULL AS pkg_version,
12189
                                      NULL AS dlocked, NULL AS pv_description
12190
                                 FROM planned rel, view_settings vs, views vi
12191
                                WHERE rel.view_id = vi.view_id
12192
                                  AND vs.view_id = rel.view_id
12193
                                  AND vs.user_id = userid
12194
                                  AND rtag_id = rtagid
12195
                                  AND rel.view_id NOT IN (
12196
                                         SELECT *
12197
                                           FROM THE
12198
                                                   (SELECT CAST
12199
                                                              (in_list_number
12200
                                                                  (sviewidshowlist
12201
                                                                  ) AS relmgr_number_tab_t
12202
                                                              )
12203
                                                      FROM DUAL
12204
                                                   ))
12205
                      UNION
12206
                      /* Base Views expanded */
12207
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
12208
 
12209
                             --rel.pkg_state,
12210
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
12211
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
12212
                             pv.pv_description
12213
                        FROM planned rel,
12214
                             PACKAGES pkg,
12215
                             package_versions pv,
12216
                             views vi,
12217
                             view_settings vs
12218
                       WHERE pv.pkg_id = pkg.pkg_id
12219
                         AND rel.pv_id = pv.pv_id
12220
                         AND rel.view_id = vi.view_id
12221
                         AND vs.view_id = vi.view_id
12222
                         AND vs.user_id = userid
12223
                         AND rel.view_id IN (
12224
                                SELECT *
12225
                                  FROM THE
12226
                                          (SELECT CAST
12227
                                                     (in_list_number
12228
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12229
                                                     )
12230
                                             FROM DUAL
12231
                                          ))
12232
                         AND rtag_id = rtagid
12233
                      UNION
12234
                      /* Private Views collapsed */
12235
                      SELECT vi.view_id, vi.view_name,
12236
                             TO_NUMBER (NULL) AS pkg_state,
12237
                             TO_NUMBER (NULL) AS deprecated_state,
12238
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
12239
                             NULL AS pkg_version, NULL AS dlocked,
12240
                             NULL AS pv_description
12241
                        FROM view_settings vs,
12242
                             view_def vd,
12243
                             views vi,
12244
                             planned rel,
12245
                             package_versions pv
12246
                       WHERE vs.view_id = vi.view_id
12247
                         AND rel.pv_id = pv.pv_id
12248
                         AND vd.pkg_id = pv.pkg_id
12249
                         AND vd.view_id = vi.view_id
12250
                         AND vi.base_view = 'N'
12251
                         AND rel.rtag_id = rtagid
12252
                         AND vs.user_id = userid
12253
                         AND vi.view_id NOT IN (
12254
                                SELECT *
12255
                                  FROM THE
12256
                                          (SELECT CAST
12257
                                                     (in_list_number
12258
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12259
                                                     )
12260
                                             FROM DUAL
12261
                                          ))
12262
                      UNION
12263
                      /* Private Views expanded */
12264
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
12265
 
12266
 
12267
                             --rel.pkg_state,
12268
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
12269
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
12270
                             pv.pv_description
12271
                        FROM users usr,
12272
                             view_settings vs,
12273
                             view_def vd,
12274
                             views vi,
12275
                             planned rel,
12276
                             PACKAGES pkg,
12277
                             package_versions pv
12278
                       WHERE vs.user_id = usr.user_id
12279
                         AND vs.view_id = vi.view_id
12280
                         AND vd.view_id = vi.view_id
12281
                         AND pv.pkg_id = pkg.pkg_id
12282
                         AND rel.pv_id = pv.pv_id
12283
                         AND rel.rtag_id = rtagid
12284
                         AND vd.pkg_id = pkg.pkg_id
12285
                         AND vi.base_view = 'N'
12286
                         AND vi.view_id IN (
12287
                                SELECT *
12288
                                  FROM THE
12289
                                          (SELECT CAST
12290
                                                     (in_list_number
12291
                                                              (sviewidshowlist) AS relmgr_number_tab_t
12292
                                                     )
12293
                                             FROM DUAL
12294
                                          ))
12295
                         AND usr.user_id = userid) ord
12296
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
12297
      END IF;
12298
   END;
12299
 
12300
/*-------------------------------------------------------------------------------------------------------*/
12301
   PROCEDURE get_view_content (
12302
      rtagid      IN       NUMBER,
12303
      viewid      IN       NUMBER,
12304
      recordset   OUT      typecur
12305
   )
12306
   IS
12307
      isbaseview   CHAR (1);
12308
   BEGIN
12309
      -- Check if the view is BASE VIEW
12310
      SELECT vi.base_view
12311
        INTO isbaseview
12312
        FROM views vi
12313
       WHERE vi.view_id = viewid;
12314
 
12315
      IF (isbaseview = 'Y')
12316
      THEN
12317
         -- Get Base view content
12318
         OPEN recordset FOR
12319
            SELECT   DECODE (rel.pkg_state,
12320
                             NULL, 0,
12321
                             rel.pkg_state
12322
                            ) AS pkg_state,
12323
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
12324
                     pv.pkg_version, pv.dlocked, pv.pv_description,
12325
                     pv.build_type
12326
                FROM environment_view rel, PACKAGES pkg, package_versions pv
12327
               WHERE pv.pkg_id = pkg.pkg_id
12328
                 AND rel.pv_id = pv.pv_id
12329
                 AND rel.view_id = viewid
12330
                 AND rel.rtag_id = rtagid
12331
            ORDER BY UPPER (pkg.pkg_name);
12332
      ELSE
12333
         -- Get non base view content
12334
         OPEN recordset FOR
12335
            SELECT   DECODE (rel.pkg_state,
12336
                             NULL, 0,
12337
                             rel.pkg_state
12338
                            ) AS pkg_state,
12339
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
12340
                     pv.pkg_version, pv.dlocked, pv.pv_description,
12341
                     pv.build_type
12342
                FROM environment_view rel,
12343
                     PACKAGES pkg,
12344
                     package_versions pv,
12345
                     view_def vd
12346
               WHERE pv.pkg_id = pkg.pkg_id
12347
                 AND rel.pv_id = pv.pv_id
12348
                 AND rel.rtag_id = rtagid
12349
                 AND vd.view_id = viewid
12350
                 AND vd.pkg_id = pv.pkg_id
12351
            ORDER BY UPPER (pkg.pkg_name);
12352
      END IF;
12353
   END;
12354
 
12355
/*-------------------------------------------------------------------------------------------------------*/
12356
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
12357
      RETURN NUMBER
12358
   IS
12359
      envtab             NUMBER;
12360
      returnvalue        NUMBER;
12361
      return_not_found   NUMBER := -1;
12362
   BEGIN
12363
      envtab := get_package_area (pvid, rtagid);
12364
 
12365
      IF envtab = 0
12366
      THEN
12367
         -- WORK IN PROGRESS --
12368
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
12369
      ELSIF envtab = 1
12370
      THEN
12371
         -- PENDING --
12372
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
12373
      ELSIF envtab = 2
12374
      THEN
12375
         -- RELEASED --
12376
         returnvalue := pk_release.get_package_view (pvid, rtagid);
12377
      ELSE
12378
         -- This may be a Patch not located anywhere but unlocked
12379
         returnvalue := return_not_found;
12380
      END IF;
12381
 
12382
      RETURN returnvalue;
12383
   END;
12384
 
12385
/*-------------------------------------------------------------------------------------------------------*/
12386
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
12387
   IS
12388
      viewid          NUMBER;
12389
      envtab          NUMBER;
12390
      ispatch         CHAR (1) := NULL;
12391
      buildtype       CHAR (1) := NULL;
12392
      lastversionid   NUMBER;
12393
   BEGIN
12394
      -- Check if package is patch
12395
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
12396
        INTO ispatch, buildtype, lastversionid
12397
        FROM package_versions pv
12398
       WHERE pv.pv_id = pvid;
12399
 
12400
      -- Get ViewId
12401
      viewid := get_package_view (pvid, rtagid);
12402
      -- Remove from current area
12403
      envtab := pk_environment.get_package_area (pvid, rtagid);
12404
 
12405
      -- Make sure that package was in work-in-progress or pending before makeing it release
12406
      -- Exclude patches, ripple builds
12407
      IF (envtab < 0)
12408
      THEN
12409
         -- Not found in work-in-progress or pending
12410
         IF (ispatch IS NULL) AND (buildtype = 'M')
12411
         THEN
12412
            raise_application_error (-20000,
12413
                                     'This package cannot be released here.'
12414
                                    );
12415
         END IF;
12416
      END IF;
12417
 
12418
      -- Log
12419
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
12420
 
12421
      IF envtab = 0
12422
      THEN
12423
         -- WORK IN PROGRESS --
12424
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
12425
      ELSIF envtab = 1
12426
      THEN
12427
         -- PENDING --
12428
         pk_planned.remove_package (pvid, rtagid, userid);
12429
      END IF;
12430
 
12431
      -- Change package state
12432
      pk_package.change_state (pvid, 'Y', userid);
12433
 
12434
      -- Make sure it is valid BASE VIEW
12435
      IF viewid < 1
12436
      THEN
12437
         viewid := 7;                            -- This is default base view
12438
      END IF;
12439
 
12440
      IF (ispatch IS NULL)
12441
      THEN
12442
         -- Add package to new area
12443
         pk_release.add_package (pvid, viewid, rtagid, userid);
12444
      END IF;
12445
 
12446
      -- Now do post Release Actions
12447
      pk_release.run_post_actions (pvid, rtagid);
12448
 
12449
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
12450
      DELETE FROM do_not_ripple
12451
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
12452
 
12453
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
12454
      DELETE FROM advisory_ripple
12455
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
12456
 
12457
      -- Log
12458
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
12459
   END;
12460
 
12461
/*-------------------------------------------------------------------------------------------------------*/
12462
   PROCEDURE auto_make_release (
12463
      pvid            IN   NUMBER,
12464
      rtagid          IN   NUMBER,
12465
      userid          IN   NUMBER,
12466
      vext            IN   package_versions.v_ext%TYPE,
12467
      ssv_ext         IN   package_versions.v_ext%TYPE,
12468
      clonefrompvid   IN   NUMBER
12469
   )
12470
   IS
12471
      viewid          NUMBER;
12472
      envtab          NUMBER;
12473
      ispatch         CHAR (1) := NULL;
12474
      buildtype       CHAR (1) := NULL;
12475
      lastversionid   NUMBER;
12476
   BEGIN
12477
      -- Check if package is patch
12478
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
12479
        INTO ispatch, buildtype, lastversionid
12480
        FROM package_versions pv
12481
       WHERE pv.pv_id = pvid;
12482
 
12483
      IF vext <> ssv_ext
12484
      THEN
12485
         -- Get ViewId
12486
         viewid := get_package_view (clonefrompvid, rtagid);
12487
         -- Remove from current area
12488
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
12489
      ELSE
12490
         -- Get ViewId
12491
         viewid := get_package_view (pvid, rtagid);
12492
         -- Remove 
12493
from current area
12494
         envtab := pk_environment.get_package_area (pvid, rtagid);
12495
      END IF;
12496
 
12497
      -- Make sure that package was in work-in-progress or pending before makeing it release
12498
      -- Exclude patches, ripple builds
12499
      IF (envtab < 0)
12500
      THEN
12501
         -- Not found in work-in-progress or pending
12502
         IF (ispatch IS NULL) AND (buildtype = 'M')
12503
         THEN
12504
            raise_application_error (-20000,
12505
                                     'This package cannot be released here.'
12506
                                    );
12507
         END IF;
12508
      END IF;
12509
 
12510
      -- Log
12511
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
12512
 
12513
      IF vext <> ssv_ext
12514
      THEN
12515
         IF envtab = 0
12516
         THEN
12517
            -- WORK IN PROGRESS --
12518
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
12519
                                                userid);
12520
         ELSIF envtab = 1
12521
         THEN
12522
            -- PENDING --
12523
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
12524
         ELSIF envtab = 2
12525
         THEN
12526
            -- RELEASED --
12527
            pk_release.remove_package (clonefrompvid, rtagid, userid);
12528
         END IF;
12529
      ELSE
12530
         IF envtab = 0
12531
         THEN
12532
            -- WORK IN PROGRESS --
12533
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
12534
         ELSIF envtab = 1
12535
         THEN
12536
            -- PENDING --
12537
            pk_planned.remove_package (pvid, rtagid, userid);
12538
         END IF;
12539
      END IF;
12540
 
12541
      -- Change package state
12542
      pk_package.change_state (pvid, 'Y', userid);
12543
 
12544
      -- Make sure it is valid BASE VIEW
12545
      IF viewid < 1
12546
      THEN
12547
         viewid := 7;                            -- This is default base view
12548
      END IF;
12549
 
12550
      IF (ispatch IS NULL)
12551
      THEN
12552
         -- Add package to new area
12553
         pk_release.add_package (pvid, viewid, rtagid, userid);
12554
      END IF;
12555
 
12556
      -- Now do post Release Actions
12557
      pk_release.run_post_actions (pvid, rtagid);
12558
      -- Now update the Dash_Board Table
12559
      pk_rmapi.update_dash_board (rtagid);
12560
 
12561
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
12562
      DELETE FROM do_not_ripple
12563
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
12564
 
12565
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
12566
      DELETE FROM advisory_ripple
12567
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
12568
 
12569
      -- Log
12570
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
12571
   END;
12572
 
12573
/*-------------------------------------------------------------------------------------------------------*/
12574
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
12575
   IS
12576
      viewid   NUMBER;
12577
      envtab   NUMBER;
12578
   BEGIN
12579
      -- Get ViewId
12580
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
12581
      viewid := get_package_view (pvid, rtagid);
12582
      -- Remove from current area
12583
      envtab := pk_environment.get_package_area (pvid, rtagid);
12584
      -- Log
12585
      log_action (pvid,
12586
                  'action',
12587
                  userid,
12588
                  'Start of Make Package UnRelease...'
12589
                 );
12590
 
12591
      IF envtab = 2
12592
      THEN
12593
         -- RELEASE AREA --
12594
         pk_release.remove_package (pvid, rtagid, userid);
12595
      ELSIF envtab = 1
12596
      THEN
12597
         -- PENDING --
12598
         pk_planned.remove_package (pvid, rtagid, userid);
12599
      END IF;
12600
 
12601
      -- Change package state
12602
      pk_package.change_state (pvid, 'N', userid);
12603
 
12604
      -- Make sure it is valid BASE VIEW
12605
      IF viewid < 1
12606
      THEN
12607
         viewid := 7;                            -- This is default base view
12608
      END IF;
12609
 
12610
      -- Add package to new area
12611
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
12612
      -- Now do post Release Actions
12613
      pk_release.run_post_actions (pvid, rtagid);
12614
      -- Log
12615
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
12616
   END;
12617
 
12618
/*-------------------------------------------------------------------------------------------------------*/
12619
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
12620
   IS
12621
      viewid      NUMBER;
12622
      ispatch     CHAR (1) := NULL;
12623
      buildtype   CHAR (1) := NULL;
12624
   BEGIN
12625
      -- Check if package is patch
12626
      SELECT pv.is_patch, pv.build_type
12627
        INTO ispatch, buildtype
12628
        FROM package_versions pv
12629
       WHERE pv.pv_id = pvid;
12630
 
12631
      -- Get ViewId
12632
      viewid := get_package_view (pvid, rtagid);
12633
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
12634
 
12635
      -- Log
12636
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
12637
 
12638
      IF (ispatch IS NULL)
12639
      THEN
12640
         -- Remove from current area
12641
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
12642
         -- Change package state
12643
         pk_package.change_state (pvid, 'P', userid);
12644
         -- Add package to new area
12645
         pk_planned.add_package (pvid, viewid, rtagid, userid);
12646
      END IF;
12647
 
12648
      -- Log
12649
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
12650
   END;
12651
 
12652
/*-------------------------------------------------------------------------------------------------------*/
12653
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
12654
   IS
12655
   BEGIN
12656
      -- Log
12657
      log_action (pvid,
12658
                  'action',
12659
                  userid,
12660
                  'Start of Package Pending Approval...'
12661
                 );
12662
      -- Change package state
12663
      pk_package.change_state (pvid, 'A', userid);
12664
      -- Log
12665
      log_action (pvid, 'action', userid,
12666
                  'End of Package Pending Approval...');
12667
   END;
12668
 
12669
/*-------------------------------------------------------------------------------------------------------*/
12670
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
12671
   IS
12672
      viewid   NUMBER;
12673
   BEGIN
12674
      -- Get ViewId
12675
      viewid := get_package_view (pvid, rtagid);
12676
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
12677
 
12678
      -- Log
12679
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
12680
      -- Remove from current area
12681
      pk_planned.remove_package (pvid, rtagid, userid);
12682
      -- Change package state
12683
      pk_package.change_state (pvid, 'R', userid);
12684
      -- Add package to new area
12685
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
12686
      -- Log
12687
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
12688
   END;
12689
 
12690
/*-------------------------------------------------------------------------------------------------------*/
12691
   PROCEDURE change_package_view (
12692
      pvid        IN   NUMBER,
12693
      rtagid      IN   NUMBER,
12694
      newviewid   IN   NUMBER
12695
   )
12696
   IS
12697
      envtab   NUMBER;
12698
   BEGIN
12699
      envtab := pk_environment.get_package_area (pvid, rtagid);
12700
 
12701
      IF envtab = 0
12702
      THEN
12703
         -- WORK IN PROGRESS --
12704
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
12705
      ELSIF envtab = 1
12706
      THEN
12707
         -- PENDING --
12708
         pk_planned.change_package_view (pvid, rtagid, newviewid);
12709
      ELSIF envtab = 2
12710
      THEN
12711
         -- RELEASED --
12712
         pk_release.change_package_view (pvid, rtagid, newviewid);
12713
      END IF;
12714
   END;
12715
 
12716
/*-------------------------------------------------------------------------------------------------------*/
12717
   PROCEDURE find_package (
12718
      skeyword      IN       VARCHAR2,
12719
      nrtagid       IN       NUMBER,
12720
      nsearcharea   IN       NUMBER,
12721
      recordset     OUT      typecur
12722
   )
12723
   IS
12724
   BEGIN
12725
      IF nsearcharea = 0
12726
      THEN
12727
         /* Search Work In Progress */
12728
         OPEN recordset FOR
12729
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
12730
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
12731
                     pv.modified_stamp, usr.full_name, usr.user_email
12732
                FROM views vi,
12733
                     work_in_progress rc,
12734
                     PACKAGES pkg,
12735
                     package_versions pv,
12736
                     users usr
12737
               WHERE rc.view_id = vi.view_id
12738
                 AND rc.pv_id = pv.pv_id
12739
                 AND pkg.pkg_id = pv.pkg_id
12740
 
12741
  AND pv.modifier_id = usr.user_id
12742
                 AND rc.rtag_id = nrtagid
12743
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
12744
            ORDER BY UPPER (pkg.pkg_name);
12745
      ELSIF nsearcharea = 1
12746
      THEN
12747
         /* Search Pending */
12748
         OPEN recordset FOR
12749
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
12750
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
12751
                     pv.modified_stamp, usr.full_name, usr.user_email
12752
                FROM views vi,
12753
                     planned rc,
12754
                     PACKAGES pkg,
12755
                     package_versions pv,
12756
                     users usr
12757
               WHERE rc.view_id = vi.view_id
12758
                 AND rc.pv_id = pv.pv_id
12759
                 AND pkg.pkg_id = pv.pkg_id
12760
                 AND pv.modifier_id = usr.user_id
12761
                 AND rc.rtag_id = nrtagid
12762
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
12763
            ORDER BY UPPER (pkg.pkg_name);
12764
      ELSIF nsearcharea = 2
12765
      THEN
12766
         /* Search Released */
12767
         OPEN recordset FOR
12768
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
12769
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
12770
                     pv.modified_stamp, usr.full_name, usr.user_email
12771
                FROM views vi,
12772
                     release_content rc,
12773
                     PACKAGES pkg,
12774
                     package_versions pv,
12775
                     users usr
12776
               WHERE rc.base_view_id = vi.view_id
12777
                 AND rc.pv_id = pv.pv_id
12778
                 AND pkg.pkg_id = pv.pkg_id
12779
                 AND pv.modifier_id = usr.user_id
12780
                 AND rc.rtag_id = nrtagid
12781
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
12782
            ORDER BY UPPER (pkg.pkg_name);
12783
      ELSIF nsearcharea = 3
12784
      THEN
12785
         /* Search ALL */
12786
         OPEN recordset FOR
12787
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
12788
                     pv.pv_id, pv.pkg_version, pv.comments,
12789
                     pv.modified_stamp, usr.full_name, usr.user_email
12790
                FROM views vi,
12791
                     environment_view rc,
12792
                     PACKAGES pkg,
12793
                     package_versions pv,
12794
                     users usr
12795
               WHERE rc.view_id = vi.view_id
12796
                 AND rc.pv_id = pv.pv_id
12797
                 AND pkg.pkg_id = pv.pkg_id
12798
                 AND pv.modifier_id = usr.user_id
12799
                 AND rc.rtag_id = nrtagid
12800
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
12801
            ORDER BY UPPER (pkg.pkg_name);
12802
      END IF;
12803
   END;
12804
 
12805
/*-------------------------------------------------------------------------------------------------------*/
12806
   PROCEDURE find_file (
12807
      skeyword      IN       VARCHAR2,
12808
      nrtagid       IN       NUMBER,
12809
      nsearcharea   IN       NUMBER,
12810
      npagesize     IN       NUMBER,
12811
      recordset     OUT      typecur
12812
   )
12813
   IS
12814
   BEGIN
12815
      IF nsearcharea = 0
12816
      THEN
12817
         /* Search Work In Progress */
12818
         OPEN recordset FOR
12819
            SELECT   qry.*
12820
                FROM (
12821
                      /* File search on Packages */
12822
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12823
                             pv.pv_id, pv.pkg_version, art.crc_cksum
12824
                        FROM work_in_progress rc,
12825
                             PACKAGES pkg,
12826
                             package_versions pv,
12827
                             release_components art
12828
                       WHERE rc.pv_id = art.pv_id
12829
                         AND pv.pkg_id = pkg.pkg_id
12830
                         AND rc.pv_id = pv.pv_id
12831
                         AND rc.rtag_id = nrtagid
12832
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12833
                      UNION ALL
12834
                      /* File search on Products */
12835
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12836
                             pv.pv_id, pv.pkg_version, art.crc_cksum
12837
                        FROM work_in_progress rc,
12838
                             PACKAGES pkg,
12839
                             package_versions pv,
12840
                             product_components art
12841
                       WHERE rc.pv_id = art.pv_id
12842
                         AND pv.pkg_id = pkg.pkg_id
12843
                         AND rc.pv_id = pv.pv_id
12844
                         AND rc.rtag_id = nrtagid
12845
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
12846
               WHERE ROWNUM <= npagesize
12847
            ORDER BY UPPER (qry.pkg_name);
12848
      ELSIF nsearcharea = 1
12849
      THEN
12850
         /* Search Pending */
12851
         OPEN recordset FOR
12852
            SELECT   qry.*
12853
                FROM (
12854
                      /* File search on Packages */
12855
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12856
                             pv.pv_id, pv.pkg_version, art.crc_cksum
12857
                        FROM planned rc,
12858
                             PACKAGES pkg,
12859
                             package_versions pv,
12860
                             release_components art
12861
                       WHERE rc.pv_id = art.pv_id
12862
                         AND pv.pkg_id = pkg.pkg_id
12863
                         AND rc.pv_id = pv.pv_id
12864
                         AND rc.rtag_id = nrtagid
12865
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12866
                      UNION ALL
12867
                      /* File search on Products */
12868
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12869
                             pv.pv_id, pv.pkg_version, art.crc_cksum
12870
                        FROM planned rc,
12871
                             PACKAGES pkg,
12872
                             package_versions pv,
12873
                             product_components art
12874
                       WHERE rc.pv_id = art.pv_id
12875
                         AND pv.pkg_id = pkg.pkg_id
12876
                         AND rc.pv_id = pv.pv_id
12877
                         AND rc.rtag_id = nrtagid
12878
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
12879
               WHERE ROWNUM <= npagesize
12880
            ORDER BY UPPER (qry.pkg_name);
12881
      ELSIF nsearcharea = 2
12882
      THEN
12883
         /* Search Released */
12884
         OPEN recordset FOR
12885
            SELECT   qry.*
12886
                FROM (
12887
                      /* File search on Packages */
12888
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12889
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12890
                             NULL AS patch_id
12891
                        FROM release_content rc,
12892
                             PACKAGES pkg,
12893
                             package_versions pv,
12894
                             release_components art
12895
                       WHERE rc.pv_id = art.pv_id
12896
                         AND pv.pkg_id = pkg.pkg_id
12897
                         AND rc.pv_id = pv.pv_id
12898
                         AND rc.rtag_id = nrtagid
12899
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12900
                      UNION ALL
12901
                      /* File search on Products */
12902
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12903
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12904
                             NULL AS patch_id
12905
                        FROM release_content rc,
12906
                             PACKAGES pkg,
12907
                             package_versions pv,
12908
                             product_components art
12909
                       WHERE rc.pv_id = art.pv_id
12910
                         AND pv.pkg_id = pkg.pkg_id
12911
                         AND rc.pv_id = pv.pv_id
12912
                         AND rc.rtag_id = nrtagid
12913
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12914
                      UNION ALL
12915
                      /* File search on Patches */
12916
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12917
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12918
                             DECODE (art.file_path,
12919
                                     NULL, pp.patch_id,
12920
                                     NULL
12921
                                    ) AS 
12922
patch_id
12923
                        FROM release_content rc,
12924
                             PACKAGES pkg,
12925
                             package_versions pv,
12926
                             release_components art,
12927
                             package_patches pp
12928
                       WHERE pv.pv_id = pp.pv_id
12929
                         AND pv.pkg_id = pkg.pkg_id
12930
                         AND rc.rtag_id = nrtagid
12931
                         AND art.pv_id = pp.patch_id
12932
                         AND rc.pv_id = pp.pv_id
12933
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
12934
               WHERE ROWNUM <= npagesize
12935
            ORDER BY UPPER (qry.pkg_name);
12936
      ELSIF nsearcharea = 3
12937
      THEN
12938
         /* Search ALL */
12939
         OPEN recordset FOR
12940
            SELECT   qry.*
12941
                FROM (
12942
                      /* File search on Packages */
12943
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12944
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12945
                             NULL AS patch_id
12946
                        FROM environment_view rc,
12947
                             PACKAGES pkg,
12948
                             package_versions pv,
12949
                             release_components art
12950
                       WHERE rc.pv_id = art.pv_id
12951
                         AND pv.pkg_id = pkg.pkg_id
12952
                         AND rc.pv_id = pv.pv_id
12953
                         AND rc.rtag_id = nrtagid
12954
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12955
                      UNION ALL
12956
                      /* File search on Products */
12957
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12958
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12959
                             NULL AS patch_id
12960
                        FROM environment_view rc,
12961
                             PACKAGES pkg,
12962
                             package_versions pv,
12963
                             product_components art
12964
                       WHERE rc.pv_id = art.pv_id
12965
                         AND pv.pkg_id = pkg.pkg_id
12966
                         AND rc.pv_id = pv.pv_id
12967
                         AND rc.rtag_id = nrtagid
12968
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
12969
                      UNION ALL
12970
                      /* File search on Patches */
12971
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
12972
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
12973
                             DECODE (art.file_path,
12974
                                     NULL, pp.patch_id,
12975
                                     NULL
12976
                                    ) AS patch_id
12977
                        FROM release_content rc,
12978
                             PACKAGES pkg,
12979
                             package_versions pv,
12980
                             release_components art,
12981
                             package_patches pp
12982
                       WHERE pv.pv_id = pp.pv_id
12983
                         AND pv.pkg_id = pkg.pkg_id
12984
                         AND rc.rtag_id = nrtagid
12985
                         AND art.pv_id = pp.patch_id
12986
                         AND rc.pv_id = pp.pv_id
12987
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
12988
               WHERE ROWNUM <= npagesize
12989
            ORDER BY UPPER (qry.pkg_name);
12990
      END IF;
12991
   END;
12992
 
12993
/*-------------------------------------------------------------------------------------------------------*/
12994
   PROCEDURE get_prodrelease_items (
12995
      rtagid             IN       NUMBER,
12996
      ntruerecordcount   OUT      NUMBER,
12997
      recordset          OUT      typecur
12998
   )
12999
   IS
13000
   BEGIN
13001
      -- Get true record count n the number of integration products
13002
      SELECT COUNT (rc.pv_id)
13003
        INTO ntruerecordcount
13004
        FROM release_content rc
13005
       WHERE rc.rtag_id = rtagid;
13006
 
13007
      OPEN recordset FOR
13008
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
13009
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
13010
                  pv.pkg_version, pv.dlocked, pv.pv_description
13011
             FROM release_content rel,
13012
                  PACKAGES pkg,
13013
                  package_versions pv,
13014
                  views vi
13015
            WHERE pv.pkg_id = pkg.pkg_id
13016
              AND rel.pv_id = pv.pv_id
13017
              AND rel.base_view_id = vi.view_id
13018
              AND pv.is_deployable = 'Y'
13019
              AND rtag_id = rtagid
13020
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
13021
                                              FROM deployment_manager.os_contents)
13022
              AND rel.product_state IS NULL
13023
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
13024
   END;
13025
 
13026
/*-------------------------------------------------------------------------------------------------------*/
13027
   PROCEDURE get_integration_items (
13028
      rtagid             IN       NUMBER,
13029
      ntruerecordcount   OUT      NUMBER,
13030
      recordset          OUT      typecur
13031
   )
13032
   IS
13033
   BEGIN
13034
      -- Get true record count n the number of integration products
13035
      SELECT COUNT (rc.pv_id)
13036
        INTO ntruerecordcount
13037
        FROM release_content rc
13038
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
13039
 
13040
      OPEN recordset FOR
13041
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
13042
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
13043
                  pv.pkg_version, pv.dlocked, pv.pv_description
13044
             FROM release_content rel,
13045
                  PACKAGES pkg,
13046
                  package_versions pv,
13047
                  views vi
13048
            WHERE pv.pkg_id = pkg.pkg_id
13049
              AND rel.pv_id = pv.pv_id
13050
              AND rel.base_view_id = vi.view_id
13051
              AND pv.is_deployable = 'Y'
13052
              AND rtag_id = rtagid
13053
              AND rel.product_state IN (1, 5)
13054
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
13055
   END;
13056
 
13057
/*-------------------------------------------------------------------------------------------------------*/
13058
   PROCEDURE get_test_items (
13059
      rtagid             IN       NUMBER,
13060
      ntruerecordcount   OUT      NUMBER,
13061
      recordset          OUT      typecur
13062
   )
13063
   IS
13064
   BEGIN
13065
      -- Get true record count n the number of test products
13066
      SELECT COUNT (rc.pv_id)
13067
        INTO ntruerecordcount
13068
        FROM release_content rc
13069
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
13070
 
13071
      OPEN recordset FOR
13072
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
13073
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
13074
                  pv.pkg_version, pv.dlocked, pv.pv_description
13075
             FROM release_content rel,
13076
                  PACKAGES pkg,
13077
                  package_versions pv,
13078
                  views vi
13079
            WHERE pv.pkg_id = pkg.pkg_id
13080
              AND rel.pv_id = pv.pv_id
13081
              AND rel.base_view_id = vi.view_id
13082
              AND pv.is_deployable = 'Y'
13083
              AND rtag_id = rtagid
13084
              AND rel.product_state = 2
13085
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
13086
   END;
13087
 
13088
/*-------------------------------------------------------------------------------------------------------*/
13089
   PROCEDURE get_deploy_items (
13090
      rtagid             IN       NUMBER,
13091
      ntruerecordcount   OUT      NUMBER,
13092
      recordset          OUT      typecur
13093
   )
13094
   IS
13095
   BEGIN
13096
      -- Get true record count n the number of deploy products
13097
      SELECT COUNT (rc.pv_id)
13098
        INTO ntruerecordcount
13099
        FROM release_content rc
13100
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
13101
 
13102
      OPEN recordset FOR
13103
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
13104
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
13105
                  pv.pkg_version, pv.dlocked, pv.pv_description
13106
             FROM release_content rel,
13107
                  PACKAGES pkg,
13108
                  package_versions pv,
13109
                  views vi
13110
            WHERE pv.pkg_id = pkg.pkg_id
13111
              AND rel.pv_id = pv.pv_id
13112
              AND rel.base_view_id = vi.view_id
13113
              AND pv.is_deployable = 'Y'
13114
              AND rtag_id = rtagid
13115
              AND rel.product_state IN (3, 5)
13116
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
13117
 
13118
                                         FROM deployment_manager.os_contents)
13119
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
13120
   END;
13121
 
13122
/*-------------------------------------------------------------------------------------------------------*/
13123
   PROCEDURE get_reject_items (
13124
      rtagid             IN       NUMBER,
13125
      ntruerecordcount   OUT      NUMBER,
13126
      recordset          OUT      typecur
13127
   )
13128
   IS
13129
   BEGIN
13130
      -- Get true record count n the number of reject products
13131
      SELECT COUNT (rc.pv_id)
13132
        INTO ntruerecordcount
13133
        FROM release_content rc
13134
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
13135
 
13136
      OPEN recordset FOR
13137
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
13138
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
13139
                  pv.pkg_version, pv.dlocked, pv.pv_description
13140
             FROM release_content rel,
13141
                  PACKAGES pkg,
13142
                  package_versions pv,
13143
                  views vi
13144
            WHERE pv.pkg_id = pkg.pkg_id
13145
              AND rel.pv_id = pv.pv_id
13146
              AND rel.base_view_id = vi.view_id
13147
              AND pv.is_deployable = 'Y'
13148
              AND rtag_id = rtagid
13149
              AND rel.product_state = 4
13150
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
13151
   END;
13152
/*-------------------------------------------------------------------------------------------------------*/
13153
END pk_environment_test;
13154
/
13155
 
13156
ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" 
13157
  COMPILE BODY 
13158
    PLSQL_OPTIMIZE_LEVEL=  2
13159
    PLSQL_CODE_TYPE=  INTERPRETED
13160
    PLSQL_DEBUG=  FALSE
13161
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:44'
13162
/
13163
 
13164
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
13165
IS
13166
/*
13167
------------------------------
13168
||  Last Modified:  R. Solanki
13169
||  Modified Date:  09/03/2006
13170
||  Body Version:   1.7
13171
------------------------------
13172
*/
13173
 
13174
   /*-------------------------------------------------------------------------------------------------------*/
13175
   PROCEDURE new_version (
13176
      nlastpvid                   IN       NUMBER,
13177
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
13178
      cbuildtype                  IN       CHAR,
13179
      nsettopvid                  IN       NUMBER DEFAULT NULL,
13180
      nrtagid                     IN       NUMBER,
13181
      nuserid                     IN       NUMBER,
13182
      enumissues_state_imported   IN       NUMBER,
13183
      returnpvid                  OUT      NUMBER
13184
   )
13185
   IS
13186
      origpkg_id                   package_versions.pkg_id%TYPE;
13187
      origdlocked                  package_versions.dlocked%TYPE;
13188
      ssv_mm                       package_versions.v_mm%TYPE;
13189
      ssv_nmm                      package_versions.v_nmm%TYPE;
13190
      ssv_ext                      package_versions.v_ext%TYPE;
13191
      spackageversion              VARCHAR2 (4000);
13192
      nissuestypes                 NUMBER;
13193
      nviewid                      NUMBER;
13194
      reccount                     NUMBER;
13195
      isreleased                   package_versions.dlocked%TYPE       := 'N';
13196
      slabel                       VARCHAR2 (4000)                    := NULL;
13197
 
13198
      CURSOR package_versions_cur
13199
      IS
13200
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
13201
           FROM package_versions pv
13202
          WHERE pv.pkg_version = snewpkgversion
13203
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
13204
                                         FROM package_versions origpv
13205
                                        WHERE origpv.pv_id = nlastpvid);
13206
 
13207
      package_versions_rec         package_versions_cur%ROWTYPE;
13208
 
13209
      CURSOR clone_package_versions_cur
13210
      IS
13211
         SELECT DISTINCT pkg_id, dlocked
13212
                    FROM package_versions
13213
                   WHERE pv_id = nlastpvid;
13214
 
13215
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
13216
   BEGIN
13217
      spackageversion := snewpkgversion;
13218
 
13219
      IF nsettopvid IS NULL
13220
      THEN
13221
         -- SetToPv_id is not supplied, hence proceed.
13222
 
13223
         /* ---------------------------------------------------- */
13224
/* Find id package_version exists                       */
13225
/* ---------------------------------------------------- */
13226
         OPEN package_versions_cur;
13227
 
13228
         FETCH package_versions_cur
13229
          INTO package_versions_rec;
13230
 
13231
         IF package_versions_cur%NOTFOUND
13232
         THEN
13233
            ---  Create brand new package ---
13234
            SELECT seq_pv_id.NEXTVAL
13235
              INTO returnpvid
13236
              FROM DUAL;
13237
 
13238
            -- Split Version to get extention + other
13239
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
13240
 
13241
            -- Get previous package to clone from
13242
            OPEN clone_package_versions_cur;
13243
 
13244
            FETCH clone_package_versions_cur
13245
             INTO clone_package_versions_rec;
13246
 
13247
            origpkg_id := clone_package_versions_rec.pkg_id;
13248
            origdlocked := clone_package_versions_rec.dlocked;
13249
 
13250
            CLOSE clone_package_versions_cur;
13251
 
13252
            -- Automated built config
13253
            IF (cbuildtype = 'A')
13254
            THEN
13255
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
13256
                                    -- Make sure that version is still unique
13257
            END IF;
13258
 
13259
            -- Clone Package Version Details --
13260
            INSERT INTO package_versions
13261
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
13262
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
13263
                         v_ext, src_path, pv_description, pv_overview,
13264
                         last_pv_id, owner_id, is_deployable,
13265
                         is_build_env_required, build_type, bs_id, is_autobuildable)
13266
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
13267
                      spackageversion AS pkg_version, 'N' AS dlocked,
13268
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
13269
                      ora_sysdatetime AS modified_stamp,
13270
                      nuserid AS modifier_id, ssv_mm AS v_mm,
13271
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
13272
                      pv.pv_description, pv.pv_overview,
13273
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
13274
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
13275
                 FROM package_versions pv
13276
                WHERE pv.pv_id = nlastpvid;
13277
 
13278
            -- Set Issues Type for cloning ---
13279
            IF origdlocked = 'Y'
13280
            THEN
13281
               nissuestypes := enumissues_state_imported;
13282
            ELSE
13283
               nissuestypes := NULL;
13284
            END IF;
13285
 
13286
            -- Update Label for automated built
13287
            IF (cbuildtype = 'A')
13288
            THEN
13289
               slabel := get_automated_label (returnpvid);
13290
 
13291
               UPDATE package_versions pv
13292
                  SET pv.pkg_label = slabel
13293
                WHERE pv.pv_id = returnpvid;
13294
            END IF;
13295
 
13296
            basic_clone (nlastpvid,
13297
                         returnpvid,
13298
                         nrtagid,
13299
                         nuserid,
13300
                         origpkg_id,
13301
                         nissuestypes
13302
                        );
13303
         ELSE
13304
            --- Package already exists, hence reuse ---
13305
            returnpvid := package_versions_rec.pv_id;
13306
            isreleased := package_versions_rec.dlocked;
13307
         END IF;
13308
 
13309
         CLOSE package_versions_cur;
13310
      ELSE
13311
         returnpvid := nsettopvid;
13312
      END IF;
13313
   END new_version;
13314
 
13315
/*-------------------------------------------------------------------------------------------------------*/
13316
   PROCEDURE change_state (
13317
      pvid       IN   NUMBER,
13318
      newstate   IN   package_versions.dlocked%TYPE,
13319
      userid     IN   NUMBER
13320
   )
13321
   IS
13322
   BEGIN
13323
      -- Set package in Released mode
13324
      UPDATE package_versions pv
13325
         SET pv.dlocked = newstate,
13326
             pv.modified_stamp = ora_sysdatetime,
13327
             pv.modifier_id = userid
13328
       WHERE pv.pv_id = pvid;
13329
 
13330
      -- Log action --
13331
      IF newstate = 'Y'
13332
      THEN
13333
         -- RELEASED --
13334
         log_action (pvid,
13335
                     'makeofficial',
13336
                     userid,
13337
                     'Package state change to: Released'
13338
                    );
13339
      ELSIF newstate = 'N'
13340
      THEN
13341
         -- UNLOCKED --
13342
         log_action (pvid,
13343
                     'makeunofficial',
13344
                     userid,
13345
                     'Package state change to: Ulocked'
13346
                    );
13347
      ELSIF newstate = 'P'
13348
      THEN
13349
         -- PENDING APPROVAL --
13350
         log_action (pvid,
13351
                     'add_to_planned',
13352
                     userid,
13353
                     'Package state change to: Pending Approval'
13354
                    );
13355
      ELSIF newstate = 'R'
13356
      THEN
13357
         -- REJECTED --
13358
         log_action (pvid,
13359
                     'reject_package',
13360
                     userid,
13361
                     'Package state change to: Rejected'
13362
                    );
13363
      ELSIF newstate = 'A'
13364
      THEN
13365
         -- APPROVED --
13366
         log_action (pvid,
13367
                     'approve_package',
13368
                     userid,
13369
                     'Package state change to: Approved'
13370
                    );
13371
      END IF;
13372
   END;
13373
 
13374
/*-------------------------------------------------------------------------------------------------------*/
13375
   PROCEDURE destroy_package (
13376
      pvid               IN       NUMBER,
13377
      overridewarnings   IN       CHAR DEFAULT 'N',
13378
      problemstring      OUT      VARCHAR2
13379
   )
13380
   IS
13381
      LOCKED     CHAR;
13382
      pkgid      NUMBER;
13383
      ROWCOUNT   NUMBER;
13384
   BEGIN
13385
      /*
13386
      || This will destroy all package details from database.
13387
      || It will only be used to remove unwanted work in progress packages,
13388
      || or mestaken versions
13389
      */
13390
 
13391
      /*--------------- Business Rules Here -------------------*/
13392
      problemstring 
13393
:= NULL;
13394
 
13395
      IF overridewarnings = 'N'
13396
      THEN
13397
         -- Package must not be official
13398
         SELECT pv.dlocked
13399
           INTO LOCKED
13400
           FROM package_versions pv
13401
          WHERE pv.pv_id = pvid;
13402
 
13403
         IF LOCKED = 'Y'
13404
         THEN
13405
            problemstring :=
13406
                  problemstring
13407
               || '- Package is locked and released.'
13408
               || UTL_TCP.crlf;
13409
         END IF;
13410
 
13411
         -- Cannot remove if used in BOMs
13412
         SELECT COUNT (osc.prod_id)
13413
           INTO ROWCOUNT
13414
           FROM deployment_manager.os_contents osc
13415
          WHERE osc.prod_id = pvid;
13416
 
13417
         IF ROWCOUNT > 0
13418
         THEN
13419
            problemstring :=
13420
                  problemstring
13421
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
13422
               || UTL_TCP.crlf;
13423
         END IF;
13424
 
13425
         -- Cannot remove if Referenced as build dependency
13426
         SELECT COUNT (dep.pv_id)
13427
           INTO ROWCOUNT
13428
           FROM package_dependencies dep
13429
          WHERE dep.dpv_id = pvid;
13430
 
13431
         IF ROWCOUNT > 0
13432
         THEN
13433
            problemstring :=
13434
                  problemstring
13435
               || '- Package is referenced by other package as build dependency.'
13436
               || UTL_TCP.crlf;
13437
         END IF;
13438
 
13439
         -- Cannot remove if Referenced as runtime dependency
13440
         SELECT COUNT (rd.pv_id)
13441
           INTO ROWCOUNT
13442
           FROM runtime_dependencies rd
13443
          WHERE rd.rtd_id = pvid;
13444
 
13445
         IF ROWCOUNT > 0
13446
         THEN
13447
            problemstring :=
13448
                  problemstring
13449
               || '- Package is referenced by other package as runtime dependency.'
13450
               || UTL_TCP.crlf;
13451
         END IF;
13452
 
13453
         -- Cannot remove if Referenced as patch
13454
         SELECT COUNT (pp.pv_id)
13455
           INTO ROWCOUNT
13456
           FROM package_patches pp
13457
          WHERE pp.patch_id = pvid;
13458
 
13459
         IF ROWCOUNT > 0
13460
         THEN
13461
            problemstring :=
13462
                  problemstring
13463
               || '- Package is used as patch by other package.'
13464
               || UTL_TCP.crlf;
13465
         END IF;
13466
      END IF;
13467
 
13468
/*-------------------------------------------------------*/
13469
      IF (problemstring IS NULL)
13470
      THEN
13471
         --- Remove From Work in Progress
13472
         DELETE FROM work_in_progress wip
13473
               WHERE wip.pv_id = pvid;
13474
 
13475
         --- Remove From Pending
13476
         DELETE FROM planned pl
13477
               WHERE pl.pv_id = pvid;
13478
 
13479
         --- Remove From Released area
13480
         DELETE FROM release_content rc
13481
               WHERE rc.pv_id = pvid;
13482
 
13483
         ---Remove From Package Processes
13484
         DELETE FROM package_processes pp
13485
               WHERE pp.pv_id = pvid;
13486
 
13487
         --- Remove Dependencies
13488
         DELETE FROM package_dependencies dep
13489
               WHERE dep.pv_id = pvid;
13490
 
13491
         DELETE FROM package_dependencies dep
13492
               WHERE dep.dpv_id = pvid;
13493
 
13494
         --- Remove Runtime dependencies
13495
         DELETE FROM runtime_dependencies rtd
13496
               WHERE rtd.pv_id = pvid;
13497
 
13498
         DELETE FROM runtime_dependencies rtd
13499
               WHERE rtd.rtd_id = pvid;
13500
 
13501
         --- Remove components
13502
         DELETE FROM product_components pc
13503
               WHERE pc.pv_id = pvid;
13504
 
13505
         DELETE FROM release_components rc
13506
               WHERE rc.pv_id = pvid;
13507
 
13508
         --- Remove From Notification History
13509
         DELETE FROM notification_history nh
13510
               WHERE nh.pv_id = pvid;
13511
 
13512
         --- Remove From Ignore Warnings
13513
         DELETE FROM ignore_warnings iw
13514
               WHERE iw.pv_id = pvid;
13515
 
13516
         --- Remove From Additional Notes
13517
         DELETE FROM additional_notes an
13518
               WHERE an.pv_id = pvid;
13519
 
13520
         --- Remove From CQ Issues
13521
         DELETE FROM cq_issues cq
13522
               WHERE cq.pv_id = pvid;
13523
 
13524
         --- Remove from Package Patches
13525
         DELETE FROM package_patches pp
13526
               WHERE pp.pv_id = pvid;
13527
 
13528
         DELETE FROM package_patches pp
13529
               WHERE pp.patch_id = pvid;
13530
 
13531
         --- Remove From Package Documents
13532
         DELETE FROM package_documents pd
13533
               WHERE pd.pv_id = pvid;
13534
 
13535
         --- Remove from Code Review
13536
         DELETE FROM code_reviews cr
13537
               WHERE cr.pv_id = pvid;
13538
 
13539
         --- Remove from Unit Tests
13540
         DELETE FROM unit_tests ut
13541
               WHERE ut.pv_id = pvid;
13542
 
13543
         --- Remove from Package BuildEnv
13544
         DELETE FROM package_build_env pbe
13545
               WHERE pbe.pv_id = pvid;
13546
 
13547
		 --- Remove from Package Build Info
13548
		 DELETE FROM package_build_info pbi
13549
		 	   WHERE pbi.pv_id = pvid;    
13550
 
13551
 
13552
         --- Remove from Build Order
13553
         DELETE FROM build_order bo
13554
               WHERE bo.pv_id = pvid;
13555
 
13556
         --- Remove from Note Manager
13557
         DELETE FROM note_manager nm
13558
               WHERE nm.nid = pvid;
13559
 
13560
         --- Remove from Action log
13561
         DELETE FROM action_log al
13562
               WHERE al.pv_id = pvid;
13563
 
13564
		 --- Remove from Do Not Ripple 
13565
		 DELETE FROM DO_NOT_RIPPLE dnr
13566
		 	   WHERE dnr.PV_ID = pvid;
13567
 
13568
		 --- Remove from Jira Issues 
13569
		 DELETE FROM JIRA_ISSUES jira
13570
		 	   WHERE jira.PV_ID = pvid;
13571
 
13572
         --- Finally Remove From Package Versions
13573
         --- Get Package name
13574
         SELECT pv.pkg_id
13575
           INTO pkgid
13576
           FROM package_versions pv
13577
          WHERE pv.pv_id = pvid;
13578
 
13579
         DELETE FROM package_versions pv
13580
               WHERE pv.pv_id = pvid;
13581
 
13582
         --- Remove package name if not used any more
13583
         SELECT COUNT (pv.pv_id)
13584
           INTO ROWCOUNT
13585
           FROM package_versions pv
13586
          WHERE pv.pkg_id = pkgid;
13587
 
13588
         IF ROWCOUNT < 1
13589
         THEN
13590
            DELETE FROM PACKAGES pkg
13591
                  WHERE pkg.pkg_id = pkgid;
13592
         END IF;
13593
      END IF;
13594
   END;
13595
 
13596
/*-------------------------------------------------------------------------------------------------------*/
13597
   PROCEDURE new_patch (
13598
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
13599
      nparentpvid        IN       NUMBER,
13600
      spatchidlist       IN       VARCHAR2,
13601
      nuserid            IN       NUMBER,
13602
      returnpatchid      OUT      NUMBER
13603
   )
13604
   IS
13605
      patchpv_id           NUMBER;
13606
      parpkg_id            NUMBER;
13607
      lastinstallorder     NUMBER;
13608
      ispatchdlocked       package_versions.dlocked%TYPE;
13609
      ssv_mm               package_versions.v_mm%TYPE;
13610
      ssv_nmm              package_versions.v_nmm%TYPE;
13611
      ssv_ext              package_versions.v_ext%TYPE;
13612
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
13613
                                                                          ();
13614
 
13615
      CURSOR parent_cur
13616
      IS
13617
         SELECT pv.*, pkg.pkg_name
13618
           FROM package_versions pv, PACKAGES pkg
13619
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
13620
 
13621
      parent_rec           parent_cur%ROWTYPE;
13622
 
13623
      CURSOR patch_cur
13624
      IS
13625
         SELECT pv.*, pg.pkg_name
13626
           FROM package_versions pv, PACKAGES pg
13627
          WHERE pv.pkg_id = parpkg_id
13628
            AND pv.pkg_version = snewpatchversion
13629
            AND pv.pkg_id = pg.pkg_id;
13630
 
13631
      patch_rec            patch_cur%ROWTYPE;
13632
 
13633
      CURSOR releases_cur
13634
      IS
13635
         SELECT rc.pv_id
13636
           FROM release_content rc
13637
          WHERE rc.pv_id = patch_rec.pv_id;
13638
 
13639
      releases_rec         releases_cur%ROWTYPE;
13640
   BEGIN
13641
      -- Get Last Install Order
13642
      SELECT COUNT (*)
13643
        INTO lastinstallorder
13644
        FROM package_patches pp
13645
       WHERE pp.pv_id = nparentpvid;
13646
 
13647
      -- Get parent details
13648
      OPEN parent_cur;
13649
 
13650
      FETCH parent_cur
13651
       INTO parent_rec;
13652
 
13653
      parpkg_id := parent_rec.pkg_id;
13654
 
13655
      -- Find if patch exists in database
13656
      OPEN patch_cur;
13657
 
13658
      FETCH patch_cur
13659
       INTO patch_rec;
13660
 
13661
      -- Parent must be official
13662
      IF parent_rec.dlocked = 'Y'
13663
      THEN
13664
         IF patch_cur%NOTFOUND
13665
         THEN
13666
            ispatchdlocked := 'N';
13667
 
13668
            -- Create new patch version --
13669
            SELECT seq_pv_id.NEXTVAL
13670
              INTO patchpv_id
13671
              FROM DUAL;
13672
 
13673
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
13674
 
13675
            INSERT INTO package_versions
13676
                        (pv_id, 
13677
pkg_id, pkg_version,
13678
                         dlocked, created_stamp, creator_id,
13679
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
13680
                         src_path,
13681
                         pv_description,
13682
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
13683
						 is_autobuildable
13684
                        )
13685
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
13686
                         ispatchdlocked, ora_sysdate, nuserid,
13687
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
13688
                         parent_rec.src_path,
13689
                            'This is a patch to '
13690
                         || parent_rec.pkg_name
13691
                         || ' '
13692
                         || parent_rec.pkg_version,
13693
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
13694
                        );
13695
 
13696
            INSERT INTO package_patches
13697
                        (pv_id, patch_id, install_order)
13698
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
13699
                       lastinstallorder + 1 AS install_order
13700
                  FROM package_versions pv
13701
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
13702
 
13703
            /* LOG ACTION */
13704
            log_action (patchpv_id,
13705
                        'new_version',
13706
                        nuserid,
13707
                        'Patch version created: ' || snewpatchversion
13708
                       );
13709
            log_action (nparentpvid,
13710
                        'patch_add',
13711
                        nuserid,
13712
                        'New patch created and attached: ' || snewpatchversion
13713
                       );
13714
         ELSE
13715
            patchpv_id := patch_rec.pv_id;
13716
            ispatchdlocked := patch_rec.dlocked;
13717
 
13718
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
13719
            OPEN releases_cur;
13720
 
13721
            FETCH releases_cur
13722
             INTO releases_rec;
13723
 
13724
            IF releases_cur%NOTFOUND
13725
            THEN
13726
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
13727
               UPDATE package_versions
13728
                  SET is_patch = 'Y'
13729
                WHERE pv_id = patchpv_id;
13730
 
13731
               INSERT INTO package_patches
13732
                           (pv_id, patch_id, install_order)
13733
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
13734
                          lastinstallorder + 1 AS install_order
13735
                     FROM package_versions pv
13736
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
13737
            END IF;
13738
 
13739
            CLOSE releases_cur;
13740
 
13741
            /* LOG ACTION */
13742
            log_action (nparentpvid,
13743
                        'patch_add',
13744
                        nuserid,
13745
                           'Patch version was found and attached: '
13746
                        || snewpatchversion
13747
                       );
13748
         END IF;
13749
      END IF;
13750
 
13751
      /* Create Patch Dependencies */
13752
      opatchdepcollector := in_list_number (spatchidlist);
13753
 
13754
      -- Make sure patch is unofficial before altering its dependencies
13755
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
13756
      THEN
13757
         -- Delete Existing Dependencies
13758
         DELETE FROM package_dependencies dep
13759
               WHERE dep.pv_id = patchpv_id;
13760
 
13761
         -- Insert new dependencies
13762
         INSERT INTO package_dependencies
13763
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
13764
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
13765
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
13766
                   'L' AS build_type
13767
              FROM package_versions pv
13768
             WHERE pv.pv_id IN (
13769
                      SELECT *
13770
                        FROM TABLE
13771
                                (CAST
13772
                                    (opatchdepcollector AS relmgr_number_tab_t)
13773
                                ));
13774
      END IF;
13775
 
13776
      -- Return patch_id
13777
      returnpatchid := patchpv_id;
13778
 
13779
      CLOSE parent_cur;
13780
 
13781
      CLOSE patch_cur;
13782
   EXCEPTION
13783
      WHEN DUP_VAL_ON_INDEX
13784
      THEN
13785
         raise_application_error (-20000,
13786
                                     'Patch version '
13787
                                  || snewpatchversion
13788
                                  || ' already exist.'
13789
                                 );
13790
   END;
13791
 
13792
/*-------------------------------------------------------------------------------------------------------*/
13793
   PROCEDURE obsolete_patch (
13794
      patchid            IN   NUMBER,
13795
      isobsolete         IN   CHAR,
13796
      obsoletecomments   IN   VARCHAR2,
13797
      userid             IN   NUMBER
13798
   )
13799
   IS
13800
   BEGIN
13801
      -- Update patch
13802
      UPDATE package_versions pv
13803
         SET pv.is_obsolete = isobsolete,
13804
             pv.obsolete_comments = obsoletecomments
13805
       WHERE pv.pv_id = patchid;
13806
 
13807
      /*
13808
      -- Update patch children
13809
      UPDATE PACKAGE_VERSIONS pv SET
13810
      pv.IS_OBSOLETE = IsObsolete,
13811
      pv.OBSOLETE_COMMENTS = ObsoleteComments
13812
      WHERE pv.PV_ID IN (
13813
                     SELECT DISTINCT dep.DPV_ID
13814
                       FROM PACKAGE_DEPENDENCIES dep
13815
                      WHERE dep.PV_ID = PatchId
13816
                     );
13817
 
13818
 
13819
      -- Update patch parent
13820
      UPDATE PACKAGE_VERSIONS pv SET
13821
      pv.IS_OBSOLETE = IsObsolete,
13822
      pv.OBSOLETE_COMMENTS = ObsoleteComments
13823
      WHERE pv.PV_ID IN (
13824
                     SELECT DISTINCT dep.PV_ID
13825
                       FROM PACKAGE_DEPENDENCIES dep
13826
                      WHERE dep.DPV_ID = PatchId
13827
                     );
13828
 
13829
         */
13830
 
13831
      /* LOG ACTION */
13832
      IF isobsolete IS NOT NULL
13833
      THEN
13834
         log_action (patchid,
13835
                     'patch_obsolete',
13836
                     userid,
13837
                     'Obsolete patch. ' || obsoletecomments
13838
                    );
13839
      ELSE
13840
         log_action (patchid,
13841
                     'patch_obsolete',
13842
                     userid,
13843
                     'Undo patch obsolete.'
13844
                    );
13845
      END IF;
13846
   END;
13847
 
13848
/*-------------------------------------------------------------------------------------------------------*/
13849
   PROCEDURE obsolete_patches (
13850
      spatchidlist       IN   VARCHAR2,
13851
      isobsolete         IN   CHAR,
13852
      obsoletecomments   IN   VARCHAR2,
13853
      userid             IN   NUMBER
13854
   )
13855
   IS
13856
   BEGIN
13857
      /*--------------- Business Rules Here -------------------*/
13858
      IF spatchidlist IS NULL
13859
      THEN
13860
         raise_application_error (-20000,
13861
                                  'Please select one or more Patches.'
13862
                                 );
13863
      END IF;
13864
 
13865
/*-------------------------------------------------------*/
13866
 
13867
      -- Update patch
13868
      UPDATE package_versions pv
13869
         SET pv.is_obsolete = isobsolete,
13870
             pv.obsolete_comments = obsoletecomments
13871
       WHERE pv.pv_id IN (
13872
                SELECT *
13873
                  FROM THE
13874
                          (SELECT CAST
13875
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
13876
                                     )
13877
                             FROM DUAL
13878
                          ));
13879
   /*
13880
   -- Update patch children
13881
   UPDATE PACKAGE_VERSIONS pv SET
13882
   pv.IS_OBSOLETE = IsObsolete,
13883
   pv.OBSOLETE_COMMENTS = ObsoleteComments
13884
   WHERE pv.PV_ID IN (
13885
                  SELECT DISTINCT dep.DPV_ID
13886
                    FROM PACKAGE_DEPENDENCIES dep
13887
                   WHERE dep.PV_ID = PatchId
13888
                  );
13889
 
13890
 
13891
   -- Update patch parent
13892
   UPDATE PACKAGE_VERSIONS pv SET
13893
   pv.IS_OBSOLETE = IsObsolete,
13894
   pv.OBSOLETE_COMMENTS = ObsoleteComments
13895
   WHERE pv.PV_ID IN (
13896
                  SELECT DISTINCT dep.PV_ID
13897
                    FROM PACKAGE_DEPENDENCIES dep
13898
                   WHERE dep.DPV_ID = PatchId
13899
                  );
13900
 
13901
      */
13902
 
13903
   /* LOG ACTION
13904
   IF IsObsolete IS NOT NULL THEN
13905
         Log_Action ( PatchId, 'patch_obsolete', UserId,
13906
                  'Obsolete patch. '|| ObsoleteComments );
13907
   ELSE
13908
      Log_Action ( PatchId, 'patch_obsolete', UserId,
13909
                  'Undo patch obsolete.' );
13910
   END IF;  */
13911
   END;
13912
 
13913
/*-------------------------------------------------------------------------------------------------------*/
13914
 
13915
PROCEDURE add_process (
13916
      nprocid         IN   processes.proc_id%TYPE,
13917
      shealthtag      IN   processes.proc_name%TYPE,
13918
      sprocdesc       IN   processes.proc_description%TYPE,
13919
      scmdinterface   IN   processes.run_as%TYPE,
13920
      spkgowner       IN   processes.pkg_owner%TYPE,
13921
      sisinterface    IN   processes.is_interface%TYPE,
13922
      npvid           IN   package_processes.pv_id%TYPE,
13923
      nuserid         IN   NUMBER
13924
   )
13925
   IS
13926
      pkgname   VARCHAR2 (100);
13927
/*Rupesh Release on 17/05/2006*/
13928
   BEGIN
13929
      INSERT INTO processes
13930
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
13931
                   is_interface
13932
                  )
13933
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
13934
                   sisinterface
13935
                  );
13936
 
13937
      pk_package.add_package_process (nprocid, npvid, nuserid);
13938
   END;
13939
 
13940
/*-------------------------------------------------------------------------------------------------------*/
13941
   PROCEDURE add_package_process (
13942
      nprocidlist   IN   VARCHAR2,
13943
      npvid         IN   package_processes.pv_id%TYPE,
13944
      nuserid       IN   NUMBER
13945
   )
13946
   IS
13947
      processname   VARCHAR2 (4000);
13948
 
13949
/*Rupesh Release on 17/05/2006*/
13950
      CURSOR proc_cur
13951
      IS
13952
         SELECT prc.proc_id
13953
           FROM processes prc
13954
          WHERE prc.proc_id IN (
13955
                   SELECT *
13956
                     FROM THE
13957
                             (SELECT CAST
13958
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
13959
                                        )
13960
                                FROM DUAL
13961
                             ));
13962
 
13963
      proc_rec      proc_cur%ROWTYPE;
13964
   BEGIN
13965
      OPEN proc_cur;
13966
 
13967
      FETCH proc_cur
13968
       INTO proc_rec;
13969
 
13970
      WHILE proc_cur%FOUND
13971
      LOOP
13972
         INSERT INTO package_processes
13973
                     (proc_id, pv_id
13974
                     )
13975
              VALUES (proc_rec.proc_id, npvid
13976
                     );
13977
 
13978
         SELECT prc.proc_name
13979
           INTO processname
13980
           FROM processes prc
13981
          WHERE prc.proc_id = proc_rec.proc_id;
13982
 
13983
         -- Log Action --
13984
         log_action (npvid,
13985
                     'process_add',
13986
                     nuserid,
13987
                     'Added process with health tag ' || processname
13988
                    );
13989
 
13990
         FETCH proc_cur
13991
          INTO proc_rec;
13992
      END LOOP;
13993
   END;
13994
 
13995
/*-------------------------------------------------------------------------------------------------------*/
13996
   PROCEDURE remove_process (
13997
      nprocid   IN   package_processes.proc_id%TYPE,
13998
      npvid     IN   package_processes.pv_id%TYPE,
13999
      nuserid   IN   NUMBER
14000
   )
14001
   IS
14002
      processname   VARCHAR2 (4000);
14003
/* Rupesh Release on 17/05/2006*/
14004
   BEGIN
14005
      SELECT prc.proc_name
14006
        INTO processname
14007
        FROM processes prc
14008
       WHERE prc.proc_id = nprocid;
14009
 
14010
      DELETE FROM package_processes
14011
            WHERE proc_id = nprocid AND pv_id = npvid;
14012
 
14013
      -- Log Action --
14014
      log_action (npvid,
14015
                  'process_remove',
14016
                  nuserid,
14017
                  'Removed process with health tag ' || processname
14018
                 );
14019
   END;
14020
/*-------------------------------------------------------------------------------------------------------*/
14021
  /* 
14022
  Author: Rupesh Solanki
14023
  Purpose: To move package versions from one release to another
14024
  Release: 4th September 2006 
14025
 
14026
  */
14027
  PROCEDURE move_package (
14028
   	  npvid  			  IN package_versions.pv_id%TYPE,
14029
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
14030
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
14031
	  nuserid			  IN NUMBER	
14032
  )	
14033
  IS	
14034
 
14035
  oldrtag_name VARCHAR2(4000);
14036
  newrtag_name VARCHAR2(4000);
14037
 
14038
 
14039
 
14040
  BEGIN
14041
 
14042
 
14043
  SELECT rtag_name into oldrtag_name
14044
  FROM RELEASE_TAGS
14045
  WHERE rtag_id = nrtagid;
14046
 
14047
  SELECT rtag_name into newrtag_name
14048
  FROM RELEASE_TAGS
14049
  WHERE rtag_id = nnewrtagid;
14050
 
14051
  /* Table Work In Progress*/
14052
  	   UPDATE WORK_IN_PROGRESS
14053
	   SET RTAG_ID = nnewrtagid
14054
	   WHERE RTAG_ID = nrtagid
14055
	   AND PV_ID = npvid;
14056
 
14057
  /* Table PLANNED*/	
14058
  	   UPDATE PLANNED
14059
	   SET RTAG_ID = nnewrtagid
14060
	   WHERE RTAG_ID = nrtagid
14061
	   AND PV_ID = npvid;   
14062
 
14063
      -- Log Action --
14064
      log_action (npvid,
14065
                  'move_package_version',
14066
                  nuserid,
14067
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
14068
                 );  	   	     
14069
 
14070
 
14071
  END;
14072
 
14073
/*-------------------------------------------------------------------------------------------------------*/
14074
PROCEDURE modify_product_state (
14075
   	  npvid IN package_versions.pv_id%TYPE,
14076
	  nstateid IN product_states.state_id%TYPE,
14077
	  nuserid IN NUMBER
14078
   ) IS
14079
 
14080
   sStateName VARCHAR(4000);
14081
 
14082
  /* 
14083
  Author: Rupesh Solanki
14084
  Purpose: To modify the product state from integration to test to deployment
14085
  Release: 25th January 2006 
14086
  */   
14087
 
14088
  BEGIN
14089
 
14090
  UPDATE PACKAGE_VERSIONS
14091
  SET PRODUCT_STATE = nstateid
14092
  WHERE PV_ID = npvid;
14093
 
14094
 
14095
  SELECT STATE INTO sStateName
14096
  FROM PRODUCT_STATES 
14097
  WHERE STATE_ID = nstateid;
14098
 
14099
  -- Log Action --
14100
  log_action (npvid,
14101
              'modify_product_state',
14102
               nuserid,
14103
               sStateName
14104
              );  
14105
 
14106
 
14107
  END;			  	   	     
14108
/*-------------------------------------------------------------------------------------------------------*/   
14109
END pk_package_Test;
14110
/
14111
 
14112
ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" 
14113
  COMPILE BODY 
14114
    PLSQL_OPTIMIZE_LEVEL=  2
14115
    PLSQL_CODE_TYPE=  INTERPRETED
14116
    PLSQL_DEBUG=  FALSE
14117
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:45'
14118
/
14119
 
14120
CREATE PACKAGE BODY "RELEASE_MANAGER"."RM_ISSUES" AS
14121
 
14122
-- Private Implementation -----------------------------------------------------
14123
 
14124
 
14125
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
14126
	AS
14127
 
14128
	BEGIN
14129
		-- start boundary case
14130
		IF ( XXstart < XX ) THEN
14131
			RETURN 1;
14132
 
14133
		ELSIF ( XXstart = XX ) THEN
14134
 
14135
			-- need to consider YY
14136
			IF ( YYstart < YY ) THEN
14137
				RETURN 1;
14138
 
14139
			ELSIF ( YYstart = YY ) THEN
14140
 
14141
					-- need to consider ZZ
14142
					IF ( ZZstart <= ZZ ) THEN
14143
						RETURN 1;
14144
 
14145
					ELSE
14146
						RETURN 0;
14147
					END IF;
14148
 
14149
			ELSE
14150
				RETURN 0;
14151
			END IF;
14152
		ELSE
14153
			RETURN 0;
14154
		END IF;
14155
	EXCEPTION
14156
		WHEN OTHERS THEN
14157
			RETURN -1;
14158
	END;
14159
 
14160
 
14161
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
14162
	AS
14163
 
14164
	BEGIN
14165
		-- end boundary case
14166
		IF ( XX < XXend ) THEN
14167
			RETURN 1;
14168
 
14169
		ELSIF ( XX = XXend ) THEN
14170
 
14171
			-- need to consider YY
14172
			IF ( YY < YYend ) THEN
14173
				RETURN 1;
14174
 
14175
			ELSIF ( YY = YYend ) THEN
14176
 
14177
					-- need to consider ZZ
14178
					IF ( ZZ <= ZZend ) THEN
14179
						RETURN 1;
14180
 
14181
					ELSE
14182
						RETURN 0;
14183
					END IF;
14184
			ELSE
14185
 
14186
				RETURN 0;
14187
			END IF;
14188
		ELSE
14189
			RETURN 0;
14190
		END IF;
14191
	EXCEPTION
14192
		WHEN OTHERS THEN
14193
			RETURN -1;
14194
	END;
14195
 
14196
	/*
14197
	-	version format:		XX.YY.ZZ.abc
14198
	*/
14199
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
14200
	AS
14201
		XXstart		NUMBER	:=	0;
14202
		XXend		NUMBER	:=	0;
14203
		XX			NUMBER	:=	0;
14204
		YYstart		NUMBER	:=	0;
14205
		YYend		NUMBER	:=	0;
14206
		YY			NUMBER	:=	0;
14207
		ZZstart		NUMBER	:=	0;
14208
		ZZend		NUMBER	:=	0;
14209
		ZZ			NUMBER	:=	0;
14210
		first_dot	NUMBER	:=	0;
14211
		second_dot	NUMBER	:=	0;
14212
		third_dot	NUMBER	:=	0;
14213
 
14214
		ProjExtstart	VARCHAR2(10);
14215
		ProjExtend		VARCHAR2(10);
14216
		ProjExt			VARCHAR2(10);
14217
 
14218
	BEGIN
14219
		-- strip the version number
14220
		first_dot :=  INSTR(version_start, '.', 1, 1);
14221
		second_dot :=  INSTR(version_start, '.', 1, 2);
14222
		third_dot :=  INSTR(version_start, '.', 1, 3);
14223
 
14224
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
14225
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
14226
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
14227
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
14228
 
14229
		first_dot :=  INSTR(version_end, '.', 1, 1);
14230
		second_dot :=  INSTR(version_end, '.', 1, 2);
14231
		third_dot :=  INSTR(version_end, '.', 1, 3);
14232
 
14233
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
14234
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
14235
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
14236
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
14237
 
14238
		first_dot :=  INSTR(version, '.', 1, 1);
14239
		second_dot :=  INSTR(version, '.', 1, 2);
14240
		third_dot :=  INSTR(version, '.', 1, 3);
14241
 
14242
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
14243
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
14244
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
14245
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
14246
 
14247
		-- only include versions if all project extensions are the same
14248
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
14249
 
14250
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
14251
				RETURN 1;
14252
			ELSE
14253
				RETURN 0;
14254
			END IF;
14255
		ELSE
14256
			RETURN 0;
14257
		END IF;
14258
 
14259
	EXCEPTION
14260
		WHEN OTHERS THEN
14261
			RETURN -1;
14262
	END;
14263
 
14264
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
14265
	AS
14266
	    pkg_id NUMBER;
14267
	BEGIN
14268
		SELECT
14269
			p.PKG_ID
14270
		INTO
14271
			pkg_id
14272
		FROM
14273
			PACKAGES p
14274
		WHERE
14275
			p.PKG_NAME = pkgName;
14276
 
14277
		RETURN pkg_id;
14278
	EXCEPTION
14279
	    WHEN OTHERS THEN
14280
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
14281
			RETURN -1;
14282
	END;
14283
 
14284
 
14285
-- Public Implementation ------------------------------------------------------
14286
 
14287
	/*
14288
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
14289
	--
14290
	-- INPUT PARAMETERS:
14291
	--
14292
	--		pkg_name  	-  	The name of the top level package to get issues for
14293
	--		version_start	-	The start version for the comparison
14294
	--		version_end	-	The end version for the comparison
14295
	*/
14296
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
14297
	AS
14298
		pkgId	NUMBER;
14299
	BEGIN
14300
		-- get pkg_id of the input package:
14301
		pkgId := GetPkgId( pkg_name );
14302
 
14303
		OPEN vCursor FOR
14304
		SELECT
14305
			  pv.PKG_ID,
14306
			  pv.PKG_VERSION,
14307
			  pv.PV_ID,
14308
			  i_pkg.ISS_ID,
14309
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
14310
			  pd.DPKG_ID,
14311
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
14312
			  pd.DPV_ID,
14313
			  i_dpkg.ISS_ID AS ISSUE_ID
14314
		FROM
14315
			 PACKAGE_VERSIONS pv
14316
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
14317
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
14318
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
14319
		WHERE
14320
   			 pv.PKG_ID = pkgId
14321
		AND
14322
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
14323
		AND
14324
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
14325
		ORDER BY
14326
			 pv.PKG_ID,
14327
			 pv.PV_ID,
14328
			 pd.DPKG_ID,
14329
			 pd.DPV_ID;
14330
	EXCEPTION
14331
		WHEN OTHERS THEN
14332
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
14333
	END;
14334
 
14335
 
14336
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
14337
 
14338
	/*
14339
	-- Proc: LoadIssuesTable
14340
	--
14341
	-- Populates Package_Issues table with details of issues from all dependent packages.
14342
	-- This will be for all package versions of the input pkg_name between the
14343
	-- version_start and version_end.
14344
	--
14345
	-- INPUT PARAMETERS:
14346
	--
14347
	--		pkg_name  	-  	The name of the top level package to get issues for
14348
	--		version_start	-	The start version for the comparison
14349
	--		version_end	-	The end version for the comparison
14350
	*/
14351
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
14352
	AS
14353
		pkgId	NUMBER;
14354
 
14355
		CURSOR pack_vers_cur IS
14356
			SELECT
14357
				pv.PV_ID,
14358
				pv.PKG_VERSION,
14359
				pv.PKG_ID,
14360
				p.PKG_NAME
14361
			FROM
14362
				PACKAGE_VERSIONS pv
14363
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
14364
			WHERE
14365
   				 pv.PKG_ID = pkgId
14366
			AND
14367
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
14368
 
14369
	BEGIN
14370
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
14371
 
14372
		-- get the pkg_id we are finding issues for
14373
		pkgId := GetPkgId( pkg_name );
14374
 
14375
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
14376
		FOR pack_ver_rec IN  pack_vers_cur
14377
		LOOP
14378
			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 );
14379
			COMMIT;
14380
		END LOOP;
14381
 
14382
		-- The output cursor - shows the individual versions of the top level package then were reported on
14383
		OPEN vCursor FOR
14384
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
14385
/*removed
14386
		SELECT
14387
			PKG_VERSION
14388
		FROM
14389
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
14390
*/
14391
 
14392
 
14393
	EXCEPTION
14394
		WHEN OTHERS THEN
14395
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
14396
	END;
14397
 
14398
 
14399
	/*
14400
	-- Proc: InsertIssuesForDepends
14401
	--
14402
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
14403
	--
14404
	-- INPUT PARAMETERS:
14405
	--
14406
	--		pvID  		-  	The package version id of the package to get issues for
14407
	--		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)
14408
	--		top_pkgName -  	The package name of the top level package
14409
	--		top_pvID  	-  	The package version id of the top level package
14410
	--		top_pkgVer  -  	The package version description of the top level package
14411
	*/
14412
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, 
14413
top_pkgVer IN VARCHAR2 )
14414
	AS
14415
		pkgId		NUMBER;
14416
		issCnt		NUMBER := 0;
14417
		pkgCheck	NUMBER := 0;
14418
		depCheck	NUMBER := 0;
14419
 
14420
		dpkgName	VARCHAR(50);
14421
		dpkgVersion	VARCHAR(50);
14422
 
14423
		CURSOR dep_packs_cur IS
14424
			SELECT
14425
				DPV_ID
14426
			FROM
14427
				PACKAGE_DEPENDENCIES
14428
			WHERE
14429
				PV_ID = pvID;
14430
 
14431
	BEGIN
14432
 
14433
		-- check to see if the package has been processed previously
14434
		SELECT
14435
			COUNT(*)
14436
		INTO
14437
			pkgCheck
14438
		FROM
14439
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
14440
		WHERE
14441
			DPV_ID = pvID;
14442
 
14443
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
14444
 
14445
		-- Package not already processed (no cyclic dependency) - process it
14446
		IF ( pkgCheck = 0 ) THEN
14447
 
14448
			-- check to see if this package version has any issues assigned to it
14449
			SELECT
14450
				COUNT(*)
14451
			INTO
14452
				issCnt
14453
			FROM
14454
				CQ_ISSUES i
14455
			WHERE
14456
				i.PV_ID = pvID;
14457
 
14458
			dbms_output.put_line('issCnt: ' || issCnt );
14459
 
14460
			-- Always enter a marker row into the table even if there are no issues for the package.
14461
			-- This allows us to pick up any cyclic dependencies.
14462
			IF ( issCnt > 0 ) THEN
14463
				-- get issues and insert into RM_PACKAGE_ISSUES
14464
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
14465
 
14466
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
14467
					SELECT DISTINCT
14468
						top_pkgID		AS PKG_ID,
14469
						top_pkgName		AS PKG_NAME,
14470
						top_pvID		AS PV_ID,
14471
						top_pkgVer		AS PKG_VERSION,
14472
						pv.PV_ID		AS DPV_ID,
14473
						p.PKG_NAME		AS DPKG_NAME,
14474
						pv.PKG_VERSION	AS DPKG_VERSION,
14475
						ci.ISS_DB,
14476
						ci.ISS_ID
14477
					FROM
14478
						PACKAGE_VERSIONS pv
14479
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
14480
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
14481
					WHERE
14482
						pv.PV_ID = pvID;
14483
 
14484
			ELSE
14485
				-- get the dpkg details - there will always be a row returned here
14486
				SELECT
14487
					p.PKG_NAME
14488
				INTO
14489
					dpkgName
14490
				FROM
14491
					PACKAGE_VERSIONS pv
14492
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
14493
				WHERE
14494
	   				 pv.PV_ID = pvID;
14495
 
14496
				SELECT
14497
					pv.PKG_VERSION
14498
				INTO
14499
					dpkgVersion
14500
				FROM
14501
					PACKAGE_VERSIONS pv
14502
				WHERE
14503
	   				 pv.PV_ID = pvID;
14504
 
14505
				-- enter a marker row
14506
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
14507
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
14508
				VALUES (
14509
					top_pkgID,
14510
					top_pkgName,
14511
					top_pvID,
14512
					top_pkgVer,
14513
					pvID,
14514
					dpkgName,
14515
					dpkgVersion,
14516
					NULL,
14517
					NULL );
14518
 
14519
			END IF;
14520
 
14521
			-- If this package version has dependencies then recurse
14522
			SELECT
14523
				COUNT(*)
14524
			INTO
14525
				depCheck
14526
			FROM
14527
				PACKAGE_DEPENDENCIES
14528
			WHERE
14529
				PV_ID = pvID;
14530
 
14531
			IF ( depCheck > 0 ) THEN
14532
				-- get dependencies and call this function recursively for each one
14533
				FOR dep_rec IN  dep_packs_cur
14534
				LOOP
14535
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
14536
				END LOOP;
14537
 
14538
			END IF;
14539
 
14540
		END IF;
14541
 
14542
	/*EXCEPTION
14543
		WHEN OTHERS THEN
14544
			no exception handling required
14545
	*/
14546
	END;
14547
 
14548
END Rm_Issues;
14549
/
14550
 
14551
ALTER PACKAGE "RELEASE_MANAGER"."RM_ISSUES" 
14552
  COMPILE BODY 
14553
    PLSQL_OPTIMIZE_LEVEL=  2
14554
    PLSQL_CODE_TYPE=  INTERPRETED
14555
    PLSQL_DEBUG=  FALSE
14556
 REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:46'
14557
/
14558
 
14559
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_BUILDAPI_TEST" IS
14560
 
14561
/*
14562
------------------------------
14563
||  Last Modified:  S.Vukovic
14564
||  Modified Date:  30/Mar/2005
14565
||  Body Version:   1.0
14566
------------------------------
14567
*/
14568
 
14569
 
14570
/*-------------------------------------------------------------------------------------------------------*/
14571
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
14572
								  sOsName IN VARCHAR2,
14573
								  sOrigFilePath IN VARCHAR2,
14574
								  sFileName IN VARCHAR2,
14575
								  sDestFilePath IN VARCHAR2,
14576
								  nByteSize IN NUMBER,
14577
								  sCRCcksum IN VARCHAR2 ) IS
14578
 
14579
	nOsId NUMBER;
14580
 
14581
BEGIN
14582
	/*--------------- Business Rules Here -------------------*/
14583
	-- OS Name Requirements --
14584
	IF (sOsName IS NULL) THEN
14585
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
14586
	END IF;
14587
 
14588
 
14589
	-- File Requirements --
14590
	IF (NOT sFileName IS NULL) THEN
14591
 
14592
		IF (nByteSize IS NULL) THEN
14593
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
14594
 
14595
		ELSIF (sCRCcksum IS NULL) THEN
14596
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
14597
 
14598
		END IF;
14599
 
14600
	END IF;
14601
 
14602
 
14603
	-- Folder Requirements --
14604
	-- No requirements for now.
14605
 
14606
	/*-------------------------------------------------------*/
14607
 
14608
	-- Get OsId
14609
	nOsId := Get_OsId ( sOsName );
14610
 
14611
 
14612
	-- Insert component entry
14613
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
14614
    VALUES (
14615
			  nPvId,
14616
			  nOsId,
14617
			  sOrigFilePath,
14618
			  sFileName,
14619
			  sDestFilePath,
14620
			  nByteSize,
14621
			  sCRCcksum
14622
			);
14623
 
14624
 
14625
	EXCEPTION
14626
    WHEN DUP_VAL_ON_INDEX
14627
	THEN
14628
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
14629
 
14630
END;
14631
/*-------------------------------------------------------------------------------------------------------*/
14632
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
14633
 
14634
	nOsId NUMBER;
14635
 
14636
BEGIN
14637
	/*--------------- Business Rules Here -------------------*/
14638
	/*-------------------------------------------------------*/
14639
 
14640
	-- Get OsId
14641
	nOsId := Get_OsId ( sOsName );
14642
 
14643
 
14644
	-- Delete component entry
14645
	DELETE
14646
	  FROM PRODUCT_COMPONENTS pc
14647
	 WHERE pc.PV_ID = nPvId
14648
	   AND pc.OS_ID = nOsId;
14649
 
14650
 
14651
END;
14652
/*-------------------------------------------------------------------------------------------------------*/
14653
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
14654
	Code NUMBER;
14655
 
14656
BEGIN
14657
 
14658
	-- Get Platform Code --
14659
	SELECT pf.CODE INTO Code
14660
	  FROM PLATFORMS pf
14661
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
14662
 
14663
 
14664
	RETURN Code;	   
14665
 
14666
	EXCEPTION
14667
    	WHEN NO_DATA_FOUND THEN
14668
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
14669
   	RAISE;
14670
END;
14671
/*-------------------------------------------------------------------------------------------------------*/
14672
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
14673
			  					 sWebServer IN VARCHAR2,
14674
								 sMailServer IN VARCHAR2,
14675
								 sMailSender IN VARCHAR2) IS
14676
 
14677
BEGIN
14678
 
14679
 
14680
	 UPDATE BUILD_SERVICE_CONFIG
14681
	 SET CONFIG = sDatabaseServer
14682
	 WHERE SERVICE = 'DATABASE SERVER'; 
14683
 
14684
	 UPDATE BUILD_SERVICE_CONFIG
14685
	 SET CONFIG = sWebServer
14686
	 WHERE SERVICE = 'WEB SERVER'; 
14687
 
14688
	 UPDATE BUILD_SERVICE_CONFIG
14689
	 SET CONFIG = sMailServer
14690
	 WHERE SERVICE = 'MAIL SERVER'; 
14691
 
14692
	 UPDATE BUILD_SERVICE_CONFIG
14693
	 SET CONFIG = sMailSender
14694
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
14695
 
14696
 
14697
 
14698
END;
14699
/*-------------------------------------------------------------------------------------------------------*/
14700
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
14701
 
14702
GBE_ID NUMBER;
14703
 
14704
BEGIN
14705
 
14706
	-- Get GBE_ID
14707
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
14708
 
14709
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
14710
	VALUES( GBE_ID, sGBEValue);
14711
 
14712
 
14713
END;
14714
/*-------------------------------------------------------------------------------------------------------*/
14715
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
14716
 
14717
BEGIN
14718
 
14719
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
14720
 
14721
END;
14722
/*-------------------------------------------------------------------------------------------------------*/
14723
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
14724
 
14725
BEGIN
14726
 
14727
	 UPDATE GBE_MACHTYPE
14728
	 SET GBE_VALUE = sGBEValue 
14729
	 WHERE GBE_ID = nGBE_ID;
14730
 
14731
 
14732
END;
14733
/*-------------------------------------------------------------------------------------------------------*/
14734
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
14735
 
14736
nRecordNumber NUMBER;
14737
nRconId NUMBER;
14738
BEGIN
14739
	-- Get RCON_ID
14740
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
14741
 
14742
        SELECT count(*) INTO nRecordNumber 
14743
        FROM RELEASE_CONFIG
14744
        WHERE RTAG_ID = nRtagId;
14745
 
14746
        IF nRecordNumber = 0 THEN
14747
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14748
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
14749
        ELSE
14750
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
14751
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
14752
        END IF;
14753
 
14754
 
14755
 
14756
END;
14757
/*-------------------------------------------------------------------------------------------------------*/        
14758
END PK_BUILDAPI_TEST;
14759
/
14760
 
14761
ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" 
14762
  COMPILE BODY 
14763
    PLSQL_OPTIMIZE_LEVEL=  2
14764
    PLSQL_CODE_TYPE=  INTERPRETED
14765
    PLSQL_DEBUG=  FALSE
14766
 REUSE SETTINGS TIMESTAMP '2007-07-04 14:13:56'
14767
/
14768
 
14769
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PROJECT" IS
14770
/*
14771
------------------------------
14772
||  Last Modified:  J.Tweddle
14773
||  Modified Date:  23/Aug/2007
14774
||  Body Version:   1.0
14775
------------------------------
14776
*/
14777
 
14778
    /*------------------------------------------------------------------------*/
14779
    PROCEDURE update_base_url ( 
14780
        nprojid   IN  projects.proj_id%TYPE,
14781
        sbaseurl  IN  VARCHAR2
14782
        ) IS
14783
    BEGIN
14784
 
14785
        UPDATE projects
14786
        SET base_url = sbaseurl
14787
        WHERE proj_id = nprojid;
14788
 
14789
    END update_base_url;
14790
    /*------------------------------------------------------------------------*/
14791
 
14792
END pk_project;
14793
/
14794
 
14795
ALTER PACKAGE "RELEASE_MANAGER"."PK_PROJECT" 
14796
  COMPILE BODY 
14797
    PLSQL_OPTIMIZE_LEVEL=  2
14798
    PLSQL_CODE_TYPE=  INTERPRETED
14799
    PLSQL_DEBUG=  FALSE
14800
 REUSE SETTINGS TIMESTAMP '2007-08-23 16:12:34'
14801
/
14802
 
14803
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RELEASE_TEST" IS
14804
 
14805
 
14806
/*
14807
------------------------------
14808
||  Last Modified:  S.Vukovic
14809
||  Modified Date:  12/Sep/2005
14810
||  Body Version:   3.0
14811
------------------------------
14812
*/
14813
 
14814
 
14815
/*-------------------------------------------------------------------------------------------------------*/
14816
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
14817
 
14818
RtagId NUMBER;
14819
ParentRtagId NUMBER;
14820
RecCount NUMBER := 0;
14821
 
14822
 
14823
BEGIN
14824
	/*--------------- Business Rules Here -------------------*/
14825
	-- Check for missing parameters
14826
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
14827
	THEN
14828
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
14829
 
14830
	END IF;
14831
 
14832
 
14833
	-- Check for duplicate Release Names
14834
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
14835
	  FROM RELEASE_TAGS rt
14836
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
14837
	   AND rt.PROJ_ID = nProjId;
14838
 
14839
	IF (RecCount > 0) THEN
14840
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
14841
	END IF;
14842
	/*-------------------------------------------------------*/
14843
 
14844
 
14845
	-- Get rtag_id
14846
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
14847
 
14848
 
14849
 
14850
	-- Get Parent RtagId
14851
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
14852
 
14853
 
14854
	-- Create new release
14855
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
14856
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
14857
							   PARENT_RTAG_ID, PROJ_ID )
14858
	VALUES ( RtagId, 
14859
			 sReleaseName, 
14860
			 sReleaseComments,
14861
			 ORA_SYSDATE,
14862
			 nUserId,
14863
			 'N',
14864
			 'N',
14865
			 0,
14866
			 ParentRtagId,
14867
			 nProjId );
14868
 
14869
	-- Update display Order
14870
	UPDATE_DISPLAY_ORDER ( nProjId );
14871
 
14872
	/* Log Project Action */
14873
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
14874
 
14875
 
14876
	-- Import Release Contents
14877
	IF (NOT nSourceRtagId IS NULL) THEN
14878
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
14879
 
14880
	END IF;
14881
 
14882
 
14883
 
14884
END;
14885
/*-------------------------------------------------------------------------------------------------------*/
14886
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
14887
 
14888
 
14889
BEGIN
14890
 
14891
 
14892
	/*--------------- Business Rules Here -------------------*/
14893
	/*-------------------------------------------------------*/
14894
 
14895
	UPDATE RELEASE_TAGS urt SET
14896
	urt.DISPLAY_ORDER = (
14897
						SELECT qry.REC_NUM
14898
						  FROM (	
14899
								SELECT rel.*, ROWNUM AS REC_NUM
14900
								  FROM (
14901
 
14902
								  		SELECT rt.RTAG_ID, 
14903
											   rt.DISPLAY_ORDER,
14904
										       DECODE( rt.PARENT_RTAG_ID, 
14905
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
14906
										  FROM RELEASE_TAGS rt
14907
										 WHERE rt.PROJ_ID = nProjId 
14908
 
14909
								  		) rel
14910
								START WITH rel.PARENT_RTAG_ID = 0
14911
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
14912
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
14913
								) qry
14914
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
14915
						)
14916
	WHERE urt.PROJ_ID = nProjId;
14917
 
14918
END;
14919
/*-------------------------------------------------------------------------------------------------------*/
14920
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
14921
 
14922
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
14923
	SeqNum NUMBER;
14924
 
14925
BEGIN
14926
 
14927
 
14928
	/*--------------- Business Rules Here -------------------*/
14929
	/*-------------------------------------------------------*/
14930
 
14931
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
14932
 
14933
	-- Set start sequence number
14934
	SeqNum := 1;
14935
 
14936
	FOR i IN 1..nIdCollector.COUNT
14937
	LOOP
14938
 
14939
		-- Update new display order
14940
		UPDATE RELEASE_TAGS rt SET
14941
			rt.DISPLAY_ORDER = SeqNum
14942
		 WHERE rt.PROJ_ID = nProjId
14943
		   AND rt.RTAG_ID = nIdCollector(i);
14944
 
14945
		SeqNum := SeqNum + 1;
14946
 
14947
	END LOOP;
14948
 
14949
END;
14950
/*-------------------------------------------------------------------------------------------------------*/
14951
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
14952
 
14953
RecCount NUMBER := 0;
14954
ProjId NUMBER;
14955
 
14956
BEGIN
14957
 
14958
 
14959
	/*--------------- Business Rules Here -------------------*/
14960
	-- Check for missing parameters
14961
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
14962
	THEN
14963
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
14964
 
14965
	END IF;
14966
 
14967
 
14968
	-- Check for duplicate Release Names
14969
	SELECT rt.PROJ_ID INTO ProjId
14970
	  FROM RELEASE_TAGS rt
14971
	 WHERE rt.RTAG_ID = nRtagId;
14972
 
14973
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
14974
	  FROM RELEASE_TAGS rt
14975
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
14976
	   AND rt.RTAG_ID != nRtagId
14977
	   AND rt.PROJ_ID = ProjId;
14978
 
14979
 
14980
	IF (RecCount > 0) THEN
14981
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
14982
	END IF;
14983
	/*-------------------------------------------------------*/
14984
 
14985
 
14986
 
14987
	-- Update release details
14988
	UPDATE RELEASE_TAGS rt SET
14989
	rt.RTAG_NAME = sReleaseName,
14990
	rt.DESCRIPTION = sReleaseComments,
14991
	rt.PARENT_RTAG_ID = nParentRtagId,
14992
	rt.ASSOC_MASS_REF = nMASSRtagId,
14993
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
14994
	WHERE rt.RTAG_ID = nRtagId; 
14995
 
14996
	-- Update display Order
14997
	UPDATE_DISPLAY_ORDER ( ProjId );
14998
 
14999
	/* Log Project Action */
15000
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
15001
 
15002
 
15003
 
15004
 
15005
END;
15006
/*-------------------------------------------------------------------------------------------------------*/
15007
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
15008
 
15009
	RecCount NUMBER := 0;
15010
	sReleaseId VARCHAR2(4000);
15011
	ProjId NUMBER;
15012
 
15013
BEGIN
15014
	/*--------------- Business Rules Here -------------------*/
15015
	IF (nRtagId IS NULL) 
15016
	THEN
15017
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
15018
	END IF;
15019
 
15020
 
15021
 
15022
	-- Check for any kids
15023
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
15024
	  FROM RELEASE_TAGS rt
15025
	 WHERE rt.PARENT_RTAG_ID = nRtagId
15026
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
15027
 
15028
	IF (RecCount > 0) THEN
15029
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
15030
	END IF; 
15031
	/*-------------------------------------------------------*/
15032
 
15033
	-- Clear the release contents
15034
	Clean_Release_Contents ( nRtagId, nUserId );
15035
 
15036
	/* Log Project Action */
15037
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
15038
	  FROM RELEASE_TAGS rt
15039
	 WHERE rt.RTAG_ID = nRtagId;
15040
 
15041
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
15042
 
15043
 
15044
	-- Remove Release
15045
	DELETE 
15046
	  FROM RELEASE_TAGS rt
15047
	 WHERE rt.RTAG_ID = nRtagId;
15048
 
15049
 
15050
 
15051
END;
15052
/*-------------------------------------------------------------------------------------------------------*/
15053
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
15054
 
15055
	sSourceLocation VARCHAR2(4000);
15056
	sTargetLocation VARCHAR2(4000);
15057
	ProjId NUMBER;
15058
	cReleaseMode CHAR(1);
15059
 
15060
 
15061
BEGIN
15062
	/*--------------- Business Rules Here -------------------*/
15063
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
15064
	THEN
15065
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
15066
	END IF;
15067
 
15068
	IF (nSourceRtagId = nTargetRtagId) THEN
15069
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
15070
	END IF;
15071
 
15072
 
15073
	-- Check if Target release is in OPEN mode
15074
	SELECT rt.OFFICIAL  INTO  cReleaseMode
15075
	  FROM RELEASE_TAGS rt
15076
	 WHERE rt.RTAG_ID = nTargetRtagId;
15077
 
15078
	IF (cReleaseMode != 'N') THEN
15079
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
15080
	END IF;	 
15081
 
15082
	/*-------------------------------------------------------*/
15083
 
15084
	-- Clean target contents
15085
	Clean_Release_Contents ( nTargetRtagId, nUserId );
15086
 
15087
 
15088
	-- Import Released Area Contents
15089
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, 
15090
PKG_STATE ) 
15091
	SELECT nTargetRtagId AS RTAG_ID, 
15092
		   rc.PV_ID, 
15093
		   rc.BASE_VIEW_ID, 
15094
		   rc.INSERT_STAMP, 
15095
		   rc.INSERTOR_ID, 
15096
		   rc.PKG_STATE
15097
	  FROM RELEASE_CONTENT rc
15098
	 WHERE rc.RTAG_ID = nSourceRtagId;
15099
 
15100
 
15101
	-- Import Ignore Warning states
15102
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
15103
	SELECT nTargetRtagId AS RTAG_ID,
15104
	       igw.PV_ID,
15105
	       igw.DPV_ID
15106
	  FROM IGNORE_WARNINGS igw
15107
	 WHERE igw.rtag_id = nSourceRtagId;
15108
 
15109
 
15110
	/* Log Project Action */
15111
	-- Get Source Location
15112
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
15113
	  FROM RELEASE_TAGS rt,
15114
	  	   PROJECTS pr
15115
	 WHERE rt.PROJ_ID = pr.PROJ_ID
15116
	   AND rt.RTAG_ID = nSourceRtagId;
15117
 
15118
	-- Get Target Location
15119
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
15120
	  FROM RELEASE_TAGS rt,
15121
	  	   PROJECTS pr
15122
	 WHERE rt.PROJ_ID = pr.PROJ_ID
15123
	   AND rt.RTAG_ID = nTargetRtagId;	   
15124
 
15125
	-- Get project id   
15126
	SELECT rt.PROJ_ID  INTO  ProjId
15127
	  FROM RELEASE_TAGS rt
15128
	 WHERE rt.RTAG_ID = nTargetRtagId;   
15129
 
15130
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
15131
 
15132
 
15133
END;
15134
/*-------------------------------------------------------------------------------------------------------*/
15135
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
15136
 
15137
	RecCount NUMBER;
15138
 
15139
BEGIN
15140
	/*--------------- Business Rules Here -------------------*/
15141
	IF (nRtagId IS NULL) 
15142
	THEN
15143
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
15144
	END IF;
15145
 
15146
 
15147
	-- Check if other release references this release
15148
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
15149
	  FROM RELEASE_LINKS rl
15150
	 WHERE rl.REF_RTAG_ID = nRtagId;
15151
 
15152
	IF (RecCount > 0) THEN
15153
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
15154
	END IF; 	
15155
	/*-------------------------------------------------------*/
15156
 
15157
	-- Delete Release links
15158
	DELETE 
15159
	  FROM RELEASE_LINKS rl
15160
	 WHERE rl.RTAG_ID = nRtagId;
15161
 
15162
	-- Delete ignore warning
15163
	DELETE 
15164
	  FROM IGNORE_WARNINGS iw
15165
	 WHERE iw.RTAG_ID = nRtagId;
15166
 
15167
 
15168
	-- Delete Build Order cached calculations	  
15169
	DELETE
15170
	  FROM BUILD_ORDER bo
15171
	 WHERE bo.RTAG_ID = nRtagId;
15172
 
15173
 
15174
	-- Delete Notification History
15175
	DELETE
15176
	  FROM NOTIFICATION_HISTORY nh
15177
	 WHERE nh.RTAG_ID = nRtagId;
15178
 
15179
 
15180
	-- Delete Released Area Contents
15181
	DELETE
15182
	  FROM RELEASE_CONTENT rc
15183
	 WHERE rc.RTAG_ID = nRtagId;
15184
 
15185
 
15186
	-- Delete Work In Progress Area Contents
15187
	DELETE
15188
	  FROM WORK_IN_PROGRESS wip
15189
	 WHERE wip.RTAG_ID = nRtagId;
15190
 
15191
 
15192
	-- Delete Pending Area Contents
15193
	DELETE 
15194
	  FROM PLANNED pl
15195
	 WHERE pl.RTAG_ID = nRtagId;
15196
 
15197
 
15198
END;
15199
/*-------------------------------------------------------------------------------------------------------*/
15200
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
15201
 
15202
	nSourceParentRtagId NUMBER;
15203
 
15204
BEGIN
15205
	/*--------------- Business Rules Here -------------------*/
15206
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
15207
	THEN
15208
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
15209
	END IF;
15210
	/*-------------------------------------------------------*/
15211
 
15212
 
15213
	IF ( nSourceRtagId IS NULL ) THEN
15214
		-- Create new on main branch
15215
		RETURN nRtagId;
15216
 
15217
	ELSE
15218
		-- Create from source rtag_id
15219
 
15220
		-- Find parent of Source RtagId
15221
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
15222
		  FROM RELEASE_TAGS rt
15223
		 WHERE rt.RTAG_ID = nSourceRtagId;
15224
 
15225
		IF (UPPER(cIsBranch) = 'Y') THEN
15226
			RETURN nSourceRtagId;
15227
		ELSE
15228
			IF (nSourceRtagId = nSourceParentRtagId) THEN
15229
				RETURN nRtagId;
15230
			ELSE
15231
				RETURN nSourceParentRtagId;
15232
			END IF;
15233
		END IF;	
15234
 
15235
 
15236
	END IF;
15237
 
15238
 
15239
END;
15240
/*-------------------------------------------------------------------------------------------------------*/
15241
 
15242
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
15243
-- 							 sNextVersion OUT VARCHAR2,
15244
-- 							 nNextLifeCycle OUT NUMBER,
15245
-- 							 nParentRtagId OUT NUMBER,
15246
-- 							 nProjId IN NUMBER ) IS
15247
-- 							
15248
-- SourceBranchCount NUMBER;
15249
-- ProjRootVersion VARCHAR2(4000);
15250
-- LastLifeCycle NUMBER;
15251
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
15252
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
15253
-- 
15254
-- SourceProjId NUMBER; 
15255
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
15256
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
15257
-- 
15258
-- BEGIN
15259
-- 	/*--------------- Business Rules Here -------------------*/
15260
-- 	/*-------------------------------------------------------*/
15261
-- 	
15262
-- 	   
15263
-- 	BEGIN
15264
-- 		-- Get Project root version
15265
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
15266
-- 		  FROM RELEASE_TAGS rt
15267
-- 		 WHERE rt.PROJ_ID = nProjId
15268
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
15269
-- 	   
15270
-- 		EXCEPTION
15271
-- 		WHEN NO_DATA_FOUND THEN
15272
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
15273
-- 	END;		   
15274
-- 	
15275
-- 	
15276
-- 	
15277
-- 	 
15278
-- 	BEGIN
15279
-- 		-- Get info for source rtagid
15280
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
15281
-- 		  FROM RELEASE_TAGS rt
15282
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
15283
-- 	   
15284
-- 		EXCEPTION
15285
-- 		WHEN NO_DATA_FOUND THEN
15286
-- 		SourceProjId := NULL;
15287
-- 		SourceVersion := NULL;
15288
-- 		SourceLifeCycle := NULL;
15289
-- 	END;	  
15290
-- 	
15291
-- 	
15292
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
15293
-- 	
15294
-- 		/* Blank Release Required  OR  Release imported from other project */
15295
-- 		
15296
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
15297
-- 			/* No Releases found in the project, hence calculate next version available.  */
15298
-- 			
15299
-- 			-- Set parent rtag
15300
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
15301
-- 			
15302
-- 			
15303
-- 			BEGIN
15304
-- 				-- Get Next Available Global Root Version 
15305
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
15306
-- 				  FROM RELEASE_TAGS rt
15307
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
15308
-- 				
15309
-- 				-- Set Next Rtag Version
15310
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
15311
-- 				
15312
-- 				-- Restart Lifecycle
15313
-- 				nNextLifeCycle := 0;
15314
-- 				
15315
-- 				
15316
-- 				EXCEPTION
15317
-- 				WHEN NO_DATA_FOUND THEN
15318
-- 				-- Release Manager has no releases, hence start from 1
15319
-- 				sNextVersion := '1';
15320
-- 				nNextLifeCycle := 0;
15321
-- 				
15322
-- 			END;
15323
-- 			
15324
-- 			
15325
-- 					
15326
-- 		ELSE
15327
-- 			/* Releases found in this project. */
15328
-- 							   
15329
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
15330
-- 			  FROM (
15331
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
15332
-- 					  FROM RELEASE_TAGS rt
15333
-- 					 WHERE rt.PROJ_ID = nProjId
15334
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
15335
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
15336
-- 			  		) qry
15337
-- 			 WHERE ROWNUM = 1;		
15338
-- 
15339
-- 			
15340
-- 			-- Set same Rtag Version
15341
-- 			sNextVersion := ProjRootVersion;
15342
-- 			
15343
-- 			-- Increase Lifecycle
15344
-- 			nNextLifeCycle := LastLifeCycle + 1;
15345
-- 		
15346
-- 		END IF;
15347
-- 				
15348
-- 	
15349
-- 		
15350
-- 	ELSE
15351
-- 		/* Create Release From other release within this project */
15352
-- 		
15353
-- 		-- Set parent id
15354
-- 		nParentRtagId := nSourceRtagId;
15355
-- 		
15356
-- 		
15357
-- 		-- Get number of source branches
15358
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
15359
-- 		  FROM RELEASE_TAGS rt
15360
-- 		 WHERE rt.PROJ_ID = nProjId
15361
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
15362
-- 		   
15363
-- 		   
15364
-- 		IF SourceBranchCount = 0 THEN
15365
-- 			/* Release is Head (i.e. Tip on its branch ) */
15366
-- 			
15367
-- 			-- Set Next Rtag Version
15368
-- 			sNextVersion := SourceVersion;
15369
-- 			
15370
-- 			-- Increase Lifecycle
15371
-- 			nNextLifeCycle := SourceLifeCycle + 1;
15372
-- 			
15373
-- 			
15374
-- 		ELSIF SourceBranchCount = 1 THEN
15375
-- 			/* Release IS NOT Head, but can be branched */
15376
-- 			
15377
-- 			-- Set Next Rtag Version
15378
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
15379
-- 			
15380
-- 			-- Reset Lifecycle to 1
15381
-- 			nNextLifeCycle := 1;
15382
-- 			
15383
-- 			
15384
-- 		ELSE	
15385
-- 			-- Limit of two branches is reached
15386
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
15387
-- 			
15388
-- 		END IF;	
15389
-- 			
15390
-- 			
15391
-- 		
15392
-- 		
15393
-- 		
15394
-- 	
15395
-- 	END IF;
15396
-- 	
15397
-- 		
15398
-- 
15399
END;
15400
 
15401
/*-------------------------------------------------------------------------------------------------------*/
15402
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
15403
 
15404
	IsBaseView CHAR(1);
15405
 
15406
BEGIN
15407
 
15408
	-- Check if the view is BASE VIEW
15409
	SELECT vi.BASE_VIEW INTO IsBaseView
15410
	  FROM VIEWS vi
15411
	 WHERE vi.VIEW_ID = ViewId;
15412
 
15413
	IF (IsBaseView = 'Y') THEN 
15414
		-- Get Base view content
15415
		OPEN RecordSet FOR
15416
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
15417
			   pv.pv_id, 
15418
			   pkg.pkg_name, 
15419
			   pv.pkg_version, 
15420
			   pv.dlocked, 
15421
			   pv.pv_description,
15422
			   pv.BUILD_TYPE
15423
		  FROM release_content rel,
15424
		       packages pkg,
15425
		       package_versions pv
15426
		 WHERE pv.pkg_id = pkg.pkg_id
15427
		   AND rel.pv_id = pv.pv_id
15428
		   AND rel.BASE_VIEW_ID = ViewId
15429
		   AND rel.RTAG_ID = RtagId
15430
		 ORDER BY UPPER(pkg.PKG_NAME);
15431
 
15432
	ELSE	 
15433
 
15434
	 	-- Get non base view content
15435
		OPEN RecordSet FOR
15436
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
15437
			   pv.pv_id, 
15438
			   pkg.pkg_name, 
15439
			   pv.pkg_version, 
15440
			   pv.dlocked, 
15441
			   pv.pv_description,
15442
			   pv.BUILD_TYPE
15443
		  FROM release_content rel,
15444
		       packages pkg,
15445
		       package_versions pv,
15446
			   VIEW_DEF vd
15447
		 WHERE pv.pkg_id = pkg.pkg_id
15448
		   AND rel.pv_id = pv.pv_id
15449
		   AND vd.VIEW_ID = ViewId
15450
		   AND vd.PKG_ID = pv.PKG_ID
15451
		   AND rel.RTAG_ID = RtagId
15452
		 ORDER BY UPPER(pkg.PKG_NAME);		 
15453
 
15454
	END IF;	 	 
15455
 
15456
 
15457
 
15458
 
15459
END;
15460
/*-------------------------------------------------------------------------------------------------------*/
15461
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
15462
 
15463
	ReleaseLocation VARCHAR2(4000);
15464
	sPkgVersion VARCHAR2(4000);
15465
	nPkgId NUMBER;
15466
	sVExt VARCHAR2(4000);
15467
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
15468
 
15469
	-- Find package for replacement
15470
	CURSOR curReplacePkg IS
15471
    SELECT pv.PV_ID
15472
	  FROM RELEASE_CONTENT rc,
15473
	  	   PACKAGE_VERSIONS pv
15474
	 WHERE rc.PV_ID = pv.PV_ID
15475
	   AND rc.RTAG_ID = RtagId
15476
	   AND pv.PKG_ID = nPkgId
15477
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
15478
    recReplacePkg curReplacePkg%ROWTYPE;
15479
 
15480
BEGIN
15481
 
15482
	-- Get is_patch, pkg_id and v_ext
15483
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
15484
	  FROM PACKAGE_VERSIONS pv
15485
	 WHERE pv.PV_ID = newPvId;
15486
 
15487
 
15488
	-- Never put patch in relesed area
15489
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
15490
 
15491
		-- Try to get a package to be replaced with this new one.
15492
		-- Use unique constraint of PKG_ID and V_EXT
15493
		OPEN curReplacePkg;
15494
	    FETCH curReplacePkg INTO recReplacePkg;
15495
 
15496
	    IF curReplacePkg%FOUND THEN
15497
			-- Replace package
15498
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
15499
 
15500
		ELSE
15501
			-- Add new package
15502
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
15503
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
15504
 
15505
 
15506
		    /* LOG ACTION */
15507
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
15508
			  FROM PROJECTS proj,
15509
			  	   RELEASE_TAGS rt
15510
			 WHERE rt.PROJ_ID = proj.PROJ_ID
15511
			   AND rt.RTAG_ID = RtagId;
15512
 
15513
			SELECT pv.PKG_VERSION INTO sPkgVersion
15514
			  FROM PACKAGE_VERSIONS pv
15515
			 WHERE pv.PV_ID = newPvId;
15516
 
15517
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
15518
 
15519
 
15520
		END IF;
15521
 
15522
		CLOSE curReplacePkg;
15523
 
15524
	END IF;
15525
 
15526
END;
15527
/*-------------------------------------------------------------------------------------------------------*/
15528
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
15529
 
15530
	ReleaseLocation VARCHAR2(4000);
15531
	sPkgVersion VARCHAR2(4000);
15532
 
15533
BEGIN
15534
 
15535
	-- Replace Package
15536
    UPDATE RELEASE_CONTENT
15537
       SET pv_id = newPvId,
15538
           insert_stamp = Ora_Sysdate,
15539
           insertor_id = UserId
15540
     WHERE rtag_id = RtagId
15541
       AND pv_id = oldPvId;
15542
 
15543
 
15544
    /* LOG ACTION */
15545
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
15546
	  FROM PROJECTS proj,
15547
	  	   RELEASE_TAGS rt
15548
	 WHERE rt.PROJ_ID = proj.PROJ_ID
15549
	   AND rt.RTAG_ID = RtagId;
15550
 
15551
	SELECT pv.PKG_VERSION INTO sPkgVersion
15552
	  FROM PACKAGE_VERSIONS pv
15553
	 WHERE pv.PV_ID = newPvId;
15554
 
15555
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
15556
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
15557
 
15558
END;
15559
/*-------------------------------------------------------------------------------------------------------*/
15560
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
15561
	ReleaseLocation VARCHAR2(4000);
15562
 
15563
BEGIN
15564
 
15565
 
15566
	-- Delete old package
15567
	DELETE
15568
	  FROM RELEASE_CONTENT rc
15569
	 WHERE rc.PV_ID = PvId
15570
	   AND rc.RTAG_ID = RtagId;
15571
 
15572
 
15573
	/* LOG ACTION */
15574
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
15575
	  FROM PROJECTS proj,
15576
	       RELEASE_TAGS rt
15577
	 WHERE rt.PROJ_ID = proj.PROJ_ID
15578
	   AND rt.RTAG_ID = RtagId;
15579
 
15580
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
15581
 
15582
 
15583
END;
15584
/*-------------------------------------------------------------------------------------------------------*/
15585
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
15586
	ReleaseLocation VARCHAR2(4000);
15587
 
15588
	CURSOR curMatchingPackage IS
15589
    SELECT mpv.PV_ID
15590
	  FROM RELEASE_CONTENT rc,
15591
	  	   PACKAGE_VERSIONS mpv,
15592
		   PACKAGE_VERSIONS pv
15593
	 WHERE rc.PV_ID = mpv.PV_ID
15594
	   AND rc.RTAG_ID = RtagId
15595
	   AND pv.PV_ID = PvId
15596
	   AND pv.PKG_ID = mpv.PKG_ID
15597
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
15598
    recMatchingPackage curMatchingPackage%ROWTYPE;
15599
 
15600
BEGIN
15601
 
15602
	OPEN curMatchingPackage;
15603
    FETCH curMatchingPackage INTO recMatchingPackage;
15604
 
15605
    IF curMatchingPackage%FOUND THEN
15606
		-- Delete old package
15607
		DELETE
15608
		  FROM RELEASE_CONTENT rc
15609
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
15610
		   AND rc.RTAG_ID = RtagId;
15611
 
15612
 
15613
		/* LOG ACTION */
15614
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
15615
		  FROM PROJECTS proj,
15616
		  	   RELEASE_TAGS rt
15617
		 WHERE rt.PROJ_ID = proj.PROJ_ID
15618
		   AND rt.RTAG_ID = RtagId;
15619
 
15620
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
15621
 
15622
	END IF;
15623
 
15624
 
15625
	CLOSE curMatchingPackage;
15626
 
15627
 
15628
 
15629
 
15630
END;
15631
/*-------------------------------------------------------------------------------------------------------*/
15632
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
15633
 
15634
	ReturnValue NUMBER;
15635
 
15636
BEGIN
15637
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
15638
	  FROM RELEASE_CONTENT rc
15639
	 WHERE rc.RTAG_ID = RtagId
15640
	   AND rc.PV_ID = PvId;
15641
 
15642
	RETURN ReturnValue;
15643
END;
15644
/*-------------------------------------------------------------------------------------------------------*/
15645
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
15646
 
15647
BEGIN
15648
	-- Reset Ignore warnings up-the-tree
15649
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
15650
 
15651
	-- Refresh Package states
15652
	TOUCH_RELEASE ( RtagId );
15653
 
15654
END;
15655
/*-------------------------------------------------------------------------------------------------------*/
15656
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
15657
	CURSOR curReleases IS
15658
    SELECT rc.RTAG_ID
15659
	  FROM RELEASE_CONTENT rc
15660
	 WHERE rc.PV_ID = PvId;
15661
    recReleases curReleases%ROWTYPE;
15662
 
15663
BEGIN
15664
 
15665
	OPEN curReleases;
15666
    FETCH curReleases INTO recReleases;
15667
 
15668
	WHILE curReleases%FOUND
15669
	LOOP
15670
 
15671
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
15672
 
15673
		FETCH curReleases INTO recReleases;
15674
	END LOOP;
15675
 
15676
	CLOSE curReleases;	
15677
 
15678
END;
15679
/*-------------------------------------------------------------------------------------------------------*/
15680
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
15681
 
15682
BEGIN
15683
 
15684
	UPDATE RELEASE_CONTENT rc SET
15685
	rc.BASE_VIEW_ID = NewViewId
15686
	WHERE rc.PV_ID = PvId
15687
	  AND rc.RTAG_ID = RtagId;
15688
 
15689
END;
15690
/*-------------------------------------------------------------------------------------------------------*/
15691
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
15692
 
15693
	RowCount NUMBER;
15694
 
15695
 
15696
	CURSOR curPackageClash IS
15697
	SELECT pkg.PKG_NAME,
15698
		   er.*
15699
	  FROM (
15700
 
15701
	  		/* Get existing referenced packages */
15702
			SELECT pv.PKG_ID,
15703
			       pv.V_EXT
15704
			  FROM RELEASE_LINKS rl,
15705
			  	   RELEASE_CONTENT rc,
15706
 
15707
PACKAGE_VERSIONS pv
15708
			 WHERE rl.RTAG_ID = nRtagId
15709
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
15710
			   AND rc.PV_ID = pv.PV_ID
15711
 
15712
	  	    ) er,
15713
			(
15714
 
15715
			/* Get current reference packages */
15716
			SELECT pv.PKG_ID,
15717
			       pv.V_EXT
15718
			  FROM RELEASE_CONTENT rc,
15719
			  	   PACKAGE_VERSIONS pv
15720
			 WHERE rc.RTAG_ID = nRefRtagId
15721
			   AND rc.PV_ID = pv.PV_ID    
15722
 
15723
			) cr,
15724
			PACKAGES PKG
15725
	 WHERE er.PKG_ID = cr.PKG_ID
15726
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
15727
	   AND er.PKG_ID = pkg.PKG_ID;
15728
 
15729
	recPackageClash curPackageClash%ROWTYPE;	   
15730
 
15731
BEGIN
15732
	/*--------------- Business Rules Here -------------------*/
15733
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
15734
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
15735
	END IF;
15736
 
15737
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
15738
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
15739
	END IF;
15740
	/*-------------------------------------------------------*/
15741
	ProblemString := NULL;
15742
 
15743
 
15744
	-- Check if release already has references
15745
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
15746
	  FROM RELEASE_LINKS rl
15747
	 WHERE rl.RTAG_ID = nRtagId;	
15748
 
15749
 
15750
	IF RowCount > 0 THEN
15751
		-- Found existing references
15752
 
15753
		-- Make sure there is no package clashes
15754
		OPEN curPackageClash;
15755
	    FETCH curPackageClash INTO recPackageClash;
15756
 
15757
		IF curPackageClash%FOUND THEN
15758
 
15759
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
15760
 
15761
			WHILE curPackageClash%FOUND
15762
			LOOP
15763
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
15764
 
15765
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
15766
 
15767
				FETCH curPackageClash INTO recPackageClash;
15768
			END LOOP;
15769
 
15770
		END IF;
15771
 
15772
		CLOSE curPackageClash;
15773
 
15774
 
15775
	ELSE
15776
		-- No references found, hence reference a release
15777
 
15778
 
15779
		-- Remove exising package from this release to be referenced
15780
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
15781
 
15782
 
15783
		-- Add new linked packages to release
15784
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
15785
		SELECT nRtagId,
15786
			   rc.PV_ID,
15787
			   rc.BASE_VIEW_ID, 
15788
			   rc.INSERT_STAMP, 
15789
			   rc.INSERTOR_ID, 
15790
			   rc.PKG_STATE
15791
		  FROM RELEASE_CONTENT rc
15792
		 WHERE rc.RTAG_ID = nRefRtagId;
15793
 
15794
 
15795
 
15796
		-- Copy ignore warnings for referenced packages
15797
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
15798
		SELECT nRtagId, 
15799
			   iw.PV_ID, 
15800
			   iw.DPV_ID, 
15801
			   iw.IS_PATCH_IGNORE
15802
		  FROM IGNORE_WARNINGS iw,
15803
		  	   RELEASE_CONTENT rc
15804
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
15805
		   AND iw.PV_ID = rc.PV_ID
15806
		   AND rc.RTAG_ID = nRefRtagId;	 
15807
 
15808
 
15809
 
15810
		-- Reference release 
15811
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
15812
		VALUES ( nRtagId, nRefRtagId );		 
15813
 
15814
 
15815
		-- Refresh Package states
15816
		TOUCH_RELEASE ( nRtagId );
15817
 
15818
	END IF;	 
15819
 
15820
 
15821
END;
15822
/*-------------------------------------------------------------------------------------------------------*/
15823
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
15824
 
15825
 
15826
BEGIN
15827
	/*--------------- Business Rules Here -------------------*/
15828
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
15829
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
15830
	END IF;
15831
 
15832
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
15833
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
15834
	END IF;
15835
 
15836
	/*-------------------------------------------------------*/
15837
 
15838
 
15839
	-- Remove ignore warnings for those packages who use referenced packages
15840
	DELETE FROM IGNORE_WARNINGS iw
15841
	 WHERE iw.RTAG_ID = nRtagId
15842
	   AND iw.DPV_ID IN (
15843
	   						SELECT dep.DPV_ID
15844
							  FROM (
15845
 
15846
									/* Get referenced packages */
15847
									SELECT pv.PKG_ID,
15848
									       pv.V_EXT
15849
									  FROM RELEASE_CONTENT rc,
15850
									  	   PACKAGE_VERSIONS pv
15851
									 WHERE rc.RTAG_ID = nRefRtagId
15852
									   AND rc.PV_ID = pv.PV_ID    
15853
 
15854
									) cr,
15855
									(
15856
 
15857
									/* Get all dependencies for current release */
15858
									SELECT DISTINCT 
15859
										   pv.PKG_ID,
15860
										   pv.V_EXT,
15861
										   dep.DPV_ID
15862
									  FROM RELEASE_CONTENT rc,
15863
										   PACKAGE_DEPENDENCIES dep,
15864
										   PACKAGE_VERSIONS pv
15865
									 WHERE rc.RTAG_ID = nRtagId
15866
									   AND rc.PV_ID = dep.PV_ID		
15867
									   AND dep.PV_ID = pv.PV_ID	   
15868
 
15869
									) dep
15870
							 WHERE dep.PKG_ID = cr.PKG_ID
15871
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
15872
	   					);  
15873
 
15874
 
15875
 
15876
 
15877
	-- Remove ignore warnings for those package which are going to be replaced with the reference
15878
	DELETE FROM IGNORE_WARNINGS iw
15879
	 WHERE iw.RTAG_ID = nRtagId
15880
	   AND iw.PV_ID IN (
15881
						SELECT pv.PV_ID
15882
						  FROM (
15883
 
15884
								/* Get referenced packages */
15885
								SELECT pv.PKG_ID,
15886
								       pv.V_EXT
15887
								  FROM RELEASE_CONTENT rc,
15888
								  	   PACKAGE_VERSIONS pv
15889
								 WHERE rc.RTAG_ID = nRefRtagId
15890
								   AND rc.PV_ID = pv.PV_ID    
15891
 
15892
								) cr,
15893
								RELEASE_CONTENT rc,
15894
								PACKAGE_VERSIONS pv
15895
						 WHERE pv.PKG_ID = cr.PKG_ID
15896
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
15897
						   AND rc.RTAG_ID = nRtagId
15898
						   AND rc.PV_ID = pv.PV_ID
15899
						);			
15900
 
15901
 
15902
 
15903
 
15904
 
15905
	-- Remove matching packages from release
15906
	DELETE FROM RELEASE_CONTENT rc
15907
	 WHERE rc.RTAG_ID = nRtagId
15908
	   AND rc.PV_ID IN (
15909
						SELECT pv.PV_ID
15910
						  FROM (
15911
 
15912
								/* Get referenced packages */
15913
								SELECT pv.PKG_ID,
15914
								       pv.V_EXT
15915
								  FROM RELEASE_CONTENT rc,
15916
								  	   PACKAGE_VERSIONS pv
15917
								 WHERE rc.RTAG_ID = nRefRtagId
15918
								   AND rc.PV_ID = pv.PV_ID    
15919
 
15920
								) cr,
15921
								RELEASE_CONTENT rc,
15922
								PACKAGE_VERSIONS pv
15923
						 WHERE pv.PKG_ID = cr.PKG_ID
15924
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
15925
						   AND rc.RTAG_ID = nRtagId
15926
						   AND rc.PV_ID = pv.PV_ID
15927
						);	
15928
 
15929
 
15930
 
15931
 
15932
 
15933
	-- Remove Reference release 
15934
	DELETE 
15935
	  FROM RELEASE_LINKS rl
15936
	 WHERE rl.RTAG_ID = nRtagId
15937
	   AND rl.REF_RTAG_ID = nRefRtagId;
15938
 
15939
 
15940
	-- Refresh Package states
15941
	TOUCH_RELEASE ( nRtagId );
15942
 
15943
 
15944
END;
15945
/*-------------------------------------------------------------------------------------------------------*/
15946
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
15947
 
15948
	cReleaseMode CHAR(1);
15949
	cPvMode CHAR(1);
15950
 
15951
BEGIN
15952
 
15953
	-- Get Release Mode
15954
	SELECT rt.OFFICIAL INTO cReleaseMode
15955
	  FROM RELEASE_TAGS rt
15956
	 WHERE rt.RTAG_ID = RtagId;
15957
 
15958
 
15959
	-- Get Package Mode
15960
	SELECT pv.DLOCKED INTO cPvMode
15961
	  FROM PACKAGE_VERSIONS pv
15962
	 WHERE pv.PV_ID = PvId;	 
15963
 
15964
	-- Only check if package is locked 
15965
	IF (cPvMode = 'Y') THEN
15966
 
15967
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
15968
		THEN
15969
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
15970
 
15971
		END IF;
15972
 
15973
	END IF;	
15974
 
15975
 
15976
END;
15977
/*-------------------------------------------------------------------------------------------------------*/
15978
END PK_RELEASE_TEST;
15979
/
15980
 
15981
ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" 
15982
  COMPILE BODY 
15983
    PLSQL_OPTIMIZE_LEVEL=  2
15984
    PLSQL_CODE_TYPE=  INTERPRETED
15985
    PLSQL_DEBUG=  FALSE
15986
 REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:16'
15987
/
15988
 
15989
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RMAPI" 
15990
IS
15991
/*
15992
------------------------------
15993
||  Last Modified:  Jeremy Tweddle
15994
||  Modified Date:  08/Feb/2008
15995
||  Body Version:   3.3
15996
------------------------------
15997
*/
15998
 
15999
   /*-------------------------------------------------------------------------------------------------------*/
16000
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
16001
      RETURN typecur
16002
   IS
16003
      npvid     NUMBER  := 0;
16004
      RECORDS   typecur;
16005
   BEGIN
16006
      BEGIN
16007
         -- Get PV_ID --
16008
         SELECT pv.pv_id
16009
           INTO npvid
16010
           FROM PACKAGES pkg, package_versions pv
16011
          WHERE pv.pkg_id = pkg.pkg_id
16012
            AND pkg.pkg_name = pkgname
16013
            AND pv.pkg_version = pkgversion;
16014
      EXCEPTION
16015
         WHEN NO_DATA_FOUND
16016
         THEN
16017
            raise_application_error (-20000, 'Package Not Found!');
16018
            --WHEN OTHERS THEN
16019
                  -- Consider logging the error and then re-raise
16020
            RAISE;
16021
      END;
16022
 
16023
      -- Finally get package dependencies --
16024
      OPEN RECORDS FOR
16025
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
16026
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
16027
          WHERE dep.pv_id = npvid
16028
            AND dpv.pkg_id = dpkg.pkg_id
16029
            AND dpv.pv_id = dep.dpv_id;
16030
 
16031
      RETURN RECORDS;
16032
   END;
16033
 
16034
/*-------------------------------------------------------------------------------------------------------*/
16035
   FUNCTION wip_iteration_package (
16036
      projname        VARCHAR2,
16037
      iterationname   VARCHAR2,
16038
      pkgname         VARCHAR2
16039
   )
16040
      RETURN typecur
16041
   IS
16042
      nrtagid   NUMBER  := 0;
16043
      RECORDS   typecur;
16044
   BEGIN
16045
      BEGIN
16046
         -- Get latest rtag_id --
16047
         SELECT rt.rtag_id
16048
           INTO nrtagid
16049
           FROM projects proj, release_tags rt
16050
          WHERE rt.proj_id = proj.proj_id
16051
            AND UPPER (proj.proj_name) = UPPER (projname)
16052
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
16053
 
16054
         IF (nrtagid IS NULL)
16055
         THEN
16056
            raise_application_error (-20000,
16057
                                     'Work In Progress is Not Found!');
16058
         END IF;
16059
      EXCEPTION
16060
         WHEN NO_DATA_FOUND
16061
         THEN
16062
            raise_application_error (-20000,
16063
                                     'Work In Progress is Not Found!');
16064
            RAISE;
16065
      END;
16066
 
16067
      -- Finally get package dependencies --
16068
      OPEN RECORDS FOR
16069
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
16070
                pv.src_path
16071
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
16072
          WHERE pv.pkg_id = pkg.pkg_id
16073
            AND wip.pv_id = pv.pv_id
16074
            AND wip.rtag_id = nrtagid
16075
            AND pkg.pkg_name = pkgname;
16076
 
16077
      RETURN RECORDS;
16078
   END;
16079
 
16080
/*-------------------------------------------------------------------------------------------------------*/
16081
   FUNCTION auto_make_release (
16082
      rtagid                   IN   NUMBER,
16083
      pkgname                  IN   VARCHAR2,
16084
      vext                     IN   VARCHAR2,
16085
      newpkgversion            IN   VARCHAR2,
16086
      label                    IN   VARCHAR2,
16087
      dependenciesimportlist   IN   VARCHAR2,
16088
      isrippled                IN   NUMBER,
16089
      username                 IN   VARCHAR2
16090
   )
16091
      RETURN NUMBER
16092
   IS
16093
      pkgid                           NUMBER;
16094
      pvid                            NUMBER                        := 0;
16095
      userid                          NUMBER;
16096
      dlocked                         VARCHAR2 (20)                 := NULL;
16097
      clonefrompvid                   NUMBER;
16098
      ssv_mm                          package_versions.v_mm%TYPE;
16099
      ssv_nmm                         package_versions.v_nmm%TYPE;
16100
      ssv_ext                         package_versions.v_ext%TYPE;
16101
      return_package_not_found        NUMBER                        := -1;
16102
      return_package_already_exists   NUMBER                        := -2;
16103
      return_not_approved             NUMBER                        := -3;
16104
   BEGIN
16105
      /*--------------- Business Rules Here -------------------*/
16106
      IF (rtagid IS NULL)
16107
      THEN
16108
         raise_application_error (-20000, 'RtagId must be supplied.');
16109
      END IF;
16110
 
16111
      IF (pkgname IS NULL)
16112
      THEN
16113
         raise_application_error (-20000, 'PkgName must be supplied.');
16114
      END IF;
16115
 
16116
      IF (newpkgversion IS NULL)
16117
      THEN
16118
         raise_application_error (-20000, 'PkgVersion must be supplied.');
16119
      END IF;
16120
 
16121
      IF (label IS NULL)
16122
      THEN
16123
         raise_application_error (-20000, 'Label must be supplied.');
16124
      END IF;
16125
 
16126
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
16127
      THEN
16128
         raise_application_error
16129
            (-20000,
16130
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
16131
            );
16132
      END IF;
16133
 
16134
      IF (username IS NULL)
16135
      THEN
16136
         raise_application_error (-20000, 'UserName must be supplied.');
16137
      END IF;
16138
 
16139
      -- Get user_id
16140
      BEGIN
16141
         SELECT usr.user_id
16142
           INTO userid
16143
           FROM users usr
16144
          WHERE UPPER (usr.user_name) = UPPER (username)
16145
            AND usr.is_disabled IS NULL;
16146
      EXCEPTION
16147
         WHEN NO_DATA_FOUND
16148
         THEN
16149
            raise_application_error (-20000,
16150
                                        'UserName '
16151
                                     || username
16152
                                     || ' is not valid or disabled.'
16153
                                    );
16154
      END;
16155
 
16156
/*-------------------------------------------------------*/
16157
 
16158
      -- Create package if necessary
16159
      IF isrippled = 1
16160
      THEN
16161
         /* Ripple Build */
16162
         BEGIN
16163
            -- Make sure that package does not exist
16164
            SELECT pv.pv_id
16165
              INTO pvid
16166
              FROM package_versions pv, PACKAGES pkg
16167
             WHERE pv.pkg_id = pkg.pkg_id
16168
               AND pkg.pkg_name = pkgname
16169
               AND pv.pkg_version = newpkgversion;
16170
         EXCEPTION
16171
            WHEN NO_DATA_FOUND
16172
            THEN
16173
               pvid := 0;
16174
         END;
16175
 
16176
         IF (pvid = 0)
16177
         THEN
16178
            -- Split current version in parts
16179
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
16180
 
16181
            BEGIN
16182
               -- Find package to be replaced with thie ripple package
16183
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
16184
               THEN
16185
                  SELECT pv.pv_id
16186
                    INTO clonefrompvid
16187
                    FROM PACKAGES pkg, package_versions pv,
16188
                         release_content rc
16189
                   WHERE rc.pv_id = pv.pv_id
16190
                     AND pv.pkg_id = pkg.pkg_id
16191
                     AND rc.rtag_id = rtagid
16192
                     AND pkg.pkg_name = pkgname
16193
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
16194
               ELSE
16195
                  SELECT pv.pv_id
16196
                    INTO clonefrompvid
16197
                    FROM PACKAGES pkg, package_versions pv,
16198
                         release_content rc
16199
                   WHERE rc.pv_id = pv.pv_id
16200
                     AND pv.pkg_id = pkg.pkg_id
16201
                     AND rc.rtag_id = rtagid
16202
                     AND pkg.pkg_name = pkgname
16203
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
16204
               END IF;
16205
            EXCEPTION
16206
               WHEN NO_DATA_FOUND
16207
               THEN
16208
                  raise_application_error
16209
                                        (-20000,
16210
                                            'Cannot get CloneFromPvId. VExt='
16211
                                         || vext
16212
                                         || ', RtagId='
16213
                                         || rtagid
16214
                                         || ', PkgName='
16215
                                         || pkgname
16216
                                         || ', SSV_EXT='
16217
                                         || ssv_ext
16218
                                        );
16219
            END;
16220
 
16221
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
16222
            THEN
16223
 
16224
-- Create package
16225
               seed_package_names_versions (pkgname,
16226
                                            newpkgversion,
16227
                                            userid,
16228
                                            pvid,
16229
                                            clonefrompvid
16230
                                           );
16231
            ELSE
16232
               -- Create package
16233
               seed_package_names_versions2 (pkgname,
16234
                                             newpkgversion,
16235
                                             userid,
16236
                                             pvid,
16237
                                             clonefrompvid
16238
                                            );
16239
            END IF;
16240
 
16241
            -- Update Package reason for release
16242
            UPDATE package_versions pv
16243
               SET pv.comments = 'Rippled Build.',
16244
                   pv.build_type = 'Y'
16245
             WHERE pv.pv_id = pvid;
16246
         ELSE
16247
            -- Package already exists, hence cannot be used for ripple build
16248
            RETURN return_package_already_exists;
16249
         END IF;
16250
      ELSE
16251
         /* Auto build from Pending area */
16252
 
16253
         -- Find package in pending area
16254
         BEGIN
16255
            SELECT pv.pv_id, pv.dlocked
16256
              INTO pvid, dlocked
16257
              FROM planned pl, package_versions pv, PACKAGES pkg
16258
             WHERE pl.pv_id = pv.pv_id
16259
               AND pv.pkg_id = pkg.pkg_id
16260
               AND pl.rtag_id = rtagid
16261
               AND pkg.pkg_name = pkgname
16262
               AND pv.dlocked = 'A'
16263
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
16264
         EXCEPTION
16265
            WHEN NO_DATA_FOUND
16266
            THEN
16267
               pvid := 0;
16268
         END;
16269
 
16270
         IF (pvid = 0)
16271
         THEN
16272
            -- Package does not exist in pending area, hence report it
16273
            RETURN return_package_not_found;
16274
         ELSIF (dlocked != 'A')
16275
         THEN
16276
            -- Package is not approved for autobuild
16277
            RETURN return_not_approved;
16278
         END IF;
16279
      END IF;
16280
 
16281
      BEGIN
16282
         -- Import Dependencies
16283
         import_dependencies (pvid, dependenciesimportlist, userid);
16284
      END;
16285
 
16286
      BEGIN
16287
         -- Split current version in parts
16288
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
16289
 
16290
         -- Update Package Details
16291
         UPDATE package_versions pv
16292
            SET pv.pkg_version = newpkgversion,
16293
                pv.v_ext = ssv_ext,
16294
                pv.v_mm = ssv_mm,
16295
                pv.v_nmm = ssv_nmm,
16296
                pv.pkg_label = label
16297
          WHERE pv.pv_id = pvid;
16298
      EXCEPTION
16299
         WHEN DUP_VAL_ON_INDEX
16300
         THEN
16301
            -- Package already exists, hence cannot be used for ripple build
16302
            RETURN return_package_already_exists;
16303
      END;
16304
 
16305
      -- Update the is_autobuildable
16306
      UPDATE package_versions
16307
         SET is_autobuildable = 'Y'
16308
       WHERE pv_id = pvid;
16309
 
16310
      -- Now release package
16311
      pk_environment.auto_make_release (pvid,
16312
                                        rtagid,
16313
                                        userid,
16314
                                        vext,
16315
                                        ssv_ext,
16316
                                        clonefrompvid
16317
                                       );
16318
 
16319
      --Now clean the PLANNED_VERSIONS table
16320
      SELECT pkg_id
16321
        INTO pkgid
16322
        FROM PACKAGES
16323
       WHERE pkg_name = pkgname;
16324
 
16325
      DELETE FROM planned_versions
16326
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
16327
 
16328
      RETURN pvid;
16329
   END;
16330
 
16331
/*-------------------------------------------------------------------------------------------------------*/
16332
   PROCEDURE import_dependencies (
16333
      pvid                     IN   NUMBER,
16334
      dependenciesimportlist   IN   VARCHAR2,
16335
      userid                   IN   NUMBER
16336
   )
16337
   IS
16338
/*
16339
|| DependenciesImportList Format:
16340
|| "pkgA","1.0.0";"pkgB","2.0.0";
16341
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
16342
*/
16343
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
16344
         INDEX BY VARCHAR2 (4000);
16345
 
16346
      seperator         VARCHAR2 (2)           := '||';
16347
      pkgname           VARCHAR2 (4000);
16348
      pkgversion        VARCHAR2 (4000);
16349
      buildtype         VARCHAR2 (50);
16350
      pkgid             NUMBER;
16351
      vext              VARCHAR2 (4000);
16352
      dpvid             NUMBER;
16353
      slist             VARCHAR2 (4000);
16354
      cbuildtypes       tdictionary;
16355
      dependencyrow     NUMBER;
16356
      sdependency       VARCHAR2 (4000);
16357
      first_pos         VARCHAR2 (4000);
16358
      second_pos        VARCHAR2 (4000);
16359
      third_pos         VARCHAR2 (4000);
16360
      forth_pos         VARCHAR2 (4000);
16361
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
16362
 
16363
      CURSOR curbuildtype
16364
      IS
16365
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
16366
                dep.build_type
16367
           FROM package_dependencies dep, package_versions dpv
16368
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
16369
 
16370
      recbuildtype      curbuildtype%ROWTYPE;
16371
   BEGIN
16372
      slist := dependenciesimportlist;
16373
 
16374
      -- Preformat String
16375
      IF NOT slist IS NULL
16376
      THEN
16377
         slist := REPLACE (slist, ' ');                      -- Remove spaces
16378
         slist := REPLACE (slist, UTL_TCP.crlf);
16379
         -- Remove new line and carriage-return characters
16380
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
16381
      END IF;
16382
 
16383
      -- Get Current Dependencies
16384
      OPEN curbuildtype;
16385
 
16386
      FETCH curbuildtype
16387
       INTO recbuildtype;
16388
 
16389
      WHILE curbuildtype%FOUND
16390
      LOOP
16391
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
16392
 
16393
         FETCH curbuildtype
16394
          INTO recbuildtype;
16395
      END LOOP;
16396
 
16397
      CLOSE curbuildtype;
16398
 
16399
      -- Separate dependencies with ; separator
16400
      citemcollection := in_list_varchar2 (slist, ';');
16401
 
16402
      BEGIN
16403
         -- Remove old dependencies
16404
         DELETE FROM package_dependencies dep
16405
               WHERE dep.pv_id = pvid;
16406
 
16407
         -- Loop through dependencies
16408
         FOR dependencyrow IN 1 .. citemcollection.COUNT
16409
         LOOP
16410
            -- Extract pkg_name and pkg_version
16411
            sdependency := citemcollection (dependencyrow);
16412
            first_pos := INSTR (sdependency, '"', 1, 1);
16413
            second_pos := INSTR (sdependency, '"', 1, 2);
16414
            third_pos := INSTR (sdependency, '"', 1, 3);
16415
            forth_pos := INSTR (sdependency, '"', 1, 4);
16416
            pkgname :=
16417
               SUBSTR (sdependency,
16418
                       (first_pos + 1),
16419
                       (second_pos - first_pos - 1)
16420
                      );
16421
            pkgversion :=
16422
               SUBSTR (sdependency,
16423
                       (third_pos + 1),
16424
                       (forth_pos - third_pos - 1)
16425
                      );
16426
 
16427
            -- Dependency must exits to be linked against
16428
            BEGIN
16429
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
16430
                 INTO dpvid, pkgid, vext
16431
                 FROM package_versions pv, PACKAGES pkg
16432
                WHERE pv.pkg_id = pkg.pkg_id
16433
                  AND pkg.pkg_name = pkgname
16434
                  AND pv.pkg_version = pkgversion;
16435
            EXCEPTION
16436
               WHEN NO_DATA_FOUND
16437
               THEN
16438
                  raise_application_error
16439
                                  (-20000,
16440
                                      'Dependency ['
16441
                                   || pkgname
16442
                                   || ' '
16443
                                   || pkgversion
16444
                                   || '] does not exist yet and cannot be used!'
16445
                                  );
16446
            END;
16447
 
16448
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
16449
            BEGIN
16450
               buildtype := cbuildtypes (pkgid || seperator || vext);
16451
 
16452
               IF buildtype IS NULL
16453
               THEN
16454
                  -- Set build type to LinkPackageArchive by default
16455
                  buildtype := 'L';
16456
               END IF;
16457
            EXCEPTION
16458
               WHEN NO_DATA_FOUND
16459
               THEN
16460
                  buildtype := 'L';
16461
            END;
16462
 
16463
            -- Insert Dependencies
16464
 
16465
update_package_dependency (pvid,
16466
                                       pkgname,
16467
                                       pkgversion,
16468
                                       buildtype,
16469
                                       userid,
16470
 
16471
                                      );
16472
         END LOOP;
16473
      END;
16474
   END;
16475
 
16476
/*-------------------------------------------------------------------------------------------------------*/
16477
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
16478
      RETURN VARCHAR2
16479
   IS
16480
      pkgversion   VARCHAR2 (4000);
16481
   BEGIN
16482
      BEGIN
16483
         SELECT pv.pkg_version
16484
           INTO pkgversion
16485
           FROM PACKAGES pkg, release_content rc, package_versions pv
16486
          WHERE pv.pv_id = rc.pv_id
16487
            AND pkg.pkg_id = pv.pkg_id
16488
            AND pkg.pkg_name = pkgname
16489
            AND rc.rtag_id = rtagid;
16490
 
16491
         RETURN pkgversion;
16492
      END;
16493
   END;
16494
 
16495
/*-------------------------------------------------------------------------------------------------------*/
16496
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
16497
      RETURN VARCHAR2
16498
   IS
16499
      pkgversion   VARCHAR2 (4000);
16500
   BEGIN
16501
      BEGIN
16502
         SELECT pv.pkg_version
16503
           INTO pkgversion
16504
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
16505
          WHERE pv.pv_id = wip.pv_id
16506
            AND pkg.pkg_id = pv.pkg_id
16507
            AND pkg.pkg_name = pkgname
16508
            AND wip.rtag_id = rtagid;
16509
 
16510
         IF pkgversion IS NULL
16511
         THEN
16512
            SELECT pv.pkg_version
16513
              INTO pkgversion
16514
              FROM PACKAGES pkg, planned pl, package_versions pv
16515
             WHERE pv.pv_id = pl.pv_id
16516
               AND pkg.pkg_id = pv.pkg_id
16517
               AND pkg.pkg_name = pkgname
16518
               AND pl.rtag_id = rtagid;
16519
         END IF;
16520
 
16521
         RETURN pkgversion;
16522
      END;
16523
   END;
16524
 
16525
/*-------------------------------------------------------------------------------------------------------*/
16526
   PROCEDURE update_dash_board (rtagid IN NUMBER)
16527
   IS
16528
      projid       NUMBER;
16529
      projiddb     NUMBER;
16530
      total        NUMBER;
16531
      auto_total   NUMBER;
16532
      rtagiddb     NUMBER;
16533
   BEGIN
16534
      SELECT COUNT (*)
16535
        INTO total
16536
        FROM release_content rc, package_versions pv
16537
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
16538
 
16539
      SELECT COUNT (*)
16540
        INTO auto_total
16541
        FROM release_content rc, package_versions pv
16542
       WHERE pv.pv_id = rc.pv_id
16543
         AND pv.is_autobuildable = 'Y'
16544
         AND rc.rtag_id = rtagid;
16545
 
16546
      BEGIN
16547
         SELECT rtag_id
16548
           INTO rtagiddb
16549
           FROM dash_board
16550
          WHERE rtag_id = rtagid;
16551
 
16552
         SELECT proj_id
16553
           INTO projiddb
16554
           FROM dash_board
16555
          WHERE rtag_id = rtagid;
16556
      EXCEPTION
16557
         WHEN NO_DATA_FOUND
16558
         THEN
16559
            rtagiddb := '';
16560
      END;
16561
 
16562
      IF rtagiddb IS NULL
16563
      THEN
16564
         SELECT proj_id
16565
           INTO projid
16566
           FROM release_tags
16567
          WHERE rtag_id = rtagid;
16568
 
16569
         INSERT INTO dash_board
16570
                     (proj_id, rtag_id, last_build_time, automated_packages,
16571
                      total_packages
16572
                     )
16573
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
16574
                      total
16575
                     );
16576
      ELSE
16577
         UPDATE dash_board
16578
            SET last_build_time = ora_sysdatetime,
16579
                automated_packages = auto_total,
16580
                total_packages = total
16581
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
16582
      END IF;
16583
   END;
16584
 
16585
/*-------------------------------------------------------------------------------------------------------*/
16586
   FUNCTION exclude_from_build (
16587
      pvid          IN   NUMBER,
16588
      spkgversion   IN   VARCHAR2,
16589
      rtagid        IN   NUMBER,
16590
      username      IN   VARCHAR2
16591
   )
16592
      RETURN NUMBER
16593
   IS
16594
      userid              NUMBER;
16595
      outerrcode          NUMBER;
16596
      pkgid               NUMBER;
16597
 
16598
      CURSOR dnr_duplicate_cur
16599
      IS
16600
         SELECT *
16601
           FROM do_not_ripple
16602
          WHERE pv_id = pvid AND rtag_id = rtagid;
16603
 
16604
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
16605
   BEGIN
16606
      outerrcode := -1;       -- Set default return error code to ERROR state
16607
 
16608
      /*--------------- Business Rules Here -------------------*/
16609
      IF (rtagid IS NULL)
16610
      THEN
16611
         RETURN outerrcode;
16612
--         raise_application_error (-20000, 'RtagId must be supplied.');
16613
      END IF;
16614
 
16615
      IF (pvid IS NULL)
16616
      THEN
16617
         RETURN outerrcode;
16618
--         raise_application_error (-20000, 'PvId must be supplied.');
16619
      END IF;
16620
 
16621
      IF (username IS NULL)
16622
      THEN
16623
         RETURN outerrcode;
16624
--         raise_application_error (-20000, 'UserName must be supplied.');
16625
      END IF;
16626
 
16627
      -- Get user_id
16628
      BEGIN
16629
         SELECT usr.user_id
16630
           INTO userid
16631
           FROM users usr
16632
          WHERE UPPER (usr.user_name) = UPPER (username)
16633
            AND usr.is_disabled IS NULL;
16634
      EXCEPTION
16635
         WHEN NO_DATA_FOUND
16636
         THEN
16637
            RETURN outerrcode;
16638
--            raise_application_error (-20000,
16639
--                                        'UserName '
16640
--                                     || username
16641
--                                     || ' is not valid or disabled.'
16642
--                                    );
16643
      END;
16644
 
16645
      OPEN dnr_duplicate_cur;
16646
 
16647
      FETCH dnr_duplicate_cur
16648
       INTO dnr_duplicate_rec;
16649
 
16650
      IF dnr_duplicate_cur%FOUND
16651
      THEN
16652
         outerrcode := 0;
16653
      END IF;
16654
 
16655
      IF dnr_duplicate_cur%NOTFOUND
16656
      THEN
16657
         /* No duplicate recordset */
16658
         unripple_package (pvid, rtagid, userid);
16659
         outerrcode := 0;                            -- Set return to SUCCESS
16660
      END IF;
16661
 
16662
      CLOSE dnr_duplicate_cur;
16663
 
16664
      SELECT pkg_id
16665
        INTO pkgid
16666
        FROM package_versions
16667
       WHERE pv_id = pvid;
16668
 
16669
      DELETE FROM planned_versions
16670
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
16671
 
16672
      RETURN outerrcode;
16673
   END;
16674
 
16675
/*-------------------------------------------------------------------------------------------------------*/
16676
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
16677
   IS
16678
   BEGIN
16679
      INSERT INTO abt_action_log
16680
                  (rcon_id, action_datetime, action
16681
                  )
16682
           VALUES (rconid, ora_sysdatetime, action
16683
                  );
16684
   END;
16685
 
16686
/*-------------------------------------------------------------------------------------------------------*/
16687
   FUNCTION insert_package_metrics (
16688
      rtagid                   IN   NUMBER,
16689
      pkgname                  IN   VARCHAR2,
16690
      vext                     IN   VARCHAR2,
16691
      metricstring             IN   VARCHAR2
16692
   )
16693
      RETURN NUMBER
16694
   IS
16695
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
16696
      pvid                     NUMBER                 := 0;
16697
      rownumber                NUMBER;
16698
      rowcontent               VARCHAR2(4000);
16699
      metricname               VARCHAR2(1000);
16700
      metricvalue              VARCHAR2(4000);
16701
      return_insert_error      NUMBER                 := -1;
16702
      return_insert_success    NUMBER                 := 0;
16703
 
16704
      /* Metrics */
16705
      branches                 NUMBER;
16706
      branchlist               VARCHAR2(4000);
16707
      codefiles                NUMBER;
16708
      ignoredfiles             NUMBER;
16709
      directories              NUMBER;
16710
      directorydepth           NUMBER;
16711
      totalfiles               NUMBER;
16712
      makefiles                NUMBER;
16713
      blanklines               NUMBER;
16714
      codelines                NUMBER;
16715
      commentlines             NUMBER;
16716
 
16717
   BEGIN
16718
      /*--------------- Business Rules Here -------------------*/
16719
      IF (rtagid IS NULL)
16720
      THEN
16721
         RETURN return_insert_error;
16722
      END IF;
16723
 
16724
      IF (pkgname IS NULL)
16725
      THEN
16726
         RETURN return_insert_error;
16727
      END IF;
16728
 
16729
      IF (metricstring IS NULL)
16730
      THEN
16731
         RETURN return_insert_error;
16732
      END IF;
16733
 
16734
      BEGIN
16735
         SELECT pv.pv_id
16736
           INTO pvid
16737
           FROM package_versions pv, packages pkg, release_content rc
16738
          WHERE 
16739
pv.pkg_id = pkg.pkg_id
16740
            AND rc.rtag_id = rtagid
16741
            AND pv.pv_id = rc.pv_id
16742
            AND pkg.pkg_name = pkgname
16743
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
16744
      EXCEPTION
16745
           WHEN NO_DATA_FOUND
16746
           THEN
16747
                pvid := 0;
16748
      END;
16749
 
16750
      citemcollection := in_list_varchar2 (metricstring, ';');
16751
 
16752
      FOR rownumber IN 1 .. citemcollection.COUNT
16753
      LOOP
16754
         rowcontent := citemcollection(rownumber);
16755
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
16756
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
16757
 
16758
         IF    metricname = 'ccbranch.count' THEN branches := metricvalue;
16759
         ELSIF metricname = 'ccbranch.list' THEN branchlist := metricvalue;
16760
         ELSIF metricname = 'code.files' THEN codefiles := metricvalue;
16761
         ELSIF metricname = 'code.ignored' THEN ignoredfiles := metricvalue;
16762
         ELSIF metricname = 'count.dir' THEN directories := metricvalue;
16763
         ELSIF metricname = 'count.dirdepth' THEN directorydepth := metricvalue;
16764
         ELSIF metricname = 'count.file' THEN totalfiles := metricvalue;
16765
         ELSIF metricname = 'count.makefile' THEN makefiles := metricvalue;
16766
         ELSIF metricname = 'lines.blank' THEN blanklines := metricvalue;
16767
         ELSIF metricname = 'lines.code' THEN codelines := metricvalue;
16768
         ELSIF metricname = 'lines.comment' THEN commentlines := metricvalue;
16769
         END IF;
16770
      END LOOP;
16771
 
16772
      IF (pvid > 0)
16773
      THEN
16774
         -- Delete any existing entries for this package version to makes sure our data is untainted
16775
         DELETE FROM package_metrics pm
16776
         WHERE pm.pv_id = pvid;
16777
 
16778
         -- Insert the new data into the metrics table
16779
         INSERT INTO package_metrics
16780
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
16781
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
16782
                     )
16783
              VALUES (pvid, branches, branchlist, codefiles, ignoredfiles, directories, directorydepth,
16784
                      totalfiles, makefiles, blanklines, codelines, commentlines, ora_sysdatetime
16785
                     );
16786
 
16787
         -- Now update the Release_Metrics Table
16788
         update_release_metrics(rtagid);
16789
 
16790
         RETURN return_insert_success;
16791
      ELSE
16792
         RETURN return_insert_error;
16793
      END IF;
16794
   END;
16795
 
16796
/*-------------------------------------------------------------------------------------------------------*/
16797
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
16798
   IS
16799
      totalpackages       NUMBER;
16800
      autobuilt           NUMBER;
16801
      linesofcode         NUMBER;
16802
      unittested          NUMBER;
16803
      autotested          NUMBER;
16804
      numOfbranches       NUMBER;
16805
      lastbuildtime       DATE;
16806
   BEGIN
16807
      IF (rtagid > 0)
16808
      THEN
16809
         -- Get the total number of packages in this release and the number of
16810
         -- those that are autobuilt
16811
         SELECT COUNT (DISTINCT rc.pv_id),
16812
                COUNT (DISTINCT autobuilt_qry.pv_id)
16813
           INTO totalpackages, autobuilt
16814
           FROM release_content rc,
16815
                package_versions pv,
16816
                (
16817
                 SELECT rc.pv_id
16818
                   FROM release_content rc,
16819
                        package_versions pv
16820
                  WHERE pv.is_autobuildable = 'Y'
16821
                    AND pv.pv_id = rc.pv_id
16822
                    AND rc.rtag_id = rtagid
16823
                ) autobuilt_qry
16824
          WHERE pv.pv_id = rc.pv_id
16825
            AND rc.rtag_id = rtagid
16826
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
16827
 
16828
         -- Get the build time of the last package built in this release and the
16829
         -- total number of lines of code
16830
         SELECT MAX(pm.created_stamp),
16831
                SUM(pm.code_lines)
16832
           INTO lastbuildtime, linesofcode
16833
           FROM package_metrics pm, release_content rc
16834
          WHERE pm.pv_id = rc.pv_id
16835
            AND rc.rtag_id = rtagid;
16836
 
16837
         -- Get the number of packages with unit tests in this release and the
16838
         -- number of those that are autotested
16839
         SELECT COUNT(DISTINCT ut.pv_id),
16840
                COUNT(DISTINCT autotest_qry.pv_id)
16841
           INTO unittested, autotested
16842
           FROM unit_tests ut,
16843
                release_content rc,
16844
                (
16845
                 SELECT ut.pv_id
16846
                   FROM unit_tests ut, release_content rc
16847
                  WHERE ut.pv_id = rc.pv_id
16848
                    AND rc.rtag_id = rtagid
16849
                    AND ut.test_types_fk = 7
16850
                ) autotest_qry
16851
          WHERE ut.pv_id = rc.pv_id
16852
            AND rc.rtag_id = rtagid
16853
            AND autotest_qry.pv_id (+) = ut.pv_id;
16854
 
16855
         -- Count the number of unique branches in the packages in this release.
16856
--         SELECT COUNT(DISTINCT branch) INTO numOfbranches
16857
--           FROM (
16858
--                SELECT pv_id,
16859
--                       regexp_substr(str, '[^,]+', 1, level) branch,
16860
--                       level lv,
16861
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
16862
--                  FROM (
16863
--                       SELECT pm.pv_id,
16864
--                              ','||pm.branch_list str
16865
--                         FROM package_metrics pm,
16866
--                              release_content rc
16867
--                        WHERE pm.pv_id = rc.pv_id
16868
--                          AND rc.rtag_id = rtagid
16869
--                       )
16870
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
16871
--                )
16872
--          WHERE lv != lg;
16873
 
16874
         UPDATE release_metrics rm
16875
            SET rm.total_packages = totalpackages,
16876
                rm.autobuilt = autobuilt,
16877
                rm.lines_of_code = linesofcode,
16878
                rm.unit_tested = unittested,
16879
                rm.autotested = autotested,
16880
--                rm.branches = numOfbranches,
16881
                rm.last_build_time = lastbuildtime
16882
          WHERE rtag_id = rtagid;
16883
 
16884
         IF (SQL%ROWCOUNT = 0)
16885
         THEN
16886
            INSERT INTO release_metrics
16887
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
16888
                         autotested, last_build_time
16889
                        )
16890
                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
16891
                         autotested, lastbuildtime
16892
                        );
16893
         END IF;
16894
--         IF (SQL%ROWCOUNT = 0)
16895
--         THEN
16896
--            INSERT INTO release_metrics
16897
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
16898
--                         autotested, branches, last_build_time
16899
--                        )
16900
--                 VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested,
16901
--                         autotested, numOfbranches, lastbuildtime
16902
--                        );
16903
--         END IF;
16904
--      ELSE
16905
--         raise_application_error (-20000, 'RtagId must be supplied.');
16906
      END IF;
16907
   END;
16908
/*-------------------------------------------------------------------------------------------------------*/
16909
END pk_rmapi; 
16910
/
16911
 
16912
ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI" 
16913
  COMPILE BODY 
16914
    PLSQL_OPTIMIZE_LEVEL=  2
16915
    PLSQL_CODE_TYPE=  INTERPRETED
16916
    PLSQL_DEBUG=  TRUE
16917
 REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:11'
16918
/
16919
 
16920
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RMAPI_TEST" 
16921
IS
16922
/*
16923
------------------------------
16924
||  Last Modified:  Rupesh Solanki
16925
||  Modified Date:  11 September 2006
16926
||  Body Version:   2.0
16927
------------------------------
16928
*/
16929
 
16930
   /*-------------------------------------------------------------------------------------------------------*/
16931
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
16932
      RETURN typecur
16933
   IS
16934
      npvid     NUMBER  := 0;
16935
      RECORDS   typecur;
16936
   BEGIN
16937
      BEGIN
16938
         -- Get PV_ID --
16939
         SELECT pv.pv_id
16940
           INTO npvid
16941
           FROM PACKAGES pkg, package_versions pv
16942
          WHERE pv.pkg_id = pkg.pkg_id
16943
            AND pkg.pkg_name = pkgname
16944
            AND pv.pkg_version = pkgversion;
16945
      EXCEPTION
16946
         WHEN NO_DATA_FOUND
16947
         THEN
16948
            raise_application_error (-20000, 'Package Not Found!');
16949
            --WHEN OTHERS THEN
16950
                  -- Consider logging the error and then re-raise
16951
            RAISE;
16952
      END;
16953
 
16954
      -- Finally get package dependencies --
16955
      OPEN RECORDS FOR
16956
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
16957
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
16958
          WHERE dep.pv_id = npvid
16959
            AND dpv.pkg_id = dpkg.pkg_id
16960
            AND dpv.pv_id = dep.dpv_id;
16961
 
16962
      RETURN RECORDS;
16963
   END;
16964
 
16965
/*-------------------------------------------------------------------------------------------------------*/
16966
   FUNCTION wip_iteration_package (
16967
      projname        VARCHAR2,
16968
      iterationname   VARCHAR2,
16969
      pkgname         VARCHAR2
16970
   )
16971
      RETURN typecur
16972
   IS
16973
      nrtagid   NUMBER  := 0;
16974
      RECORDS   typecur;
16975
   BEGIN
16976
      BEGIN
16977
         -- Get latest rtag_id --
16978
         SELECT rt.rtag_id
16979
           INTO nrtagid
16980
           FROM projects proj, release_tags rt
16981
          WHERE rt.proj_id = proj.proj_id
16982
            AND UPPER (proj.proj_name) = UPPER (projname)
16983
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
16984
 
16985
         IF (nrtagid IS NULL)
16986
         THEN
16987
            raise_application_error (-20000,
16988
                                     'Work In Progress is Not Found!');
16989
         END IF;
16990
      EXCEPTION
16991
         WHEN NO_DATA_FOUND
16992
         THEN
16993
            raise_application_error (-20000,
16994
                                     'Work In Progress is Not Found!');
16995
            RAISE;
16996
      END;
16997
 
16998
      -- Finally get package dependencies --
16999
      OPEN RECORDS FOR
17000
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
17001
                pv.src_path
17002
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
17003
          WHERE pv.pkg_id = pkg.pkg_id
17004
            AND wip.pv_id = pv.pv_id
17005
            AND wip.rtag_id = nrtagid
17006
            AND pkg.pkg_name = pkgname;
17007
 
17008
      RETURN RECORDS;
17009
   END;
17010
 
17011
/*-------------------------------------------------------------------------------------------------------*/
17012
   FUNCTION auto_make_release (
17013
      rtagid                   IN   NUMBER,
17014
      pkgname                  IN   VARCHAR2,
17015
      vext                     IN   VARCHAR2,
17016
      newpkgversion            IN   VARCHAR2,
17017
      label                    IN   VARCHAR2,
17018
      dependenciesimportlist   IN   VARCHAR2,
17019
      isrippled                IN   NUMBER,
17020
      username                 IN   VARCHAR2
17021
   )
17022
      RETURN NUMBER
17023
   IS
17024
      pvid                            NUMBER                        := 0;
17025
      userid                          NUMBER;
17026
      dlocked                         VARCHAR2 (20)                 := NULL;
17027
      clonefrompvid                   NUMBER;
17028
      ssv_mm                          package_versions.v_mm%TYPE;
17029
      ssv_nmm                         package_versions.v_nmm%TYPE;
17030
      ssv_ext                         package_versions.v_ext%TYPE;
17031
      return_package_not_found        NUMBER                        := -1;
17032
      return_package_already_exists   NUMBER                        := -2;
17033
      return_not_approved             NUMBER                        := -3;
17034
   BEGIN
17035
      /*--------------- Business Rules Here -------------------*/
17036
      IF (rtagid IS NULL)
17037
      THEN
17038
         raise_application_error (-20000, 'RtagId must be supplied.');
17039
      END IF;
17040
 
17041
      IF (pkgname IS NULL)
17042
      THEN
17043
         raise_application_error (-20000, 'PkgName must be supplied.');
17044
      END IF;
17045
 
17046
      IF (newpkgversion IS NULL)
17047
      THEN
17048
         raise_application_error (-20000, 'PkgVersion must be supplied.');
17049
      END IF;
17050
 
17051
      IF (label IS NULL)
17052
      THEN
17053
         raise_application_error (-20000, 'Label must be supplied.');
17054
      END IF;
17055
 
17056
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
17057
      THEN
17058
         raise_application_error
17059
            (-20000,
17060
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
17061
            );
17062
      END IF;
17063
 
17064
      IF (username IS NULL)
17065
      THEN
17066
         raise_application_error (-20000, 'UserName must be supplied.');
17067
      END IF;
17068
 
17069
      -- Get user_id
17070
      BEGIN
17071
         SELECT usr.user_id
17072
           INTO userid
17073
           FROM users usr
17074
          WHERE UPPER (usr.user_name) = UPPER (username)
17075
            AND usr.is_disabled IS NULL;
17076
      EXCEPTION
17077
         WHEN NO_DATA_FOUND
17078
         THEN
17079
            raise_application_error (-20000,
17080
                                        'UserName '
17081
                                     || username
17082
                                     || ' is not valid or disabled.'
17083
                                    );
17084
      END;
17085
 
17086
/*-------------------------------------------------------*/
17087
 
17088
      -- Create package if necessary
17089
      IF isrippled = 1
17090
      THEN
17091
         /* Ripple Build */
17092
         BEGIN
17093
            -- Make sure that package does not exist
17094
            SELECT pv.pv_id
17095
              INTO pvid
17096
              FROM package_versions pv, PACKAGES pkg
17097
             WHERE pv.pkg_id = pkg.pkg_id
17098
               AND pkg.pkg_name = pkgname
17099
               AND pv.pkg_version = newpkgversion;
17100
         EXCEPTION
17101
            WHEN NO_DATA_FOUND
17102
            THEN
17103
               pvid := 0;
17104
         END;
17105
 
17106
         IF (pvid = 0)
17107
         THEN
17108
            -- Split current version in parts
17109
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
17110
 
17111
            BEGIN
17112
               -- Find package to be replaced with thie ripple package
17113
               IF vext = ssv_ext
17114
               THEN
17115
                  SELECT pv.pv_id
17116
                    INTO clonefrompvid
17117
                    FROM PACKAGES pkg, package_versions pv,
17118
                         release_content rc
17119
                   WHERE rc.pv_id = pv.pv_id
17120
                     AND pv.pkg_id = pkg.pkg_id
17121
                     AND rc.rtag_id = rtagid
17122
                     AND pkg.pkg_name = pkgname
17123
                     AND pv.v_ext = ssv_ext;
17124
               ELSE
17125
                  SELECT pv.pv_id
17126
                    INTO clonefrompvid
17127
                    FROM PACKAGES pkg, package_versions pv,
17128
                         release_content rc
17129
                   WHERE rc.pv_id = pv.pv_id
17130
                     AND pv.pkg_id = pkg.pkg_id
17131
                     AND rc.rtag_id = rtagid
17132
                     AND pkg.pkg_name = pkgname
17133
                     AND pv.v_ext = vext;
17134
               END IF;
17135
            EXCEPTION
17136
               WHEN NO_DATA_FOUND
17137
               THEN
17138
                  raise_application_error
17139
                                        (-20000,
17140
                                            'Cannot get CloneFromPvId. VExt='
17141
                                         || vext
17142
                                         || ', RtagId='
17143
                                         || rtagid
17144
                                         || ', PkgName='
17145
                                         || pkgname
17146
                                         || ', SSV_EXT='
17147
                                         || ssv_ext
17148
                                        );
17149
            END;
17150
 
17151
            IF vext = ssv_ext
17152
            THEN
17153
               -- Create package
17154
               seed_package_names_versions (pkgname,
17155
                                            newpkgversion,
17156
                                            userid,
17157
 
17158
     pvid,
17159
                                            clonefrompvid
17160
                                           );
17161
            ELSE
17162
               -- Create package
17163
               seed_package_names_versions2 (pkgname,
17164
                                             newpkgversion,
17165
                                             userid,
17166
                                             pvid,
17167
                                             clonefrompvid
17168
                                            );
17169
            END IF;
17170
 
17171
            -- Update Package reason for release
17172
            UPDATE package_versions pv
17173
               SET pv.comments = 'Rippled Build.',
17174
                   pv.build_type = 'Y'
17175
             WHERE pv.pv_id = pvid;
17176
         ELSE
17177
            -- Package already exists, hence cannot be used for ripple build
17178
            RETURN return_package_already_exists;
17179
         END IF;
17180
      ELSE
17181
         /* Auto build from Pending area */
17182
 
17183
         -- Find package in pending area
17184
         BEGIN
17185
            SELECT pv.pv_id, pv.dlocked
17186
              INTO pvid, dlocked
17187
              FROM planned pl, package_versions pv, PACKAGES pkg
17188
             WHERE pl.pv_id = pv.pv_id
17189
               AND pv.pkg_id = pkg.pkg_id
17190
               AND pl.rtag_id = rtagid
17191
               AND pkg.pkg_name = pkgname
17192
               AND pv.dlocked = 'A'
17193
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
17194
                                                   NVL (vext, '|LINK_A_NULL|');
17195
         EXCEPTION
17196
            WHEN NO_DATA_FOUND
17197
            THEN
17198
               pvid := 0;
17199
         END;
17200
 
17201
         IF (pvid = 0)
17202
         THEN
17203
            -- Package does not exist in pending area, hence report it
17204
            RETURN return_package_not_found;
17205
         ELSIF (dlocked != 'A')
17206
         THEN
17207
            -- Package is not approved for autobuild
17208
            RETURN return_not_approved;
17209
         END IF;
17210
      END IF;
17211
 
17212
      BEGIN
17213
         -- Import Dependencies
17214
         import_dependencies (pvid, dependenciesimportlist, userid);
17215
      END;
17216
 
17217
      BEGIN
17218
         -- Split current version in parts
17219
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
17220
 
17221
         -- Update Package Details
17222
         UPDATE package_versions pv
17223
            SET pv.pkg_version = newpkgversion,
17224
                pv.v_ext = ssv_ext,
17225
                pv.v_mm = ssv_mm,
17226
                pv.v_nmm = ssv_nmm,
17227
                pv.pkg_label = label
17228
          WHERE pv.pv_id = pvid;
17229
      EXCEPTION
17230
         WHEN DUP_VAL_ON_INDEX
17231
         THEN
17232
            -- Package already exists, hence cannot be used for ripple build
17233
            RETURN return_package_already_exists;
17234
      END;
17235
 
17236
	  -- Update the is_autobuildable
17237
	  update package_versions 
17238
	  set is_autobuildable = 'Y'
17239
	  where pv_id = pvid;	  
17240
 
17241
      -- Now release package
17242
      pk_environment.auto_make_release (pvid,
17243
                                        rtagid,
17244
                                        userid,
17245
                                        vext,
17246
                                        ssv_ext,
17247
                                        clonefrompvid
17248
                                       );
17249
 
17250
 
17251
      RETURN pvid;
17252
   END;
17253
 
17254
/*-------------------------------------------------------------------------------------------------------*/
17255
   PROCEDURE import_dependencies (
17256
      pvid                     IN   NUMBER,
17257
      dependenciesimportlist   IN   VARCHAR2,
17258
      userid                   IN   NUMBER
17259
   )
17260
   IS
17261
/*
17262
|| DependenciesImportList Format:
17263
|| "pkgA","1.0.0";"pkgB","2.0.0";
17264
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
17265
*/
17266
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
17267
         INDEX BY VARCHAR2 (4000);
17268
 
17269
      seperator         VARCHAR2 (2)           := '||';
17270
      pkgname           VARCHAR2 (4000);
17271
      pkgversion        VARCHAR2 (4000);
17272
      buildtype         VARCHAR2 (50);
17273
      pkgid             NUMBER;
17274
      vext              VARCHAR2 (4000);
17275
      dpvid             NUMBER;
17276
      slist             VARCHAR2 (4000);
17277
      cbuildtypes       tdictionary;
17278
      dependencyrow     NUMBER;
17279
      sdependency       VARCHAR2 (4000);
17280
      first_pos         VARCHAR2 (4000);
17281
      second_pos        VARCHAR2 (4000);
17282
      third_pos         VARCHAR2 (4000);
17283
      forth_pos         VARCHAR2 (4000);
17284
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
17285
 
17286
      CURSOR curbuildtype
17287
      IS
17288
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
17289
                dep.build_type
17290
           FROM package_dependencies dep, package_versions dpv
17291
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
17292
 
17293
      recbuildtype      curbuildtype%ROWTYPE;
17294
   BEGIN
17295
      slist := dependenciesimportlist;
17296
 
17297
      -- Preformat String
17298
      IF NOT slist IS NULL
17299
      THEN
17300
         slist := REPLACE (slist, ' ');                      -- Remove spaces
17301
         slist := REPLACE (slist, UTL_TCP.crlf);
17302
                            -- Remove new line and carriage-return characters
17303
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
17304
      END IF;
17305
 
17306
      -- Get Current Dependencies
17307
      OPEN curbuildtype;
17308
 
17309
      FETCH curbuildtype
17310
       INTO recbuildtype;
17311
 
17312
      WHILE curbuildtype%FOUND
17313
      LOOP
17314
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
17315
 
17316
         FETCH curbuildtype
17317
          INTO recbuildtype;
17318
      END LOOP;
17319
 
17320
      CLOSE curbuildtype;
17321
 
17322
      -- Separate dependencies with ; separator
17323
      citemcollection := in_list_varchar2 (slist, ';');
17324
 
17325
      BEGIN
17326
         -- Remove old dependencies
17327
         DELETE FROM package_dependencies dep
17328
               WHERE dep.pv_id = pvid;
17329
 
17330
         -- Loop through dependencies
17331
         FOR dependencyrow IN 1 .. citemcollection.COUNT
17332
         LOOP
17333
            -- Extract pkg_name and pkg_version
17334
            sdependency := citemcollection (dependencyrow);
17335
            first_pos := INSTR (sdependency, '"', 1, 1);
17336
            second_pos := INSTR (sdependency, '"', 1, 2);
17337
            third_pos := INSTR (sdependency, '"', 1, 3);
17338
            forth_pos := INSTR (sdependency, '"', 1, 4);
17339
            pkgname :=
17340
               SUBSTR (sdependency,
17341
                       (first_pos + 1),
17342
                       (second_pos - first_pos - 1)
17343
                      );
17344
            pkgversion :=
17345
               SUBSTR (sdependency,
17346
                       (third_pos + 1),
17347
                       (forth_pos - third_pos - 1)
17348
                      );
17349
 
17350
            -- Dependency must exits to be linked against
17351
            BEGIN
17352
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
17353
                 INTO dpvid, pkgid, vext
17354
                 FROM package_versions pv, PACKAGES pkg
17355
                WHERE pv.pkg_id = pkg.pkg_id
17356
                  AND pkg.pkg_name = pkgname
17357
                  AND pv.pkg_version = pkgversion;
17358
            EXCEPTION
17359
               WHEN NO_DATA_FOUND
17360
               THEN
17361
                  raise_application_error
17362
                                  (-20000,
17363
                                      'Dependency ['
17364
                                   || pkgname
17365
                                   || ' '
17366
                                   || pkgversion
17367
                                   || '] does not exist yet and cannot be used!'
17368
                                  );
17369
            END;
17370
 
17371
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
17372
            BEGIN
17373
               buildtype := cbuildtypes (pkgid || seperator || vext);
17374
 
17375
               IF buildtype IS NULL
17376
               THEN
17377
                  -- Set build type to LinkPackageArchive by default
17378
                  buildtype := 'L';
17379
               END IF;
17380
            EXCEPTION
17381
               WHEN NO_DATA_FOUND
17382
               THEN
17383
                  buildtype := 'L';
17384
            END;
17385
 
17386
            -- Insert Dependencies
17387
            update_package_dependency (pvid,
17388
                                       pkgname,
17389
                                       pkgversion,
17390
                                       buildtype,
17391
                                       userid,
17392
 
17393
                                      );
17394
         END LOOP;
17395
 
17396
END;
17397
   END;
17398
 
17399
/*-------------------------------------------------------------------------------------------------------*/
17400
   FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
17401
      RETURN VARCHAR2
17402
   IS
17403
      pkgversion   VARCHAR2 (4000);
17404
   BEGIN
17405
      BEGIN
17406
         SELECT pv.pkg_version
17407
           INTO pkgversion
17408
           FROM PACKAGES pkg, release_content rc, package_versions pv
17409
          WHERE pv.pv_id = rc.pv_id
17410
            AND pkg.pkg_id = pv.pkg_id
17411
            AND pkg.pkg_name = pkgname
17412
            AND rc.rtag_id = rtagid;
17413
 
17414
         RETURN pkgversion;
17415
      END;
17416
   END;
17417
 
17418
/*-------------------------------------------------------------------------------------------------------*/
17419
PROCEDURE CQ_TEST IS
17420
 
17421
  INPUT NUMBER(8,2);
17422
  RESULT VARCHAR2(50);
17423
BEGIN
17424
  INPUT := 33558440;
17425
  RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);
17426
  INSERT INTO CQ_TEST (ID) VALUES (RESULT);
17427
 
17428
 
17429
END;
17430
/*-------------------------------------------------------------------------------------------------------*/
17431
   PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS
17432
 
17433
   projId NUMBER;
17434
   projIdDB NUMBER;
17435
   TOTAL NUMBER;
17436
   AUTO_TOTAL NUMBER;
17437
   rtagIdDB NUMBER;
17438
 
17439
   BEGIN
17440
   		SELECT count(*) INTO TOTAL 
17441
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
17442
		WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;   
17443
 
17444
		SELECT count(*) INTO AUTO_TOTAL 
17445
		FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv 
17446
		WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' 
17447
		and rc.rtag_id = RtagId;
17448
 
17449
		BEGIN
17450
			SELECT RTAG_ID INTO rtagIdDB
17451
			FROM DASH_BOARD
17452
			WHERE RTAG_ID = RtagId;
17453
 
17454
			SELECT PROJ_ID INTO projIdDB
17455
			FROM DASH_BOARD
17456
			WHERE RTAG_ID = RtagId;
17457
            EXCEPTION
17458
               WHEN NO_DATA_FOUND
17459
			   THEN	rtagIdDB := '';
17460
 
17461
		END; 			
17462
 
17463
		IF rtagIdDB IS NULL THEN
17464
			SELECT PROJ_ID INTO projId
17465
			FROM RELEASE_TAGS
17466
			WHERE RTAG_ID = RtagId;
17467
 
17468
			INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES)
17469
			VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL);
17470
		ELSE
17471
			UPDATE DASH_BOARD
17472
			SET LAST_BUILD_TIME = ORA_SYSDATETIME,
17473
				AUTOMATED_PACKAGES = AUTO_TOTAL,
17474
				TOTAL_PACKAGES = TOTAL
17475
			WHERE PROJ_ID = projIdDB
17476
			AND RTAG_ID = rtagIdDB; 	
17477
		END IF;
17478
 
17479
 
17480
 
17481
 
17482
 
17483
 
17484
   END;
17485
 
17486
 
17487
/*-------------------------------------------------------------------------------------------------------*/   
17488
END pk_rmapi_test;
17489
/
17490
 
17491
ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" 
17492
  COMPILE BODY 
17493
    PLSQL_OPTIMIZE_LEVEL=  2
17494
    PLSQL_CODE_TYPE=  INTERPRETED
17495
    PLSQL_DEBUG=  FALSE
17496
 REUSE SETTINGS TIMESTAMP '2007-02-06 11:21:54'
17497
/
17498
 
17499
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_APP_UTILS" IS
17500
 
17501
/*
17502
------------------------------
17503
||  Last Modified:  S.Vukovic
17504
||  Modified Date:  26/Apr/2005
17505
||  Body Version:   1.0
17506
------------------------------
17507
*/
17508
 
17509
 
17510
/*-------------------------------------------------------------------------------------------------------*/
17511
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
17512
 
17513
 
17514
BEGIN
17515
 
17516
 
17517
	IF (NOT RtagId IS NULL) THEN
17518
		-- Case with RTAG_ID present
17519
		OPEN records FOR
17520
		SELECT rt.PROJ_ID,
17521
			   rt.RTAG_ID AS RTAG_ID
17522
		  FROM RELEASE_TAGS rt
17523
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
17524
 
17525
	ELSIF (NOT ProjId IS NULL) THEN
17526
		-- Case with PROJ_ID present
17527
		OPEN records FOR
17528
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
17529
			   -1 AS RTAG_ID
17530
		  FROM DUAL;
17531
 
17532
	ELSE
17533
		-- Case with none present
17534
		OPEN records FOR
17535
		SELECT -1 AS PROJ_ID,
17536
			   -1 AS RTAG_ID
17537
		  FROM DUAL;
17538
 
17539
	END IF;
17540
 
17541
 
17542
 
17543
 
17544
   	--RETURN records;
17545
 
17546
END;
17547
/*-------------------------------------------------------------------------------------------------------*/
17548
END PK_APP_UTILS;
17549
/
17550
 
17551
ALTER PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" 
17552
  COMPILE BODY 
17553
    PLSQL_OPTIMIZE_LEVEL=  2
17554
    PLSQL_CODE_TYPE=  INTERPRETED
17555
    PLSQL_DEBUG=  TRUE
17556
 REUSE SETTINGS TIMESTAMP '2008-04-11 16:21:37'
17557
/
17558
 
17559
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ENVIRONMENT" 
17560
IS
17561
/*
17562
------------------------------
17563
||  Last Modified:  Rupesh Solanki
17564
||  Modified Date:  30/Aug/2007
17565
||  Body Version:   1.2
17566
------------------------------
17567
*/
17568
 
17569
   /*-------------------------------------------------------------------------------------------------------*/
17570
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
17571
      RETURN NUMBER
17572
   IS
17573
   BEGIN
17574
       /*
17575
      || N - unlocked
17576
      || Y - release and locked
17577
      || P - penging approval
17578
      || A - approved package ready for auto-build
17579
      */
17580
      IF cdlock = 'N' OR cdlock = 'R'
17581
      THEN
17582
         -- WORK IN PROGRESS --
17583
         RETURN 0;
17584
      ELSIF cdlock = 'P' OR cdlock = 'A'
17585
      THEN
17586
         -- PENDING --
17587
         RETURN 1;
17588
      ELSIF cdlock = 'Y'
17589
      THEN
17590
         -- RELEASED --
17591
         RETURN 2;
17592
      ELSE
17593
         -- NOT FOUND --
17594
         raise_application_error
17595
                         (-20000,
17596
                             'Cannot decide where to place package. [cDlock='
17597
                          || cdlock
17598
                          || ']'
17599
                         );
17600
      END IF;
17601
   END;
17602
 
17603
/*-------------------------------------------------------------------------------------------------------*/
17604
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
17605
      RETURN NUMBER
17606
   IS
17607
      envtab    NUMBER            := -1;
17608
 
17609
      CURSOR curarea
17610
      IS
17611
         SELECT 2 AS envtab
17612
           FROM release_content rc
17613
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
17614
         UNION
17615
         SELECT 0 AS envtab
17616
           FROM work_in_progress wip
17617
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
17618
         UNION
17619
         SELECT 1 AS envtab
17620
           FROM planned pl
17621
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
17622
 
17623
      recarea   curarea%ROWTYPE;
17624
   BEGIN
17625
      OPEN curarea;
17626
 
17627
      FETCH curarea
17628
       INTO recarea;
17629
 
17630
      IF curarea%FOUND
17631
      THEN
17632
         envtab := recarea.envtab;
17633
      END IF;
17634
 
17635
      CLOSE curarea;
17636
 
17637
      RETURN envtab;
17638
   END;
17639
 
17640
/*-------------------------------------------------------------------------------------------------------*/
17641
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
17642
      RETURN NUMBER
17643
   IS
17644
      ispatch   package_versions.dlocked%TYPE;
17645
      viewid    NUMBER                          := -1;
17646
 
17647
      CURSOR curview
17648
      IS
17649
         SELECT rc.base_view_id AS view_id
17650
           FROM release_content rc
17651
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
17652
         UNION
17653
         SELECT wip.view_id AS view_id
17654
           FROM work_in_progress wip
17655
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
17656
         UNION
17657
         SELECT pl.view_id AS view_id
17658
           FROM planned pl
17659
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
17660
 
17661
      recview   curview%ROWTYPE;
17662
   BEGIN
17663
      -- Get dlock state
17664
      SELECT pv.is_patch
17665
        INTO ispatch
17666
        FROM package_versions pv
17667
       WHERE pv.pv_id = pvid;
17668
 
17669
      -- Decide which view id should package go under.
17670
      IF (ispatch != 'Y') OR (ispatch IS NULL)
17671
      THEN
17672
         -- Get VIEW ID of Package
17673
         OPEN curview;
17674
 
17675
         FETCH curview
17676
          INTO recview;
17677
 
17678
         IF curview%FOUND
17679
         THEN
17680
            viewid := recview.view_id;
17681
         ELSE
17682
            raise_application_error
17683
               (-20000,
17684
                   'Cannot find view_id to proceed. [PvId='
17685
                || pvid
17686
                || ']. The current version may not exist in the release anymore.'
17687
               );
17688
         END IF;
17689
 
17690
         CLOSE curview;
17691
      ELSE
17692
         -- Get VIEW ID of Patch (view id of parent package)
17693
         SELECT rc.base_view_id
17694
           INTO viewid
17695
           FROM release_content rc, package_patches ppv
17696
          WHERE rc.rtag_id = rtagid
17697
            AND rc.pv_id = ppv.pv_id
17698
            AND ppv.patch_id = pvid;
17699
      END IF;
17700
 
17701
      RETURN viewid;
17702
   END;
17703
 
17704
/*-------------------------------------------------------------------------------------------------------*/
17705
   PROCEDURE add_package (
17706
      pvid     IN   NUMBER,
17707
      viewid   IN   NUMBER,
17708
      rtagid   IN   NUMBER,
17709
      userid   IN   NUMBER
17710
   )
17711
   IS
17712
      dlocked   package_versions.dlocked%TYPE;
17713
      envtab    NUMBER;
17714
   BEGIN
17715
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
17716
      THEN
17717
         -- Get dlock state
17718
         SELECT pv.dlocked
17719
           INTO dlocked
17720
           FROM package_versions pv
17721
          WHERE pv.pv_id = pvid;
17722
 
17723
         -- Get which area should go under
17724
         envtab := select_environment_area (dlocked);
17725
         -- Log
17726
         log_action (pvid, 'action', userid, 'Start of Package Add...');
17727
 
17728
         -- Remove Package
17729
         IF envtab = 0
17730
         THEN
17731
            -- WORK IN PROGRESS --
17732
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
17733
         ELSIF envtab = 1
17734
         THEN
17735
            -- PENDING --
17736
            pk_planned.add_package (pvid, viewid, rtagid, userid);
17737
         ELSIF envtab = 2
17738
         THEN
17739
            -- RELEASED --
17740
            -- NOTE: this package will be replaced with matching package
17741
            pk_release.add_package (pvid, viewid, rtagid, userid);
17742
            -- Now do post Release Actions
17743
            pk_release.run_post_actions (pvid, rtagid);
17744
         END IF;
17745
 
17746
         -- Log
17747
         log_action (pvid, 'action', userid, 'End of Package Add...');
17748
      END IF;
17749
   END;
17750
 
17751
/*-------------------------------------------------------------------------------------------------------*/
17752
   PROCEDURE add_package_bulk (
17753
      pvidlist   IN   VARCHAR2,
17754
      viewid     IN   NUMBER,
17755
      rtagid     IN   NUMBER,
17756
      userid     IN   NUMBER
17757
   )
17758
   IS
17759
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
17760
                                                                          ();
17761
      dlocked        package_versions.dlocked%TYPE;
17762
      pvid           NUMBER;
17763
      envtab         NUMBER;
17764
   BEGIN
17765
      /*--------------- Business Rules Here -------------------*/
17766
      IF (pvidlist IS NULL)
17767
      THEN
17768
         raise_application_error (-20000,
17769
                                  'Please select at least one package.'
17770
                                 );
17771
      END IF;
17772
 
17773
/*-------------------------------------------------------*/
17774
      nidcollector := in_list_number (pvidlist);
17775
 
17776
      FOR i IN 1 .. nidcollector.COUNT
17777
      LOOP
17778
         pvid := nidcollector (i);
17779
         add_package (pvid, viewid, rtagid, userid);
17780
      END LOOP;
17781
   END;
17782
 
17783
/*-------------------------------------------------------------------------------------------------------*/
17784
   PROCEDURE replace_package (
17785
      newpvid   IN   NUMBER,
17786
      oldpvid   IN   NUMBER,
17787
      rtagid    IN   NUMBER,
17788
      userid    IN   NUMBER
17789
   )
17790
   IS
17791
      dlocked        package_versions.dlocked%TYPE;
17792
      viewid         NUMBER;
17793
      envtab         NUMBER;
17794
      ROWCOUNT       NUMBER;
17795
      creleasemode   CHAR (1);
17796
      npkgid         NUMBER;
17797
   BEGIN
17798
      /*--------------- Business Rules Here -------------------*/
17799
      -- Check if oldPvId exists. It could have been removed
17800
      SELECT COUNT (pv.pv_id)
17801
        INTO ROWCOUNT
17802
        FROM package_versions pv
17803
       WHERE pv.pv_id = oldpvid;
17804
 
17805
/*-------------------------------------------------------*/
17806
 
17807
      /* This procedure is usually used by "History" option in Release Manager */
17808
 
17809
      -- Get dlock state
17810
      SELECT pv.dlocked
17811
        INTO dlocked
17812
        FROM package_versions pv
17813
       WHERE pv.pv_id = newpvid;
17814
 
17815
      -- Get VIEW_ID ---
17816
      IF ROWCOUNT = 1
17817
      THEN
17818
         viewid := get_view_location (oldpvid, rtagid);
17819
      ELSE
17820
         -- Set ViewID to default
17821
         viewid := 7;
17822
      END IF;
17823
 
17824
      -- Get which area should go under
17825
      envtab := select_environment_area (dlocked);
17826
      -- Log
17827
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
17828
 
17829
      -- Replace package
17830
      IF envtab = 0
17831
      THEN
17832
         -- WORK IN PROGRESS --
17833
 
17834
         -- Delete old package
17835
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
17836
         -- Add new package
17837
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
17838
      ELSIF envtab 
17839
= 1
17840
      THEN
17841
         -- PENDING --
17842
 
17843
         -- Delete old package
17844
         pk_planned.remove_package (oldpvid, rtagid, userid);
17845
         -- Add new package
17846
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
17847
      ELSIF envtab = 2
17848
      THEN
17849
         -- RELEASED --
17850
 
17851
         -- Delete old package
17852
         pk_release.remove_package (oldpvid, rtagid, userid);
17853
         -- Add new package
17854
         pk_release.add_package (newpvid, viewid, rtagid, userid);
17855
         -- Now do post Release Actions
17856
         pk_release.run_post_actions (newpvid, rtagid);
17857
      END IF;
17858
 
17859
      -- Log
17860
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
17861
   END;
17862
 
17863
/*-------------------------------------------------------------------------------------------------------*/
17864
   FUNCTION remove_package (
17865
      pvid          IN   NUMBER,
17866
      rtagid        IN   NUMBER,
17867
      userid        IN   NUMBER,
17868
      forceremove   IN   CHAR
17869
   )
17870
      RETURN NUMBER
17871
   IS
17872
      envtab        NUMBER;
17873
      isused        BOOLEAN;
17874
      recordcount   NUMBER;
17875
   BEGIN
17876
/*--------------- Business Rules Here -------------------*/
17877
/*-------------------------------------------------------*/
17878
 
17879
      -- Find location of package
17880
      envtab := get_package_area (pvid, rtagid);
17881
 
17882
      -- Remove Package
17883
      IF envtab = 0
17884
      THEN
17885
         -- WORK IN PROGRESS --
17886
         -- Delete package
17887
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
17888
         RETURN 0;
17889
      ELSIF envtab = 1
17890
      THEN
17891
         -- PENDING --
17892
         -- Delete package
17893
         pk_planned.remove_package (pvid, rtagid, userid);
17894
         RETURN 0;
17895
      ELSIF envtab = 2
17896
      THEN
17897
         -- RELEASED --
17898
 
17899
         -- Check if is used by other packages
17900
         isused := TRUE;
17901
 
17902
         IF forceremove = 'N'
17903
         THEN
17904
            SELECT COUNT (pv.pv_id)
17905
              INTO recordcount
17906
              FROM (SELECT dpv.pkg_id, dpv.v_ext
17907
                      FROM release_content rc,
17908
                           package_dependencies dep,
17909
                           package_versions dpv
17910
                     WHERE rc.rtag_id = rtagid
17911
                       AND rc.pv_id = dep.pv_id
17912
                       AND dep.dpv_id = dpv.pv_id) rdep,
17913
                   package_versions pv
17914
             WHERE pv.pkg_id = rdep.pkg_id
17915
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
17916
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
17917
               AND pv.pv_id = pvid;
17918
 
17919
            IF recordcount > 0
17920
            THEN
17921
               RETURN 1;                    -- Return 1 as package being used
17922
            ELSE
17923
               isused := FALSE;
17924
            END IF;
17925
         END IF;
17926
 
17927
         IF forceremove = 'Y' OR NOT isused
17928
         THEN
17929
            -- Delete old package
17930
            pk_release.remove_package (pvid, rtagid, userid);
17931
            -- Now do post Release Actions
17932
            pk_release.run_post_actions (pvid, rtagid);
17933
            RETURN 0;
17934
         END IF;
17935
      END IF;
17936
   END;
17937
 
17938
/*-------------------------------------------------------------------------------------------------------*/
17939
   PROCEDURE get_environment_items (
17940
      viewtype           IN       NUMBER,
17941
      userid             IN       NUMBER,
17942
      rtagid             IN       NUMBER,
17943
      sviewidshowlist    IN       VARCHAR2,
17944
      ntruerecordcount   OUT      NUMBER,
17945
      recordset          OUT      typecur
17946
   )
17947
   IS
17948
   BEGIN
17949
      -- Get true record count because views can give false count
17950
      SELECT COUNT (pl.pv_id)
17951
        INTO ntruerecordcount
17952
        FROM environment_view pl
17953
       WHERE pl.rtag_id = rtagid;
17954
 
17955
      IF viewtype = 1
17956
      THEN
17957
         /*--- GUEST VIEW ---*/
17958
         OPEN recordset FOR
17959
            SELECT   *
17960
                FROM (
17961
                      /* Base Views collapsed */
17962
                      SELECT DISTINCT vi.view_id, vi.view_name,
17963
                                      TO_NUMBER (NULL) AS pkg_state,
17964
                                      TO_NUMBER (NULL) AS deprecated_state,
17965
                                      TO_NUMBER (NULL) AS pv_id,
17966
                                      NULL AS pkg_name, NULL AS pkg_version,
17967
                                      NULL AS dlocked, NULL AS pv_description
17968
                                 FROM environment_view rel, views vi
17969
                                WHERE rel.view_id = vi.view_id
17970
                                  AND rtag_id = rtagid
17971
                                  AND rel.view_id NOT IN (
17972
                                         SELECT *
17973
                                           FROM THE
17974
                                                   (SELECT CAST
17975
                                                              (in_list_number
17976
                                                                  (sviewidshowlist
17977
                                                                  ) AS relmgr_number_tab_t
17978
                                                              )
17979
                                                      FROM DUAL
17980
                                                   ))
17981
                      UNION
17982
                      /* Base Views expanded */
17983
                      SELECT vi.view_id, vi.view_name,
17984
                             DECODE (rel.pkg_state,
17985
                                     NULL, 0,
17986
                                     rel.pkg_state
17987
                                    ) AS pkg_state,
17988
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
17989
                             pv.pkg_version, pv.dlocked, pv.pv_description
17990
                        FROM environment_view rel,
17991
                             PACKAGES pkg,
17992
                             package_versions pv,
17993
                             views vi
17994
                       WHERE pv.pkg_id = pkg.pkg_id
17995
                         AND rel.pv_id = pv.pv_id
17996
                         AND rel.view_id = vi.view_id
17997
                         AND rel.view_id IN (
17998
                                SELECT *
17999
                                  FROM THE
18000
                                          (SELECT CAST
18001
                                                     (in_list_number
18002
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18003
                                                     )
18004
                                             FROM DUAL
18005
                                          ))
18006
                         AND rtag_id = rtagid) ord
18007
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18008
      ELSIF viewtype = 2
18009
      THEN
18010
         /*--- PERSONAL VIEW ---*/
18011
         OPEN recordset FOR
18012
            SELECT   *
18013
                FROM (
18014
                      /* Base Views collapsed */
18015
                      SELECT DISTINCT vi.view_id, vi.view_name,
18016
                                      TO_NUMBER (NULL) AS pkg_state,
18017
                                      TO_NUMBER (NULL) AS deprecated_state,
18018
                                      TO_NUMBER (NULL) AS pv_id,
18019
                                      NULL AS pkg_name, NULL AS pkg_version,
18020
                                      NULL AS dlocked, NULL AS pv_description
18021
                                 FROM environment_view rel,
18022
                                      view_settings vs,
18023
                                      views vi
18024
                                WHERE rel.view_id = vi.view_id
18025
                                  AND vs.view_id = rel.view_id
18026
                                  AND vs.user_id = userid
18027
                                  AND rtag_id = rtagid
18028
                                  AND rel.view_id NOT IN (
18029
                                         SELECT *
18030
                                           FROM THE
18031
                                                   (SELECT CAST
18032
                                                              (in_list_number
18033
                                                                  (sviewidshowlist
18034
                                                                  ) AS relmgr_number_tab_t
18035
                                                              )
18036
                                                      FROM DUAL
18037
 
18038
                           ))
18039
                      UNION
18040
                      /* Base Views expanded */
18041
                      SELECT vi.view_id, vi.view_name,
18042
                             DECODE (rel.pkg_state,
18043
                                     NULL, 0,
18044
                                     rel.pkg_state
18045
                                    ) AS pkg_state,
18046
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18047
                             pv.pkg_version, pv.dlocked, pv.pv_description
18048
                        FROM environment_view rel,
18049
                             PACKAGES pkg,
18050
                             package_versions pv,
18051
                             views vi,
18052
                             view_settings vs
18053
                       WHERE pv.pkg_id = pkg.pkg_id
18054
                         AND rel.pv_id = pv.pv_id
18055
                         AND rel.view_id = vi.view_id
18056
                         AND vs.view_id = vi.view_id
18057
                         AND vs.user_id = userid
18058
                         AND rel.view_id IN (
18059
                                SELECT *
18060
                                  FROM THE
18061
                                          (SELECT CAST
18062
                                                     (in_list_number
18063
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18064
                                                     )
18065
                                             FROM DUAL
18066
                                          ))
18067
                         AND rtag_id = rtagid
18068
                      UNION
18069
                      /* Private Views collapsed */
18070
                      SELECT vi.view_id, vi.view_name,
18071
                             TO_NUMBER (NULL) AS pkg_state,
18072
                             TO_NUMBER (NULL) AS deprecated_state,
18073
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
18074
                             NULL AS pkg_version, NULL AS dlocked,
18075
                             NULL AS pv_description
18076
                        FROM view_settings vs,
18077
                             view_def vd,
18078
                             views vi,
18079
                             environment_view rel,
18080
                             package_versions pv
18081
                       WHERE vs.view_id = vi.view_id
18082
                         AND rel.pv_id = pv.pv_id
18083
                         AND vd.pkg_id = pv.pkg_id
18084
                         AND vd.view_id = vi.view_id
18085
                         AND vi.base_view = 'N'
18086
                         AND rel.rtag_id = rtagid
18087
                         AND vs.user_id = userid
18088
                         AND vi.view_id NOT IN (
18089
                                SELECT *
18090
                                  FROM THE
18091
                                          (SELECT CAST
18092
                                                     (in_list_number
18093
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18094
                                                     )
18095
                                             FROM DUAL
18096
                                          ))
18097
                      UNION
18098
                      /* Private Views expanded */
18099
                      SELECT vi.view_id, vi.view_name,
18100
                             DECODE (rel.pkg_state,
18101
                                     NULL, 0,
18102
                                     rel.pkg_state
18103
                                    ) AS pkg_state,
18104
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18105
                             pv.pkg_version, pv.dlocked, pv.pv_description
18106
                        FROM users usr,
18107
                             view_settings vs,
18108
                             view_def vd,
18109
                             views vi,
18110
                             environment_view rel,
18111
                             PACKAGES pkg,
18112
                             package_versions pv
18113
                       WHERE vs.user_id = usr.user_id
18114
                         AND vs.view_id = vi.view_id
18115
                         AND vd.view_id = vi.view_id
18116
                         AND pv.pkg_id = pkg.pkg_id
18117
                         AND rel.pv_id = pv.pv_id
18118
                         AND rel.rtag_id = rtagid
18119
                         AND vd.pkg_id = pkg.pkg_id
18120
                         AND vi.base_view = 'N'
18121
                         AND vi.view_id IN (
18122
                                SELECT *
18123
                                  FROM THE
18124
                                          (SELECT CAST
18125
                                                     (in_list_number
18126
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18127
                                                     )
18128
                                             FROM DUAL
18129
                                          ))
18130
                         AND usr.user_id = userid) ord
18131
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18132
      END IF;
18133
   END;
18134
 
18135
/*-------------------------------------------------------------------------------------------------------*/
18136
   PROCEDURE get_released_items (
18137
      viewtype           IN       NUMBER,
18138
      userid             IN       NUMBER,
18139
      rtagid             IN       NUMBER,
18140
      sviewidshowlist    IN       VARCHAR2,
18141
      ntruerecordcount   OUT      NUMBER,
18142
      recordset          OUT      typecur
18143
   )
18144
   IS
18145
   BEGIN
18146
      -- Get true record count because views can give false count
18147
      SELECT COUNT (rc.pv_id)
18148
        INTO ntruerecordcount
18149
        FROM release_content rc
18150
       WHERE rc.rtag_id = rtagid;
18151
 
18152
      IF viewtype = 1
18153
      THEN
18154
         /*--- GUEST VIEW ---*/
18155
         OPEN recordset FOR
18156
            SELECT   *
18157
                FROM (
18158
                      /* Base Views collapsed */
18159
                      SELECT DISTINCT vi.view_id, vi.view_name,
18160
                                      TO_NUMBER (NULL) AS pkg_state,
18161
                                      TO_NUMBER (NULL) AS deprecated_state,
18162
                                      TO_NUMBER (NULL) AS pv_id,
18163
                                      NULL AS pkg_name, NULL AS pkg_version,
18164
                                      NULL AS dlocked, NULL AS pv_description
18165
                                 FROM release_content rel, views vi
18166
                                WHERE rel.base_view_id = vi.view_id
18167
                                  AND rtag_id = rtagid
18168
                                  AND rel.base_view_id NOT IN (
18169
                                         SELECT *
18170
                                           FROM THE
18171
                                                   (SELECT CAST
18172
                                                              (in_list_number
18173
                                                                  (sviewidshowlist
18174
                                                                  ) AS relmgr_number_tab_t
18175
                                                              )
18176
                                                      FROM DUAL
18177
                                                   ))
18178
                      UNION
18179
                      /* Base Views expanded */
18180
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
18181
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18182
                             pv.pkg_version, pv.dlocked, pv.pv_description
18183
                        FROM release_content rel,
18184
                             PACKAGES pkg,
18185
                             package_versions pv,
18186
                             views vi
18187
                       WHERE pv.pkg_id = pkg.pkg_id
18188
                         AND rel.pv_id = pv.pv_id
18189
                         AND rel.base_view_id = vi.view_id
18190
                         AND rel.base_view_id IN (
18191
                                SELECT *
18192
                                  FROM THE
18193
                                          (SELECT CAST
18194
                                                     (in_list_number
18195
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18196
                                                     )
18197
                                             FROM DUAL
18198
 
18199
              ))
18200
                         AND rtag_id = rtagid) ord
18201
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18202
      ELSIF viewtype = 2
18203
      THEN
18204
         /*--- PERSONAL VIEW ---*/
18205
         OPEN recordset FOR
18206
            SELECT   *
18207
                FROM (
18208
                      /* Base Views collapsed */
18209
                      SELECT DISTINCT vi.view_id, vi.view_name,
18210
                                      TO_NUMBER (NULL) AS pkg_state,
18211
                                      TO_NUMBER (NULL) AS deprecated_state,
18212
                                      TO_NUMBER (NULL) AS pv_id,
18213
                                      NULL AS pkg_name, NULL AS pkg_version,
18214
                                      NULL AS dlocked, NULL AS pv_description
18215
                                 FROM release_content rel,
18216
                                      view_settings vs,
18217
                                      views vi
18218
                                WHERE rel.base_view_id = vi.view_id
18219
                                  AND vs.view_id = rel.base_view_id
18220
                                  AND vs.user_id = userid
18221
                                  AND rtag_id = rtagid
18222
                                  AND rel.base_view_id NOT IN (
18223
                                         SELECT *
18224
                                           FROM THE
18225
                                                   (SELECT CAST
18226
                                                              (in_list_number
18227
                                                                  (sviewidshowlist
18228
                                                                  ) AS relmgr_number_tab_t
18229
                                                              )
18230
                                                      FROM DUAL
18231
                                                   ))
18232
                      UNION
18233
                      /* Base Views expanded */
18234
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
18235
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18236
                             pv.pkg_version, pv.dlocked, pv.pv_description
18237
                        FROM release_content rel,
18238
                             PACKAGES pkg,
18239
                             package_versions pv,
18240
                             views vi,
18241
                             view_settings vs
18242
                       WHERE pv.pkg_id = pkg.pkg_id
18243
                         AND rel.pv_id = pv.pv_id
18244
                         AND rel.base_view_id = vi.view_id
18245
                         AND vs.view_id = vi.view_id
18246
                         AND vs.user_id = userid
18247
                         AND rel.base_view_id IN (
18248
                                SELECT *
18249
                                  FROM THE
18250
                                          (SELECT CAST
18251
                                                     (in_list_number
18252
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18253
                                                     )
18254
                                             FROM DUAL
18255
                                          ))
18256
                         AND rtag_id = rtagid
18257
                      UNION
18258
                      /* Private Views collapsed */
18259
                      SELECT vi.view_id, vi.view_name,
18260
                             TO_NUMBER (NULL) AS pkg_state,
18261
                             TO_NUMBER (NULL) AS deprecated_state,
18262
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
18263
                             NULL AS pkg_version, NULL AS dlocked,
18264
                             NULL AS pv_description
18265
                        FROM view_settings vs,
18266
                             view_def vd,
18267
                             views vi,
18268
                             release_content rel,
18269
                             package_versions pv
18270
                       WHERE vs.view_id = vi.view_id
18271
                         AND rel.pv_id = pv.pv_id
18272
                         AND vd.pkg_id = pv.pkg_id
18273
                         AND vd.view_id = vi.view_id
18274
                         AND vi.base_view = 'N'
18275
                         AND rel.rtag_id = rtagid
18276
                         AND vs.user_id = userid
18277
                         AND vi.view_id NOT IN (
18278
                                SELECT *
18279
                                  FROM THE
18280
                                          (SELECT CAST
18281
                                                     (in_list_number
18282
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18283
                                                     )
18284
                                             FROM DUAL
18285
                                          ))
18286
                      UNION
18287
                      /* Private Views expanded */
18288
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
18289
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18290
                             pv.pkg_version, pv.dlocked, pv.pv_description
18291
                        FROM users usr,
18292
                             view_settings vs,
18293
                             view_def vd,
18294
                             views vi,
18295
                             release_content rel,
18296
                             PACKAGES pkg,
18297
                             package_versions pv
18298
                       WHERE vs.user_id = usr.user_id
18299
                         AND vs.view_id = vi.view_id
18300
                         AND vd.view_id = vi.view_id
18301
                         AND pv.pkg_id = pkg.pkg_id
18302
                         AND rel.pv_id = pv.pv_id
18303
                         AND rel.rtag_id = rtagid
18304
                         AND vd.pkg_id = pkg.pkg_id
18305
                         AND vi.base_view = 'N'
18306
                         AND vi.view_id IN (
18307
                                SELECT *
18308
                                  FROM THE
18309
                                          (SELECT CAST
18310
                                                     (in_list_number
18311
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18312
                                                     )
18313
                                             FROM DUAL
18314
                                          ))
18315
                         AND usr.user_id = userid) ord
18316
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18317
      END IF;
18318
   END;
18319
 
18320
/*-------------------------------------------------------------------------------------------------------*/
18321
   PROCEDURE get_work_in_progress_items (
18322
      viewtype           IN       NUMBER,
18323
      userid             IN       NUMBER,
18324
      rtagid             IN       NUMBER,
18325
      sviewidshowlist    IN       VARCHAR2,
18326
      ntruerecordcount   OUT      NUMBER,
18327
      recordset          OUT      typecur
18328
   )
18329
   IS
18330
   BEGIN
18331
      -- Get true record count because views can give false count
18332
      SELECT COUNT (wip.pv_id)
18333
        INTO ntruerecordcount
18334
        FROM work_in_progress wip
18335
       WHERE wip.rtag_id = rtagid;
18336
 
18337
      IF viewtype = 1
18338
      THEN
18339
         /*--- GUEST VIEW ---*/
18340
         OPEN recordset FOR
18341
            SELECT   *
18342
                FROM (
18343
                      /* Base Views collapsed */
18344
                      SELECT DISTINCT vi.view_id, vi.view_name,
18345
                                      TO_NUMBER (NULL) AS pkg_state,
18346
                                      TO_NUMBER (NULL) AS deprecated_state,
18347
                                      TO_NUMBER (NULL) AS pv_id,
18348
                                      NULL AS pkg_name, NULL AS pkg_version,
18349
                                      NULL AS dlocked, NULL AS pv_description
18350
                                 FROM work_in_progress rel, views vi
18351
                                WHERE rel.view_id = vi.view_id
18352
                                  AND rtag_id = rtagid
18353
                                  AND rel.view_id NOT IN (
18354
                                         SELECT *
18355
                                           FROM THE
18356
                                                   (SELECT CAST
18357
                                                              (in_list_number
18358
 
18359
            (sviewidshowlist
18360
                                                                  ) AS relmgr_number_tab_t
18361
                                                              )
18362
                                                      FROM DUAL
18363
                                                   ))
18364
                      UNION
18365
                      /* Base Views expanded */
18366
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18367
 
18368
                             --rel.pkg_state,
18369
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18370
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18371
                             pv.pv_description
18372
                        FROM work_in_progress rel,
18373
                             PACKAGES pkg,
18374
                             package_versions pv,
18375
                             views vi
18376
                       WHERE pv.pkg_id = pkg.pkg_id
18377
                         AND rel.pv_id = pv.pv_id
18378
                         AND rel.view_id = vi.view_id
18379
                         AND rel.view_id IN (
18380
                                SELECT *
18381
                                  FROM THE
18382
                                          (SELECT CAST
18383
                                                     (in_list_number
18384
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18385
                                                     )
18386
                                             FROM DUAL
18387
                                          ))
18388
                         AND rtag_id = rtagid) ord
18389
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18390
      ELSIF viewtype = 2
18391
      THEN
18392
         /*--- PERSONAL VIEW ---*/
18393
         OPEN recordset FOR
18394
            SELECT   *
18395
                FROM (
18396
                      /* Base Views collapsed */
18397
                      SELECT DISTINCT vi.view_id, vi.view_name,
18398
                                      TO_NUMBER (NULL) AS pkg_state,
18399
                                      TO_NUMBER (NULL) AS deprecated_state,
18400
                                      TO_NUMBER (NULL) AS pv_id,
18401
                                      NULL AS pkg_name, NULL AS pkg_version,
18402
                                      NULL AS dlocked, NULL AS pv_description
18403
                                 FROM work_in_progress rel,
18404
                                      view_settings vs,
18405
                                      views vi
18406
                                WHERE rel.view_id = vi.view_id
18407
                                  AND vs.view_id = rel.view_id
18408
                                  AND vs.user_id = userid
18409
                                  AND rtag_id = rtagid
18410
                                  AND rel.view_id NOT IN (
18411
                                         SELECT *
18412
                                           FROM THE
18413
                                                   (SELECT CAST
18414
                                                              (in_list_number
18415
                                                                  (sviewidshowlist
18416
                                                                  ) AS relmgr_number_tab_t
18417
                                                              )
18418
                                                      FROM DUAL
18419
                                                   ))
18420
                      UNION
18421
                      /* Base Views expanded */
18422
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18423
 
18424
                             --rel.pkg_state,
18425
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18426
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18427
                             pv.pv_description
18428
                        FROM work_in_progress rel,
18429
                             PACKAGES pkg,
18430
                             package_versions pv,
18431
                             views vi,
18432
                             view_settings vs
18433
                       WHERE pv.pkg_id = pkg.pkg_id
18434
                         AND rel.pv_id = pv.pv_id
18435
                         AND rel.view_id = vi.view_id
18436
                         AND vs.view_id = vi.view_id
18437
                         AND vs.user_id = userid
18438
                         AND rel.view_id IN (
18439
                                SELECT *
18440
                                  FROM THE
18441
                                          (SELECT CAST
18442
                                                     (in_list_number
18443
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18444
                                                     )
18445
                                             FROM DUAL
18446
                                          ))
18447
                         AND rtag_id = rtagid
18448
                      UNION
18449
                      /* Private Views collapsed */
18450
                      SELECT vi.view_id, vi.view_name,
18451
                             TO_NUMBER (NULL) AS pkg_state,
18452
                             TO_NUMBER (NULL) AS deprecated_state,
18453
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
18454
                             NULL AS pkg_version, NULL AS dlocked,
18455
                             NULL AS pv_description
18456
                        FROM view_settings vs,
18457
                             view_def vd,
18458
                             views vi,
18459
                             work_in_progress rel,
18460
                             package_versions pv
18461
                       WHERE vs.view_id = vi.view_id
18462
                         AND rel.pv_id = pv.pv_id
18463
                         AND vd.pkg_id = pv.pkg_id
18464
                         AND vd.view_id = vi.view_id
18465
                         AND vi.base_view = 'N'
18466
                         AND rel.rtag_id = rtagid
18467
                         AND vs.user_id = userid
18468
                         AND vi.view_id NOT IN (
18469
                                SELECT *
18470
                                  FROM THE
18471
                                          (SELECT CAST
18472
                                                     (in_list_number
18473
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18474
                                                     )
18475
                                             FROM DUAL
18476
                                          ))
18477
                      UNION
18478
                      /* Private Views expanded */
18479
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18480
 
18481
                             --rel.pkg_state,
18482
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18483
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18484
                             pv.pv_description
18485
                        FROM users usr,
18486
                             view_settings vs,
18487
                             view_def vd,
18488
                             views vi,
18489
                             work_in_progress rel,
18490
                             PACKAGES pkg,
18491
                             package_versions pv
18492
                       WHERE vs.user_id = usr.user_id
18493
                         AND vs.view_id = vi.view_id
18494
                         AND vd.view_id = vi.view_id
18495
                         AND pv.pkg_id = pkg.pkg_id
18496
                         AND rel.pv_id = pv.pv_id
18497
                         AND rel.rtag_id = rtagid
18498
                         AND vd.pkg_id = pkg.pkg_id
18499
                         AND vi.base_view = 'N'
18500
                         AND vi.view_id IN (
18501
                                SELECT *
18502
                                  FROM THE
18503
                                          (SELECT CAST
18504
                                                     (in_list_number
18505
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18506
                                                     )
18507
                                             FROM DUAL
18508
                                          ))
18509
                         AND usr.user_id = userid) ord
18510
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18511
      END IF;
18512
 
18513
END;
18514
 
18515
/*-------------------------------------------------------------------------------------------------------*/
18516
   PROCEDURE get_pending_items (
18517
      viewtype           IN       NUMBER,
18518
      userid             IN       NUMBER,
18519
      rtagid             IN       NUMBER,
18520
      sviewidshowlist    IN       VARCHAR2,
18521
      ntruerecordcount   OUT      NUMBER,
18522
      recordset          OUT      typecur
18523
   )
18524
   IS
18525
   BEGIN
18526
      -- Get true record count because views can give false count
18527
      SELECT COUNT (pl.pv_id)
18528
        INTO ntruerecordcount
18529
        FROM planned pl
18530
       WHERE pl.rtag_id = rtagid;
18531
 
18532
      IF viewtype = 1
18533
      THEN
18534
         /*--- GUEST VIEW ---*/
18535
         OPEN recordset FOR
18536
            SELECT   *
18537
                FROM (
18538
                      /* Base Views collapsed */
18539
                      SELECT DISTINCT vi.view_id, vi.view_name,
18540
                                      TO_NUMBER (NULL) AS pkg_state,
18541
                                      TO_NUMBER (NULL) AS deprecated_state,
18542
                                      TO_NUMBER (NULL) AS pv_id,
18543
                                      NULL AS pkg_name, NULL AS pkg_version,
18544
                                      NULL AS dlocked, NULL AS pv_description
18545
                                 FROM planned rel, views vi
18546
                                WHERE rel.view_id = vi.view_id
18547
                                  AND rtag_id = rtagid
18548
                                  AND rel.view_id NOT IN (
18549
                                         SELECT *
18550
                                           FROM THE
18551
                                                   (SELECT CAST
18552
                                                              (in_list_number
18553
                                                                  (sviewidshowlist
18554
                                                                  ) AS relmgr_number_tab_t
18555
                                                              )
18556
                                                      FROM DUAL
18557
                                                   ))
18558
                      UNION
18559
                      /* Base Views expanded */
18560
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18561
 
18562
                             --rel.pkg_state,
18563
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18564
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18565
                             pv.pv_description
18566
                        FROM planned rel,
18567
                             PACKAGES pkg,
18568
                             package_versions pv,
18569
                             views vi
18570
                       WHERE pv.pkg_id = pkg.pkg_id
18571
                         AND rel.pv_id = pv.pv_id
18572
                         AND rel.view_id = vi.view_id
18573
                         AND rel.view_id IN (
18574
                                SELECT *
18575
                                  FROM THE
18576
                                          (SELECT CAST
18577
                                                     (in_list_number
18578
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18579
                                                     )
18580
                                             FROM DUAL
18581
                                          ))
18582
                         AND rtag_id = rtagid) ord
18583
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18584
      ELSIF viewtype = 2
18585
      THEN
18586
         /*--- PERSONAL VIEW ---*/
18587
         OPEN recordset FOR
18588
            SELECT   *
18589
                FROM (
18590
                      /* Base Views collapsed */
18591
                      SELECT DISTINCT vi.view_id, vi.view_name,
18592
                                      TO_NUMBER (NULL) AS pkg_state,
18593
                                      TO_NUMBER (NULL) AS deprecated_state,
18594
                                      TO_NUMBER (NULL) AS pv_id,
18595
                                      NULL AS pkg_name, NULL AS pkg_version,
18596
                                      NULL AS dlocked, NULL AS pv_description
18597
                                 FROM planned rel, view_settings vs, views vi
18598
                                WHERE rel.view_id = vi.view_id
18599
                                  AND vs.view_id = rel.view_id
18600
                                  AND vs.user_id = userid
18601
                                  AND rtag_id = rtagid
18602
                                  AND rel.view_id NOT IN (
18603
                                         SELECT *
18604
                                           FROM THE
18605
                                                   (SELECT CAST
18606
                                                              (in_list_number
18607
                                                                  (sviewidshowlist
18608
                                                                  ) AS relmgr_number_tab_t
18609
                                                              )
18610
                                                      FROM DUAL
18611
                                                   ))
18612
                      UNION
18613
                      /* Base Views expanded */
18614
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18615
 
18616
                             --rel.pkg_state,
18617
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18618
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18619
                             pv.pv_description
18620
                        FROM planned rel,
18621
                             PACKAGES pkg,
18622
                             package_versions pv,
18623
                             views vi,
18624
                             view_settings vs
18625
                       WHERE pv.pkg_id = pkg.pkg_id
18626
                         AND rel.pv_id = pv.pv_id
18627
                         AND rel.view_id = vi.view_id
18628
                         AND vs.view_id = vi.view_id
18629
                         AND vs.user_id = userid
18630
                         AND rel.view_id IN (
18631
                                SELECT *
18632
                                  FROM THE
18633
                                          (SELECT CAST
18634
                                                     (in_list_number
18635
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18636
                                                     )
18637
                                             FROM DUAL
18638
                                          ))
18639
                         AND rtag_id = rtagid
18640
                      UNION
18641
                      /* Private Views collapsed */
18642
                      SELECT vi.view_id, vi.view_name,
18643
                             TO_NUMBER (NULL) AS pkg_state,
18644
                             TO_NUMBER (NULL) AS deprecated_state,
18645
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
18646
                             NULL AS pkg_version, NULL AS dlocked,
18647
                             NULL AS pv_description
18648
                        FROM view_settings vs,
18649
                             view_def vd,
18650
                             views vi,
18651
                             planned rel,
18652
                             package_versions pv
18653
                       WHERE vs.view_id = vi.view_id
18654
                         AND rel.pv_id = pv.pv_id
18655
                         AND vd.pkg_id = pv.pkg_id
18656
                         AND vd.view_id = vi.view_id
18657
                         AND vi.base_view = 'N'
18658
                         AND rel.rtag_id = rtagid
18659
                         AND vs.user_id = userid
18660
                         AND vi.view_id NOT IN (
18661
                                SELECT *
18662
                                  FROM THE
18663
                                          (SELECT CAST
18664
                                                     (in_list_number
18665
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18666
                                                     )
18667
                                             FROM DUAL
18668
                                          ))
18669
                      UNION
18670
                      /* Private Views expanded */
18671
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
18672
 
18673
 
18674
                             --rel.pkg_state,
18675
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
18676
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
18677
                             pv.pv_description
18678
                        FROM users usr,
18679
                             view_settings vs,
18680
                             view_def vd,
18681
                             views vi,
18682
                             planned rel,
18683
                             PACKAGES pkg,
18684
                             package_versions pv
18685
                       WHERE vs.user_id = usr.user_id
18686
                         AND vs.view_id = vi.view_id
18687
                         AND vd.view_id = vi.view_id
18688
                         AND pv.pkg_id = pkg.pkg_id
18689
                         AND rel.pv_id = pv.pv_id
18690
                         AND rel.rtag_id = rtagid
18691
                         AND vd.pkg_id = pkg.pkg_id
18692
                         AND vi.base_view = 'N'
18693
                         AND vi.view_id IN (
18694
                                SELECT *
18695
                                  FROM THE
18696
                                          (SELECT CAST
18697
                                                     (in_list_number
18698
                                                              (sviewidshowlist) AS relmgr_number_tab_t
18699
                                                     )
18700
                                             FROM DUAL
18701
                                          ))
18702
                         AND usr.user_id = userid) ord
18703
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
18704
      END IF;
18705
   END;
18706
 
18707
/*-------------------------------------------------------------------------------------------------------*/
18708
   PROCEDURE get_view_content (
18709
      rtagid      IN       NUMBER,
18710
      viewid      IN       NUMBER,
18711
      recordset   OUT      typecur
18712
   )
18713
   IS
18714
      isbaseview   CHAR (1);
18715
   BEGIN
18716
      -- Check if the view is BASE VIEW
18717
      SELECT vi.base_view
18718
        INTO isbaseview
18719
        FROM views vi
18720
       WHERE vi.view_id = viewid;
18721
 
18722
      IF (isbaseview = 'Y')
18723
      THEN
18724
         -- Get Base view content
18725
         OPEN recordset FOR
18726
            SELECT   DECODE (rel.pkg_state,
18727
                             NULL, 0,
18728
                             rel.pkg_state
18729
                            ) AS pkg_state,
18730
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18731
                     pv.pkg_version, pv.dlocked, pv.pv_description,
18732
                     pv.build_type
18733
                FROM environment_view rel, PACKAGES pkg, package_versions pv
18734
               WHERE pv.pkg_id = pkg.pkg_id
18735
                 AND rel.pv_id = pv.pv_id
18736
                 AND rel.view_id = viewid
18737
                 AND rel.rtag_id = rtagid
18738
            ORDER BY UPPER (pkg.pkg_name);
18739
      ELSE
18740
         -- Get non base view content
18741
         OPEN recordset FOR
18742
            SELECT   DECODE (rel.pkg_state,
18743
                             NULL, 0,
18744
                             rel.pkg_state
18745
                            ) AS pkg_state,
18746
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
18747
                     pv.pkg_version, pv.dlocked, pv.pv_description,
18748
                     pv.build_type
18749
                FROM environment_view rel,
18750
                     PACKAGES pkg,
18751
                     package_versions pv,
18752
                     view_def vd
18753
               WHERE pv.pkg_id = pkg.pkg_id
18754
                 AND rel.pv_id = pv.pv_id
18755
                 AND rel.rtag_id = rtagid
18756
                 AND vd.view_id = viewid
18757
                 AND vd.pkg_id = pv.pkg_id
18758
            ORDER BY UPPER (pkg.pkg_name);
18759
      END IF;
18760
   END;
18761
 
18762
/*-------------------------------------------------------------------------------------------------------*/
18763
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
18764
      RETURN NUMBER
18765
   IS
18766
      envtab             NUMBER;
18767
      returnvalue        NUMBER;
18768
      return_not_found   NUMBER := -1;
18769
   BEGIN
18770
      envtab := get_package_area (pvid, rtagid);
18771
 
18772
      IF envtab = 0
18773
      THEN
18774
         -- WORK IN PROGRESS --
18775
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
18776
      ELSIF envtab = 1
18777
      THEN
18778
         -- PENDING --
18779
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
18780
      ELSIF envtab = 2
18781
      THEN
18782
         -- RELEASED --
18783
         returnvalue := pk_release.get_package_view (pvid, rtagid);
18784
      ELSE
18785
         -- This may be a Patch not located anywhere but unlocked
18786
         returnvalue := return_not_found;
18787
      END IF;
18788
 
18789
      RETURN returnvalue;
18790
   END;
18791
 
18792
/*-------------------------------------------------------------------------------------------------------*/
18793
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
18794
   IS
18795
      viewid          NUMBER;
18796
      envtab          NUMBER;
18797
      ispatch         CHAR (1) := NULL;
18798
      buildtype       CHAR (1) := NULL;
18799
      lastversionid   NUMBER;
18800
   BEGIN
18801
      -- Check if package is patch
18802
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
18803
        INTO ispatch, buildtype, lastversionid
18804
        FROM package_versions pv
18805
       WHERE pv.pv_id = pvid;
18806
 
18807
      -- Get ViewId
18808
      viewid := get_package_view (pvid, rtagid);
18809
      -- Remove from current area
18810
      envtab := pk_environment.get_package_area (pvid, rtagid);
18811
 
18812
      -- Make sure that package was in work-in-progress or pending before makeing it release
18813
      -- Exclude patches, ripple builds
18814
      IF (envtab < 0)
18815
      THEN
18816
         -- Not found in work-in-progress or pending
18817
         IF (ispatch IS NULL) AND (buildtype = 'M')
18818
         THEN
18819
            raise_application_error (-20000,
18820
                                     'This package cannot be released here.'
18821
                                    );
18822
         END IF;
18823
      END IF;
18824
 
18825
      -- Log
18826
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
18827
 
18828
      IF envtab = 0
18829
      THEN
18830
         -- WORK IN PROGRESS --
18831
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
18832
      ELSIF envtab = 1
18833
      THEN
18834
         -- PENDING --
18835
         pk_planned.remove_package (pvid, rtagid, userid);
18836
      END IF;
18837
 
18838
      -- Change package state
18839
      pk_package.change_state (pvid, 'Y', userid);
18840
 
18841
      -- Make sure it is valid BASE VIEW
18842
      IF viewid < 1
18843
      THEN
18844
         viewid := 7;                            -- This is default base view
18845
      END IF;
18846
 
18847
      IF (ispatch IS NULL)
18848
      THEN
18849
         -- Add package to new area
18850
         pk_release.add_package (pvid, viewid, rtagid, userid);
18851
      END IF;
18852
 
18853
      -- Now do post Release Actions
18854
      pk_release.run_post_actions (pvid, rtagid);
18855
 
18856
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
18857
      DELETE FROM do_not_ripple
18858
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
18859
 
18860
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
18861
      DELETE FROM advisory_ripple
18862
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
18863
 
18864
      -- Log
18865
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
18866
   END;
18867
 
18868
/*-------------------------------------------------------------------------------------------------------*/
18869
   PROCEDURE auto_make_release (
18870
      pvid            IN   NUMBER,
18871
      rtagid          IN   NUMBER,
18872
      userid          IN   NUMBER,
18873
      vext            IN   package_versions.v_ext%TYPE,
18874
      ssv_ext         IN   package_versions.v_ext%TYPE,
18875
      clonefrompvid   IN   NUMBER
18876
   )
18877
   IS
18878
      viewid          NUMBER;
18879
      envtab          NUMBER;
18880
      ispatch         CHAR (1) := NULL;
18881
      buildtype       CHAR (1) := NULL;
18882
      lastversionid   NUMBER;
18883
   BEGIN
18884
      -- Check if package is patch
18885
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
18886
        INTO ispatch, buildtype, lastversionid
18887
        FROM package_versions pv
18888
       WHERE pv.pv_id = pvid;
18889
 
18890
      IF vext <> ssv_ext
18891
      THEN
18892
         -- Get ViewId
18893
         viewid := get_package_view (clonefrompvid, rtagid);
18894
         -- Remove from current area
18895
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
18896
      ELSE
18897
         -- Get ViewId
18898
         viewid := get_package_view (pvid, rtagid);
18899
         -- Remove 
18900
from current area
18901
         envtab := pk_environment.get_package_area (pvid, rtagid);
18902
      END IF;
18903
 
18904
      -- Make sure that package was in work-in-progress or pending before makeing it release
18905
      -- Exclude patches, ripple builds
18906
      IF (envtab < 0)
18907
      THEN
18908
         -- Not found in work-in-progress or pending
18909
         IF (ispatch IS NULL) AND (buildtype = 'M')
18910
         THEN
18911
            raise_application_error (-20000,
18912
                                     'This package cannot be released here.'
18913
                                    );
18914
         END IF;
18915
      END IF;
18916
 
18917
      -- Log
18918
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
18919
 
18920
      IF vext <> ssv_ext
18921
      THEN
18922
         IF envtab = 0
18923
         THEN
18924
            -- WORK IN PROGRESS --
18925
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
18926
                                                userid);
18927
         ELSIF envtab = 1
18928
         THEN
18929
            -- PENDING --
18930
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
18931
         ELSIF envtab = 2
18932
         THEN
18933
            -- RELEASED --
18934
            pk_release.remove_package (clonefrompvid, rtagid, userid);
18935
         END IF;
18936
      ELSE
18937
         IF envtab = 0
18938
         THEN
18939
            -- WORK IN PROGRESS --
18940
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
18941
         ELSIF envtab = 1
18942
         THEN
18943
            -- PENDING --
18944
            pk_planned.remove_package (pvid, rtagid, userid);
18945
         END IF;
18946
      END IF;
18947
 
18948
      -- Change package state
18949
      pk_package.change_state (pvid, 'Y', userid);
18950
 
18951
      -- Make sure it is valid BASE VIEW
18952
      IF viewid < 1
18953
      THEN
18954
         viewid := 7;                            -- This is default base view
18955
      END IF;
18956
 
18957
      IF (ispatch IS NULL)
18958
      THEN
18959
         -- Add package to new area
18960
         pk_release.add_package (pvid, viewid, rtagid, userid);
18961
      END IF;
18962
 
18963
      -- Now do post Release Actions
18964
      pk_release.run_post_actions (pvid, rtagid);
18965
      -- Now update the Dash_Board Table (DEPRECATED)
18966
      pk_rmapi.update_dash_board (rtagid);
18967
 
18968
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
18969
      DELETE FROM do_not_ripple
18970
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
18971
 
18972
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
18973
      DELETE FROM advisory_ripple
18974
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
18975
 
18976
      -- Log
18977
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
18978
   END;
18979
 
18980
/*-------------------------------------------------------------------------------------------------------*/
18981
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
18982
   IS
18983
      viewid   NUMBER;
18984
      envtab   NUMBER;
18985
   BEGIN
18986
      -- Get ViewId
18987
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
18988
      viewid := get_package_view (pvid, rtagid);
18989
      -- Remove from current area
18990
      envtab := pk_environment.get_package_area (pvid, rtagid);
18991
      -- Log
18992
      log_action (pvid,
18993
                  'action',
18994
                  userid,
18995
                  'Start of Make Package UnRelease...'
18996
                 );
18997
 
18998
      IF envtab = 2
18999
      THEN
19000
         -- RELEASE AREA --
19001
         pk_release.remove_package (pvid, rtagid, userid);
19002
      ELSIF envtab = 1
19003
      THEN
19004
         -- PENDING --
19005
         pk_planned.remove_package (pvid, rtagid, userid);
19006
      END IF;
19007
 
19008
      -- Change package state
19009
      pk_package.change_state (pvid, 'N', userid);
19010
 
19011
      -- Make sure it is valid BASE VIEW
19012
      IF viewid < 1
19013
      THEN
19014
         viewid := 7;                            -- This is default base view
19015
      END IF;
19016
 
19017
      -- Add package to new area
19018
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
19019
      -- Now do post Release Actions
19020
      pk_release.run_post_actions (pvid, rtagid);
19021
      -- Log
19022
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
19023
   END;
19024
 
19025
/*-------------------------------------------------------------------------------------------------------*/
19026
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
19027
   IS
19028
      viewid      NUMBER;
19029
      ispatch     CHAR (1) := NULL;
19030
      buildtype   CHAR (1) := NULL;
19031
   BEGIN
19032
      -- Check if package is patch
19033
      SELECT pv.is_patch, pv.build_type
19034
        INTO ispatch, buildtype
19035
        FROM package_versions pv
19036
       WHERE pv.pv_id = pvid;
19037
 
19038
      -- Get ViewId
19039
      viewid := get_package_view (pvid, rtagid);
19040
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
19041
 
19042
      -- Log
19043
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
19044
 
19045
      IF (ispatch IS NULL)
19046
      THEN
19047
         -- Remove from current area
19048
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
19049
         -- Change package state
19050
         pk_package.change_state (pvid, 'P', userid);
19051
         -- Add package to new area
19052
         pk_planned.add_package (pvid, viewid, rtagid, userid);
19053
      END IF;
19054
 
19055
      -- Log
19056
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
19057
   END;
19058
 
19059
/*-------------------------------------------------------------------------------------------------------*/
19060
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
19061
   IS
19062
   BEGIN
19063
      -- Log
19064
      log_action (pvid,
19065
                  'action',
19066
                  userid,
19067
                  'Start of Package Pending Approval...'
19068
                 );
19069
      -- Change package state
19070
      pk_package.change_state (pvid, 'A', userid);
19071
      -- Log
19072
      log_action (pvid, 'action', userid,
19073
                  'End of Package Pending Approval...');
19074
   END;
19075
 
19076
/*-------------------------------------------------------------------------------------------------------*/
19077
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
19078
   IS
19079
      viewid   NUMBER;
19080
   BEGIN
19081
      -- Get ViewId
19082
      viewid := get_package_view (pvid, rtagid);
19083
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
19084
 
19085
      -- Log
19086
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
19087
      -- Remove from current area
19088
      pk_planned.remove_package (pvid, rtagid, userid);
19089
      -- Change package state
19090
      pk_package.change_state (pvid, 'R', userid);
19091
      -- Add package to new area
19092
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
19093
      -- Log
19094
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
19095
   END;
19096
 
19097
/*-------------------------------------------------------------------------------------------------------*/
19098
   PROCEDURE change_package_view (
19099
      pvid        IN   NUMBER,
19100
      rtagid      IN   NUMBER,
19101
      newviewid   IN   NUMBER
19102
   )
19103
   IS
19104
      envtab   NUMBER;
19105
   BEGIN
19106
      envtab := pk_environment.get_package_area (pvid, rtagid);
19107
 
19108
      IF envtab = 0
19109
      THEN
19110
         -- WORK IN PROGRESS --
19111
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
19112
      ELSIF envtab = 1
19113
      THEN
19114
         -- PENDING --
19115
         pk_planned.change_package_view (pvid, rtagid, newviewid);
19116
      ELSIF envtab = 2
19117
      THEN
19118
         -- RELEASED --
19119
         pk_release.change_package_view (pvid, rtagid, newviewid);
19120
      END IF;
19121
   END;
19122
 
19123
/*-------------------------------------------------------------------------------------------------------*/
19124
   PROCEDURE find_package (
19125
      skeyword      IN       VARCHAR2,
19126
      nrtagid       IN       NUMBER,
19127
      nsearcharea   IN       NUMBER,
19128
      recordset     OUT      typecur
19129
   )
19130
   IS
19131
   BEGIN
19132
      IF nsearcharea = 0
19133
      THEN
19134
         /* Search Work In Progress */
19135
         OPEN recordset FOR
19136
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
19137
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
19138
                     pv.modified_stamp, usr.full_name, usr.user_email
19139
                FROM views vi,
19140
                     work_in_progress rc,
19141
                     PACKAGES pkg,
19142
                     package_versions pv,
19143
                     users usr
19144
               WHERE rc.view_id = vi.view_id
19145
                 AND rc.pv_id = pv.pv_id
19146
                 AND pkg.pkg_id = pv.pkg_id
19147
 
19148
               AND pv.modifier_id = usr.user_id
19149
                 AND rc.rtag_id = nrtagid
19150
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
19151
            ORDER BY UPPER (pkg.pkg_name);
19152
      ELSIF nsearcharea = 1
19153
      THEN
19154
         /* Search Pending */
19155
         OPEN recordset FOR
19156
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
19157
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
19158
                     pv.modified_stamp, usr.full_name, usr.user_email
19159
                FROM views vi,
19160
                     planned rc,
19161
                     PACKAGES pkg,
19162
                     package_versions pv,
19163
                     users usr
19164
               WHERE rc.view_id = vi.view_id
19165
                 AND rc.pv_id = pv.pv_id
19166
                 AND pkg.pkg_id = pv.pkg_id
19167
                 AND pv.modifier_id = usr.user_id
19168
                 AND rc.rtag_id = nrtagid
19169
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
19170
            ORDER BY UPPER (pkg.pkg_name);
19171
      ELSIF nsearcharea = 2
19172
      THEN
19173
         /* Search Released */
19174
         OPEN recordset FOR
19175
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
19176
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
19177
                     pv.modified_stamp, usr.full_name, usr.user_email
19178
                FROM views vi,
19179
                     release_content rc,
19180
                     PACKAGES pkg,
19181
                     package_versions pv,
19182
                     users usr
19183
               WHERE rc.base_view_id = vi.view_id
19184
                 AND rc.pv_id = pv.pv_id
19185
                 AND pkg.pkg_id = pv.pkg_id
19186
                 AND pv.modifier_id = usr.user_id
19187
                 AND rc.rtag_id = nrtagid
19188
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
19189
            ORDER BY UPPER (pkg.pkg_name);
19190
      ELSIF nsearcharea = 3
19191
      THEN
19192
         /* Search ALL */
19193
         OPEN recordset FOR
19194
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
19195
                     pv.pv_id, pv.pkg_version, pv.comments,
19196
                     pv.modified_stamp, usr.full_name, usr.user_email
19197
                FROM views vi,
19198
                     environment_view rc,
19199
                     PACKAGES pkg,
19200
                     package_versions pv,
19201
                     users usr
19202
               WHERE rc.view_id = vi.view_id
19203
                 AND rc.pv_id = pv.pv_id
19204
                 AND pkg.pkg_id = pv.pkg_id
19205
                 AND pv.modifier_id = usr.user_id
19206
                 AND rc.rtag_id = nrtagid
19207
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
19208
            ORDER BY UPPER (pkg.pkg_name);
19209
      END IF;
19210
   END;
19211
 
19212
/*-------------------------------------------------------------------------------------------------------*/
19213
   PROCEDURE find_file (
19214
      skeyword      IN       VARCHAR2,
19215
      nrtagid       IN       NUMBER,
19216
      nsearcharea   IN       NUMBER,
19217
      npagesize     IN       NUMBER,
19218
      recordset     OUT      typecur
19219
   )
19220
   IS
19221
   BEGIN
19222
      IF nsearcharea = 0
19223
      THEN
19224
         /* Search Work In Progress */
19225
         OPEN recordset FOR
19226
            SELECT   qry.*
19227
                FROM (
19228
                      /* File search on Packages */
19229
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19230
                             pv.pv_id, pv.pkg_version, art.crc_cksum
19231
                        FROM work_in_progress rc,
19232
                             PACKAGES pkg,
19233
                             package_versions pv,
19234
                             release_components art
19235
                       WHERE rc.pv_id = art.pv_id
19236
                         AND pv.pkg_id = pkg.pkg_id
19237
                         AND rc.pv_id = pv.pv_id
19238
                         AND rc.rtag_id = nrtagid
19239
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19240
                      UNION ALL
19241
                      /* File search on Products */
19242
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19243
                             pv.pv_id, pv.pkg_version, art.crc_cksum
19244
                        FROM work_in_progress rc,
19245
                             PACKAGES pkg,
19246
                             package_versions pv,
19247
                             product_components art
19248
                       WHERE rc.pv_id = art.pv_id
19249
                         AND pv.pkg_id = pkg.pkg_id
19250
                         AND rc.pv_id = pv.pv_id
19251
                         AND rc.rtag_id = nrtagid
19252
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
19253
               WHERE ROWNUM <= npagesize
19254
            ORDER BY UPPER (qry.pkg_name);
19255
      ELSIF nsearcharea = 1
19256
      THEN
19257
         /* Search Pending */
19258
         OPEN recordset FOR
19259
            SELECT   qry.*
19260
                FROM (
19261
                      /* File search on Packages */
19262
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19263
                             pv.pv_id, pv.pkg_version, art.crc_cksum
19264
                        FROM planned rc,
19265
                             PACKAGES pkg,
19266
                             package_versions pv,
19267
                             release_components art
19268
                       WHERE rc.pv_id = art.pv_id
19269
                         AND pv.pkg_id = pkg.pkg_id
19270
                         AND rc.pv_id = pv.pv_id
19271
                         AND rc.rtag_id = nrtagid
19272
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19273
                      UNION ALL
19274
                      /* File search on Products */
19275
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19276
                             pv.pv_id, pv.pkg_version, art.crc_cksum
19277
                        FROM planned rc,
19278
                             PACKAGES pkg,
19279
                             package_versions pv,
19280
                             product_components art
19281
                       WHERE rc.pv_id = art.pv_id
19282
                         AND pv.pkg_id = pkg.pkg_id
19283
                         AND rc.pv_id = pv.pv_id
19284
                         AND rc.rtag_id = nrtagid
19285
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
19286
               WHERE ROWNUM <= npagesize
19287
            ORDER BY UPPER (qry.pkg_name);
19288
      ELSIF nsearcharea = 2
19289
      THEN
19290
         /* Search Released */
19291
         OPEN recordset FOR
19292
            SELECT   qry.*
19293
                FROM (
19294
                      /* File search on Packages */
19295
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19296
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19297
                             NULL AS patch_id
19298
                        FROM release_content rc,
19299
                             PACKAGES pkg,
19300
                             package_versions pv,
19301
                             release_components art
19302
                       WHERE rc.pv_id = art.pv_id
19303
                         AND pv.pkg_id = pkg.pkg_id
19304
                         AND rc.pv_id = pv.pv_id
19305
                         AND rc.rtag_id = nrtagid
19306
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19307
                      UNION ALL
19308
                      /* File search on Products */
19309
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19310
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19311
                             NULL AS patch_id
19312
                        FROM release_content rc,
19313
                             PACKAGES pkg,
19314
                             package_versions pv,
19315
                             product_components art
19316
                       WHERE rc.pv_id = art.pv_id
19317
                         AND pv.pkg_id = pkg.pkg_id
19318
                         AND rc.pv_id = pv.pv_id
19319
                         AND rc.rtag_id = nrtagid
19320
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19321
                      UNION ALL
19322
                      /* File search on Patches */
19323
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19324
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19325
                             DECODE (art.file_path,
19326
                                     NULL, pp.patch_id,
19327
                                     NULL
19328
 
19329
    ) AS patch_id
19330
                        FROM release_content rc,
19331
                             PACKAGES pkg,
19332
                             package_versions pv,
19333
                             release_components art,
19334
                             package_patches pp
19335
                       WHERE pv.pv_id = pp.pv_id
19336
                         AND pv.pkg_id = pkg.pkg_id
19337
                         AND rc.rtag_id = nrtagid
19338
                         AND art.pv_id = pp.patch_id
19339
                         AND rc.pv_id = pp.pv_id
19340
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
19341
               WHERE ROWNUM <= npagesize
19342
            ORDER BY UPPER (qry.pkg_name);
19343
      ELSIF nsearcharea = 3
19344
      THEN
19345
         /* Search ALL */
19346
         OPEN recordset FOR
19347
            SELECT   qry.*
19348
                FROM (
19349
                      /* File search on Packages */
19350
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19351
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19352
                             NULL AS patch_id
19353
                        FROM environment_view rc,
19354
                             PACKAGES pkg,
19355
                             package_versions pv,
19356
                             release_components art
19357
                       WHERE rc.pv_id = art.pv_id
19358
                         AND pv.pkg_id = pkg.pkg_id
19359
                         AND rc.pv_id = pv.pv_id
19360
                         AND rc.rtag_id = nrtagid
19361
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19362
                      UNION ALL
19363
                      /* File search on Products */
19364
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19365
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19366
                             NULL AS patch_id
19367
                        FROM environment_view rc,
19368
                             PACKAGES pkg,
19369
                             package_versions pv,
19370
                             product_components art
19371
                       WHERE rc.pv_id = art.pv_id
19372
                         AND pv.pkg_id = pkg.pkg_id
19373
                         AND rc.pv_id = pv.pv_id
19374
                         AND rc.rtag_id = nrtagid
19375
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
19376
                      UNION ALL
19377
                      /* File search on Patches */
19378
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
19379
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
19380
                             DECODE (art.file_path,
19381
                                     NULL, pp.patch_id,
19382
                                     NULL
19383
                                    ) AS patch_id
19384
                        FROM release_content rc,
19385
                             PACKAGES pkg,
19386
                             package_versions pv,
19387
                             release_components art,
19388
                             package_patches pp
19389
                       WHERE pv.pv_id = pp.pv_id
19390
                         AND pv.pkg_id = pkg.pkg_id
19391
                         AND rc.rtag_id = nrtagid
19392
                         AND art.pv_id = pp.patch_id
19393
                         AND rc.pv_id = pp.pv_id
19394
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
19395
               WHERE ROWNUM <= npagesize
19396
            ORDER BY UPPER (qry.pkg_name);
19397
      END IF;
19398
   END;
19399
 
19400
/*-------------------------------------------------------------------------------------------------------*/
19401
   PROCEDURE get_prodrelease_items (
19402
      rtagid             IN       NUMBER,
19403
      ntruerecordcount   OUT      NUMBER,
19404
      recordset          OUT      typecur
19405
   )
19406
   IS
19407
   BEGIN
19408
      -- Get true record count n the number of integration products
19409
      SELECT COUNT (rc.pv_id)
19410
        INTO ntruerecordcount
19411
        FROM release_content rc
19412
       WHERE rc.rtag_id = rtagid;
19413
 
19414
      OPEN recordset FOR
19415
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
19416
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
19417
                  pv.pkg_version, pv.dlocked, pv.pv_description
19418
             FROM release_content rel,
19419
                  PACKAGES pkg,
19420
                  package_versions pv,
19421
                  views vi
19422
            WHERE pv.pkg_id = pkg.pkg_id
19423
              AND rel.pv_id = pv.pv_id
19424
              AND rel.base_view_id = vi.view_id
19425
              AND pv.is_deployable = 'Y'
19426
              AND rtag_id = rtagid
19427
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
19428
                                              FROM deployment_manager.os_contents)
19429
              AND rel.product_state IS NULL
19430
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
19431
   END;
19432
 
19433
/*-------------------------------------------------------------------------------------------------------*/
19434
   PROCEDURE get_integration_items (
19435
      rtagid             IN       NUMBER,
19436
      ntruerecordcount   OUT      NUMBER,
19437
      recordset          OUT      typecur
19438
   )
19439
   IS
19440
   BEGIN
19441
      -- Get true record count n the number of integration products
19442
      SELECT COUNT (rc.pv_id)
19443
        INTO ntruerecordcount
19444
        FROM release_content rc
19445
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
19446
 
19447
      OPEN recordset FOR
19448
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
19449
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
19450
                  pv.pkg_version, pv.dlocked, pv.pv_description
19451
             FROM release_content rel,
19452
                  PACKAGES pkg,
19453
                  package_versions pv,
19454
                  views vi
19455
            WHERE pv.pkg_id = pkg.pkg_id
19456
              AND rel.pv_id = pv.pv_id
19457
              AND rel.base_view_id = vi.view_id
19458
              AND pv.is_deployable = 'Y'
19459
              AND rtag_id = rtagid
19460
              AND rel.product_state IN (1, 5)
19461
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
19462
   END;
19463
 
19464
/*-------------------------------------------------------------------------------------------------------*/
19465
   PROCEDURE get_test_items (
19466
      rtagid             IN       NUMBER,
19467
      ntruerecordcount   OUT      NUMBER,
19468
      recordset          OUT      typecur
19469
   )
19470
   IS
19471
   BEGIN
19472
      -- Get true record count n the number of test products
19473
      SELECT COUNT (rc.pv_id)
19474
        INTO ntruerecordcount
19475
        FROM release_content rc
19476
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
19477
 
19478
      OPEN recordset FOR
19479
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
19480
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
19481
                  pv.pkg_version, pv.dlocked, pv.pv_description
19482
             FROM release_content rel,
19483
                  PACKAGES pkg,
19484
                  package_versions pv,
19485
                  views vi
19486
            WHERE pv.pkg_id = pkg.pkg_id
19487
              AND rel.pv_id = pv.pv_id
19488
              AND rel.base_view_id = vi.view_id
19489
              AND pv.is_deployable = 'Y'
19490
              AND rtag_id = rtagid
19491
              AND rel.product_state = 2
19492
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
19493
   END;
19494
 
19495
/*-------------------------------------------------------------------------------------------------------*/
19496
   PROCEDURE get_deploy_items (
19497
      rtagid             IN       NUMBER,
19498
      ntruerecordcount   OUT      NUMBER,
19499
      recordset          OUT      typecur
19500
   )
19501
   IS
19502
   BEGIN
19503
      -- Get true record count n the number of deploy products
19504
      SELECT COUNT (rc.pv_id)
19505
        INTO ntruerecordcount
19506
        FROM release_content rc
19507
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
19508
 
19509
      OPEN recordset FOR
19510
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
19511
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
19512
                  pv.pkg_version, pv.dlocked, pv.pv_description
19513
             FROM release_content rel,
19514
                  PACKAGES pkg,
19515
                  package_versions pv,
19516
                  views vi
19517
            WHERE pv.pkg_id = pkg.pkg_id
19518
              AND rel.pv_id = pv.pv_id
19519
              AND rel.base_view_id = vi.view_id
19520
              AND pv.is_deployable = 'Y'
19521
              AND rtag_id = rtagid
19522
              AND rel.product_state IN (3, 5)
19523
              AND pv.pv_id NOT IN (SELECT DISTINCT 
19524
prod_id
19525
                                              FROM deployment_manager.os_contents)
19526
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
19527
   END;
19528
 
19529
/*-------------------------------------------------------------------------------------------------------*/
19530
   PROCEDURE get_reject_items (
19531
      rtagid             IN       NUMBER,
19532
      ntruerecordcount   OUT      NUMBER,
19533
      recordset          OUT      typecur
19534
   )
19535
   IS
19536
   BEGIN
19537
      -- Get true record count n the number of reject products
19538
      SELECT COUNT (rc.pv_id)
19539
        INTO ntruerecordcount
19540
        FROM release_content rc
19541
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
19542
 
19543
      OPEN recordset FOR
19544
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
19545
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
19546
                  pv.pkg_version, pv.dlocked, pv.pv_description
19547
             FROM release_content rel,
19548
                  PACKAGES pkg,
19549
                  package_versions pv,
19550
                  views vi
19551
            WHERE pv.pkg_id = pkg.pkg_id
19552
              AND rel.pv_id = pv.pv_id
19553
              AND rel.base_view_id = vi.view_id
19554
              AND pv.is_deployable = 'Y'
19555
              AND rtag_id = rtagid
19556
              AND rel.product_state = 4
19557
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
19558
   END;
19559
/*-------------------------------------------------------------------------------------------------------*/
19560
END pk_environment;
19561
/
19562
 
19563
ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" 
19564
  COMPILE BODY 
19565
    PLSQL_OPTIMIZE_LEVEL=  2
19566
    PLSQL_CODE_TYPE=  INTERPRETED
19567
    PLSQL_DEBUG=  TRUE
19568
 REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:20'
19569
/
19570
 
19571
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PACKAGE" 
19572
IS
19573
/*
19574
------------------------------
19575
||  Last Modified:  J. Tweddle
19576
||  Modified Date:  24/08/2007
19577
||  Body Version:   1.8
19578
------------------------------
19579
*/
19580
 
19581
   /*-------------------------------------------------------------------------------------------------------*/
19582
   PROCEDURE new_version (
19583
      nlastpvid                   IN       NUMBER,
19584
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
19585
      cbuildtype                  IN       CHAR,
19586
      nsettopvid                  IN       NUMBER DEFAULT NULL,
19587
      nrtagid                     IN       NUMBER,
19588
      nuserid                     IN       NUMBER,
19589
      enumissues_state_imported   IN       NUMBER,
19590
      returnpvid                  OUT      NUMBER
19591
   )
19592
   IS
19593
      origpkg_id                   package_versions.pkg_id%TYPE;
19594
      origdlocked                  package_versions.dlocked%TYPE;
19595
      ssv_mm                       package_versions.v_mm%TYPE;
19596
      ssv_nmm                      package_versions.v_nmm%TYPE;
19597
      ssv_ext                      package_versions.v_ext%TYPE;
19598
      spackageversion              VARCHAR2 (4000);
19599
      nissuestypes                 NUMBER;
19600
      nviewid                      NUMBER;
19601
      reccount                     NUMBER;
19602
      isreleased                   package_versions.dlocked%TYPE       := 'N';
19603
      slabel                       VARCHAR2 (4000)                    := NULL;
19604
 
19605
      CURSOR package_versions_cur
19606
      IS
19607
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
19608
           FROM package_versions pv
19609
          WHERE pv.pkg_version = snewpkgversion
19610
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
19611
                                         FROM package_versions origpv
19612
                                        WHERE origpv.pv_id = nlastpvid);
19613
 
19614
      package_versions_rec         package_versions_cur%ROWTYPE;
19615
 
19616
      CURSOR clone_package_versions_cur
19617
      IS
19618
         SELECT DISTINCT pkg_id, dlocked
19619
                    FROM package_versions
19620
                   WHERE pv_id = nlastpvid;
19621
 
19622
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
19623
   BEGIN
19624
      spackageversion := snewpkgversion;
19625
 
19626
      IF nsettopvid IS NULL
19627
      THEN
19628
         -- SetToPv_id is not supplied, hence proceed.
19629
 
19630
         /* ---------------------------------------------------- */
19631
/* Find id package_version exists                       */
19632
/* ---------------------------------------------------- */
19633
         OPEN package_versions_cur;
19634
 
19635
         FETCH package_versions_cur
19636
          INTO package_versions_rec;
19637
 
19638
         IF package_versions_cur%NOTFOUND
19639
         THEN
19640
            ---  Create brand new package ---
19641
            SELECT seq_pv_id.NEXTVAL
19642
              INTO returnpvid
19643
              FROM DUAL;
19644
 
19645
            -- Split Version to get extention + other
19646
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
19647
 
19648
            -- Get previous package to clone from
19649
            OPEN clone_package_versions_cur;
19650
 
19651
            FETCH clone_package_versions_cur
19652
             INTO clone_package_versions_rec;
19653
 
19654
            origpkg_id := clone_package_versions_rec.pkg_id;
19655
            origdlocked := clone_package_versions_rec.dlocked;
19656
 
19657
            CLOSE clone_package_versions_cur;
19658
 
19659
            -- Automated built config
19660
            IF (cbuildtype = 'A')
19661
            THEN
19662
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
19663
                                    -- Make sure that version is still unique
19664
            END IF;
19665
 
19666
            -- Clone Package Version Details --
19667
            INSERT INTO package_versions
19668
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
19669
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
19670
                         v_ext, src_path, pv_description, pv_overview,
19671
                         last_pv_id, owner_id, is_deployable,
19672
                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
19673
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
19674
                      spackageversion AS pkg_version, 'N' AS dlocked,
19675
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
19676
                      ora_sysdatetime AS modified_stamp,
19677
                      nuserid AS modifier_id, ssv_mm AS v_mm,
19678
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
19679
                      pv.pv_description, pv.pv_overview,
19680
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
19681
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
19682
                 FROM package_versions pv
19683
                WHERE pv.pv_id = nlastpvid;
19684
 
19685
            -- Set Issues Type for cloning ---
19686
            IF origdlocked = 'Y'
19687
            THEN
19688
               nissuestypes := enumissues_state_imported;
19689
            ELSE
19690
               nissuestypes := NULL;
19691
            END IF;
19692
 
19693
            -- Update Label for automated built
19694
            IF (cbuildtype = 'A')
19695
            THEN
19696
               slabel := get_automated_label (returnpvid);
19697
 
19698
               UPDATE package_versions pv
19699
                  SET pv.pkg_label = slabel
19700
                WHERE pv.pv_id = returnpvid;
19701
            END IF;
19702
 
19703
            basic_clone (nlastpvid,
19704
                         returnpvid,
19705
                         nrtagid,
19706
                         nuserid,
19707
                         origpkg_id,
19708
                         nissuestypes
19709
                        );
19710
         ELSE
19711
            --- Package already exists, hence reuse ---
19712
            returnpvid := package_versions_rec.pv_id;
19713
            isreleased := package_versions_rec.dlocked;
19714
         END IF;
19715
 
19716
         CLOSE package_versions_cur;
19717
      ELSE
19718
         returnpvid := nsettopvid;
19719
      END IF;
19720
   END new_version;
19721
 
19722
/*-------------------------------------------------------------------------------------------------------*/
19723
   PROCEDURE change_state (
19724
      pvid       IN   NUMBER,
19725
      newstate   IN   package_versions.dlocked%TYPE,
19726
      userid     IN   NUMBER
19727
   )
19728
   IS
19729
   BEGIN
19730
      -- Set package in Released mode
19731
      UPDATE package_versions pv
19732
         SET pv.dlocked = newstate,
19733
             pv.modified_stamp = ora_sysdatetime,
19734
             pv.modifier_id = userid
19735
       WHERE pv.pv_id = pvid;
19736
 
19737
      -- Log action --
19738
      IF newstate = 'Y'
19739
      THEN
19740
         -- RELEASED --
19741
         log_action (pvid,
19742
                     'makeofficial',
19743
                     userid,
19744
                     'Package state change to: Released'
19745
                    );
19746
      ELSIF newstate = 'N'
19747
      THEN
19748
         -- UNLOCKED --
19749
         log_action (pvid,
19750
                     'makeunofficial',
19751
                     userid,
19752
                     'Package state change to: Ulocked'
19753
                    );
19754
      ELSIF newstate = 'P'
19755
      THEN
19756
         -- PENDING APPROVAL --
19757
         log_action (pvid,
19758
                     'add_to_planned',
19759
                     userid,
19760
                     'Package state change to: Pending Approval'
19761
                    );
19762
      ELSIF newstate = 'R'
19763
      THEN
19764
         -- REJECTED --
19765
         log_action (pvid,
19766
                     'reject_package',
19767
                     userid,
19768
                     'Package state change to: Rejected'
19769
                    );
19770
      ELSIF newstate = 'A'
19771
      THEN
19772
         -- APPROVED --
19773
         log_action (pvid,
19774
                     'approve_package',
19775
                     userid,
19776
                     'Package state change to: Approved'
19777
                    );
19778
      END IF;
19779
   END;
19780
 
19781
/*-------------------------------------------------------------------------------------------------------*/
19782
   PROCEDURE destroy_package (
19783
      pvid               IN       NUMBER,
19784
      overridewarnings   IN       CHAR DEFAULT 'N',
19785
      problemstring      OUT      VARCHAR2
19786
   )
19787
   IS
19788
      LOCKED     CHAR;
19789
      pkgid      NUMBER;
19790
      ROWCOUNT   NUMBER;
19791
   BEGIN
19792
      /*
19793
      || This will destroy all package details from database.
19794
      || It will only be used to remove unwanted work in progress packages,
19795
      || or mestaken versions
19796
      */
19797
 
19798
      /*--------------- Business Rules Here 
19799
-------------------*/
19800
      problemstring := NULL;
19801
 
19802
      IF overridewarnings = 'N'
19803
      THEN
19804
         -- Package must not be official
19805
         SELECT pv.dlocked
19806
           INTO LOCKED
19807
           FROM package_versions pv
19808
          WHERE pv.pv_id = pvid;
19809
 
19810
         IF LOCKED = 'Y'
19811
         THEN
19812
            problemstring :=
19813
                  problemstring
19814
               || '- Package is locked and released.'
19815
               || UTL_TCP.crlf;
19816
         END IF;
19817
 
19818
         -- Cannot remove if used in BOMs
19819
         SELECT COUNT (osc.prod_id)
19820
           INTO ROWCOUNT
19821
           FROM deployment_manager.os_contents osc
19822
          WHERE osc.prod_id = pvid;
19823
 
19824
         IF ROWCOUNT > 0
19825
         THEN
19826
            problemstring :=
19827
                  problemstring
19828
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
19829
               || UTL_TCP.crlf;
19830
         END IF;
19831
 
19832
         -- Cannot remove if Referenced as build dependency
19833
         SELECT COUNT (dep.pv_id)
19834
           INTO ROWCOUNT
19835
           FROM package_dependencies dep
19836
          WHERE dep.dpv_id = pvid;
19837
 
19838
         IF ROWCOUNT > 0
19839
         THEN
19840
            problemstring :=
19841
                  problemstring
19842
               || '- Package is referenced by other package as build dependency.'
19843
               || UTL_TCP.crlf;
19844
         END IF;
19845
 
19846
         -- Cannot remove if Referenced as runtime dependency
19847
         SELECT COUNT (rd.pv_id)
19848
           INTO ROWCOUNT
19849
           FROM runtime_dependencies rd
19850
          WHERE rd.rtd_id = pvid;
19851
 
19852
         IF ROWCOUNT > 0
19853
         THEN
19854
            problemstring :=
19855
                  problemstring
19856
               || '- Package is referenced by other package as runtime dependency.'
19857
               || UTL_TCP.crlf;
19858
         END IF;
19859
 
19860
         -- Cannot remove if Referenced as patch
19861
         SELECT COUNT (pp.pv_id)
19862
           INTO ROWCOUNT
19863
           FROM package_patches pp
19864
          WHERE pp.patch_id = pvid;
19865
 
19866
         IF ROWCOUNT > 0
19867
         THEN
19868
            problemstring :=
19869
                  problemstring
19870
               || '- Package is used as patch by other package.'
19871
               || UTL_TCP.crlf;
19872
         END IF;
19873
      END IF;
19874
 
19875
/*-------------------------------------------------------*/
19876
      IF (problemstring IS NULL)
19877
      THEN
19878
         --- Remove From Work in Progress
19879
         DELETE FROM work_in_progress wip
19880
               WHERE wip.pv_id = pvid;
19881
 
19882
         --- Remove From Pending
19883
         DELETE FROM planned pl
19884
               WHERE pl.pv_id = pvid;
19885
 
19886
         --- Remove From Released area
19887
         DELETE FROM release_content rc
19888
               WHERE rc.pv_id = pvid;
19889
 
19890
         ---Remove From Package Processes
19891
         DELETE FROM package_processes pp
19892
               WHERE pp.pv_id = pvid;
19893
 
19894
         --- Remove Dependencies
19895
         DELETE FROM package_dependencies dep
19896
               WHERE dep.pv_id = pvid;
19897
 
19898
         DELETE FROM package_dependencies dep
19899
               WHERE dep.dpv_id = pvid;
19900
 
19901
         --- Remove Runtime dependencies
19902
         DELETE FROM runtime_dependencies rtd
19903
               WHERE rtd.pv_id = pvid;
19904
 
19905
         DELETE FROM runtime_dependencies rtd
19906
               WHERE rtd.rtd_id = pvid;
19907
 
19908
         --- Remove components
19909
         DELETE FROM product_components pc
19910
               WHERE pc.pv_id = pvid;
19911
 
19912
         DELETE FROM release_components rc
19913
               WHERE rc.pv_id = pvid;
19914
 
19915
         --- Remove From Notification History
19916
         DELETE FROM notification_history nh
19917
               WHERE nh.pv_id = pvid;
19918
 
19919
         --- Remove From Ignore Warnings
19920
         DELETE FROM ignore_warnings iw
19921
               WHERE iw.pv_id = pvid;
19922
 
19923
         --- Remove From Additional Notes
19924
         DELETE FROM additional_notes an
19925
               WHERE an.pv_id = pvid;
19926
 
19927
         --- Remove From CQ Issues
19928
         DELETE FROM cq_issues cq
19929
               WHERE cq.pv_id = pvid;
19930
 
19931
         --- Remove from Package Patches
19932
         DELETE FROM package_patches pp
19933
               WHERE pp.pv_id = pvid;
19934
 
19935
         DELETE FROM package_patches pp
19936
               WHERE pp.patch_id = pvid;
19937
 
19938
         --- Remove From Package Documents
19939
         DELETE FROM package_documents pd
19940
               WHERE pd.pv_id = pvid;
19941
 
19942
         --- Remove from Code Review
19943
         DELETE FROM code_reviews cr
19944
               WHERE cr.pv_id = pvid;
19945
 
19946
         --- Remove from Code Review URL
19947
         DELETE FROM code_review_url cru
19948
               WHERE cru.pv_id = pvid;
19949
 
19950
         --- Remove from Unit Tests
19951
         DELETE FROM unit_tests ut
19952
               WHERE ut.pv_id = pvid;
19953
 
19954
         --- Remove from Package BuildEnv
19955
         DELETE FROM package_build_env pbe
19956
               WHERE pbe.pv_id = pvid;
19957
 
19958
		 --- Remove from Package Build Info
19959
		 DELETE FROM package_build_info pbi
19960
		 	   WHERE pbi.pv_id = pvid;    
19961
 
19962
 
19963
         --- Remove from Build Order
19964
         DELETE FROM build_order bo
19965
               WHERE bo.pv_id = pvid;
19966
 
19967
         --- Remove from Note Manager
19968
         DELETE FROM note_manager nm
19969
               WHERE nm.nid = pvid;
19970
 
19971
         --- Remove from Action log
19972
         DELETE FROM action_log al
19973
               WHERE al.pv_id = pvid;
19974
 
19975
		 --- Remove from Do Not Ripple 
19976
		 DELETE FROM DO_NOT_RIPPLE dnr
19977
		 	   WHERE dnr.PV_ID = pvid;
19978
 
19979
		 --- Remove from Advisory Ripple 
19980
		 DELETE FROM ADVISORY_RIPPLE ar
19981
		 	   WHERE ar.PV_ID = pvid;			   
19982
 
19983
		 --- Remove from Jira Issues 
19984
		 DELETE FROM JIRA_ISSUES jira
19985
		 	   WHERE jira.PV_ID = pvid;
19986
 
19987
         --- Finally Remove From Package Versions
19988
         --- Get Package name
19989
         SELECT pv.pkg_id
19990
           INTO pkgid
19991
           FROM package_versions pv
19992
          WHERE pv.pv_id = pvid;
19993
 
19994
         DELETE FROM package_versions pv
19995
               WHERE pv.pv_id = pvid;
19996
 
19997
         --- Remove package name if not used any more
19998
         SELECT COUNT (pv.pv_id)
19999
           INTO ROWCOUNT
20000
           FROM package_versions pv
20001
          WHERE pv.pkg_id = pkgid;
20002
 
20003
         IF ROWCOUNT < 1
20004
         THEN
20005
            DELETE FROM PACKAGES pkg
20006
                  WHERE pkg.pkg_id = pkgid;
20007
         END IF;
20008
      END IF;
20009
   END;
20010
 
20011
/*-------------------------------------------------------------------------------------------------------*/
20012
   PROCEDURE new_patch (
20013
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
20014
      nparentpvid        IN       NUMBER,
20015
      spatchidlist       IN       VARCHAR2,
20016
      nuserid            IN       NUMBER,
20017
      returnpatchid      OUT      NUMBER
20018
   )
20019
   IS
20020
      patchpv_id           NUMBER;
20021
      parpkg_id            NUMBER;
20022
      lastinstallorder     NUMBER;
20023
      ispatchdlocked       package_versions.dlocked%TYPE;
20024
      ssv_mm               package_versions.v_mm%TYPE;
20025
      ssv_nmm              package_versions.v_nmm%TYPE;
20026
      ssv_ext              package_versions.v_ext%TYPE;
20027
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
20028
                                                                          ();
20029
 
20030
      CURSOR parent_cur
20031
      IS
20032
         SELECT pv.*, pkg.pkg_name
20033
           FROM package_versions pv, PACKAGES pkg
20034
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
20035
 
20036
      parent_rec           parent_cur%ROWTYPE;
20037
 
20038
      CURSOR patch_cur
20039
      IS
20040
         SELECT pv.*, pg.pkg_name
20041
           FROM package_versions pv, PACKAGES pg
20042
          WHERE pv.pkg_id = parpkg_id
20043
            AND pv.pkg_version = snewpatchversion
20044
            AND pv.pkg_id = pg.pkg_id;
20045
 
20046
      patch_rec            patch_cur%ROWTYPE;
20047
 
20048
      CURSOR releases_cur
20049
      IS
20050
         SELECT rc.pv_id
20051
           FROM release_content rc
20052
          WHERE rc.pv_id = patch_rec.pv_id;
20053
 
20054
      releases_rec         releases_cur%ROWTYPE;
20055
   BEGIN
20056
      -- Get Last Install Order
20057
      SELECT COUNT (*)
20058
        INTO lastinstallorder
20059
        FROM package_patches pp
20060
       WHERE pp.pv_id = nparentpvid;
20061
 
20062
      -- Get parent details
20063
      OPEN parent_cur;
20064
 
20065
      FETCH parent_cur
20066
       INTO parent_rec;
20067
 
20068
      parpkg_id := parent_rec.pkg_id;
20069
 
20070
      -- Find if patch exists in database
20071
      OPEN patch_cur;
20072
 
20073
      FETCH patch_cur
20074
       INTO patch_rec;
20075
 
20076
      -- Parent must be official
20077
      IF parent_rec.dlocked = 'Y'
20078
      THEN
20079
         IF patch_cur%NOTFOUND
20080
         THEN
20081
            ispatchdlocked 
20082
:= 'N';
20083
 
20084
            -- Create new patch version --
20085
            SELECT seq_pv_id.NEXTVAL
20086
              INTO patchpv_id
20087
              FROM DUAL;
20088
 
20089
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
20090
 
20091
            INSERT INTO package_versions
20092
                        (pv_id, pkg_id, pkg_version,
20093
                         dlocked, created_stamp, creator_id,
20094
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
20095
                         src_path,
20096
                         pv_description,
20097
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
20098
						 is_autobuildable, ripple_field
20099
                        )
20100
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
20101
                         ispatchdlocked, ora_sysdate, nuserid,
20102
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
20103
                         parent_rec.src_path,
20104
                            'This is a patch to '
20105
                         || parent_rec.pkg_name
20106
                         || ' '
20107
                         || parent_rec.pkg_version,
20108
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
20109
                        );
20110
 
20111
            INSERT INTO package_patches
20112
                        (pv_id, patch_id, install_order)
20113
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
20114
                       lastinstallorder + 1 AS install_order
20115
                  FROM package_versions pv
20116
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
20117
 
20118
            /* LOG ACTION */
20119
            log_action (patchpv_id,
20120
                        'new_version',
20121
                        nuserid,
20122
                        'Patch version created: ' || snewpatchversion
20123
                       );
20124
            log_action (nparentpvid,
20125
                        'patch_add',
20126
                        nuserid,
20127
                        'New patch created and attached: ' || snewpatchversion
20128
                       );
20129
         ELSE
20130
            patchpv_id := patch_rec.pv_id;
20131
            ispatchdlocked := patch_rec.dlocked;
20132
 
20133
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
20134
            OPEN releases_cur;
20135
 
20136
            FETCH releases_cur
20137
             INTO releases_rec;
20138
 
20139
            IF releases_cur%NOTFOUND
20140
            THEN
20141
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
20142
               UPDATE package_versions
20143
                  SET is_patch = 'Y'
20144
                WHERE pv_id = patchpv_id;
20145
 
20146
               INSERT INTO package_patches
20147
                           (pv_id, patch_id, install_order)
20148
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
20149
                          lastinstallorder + 1 AS install_order
20150
                     FROM package_versions pv
20151
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
20152
            END IF;
20153
 
20154
            CLOSE releases_cur;
20155
 
20156
            /* LOG ACTION */
20157
            log_action (nparentpvid,
20158
                        'patch_add',
20159
                        nuserid,
20160
                           'Patch version was found and attached: '
20161
                        || snewpatchversion
20162
                       );
20163
         END IF;
20164
      END IF;
20165
 
20166
      /* Create Patch Dependencies */
20167
      opatchdepcollector := in_list_number (spatchidlist);
20168
 
20169
      -- Make sure patch is unofficial before altering its dependencies
20170
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
20171
      THEN
20172
         -- Delete Existing Dependencies
20173
         DELETE FROM package_dependencies dep
20174
               WHERE dep.pv_id = patchpv_id;
20175
 
20176
         -- Insert new dependencies
20177
         INSERT INTO package_dependencies
20178
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
20179
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
20180
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
20181
                   'L' AS build_type
20182
              FROM package_versions pv
20183
             WHERE pv.pv_id IN (
20184
                      SELECT *
20185
                        FROM TABLE
20186
                                (CAST
20187
                                    (opatchdepcollector AS relmgr_number_tab_t)
20188
                                ));
20189
      END IF;
20190
 
20191
      -- Return patch_id
20192
      returnpatchid := patchpv_id;
20193
 
20194
      CLOSE parent_cur;
20195
 
20196
      CLOSE patch_cur;
20197
   EXCEPTION
20198
      WHEN DUP_VAL_ON_INDEX
20199
      THEN
20200
         raise_application_error (-20000,
20201
                                     'Patch version '
20202
                                  || snewpatchversion
20203
                                  || ' already exist.'
20204
                                 );
20205
   END;
20206
 
20207
/*-------------------------------------------------------------------------------------------------------*/
20208
   PROCEDURE obsolete_patch (
20209
      patchid            IN   NUMBER,
20210
      isobsolete         IN   CHAR,
20211
      obsoletecomments   IN   VARCHAR2,
20212
      userid             IN   NUMBER
20213
   )
20214
   IS
20215
   BEGIN
20216
      -- Update patch
20217
      UPDATE package_versions pv
20218
         SET pv.is_obsolete = isobsolete,
20219
             pv.obsolete_comments = obsoletecomments
20220
       WHERE pv.pv_id = patchid;
20221
 
20222
      /*
20223
      -- Update patch children
20224
      UPDATE PACKAGE_VERSIONS pv SET
20225
      pv.IS_OBSOLETE = IsObsolete,
20226
      pv.OBSOLETE_COMMENTS = ObsoleteComments
20227
      WHERE pv.PV_ID IN (
20228
                     SELECT DISTINCT dep.DPV_ID
20229
                       FROM PACKAGE_DEPENDENCIES dep
20230
                      WHERE dep.PV_ID = PatchId
20231
                     );
20232
 
20233
 
20234
      -- Update patch parent
20235
      UPDATE PACKAGE_VERSIONS pv SET
20236
      pv.IS_OBSOLETE = IsObsolete,
20237
      pv.OBSOLETE_COMMENTS = ObsoleteComments
20238
      WHERE pv.PV_ID IN (
20239
                     SELECT DISTINCT dep.PV_ID
20240
                       FROM PACKAGE_DEPENDENCIES dep
20241
                      WHERE dep.DPV_ID = PatchId
20242
                     );
20243
 
20244
         */
20245
 
20246
      /* LOG ACTION */
20247
      IF isobsolete IS NOT NULL
20248
      THEN
20249
         log_action (patchid,
20250
                     'patch_obsolete',
20251
                     userid,
20252
                     'Obsolete patch. ' || obsoletecomments
20253
                    );
20254
      ELSE
20255
         log_action (patchid,
20256
                     'patch_obsolete',
20257
                     userid,
20258
                     'Undo patch obsolete.'
20259
                    );
20260
      END IF;
20261
   END;
20262
 
20263
/*-------------------------------------------------------------------------------------------------------*/
20264
   PROCEDURE obsolete_patches (
20265
      spatchidlist       IN   VARCHAR2,
20266
      isobsolete         IN   CHAR,
20267
      obsoletecomments   IN   VARCHAR2,
20268
      userid             IN   NUMBER
20269
   )
20270
   IS
20271
   BEGIN
20272
      /*--------------- Business Rules Here -------------------*/
20273
      IF spatchidlist IS NULL
20274
      THEN
20275
         raise_application_error (-20000,
20276
                                  'Please select one or more Patches.'
20277
                                 );
20278
      END IF;
20279
 
20280
/*-------------------------------------------------------*/
20281
 
20282
      -- Update patch
20283
      UPDATE package_versions pv
20284
         SET pv.is_obsolete = isobsolete,
20285
             pv.obsolete_comments = obsoletecomments
20286
       WHERE pv.pv_id IN (
20287
                SELECT *
20288
                  FROM THE
20289
                          (SELECT CAST
20290
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
20291
                                     )
20292
                             FROM DUAL
20293
                          ));
20294
   /*
20295
   -- Update patch children
20296
   UPDATE PACKAGE_VERSIONS pv SET
20297
   pv.IS_OBSOLETE = IsObsolete,
20298
   pv.OBSOLETE_COMMENTS = ObsoleteComments
20299
   WHERE pv.PV_ID IN (
20300
                  SELECT DISTINCT dep.DPV_ID
20301
                    FROM PACKAGE_DEPENDENCIES dep
20302
                   WHERE dep.PV_ID = PatchId
20303
                  );
20304
 
20305
 
20306
   -- Update patch parent
20307
   UPDATE PACKAGE_VERSIONS pv SET
20308
   pv.IS_OBSOLETE = IsObsolete,
20309
   pv.OBSOLETE_COMMENTS = ObsoleteComments
20310
   WHERE pv.PV_ID IN (
20311
                  SELECT DISTINCT dep.PV_ID
20312
                    FROM PACKAGE_DEPENDENCIES dep
20313
                   WHERE dep.DPV_ID = PatchId
20314
                  );
20315
 
20316
      */
20317
 
20318
   /* LOG ACTION
20319
   IF IsObsolete IS NOT NULL THEN
20320
         Log_Action ( PatchId, 
20321
'patch_obsolete', UserId,
20322
                  'Obsolete patch. '|| ObsoleteComments );
20323
   ELSE
20324
      Log_Action ( PatchId, 'patch_obsolete', UserId,
20325
                  'Undo patch obsolete.' );
20326
   END IF;  */
20327
   END;
20328
 
20329
/*-------------------------------------------------------------------------------------------------------*/
20330
   PROCEDURE add_process (
20331
      nprocid         IN   processes.proc_id%TYPE,
20332
      shealthtag      IN   processes.proc_name%TYPE,
20333
      sprocdesc       IN   processes.proc_description%TYPE,
20334
      scmdinterface   IN   processes.run_as%TYPE,
20335
      spkgowner       IN   processes.pkg_owner%TYPE,
20336
      sisinterface    IN   processes.is_interface%TYPE,
20337
      npvid           IN   package_processes.pv_id%TYPE,
20338
      nuserid         IN   NUMBER
20339
   )
20340
   IS
20341
      pkgname   VARCHAR2 (100);
20342
/*Rupesh Release on 17/05/2006*/
20343
   BEGIN
20344
      INSERT INTO processes
20345
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
20346
                   is_interface
20347
                  )
20348
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
20349
                   sisinterface
20350
                  );
20351
 
20352
      pk_package.add_package_process (nprocid, npvid, nuserid);
20353
   END;
20354
 
20355
/*-------------------------------------------------------------------------------------------------------*/
20356
   PROCEDURE add_package_process (
20357
      nprocidlist   IN   VARCHAR2,
20358
      npvid         IN   package_processes.pv_id%TYPE,
20359
      nuserid       IN   NUMBER
20360
   )
20361
   IS
20362
      processname   VARCHAR2 (4000);
20363
 
20364
/*Rupesh Release on 17/05/2006*/
20365
      CURSOR proc_cur
20366
      IS
20367
         SELECT prc.proc_id
20368
           FROM processes prc
20369
          WHERE prc.proc_id IN (
20370
                   SELECT *
20371
                     FROM THE
20372
                             (SELECT CAST
20373
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
20374
                                        )
20375
                                FROM DUAL
20376
                             ));
20377
 
20378
      proc_rec      proc_cur%ROWTYPE;
20379
   BEGIN
20380
      OPEN proc_cur;
20381
 
20382
      FETCH proc_cur
20383
       INTO proc_rec;
20384
 
20385
      WHILE proc_cur%FOUND
20386
      LOOP
20387
         INSERT INTO package_processes
20388
                     (proc_id, pv_id
20389
                     )
20390
              VALUES (proc_rec.proc_id, npvid
20391
                     );
20392
 
20393
         SELECT prc.proc_name
20394
           INTO processname
20395
           FROM processes prc
20396
          WHERE prc.proc_id = proc_rec.proc_id;
20397
 
20398
         -- Log Action --
20399
         log_action (npvid,
20400
                     'process_add',
20401
                     nuserid,
20402
                     'Added process with health tag ' || processname
20403
                    );
20404
 
20405
         FETCH proc_cur
20406
          INTO proc_rec;
20407
      END LOOP;
20408
   END;
20409
 
20410
/*-------------------------------------------------------------------------------------------------------*/
20411
   PROCEDURE remove_process (
20412
      nprocid   IN   package_processes.proc_id%TYPE,
20413
      npvid     IN   package_processes.pv_id%TYPE,
20414
      nuserid   IN   NUMBER
20415
   )
20416
   IS
20417
      processname   VARCHAR2 (4000);
20418
/* Rupesh Release on 17/05/2006*/
20419
   BEGIN
20420
      SELECT prc.proc_name
20421
        INTO processname
20422
        FROM processes prc
20423
       WHERE prc.proc_id = nprocid;
20424
 
20425
      DELETE FROM package_processes
20426
            WHERE proc_id = nprocid AND pv_id = npvid;
20427
 
20428
      -- Log Action --
20429
      log_action (npvid,
20430
                  'process_remove',
20431
                  nuserid,
20432
                  'Removed process with health tag ' || processname
20433
                 );
20434
   END;
20435
/*-------------------------------------------------------------------------------------------------------*/
20436
  /* 
20437
  Author: Rupesh Solanki
20438
  Purpose: To move package versions from one release to another
20439
  Release: 4th September 2006 
20440
 
20441
  */
20442
  PROCEDURE move_package (
20443
   	  npvid  			  IN package_versions.pv_id%TYPE,
20444
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
20445
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
20446
	  nuserid			  IN NUMBER	
20447
  )	
20448
  IS	
20449
 
20450
  oldrtag_name VARCHAR2(4000);
20451
  newrtag_name VARCHAR2(4000);
20452
 
20453
 
20454
 
20455
  BEGIN
20456
 
20457
 
20458
  SELECT rtag_name into oldrtag_name
20459
  FROM RELEASE_TAGS
20460
  WHERE rtag_id = nrtagid;
20461
 
20462
  SELECT rtag_name into newrtag_name
20463
  FROM RELEASE_TAGS
20464
  WHERE rtag_id = nnewrtagid;
20465
 
20466
  /* Table Work In Progress*/
20467
  	   UPDATE WORK_IN_PROGRESS
20468
	   SET RTAG_ID = nnewrtagid
20469
	   WHERE RTAG_ID = nrtagid
20470
	   AND PV_ID = npvid;
20471
 
20472
  /* Table PLANNED*/	
20473
  	   UPDATE PLANNED
20474
	   SET RTAG_ID = nnewrtagid
20475
	   WHERE RTAG_ID = nrtagid
20476
	   AND PV_ID = npvid;   
20477
 
20478
      -- Log Action --
20479
      log_action (npvid,
20480
                  'move_package_version',
20481
                  nuserid,
20482
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
20483
                 );  	   	     
20484
 
20485
 
20486
  END;
20487
 
20488
/*-------------------------------------------------------------------------------------------------------*/
20489
PROCEDURE modify_product_state (
20490
   	  npvid IN package_versions.pv_id%TYPE,
20491
	  nrtagid IN release_tags.rtag_id%TYPE,
20492
	  nstateid IN product_states.state_id%TYPE,
20493
	  nuserid IN NUMBER
20494
   ) IS
20495
 
20496
   sStateName VARCHAR2(4000);
20497
   sRtagName VARCHAR2(4000);
20498
 
20499
  /* 
20500
  Author: Rupesh Solanki
20501
  Purpose: To modify the product state from integration to test to deployment
20502
  Release: 25th January 2006 
20503
  */   
20504
 
20505
  BEGIN
20506
 
20507
  UPDATE RELEASE_CONTENT
20508
  SET PRODUCT_STATE = nstateid
20509
  WHERE PV_ID = npvid
20510
  AND RTAG_ID = nrtagid;
20511
 
20512
 
20513
  SELECT STATE INTO sStateName
20514
  FROM PRODUCT_STATES 
20515
  WHERE STATE_ID = nstateid;
20516
 
20517
  SELECT RTAG_NAME into sRtagName
20518
  FROM RELEASE_TAGS
20519
  WHERE RTAG_ID = nrtagid;
20520
 
20521
 
20522
  -- Log Action --
20523
  log_action (npvid,
20524
              'modify_product_state',
20525
               nuserid,
20526
               sStateName || ' in '|| sRtagName
20527
              );  
20528
 
20529
 
20530
  END;			  	   	     
20531
/*-------------------------------------------------------------------------------------------------------*/
20532
  PROCEDURE add_code_review_url (
20533
        npvid           IN    NUMBER,
20534
        nprojid         IN    NUMBER,
20535
        surl            IN    VARCHAR2,
20536
        sreason         IN    VARCHAR2,
20537
        ddateofreview   IN    DATE
20538
  ) IS
20539
 
20540
  ncrid NUMBER;
20541
 
20542
  /* 
20543
  Author: Jeremy Tweddle
20544
  Date: 24/Aug/2007 
20545
  */   
20546
 
20547
  BEGIN
20548
 
20549
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
20550
 
20551
 
20552
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
20553
                                    last_modified )
20554
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
20555
 
20556
  END;
20557
/*-------------------------------------------------------------------------------------------------------*/
20558
  PROCEDURE update_code_review_url (
20559
        ncrid           IN    NUMBER,
20560
        nprojid         IN    NUMBER,
20561
        surl            IN    VARCHAR2,
20562
        sreason         IN    VARCHAR2
20563
  ) IS
20564
 
20565
  /* 
20566
  Author: Jeremy Tweddle
20567
  Date: 22/Aug/2007 
20568
  */ 
20569
 
20570
  BEGIN
20571
 
20572
      UPDATE code_review_url
20573
      SET url = surl,
20574
          proj_id = nprojid,
20575
          reason = sreason,
20576
          last_modified = ora_sysdate
20577
      WHERE cr_id = ncrid;
20578
 
20579
  END;
20580
/*-------------------------------------------------------------------------------------------------------*/
20581
  PROCEDURE remove_code_review_url (
20582
        ncrid           IN    NUMBER
20583
  ) IS
20584
 
20585
  /* 
20586
  Author: Jeremy Tweddle
20587
  Date: 22/Aug/2007 
20588
  */
20589
 
20590
  BEGIN
20591
 
20592
      DELETE FROM code_review_url
20593
      WHERE cr_id = ncrid;
20594
 
20595
  END;
20596
/*-------------------------------------------------------------------------------------------------------*/
20597
END pk_package;
20598
/
20599
 
20600
ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" 
20601
  COMPILE BODY 
20602
    PLSQL_OPTIMIZE_LEVEL=  2
20603
    PLSQL_CODE_TYPE=  INTERPRETED
20604
    PLSQL_DEBUG=  TRUE
20605
 REUSE SETTINGS TIMESTAMP '2008-04-11 12:58:37'
20606
/
20607
 
20608
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PLANNED" IS
20609
 
20610
/*
20611
------------------------------
20612
||  Last Modified:  S.Vukovic
20613
||  Modified Date:  6/May/2005
20614
||  Body Version:   1.0
20615
------------------------------
20616
*/
20617
 
20618
 
20619
/*-------------------------------------------------------------------------------------------------------*/
20620
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
20621
 
20622
	oldPvId NUMBER;
20623
	ReleaseLocation VARCHAR2(4000);
20624
	IsPatch CHAR(1) := NULL;
20625
	sLocation VARCHAR2(4000) := NULL;
20626
	nRtagIdLocation NUMBER;
20627
 
20628
 
20629
 
20630
BEGIN
20631
	/*--------------- Business Rules Here -------------------*/
20632
	/*-------------------------------------------------------*/
20633
 
20634
	BEGIN
20635
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
20636
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
20637
		  FROM PLANNED pl,
20638
		  	   RELEASE_TAGS rt,
20639
			   PROJECTS proj
20640
		 WHERE pl.PV_ID = newPvId
20641
		   AND pl.RTAG_ID = rt.RTAG_ID
20642
		   AND rt.OFFICIAL != 'Y'
20643
		   AND rt.PROJ_ID = proj.PROJ_ID;
20644
 
20645
		EXCEPTION
20646
	    	WHEN NO_DATA_FOUND THEN
20647
	       		sLocation := NULL;
20648
	END;	   	     
20649
 
20650
 
20651
 
20652
	IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
20653
 
20654
		-- Add to "Pending" area
20655
		INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID )
20656
		VALUES( RtagId, newPvId, ViewId );
20657
 
20658
 
20659
	    /* LOG ACTION */
20660
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
20661
		  FROM PROJECTS proj,
20662
		  	   RELEASE_TAGS rt
20663
		 WHERE rt.PROJ_ID = proj.PROJ_ID
20664
		   AND rt.RTAG_ID = RtagId;
20665
 
20666
		Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
20667
 
20668
	ELSE
20669
 
20670
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );		
20671
 
20672
	END IF;
20673
 
20674
END;
20675
/*-------------------------------------------------------------------------------------------------------*/
20676
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
20677
 
20678
	ReleaseLocation VARCHAR2(4000);
20679
 
20680
BEGIN
20681
 
20682
	/*--------------- Business Rules Here -------------------*/
20683
	/*-------------------------------------------------------*/
20684
 
20685
 
20686
	-- Get release location for logging pusposes
20687
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
20688
	  FROM PROJECTS proj,
20689
	  	   RELEASE_TAGS rt
20690
	 WHERE rt.PROJ_ID = proj.PROJ_ID
20691
	   AND rt.RTAG_ID = RtagId;
20692
 
20693
 
20694
	-- Delete from Work In Progress
20695
	DELETE
20696
	  FROM PLANNED pl
20697
	 WHERE pl.RTAG_ID = RtagId
20698
	   AND pl.PV_ID = PvId;
20699
 
20700
	Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
20701
 
20702
 
20703
 
20704
 
20705
END;
20706
/*-------------------------------------------------------------------------------------------------------*/
20707
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
20708
 
20709
	ReturnValue NUMBER;
20710
 
20711
BEGIN
20712
	SELECT pl.VIEW_ID INTO ReturnValue
20713
	  FROM PLANNED pl
20714
	 WHERE pl.RTAG_ID = RtagId
20715
	   AND pl.PV_ID = PvId;
20716
 
20717
	RETURN ReturnValue;
20718
END;
20719
/*-------------------------------------------------------------------------------------------------------*/
20720
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
20721
 
20722
	IsBaseView CHAR(1);
20723
 
20724
BEGIN
20725
 
20726
	-- Check if the view is BASE VIEW
20727
	SELECT vi.BASE_VIEW INTO IsBaseView
20728
	  FROM VIEWS vi
20729
	 WHERE vi.VIEW_ID = ViewId;
20730
 
20731
 
20732
	IF (IsBaseView = 'Y') THEN 
20733
		-- Get Base view content
20734
		OPEN RecordSet FOR
20735
		SELECT 0 AS PKG_STATE,
20736
			   NULL AS DEPRECATED_STATE,
20737
			   pv.pv_id, 
20738
			   pkg.pkg_name, 
20739
			   pv.pkg_version, 
20740
			   pv.dlocked, 
20741
			   pv.pv_description,
20742
			   pv.BUILD_TYPE
20743
		  FROM PLANNED rel,
20744
		       packages pkg,
20745
		       package_versions pv
20746
		 WHERE pv.pkg_id = pkg.pkg_id
20747
		   AND rel.pv_id = pv.pv_id
20748
		   AND rel.VIEW_ID = ViewId
20749
		   AND rel.RTAG_ID = RtagId
20750
		 ORDER BY UPPER(pkg.PKG_NAME);
20751
 
20752
	ELSE	 
20753
 
20754
	 	-- Get non base view content
20755
		OPEN RecordSet FOR
20756
		SELECT 0 AS PKG_STATE,
20757
			   NULL AS DEPRECATED_STATE,
20758
			   pv.pv_id, 
20759
			   pkg.pkg_name, 
20760
			   pv.pkg_version, 
20761
			   pv.dlocked, 
20762
			   pv.pv_description,
20763
			   pv.BUILD_TYPE
20764
		  FROM PLANNED rel,
20765
		       packages pkg,
20766
		       package_versions pv,
20767
			   VIEW_DEF vd
20768
		 WHERE pv.pkg_id = pkg.pkg_id
20769
		   AND rel.pv_id = pv.pv_id
20770
		   AND rel.RTAG_ID = RtagId
20771
		   AND vd.VIEW_ID = ViewId
20772
		   AND vd.PKG_ID = pv.PKG_ID
20773
		 ORDER BY UPPER(pkg.PKG_NAME);
20774
 
20775
	END IF;	 
20776
 
20777
 
20778
END;
20779
/*-------------------------------------------------------------------------------------------------------*/
20780
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
20781
 
20782
BEGIN
20783
 
20784
	UPDATE PLANNED pl SET
20785
	pl.VIEW_ID = NewViewId
20786
	WHERE pl.PV_ID = PvId
20787
	  AND pl.RTAG_ID = RtagId;
20788
 
20789
END;
20790
/*-------------------------------------------------------------------------------------------------------*/
20791
END PK_PLANNED;
20792
/
20793
 
20794
ALTER PACKAGE "RELEASE_MANAGER"."PK_PLANNED" 
20795
  COMPILE BODY 
20796
    PLSQL_OPTIMIZE_LEVEL=  2
20797
    PLSQL_CODE_TYPE=  INTERPRETED
20798
    PLSQL_DEBUG=  FALSE
20799
 REUSE SETTINGS TIMESTAMP '2007-08-23 16:29:22'
20800
/
20801
 
20802
-- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
20803
CREATE INDEX "RELEASE_MANAGER"."INX_FILE_NAME" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
20804
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
20805
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
20806
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
20807
  TABLESPACE "USERS" PARALLEL 1 ;
20808
 
20809
  ALTER INDEX "RELEASE_MANAGER"."INX_FILE_NAME" NOPARALLEL;
20810
 
20811
CREATE INDEX "RELEASE_MANAGER"."INX_PC_FILE_NAME" ON "RELEASE_MANAGER"."PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
20812
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
20813
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
20814
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
20815
  TABLESPACE "USERS" PARALLEL 1 ;
20816
 
20817
  ALTER INDEX "RELEASE_MANAGER"."INX_PC_FILE_NAME" NOPARALLEL;
20818
 
20819
-- new object type path is: SCHEMA_EXPORT/POST_SCHEMA/PROCOBJ
20820
 
20821
BEGIN 
20822
dbms_scheduler.disable1_calendar_check();
20823
dbms_scheduler.create_schedule('"HOUSEKEEP_RUN_LEVEL_SCHEDULE"','28-JUN-07 01.00.00.000000 AM +08:00',
20824
'FREQ=DAILY; BYHOUR=1',
20825
NULL,
20826
'Run at 1am all days'
20827
);
20828
COMMIT; 
20829
END; 
20830
/ 
20831
 
20832
 
20833
BEGIN 
20834
dbms_scheduler.create_job('"DAILY_HOUSEKEEPING_SCHEDULE"',
20835
job_type=>'STORED_PROCEDURE', job_action=>
20836
'pk_buildapi.delete_out_of_date_schedule'
20837
, number_of_arguments=>0,
20838
schedule_name=>'"HOUSEKEEP_RUN_LEVEL_SCHEDULE"',
20839
job_class=>'"DEFAULT_JOB_CLASS"', enabled=>FALSE, auto_drop=>FALSE,comments=>
20840
'Clean Table when the scheduled resume datetime is past the current datetime'
20841
);
20842
dbms_scheduler.enable('"DAILY_HOUSEKEEPING_SCHEDULE"');
20843
COMMIT; 
20844
END; 
20845
/ 
20846