diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/CourseTemplate.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/CourseTemplate.java index 6531e9e2d6c..cab2f46dbf2 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/CourseTemplate.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/CourseTemplate.java @@ -1,6 +1,13 @@ package com.sap.sailing.domain.coursetemplate; +import java.util.UUID; + +import com.sap.sailing.domain.common.security.SecuredDomainType; import com.sap.sse.common.NamedWithUUID; +import com.sap.sse.security.shared.HasPermissions; +import com.sap.sse.security.shared.QualifiedObjectIdentifier; +import com.sap.sse.security.shared.TypeRelativeObjectIdentifier; +import com.sap.sse.security.shared.WithQualifiedObjectIdentifier; /** * A {@link Course} can be created from this template. The template defines {@link MarkTemplate}s, @@ -27,7 +34,7 @@ import com.sap.sse.common.NamedWithUUID; * @author Axel Uhl (d043530) * */ -public interface CourseTemplate extends WithOptionalRepeatablePart, NamedWithUUID, HasTags { +public interface CourseTemplate extends WithOptionalRepeatablePart, NamedWithUUID, HasTags, WithQualifiedObjectIdentifier { /** * The templates for all the marks that shall be made available in the regatta when applying this template. All * marks required to construct the waypoint sequence must be produced from this set of mark templates. There may be @@ -55,4 +62,18 @@ public interface CourseTemplate extends WithOptionalRepeatablePart, NamedWithUUI * limitation. */ Iterable getWaypoints(int numberOfLaps); + + public static TypeRelativeObjectIdentifier getTypeRelativeObjectIdentifier(UUID courseTemplateUUID) { + return new TypeRelativeObjectIdentifier(courseTemplateUUID.toString()); + } + + @Override + default QualifiedObjectIdentifier getIdentifier() { + return getPermissionType().getQualifiedObjectIdentifier(getTypeRelativeObjectIdentifier(getId())); + } + + @Override + default HasPermissions getPermissionType() { + return SecuredDomainType.COURSE_TEMPLATE; + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkProperties.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkProperties.java index 2e4fc8dd4b9..139c253f964 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkProperties.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkProperties.java @@ -1,14 +1,20 @@ package com.sap.sailing.domain.coursetemplate; import java.util.Map; +import java.util.UUID; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.common.DeviceIdentifier; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.security.SecuredDomainType; import com.sap.sse.common.Color; import com.sap.sse.common.NamedWithUUID; import com.sap.sse.common.TimePoint; +import com.sap.sse.security.shared.HasPermissions; +import com.sap.sse.security.shared.QualifiedObjectIdentifier; +import com.sap.sse.security.shared.TypeRelativeObjectIdentifier; +import com.sap.sse.security.shared.WithQualifiedObjectIdentifier; /** * Stores properties that can be applied to a mark in the context of an event or a regatta, including the mark's own @@ -35,7 +41,7 @@ import com.sap.sse.common.TimePoint; * @author Axel Uhl (d043530) * */ -public interface MarkProperties extends CommonMarkPropertiesWithOptionalPositioning, NamedWithUUID, HasTags { +public interface MarkProperties extends CommonMarkPropertiesWithOptionalPositioning, NamedWithUUID, HasTags, WithQualifiedObjectIdentifier { void setColor(Color color); void setShape(String shape); @@ -68,4 +74,18 @@ public interface MarkProperties extends CommonMarkPropertiesWithOptionalPosition Map getLastUsedTemplate(); Map getLastUsedRole(); + + public static TypeRelativeObjectIdentifier getTypeRelativeObjectIdentifier(UUID markPropertiesUUID) { + return new TypeRelativeObjectIdentifier(markPropertiesUUID.toString()); + } + + @Override + default QualifiedObjectIdentifier getIdentifier() { + return getPermissionType().getQualifiedObjectIdentifier(getTypeRelativeObjectIdentifier(getId())); + } + + @Override + default HasPermissions getPermissionType() { + return SecuredDomainType.MARK_PROPERTIES; + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkTemplate.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkTemplate.java index e918c3aabb2..ba4e803576a 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkTemplate.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/MarkTemplate.java @@ -1,6 +1,13 @@ package com.sap.sailing.domain.coursetemplate; +import java.util.UUID; + import com.sap.sailing.domain.base.Mark; +import com.sap.sailing.domain.common.security.SecuredDomainType; +import com.sap.sse.security.shared.HasPermissions; +import com.sap.sse.security.shared.QualifiedObjectIdentifier; +import com.sap.sse.security.shared.TypeRelativeObjectIdentifier; +import com.sap.sse.security.shared.WithQualifiedObjectIdentifier; /** * A template for creating a {@link Mark}. It has a globally unique ID and can be used in zero or more @@ -11,5 +18,18 @@ import com.sap.sailing.domain.base.Mark; * @author Axel Uhl (d043530) * */ -public interface MarkTemplate extends ControlPointTemplate, CommonMarkProperties { +public interface MarkTemplate extends ControlPointTemplate, CommonMarkProperties, WithQualifiedObjectIdentifier { + public static TypeRelativeObjectIdentifier getTypeRelativeObjectIdentifier(UUID markTemplateUUID) { + return new TypeRelativeObjectIdentifier(markTemplateUUID.toString()); + } + + @Override + default QualifiedObjectIdentifier getIdentifier() { + return getPermissionType().getQualifiedObjectIdentifier(getTypeRelativeObjectIdentifier(getId())); + } + + @Override + default HasPermissions getPermissionType() { + return SecuredDomainType.MARK_TEMPLATE; + } }