![JAR search and dependency download from the Maven repository](/logo.png)
org.protempa.LowLevelAbstractionValueDefinition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of protempa-framework Show documentation
Show all versions of protempa-framework Show documentation
Protempa Framework is the core of Protempa.
/*
* #%L
* Protempa Framework
* %%
* Copyright (C) 2012 - 2013 Emory University
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.protempa;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.protempa.proposition.PrimitiveParameter;
import org.protempa.proposition.Segment;
import org.protempa.proposition.value.BooleanValue;
import org.protempa.proposition.value.Value;
import org.protempa.proposition.value.ValueComparator;
/**
* @author Andrew Post
*/
public class LowLevelAbstractionValueDefinition implements Serializable {
private static final long serialVersionUID = 667871001125802717L;
private Value value = null;
private final String id;
private final LowLevelAbstractionDefinition lowLevelAbstractionDefinition;
private final Map parameterValues;
private final Map parameterValueComps;
private AlgorithmArguments algorithmArguments;
public LowLevelAbstractionValueDefinition(
LowLevelAbstractionDefinition lowLevelAbstractionDefinition,
String id) {
if (lowLevelAbstractionDefinition == null) {
throw new IllegalArgumentException(
"A low level abstraction definition must be specified");
}
this.lowLevelAbstractionDefinition = lowLevelAbstractionDefinition;
if (id == null) {
throw new IllegalArgumentException("id cannot be null");
}
this.id = id.intern();
this.lowLevelAbstractionDefinition.addValueDefinition(this);
this.lowLevelAbstractionDefinition.addPropertyChangeListener(
"algorithmId", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
LowLevelAbstractionValueDefinition.this.algorithmArguments = null;
}
});
this.parameterValues = new HashMap<>();
this.parameterValueComps = new HashMap<>();
}
public final void setParameterValue(String str, Value val) {
this.parameterValues.put(str, val);
this.algorithmArguments = null;
}
public final Value getParameterValue(String str) {
return this.parameterValues.get(str);
}
public final Set getParameters() {
return this.parameterValues.keySet();
}
public final void setParameterComp(String str, ValueComparator comp) {
this.parameterValueComps.put(str, comp);
this.algorithmArguments = null;
}
public final Set getParameterComps() {
return this.parameterValueComps.keySet();
}
public final ValueComparator getParameterComp(String str) {
return this.parameterValueComps.get(str);
}
public final LowLevelAbstractionDefinition getLowLevelAbstractionDefinition() {
return lowLevelAbstractionDefinition;
}
/**
* Test whether or not the given time series satisfies the constraints of
* this detector and an optional algorithm. If no algorithm is specified,
* then this test just uses the detector's constraints.
*
* @param segment a time series Segment
, cannot be
* null
.
* @param algorithm an Algorithm
, or null
to
* specify no algorithm.
* @return true
if the time series segment satisfies the
* constraints of this detector, false
otherwise
* @throws AlgorithmInitializationException
* @throws AlgorithmProcessingException
*/
final boolean satisfiedBy(
Segment segment, Algorithm algorithm)
throws AlgorithmInitializationException,
AlgorithmProcessingException {
Object result = null;
if (algorithm != null) {
if (this.algorithmArguments == null) {
this.algorithmArguments = new AlgorithmArguments(algorithm,
this);
algorithm.initialize(this.algorithmArguments);
}
result = algorithm.compute(segment, this.algorithmArguments);
} else {
result = BooleanValue.TRUE;
}
return result != null;
}
public final void setValue(Value value) {
this.value = value;
}
public final Value getValue() {
return value;
}
public final String getId() {
return id;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy