DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_DIAGNOSTIC_SYNC

Source


1 package body jtf_diagnostic_sync as
2 /* $Header: jtfdiagsyncb.pls 115.1 2003/07/30 00:48:16 navkumar noship $ */
3 PROCEDURE diagSyncAll
4 IS
5   key1    JTF_DIAGNOSTIC_CMAP.appName%TYPE;
6   key2    JTF_DIAGNOSTIC_CMAP.groupName%TYPE;
7   key3    JTF_DIAGNOSTIC_CMAP.testClassName%TYPE;
8   classList JTF_DIAGNOSTIC_LOG.versions%TYPE;
9   CURSOR diagnose IS
10     select
11       appName,
12       groupName,
13       testClassName,
14       versions
15     from
16       JTF_DIAGNOSTIC_LOG;
17   entries INTEGER := 0;
18 BEGIN
19   OPEN diagnose;
20   LOOP
21     FETCH diagnose into key1, key2, key3, classList;
22     EXIT WHEN diagnose%NOTFOUND;
23     entries := entries+diagsync(key1, key2, key3, classList);
24   END LOOP;
25   CLOSE diagnose;
26 END diagSyncAll;
27 
28 FUNCTION diagsync(	key1 JTF_DIAGNOSTIC_CMAP.appName%TYPE,
29 			key2 JTF_DIAGNOSTIC_CMAP.groupName%TYPE,
30 			key3 JTF_DIAGNOSTIC_CMAP.testClassName%TYPE,
31 			classList JTF_DIAGNOSTIC_LOG.versions%TYPE)
32 RETURN INTEGER IS
33   entries INTEGER := 0;
34   x INTEGER := 0;
35   prev INTEGER;
36   className JTF_DIAGNOSTIC_CMAP.className%TYPE;
37   parseState INTEGER := -1;
38   parseString VARCHAR2(20);
39 BEGIN
40   -- entries := entries+diagentry(key1, key2, key3, key3);
41   delete from JTF_DIAGNOSTIC_CMAP
42   where
43 	appName = key1
44   and	groupName = key2
45   and	testClassName = key3;
46 
47   IF(classList IS NULL)
48   THEN
49     return entries;
50   END IF;
51 
52   LOOP
53     IF(parseState = -1) THEN
54       parseState := 0;
55       parseString := '!#DIAGPAIR#!';
56       prev := x+1;
57     ELSIF(parseState = 0) THEN
58       parseState := 1;
59       parseString := '!#DIAGDELIM#!';
60       prev := x+12;
61     ELSE
62       parseState := 0;
63       parseString := '!#DIAGPAIR#!';
64       prev := x+13;
65     END IF;
66     x := instr(classList, parseString, prev);
67     if(x = 0) then
68       if(parseState = 0) then
69 	className := substr(classList, prev);
70 	entries := entries+diagentry(key1,key2,key3,className);
71       end if;
72       return entries;
73     end if;
74     if(parseState = 0) then
75       className := substr(classList, prev, x-prev);
76       entries := entries+diagentry(key1, key2, key3, className);
77     end if;
78   END LOOP;
79 END diagsync;
80 
81 FUNCTION diagentry(	key1 JTF_DIAGNOSTIC_CMAP.appName%TYPE,
82 			key2 JTF_DIAGNOSTIC_CMAP.groupName%TYPE,
83 			key3 JTF_DIAGNOSTIC_CMAP.testClassName%TYPE,
84 			className JTF_DIAGNOSTIC_CMAP.className%TYPE)
85 RETURN INTEGER IS
86 BEGIN
87   insert into JTF_DIAGNOSTIC_CMAP(
88 	appName,
89 	groupName,
90 	testClassName,
91 	classname)
92   values (
93 	key1,
94 	key2,
95 	key3,
96 	className);
97   return 1;
98 EXCEPTION
99   WHEN OTHERS THEN
100     return 0;
101 END diagentry;
102 
103 end jtf_diagnostic_sync;