Index: /trunk/PS-IPP-Config/lib/PS/IPP/Metadata/StatsFilter.pm
===================================================================
--- /trunk/PS-IPP-Config/lib/PS/IPP/Metadata/StatsFilter.pm	(revision 8738)
+++ /trunk/PS-IPP-Config/lib/PS/IPP/Metadata/StatsFilter.pm	(revision 8738)
@@ -0,0 +1,63 @@
+# Copyright (c) 2006  Joshua Hoblitt
+#
+# $Id: StatsFilter.pm,v 1.1 2006-09-06 01:46:22 jhoblitt Exp $
+
+package PS::IPP::Metadata::StatsFilter;
+
+use strict;
+use warnings FATAL => qw( all );
+
+our $VERSION = '0.01';
+
+use Carp qw( carp croak );
+
+our %HEADER_MAP = qw(
+    CCDTEMP     DETTEM
+    ALT         TELALT
+    AZ          TELAZ
+);
+
+sub new
+{
+    my $class = shift;
+
+    return bless {}, ref $class || $class;
+}
+
+sub filter 
+{
+    my ($self, $mdc) = @_;
+
+    unless (ref $mdc eq 'ARRAY') {
+        carp "$mdc is not an array ref";
+        return;
+    }
+
+    OUTER:
+    foreach my $entry (@$mdc) {
+        # recurse on nested metadata
+        if ($entry->{class} eq 'metadata') {
+            unless ($self->filter($entry->{value})) {
+                carp "failed to recursively process nested metadata";
+                return;
+            }
+        }
+    
+        foreach my $key (keys %HEADER_MAP) {
+            # is the name of this entry in the HEADER_MAP?
+            if ($entry->{name} eq $key) {
+                # then rename it 
+                $entry->{name} = $HEADER_MAP{$key};
+                # restart the HEADER_MAP name match for this entry.  This is to
+                # allow HEADER_MAP entries to be aliases to other entries
+                redo OUTER;
+            }
+        }
+    }
+
+    return $mdc;
+}
+
+1;
+
+__END__
