#Some subs specific for Postgresql

package pgutils;

$upper_case = "QWERTYUIOPASDFGHJKLZXCVBNM";
$lower_case = "qwertyuiopasdfghjklzxcvbnm";

sub to_upper {

        my($s)=@_;
        my ($ret);

        for($i=0; $i<length($s); $i++) {
                my $ch=substr($s,$i,1);
                if($ch =~ /[\\\|\(\)\[\{\^\$\*\+\?\.]/g) {
                        $ret.=$ch;
                } else {
                        pos $lower_case =0;
                        if($lower_case =~ m/$ch/g) {
                                $ret.=substr ($upper_case,pos($lower_case) -1,1) ;
                        } else {
                                $ret.=$ch;
                        }
                }

        }

        return $ret;

}

sub to_lower {

        my($s)=@_;
        my ($ret);

        for($i=0; $i<length($s); $i++) {
                my $ch=substr($s,$i,1);
                if($ch =~ /[\\\|\(\)\[\{\^\$\*\+\?\.]/g) {
                        $ret.=$ch;
                } else {
                        pos $upper_case =0;
                        if($upper_case =~ m/$ch/g) {
                                $ret.=substr ($lower_case,pos($upper_case) -1,1) ;
                        } else {
                                $ret.=$ch;
                        }
                }

        }

        return $ret;

}

sub translateToSearch {
        my($search)=@_;
        $search =~ s/\ /\*/g;

        my $s_up=to_upper($search);
        my $s_low=to_lower($search);


        my $s="";
        my $last_s="";
        for($i=0;$i<length($search);$i++) {
                my $ch=substr($search,$i,1);
                if(!($ch eq "*")) {
                        $s.="[".substr($s_up,$i,1).substr($s_low,$i,1)."]";
                } elsif( !($last_s eq "*")) {
                        $s.=".*";
                }
                $last_s=$ch;
        }

        return $s;
}



1;
