mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-06 12:23:55 +00:00
Improved the data mining annotations
This commit is contained in:
1 parent
5ecd7f61de
commit
9ca4744652
21 files changed
+90
-70
No files matched your search
+2
-2
@@ -1,11 +1,11 @@
|
||||
package com.sap.sailing.datamining.data;
|
||||
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface HasGPSFixContext extends HasTrackedLegOfCompetitorContext {
|
||||
|
||||
@SideEffectFreeValue(messageKey="GPSFix")
|
||||
@Connector
|
||||
public GPSFixMoving getGPSFix();
|
||||
|
||||
}
|
||||
+4
-3
@@ -3,16 +3,17 @@ package com.sap.sailing.datamining.data;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
public interface HasTrackedLegOfCompetitorContext extends HasTrackedLegContext {
|
||||
|
||||
public TrackedLegOfCompetitor getTrackedLegOfCompetitor();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Competitor")
|
||||
@Connector
|
||||
public Competitor getCompetitor();
|
||||
|
||||
@SideEffectFreeValue(messageKey="DistanceTraveled", resultUnit=Unit.Meters, resultDecimals=0)
|
||||
@Statistic(messageKey="DistanceTraveled", resultUnit=Unit.Meters, resultDecimals=0)
|
||||
public Double getDistanceTraveled();
|
||||
|
||||
}
|
||||
+7
-7
@@ -8,28 +8,28 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.datamining.shared.annotations.Dimension;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface HasTrackedRaceContext {
|
||||
|
||||
public TrackedRace getTrackedRace();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Event")
|
||||
@Connector
|
||||
public Event getEvent();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Regatta")
|
||||
@Connector
|
||||
public Regatta getRegatta();
|
||||
|
||||
@SideEffectFreeValue(messageKey="CourseArea")
|
||||
@Connector
|
||||
public CourseArea getCourseArea();
|
||||
|
||||
@SideEffectFreeValue(messageKey="BoatClass")
|
||||
@Connector
|
||||
public BoatClass getBoatClass();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Fleet")
|
||||
@Connector
|
||||
public Fleet getFleet();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Race")
|
||||
@Connector
|
||||
public RaceDefinition getRace();
|
||||
|
||||
@Dimension(messageKey="Year")
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.sap.sailing.domain.common;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
/**
|
||||
* A speed, convertable in various units of measure. Can be negative.
|
||||
@@ -51,7 +51,7 @@ public interface Speed extends Comparable<Speed>, Serializable {
|
||||
}
|
||||
};
|
||||
|
||||
@SideEffectFreeValue(messageKey="InKnots", resultDecimals=2, resultUnit=Unit.Knots)
|
||||
@Statistic(messageKey="InKnots", resultDecimals=2, resultUnit=Unit.Knots)
|
||||
double getKnots();
|
||||
|
||||
double getMetersPerSecond();
|
||||
|
||||
+3
-3
@@ -3,13 +3,13 @@ package com.sap.sailing.domain.base;
|
||||
import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.domain.common.Named;
|
||||
import com.sap.sailing.domain.common.WithID;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface Competitor extends Named, WithID, IsManagedBySharedDomainFactory {
|
||||
@SideEffectFreeValue(messageKey="Team")
|
||||
@Connector
|
||||
Team getTeam();
|
||||
|
||||
@SideEffectFreeValue(messageKey="Boat")
|
||||
@Connector
|
||||
Boat getBoat();
|
||||
|
||||
Color getColor();
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface WithNationality {
|
||||
@SideEffectFreeValue(messageKey="Nationality")
|
||||
@Connector
|
||||
Nationality getNationality();
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface Moving {
|
||||
@SideEffectFreeValue(messageKey="Speed")
|
||||
@Connector
|
||||
SpeedWithBearing getSpeed();
|
||||
}
|
||||
+2
-10
@@ -2,12 +2,10 @@ package com.sap.sse.datamining.shared.annotations;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
|
||||
/**
|
||||
* Methods marked with this annotation will be used as function for the data mining framework. Functions can be used by the user to
|
||||
* create new functions and dimensions.<br />
|
||||
@@ -16,12 +14,6 @@ import com.sap.sse.datamining.shared.Unit;
|
||||
@Documented
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface SideEffectFreeValue {
|
||||
|
||||
public String messageKey();
|
||||
|
||||
public Unit resultUnit() default Unit.None;
|
||||
|
||||
public int resultDecimals() default 0;
|
||||
public @interface Connector {
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.sap.sse.datamining.shared.annotations;
|
||||
|
||||
public @interface DataRetriever {
|
||||
|
||||
public Class<?> dataType();
|
||||
|
||||
public String groupName();
|
||||
|
||||
public int level();
|
||||
|
||||
}
|
||||
-6
@@ -6,8 +6,6 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
|
||||
/**
|
||||
* Methods marked with this annotation will be used as dimensions for the data mining framework. The method will be called,
|
||||
* if the dimension value of a data element is requested.<br />
|
||||
@@ -32,8 +30,4 @@ public @interface Dimension {
|
||||
|
||||
public String messageKey();
|
||||
|
||||
public Unit resultUnit() default Unit.None;
|
||||
|
||||
public int resultDecimals() default 0;
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.sap.sse.datamining.shared.annotations;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
|
||||
@Documented
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Statistic {
|
||||
|
||||
public String messageKey();
|
||||
|
||||
public Unit resultUnit() default Unit.None;
|
||||
|
||||
public int resultDecimals() default 0;
|
||||
|
||||
}
|
||||
+2
-2
@@ -10,7 +10,7 @@ import org.junit.Test;
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectDimensionFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectExternalFunctionFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectSideEffectFreeValueFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectStatisticFilterCriteria;
|
||||
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
|
||||
|
||||
public class TestFunctionFilterCriterias {
|
||||
@@ -31,7 +31,7 @@ public class TestFunctionFilterCriterias {
|
||||
|
||||
@Test
|
||||
public void testMethodIsCorrectSideEffectFreeValueFilterCriteria() {
|
||||
FilterCriteria<Method> filterCriteria = new MethodIsCorrectSideEffectFreeValueFilterCriteria();
|
||||
FilterCriteria<Method> filterCriteria = new MethodIsCorrectStatisticFilterCriteria();
|
||||
|
||||
Method sideEffectFreeValue = FunctionTestsUtil.getMethodFromSimpleClassWithMarkedMethod("sideEffectFreeValue");
|
||||
assertThat(filterCriteria.matches(sideEffectFreeValue), is(true));
|
||||
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
package com.sap.sse.datamining.test.functions.test_classes;
|
||||
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
public interface DataTypeInterface {
|
||||
|
||||
@SideEffectFreeValue(messageKey="speedInKnots", resultUnit=Unit.Knots, resultDecimals=2)
|
||||
@Statistic(messageKey="speedInKnots", resultUnit=Unit.Knots, resultDecimals=2)
|
||||
public int getSpeedInKnots();
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.sap.sse.datamining.test.functions.test_classes;
|
||||
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface ExtendingInterface {
|
||||
|
||||
@SideEffectFreeValue(messageKey="raceNameLength")
|
||||
@Connector
|
||||
public int getRaceNameLength();
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.sap.sse.datamining.test.functions.test_classes;
|
||||
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
|
||||
public interface MarkedContainer {
|
||||
|
||||
@SideEffectFreeValue(messageKey="containerElement")
|
||||
@Connector
|
||||
public ContainerElement getContainerElement();
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.sap.sse.datamining.test.functions.test_classes;
|
||||
|
||||
import com.sap.sse.datamining.shared.annotations.Dimension;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
/*
|
||||
* DON'T CHANGE THE METHOD/CLASS NAMES!
|
||||
@@ -21,7 +21,7 @@ public class SimpleClassWithMarkedMethods {
|
||||
|
||||
}
|
||||
|
||||
@SideEffectFreeValue(messageKey="value")
|
||||
@Statistic(messageKey="value")
|
||||
public int sideEffectFreeValue() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ import java.util.Locale;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
|
||||
import com.sap.sse.datamining.shared.annotations.Dimension;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Connector;
|
||||
import com.sap.sse.datamining.shared.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl;
|
||||
|
||||
@@ -22,7 +22,7 @@ public class FunctionDTOFactory {
|
||||
|
||||
/**
|
||||
* Creates the corresponding DTO for the given function, with the retrieved string message for the given locale and the
|
||||
* contained message key as display name. The message key is provided with the {@link Dimension} or {@link SideEffectFreeValue}
|
||||
* contained message key as display name. The message key is provided with the {@link Dimension} or {@link Connector}
|
||||
* annotation.<br>
|
||||
* If the function has no message key, the function name is used as display name.
|
||||
*/
|
||||
|
||||
+4
-4
@@ -9,7 +9,7 @@ import java.util.logging.Level;
|
||||
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
|
||||
import com.sap.sse.datamining.shared.Unit;
|
||||
import com.sap.sse.datamining.shared.annotations.Dimension;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnType> {
|
||||
|
||||
@@ -44,10 +44,10 @@ public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnT
|
||||
private void initializeAdditionalData() {
|
||||
if (method.getAnnotation(Dimension.class) != null) {
|
||||
Dimension dimensionData = method.getAnnotation(Dimension.class);
|
||||
additionalData = new AdditionalFunctionData(dimensionData.messageKey(), dimensionData.resultUnit(), dimensionData.resultDecimals());
|
||||
additionalData = new AdditionalFunctionData(dimensionData.messageKey(), Unit.None, 0);
|
||||
}
|
||||
if (method.getAnnotation(SideEffectFreeValue.class) != null) {
|
||||
SideEffectFreeValue valueData = method.getAnnotation(SideEffectFreeValue.class);
|
||||
if (method.getAnnotation(Statistic.class) != null) {
|
||||
Statistic valueData = method.getAnnotation(Statistic.class);
|
||||
additionalData = new AdditionalFunctionData(valueData.messageKey(), valueData.resultUnit(), valueData.resultDecimals());
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.criterias.CompoundFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.criterias.OrCompoundFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectDimensionFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectSideEffectFreeValueFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.functions.criterias.MethodIsCorrectStatisticFilterCriteria;
|
||||
|
||||
public class InternalFunctionRetrievalProcessor extends FilteringFunctionRetrievalProcessor {
|
||||
|
||||
@@ -22,7 +22,7 @@ public class InternalFunctionRetrievalProcessor extends FilteringFunctionRetriev
|
||||
private static FilterCriteria<Method> createFilterCriteria() {
|
||||
CompoundFilterCriteria<Method> compoundFilterCriteria = new OrCompoundFilterCriteria<>();
|
||||
compoundFilterCriteria.addCriteria(new MethodIsCorrectDimensionFilterCriteria());
|
||||
compoundFilterCriteria.addCriteria(new MethodIsCorrectSideEffectFreeValueFilterCriteria());
|
||||
compoundFilterCriteria.addCriteria(new MethodIsCorrectStatisticFilterCriteria());
|
||||
return compoundFilterCriteria;
|
||||
}
|
||||
|
||||
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package com.sap.sse.datamining.impl.functions.criterias;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.shared.annotations.SideEffectFreeValue;
|
||||
|
||||
public class MethodIsCorrectSideEffectFreeValueFilterCriteria implements FilterCriteria<Method> {
|
||||
|
||||
@Override
|
||||
public boolean matches(Method method) {
|
||||
return method.getAnnotation(SideEffectFreeValue.class) != null;
|
||||
}
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.sap.sse.datamining.impl.functions.criterias;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.shared.annotations.Statistic;
|
||||
|
||||
public class MethodIsCorrectStatisticFilterCriteria implements FilterCriteria<Method> {
|
||||
|
||||
@Override
|
||||
public boolean matches(Method method) {
|
||||
return method.getAnnotation(Statistic.class) != null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user