-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjectManager.pm
109 lines (80 loc) · 2.15 KB
/
ProjectManager.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Copyright (C) 2005-2011 Edgar Gonzàlez i Pellicer
#
# This file is part of PTkChA
#
# PTkChA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Gestor de Projectes
use strict;
use IO::File;
use Projecte;
package ProjectManager;
# Constructor
# Load from a tree
sub new {
my ($class, $tree, $filterManager) = @_;
# Set the filter manager
$Projecte::filterManager = $filterManager;
# Som una llista de Projectes
my $this = [];
# Skip attributes
shift(@{$tree});
# Every child
while (@{$tree}) {
my $type = shift(@{$tree});
my $content = shift(@{$tree});
if ($type eq 'project') {
my $p = newFromXML Projecte($content->[0], $filterManager);
push(@{$this}, $p);
}
}
# Retornem la llista
return bless($this, $class);
}
# Au revoir
sub auRevoir {
my ($this, $handl) = @_;
$handl->print(" <projects>\n");
foreach my $p (@{$this}) {
$handl->print($p->toXML());
}
$handl->print(" </projects>\n");
}
# Es un nom valid
sub esNomValid {
my ($this, $nom) = @_;
foreach my $p (@{$this}) {
return 0 if $p->getNom() eq $nom;
}
return 1;
}
# Afegir un projecte
sub afegirProjecte {
push(@{$_[0]}, $_[1]);
}
# Cercar un projecte
sub cercarProjecte {
my ($this, $nom) = @_;
map {
return $_ if $_->getNom() eq $nom;
} @{$this};
return undef;
}
# Delete a project
sub deleteProject {
my ($this, $num) = @_;
splice(@{$this}, $num, 1);
}
# Retornem Cert
1;