All Downloads are FREE. Search and download functionalities are using the official Maven repository.

brainslug.flow.execution.property.store.HashMapPropertyStore Maven / Gradle / Ivy

The newest version!
package brainslug.flow.execution.property.store;

import brainslug.flow.definition.Identifier;
import brainslug.flow.execution.instance.FlowInstanceProperty;
import brainslug.flow.execution.instance.FlowInstanceProperties;
import brainslug.flow.execution.property.ExecutionProperties;
import brainslug.util.Option;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class HashMapPropertyStore implements PropertyStore {

  Map, ExecutionProperties> propertiesByInstance = Collections.synchronizedMap(new HashMap, ExecutionProperties>());

  @Override
  public void setProperty(Identifier instanceId, FlowInstanceProperty property) {
    ExecutionProperties instanceProperties = propertiesByInstance.get(instanceId);
    if (instanceProperties != null) {
      instanceProperties.with(property.getKey(), property.getValue());
    }
  }

  @Override
  public void setProperties(Identifier instanceId, FlowInstanceProperties> properties) {
    propertiesByInstance.put(instanceId, new ExecutionProperties().from(properties.values()));
  }

  @Override
  public Option> getProperty(Identifier instanceId, Identifier key) {
    ExecutionProperties instanceProperties = propertiesByInstance.get(instanceId);
    if (instanceProperties == null) {
      return Option.empty();
    } else {
      return Option.>of(instanceProperties.get(key.stringValue()));
    }
  }

  @Override
  public FlowInstanceProperties> getProperties(Identifier instanceId) {
    return Option.of(propertiesByInstance.get(instanceId)).orElse(new ExecutionProperties());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy