Personal tools

SRB:Jargon Tips

From Adapt

Jump to: navigation, search

Querying MCAT for one item

This will query the MCAT for one item

  • queryItem is the SRBMetaDataSet item to query against
  • test is the MetaDataCondition test to use
  • selectItem is the desired return item

It will return a list of results. See below for examples on using this to list files in a directory.

    public static List<String> queryForOneItem( SRBFileSystem sfs, 
            String queryItem, int test, String query, String selectItem ) throws IOException
    {
        if ( sfs == null )
            throw new NullPointerException("SRBFile is null");
        
        /**
         * Construct query
         */
        MetaDataCondition[] conditions = { MetaDataSet.newCondition(
            queryItem, test, query )
        };
        
        String[]    selectStrings =
        {
            selectItem
        };
        
        MetaDataSelect[]        selects = MetaDataSet.newSelection(selectStrings);
        MetaDataRecordList[]    rl = sfs.query( conditions, selects, 300 );
        ArrayList<String>       results = new ArrayList<String>();
        
        while (rl != null && rl.length > 0)
        {
            
            for (MetaDataRecordList r : rl)
            {
                
                results.add(r.getValue(selectItem).toString());
            }
            
            if (!rl[rl.length-1].isQueryComplete())
            {
                rl = rl[rl.length-1].getMoreResults();
            }
            else
            {
                rl = null;
            }
        }
        return results;
    }

Listing Files and directories

Here's a shortcut to listing files and directories w/o using srb file, using the metadata hack above

    public static List<String> listFilesInDirectory( SRBFileSystem sfs, String directory ) throws IOException
    {
        if ( sfs == null || StringUtil.isEmpty(directory))
            throw new NullPointerException("SRBFile or directory is null or empty");
        
        
        String path = (directory.endsWith("/")
        ? directory.substring(0,directory.length() - 1)
        : directory);
        
        return queryForOneItem(sfs, SRBMetaDataSet.DIRECTORY_NAME, 
                MetaDataCondition.EQUAL, path, SRBMetaDataSet.FILE_NAME);
    }
    
    public static List<String> listDirectoriesInDirectory( SRBFileSystem sfs, String directory ) throws IOException
    {
        if ( sfs == null || StringUtil.isEmpty(directory))
            throw new NullPointerException("SRBFile or directory is null or empty");
        
        String path = (directory.endsWith("/")
        ? directory.substring(0,directory.length() - 1)
        : directory);
        
        return queryForOneItem(sfs, SRBMetaDataSet.PARENT_DIRECTORY_NAME, 
                MetaDataCondition.EQUAL, path, SRBMetaDataSet.DIRECTORY_NAME);
    }
    
    
    

-- Main.MikeSmorul - 07 Dec 2006