1 | #!/usr/bin/perl -w
|
---|
2 |
|
---|
3 | package xxx;
|
---|
4 |
|
---|
5 | BEGIN {
|
---|
6 | die "GSDL3HOME not set\n" unless defined $ENV{'GSDL3HOME'};
|
---|
7 | die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
|
---|
8 | unshift (@INC, "$ENV{'GSDLHOME'}/perllib");
|
---|
9 | }
|
---|
10 |
|
---|
11 | use util;
|
---|
12 |
|
---|
13 | use strict;
|
---|
14 | no strict 'refs'; # allow filehandles to be variables and vice versa
|
---|
15 | no strict 'subs'; # allow barewords (eg STDERR) as function arguments
|
---|
16 |
|
---|
17 | my $keys_hash ={};
|
---|
18 | my $keys_not_found = {};
|
---|
19 |
|
---|
20 | &main();
|
---|
21 |
|
---|
22 | sub main {
|
---|
23 |
|
---|
24 |
|
---|
25 | my ($interface_name) = $ARGV[0];
|
---|
26 | print STDERR "interface _name = $interface_name\n";
|
---|
27 |
|
---|
28 | &load_interface_dictionary($interface_name);
|
---|
29 | &load_interface_dictionary($interface_name."2");
|
---|
30 |
|
---|
31 | my $transform_dir = &util::filename_cat($ENV{'GSDL3HOME'}, "interfaces", $interface_name, "transform");
|
---|
32 |
|
---|
33 | &scan_directory($transform_dir);
|
---|
34 |
|
---|
35 | &output_results($interface_name);
|
---|
36 | }
|
---|
37 |
|
---|
38 | sub load_interface_dictionary {
|
---|
39 | my ($interface_name) = @_;
|
---|
40 |
|
---|
41 | my $dictionary_file = &util::filename_cat($ENV{'GSDL3HOME'}, 'WEB-INF', 'classes', "interface_$interface_name.properties");
|
---|
42 | print STDERR "dict file = $dictionary_file\n";
|
---|
43 | if (!-e $dictionary_file) {
|
---|
44 | die "Error, $dictionary_file does not exist\n";
|
---|
45 | }
|
---|
46 |
|
---|
47 | unless (open(FIN, "<$dictionary_file")) {
|
---|
48 | die "Error, couldn't read in $dictionary_file\n";
|
---|
49 | }
|
---|
50 |
|
---|
51 |
|
---|
52 | while (my $line = <FIN>) {
|
---|
53 | next if $line =~ /^#/;
|
---|
54 | my ($key) = $line =~ /^([^=]*)=/;
|
---|
55 | print STDERR "key = $key\n" if defined $key;
|
---|
56 | $keys_hash->{$key} = 0 if defined $key;
|
---|
57 | }
|
---|
58 | close(FIN);
|
---|
59 |
|
---|
60 | }
|
---|
61 |
|
---|
62 | sub scan_directory {
|
---|
63 | my ($src_dir) = @_;
|
---|
64 | print STDERR "scan dir $src_dir\n";
|
---|
65 | opendir(DIR, "$src_dir");
|
---|
66 | my @files= readdir(DIR);
|
---|
67 | close(DIR);
|
---|
68 |
|
---|
69 | foreach my $file (@files) {
|
---|
70 | # process all except . and ..
|
---|
71 | next if($file eq "." || $file eq ".." || $file eq ".svn");
|
---|
72 | # make absolute
|
---|
73 | $file = &util::filename_cat($src_dir, $file);
|
---|
74 | if (-d $file) {
|
---|
75 | &scan_directory($file);
|
---|
76 | } else {
|
---|
77 | &scan_file($file);
|
---|
78 | }
|
---|
79 | }
|
---|
80 |
|
---|
81 | }
|
---|
82 |
|
---|
83 | sub scan_file {
|
---|
84 | my ($src_file) = @_;
|
---|
85 | print STDERR "scan file $src_file\n";
|
---|
86 | open(XIN, $src_file);
|
---|
87 | my $num=0;
|
---|
88 | while (my $line = <XIN>) {
|
---|
89 | $num++;
|
---|
90 | # my ($params) = ($line =~ /util:getInterfaceText\((.*)\)/);#
|
---|
91 | # if (defined $params ) {
|
---|
92 | # print STDERR "params = $params\n";
|
---|
93 | # my @ps = split(/,/, $params);
|
---|
94 | # my $kk = @ps[2];
|
---|
95 | # print STDERR "other key = $kk\n";
|
---|
96 | # }
|
---|
97 | my @matches = ($line =~ /util:getInterfaceText(?:WithDOM)?\((.*?)\)/g);
|
---|
98 | foreach my $m (@matches) {
|
---|
99 | my @params = split(/,/, $m);
|
---|
100 | my $kk = @params[2];
|
---|
101 | print STDERR "old kk = $kk, ";
|
---|
102 | $kk =~ s/^\s+//;
|
---|
103 | $kk =~ s/\s+$//;
|
---|
104 | $kk =~ s/^'//;
|
---|
105 | $kk =~ s/'$//;
|
---|
106 | print STDERR "new kk = $kk\n";
|
---|
107 | if (defined $keys_hash->{$kk}) {
|
---|
108 | $keys_hash->{$kk}++;
|
---|
109 | print STDERR "found key $kk\n";
|
---|
110 | } else {
|
---|
111 | $keys_not_found->{$kk} = "$src_file, line $num";
|
---|
112 | print STDERR "not found key $kk, $src_file, line $num\n";
|
---|
113 | }
|
---|
114 |
|
---|
115 | }
|
---|
116 | }
|
---|
117 |
|
---|
118 | close(XIN);
|
---|
119 | }
|
---|
120 |
|
---|
121 | sub output_results {
|
---|
122 | my ($interface_name) = @_;
|
---|
123 | my $out_file = $interface_name."_notdefined.txt";
|
---|
124 | open(ROUT, ">$out_file");
|
---|
125 |
|
---|
126 | foreach my $k (keys(%{$keys_not_found})) {
|
---|
127 | print ROUT "$k, $keys_not_found->{$k}\n";
|
---|
128 | }
|
---|
129 | close (ROUT);
|
---|
130 | $out_file = $interface_name."_notused.txt";
|
---|
131 | open (ROUT, ">$out_file");
|
---|
132 |
|
---|
133 | foreach my $k (sort keys(%{$keys_hash})) {
|
---|
134 | if ($keys_hash->{$k} == 0) {
|
---|
135 | print ROUT "$k\n";
|
---|
136 | }
|
---|
137 | }
|
---|
138 | close ROUT;
|
---|
139 | }
|
---|
140 | 1;
|
---|