radial sugiyama positioning integration
This commit is contained in:
@@ -38,6 +38,12 @@ type Config struct {
|
||||
SparqlReadyDelay time.Duration
|
||||
SparqlReadyTimeout time.Duration
|
||||
|
||||
HierarchyLayoutEngine string
|
||||
HierarchyLayoutBridgeBin string
|
||||
HierarchyLayoutBridgeWorkdir string
|
||||
HierarchyLayoutTimeout time.Duration
|
||||
HierarchyLayoutRootIRI string
|
||||
|
||||
ListenAddr string
|
||||
}
|
||||
|
||||
@@ -64,6 +70,11 @@ func LoadConfig() (Config, error) {
|
||||
SparqlLoadOnStart: envBool("SPARQL_LOAD_ON_START", false),
|
||||
SparqlClearOnStart: envBool("SPARQL_CLEAR_ON_START", false),
|
||||
|
||||
HierarchyLayoutEngine: envString("HIERARCHY_LAYOUT_ENGINE", "go"),
|
||||
HierarchyLayoutBridgeBin: envString("HIERARCHY_LAYOUT_BRIDGE_BIN", "/app/radial_sugiyama_go_bridge"),
|
||||
HierarchyLayoutBridgeWorkdir: envString("HIERARCHY_LAYOUT_BRIDGE_WORKDIR", "/workspace/radial_sugiyama"),
|
||||
HierarchyLayoutRootIRI: envString("HIERARCHY_LAYOUT_ROOT_IRI", "http://purl.obolibrary.org/obo/BFO_0000001"),
|
||||
|
||||
SparqlReadyRetries: envInt("SPARQL_READY_RETRIES", 30),
|
||||
ListenAddr: envString("LISTEN_ADDR", ":8000"),
|
||||
}
|
||||
@@ -81,6 +92,10 @@ func LoadConfig() (Config, error) {
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
cfg.HierarchyLayoutTimeout, err = envSeconds("HIERARCHY_LAYOUT_TIMEOUT_S", 60)
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
|
||||
if cfg.SparqlLoadOnStart && strings.TrimSpace(cfg.SparqlDataFile) == "" {
|
||||
return Config{}, fmt.Errorf("SPARQL_LOAD_ON_START=true but SPARQL_DATA_FILE is not set")
|
||||
@@ -110,6 +125,24 @@ func LoadConfig() (Config, error) {
|
||||
if cfg.EdgeBatchSize > cfg.MaxEdgeLimit {
|
||||
return Config{}, fmt.Errorf("EDGE_BATCH_SIZE must be <= MAX_EDGE_LIMIT")
|
||||
}
|
||||
switch strings.ToLower(strings.TrimSpace(cfg.HierarchyLayoutEngine)) {
|
||||
case "go", "rust":
|
||||
cfg.HierarchyLayoutEngine = strings.ToLower(strings.TrimSpace(cfg.HierarchyLayoutEngine))
|
||||
default:
|
||||
return Config{}, fmt.Errorf("HIERARCHY_LAYOUT_ENGINE must be 'go' or 'rust'")
|
||||
}
|
||||
if strings.TrimSpace(cfg.HierarchyLayoutBridgeBin) == "" {
|
||||
return Config{}, fmt.Errorf("HIERARCHY_LAYOUT_BRIDGE_BIN must not be empty")
|
||||
}
|
||||
if strings.TrimSpace(cfg.HierarchyLayoutBridgeWorkdir) == "" {
|
||||
return Config{}, fmt.Errorf("HIERARCHY_LAYOUT_BRIDGE_WORKDIR must not be empty")
|
||||
}
|
||||
if strings.TrimSpace(cfg.HierarchyLayoutRootIRI) == "" {
|
||||
return Config{}, fmt.Errorf("HIERARCHY_LAYOUT_ROOT_IRI must not be empty")
|
||||
}
|
||||
if cfg.HierarchyLayoutTimeout <= 0 {
|
||||
return Config{}, fmt.Errorf("HIERARCHY_LAYOUT_TIMEOUT_S must be > 0")
|
||||
}
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user