$self->column_info($col)->{_filter_info} = $attrs;
my $acc = $self->column_info($col)->{accessor};
- $self->mk_group_accessors('filtered_column' => [ (defined $acc ? $acc : $col), $col]);
+ $self->mk_group_accessors('value' => [ (defined $acc ? $acc : $col), $col]);
return 1;
}
return $self->$unfilter($value);
}
-sub get_filtered_column {
+sub get_value {
my ($self, $col) = @_;
$self->throw_exception("$col is not a filtered column")
return $self->{_filtered_column}{$col} = $self->_filtered_column($col, $val);
}
-sub set_filtered_column {
+sub set_value {
my ($self, $col, $filtered) = @_;
$self->set_column($col, $self->_unfiltered_column($col, $filtered));
return $filtered;
}
-sub get_column {
- my ($self, $column) = @_;
-
- if (exists $self->{_filtered_column}{$column}) {
- return $self->store_column($column,
- $self->_unfiltered_column($column, $self->{_filtered_column}{$column}));
+sub update {
+ my ($self, $attrs, @rest) = @_;
+ foreach my $key (keys %{$attrs||{}}) {
+ if ($self->has_column($key) &&
+ exists $self->column_info($key)->{_filter_info}) {
+ my $val = delete $attrs->{$key};
+ $self->set_value($key, $val);
+ $attrs->{$key} = $self->_unfiltered_column($key, $val)
+ }
}
+ return $self->next::method($attrs, @rest);
+}
+
- return $self->next::method($column);
+sub new {
+ my ($class, $attrs, @rest) = @_;
+ my $filtered;
+ foreach my $key (keys %{$attrs||{}}) {
+ if ($class->has_column($key) &&
+ exists $class->column_info($key)->{_filter_info} ) {
+ $attrs->{$key} = $class->_unfiltered_column($key, delete $attrs->{$key})
+ }
+ }
+ my $obj = $class->next::method($attrs, @rest);
+ return $obj;
}
+
1;