Skip to content

Commit 065ac82

Browse files
committed
optimized regexp
fixed few Rule messages updated reference files
1 parent 04824cf commit 065ac82

File tree

9 files changed

+182
-141
lines changed

9 files changed

+182
-141
lines changed

rules/Failures.xml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44315,7 +44315,7 @@
4431544315
<extName>OI_T3</extName>
4431644316
<extNb>7</extNb>
4431744317
<member>CORRINDX_T3AMP</member>
44318-
<message>Missing OI_CORR table but the column CORRINDX_T3AMP is defined.</message>
44318+
<message>Missing OI_CORR table but the column 'CORRINDX_T3AMP' is defined.</message>
4431944319
</failure>
4432044320
<failure>
4432144321
<severity>SEVERE</severity>
@@ -44324,7 +44324,7 @@
4432444324
<extName>OI_T3</extName>
4432544325
<extNb>7</extNb>
4432644326
<member>CORRINDX_T3PHI</member>
44327-
<message>Missing OI_CORR table but the column CORRINDX_T3PHI is defined.</message>
44327+
<message>Missing OI_CORR table but the column 'CORRINDX_T3PHI' is defined.</message>
4432844328
</failure>
4432944329
<failure>
4433044330
<severity>SEVERE</severity>
@@ -44333,7 +44333,7 @@
4433344333
<extName>OI_T3</extName>
4433444334
<extNb>8</extNb>
4433544335
<member>CORRINDX_T3AMP</member>
44336-
<message>Missing OI_CORR table but the column CORRINDX_T3AMP is defined.</message>
44336+
<message>Missing OI_CORR table but the column 'CORRINDX_T3AMP' is defined.</message>
4433744337
</failure>
4433844338
<failure>
4433944339
<severity>SEVERE</severity>
@@ -44342,7 +44342,7 @@
4434244342
<extName>OI_T3</extName>
4434344343
<extNb>8</extNb>
4434444344
<member>CORRINDX_T3PHI</member>
44345-
<message>Missing OI_CORR table but the column CORRINDX_T3PHI is defined.</message>
44345+
<message>Missing OI_CORR table but the column 'CORRINDX_T3PHI' is defined.</message>
4434644346
</failure>
4434744347
<failure>
4434844348
<severity>WARNING</severity>
@@ -45332,7 +45332,7 @@
4533245332
<member>[[UNKNOWN]]</member>
4533345333
<data>
4533445334
<value>[FORMAT]</value>
45335-
<message>Skipping non-standard OIFITS column 'OI_ARRAY#1.[[UNKNOWN]]' with format [[FORMAT]]</message>
45335+
<message>Skipping non-standard OIFITS column 'OI_ARRAY.[[UNKNOWN]]' with format [[FORMAT]]</message>
4533645336
</data>
4533745337
</failure>
4533845338
<failure>
@@ -45344,7 +45344,7 @@
4534445344
<member>[[UNKNOWN]]</member>
4534545345
<data>
4534645346
<value>[FORMAT]</value>
45347-
<message>Skipping non-standard OIFITS column 'OI_WAVELENGTH#2.[[UNKNOWN]]' with format [[FORMAT]]</message>
45347+
<message>Skipping non-standard OIFITS column 'OI_WAVELENGTH.[[UNKNOWN]]' with format [[FORMAT]]</message>
4534845348
</data>
4534945349
</failure>
4535045350
<failure>
@@ -45356,7 +45356,7 @@
4535645356
<member>[[UNKNOWN]]</member>
4535745357
<data>
4535845358
<value>[FORMAT]</value>
45359-
<message>Skipping non-standard OIFITS column 'OI_TARGET#3.[[UNKNOWN]]' with format [[FORMAT]]</message>
45359+
<message>Skipping non-standard OIFITS column 'OI_TARGET.[[UNKNOWN]]' with format [[FORMAT]]</message>
4536045360
</data>
4536145361
</failure>
4536245362
<failure>
@@ -45368,7 +45368,7 @@
4536845368
<member>[[UNKNOWN]]</member>
4536945369
<data>
4537045370
<value>[FORMAT]</value>
45371-
<message>Skipping non-standard OIFITS column 'OI_VIS#4.[[UNKNOWN]]' with format [[FORMAT]]</message>
45371+
<message>Skipping non-standard OIFITS column 'OI_VIS.[[UNKNOWN]]' with format [[FORMAT]]</message>
4537245372
</data>
4537345373
</failure>
4537445374
<failure>
@@ -45380,7 +45380,7 @@
4538045380
<member>[[UNKNOWN]]</member>
4538145381
<data>
4538245382
<value>[FORMAT]</value>
45383-
<message>Skipping non-standard OIFITS column 'OI_VIS2#5.[[UNKNOWN]]' with format [[FORMAT]]</message>
45383+
<message>Skipping non-standard OIFITS column 'OI_VIS2.[[UNKNOWN]]' with format [[FORMAT]]</message>
4538445384
</data>
4538545385
</failure>
4538645386
<failure>
@@ -45392,7 +45392,7 @@
4539245392
<member>[[UNKNOWN]]</member>
4539345393
<data>
4539445394
<value>[FORMAT]</value>
45395-
<message>Skipping non-standard OIFITS column 'OI_T3#6.[[UNKNOWN]]' with format [[FORMAT]]</message>
45395+
<message>Skipping non-standard OIFITS column 'OI_T3.[[UNKNOWN]]' with format [[FORMAT]]</message>
4539645396
</data>
4539745397
</failure>
4539845398
<failure>
@@ -45404,7 +45404,7 @@
4540445404
<member>[[UNKNOWN]]</member>
4540545405
<data>
4540645406
<value>[FORMAT]</value>
45407-
<message>Skipping non-standard OIFITS column 'OI_ARRAY#1.[[UNKNOWN]]' with format [[FORMAT]]</message>
45407+
<message>Skipping non-standard OIFITS column 'OI_ARRAY.[[UNKNOWN]]' with format [[FORMAT]]</message>
4540845408
</data>
4540945409
</failure>
4541045410
<failure>
@@ -45416,7 +45416,7 @@
4541645416
<member>[[UNKNOWN]]</member>
4541745417
<data>
4541845418
<value>[FORMAT]</value>
45419-
<message>Skipping non-standard OIFITS column 'OI_WAVELENGTH#2.[[UNKNOWN]]' with format [[FORMAT]]</message>
45419+
<message>Skipping non-standard OIFITS column 'OI_WAVELENGTH.[[UNKNOWN]]' with format [[FORMAT]]</message>
4542045420
</data>
4542145421
</failure>
4542245422
<failure>
@@ -45428,7 +45428,7 @@
4542845428
<member>[[UNKNOWN]]</member>
4542945429
<data>
4543045430
<value>[FORMAT]</value>
45431-
<message>Skipping non-standard OIFITS column 'OI_TARGET#3.[[UNKNOWN]]' with format [[FORMAT]]</message>
45431+
<message>Skipping non-standard OIFITS column 'OI_TARGET.[[UNKNOWN]]' with format [[FORMAT]]</message>
4543245432
</data>
4543345433
</failure>
4543445434
<failure>
@@ -45440,7 +45440,7 @@
4544045440
<member>[[UNKNOWN]]</member>
4544145441
<data>
4544245442
<value>[FORMAT]</value>
45443-
<message>Skipping non-standard OIFITS column 'OI_CORR#4.[[UNKNOWN]]' with format [[FORMAT]]</message>
45443+
<message>Skipping non-standard OIFITS column 'OI_CORR.[[UNKNOWN]]' with format [[FORMAT]]</message>
4544445444
</data>
4544545445
</failure>
4544645446
<failure>
@@ -45452,7 +45452,7 @@
4545245452
<member>[[UNKNOWN]]</member>
4545345453
<data>
4545445454
<value>[FORMAT]</value>
45455-
<message>Skipping non-standard OIFITS column 'OI_INSPOL#5.[[UNKNOWN]]' with format [[FORMAT]]</message>
45455+
<message>Skipping non-standard OIFITS column 'OI_INSPOL.[[UNKNOWN]]' with format [[FORMAT]]</message>
4545645456
</data>
4545745457
</failure>
4545845458
<failure>
@@ -45464,7 +45464,7 @@
4546445464
<member>[[UNKNOWN]]</member>
4546545465
<data>
4546645466
<value>[FORMAT]</value>
45467-
<message>Skipping non-standard OIFITS column 'OI_VIS#6.[[UNKNOWN]]' with format [[FORMAT]]</message>
45467+
<message>Skipping non-standard OIFITS column 'OI_VIS.[[UNKNOWN]]' with format [[FORMAT]]</message>
4546845468
</data>
4546945469
</failure>
4547045470
<failure>
@@ -45476,7 +45476,7 @@
4547645476
<member>[[UNKNOWN]]</member>
4547745477
<data>
4547845478
<value>[FORMAT]</value>
45479-
<message>Skipping non-standard OIFITS column 'OI_VIS2#7.[[UNKNOWN]]' with format [[FORMAT]]</message>
45479+
<message>Skipping non-standard OIFITS column 'OI_VIS2.[[UNKNOWN]]' with format [[FORMAT]]</message>
4548045480
</data>
4548145481
</failure>
4548245482
<failure>
@@ -45488,7 +45488,7 @@
4548845488
<member>[[UNKNOWN]]</member>
4548945489
<data>
4549045490
<value>[FORMAT]</value>
45491-
<message>Skipping non-standard OIFITS column 'OI_T3#8.[[UNKNOWN]]' with format [[FORMAT]]</message>
45491+
<message>Skipping non-standard OIFITS column 'OI_T3.[[UNKNOWN]]' with format [[FORMAT]]</message>
4549245492
</data>
4549345493
</failure>
4549445494
<failure>
@@ -45500,7 +45500,7 @@
4550045500
<member>[[UNKNOWN]]</member>
4550145501
<data>
4550245502
<value>[FORMAT]</value>
45503-
<message>Skipping non-standard OIFITS column 'OI_FLUX#9.[[UNKNOWN]]' with format [[FORMAT]]</message>
45503+
<message>Skipping non-standard OIFITS column 'OI_FLUX.[[UNKNOWN]]' with format [[FORMAT]]</message>
4550445504
</data>
4550545505
</failure>
4550645506
<failure>

