Skip to content

Commit

Permalink
fix: Move default profiles and fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelsJP committed Aug 4, 2024
1 parent 7aab8cf commit 3eb2cd4
Show file tree
Hide file tree
Showing 32 changed files with 302 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,19 @@
import lombok.Getter;
import lombok.Setter;
import org.heigit.ors.common.DataAccessEnum;
import org.heigit.ors.config.defaults.DefaultEngineProperties;
import org.heigit.ors.config.defaults.DefaultProfileProperties;
import org.heigit.ors.config.defaults.DefaultProfiles;
import org.heigit.ors.config.profile.ProfileProperties;
import org.heigit.ors.config.profile.defaults.DefaultElevationProperties;
import org.heigit.ors.config.profile.defaults.DefaultProfileProperties;
import org.heigit.ors.config.profile.defaults.DefaultProfiles;
import org.heigit.ors.config.utils.PathDeserializer;
import org.heigit.ors.config.utils.PathSerializer;
import org.heigit.ors.config.utils.PropertyUtils;

import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

@Getter
@Setter(AccessLevel.PROTECTED)
Expand Down Expand Up @@ -59,21 +58,6 @@ public class EngineProperties {
private Map<String, ProfileProperties> profiles;

public EngineProperties() {
this(false);
}

public EngineProperties(Boolean setDefaults) {
setProfiles(new LinkedHashMap<>());
setProfileDefault(new DefaultProfileProperties(setDefaults));
setElevation(new DefaultElevationProperties(setDefaults));
if (setDefaults) {
setSourceFile(Paths.get(""));
setInitThreads(1);
setPreparationMode(false);
setConfigOutputMode(false);
setGraphsRootPath(Paths.get("./graphs"));
setGraphsDataAccess(DataAccessEnum.RAM_STORE);
}
}

@JsonIgnore
Expand All @@ -86,19 +70,36 @@ public void initialize() {
// Second: Next priority are user set global properties from profileDefault
// Third: If properties are not set in profiles and profileDefault, use the default_profiles with their specific properties and their defaults
// Fourth: If properties are not set in profiles, profileDefault and default_profiles, use the default properties from DefaultProfileProperties
// Initialize defult profiles

// Initialize default engine properties
EngineProperties default_engine_properties = new DefaultEngineProperties(true);

// Set base graph path for the default engine properties if set by the user
Path emptyPath = Path.of("");
if (this.getGraphsRootPath() == null || this.getGraphsRootPath().equals(emptyPath)) {
this.setGraphsRootPath(default_engine_properties.getGraphsRootPath());
}

// Correct the default profiles that haven't been set by the user
// Make a copy Set<String>
Set<String> raw_user_profile_names = new HashSet<>(this.getProfiles().keySet());
HashSet<String> raw_user_profile_names;
if (this.getProfiles() == null) {
// In case the user has not set any profiles, we initialize the profiles with an empty map.
this.setProfiles(new HashMap<>());
raw_user_profile_names = new HashSet<>();
} else {
// Make a copy of the raw user profile names for later
raw_user_profile_names = new HashSet<>(this.getProfiles().keySet());
}

// Get the raw user default profile settings
ProfileProperties raw_user_default_profile_settings = this.getProfileDefault();
DefaultProfiles system_default_profile_settings = new DefaultProfiles(true);
DefaultProfileProperties system_default_profile_defaults_properties = new DefaultProfileProperties(true);

for (String profileEntry : system_default_profile_settings.getProfiles().keySet()) {
ProfileProperties profile = system_default_profile_settings.getProfiles().get(profileEntry);
if (this.getProfiles().containsKey(profileEntry)) {
// Todo Still needed or just overwrite the defaults in the end?

for (String profileEntryName : system_default_profile_settings.getProfiles().keySet()) {
ProfileProperties profile = system_default_profile_settings.getProfiles().get(profileEntryName);
if (this.getProfiles().containsKey(profileEntryName)) {
continue;
}
// Second step
Expand All @@ -107,10 +108,11 @@ public void initialize() {
PropertyUtils.deepCopyObjectsProperties(system_default_profile_settings.getProfiles().get(profile.getEncoderName().name), profile, false);
// Fourth step
PropertyUtils.deepCopyObjectsProperties(system_default_profile_defaults_properties, profile, false);
this.profiles.put(profileEntry, profile);
}
// Fifth step: Set the graph path correctly for the default profiles
profile.setGraphPath(Paths.get(this.getGraphsRootPath().toString(), profileEntryName).toAbsolutePath());

EngineProperties default_engine_properties = new EngineProperties(true);
this.profiles.put(profileEntryName, profile);
}

// Enrich null or missing properties with default values
PropertyUtils.deepCopyObjectsProperties(default_engine_properties, this, false);
Expand All @@ -121,14 +123,14 @@ public void initialize() {
ProfileProperties profile = this.getProfiles().get(profileEntryName);
// Second step
PropertyUtils.deepCopyObjectsProperties(raw_user_default_profile_settings, profile, false);
// If the graph_path is still empty, set it to the default value
if (profile.getGraphPath() == null) {
profile.setGraphPath(Paths.get(this.getGraphsRootPath().toString(), profileEntryName));
}
// Third step
PropertyUtils.deepCopyObjectsProperties(system_default_profile_settings.getProfiles().get(profileEntryName), profile, false);
// Fourth step
PropertyUtils.deepCopyObjectsProperties(system_default_profile_defaults_properties, profile, false);
// Fifth step: Set the graph path correctly for the user profiles
if (profile.getGraphPath() == null || profile.getGraphPath().equals(emptyPath)) {
profile.setGraphPath(Paths.get(this.getGraphsRootPath().toString(), profileEntryName).toAbsolutePath());
}
}
setInitialized(true);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.DataAccessEnum;
Expand All @@ -19,7 +19,7 @@ public DefaultElevationProperties(Boolean setDefaults) {
setDataAccess(DataAccessEnum.MMAP);
setCacheClear(false);
setProvider("multi");
setCachePath(Paths.get("./elevation_cache"));
setCachePath(Paths.get("./elevation_cache").toAbsolutePath());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;


import org.heigit.ors.common.EncoderNameEnum;
Expand Down Expand Up @@ -49,8 +49,10 @@ public DefaultEncoderOptionsProperties(Boolean setGlogalDefaults, EncoderNameEnu
setTurnCosts(true);
setBlockFords(false);
}
case FOOT_HIKING, FOOT_WALKING, WHEELCHAIR, PUBLIC_TRANSPORT -> // Just set the ones from below
setBlockFords(false);
case FOOT_HIKING, FOOT_WALKING, WHEELCHAIR, PUBLIC_TRANSPORT -> {
setTurnCosts(false);
setBlockFords(false);
}
default -> {
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.heigit.ors.config.defaults;

import org.heigit.ors.common.DataAccessEnum;
import org.heigit.ors.config.EngineProperties;

import java.nio.file.Path;
import java.util.LinkedHashMap;

public class DefaultEngineProperties extends EngineProperties {
public DefaultEngineProperties() {
this(false);
}

public DefaultEngineProperties(Boolean setDefaults) {
super();
if (setDefaults) {
setSourceFile(Path.of(""));
setInitThreads(2);
setPreparationMode(false);
setConfigOutputMode(false);
setGraphsRootPath(Path.of("./graphs").toAbsolutePath());
setGraphsDataAccess(DataAccessEnum.RAM_STORE);
setElevation(new DefaultElevationProperties(true));
setProfileDefault(new DefaultProfileProperties(true));
setProfiles(new LinkedHashMap<>());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.Getter;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.config.profile.ProfileProperties;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.EqualsAndHashCode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.EqualsAndHashCode;
import org.heigit.ors.common.EncoderNameEnum;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.heigit.ors.config.profile.defaults;
package org.heigit.ors.config.defaults;

import lombok.Getter;
import org.heigit.ors.config.profile.ProfileProperties;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import lombok.Getter;
import lombok.Setter;
import org.heigit.ors.common.EncoderNameEnum;
import org.heigit.ors.config.profile.defaults.*;
import org.heigit.ors.config.defaults.*;
import org.heigit.ors.config.profile.storages.ExtendedStorage;
import org.heigit.ors.config.utils.*;

Expand Down Expand Up @@ -86,19 +86,19 @@ public abstract class ProfileProperties {
private Map<String, ExtendedStorage> extStorages;

protected ProfileProperties() {
this(false);
this(false, null);
}

protected ProfileProperties(Boolean setDefaults, EncoderNameEnum encoderName) {
this(setDefaults);
setEncoderName(encoderName);
protected ProfileProperties(Boolean setDefaults) {
this(setDefaults, null);
}

protected ProfileProperties(Boolean setDefaults) {
protected ProfileProperties(Boolean setDefaults, EncoderNameEnum encoderName) {
setEncoderName(encoderName);
if (setDefaults) {
encoderOptions = new DefaultEncoderOptionsProperties();
preparation = new DefaultPreparationProperties();
execution = new DefaultExecutionProperties();
encoderOptions = new DefaultEncoderOptionsProperties(true, this.encoderName);
preparation = new DefaultPreparationProperties(this.encoderName);
execution = new DefaultExecutionProperties(this.encoderName);
} else {
encoderOptions = new EncoderOptionsProperties();
preparation = new PreparationProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class ExtendedStorageHereTraffic extends ExtendedStorage {

private Path pattern_15min = Path.of("");

private Integer radius = 250;
private Integer radius = 150;

private Boolean output_log = false;

Expand Down
Loading

0 comments on commit 3eb2cd4

Please sign in to comment.