mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 22:15:26 +00:00
Bug 5085: Added storeToInventory flag to JSON as well as
MarkConfiguration implementations
This commit is contained in:
1 parent
549388d905
commit
7c84aef8a4
8 files changed
+57
-33
No files matched your search
+2
-2
@@ -15,8 +15,8 @@ public class FreestyleMarkConfigurationImpl extends MarkConfigurationImpl implem
|
||||
|
||||
public FreestyleMarkConfigurationImpl(MarkTemplate optionalMarkTemplate, MarkProperties optionalMarkProperties,
|
||||
CommonMarkProperties freestyleProperties, StorablePositioning optionalPositioning,
|
||||
Positioning storedPositioning) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, /* storeToInventory */ false);
|
||||
Positioning storedPositioning, boolean storeToInventory) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, storeToInventory);
|
||||
this.optionalMarkProperties = optionalMarkProperties;
|
||||
this.freestyleProperties = freestyleProperties;
|
||||
}
|
||||
|
||||
+2
-2
@@ -14,8 +14,8 @@ public class MarkPropertiesBasedMarkConfigurationImpl extends MarkConfigurationI
|
||||
private final MarkProperties markProperties;
|
||||
|
||||
public MarkPropertiesBasedMarkConfigurationImpl(MarkProperties markProperties, MarkTemplate optionalMarkTemplate, StorablePositioning optionalPositioning,
|
||||
Positioning storedPositioning) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, /* storeToInventory */ false);
|
||||
Positioning storedPositioning, boolean storeToInventory) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, storeToInventory);
|
||||
this.markProperties = markProperties;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -9,8 +9,9 @@ public class MarkTemplateBasedMarkConfigurationImpl extends MarkConfigurationImp
|
||||
implements MarkTemplateBasedMarkConfiguration {
|
||||
private static final long serialVersionUID = -6683111363486434715L;
|
||||
|
||||
public MarkTemplateBasedMarkConfigurationImpl(MarkTemplate markTemplate, StorablePositioning optionalPositioning) {
|
||||
super(markTemplate, optionalPositioning, /* storedPositioning */ null, /* storeToInventory */ false);
|
||||
public MarkTemplateBasedMarkConfigurationImpl(MarkTemplate markTemplate, StorablePositioning optionalPositioning,
|
||||
boolean storeToInventory) {
|
||||
super(markTemplate, optionalPositioning, /* storedPositioning */ null, storeToInventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -15,8 +15,9 @@ public class RegattaMarkConfigurationImpl extends MarkConfigurationImpl implemen
|
||||
private final MarkProperties optionalMarkProperties;
|
||||
|
||||
public RegattaMarkConfigurationImpl(Mark mark, StorablePositioning optionalPositioning,
|
||||
Positioning storedPositioning, MarkTemplate optionalMarkTemplate, MarkProperties optionalMarkProperties) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, /* storeToInventory */ false);
|
||||
Positioning storedPositioning, MarkTemplate optionalMarkTemplate, MarkProperties optionalMarkProperties,
|
||||
boolean storeToInventory) {
|
||||
super(optionalMarkTemplate, optionalPositioning, storedPositioning, storeToInventory);
|
||||
this.mark = mark;
|
||||
this.optionalMarkProperties = optionalMarkProperties;
|
||||
}
|
||||
|
||||
+19
-13
@@ -76,7 +76,8 @@ public class CourseConfigurationBuilder {
|
||||
}
|
||||
|
||||
public MarkConfiguration addMarkConfiguration(UUID optionalMarkTemplateID, UUID optionalMarkPropertiesID,
|
||||
UUID optionalMarkID, CommonMarkProperties commonMarkProperties, StorablePositioning optionalPositioning) {
|
||||
UUID optionalMarkID, CommonMarkProperties commonMarkProperties, StorablePositioning optionalPositioning,
|
||||
boolean storeToInventory) {
|
||||
final MarkConfiguration result;
|
||||
if (commonMarkProperties != null) {
|
||||
if (optionalMarkID != null) {
|
||||
@@ -84,14 +85,14 @@ public class CourseConfigurationBuilder {
|
||||
"Freestyle mark configurations may not reference an existing regatta mark");
|
||||
}
|
||||
result = addFreestyleMarkConfiguration(optionalMarkTemplateID, optionalMarkPropertiesID,
|
||||
commonMarkProperties, optionalPositioning);
|
||||
commonMarkProperties, optionalPositioning, storeToInventory);
|
||||
} else if (optionalMarkID != null) {
|
||||
result = addRegattaMarkConfiguration(optionalMarkID, optionalPositioning);
|
||||
result = addRegattaMarkConfiguration(optionalMarkID, optionalPositioning, storeToInventory);
|
||||
} else if (optionalMarkPropertiesID != null) {
|
||||
result = addMarkPropertiesConfiguration(optionalMarkPropertiesID, optionalMarkTemplateID,
|
||||
optionalPositioning);
|
||||
optionalPositioning, storeToInventory);
|
||||
} else if (optionalMarkTemplateID != null) {
|
||||
result = addMarkTemplateConfiguration(optionalMarkTemplateID, optionalPositioning);
|
||||
result = addMarkTemplateConfiguration(optionalMarkTemplateID, optionalPositioning, storeToInventory);
|
||||
} else {
|
||||
throw new IllegalArgumentException(
|
||||
"Mark configuration could not be constructed due to missing specification");
|
||||
@@ -100,12 +101,14 @@ public class CourseConfigurationBuilder {
|
||||
return result;
|
||||
}
|
||||
|
||||
public MarkTemplateBasedMarkConfiguration addMarkTemplateConfiguration(UUID markTemplateID, StorablePositioning optionalPositioning) {
|
||||
public MarkTemplateBasedMarkConfiguration addMarkTemplateConfiguration(UUID markTemplateID,
|
||||
StorablePositioning optionalPositioning, boolean storeToInventory) {
|
||||
final MarkTemplate resolvedMarkTemplate = resolveMarkTemplateByID(markTemplateID);
|
||||
if (resolvedMarkTemplate == null) {
|
||||
throw new IllegalStateException("Mark template with ID " + markTemplateID + " could not be resolved");
|
||||
}
|
||||
final MarkTemplateBasedMarkConfiguration result = new MarkTemplateBasedMarkConfigurationImpl(resolvedMarkTemplate, optionalPositioning);
|
||||
final MarkTemplateBasedMarkConfiguration result = new MarkTemplateBasedMarkConfigurationImpl(
|
||||
resolvedMarkTemplate, optionalPositioning, storeToInventory);
|
||||
markConfigurations.add(result);
|
||||
return result;
|
||||
}
|
||||
@@ -131,7 +134,8 @@ public class CourseConfigurationBuilder {
|
||||
return resolvedMarkTemplate;
|
||||
}
|
||||
|
||||
public MarkPropertiesBasedMarkConfiguration addMarkPropertiesConfiguration(UUID markPropertiesID, UUID optionalMarkTemplateID, StorablePositioning optionalPositioning) {
|
||||
public MarkPropertiesBasedMarkConfiguration addMarkPropertiesConfiguration(UUID markPropertiesID,
|
||||
UUID optionalMarkTemplateID, StorablePositioning optionalPositioning, boolean storeToInventory) {
|
||||
final MarkProperties resolvedMarkProperties = sharedSailingData.getMarkPropertiesById(markPropertiesID);
|
||||
if (resolvedMarkProperties == null) {
|
||||
throw new IllegalArgumentException(
|
||||
@@ -141,13 +145,14 @@ public class CourseConfigurationBuilder {
|
||||
: resolveMarkTemplateByID(optionalMarkTemplateID);
|
||||
final MarkPropertiesBasedMarkConfiguration result = new MarkPropertiesBasedMarkConfigurationImpl(
|
||||
resolvedMarkProperties, resolvedMarkTemplate, optionalPositioning,
|
||||
getPositioningIfAvailable(resolvedMarkProperties, positionResolver));
|
||||
getPositioningIfAvailable(resolvedMarkProperties, positionResolver), storeToInventory);
|
||||
markConfigurations.add(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public FreestyleMarkConfiguration addFreestyleMarkConfiguration(UUID optionalMarkTemplateID,
|
||||
UUID optionalMarkPropertiesID, CommonMarkProperties commonMarkProperties, StorablePositioning optionalPositioning) {
|
||||
UUID optionalMarkPropertiesID, CommonMarkProperties commonMarkProperties, StorablePositioning optionalPositioning,
|
||||
boolean storeToInventory) {
|
||||
final MarkTemplate resolvedMarkTemplate = optionalMarkTemplateID == null ? null
|
||||
: resolveMarkTemplateByID(optionalMarkTemplateID);
|
||||
final MarkProperties resolvedMarkProperties = sharedSailingData.getMarkPropertiesById(optionalMarkPropertiesID);
|
||||
@@ -156,12 +161,13 @@ public class CourseConfigurationBuilder {
|
||||
// isn't available.
|
||||
final FreestyleMarkConfiguration result = new FreestyleMarkConfigurationImpl(resolvedMarkTemplate,
|
||||
resolvedMarkProperties, commonMarkProperties, optionalPositioning, resolvedMarkProperties == null ? null
|
||||
: getPositioningIfAvailable(resolvedMarkProperties, positionResolver));
|
||||
: getPositioningIfAvailable(resolvedMarkProperties, positionResolver), storeToInventory);
|
||||
markConfigurations.add(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public RegattaMarkConfiguration addRegattaMarkConfiguration(UUID markID, StorablePositioning optionalPositioning) {
|
||||
public RegattaMarkConfiguration addRegattaMarkConfiguration(UUID markID, StorablePositioning optionalPositioning,
|
||||
boolean storeToInventory) {
|
||||
if (optionalRegatta == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
@@ -176,7 +182,7 @@ public class CourseConfigurationBuilder {
|
||||
: sharedSailingData.getMarkPropertiesById(markPropertiesIdOrNull);
|
||||
final RegattaMarkConfiguration result = new RegattaMarkConfigurationImpl(mark, optionalPositioning,
|
||||
getPositioningIfAvailable(optionalRegatta, mark, positionResolver), markTemplateOrNull,
|
||||
markPropertiesOrNull);
|
||||
markPropertiesOrNull, storeToInventory);
|
||||
markConfigurations.add(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
+5
-1
@@ -77,11 +77,15 @@ public class CourseConfigurationJsonDeserializer implements JsonDeserializer<Cou
|
||||
final StorablePositioning storablePositioning = positioningObject instanceof JSONObject
|
||||
? storablePositioningJsonDeserializer.deserialize((JSONObject) positioningObject)
|
||||
: null;
|
||||
|
||||
final boolean storeToInventory = Boolean.TRUE.equals(markConfigurationJSON
|
||||
.get(CourseConfigurationJsonSerializer.FIELD_MARK_CONFIGURATION_STORE_TO_INVENTORY));
|
||||
|
||||
final MarkConfiguration markConfiguration = builder.addMarkConfiguration(
|
||||
markTemplateID != null ? UUID.fromString(markTemplateID) : null,
|
||||
markPropertiesID != null ? UUID.fromString(markPropertiesID) : null,
|
||||
markID != null ? UUID.fromString(markID) : null, optionalFreestyleProperties, storablePositioning);
|
||||
markID != null ? UUID.fromString(markID) : null, optionalFreestyleProperties,
|
||||
storablePositioning, storeToInventory);
|
||||
String roleName = (String) markConfigurationJSON
|
||||
.get(CourseConfigurationJsonSerializer.FIELD_MARK_CONFIGURATION_ASSOCIATED_ROLE);
|
||||
if (roleName != null && !roleName.isEmpty()) {
|
||||
|
||||
+3
@@ -34,6 +34,7 @@ public class CourseConfigurationJsonSerializer implements JsonSerializer<CourseC
|
||||
public static final String FIELD_MARK_CONFIGURATION_ASSOCIATED_ROLE = "associatedRole";
|
||||
public static final String FIELD_MARK_CONFIGURATION_POSITIONING = "positioning";
|
||||
public static final String FIELD_MARK_CONFIGURATION_EFFECTIVE_POSITIONING = "effectivePositioning";
|
||||
public static final String FIELD_MARK_CONFIGURATION_STORE_TO_INVENTORY = "storeToInventory";
|
||||
public static final String FIELD_WAYPOINTS = "waypoints";
|
||||
public static final String FIELD_WAYPOINT_CONTROL_POINT_NAME = "controlPointName";
|
||||
public static final String FIELD_WAYPOINT_CONTROL_POINT_SHORT_NAME = "controlPointShortName";
|
||||
@@ -108,6 +109,8 @@ public class CourseConfigurationJsonSerializer implements JsonSerializer<CourseC
|
||||
markConfigurationsEntry.put(FIELD_MARK_CONFIGURATION_POSITIONING,
|
||||
storablePositioningJsonSerializer.serialize(markConfiguration.getOptionalPositioning()));
|
||||
}
|
||||
markConfigurationsEntry.put(FIELD_MARK_CONFIGURATION_STORE_TO_INVENTORY,
|
||||
markConfiguration.isStoreToInventory());
|
||||
|
||||
// TODO: associated role? markConfiguration.
|
||||
markConfigurationsToTempIdMap.put(markConfiguration, markConfigurationId);
|
||||
|
||||
+20
-11
@@ -172,11 +172,13 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
final RegattaMarkConfiguration regattaMarkConfiguration = (RegattaMarkConfiguration) markConfiguration;
|
||||
effectiveMarkConfiguration = new RegattaMarkConfigurationImpl(regattaMarkConfiguration.getMark(),
|
||||
/* optionalPositioning */ null, regattaMarkConfiguration.getEffectivePositioning(),
|
||||
regattaMarkConfiguration.getOptionalMarkTemplate(), markPropertiesOrNull);
|
||||
regattaMarkConfiguration.getOptionalMarkTemplate(), markPropertiesOrNull,
|
||||
false);
|
||||
} else {
|
||||
effectiveMarkConfiguration = new MarkPropertiesBasedMarkConfigurationImpl(markPropertiesOrNull,
|
||||
markConfiguration.getOptionalMarkTemplate(), /* optionalPositioning */ null,
|
||||
getPositioningIfAvailable(markPropertiesOrNull));
|
||||
getPositioningIfAvailable(markPropertiesOrNull),
|
||||
false);
|
||||
}
|
||||
effectiveConfigurations.put(markConfiguration, effectiveMarkConfiguration);
|
||||
} else {
|
||||
@@ -236,7 +238,8 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
final MarkProperties markProperties = ((MarkPropertiesBasedMarkConfiguration) markConfiguration)
|
||||
.getMarkProperties();
|
||||
effectiveConfiguration = new MarkPropertiesBasedMarkConfigurationImpl(markProperties,
|
||||
effectiveMarkTemplate, markConfiguration.getOptionalPositioning(), getPositioningIfAvailable(markProperties));
|
||||
effectiveMarkTemplate, markConfiguration.getOptionalPositioning(), getPositioningIfAvailable(markProperties),
|
||||
/* storeToInventory */ false);
|
||||
sharedSailingData.recordUsage(effectiveMarkTemplate, markProperties);
|
||||
} else if (markConfiguration instanceof FreestyleMarkConfiguration) {
|
||||
final MarkProperties markPropertiesOrNull = ((FreestyleMarkConfiguration) markConfiguration)
|
||||
@@ -245,15 +248,18 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
sharedSailingData.recordUsage(effectiveMarkTemplate, markPropertiesOrNull);
|
||||
if (markPropertiesOrNull.hasEqualAppeareanceWith(effectiveMarkTemplate)) {
|
||||
effectiveConfiguration = new MarkPropertiesBasedMarkConfigurationImpl(markPropertiesOrNull,
|
||||
effectiveMarkTemplate, markConfiguration.getOptionalPositioning(), getPositioningIfAvailable(markPropertiesOrNull));
|
||||
effectiveMarkTemplate, markConfiguration.getOptionalPositioning(), getPositioningIfAvailable(markPropertiesOrNull),
|
||||
/* storeToInventory */ false);
|
||||
} else {
|
||||
effectiveConfiguration = new FreestyleMarkConfigurationImpl(effectiveMarkTemplate,
|
||||
markPropertiesOrNull, effectiveMarkTemplate, markConfiguration.getOptionalPositioning(),
|
||||
getPositioningIfAvailable(markPropertiesOrNull));
|
||||
getPositioningIfAvailable(markPropertiesOrNull),
|
||||
/* storeToInventory */ false);
|
||||
}
|
||||
} else {
|
||||
effectiveConfiguration = new MarkTemplateBasedMarkConfigurationImpl(effectiveMarkTemplate,
|
||||
markConfiguration.getOptionalPositioning());
|
||||
markConfiguration.getOptionalPositioning(),
|
||||
/* storeToInventory */ false);
|
||||
}
|
||||
} else {
|
||||
// Should never happen but could in case a new MarkConfiguration type is defined
|
||||
@@ -459,7 +465,7 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
markTemplatesToMarkConfigurations.computeIfAbsent(markTemplate, mt -> {
|
||||
|
||||
final MarkConfiguration markConfiguration = new MarkTemplateBasedMarkConfigurationImpl(markTemplate,
|
||||
null);
|
||||
null, /* storeToInventory */ false);
|
||||
allMarkConfigurations.add(markConfiguration);
|
||||
return markConfiguration;
|
||||
});
|
||||
@@ -605,7 +611,7 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
markTemplatesToMarkConfigurations.computeIfAbsent(markTemplate, mt -> {
|
||||
|
||||
final MarkConfiguration markConfiguration = new MarkTemplateBasedMarkConfigurationImpl(
|
||||
markTemplate, null);
|
||||
markTemplate, null, /* storeToInventory */ false);
|
||||
|
||||
allMarkConfigurations.add(markConfiguration);
|
||||
resultingRoleMapping.put(markConfiguration,
|
||||
@@ -674,7 +680,8 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
if (suggestedMappings.containsKey(keyTemplate)) {
|
||||
final MarkProperties suggestedPropertiesMapping = suggestedMappings.get(keyTemplate);
|
||||
final MarkPropertiesBasedMarkConfigurationImpl newMarkPropertiesBasedConfiguration = new MarkPropertiesBasedMarkConfigurationImpl(
|
||||
suggestedPropertiesMapping, keyTemplate, /* optionalPositioning */ null, getPositioningIfAvailable(suggestedPropertiesMapping));
|
||||
suggestedPropertiesMapping, keyTemplate, /* optionalPositioning */ null,
|
||||
getPositioningIfAvailable(suggestedPropertiesMapping), /* storeToInventory */ false);
|
||||
|
||||
resultingRoleMapping.remove(entr.getKey());
|
||||
resultingRoleMapping.put(newMarkPropertiesBasedConfiguration, entr.getValue());
|
||||
@@ -703,7 +710,8 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
if (suggestedMappings.containsKey(keyTemplate)) {
|
||||
final MarkProperties suggestedPropertiesMapping = suggestedMappings.get(keyTemplate);
|
||||
final MarkPropertiesBasedMarkConfigurationImpl newMarkPropertiesBasedConfiguration = new MarkPropertiesBasedMarkConfigurationImpl(
|
||||
suggestedPropertiesMapping, keyTemplate, /* optionalPositioning */ null, getPositioningIfAvailable(suggestedPropertiesMapping));
|
||||
suggestedPropertiesMapping, keyTemplate, /* optionalPositioning */ null, getPositioningIfAvailable(suggestedPropertiesMapping),
|
||||
/* storeToInventory */ false);
|
||||
|
||||
markTemplatesToMarkConfigurationsToReplace.put(keyTemplate, newMarkPropertiesBasedConfiguration);
|
||||
markConfigurationsToEdit.remove(entr.getValue());
|
||||
@@ -966,7 +974,8 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
final MarkProperties markPropertiesOrNull = markPropertiesIdOrNull == null ? null
|
||||
: sharedSailingData.getMarkPropertiesById(markPropertiesIdOrNull);
|
||||
final RegattaMarkConfiguration regattaMarkConfiguration = new RegattaMarkConfigurationImpl(mark,
|
||||
/* optionalPositioning */ null, getPositioningIfAvailable(regatta, mark), markTemplateOrNull, markPropertiesOrNull);
|
||||
/* optionalPositioning */ null, getPositioningIfAvailable(regatta, mark), markTemplateOrNull,
|
||||
markPropertiesOrNull, /* storeToInventory */ false);
|
||||
return regattaMarkConfiguration;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user