2 # ============================================================================
3 # Zebra perl API header
4 # =============================================================================
6 # ============================================================================
7 package IDZebra::Repository;
9 use IDZebra::Logger qw(:flags :calls);
11 use Scalar::Util qw(weaken);
15 # -----------------------------------------------------------------------------
17 # -----------------------------------------------------------------------------
20 my ($proto,$session,%args) = @_;
21 my $class = ref($proto) || $proto;
23 $self->{session} = $session;
24 weaken ($self->{session});
25 $self->{rg} = IDZebra::recordGroup->new();
26 IDZebra::init_recordGroup($self->{rg});
27 bless ($self, $class);
28 unless ($self->_set_options(%args)) {
35 my ($self,%args) = @_;
37 if ($args{name} ne $self->{rg}{groupName}) {
38 $self->readConfig($args{name},"");
42 $self->_set_options(%args);
46 my ($self, $groupName, $ext) = @_;
48 IDZebra::init_recordGroup($self->{rg});
49 $self->{rg}{groupName} = $groupName;
51 $ext = "" unless ($ext);
52 IDZebra::res_get_recordGroup($self->{session}{zh}, $self->{rg}, $ext);
57 my ($self, %args) = @_;
59 foreach my $key (keys(%args)) {
60 $self->{rg}{$key} = $args{$key};
72 IDZebra::set_group($self->{session}{zh}, $self->{rg});
75 unless ($dbName = $self->{rg}{databaseName}) {
78 if (my $res = IDZebra::select_database($self->{session}{zh}, $dbName)) {
80 "Could not select database %s errCode=%d",
81 $self->{rg}{databaseName},
82 $self->{session}->errCode());
83 croak("Fatal error opening/selecting database (record group)");
85 logf(LOG_LOG,"Database %s selected",$dbName);
91 foreach my $key qw (groupName databaseName path recordId recordType flagStoreData flagStoreKeys flagRw fileVerboseLimit databaseNamePath explainDatabase followLinks) {
92 print STDERR "RG:$key:",$self->{rg}{$key},"\n";
97 my ($self, %args) = @_;
98 $self->_set_options(%args);
99 IDZebra::init($self->{session}{zh});
103 my ($self, %args) = @_;
104 $self->_set_options(%args);
105 IDZebra::compact($self->{session}{zh});
109 my ($self, %args) = @_;
110 $self->_set_options(%args);
111 IDZebra::repository_update($self->{session}{zh});
115 my ($self, %args) = @_;
116 $self->_set_options(%args);
117 IDZebra::repository_delete($self->{session}{zh});
121 my ($self, %args) = @_;
122 $self->_set_options(%args);
123 IDZebra::repository_show($self->{session}{zh});
127 my ($self, %args) = @_;
128 return(IDZebra::update_record($self->{session}{zh},
130 $self->update_args(%args)));
134 my ($self, %args) = @_;
135 return(IDZebra::delete_record($self->{session}{zh},
137 $self->update_args(%args)));
141 my ($self, %args) = @_;
143 my $sysno = $args{sysno} ? $args{sysno} : 0;
144 my $match = $args{match} ? $args{match} : "";
145 my $rectype = $args{recordType} ? $args{recordType} : "";
146 my $fname = $args{file} ? $args{file} : "<no file>";
153 elsif ($args{file}) {
154 open (F, $args{file}) || warn ("Cannot open $args{file}");
155 $buff = join('',(<F>));
158 my $len = length($buff);
160 # If no record type is given, then try to find it out from the
164 my ($ext) = $fname =~ /\.(\w+)$/;
165 $self->readConfig( $self->{rg}{groupName},$ext);
168 return ($rectype, $sysno, $match, $fname, $buff, $len);
179 IDZebra::Repository -
191 Peter Popovics, pop@technomat.hu
195 IDZebra, IDZebra::Data1, Zebra documentation