package javacodebook.misc.jni_registry;

import ca.beq.util.win32.registry.*;
import java.util.Iterator;

/**
 * Programm zum testen des Zugriffs auf die Windows-Registry über das
 * Paket jRegistryKey
 * @author  Mark Donnermeyer
 */
public class TestRegistry {
    
    public static void main(String[] args) {
        
        // Einen Key besorgen, der bereits existiert
        RegistryKey key = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software");
        
        // Alle Subkeys auflisten
        System.out.println("--- Subkeys von 'HKEY_CURRENT_USER\\Software' ---");
        if(key.hasSubkeys()) {
            Iterator iter = key.subkeys();
            while(iter.hasNext()) {
                RegistryKey subkey = (RegistryKey)iter.next();
                System.out.println(subkey.toString());
            }
        }
        
        // Einen neuen Subkey erzeugen
        RegistryKey newSubkey = key.createSubkey("Javacodebook");
        
        // Jetzt ein paar Werte in den Subkey schreiben
        RegistryValue value = new RegistryValue("val_1", "Ein neuer Wert");
        newSubkey.setValue(value);
        value = new RegistryValue("val_2", 127);
        newSubkey.setValue(value);
        
        // Einen spezifischen Wert aus dem Key auslesen und auf der
        // Konsole ausgeben
        System.out.println("--- Wert von val_2 des Keys 'Javacodebook' ---");
        if(newSubkey.hasValue("val_2")) {
           value = newSubkey.getValue("val_2");
           System.out.println(value.toString());
        }
        
        // Alle zu dem Key angelegten Werte auslesen und auf der 
        // Konsole ausgeben
        System.out.println("--- Alle Werte des Keys 'Javacodebook' ---");
        if(newSubkey.hasValues()) {
            Iterator iter = newSubkey.values();
            while(iter.hasNext()) {
                value = (RegistryValue)iter.next();
                System.out.println(value.toString());
            }
        }
        
        // Den neuen Key wieder löschen
        newSubkey.delete();
    }
}
