source: gsdl/trunk/perllib/ClassifyTreePath.pm@ 19617

Last change on this file since 19617 was 15894, checked in by mdewsnip, 16 years ago

Added "use strict" to the files missing it.

  • Property svn:keywords set to Author Date Id Revision
File size: 4.4 KB
Line 
1package ClassifyTreePath;
2
3use strict;
4
5
6# /** Construct a new tree path object based on the given value path.
7# *
8# * @param $class The name of the class to bless as a string
9# * @param $path The path as a pip delimited string
10# * @return A reference to the ClassifyTreePath object
11# *
12# * @author John Thompson, DL Consulting Ltd.
13# */
14sub new()
15 {
16 my ($class, $path) = @_;
17 my $debug = 0;
18 print STDERR "ClassifyTreePath.new(\"$path\")\n" unless !$debug;
19 # Store the variables
20 my $self = {};
21 $self->{'debug'} = $debug;
22 $self->{'path'} = $path;
23 # Bless me father for I have sinned
24 bless $self, $class;
25 return $self;
26 }
27# /** new() **/
28
29# /** Adds a new path component on to the end of the current path.
30# *
31# * @param $component The new component to add as a string
32# *
33# * @author John Thompson, DL Consulting Ltd.
34# */
35sub addPathComponent()
36 {
37 my ($self, $component) = @_;
38 print STDERR "ClassifyTreePath.addPathComponent(\"$component\")\n" unless !$self->{'debug'};
39 if($self->{'path'} =~ /\w+/)
40 {
41 $self->{'path'} .= "|" . $component;
42 }
43 else
44 {
45 $self->{'path'} = $component;
46 }
47 }
48# /** addPathComponent() **/
49
50# /** Compare this path against another for equality.
51# *
52# * @param $other_path_obj The path object to compare to
53# * @return 1 if the paths match, 0 otherwise
54# *
55# * @author John Thompson, DL Consulting Ltd.
56# */
57sub equals()
58 {
59 my ($self, $other_path_obj) = @_;
60 print STDERR "ClassifyTreePath.equals()\n" unless !$self->{'debug'};
61 return $self->{'path'} eq $other_path_obj->toString();
62 }
63# /** equals() **/
64
65# /** Extracts the first path component from the path.
66# *
67# * @return The first path component as a string
68# *
69# * @author John Thompson, DL Consulting Ltd.
70# */
71sub getFirstPathComponent()
72 {
73 my ($self) = @_;
74 print STDERR "ClassifyTreePath.getFirstPathComponent()\n" unless !$self->{'debug'};
75 my @path = split(/\|/, $self->{'path'});
76 return $path[0];
77 }
78# /** getFirstPathComponent() **/
79
80# /** Extracts the last path component from the path.
81# *
82# * @return The last path component as a string
83# *
84# * @author John Thompson, DL Consulting Ltd.
85# */
86sub getLastPathComponent()
87 {
88 my ($self) = @_;
89 print STDERR "ClassifyTreePath.getLastPathComponent()\n" unless !$self->{'debug'};
90 my @path = split(/\|/, $self->{'path'});
91 return @path[scalar(@path) - 1];
92 }
93# /** getLastPathComponent() **/
94
95# /** Return a path object which is the parent path of this one.
96# *
97# * @return The parent path object
98# *
99# * @author John Thompson, DL Consulting Ltd.
100# */
101sub getParentPath()
102 {
103 my ($self) = @_;
104 print STDERR "ClassifyTreePath.getParentPath()\n" unless !$self->{'debug'};
105 my $result = 0;
106 my @path = split(/\|/, $self->{'path'});
107 if (scalar(@path) > 0)
108 {
109 pop(@path);
110 $result = new ClassifyTreePath(join("|", @path));
111 }
112 return $result;
113 }
114# /** getParentPath() **/
115
116# /** Retrieves the path component located at the indicated index.
117# *
118# * @param $index The index of the component as an integer
119# * @return The component as a string, or 0 if index out of range
120# *
121# * @author John Thompson, DL Consulting Ltd.
122# */
123sub getPathComponent()
124 {
125 my ($self, $index) = @_;
126 print STDERR "ClassifyTreePath.getPathComponent($index)\n" unless !$self->{'debug'};
127 my $result = 0;
128 my @path = split(/\|/, $self->{'path'});
129 # Check index is in range
130 if(0 <= $index && $index < scalar(@path))
131 {
132 $result = $path[$index];
133 }
134 return $result;
135 }
136# /** getPathComponent() **/
137
138# /** Determine is this path is the root node one - which it must be if it has
139# * one or fewer path components.
140# *
141# * @return true if this is the root path, false otherwise
142# *
143# * @author John Thompson, DL Consulting Ltd.
144# */
145sub isRootPath()
146 {
147 my ($self, $index) = @_;
148 print STDERR "ClassifyTreePath.isRootPath()\n" unless !$self->{'debug'};
149 my @path = split(/\|/, $self->{'path'});
150 return (scalar(@path) <= 1);
151 }
152# /** isRootPath() **/
153
154# /** Represent this path as a string.
155# *
156# * @return The string representation of this path
157# *
158# * @author John Thompson, DL Consulting Ltd.
159# */
160sub toString()
161 {
162 my ($self) = @_;
163 print STDERR "ClassifyTreePath.toString()\n" unless !$self->{'debug'};
164 return $self->{'path'};
165 }
166# /** toString() **/
167
1681;
Note: See TracBrowser for help on using the repository browser.