/[cvs]/nfo/perl/libs/Data/Storage/Handler/Tangram.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Storage/Handler/Tangram.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.44 by joko, Thu Dec 4 01:01:50 2003 UTC revision 1.48 by jonen, Thu Oct 28 11:35:51 2004 UTC
# Line 3  Line 3 
3  #  $Id$  #  $Id$
4  #  #
5  #  $Log$  #  $Log$
6    #  Revision 1.48  2004/10/28 11:35:51  jonen
7    #  + bugfix related to select-criterias(filter)
8    #
9    #  Revision 1.47  2004/08/31 14:26:08  jonen
10    #  updated
11    #
12    #  Revision 1.46  2004/05/06 12:54:34  jonen
13    #  + bugfix related to multiple select-'filter'
14    #
15    #  Revision 1.45  2003/12/14 01:48:36  jonen
16    #  small HACK at _insertChildNode: some special Childnodes should not be created because existing objects have to be selected!
17    #  TODO: make this more generic, e.g. implement a special flag at Schema
18    #
19  #  Revision 1.44  2003/12/04 01:01:50  joko  #  Revision 1.44  2003/12/04 01:01:50  joko
20  #  + sendQuery now returns result even on crud=UPDATE  #  + sendQuery now returns result even on crud=UPDATE
21  #  #
# Line 525  sub getListFiltered { Line 538  sub getListFiltered {
538    my @results;    my @results;
539    $logger->debug( __PACKAGE__ . "->getListFiltered( nodename => '" . $in->{nodename} . "' )" );    $logger->debug( __PACKAGE__ . "->getListFiltered( nodename => '" . $in->{nodename} . "' )" );
540    
541    #print Dumper($filters);    #print "Filter_payload: " . Dumper($in->{filters}) . "\n";
542    
543    # 1. "Remote Object Handle" - get set of objects from odbms by object name    # 1. "Remote Object Handle" - get set of objects from odbms by object name
544    my $remote = $self->{_COREHANDLE}->remote($in->{nodename});    my $remote = $self->{_COREHANDLE}->remote($in->{nodename});
# Line 581  sub getListFiltered { Line 594  sub getListFiltered {
594        $orm_filter_tmp = $left->$op($right);        $orm_filter_tmp = $left->$op($right);
595      }      }
596    
597      if (not $orm_filter) {      if (!ref($orm_filter)) {
598        $orm_filter = $orm_filter_tmp;        $orm_filter = $orm_filter_tmp;
599      } else {      } else {
600        $orm_filter = $orm_filter->and($orm_filter_tmp);        $orm_filter = $orm_filter->and($orm_filter_tmp);
# Line 590  sub getListFiltered { Line 603  sub getListFiltered {
603    }    }
604    
605    $orm_query->{filter} = $orm_filter;    $orm_query->{filter} = $orm_filter;
606      
607      # debug point:
608      #print "Filter: " . Dumper($orm_query->{filter}) . "\n";
609    
610    # was:    # was:
611    
# Line 711  sub sendQuery { Line 727  sub sendQuery {
727            
728      } elsif (my $guid = $query->{options}->{GUID}) {      } elsif (my $guid = $query->{options}->{GUID}) {
729        $type = 'TRANSPARENT';        $type = 'TRANSPARENT';
730        $query->{criterias} = [ { key => 'guid', op => 'eq', val => $guid } ];            if(ref($query->{criterias}) eq 'ARRAY') {
731            push @{$query->{criterias}}, { key => 'guid', op => 'eq', val => $guid };
732          } else {
733            $query->{criterias} = [ { key => 'guid', op => 'eq', val => $guid } ];
734          }
735        }
736      # if operator is different (dispatcher for 'getListFiltered')      # if operator is different (dispatcher for 'getListFiltered')
737      } elsif (my $op = $query->{options}->{op}) {      if (my $op = $query->{options}->{op}) {
738        $type = 'TRANSPARENT';        $type = 'TRANSPARENT';
739        $query->{criterias} = [ { key => $query->{options}->{meta_label}, op => $op, val => $query->{options}->{meta_value} } ];            if(ref($query->{criterias}) eq 'ARRAY') {
740            push @{$query->{criterias}}, { key => $query->{options}->{meta_label}, op => $op, val => $query->{options}->{meta_value} };
741          } else {
742            $query->{criterias} = [ { key => $query->{options}->{meta_label}, op => $op, val => $query->{options}->{meta_value} } ];    
743          }
744      }      }
745        
746      # HACK: special case: querying by id does not translate into a common tangram query      # HACK: special case: querying by id does not translate into a common tangram query
# Line 831  sub sendQuery { Line 854  sub sendQuery {
854        my $object = $cursor->getNextEntry();        my $object = $cursor->getNextEntry();
855    
856        $self->erase($object);        $self->erase($object);
857          $self->unload($object);
858    
859      } elsif ($crud eq 'CREATE') {      } elsif ($crud eq 'CREATE') {
860                
# Line 1020  sub createNode { Line 1044  sub createNode {
1044        $obj->{$_} = '0000-00-00 00:00:00';        $obj->{$_} = '0000-00-00 00:00:00';
1045      } elsif($attr_types->{$_} eq 'ref') {      } elsif($attr_types->{$_} eq 'ref') {
1046        if($attr_options->{$_}->{class}) {        if($attr_options->{$_}->{class}) {
1047          $obj->{$_} = $self->createNode($attr_options->{$_}->{class});          # HACK!!!
1048            # STANDALONE Objects (objects which make sense to instanciat alone) should not created automaticly
1049            # because they maybe exists and should only be SETTED not CREATED!
1050            # TODO: Create a flag at the scheme for that reason!
1051            #   (e.g child_node => 1 for child-nodes only like e.g. UserData)
1052            if($attr_options->{$_}->{class} eq 'NetPerson' || $attr_options->{$_}->{class} eq 'Event' || $attr_options->{$_}->{class} eq 'BetRule') {
1053              #$obj->{$_} = undef();
1054            } else {
1055              $obj->{$_} = $self->createNode($attr_options->{$_}->{class});
1056            }
1057        } else {        } else {
1058          #$obj->{$_} = undef();          #$obj->{$_} = undef();
1059        }        }

Legend:
Removed from v.1.44  
changed lines
  Added in v.1.48

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed