1 |
wakaba |
1.1 |
package SWE::DB::HashedProps; |
2 |
|
|
use strict; |
3 |
|
|
|
4 |
|
|
require SWE::DB::IDProps; |
5 |
|
|
push our @ISA, 'SWE::DB::IDProps'; |
6 |
|
|
|
7 |
|
|
require Digest::MD5; |
8 |
|
|
require Encode; |
9 |
|
|
|
10 |
|
|
sub _get_file_name ($$$) { |
11 |
|
|
my $self = shift; |
12 |
|
|
my $hash = Digest::MD5::md5_hex (Encode::encode ('utf8', $_[0])); |
13 |
|
|
my $mkdir = $_[1]; |
14 |
|
|
|
15 |
|
|
my $dir1 = $self->{root_directory_name} . substr ($hash, 0, 2); |
16 |
|
|
my $dir2 = $dir1 . '/' . substr ($hash, 2, 2); |
17 |
|
|
substr ($hash, 0, 4) = ''; |
18 |
|
|
|
19 |
|
|
my $file_name = $dir2 . '/' . $hash . $self->{leaf_suffix}; |
20 |
|
|
|
21 |
|
|
unless ($mkdir) { |
22 |
|
|
return $file_name; |
23 |
|
|
} |
24 |
|
|
|
25 |
|
|
unless (-d $dir1) { |
26 |
|
|
mkdir $dir1 or die "$0: $dir1: $!"; |
27 |
|
|
} |
28 |
|
|
|
29 |
|
|
unless (-d $dir2) { |
30 |
|
|
mkdir $dir2 or die "$0: $dir2: $!"; |
31 |
|
|
} |
32 |
|
|
|
33 |
wakaba |
1.2 |
if ($self->{version_control}) { |
34 |
|
|
$self->{version_control}->add_directory ($dir1); |
35 |
|
|
$self->{version_control}->add_directory ($dir2); |
36 |
wakaba |
1.1 |
} |
37 |
|
|
|
38 |
|
|
return $file_name; |
39 |
|
|
} # _get_file_name |
40 |
|
|
|
41 |
|
|
1; |