weaver      2003/08/01 13:01:50

  Modified:    commons/src/java/org/apache/jetspeed/om/api
                        PortletPreferencesImpl.java
  Log:
  Concrete Impl for user preferences
  
  Revision  Changes    Path
  1.2       +105 -18   
jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/om/api/PortletPreferencesImpl.java
  
  Index: PortletPreferencesImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/om/api/PortletPreferencesImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortletPreferencesImpl.java       30 Jul 2003 18:30:15 -0000      1.1
  +++ PortletPreferencesImpl.java       1 Aug 2003 20:01:50 -0000       1.2
  @@ -54,16 +54,19 @@
   package org.apache.jetspeed.om.api;
   
   import java.io.IOException;
  +import java.util.Arrays;
  +import java.util.Collections;
   import java.util.Enumeration;
  +import java.util.Set;
   
   import javax.portlet.PortletPreferences;
   import javax.portlet.UnmodifiableException;
   import javax.portlet.ValidatorException;
   
  +import org.apache.jetspeed.om.common.PreferenceComposite;
   import org.apache.jetspeed.om.common.PreferenceSetImpl;
   import org.apache.jetspeed.om.common.PreferenceSetComposite;
   import org.apache.pluto.om.common.Preference;
  -import org.apache.pluto.om.common.PreferenceSet;
   
   /**
    * PortletPreferencesImpl
  @@ -82,7 +85,8 @@
   {
       private static final String NULL_KEY_MSG = "The preference \"key\" argument 
cannot be null";
   
  -    private PreferenceSet registryPreferences;
  +    private PreferenceSetComposite defaultPreferences;
  +    private PreferenceSetComposite originalPreferences;
   
       /**
        * Creates an instance of PortletPreferencesImpl using the
  @@ -94,10 +98,24 @@
        * @param prefSet PreferenceSet from the registry that will be used as a
        * base for the PortletPreferenceImpl.
        */
  -    public PortletPreferencesImpl(PreferenceSet prefSet)
  +    public PortletPreferencesImpl(PreferenceSetComposite defaultPreferences)
  +    {
  +        this();
  +        this.defaultPreferences = defaultPreferences;
  +    }
  +
  +    public PortletPreferencesImpl()
       {
           super();
  -        registryPreferences = prefSet;
  +    }
  +
  +    /**
  +     * 
  +     * @param defaultPreferences
  +     */
  +    public void setDefaultPreferences(PreferenceSetComposite defaultPreferences)
  +    {
  +        this.defaultPreferences = defaultPreferences;
       }
   
       /**
  @@ -129,7 +147,7 @@
               throw new IllegalArgumentException(NULL_KEY_MSG);
           }
   
  -        Preference pref = registryPreferences.get(key);
  +        Preference pref = defaultPreferences.get(key);
           if (pref == null || pref.isModifiable())
           {
               return true;
  @@ -168,16 +186,21 @@
               throw new IllegalArgumentException(NULL_KEY_MSG);
           }
   
  -        Preference pref = registryPreferences.get(key);
  -        if (pref != null)
  +        PreferenceComposite pref = (PreferenceComposite) get(key);
  +
  +        if ((pref == null || pref.getValueAt(0) == null)
  +            && defaultPreferences.get(key) != null
  +            && defaultPreferences.get(key).getValues() != null)
           {
  -            return def;
  +            pref = (PreferenceComposite) defaultPreferences.get(key);
           }
  -        else if (pref.getValues().hasNext())
  +
  +        if (pref != null)
           {
  +            return pref.getValueAt(0);
           }
   
  -        return null;
  +        return def;
       }
   
       /**
  @@ -187,8 +210,24 @@
        */
       public String[] getValues(String key, String[] def)
       {
  -        // TODO Auto-generated method stub
  -        return null;
  +        if (key == null)
  +        {
  +            throw new IllegalArgumentException(NULL_KEY_MSG);
  +        }
  +
  +        PreferenceComposite pref = (PreferenceComposite) get(key);
  +
  +        if (pref == null)
  +        {
  +            pref = (PreferenceComposite) defaultPreferences.get(key);
  +        }
  +
  +        if (pref != null)
  +        {
  +            return pref.getValueArray();
  +        }
  +
  +        return def;
       }
   
       /**
  @@ -196,7 +235,24 @@
        */
       public void setValue(String key, String value) throws UnmodifiableException
       {
  -        // TODO Auto-generated method stub
  +        if (key == null)
  +        {
  +            throw new IllegalArgumentException(NULL_KEY_MSG);
  +        }
  +
  +        if (!isModifiable(key))
  +        {
  +            throw new UnmodifiableException("Preference \"" + key + "\" is not a 
modifiable preference attribute.");
  +        }
  +
  +        PreferenceComposite pref = (PreferenceComposite) get(key);
  +
  +        if (pref == null)
  +        {
  +            pref = new PortletPreference();
  +        }
  +
  +        pref.setValueAt(0, value);
   
       }
   
  @@ -205,7 +261,24 @@
        */
       public void setValues(String key, String[] values) throws UnmodifiableException
       {
  -        // TODO Auto-generated method stub
  +        if (key == null)
  +        {
  +            throw new IllegalArgumentException(NULL_KEY_MSG);
  +        }
  +
  +        if (!isModifiable(key))
  +        {
  +            throw new UnmodifiableException("Preference \"" + key + "\" is not a 
modifiable preference attribute.");
  +        }
  +
  +        PreferenceComposite pref = (PreferenceComposite) get(key);
  +
  +        if (pref == null)
  +        {
  +            pref = new PortletPreference();
  +        }
  +
  +        pref.setValues(Arrays.asList(values));
   
       }
   
  @@ -214,8 +287,11 @@
        */
       public Enumeration getNames()
       {
  -        // TODO Auto-generated method stub
  -        return null;
  +        Set dftNames = defaultPreferences.getPreferenceNames();
  +        Set prefNames = super.getPreferenceNames();
  +        prefNames.addAll(dftNames);
  +
  +        return Collections.enumeration(prefNames);
       }
   
       /**
  @@ -223,7 +299,18 @@
        */
       public void reset(String key) throws UnmodifiableException
       {
  -        // TODO Auto-generated method stub
  +        if (key == null)
  +        {
  +            throw new IllegalArgumentException(NULL_KEY_MSG);
  +        }
  +
  +        if (!isModifiable(key))
  +        {
  +            throw new UnmodifiableException("Preference \"" + key + "\" is not a 
modifiable preference attribute.");
  +        }
  +
  +        // This will automatically cause a fall back to stored defaults
  +        remove(key);
   
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to