Bug 5085: Added storeToInventory flag to JSON as well as

MarkConfiguration implementations
This commit is contained in:
Steffen Schaefer committed 2019-10-08 11:57:18 +02:00
1 parent 549388d905
commit 7c84aef8a4
8 files changed
+57 -33

No files matched your search

@@ -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;
}
@@ -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;
}
@@ -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
@@ -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;
}
@@ -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;
}
@@ -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()) {
@@ -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);
@@ -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;
}
}