src/main/java/fr/jmmc/oitools/model/DataLocation.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
package fr.jmmc.oitools.model;
2121

2222
import fr.jmmc.jmcs.util.NumberUtils;
23+
import static fr.jmmc.oitools.model.RuleFailure.replaceAll;
2324
import static fr.jmmc.oitools.model.XmlOutputVisitor.encodeTagContent;
2425
import java.util.ArrayList;
26+
import java.util.regex.Pattern;
2527

2628
/**
2729
* Management of datas related to the creation of the error (toString/XML)
@@ -477,28 +479,43 @@ public ArrayList<String> getDetails() {
477479
return details;
478480
}
479481

482+
/* --- FORMAT MESSAGE --- */
483+
/** RegExp expression to match {{VALUE}} */
484+
private static final Pattern PATTERN_VALUE = Pattern.compile("\\{\\{VALUE\\}\\}");
485+
/** RegExp expression to match {{LIMIT}} */
486+
private static final Pattern PATTERN_LIMIT = Pattern.compile("\\{\\{LIMIT\\}\\}");
487+
/** RegExp expression to match {{EXPECTED}} */
488+
private static final Pattern PATTERN_EXPECTED = Pattern.compile("\\{\\{EXPECTED\\}\\}");
489+
/** RegExp expression to match {{ROW}} */
490+
private static final Pattern PATTERN_ROW = Pattern.compile("\\{\\{ROW\\}\\}");
491+
/** RegExp expression to match {{COL}} */
492+
private static final Pattern PATTERN_COL = Pattern.compile("\\{\\{COL\\}\\}");
493+
/** RegExp expression to match {{DETAILS}} */
494+
private static final Pattern PATTERN_DETAILS = Pattern.compile("\\{\\{DETAILS\\}\\}");
495+
480496
String formatMessage(final String ruleMessage, final int index) {
481497
if (isEmpty()) {
482498
// rule message should be complete:
483499
return ruleMessage;
484500
}
485501
String msg = ruleMessage;
486-
msg = msg.replaceAll("\\{\\{VALUE\\}\\}",
502+
503+
msg = replaceAll(PATTERN_VALUE, msg,
487504
(getValues().get(index) != null) ? getValues().get(index).toString() : ""
488505
);
489-
msg = msg.replaceAll("\\{\\{LIMIT\\}\\}",
506+
msg = replaceAll(PATTERN_LIMIT, msg,
490507
(getLimits().get(index) != null) ? getLimits().get(index).toString() : ""
491508
);
492-
msg = msg.replaceAll("\\{\\{EXPECTED\\}\\}",
509+
msg = replaceAll(PATTERN_EXPECTED, msg,
493510
(getExpecteds().get(index) != null) ? getExpecteds().get(index) : ""
494511
);
495-
msg = msg.replaceAll("\\{\\{ROW\\}\\}",
512+
msg = replaceAll(PATTERN_ROW, msg,
496513
(getRows().get(index) != null) ? getRows().get(index).toString() : ""
497514
);
498-
msg = msg.replaceAll("\\{\\{COL\\}\\}",
515+
msg = replaceAll(PATTERN_COL, msg,
499516
(getCols().get(index) != null) ? getCols().get(index).toString() : ""
500517
);
501-
msg = msg.replaceAll("\\{\\{DETAILS\\}\\}",
518+
msg = replaceAll(PATTERN_DETAILS, msg,
502519
(getDetails().get(index) != null) ? getDetails().get(index) : ""
503520
);
504521
return msg;

src/main/java/fr/jmmc/oitools/model/Rule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ public enum Rule {
309309
OI_T3_CORRINDX("check if the referenced OI_CORR exists when the column CORRINDX_T3AMP or CORRINDX_T3PHI is present",
310310
"V2.7.2§4",
311311
RuleDataType.NONE,
312-
"Missing OI_CORR table but the column {{MEMBER}} is defined."
312+
"Missing OI_CORR table but the column '{{MEMBER}}' is defined."
313313
),
314314
OI_VIS_CORRINDX("check if the referenced OI_CORR table exists when the column CORRINDX_VISAMP, CORRINDX_VISPHI, CORRINDX_RVIS or CORRINDX_IVIS is present",
315315
"V2.7.2§4",
@@ -366,7 +366,7 @@ public enum Rule {
366366
"check if the column belongs to the OIFITS standard and version",
367367
Const.JMMC,
368368
RuleDataType.VALUE,
369-
"Skipping non-standard OIFITS column '{{HDU}}.{{MEMBER}}' with format [{{VALUE}}]"
369+
"Skipping non-standard OIFITS column '{{EXTNAME}}.{{MEMBER}}' with format [{{VALUE}}]"
370370
),
371371
UNKNOWN_TABLE("check if the table belongs to the OIFITS standard and version",
372372
"V2.4.2§3-4",

src/main/java/fr/jmmc/oitools/model/RuleFailure.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import fr.jmmc.jmcs.util.NumberUtils;
2323
import fr.jmmc.oitools.fits.FitsHDU;
2424
import fr.jmmc.oitools.image.FileRef;
25+
import java.util.regex.Pattern;
2526

2627
/**
2728
* Management of objects related to the creation of the error (toString/XML)
@@ -188,6 +189,15 @@ void setSeverity(final Severity severity) {
188189
}
189190

190191
/* --- FORMAT MESSAGE --- */
192+
/** RegExp expression to match {{FILE}} */
193+
private static final Pattern PATTERN_FILE = Pattern.compile("\\{\\{FILE\\}\\}");
194+
/** RegExp expression to match {{HDU}} */
195+
private static final Pattern PATTERN_HDU = Pattern.compile("\\{\\{HDU\\}\\}");
196+
/** RegExp expression to match {{EXTNAME}} */
197+
private static final Pattern PATTERN_EXTNAME = Pattern.compile("\\{\\{EXTNAME\\}\\}");
198+
/** RegExp expression to match {{MEMBER}} */
199+
private static final Pattern PATTERN_MEMBER = Pattern.compile("\\{\\{MEMBER\\}\\}");
200+
191201
/**
192202
* Returns a string representation for message
193203
* @return message
@@ -198,13 +208,16 @@ String formatMessage() {
198208
}
199209
String msg = getRule().getMessage();
200210

201-
msg = msg.replaceAll("\\{\\{FILE\\}\\}",
211+
msg = replaceAll(PATTERN_FILE, msg,
202212
(getFileRef() != null && getFileRef().getAbsoluteFilePath() != null) ? getFileRef().getAbsoluteFilePath() : ""
203213
);
204-
msg = msg.replaceAll("\\{\\{HDU\\}\\}",
214+
msg = replaceAll(PATTERN_HDU, msg,
205215
FitsHDU.getHDUId(getExtName(), getExtNb())
206216
);
207-
msg = msg.replaceAll("\\{\\{MEMBER\\}\\}",
217+
msg = replaceAll(PATTERN_EXTNAME, msg,
218+
(getExtName() != null) ? getExtName() : FitsHDU.getHDUId(null, getExtNb())
219+
);
220+
msg = replaceAll(PATTERN_MEMBER, msg,
208221
(getMember() != null) ? getMember() : ""
209222
);
210223

@@ -277,4 +290,9 @@ public StringBuilder toXML(StringBuilder sb) {
277290
}
278291
return sb;
279292
}
293+
294+
static String replaceAll(final Pattern pattern, final String value, final String replacement) {
295+
return pattern.matcher(value).replaceAll(replacement);
296+
}
297+
280298
}

src/main/java/fr/nom/tam/fits/HeaderCard.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,22 @@
1818
package fr.nom.tam.fits;
1919

2020
import java.util.Formatter;
21+
import java.util.regex.Pattern;
2122

2223
/** This class describes methods to access and manipulate the individual
2324
* cards for a FITS Header.
2425
*/
2526
public final class HeaderCard {
27+
/** Maximum length of a FITS keyword field */
28+
public static final int MAX_KEYWORD_LENGTH = 8;
29+
/** Maximum length of a FITS value field */
30+
public static final int MAX_VALUE_LENGTH = 70;
31+
/** padding for building card images */
32+
private static String space80 = " ";
33+
/** RegExp expression to match starting white space */
34+
private static final Pattern PATTERN_WS = Pattern.compile(" *$");
2635

36+
/* members */
2737
/** The keyword part of the card (set to null if there's no keyword) */
2838
private String key;
2939
/** The value part of the card (set to null if there's no value) */
@@ -34,13 +44,7 @@ public final class HeaderCard {
3444
private boolean nullable;
3545
/** A flag indicating whether or not this is a string value */
3646
private boolean isString;
37-
/** Maximum length of a FITS keyword field */
38-
public static final int MAX_KEYWORD_LENGTH = 8;
39-
/** Maximum length of a FITS value field */
40-
public static final int MAX_VALUE_LENGTH = 70;
41-
/** padding for building card images */
42-
private static String space80 = " ";
43-
47+
4448
/** Create a HeaderCard from its component parts
4549
* @param key keyword (null for a comment)
4650
* @param value value (null for a comment or keyword without an '=')
@@ -167,7 +171,8 @@ public HeaderCard(String key, String value, String comment, boolean nullable)
167171
}
168172

169173
if (value != null) {
170-
value = value.replaceAll(" *$", "");
174+
//value = value.replaceAll(" *$", "");
175+
value = PATTERN_WS.matcher(value).replaceAll("");
171176

172177
if (value.length() > MAX_VALUE_LENGTH) {
173178
throw new HeaderCardException("Value too long");

0 commit comments

Comments
 (0)