From b5125b1099cf5cf12beb0520d5896b9a1d7850ae Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 11 Aug 2013 01:47:32 +0200 Subject: [PATCH] Add empty 'virtual' .ALL hierarchies as needed. When using a --checkgroups file while tabulating, valid but empty groups will be added with a posting count of zero as needed. If all groups in a sub-hierarchy are empty, the virtual '.ALL' group for that sub-hierarchy was not created, though. If local.test.dummy and local.test.binary were both empty, both groups were added with a posting count of '0', but local.test.ALL was not. Now we loop through all hierarchy elements using ParseHierarchies and add empty .ALL hierarchies as needed. Fixes #49. Also fixing a typo in some comment. :-) Signed-off-by: Thomas Hochstein --- gatherstats.pl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/gatherstats.pl b/gatherstats.pl index 2bc426b..ae7d65d 100755 --- a/gatherstats.pl +++ b/gatherstats.pl @@ -132,7 +132,7 @@ foreach my $Month (&ListMonth($Period)) { # count postings per group my %Postings; while (($_) = $DBQuery->fetchrow_array) { - # get list oft newsgroups and hierarchies from Newsgroups: + # get list of newsgroups and hierarchies from Newsgroups: my %Newsgroups = ListNewsgroups($_,$TLH, $OptCheckgroupsFile ? \%ValidGroups : ''); # count each newsgroup and hierarchy once @@ -145,12 +145,19 @@ foreach my $Month (&ListMonth($Period)) { if (%ValidGroups) { foreach (sort keys %ValidGroups) { if (!defined($Postings{$_})) { - $Postings{$_} = 0 ; - warn (sprintf("ADDED: %s as empty group\n",$_)); + # expand newsgroup with hierarchies + my @Newsgroups = ParseHierarchies($_); + # add each empty newsgroup and empty hierarchies, too, as needed + foreach (@Newsgroups) { + if (!defined($Postings{$_})) { + $Postings{$_} = 0; + warn (sprintf("ADDED: %s as empty group\n",$_)); + }; + }; } }; }; - + # delete old data for that month if (!$OptTest) { $DBQuery = $DBHandle->do(sprintf("DELETE FROM %s.%s WHERE month = ?",