blob: ce83c2bab1193669157e3de95ebac5af379703f4 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2021 the Eclipse BaSyx Authors
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
package org.eclipse.basyx.examples.snippets.aas.active.tasks;
import org.eclipse.basyx.tools.aas.active.VABModelTask;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
/**
* Task for computing the average value from a source property
*
* @author espen
*
*/
public class AverageTask implements VABModelTask {
private float factor;
private String sourcePath;
private String targetPath;
private double lastAverage;
public AverageTask(float factor, String sourcePath, String targetPath) {
this.factor = factor;
this.sourcePath = sourcePath;
this.targetPath = targetPath;
}
@Override
public void execute(IModelProvider model) throws Exception {
double nextValue = (double) model.getModelPropertyValue(sourcePath);
double average = lastAverage;
if ( average == 0 ) {
average = nextValue;
} else {
average = average * (1 - factor) + nextValue * factor;
}
model.setModelPropertyValue(targetPath, average);
lastAverage = average;
}
}