ListPreferencesNodes.java

/*
 * Copyright 2008 Niclas Hedhman.
 *
 * Licensed  under the  Apache License,  Version 2.0  (the "License");
 * you may not use  this file  except in  compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed  under the  License is distributed on an "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
 * implied.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.qi4j.entitystore.prefs;

import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

public class ListPreferencesNodes
{
    public static void main( String[] args )
        throws Exception
    {
        Preferences preferences = Preferences.userRoot();
        printNode( preferences, "" );
    }

    private static void printNode( Preferences node, String indent )
        throws BackingStoreException
    {
        System.out.print( indent );
        String name = node.name();
        if( "".equals( name ) )
        {
            name = "/";
        }

        System.out.print( name );
        String[] nodes = node.keys();
        if( nodes.length > 0 )
        {
            System.out.print( "  { " );
            boolean first = true;
            for( String key : nodes )
            {
                if( !first )
                {
                    System.out.print( ", " );
                }
                first = false;
                System.out.print( key );
            }
            System.out.print( " }" );
        }
        System.out.println();
        for( String childName : node.childrenNames() )
        {
            Preferences child = node.node( childName );
            printNode( child, indent + "  " );
        }
    }
}