Skip to content

Commit 806e7cd

Browse files
committed
use flags in getMinMaxColumnValue() for double 2D columns
1 parent ce9c875 commit 806e7cd

1 file changed

Lines changed: 19 additions & 12 deletions

File tree

src/main/java/fr/jmmc/oitools/fits/FitsTable.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import fr.jmmc.oitools.meta.Units;
2727
import fr.jmmc.oitools.meta.WaveColumnMeta;
2828
import fr.jmmc.oitools.model.ModelVisitor;
29+
import fr.jmmc.oitools.model.OIData;
2930
import fr.jmmc.oitools.model.OIFitsChecker;
3031
import fr.jmmc.oitools.model.OITable;
3132
import fr.jmmc.oitools.model.Rule;
@@ -1144,9 +1145,8 @@ public final Object getMinMaxColumnValue(final String name) {
11441145
if (sValues == null) {
11451146
break;
11461147
}
1147-
short[] sRowValues;
11481148
for (int i = 0, len = sValues.length; i < len; i++) {
1149-
sRowValues = sValues[i];
1149+
final short[] sRowValues = sValues[i];
11501150
for (int j = 0, jlen = sRowValues.length; j < jlen; j++) {
11511151
if (sRowValues[j] < sMin) {
11521152
sMin = sRowValues[j];
@@ -1182,9 +1182,8 @@ public final Object getMinMaxColumnValue(final String name) {
11821182
if (iValues == null) {
11831183
break;
11841184
}
1185-
int[] iRowValues;
11861185
for (int i = 0, len = iValues.length; i < len; i++) {
1187-
iRowValues = iValues[i];
1186+
final int[] iRowValues = iValues[i];
11881187
for (int j = 0, jlen = iRowValues.length; j < jlen; j++) {
11891188
if (iRowValues[j] < iMin) {
11901189
iMin = iRowValues[j];
@@ -1220,15 +1219,21 @@ public final Object getMinMaxColumnValue(final String name) {
12201219
if (dValues == null) {
12211220
break;
12221221
}
1223-
double[] dRowValues;
1222+
// use column flag if present (OIData tables):
1223+
final boolean[][] flags = (this instanceof OIData) ? ((OIData)this).getFlag(): null;
1224+
12241225
for (int i = 0, len = dValues.length; i < len; i++) {
1225-
dRowValues = dValues[i];
1226+
final double[] dRowValues = dValues[i];
1227+
final boolean[] rowFlags = (flags != null) ? flags[i] : null;
1228+
12261229
for (int j = 0, jlen = dRowValues.length; j < jlen; j++) {
1227-
if (dRowValues[j] < dMin) {
1228-
dMin = dRowValues[j];
1229-
}
1230-
if (dRowValues[j] > dMax) {
1231-
dMax = dRowValues[j];
1230+
if ((rowFlags == null) || !rowFlags[j]) {
1231+
if (dRowValues[j] < dMin) {
1232+
dMin = dRowValues[j];
1233+
}
1234+
if (dRowValues[j] > dMax) {
1235+
dMax = dRowValues[j];
1236+
}
12321237
}
12331238
}
12341239
}
@@ -1371,7 +1376,9 @@ public void checkColumns(final OIFitsChecker checker) {
13711376
if (!column.isOptional()) {
13721377
/* No column with columnName name */
13731378
// rule [GENERIC_COL_MANDATORY] check if the required column is present
1374-
checker.ruleFailed(Rule.GENERIC_COL_MANDATORY, this, columnName);
1379+
if (checker != null) {
1380+
checker.ruleFailed(Rule.GENERIC_COL_MANDATORY, this, columnName);
1381+
}
13751382
}
13761383
}
13771384
if ((value == null) && OIFitsChecker.isInspectRules()) {

0 commit comments

Comments
 (0)