Merge branch 'release/5.45.0'
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / IPreferenceService.java
index 48ff759d68d10ecfc3563d7a6e9347ad21fbed92..afa8b3db5e230bb4471af74dc2d6d896eeaddfab 100644 (file)
@@ -14,6 +14,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;\r
 import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;\r
 import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;\r
+import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;\r
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 \r
@@ -45,6 +46,15 @@ public interface IPreferenceService {
       */\r
      public List<CdmPreference> list();\r
 \r
+     /**\r
+     * Returns all matching preferences for the given predicate. Use\r
+     * {@link #find(PrefKey)} to find the best matching preference\r
+     * or use {@link PreferenceResolver} to resolve the best matching\r
+     * preference on client side.\r
+     * @param predicate\r
+     * @return\r
+     */\r
+    public List<CdmPreference> list(IPreferencePredicate<?> predicate);\r
 \r
      /**\r
      * Retrieve all matching values for the given preference key.\r
@@ -62,6 +72,13 @@ public interface IPreferenceService {
       */\r
      public CdmPreference find(PrefKey key);\r
 \r
+    /**\r
+     * Retrieve the preference that has a key exactly matching the given key.\r
+     * @param key\r
+     * @return\r
+     */\r
+    public CdmPreference findExact(PrefKey key);\r
+\r
 \r
   // Can not yet be created as we allow only PreferencePredicate for predicate key creation now.\r
 //     /**\r
@@ -85,14 +102,14 @@ public interface IPreferenceService {
       * @param predicate\r
       * @return\r
       */\r
-     public CdmPreference findDatabase(IPreferencePredicate predicate);\r
+     public CdmPreference findDatabase(IPreferencePredicate<?> predicate);\r
 \r
      /**\r
       * Retrieve the vaadin wide preference for the given predicate.\r
       * @param predicate\r
       * @return\r
       */\r
-     public CdmPreference findVaadin(IPreferencePredicate predicate);\r
+     public CdmPreference findVaadin(IPreferencePredicate<?> predicate);\r
 \r
 \r
      /**\r
@@ -100,7 +117,7 @@ public interface IPreferenceService {
       * @param predicate\r
       * @return\r
       */\r
-     public CdmPreference findTaxEditor(IPreferencePredicate predicate);\r
+     public CdmPreference findTaxEditor(IPreferencePredicate<?> predicate);\r
 \r
      /**\r
       * Returns the best matching preference that matches the given\r
@@ -110,9 +127,9 @@ public interface IPreferenceService {
       * @param predicate\r
       * @return\r
       */\r
-     public Object find(TaxonNode taxonNode, String predicate);\r
+     public CdmPreference find(TaxonNode taxonNode, String predicate);\r
 \r
-     public CdmPreference find(TaxonNode taxonNode, IPreferencePredicate predicate);\r
+     public CdmPreference find(TaxonNode taxonNode, IPreferencePredicate<?> predicate);\r
 \r
      /**\r
       * Returns the best matching preference that matches the given\r
@@ -140,6 +157,12 @@ public interface IPreferenceService {
      public void set(CdmPreference preference);\r
 \r
 \r
+    /**\r
+     * @param preference\r
+     */\r
+    void remove(PrefKey preference);\r
+\r
+\r
 \r
      //we need to decide if we want to keep this method\r
 //     //returns old value\r