Upped version numbers, cleaned up code, fixed my name.
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Schema / Graph / Node.pm
1 package SQL::Translator::Schema::Graph::Node;
2
3 use strict;
4
5 use vars qw[ $VERSION ];
6 $VERSION = '1.60';
7
8 use Class::MakeMethods::Template::Hash (
9     new => ['new'],
10     'array_of_objects -class SQL::Translator::Schema::Graph::Edge' =>
11       [qw( edges )],
12     'array_of_objects -class SQL::Translator::Schema::Graph::CompoundEdge' =>
13       [qw( compoundedges )],
14     'array_of_objects -class SQL::Translator::Schema::Graph::HyperEdge' =>
15       [qw( hyperedges )],
16
17     #'hash' => [ qw( many via has edgecount data_fields) ],
18     #'hash' => [ qw( many via has data_fields) ],
19     scalar => [
20         qw( base name order primary_key primary_key_accessor table is_trivial_link )
21     ],
22     number => [qw( order )],
23 );
24
25 sub many {
26     my ($self) = shift;
27
28     $self->{_many} ||= {};
29
30     if ( scalar(@_) == 1 ) {
31         my $k = shift;
32         return $self->{_many}{$k} || 0;
33     }
34     elsif (@_) {
35         my %arg = @_;
36
37         foreach my $k ( keys %arg ) {
38
39             #warn $a,"\t",$arg{$k};
40             $self->{_many}{$k} = $arg{$k};
41         }
42
43         return %arg;
44     }
45     else {
46         return $self->{_many};
47     }
48 }
49
50 sub via {
51     my ($self) = shift;
52
53     $self->{_via} ||= {};
54
55     if ( scalar(@_) == 1 ) {
56         my $k = shift;
57         return $self->{_via}{$k} || 0;
58     }
59     elsif (@_) {
60         my %arg = @_;
61
62         foreach my $k ( keys %arg ) {
63
64             #warn $a,"\t",$arg{$k};
65             $self->{_via}{$k} = $arg{$k};
66         }
67
68         return %arg;
69     }
70     else {
71         return $self->{_via};
72     }
73 }
74
75 sub has {
76     my ($self) = shift;
77
78     $self->{_has} ||= {};
79
80     if ( scalar(@_) == 1 ) {
81         my $k = shift;
82         return $self->{_has}{$k} || 0;
83     }
84     elsif (@_) {
85         my %arg = @_;
86
87         foreach my $k ( keys %arg ) {
88
89             #warn $a,"\t",$arg{$k};
90             $self->{_has}{$k} = $arg{$k};
91         }
92
93         return %arg;
94     }
95     else {
96         return $self->{_has};
97     }
98 }
99
100 sub edgecount {
101     my ($self) = shift;
102
103     $self->{_edgecount} ||= {};
104
105     if ( scalar(@_) == 1 ) {
106         my $k = shift;
107         return $self->{_edgecount}{$k} || 0;
108     }
109     elsif (@_) {
110         my %arg = @_;
111
112         foreach my $k ( keys %arg ) {
113
114             #warn $a,"\t",$arg{$k};
115             $self->{_edgecount}{$k} = $arg{$k};
116         }
117
118         return %arg;
119     }
120     else {
121         return $self->{_edgecount};
122     }
123 }
124
125 sub data_fields {
126     my ($self) = shift;
127
128     $self->{_data_fields} ||= {};
129
130     if ( scalar(@_) == 1 ) {
131         my $k = shift;
132         return $self->{_data_fields}{$k};
133     }
134     elsif (@_) {
135         my %arg = @_;
136
137         foreach my $k ( keys %arg ) {
138
139             #warn $a,"\t",$arg{$k};
140             $self->{_data_fields}{$k} = $arg{$k};
141         }
142
143         return %arg;
144     }
145     else {
146         return $self->{_data_fields};
147     }
148 }
149
150 1;