Subversion Repositories DevTools

Rev

Rev 7300 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
227 dpurdie 1
#! perl
2
########################################################################
7300 dpurdie 3
# COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.
227 dpurdie 4
#
5
# Module name   : jats.sh
6
# Module type   : Perl Package
7
# Compiler(s)   : n/a
8
# Environment(s): jats
9
#
10
# Description   : This package contains functions to 'properties' files
11
#                 These are used in a few placed to simplify Perl/Java
12
#                 interoperatbility
13
#
4928 dpurdie 14
#                 A properties file is a simple text file
227 dpurdie 15
#                 Line comments atsrt with a "#" and are not preserved
16
#                 Non-empty lines are of the form
17
#                     tag=value
18
# Usage:
19
#
20
# Version   Who      Date        Description
21
#
22
#......................................................................#
23
 
255 dpurdie 24
require 5.006_001;
227 dpurdie 25
use strict;
26
use warnings;
27
 
28
package JatsProperties;
29
 
30
use JatsError;
31
 
32
#-------------------------------------------------------------------------------
33
# Function        : New
34
#
35
# Description     : Create a new properties object
7321 dpurdie 36
#                   Reads in file and populates the internal data
227 dpurdie 37
#
38
# Inputs          : $filename           - Optional File Name
39
#
40
# Returns         : Object
41
#
42
sub New
43
{
44
    my ($filename) = @_;
45
    my ($self) = {
46
            FILE            => undef,
47
            PROP            => {},
48
        };
49
 
50
    #
51
    #   Read in an existing properties file
52
    #
53
    load ($self, $filename) if ( $filename );
54
 
55
    #
56
    #   Now I am a class
57
    #
58
    return bless $self, __PACKAGE__;
59
}
60
 
61
#-------------------------------------------------------------------------------
62
# Function        : load
63
#
64
# Description     : Load properties from a file
65
#
66
# Inputs          : $filename to file to read
67
#
68
# Returns         : 
69
#
70
sub load
71
{
72
    my ($self, $filename) = @_;
73
    $self->{FILE} = $filename;
74
 
75
    open (PF, "<$filename") || Error ("Cannot open file: $filename", "Reason: $!");
76
    while ( <PF> )
77
    {
78
        next if ( m~^\s*#~ );
79
        next unless ( m~^\s*(.+)=(.*)\s*~ );
80
        $self->{PROP}{$1} = $2;
81
    }
82
    close PF;
83
}
84
 
85
#-------------------------------------------------------------------------------
86
# Function        : getProperty
87
#
88
# Description     : 
89
#
90
# Inputs          : $name       - Property to get
91
#                   $default    - Optional default value
92
#
93
# Returns         : 
94
#
95
sub getProperty
96
{
97
    my ($self, $name, $default) = @_;
98
 
99
    if ( exists $self->{PROP}{$name} )
100
    {
101
        return $self->{PROP}{$name};
102
    }
103
    else
104
    {
105
        return $default;
106
    }
107
}
108
 
109
#-------------------------------------------------------------------------------
110
# Function        : setProperty
111
#
112
# Description     : 
113
#
114
# Inputs          : $name       - Property to set
115
#                   $value      - VAlue to set
116
#
117
# Returns         : 
118
#
119
sub setProperty
120
{
121
    my ($self, $name, $value) = @_;
122
 
123
    $self->{PROP}{$name} = $value;
124
}
125
 
126
#-------------------------------------------------------------------------------
127
# Function        : enum
128
#
7321 dpurdie 129
# Description     : Enumerate all properties
227 dpurdie 130
#
131
# Inputs          : None
132
#
133
# Returns         : Array of properties names
134
#
135
sub enum
136
{
137
    my ($self) = @_;
138
    return sort keys %{$self->{PROP}}
139
}
140
 
141
#-------------------------------------------------------------------------------
142
# Function        : store
143
#
144
# Description     : Store properties into a file
145
#
146
# Inputs          : $filename       - to file to create
147
#                                     Will use the 'load' file
148
#                                     if not provided.
149
#
150
# Returns         : 
151
#
152
sub store
153
{
154
    my ($self, $filename) = @_;
155
 
156
    $filename = $self->{FILE} unless ( $filename );
157
    Error ("No file to store properties") unless ( $filename );
158
 
159
    open (PF, ">$filename") || Error ("Cannot create file: $filename", "Reason: $!");
160
    print PF  '#' . localtime() . "\n";
4928 dpurdie 161
    print PF  "# This file is generated by JATS.\n";
162
    print PF  "#    Do not modify\n";
163
    print PF  "#    Do not place under version control\n";
227 dpurdie 164
    foreach my $name ( sort keys %{$self->{PROP}} )
165
    {
166
        my $value = $self->{PROP}{$name};
167
        print PF "$name=$value\n";
168
    }
169
    close PF;
170
}
171
 
172
#-------------------------------------------------------------------------------
173
# Function        : Dump
174
#
175
# Description     : Debugging aid only
176
#                   Will dump the properties list as 'Information'
177
#
178
# Inputs          : text            - Prefix text (optional)
179
#
180
# Returns         : 
181
#
182
sub Dump
183
{
184
    my ($self, $text) = @_;
185
    $text .= ': ' if ( $text );
186
    $text = '' unless ( $text );
187
 
188
    foreach my $name ( sort keys %{$self->{PROP}} )
189
    {
190
        Information ("$text$name=" . $self->{PROP}{$name} );
191
    }
192
}
193
 
194
1;