Changeset 28534 for branches/pap/Nebulous-Server/lib/Nebulous/Server.pm
- Timestamp:
- Jun 28, 2010, 8:11:04 PM (16 years ago)
- Location:
- branches/pap
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
Nebulous-Server/lib/Nebulous/Server.pm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap
- Property svn:mergeinfo changed
/trunk (added) merged: 28500,28502,28507,28509-28512,28514,28516-28518,28520,28522,28524-28532
- Property svn:mergeinfo changed
-
branches/pap/Nebulous-Server/lib/Nebulous/Server.pm
r28446 r28534 9 9 no warnings qw( uninitialized ); 10 10 11 our $VERSION = '0.1 7';11 our $VERSION = '0.18'; 12 12 13 13 use base qw( Class::Accessor::Fast ); … … 1508 1508 1509 1509 return \@keys; 1510 } 1511 1512 sub find_objects_wildcard 1513 { 1514 my $self = shift; 1515 1516 my $log = $self->log; 1517 $log->debug( "entered - @_" ); 1518 1519 my ($pattern) = validate_pos( @_, 1520 { 1521 type => SCALAR, 1522 optional => 1, 1523 }, 1524 ); 1525 1526 my $sql = $self->sql; 1527 my $db = $self->_db_for_index(0); 1528 1529 # validate that we have a key to deal with 1530 eval { 1531 $pattern = parse_neb_key($pattern) if defined $pattern; 1532 }; 1533 $log->logdie("$@") if $@; 1534 1535 unless (defined $pattern) { 1536 $log->debug( "leaving" ); 1537 $log->logdie("no keys found"); 1538 } 1539 1540 # parse out the directory we're working in, and decide if we are a directory 1541 my $dir_id = $self->_resolve_dir_parent_id(key => $pattern, dir_id => 1); 1542 my $work_dir; 1543 my $file_pattern; 1544 if (defined $dir_id) { 1545 $work_dir = $pattern; 1546 $file_pattern = '%'; 1547 } 1548 else { 1549 my $dir_plain = dirname($pattern); 1550 if ($dir_plain eq 'neb:') { 1551 $dir_plain = 'neb:///'; 1552 } 1553 if ($dir_plain) { 1554 $work_dir = parse_neb_key($dir_plain); 1555 } 1556 else { 1557 $work_dir = parse_neb_key('/'); 1558 } 1559 $file_pattern = basename $pattern; 1560 unless ($file_pattern) { 1561 $file_pattern = '%'; 1562 } 1563 1564 $dir_id = $self->_resolve_dir_parent_id(key => $work_dir, dir_id => 1); 1565 unless (defined $dir_id) { 1566 $log->logdie("pattern $work_dir does not match any key or directory"); 1567 } 1568 } 1569 1570 # find dirs under dir 1571 my @dir_keys; 1572 1573 eval { 1574 $log->debug("looking for directories under dir: $dir_id"); 1575 my $query = $db->prepare_cached( $sql->find_dir_by_parent_id . " AND dirname LIKE ? "); 1576 $query->execute( $dir_id, $file_pattern ); 1577 1578 while ( my $row = $query->fetchrow_hashref ) { 1579 next if $row->{'dir_id'} == 1; 1580 my $dir = $row->{'dirname'}; 1581 if ($dir_id == 1) { 1582 push @dir_keys, $dir . '/' if $dir; 1583 } else { 1584 push @dir_keys, $work_dir->path . '/' . $dir . '/' if $dir; 1585 } 1586 $log->debug( "matched $dir" ) if $dir; 1587 } 1588 }; 1589 $log->logdie("database error: $@") if $@; 1590 1591 # find files under dir 1592 my @keys; 1593 eval { 1594 $log->debug("looking for objects under dir: $dir_id"); 1595 my $query = $db->prepare_cached( $sql->find_object_by_dir_id . " AND ext_id_basename LIKE ? "); 1596 $query->execute( $dir_id , $file_pattern); 1597 1598 while ( my $row = $query->fetchrow_hashref ) { 1599 my $key = $row->{ 'ext_id' }; 1600 push @keys, $key if $key; 1601 $log->debug( "matched $key" ) if $key; 1602 } 1603 }; 1604 $log->logdie("database error: $@") if $@; 1605 1606 $log->debug( "leaving" ); 1607 1608 return [sort(@dir_keys), sort(@keys)]; 1609 1510 1610 } 1511 1611
Note:
See TracChangeset
for help on using the changeset viewer.
