diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java index 4bbcab44985..387f82d6d0d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/DeviceConfigurationMatcher.java @@ -3,30 +3,62 @@ package com.sap.sailing.domain.base.configuration; import java.io.Serializable; import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMapImpl; +/** + *
+ * Classes implementing this interface are matching {@link DeviceConfigurationIdentifier}s to associate them with a + * {@link DeviceConfiguration}. + *
+ * + *The rank (see {@link DeviceConfigurationMatcher#getMatchingRank()}) is used as a priority when multiple matchers + * are matching a {@link DeviceConfigurationIdentifier} (see also {@link DeviceConfigurationMapImpl}).
+ */ public interface DeviceConfigurationMatcher extends IsManagedBySharedDomainFactory, Serializable { final static int RANK_SINGLE = 1; final static int RANK_MULTI = 2; final static int RANK_ANY = 3; - + public enum Type { - SINGLE(RANK_SINGLE), - MULTI(RANK_MULTI), - ANY(RANK_ANY); - + SINGLE(RANK_SINGLE), MULTI(RANK_MULTI), ANY(RANK_ANY); + private int matchingRank; - + private Type(int rank) { this.matchingRank = rank; } - + public int getRank() { return matchingRank; } } - + + /** + * Returns the kind of matching used by this matcher. + * + * @return the {@link Type}. + */ Type getMatcherType(); + + /** + * Gets the matcher's rank. + * + * @return the rank. + */ int getMatchingRank(); + + /** + * Returnstrue if this {@link DeviceConfigurationMatcher} matches the given
+ * {@link DeviceConfigurationIdentifier}; otherwise false.
+ *
+ * @param identifier
+ */
boolean matches(DeviceConfigurationIdentifier identifier);
+
+ /**
+ * Gets this matcher's identifier.
+ *
+ * @return the identifier.
+ */
Serializable getMatcherIdentifier();
}
diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMapImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMapImpl.java
index b15f290ae13..fe420eb5a44 100644
--- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMapImpl.java
+++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/configuration/impl/DeviceConfigurationMapImpl.java
@@ -1,19 +1,30 @@
package com.sap.sailing.domain.base.configuration.impl;
+import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
+/**
+ * + * Helper class providing a {@link Map} of {@link DeviceConfigurationMatcher}s associated with their + * {@link DeviceConfiguration}. + *
+ * + *+ * When searching for a match, the highest ranked {@link DeviceConfigurationMatcher} (i.e. lowest number) wins. + *
+ */ public class DeviceConfigurationMapImpl extends ConcurrentHashMap