@@ -29,6 +29,7 @@ has 'ok' => (is => 'rw', isa => 'Bool', traits => [qw(NoClone)],
29
29
has ' warning' => (is => ' rw' , isa => ' Bool' , traits => [qw( NoClone) ], default => 0);
30
30
has ' errorcode' => (is => ' rw' , isa => ' Int' , traits => [qw( NoClone) ], default => 0);
31
31
has ' error' => (is => ' rw' , isa => ' Str' , traits => [qw( NoClone) ], default => q{ } );
32
+ has ' errormessage' => (is => ' rw' , isa => ' Str' , traits => [qw( NoClone) ], default => q{ } );
32
33
33
34
has ' filename' => (is => ' rw' , isa => ' Str' , traits => [qw( NoClone) ], default => q{ } );
34
35
has ' xdi_libversion' => (is => ' rw' , isa => ' Str' , traits => [qw( Clone) ], default => q{ } );
@@ -81,55 +82,64 @@ sub DEMOLISH {
81
82
82
83
sub _build_object {
83
84
my ($self ) = @_ ;
84
- $self -> error (q{ } );
85
+ $self -> errormessage (q{ } );
85
86
$self -> ok(1);
86
87
$self -> warning(0);
88
+ if (not $self -> file) {
89
+ $self -> errorcode(1);
90
+ $self -> errormessage(' No file specified' );
91
+ $self -> ok(0);
92
+ return undef ;
93
+ };
87
94
if (not -e $self -> file) {
88
95
$self -> errorcode(1);
89
- $self -> error (' The file ' .$self -> file.' does not exist as XDI ' );
96
+ $self -> errormessage (' The file ' .$self -> file.' does not exist' );
90
97
$self -> ok(0);
91
98
return undef ;
92
99
};
93
100
if (not -r $self -> file) {
94
101
$self -> errorcode(1);
95
- $self -> error (' The file ' .$self -> file.' cannot be read as XDI ' );
102
+ $self -> errormessage (' The file ' .$self -> file.' cannot be read' );
96
103
$self -> ok(0);
97
104
return undef ;
98
105
};
99
106
if (-d $self -> file) {
100
107
$self -> errorcode(1);
101
- $self -> error ($self -> file.' is a folder (i.e. not an XDI file)' );
108
+ $self -> errormessage ($self -> file.' is a folder (i.e. not an XDI file)' );
102
109
$self -> ok(0);
103
110
return undef ;
104
111
};
105
112
my $errcode = 0;
106
113
my $obj = Xray::XDIFile-> new($self -> file, $errcode );
107
114
$self -> errorcode($errcode );
115
+ $self -> errormessage($obj -> _error_message);
116
+
117
+ return $obj if ($errcode < 0);
108
118
109
119
# print $self->file, $/;
110
120
# $self->trace;
111
121
# print '>>>>>', $errcode, $/;
112
122
113
123
# #### see xdifile.h for error codes
114
124
# #### see xdifile.c (line 23 and following) for error messages
115
- if ($errcode < 0) {
116
- my @errors = ();
117
- foreach my $i (0 .. 10) {
118
- push @errors , $obj -> _errorstring(-1*2**$i ) if (abs($errcode ) & 2**$i );
119
- };
120
- $self -> error(join (" , " , @errors ));
121
- $self -> ok(0);
122
- return $obj ;
123
- };
124
- if ($errcode > 0) {
125
- my @errors = ();
126
- foreach my $i (0 .. 4) {
127
- push @errors , $obj -> _errorstring(2**$i ) if ($errcode & 2**$i );
128
- };
129
- $self -> error(join (" , " , @errors ));
130
- $self -> ok(1);
131
- $self -> warning(1);
132
- };
125
+ # if ($errcode < 0) {
126
+ # my @errors = ();
127
+ # foreach my $i (0 .. 10) {
128
+ # push @errors, $obj->_errorstring(-1*2**$i) if (abs($errcode) & 2**$i);
129
+ # };
130
+ # $self->error(join(", ", @errors));
131
+ # $self->ok(0);
132
+ # return $obj;
133
+ # };
134
+ # if ($errcode > 0) {
135
+ # my @errors = ();
136
+ # foreach my $i (0 .. 4) {
137
+ # push @errors, $obj->_errorstring(2**$i) if ($errcode & 2**$i);
138
+ # };
139
+ # $self->error(join(", ", @errors));
140
+ # $self->ok(1);
141
+ # $self->warning(1);
142
+ # };
133
143
134
144
if (not defined $obj -> _filename) {
135
145
$self -> error(' unknown problem reading ' .$self -> file.' as an XDI file' );
@@ -290,6 +300,31 @@ sub token {
290
300
return $self -> xdifile-> _token($tok );
291
301
};
292
302
303
+ # # methods for validation
304
+
305
+ sub required {
306
+ my ($self ) = @_ ;
307
+ my $i = $self -> xdifile-> _required_metadata;
308
+ $self -> errorcode($i );
309
+ $self -> errormessage($self -> xdifile-> _error_message);
310
+ return $i ;
311
+ };
312
+ sub recommended {
313
+ my ($self ) = @_ ;
314
+ my $i = $self -> xdifile-> _recommended_metadata;
315
+ $self -> errorcode($i );
316
+ $self -> errormessage($self -> xdifile-> _error_message);
317
+ return $i ;
318
+ };
319
+
320
+ sub validate {
321
+ my ($self , $family , $name , $value ) = @_ ;
322
+ my $i = $self -> xdifile-> _validate_item($family , $name , $value );
323
+ $self -> errorcode($i );
324
+ $self -> errormessage($self -> xdifile-> _error_message);
325
+ return $i ;
326
+ };
327
+
293
328
294
329
sub serialize {
295
330
my ($self ) = @_ ;
0 commit comments