Skip to content

Commit 4a86ad3

Browse files
committed
Improve the error reporting for array formulas ( make it consistent )
1 parent 5c42927 commit 4a86ad3

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

core/formula/src/main/java/org/csstudio/apputil/formula/array/ArraySampleWithLTTBFunction.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package org.csstudio.apputil.formula.array;
22

3+
import org.csstudio.apputil.formula.Formula;
34
import org.epics.util.array.*;
45
import org.epics.vtype.*;
56
import org.phoebus.core.vtypes.VTypeHelper;
67

78
import java.util.ArrayList;
89
import java.util.Arrays;
910
import java.util.List;
11+
import java.util.logging.Level;
1012

1113
/**
1214
* @author Kunal Shroff
@@ -108,12 +110,13 @@ public VType compute(final VType... args) throws Exception {
108110
throw new Exception("Function " + getName() +
109111
" requires 2 arguments but received " + Arrays.toString(args));
110112
}
111-
if (!VTypeHelper.isNumericArray(args[0]))
112-
throw new Exception("Function " + getName() +
113+
if (!VTypeHelper.isNumericArray(args[0])) {
114+
Formula.logger.log(Level.WARNING, "Function " + getName() +
113115
" takes array but received " + Arrays.toString(args));
114-
115-
double buckets = VTypeHelper.toDouble(args[1]);
116-
117-
return getArrayData((VNumberArray) args[0], buckets);
116+
return DEFAULT_NAN_DOUBLE_ARRAY;
117+
} else {
118+
double buckets = VTypeHelper.toDouble(args[1]);
119+
return getArrayData((VNumberArray) args[0], buckets);
120+
}
118121
}
119122
}

core/formula/src/main/java/org/csstudio/apputil/formula/array/ArraySampleWithStrideFunction.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.csstudio.apputil.formula.array;
22

3+
import org.csstudio.apputil.formula.Formula;
34
import org.epics.util.array.ListDouble;
45
import org.epics.util.array.ListNumber;
56
import org.epics.vtype.Alarm;
@@ -10,6 +11,7 @@
1011

1112
import java.util.Arrays;
1213
import java.util.List;
14+
import java.util.logging.Level;
1315

1416
/**
1517
* A formula function for extracting elements from the given array at regular intervals (stride),
@@ -104,13 +106,16 @@ public VType compute(final VType... args) throws Exception {
104106
throw new Exception("Function " + getName() +
105107
" requires 2 or 3 arguments but received " + Arrays.toString(args));
106108
}
107-
if (!VTypeHelper.isNumericArray(args[0]))
108-
throw new Exception("Function " + getName() +
109+
if (!VTypeHelper.isNumericArray(args[0])) {
110+
Formula.logger.log(Level.WARNING, "Function " + getName() +
109111
" takes array but received " + Arrays.toString(args));
112+
return DEFAULT_NAN_DOUBLE_ARRAY;
110113

111-
double stride = VTypeHelper.toDouble(args[1]);
112-
double offset = (args.length == 3) ? VTypeHelper.toDouble(args[2]) : 0; // Default offset to 0
114+
} else {
115+
double stride = VTypeHelper.toDouble(args[1]);
116+
double offset = (args.length == 3) ? VTypeHelper.toDouble(args[2]) : 0; // Default offset to 0
113117

114-
return getArrayData((VNumberArray) args[0], stride, offset);
118+
return getArrayData((VNumberArray) args[0], stride, offset);
119+
}
115120
}
116121
}

0 commit comments

Comments
 (0)