Skip to content

Commit 3fe9261

Browse files
committed
reduce memory footprint (data location)
1 parent 2c8a96c commit 3fe9261

3 files changed

Lines changed: 52 additions & 26 deletions

File tree

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

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
*/
3131
public final class DataLocation {
3232

33+
/** shared empty instance */
34+
final static DataLocation EMPTY = new DataLocation(null);
35+
3336
/* members */
3437
/** associated Rule */
3538
private final Rule rule;
@@ -51,6 +54,20 @@ public final class DataLocation {
5154
this.rule = rule;
5255
}
5356

57+
/**
58+
* Clear the temporary state (cleanup)
59+
*/
60+
void cleanup() {
61+
if (!isEmpty()) {
62+
values.trimToSize();
63+
limits.trimToSize();
64+
expecteds.trimToSize();
65+
rows.trimToSize();
66+
cols.trimToSize();
67+
details.trimToSize();
68+
}
69+
}
70+
5471
/* ------------ ALL HELPER FOR DIFFERENT ARGUMENTS --------------- */
5572
// Value
5673
// 1
@@ -385,14 +402,15 @@ private void setValues(Object value, Object limit, String expected, Integer row,
385402

386403
private void ensureCapacity() {
387404
if (isEmpty()) {
388-
values = new ArrayList<Object>(10);
389-
limits = new ArrayList<Object>(10);
390-
expecteds = new ArrayList<String>(10);
391-
rows = new ArrayList<Integer>(10);
392-
cols = new ArrayList<Integer>(10);
393-
details = new ArrayList<String>(10);
405+
final int newSize = 10;
406+
values = new ArrayList<Object>(newSize);
407+
limits = new ArrayList<Object>(newSize);
408+
expecteds = new ArrayList<String>(newSize);
409+
rows = new ArrayList<Integer>(newSize);
410+
cols = new ArrayList<Integer>(newSize);
411+
details = new ArrayList<String>(newSize);
394412
} else {
395-
final int newSize = values.size() + 1;
413+
final int newSize = values.size() * 2;
396414
values.ensureCapacity(newSize);
397415
limits.ensureCapacity(newSize);
398416
expecteds.ensureCapacity(newSize);
@@ -553,27 +571,27 @@ public StringBuilder toXML(final StringBuilder sb, final String ruleMessage, fin
553571
sb.append(" <data>\n");
554572
sb.append(" <value>").append(getValues().get(i)).append("</value>\n");
555573

556-
Object limit = getLimits().get(i);
574+
final Object limit = getLimits().get(i);
557575
if (limit != null) {
558576
sb.append(" <limit>").append(limit).append("</limit>\n");
559577
}
560578

561-
String expected = getExpecteds().get(i);
579+
final String expected = getExpecteds().get(i);
562580
if (expected != null) {
563581
sb.append(" <expected>").append(expected).append("</expected>\n");
564582
}
565583

566-
Integer row = getRows().get(i);
584+
final Integer row = getRows().get(i);
567585
if (row != null) {
568586
sb.append(" <row>").append(row).append("</row>\n");
569587
}
570588

571-
Integer col = getCols().get(i);
589+
final Integer col = getCols().get(i);
572590
if (col != null) {
573591
sb.append(" <col>").append(col).append("</col>\n");
574592
}
575593

576-
String detail = getDetails().get(i);
594+
final String detail = getDetails().get(i);
577595
if (detail != null) {
578596
sb.append(" <detail>").append(detail).append("</detail>\n");
579597
}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,15 @@ void cleanup() {
207207
setSkipFormat(false);
208208
fileRefStandards.clear();
209209
corrCheckers.clear();
210+
211+
/* prune failure storage */
212+
for (Map.Entry<RuleFailure, DataLocation> entry : failures.entrySet()) {
213+
if (entry.getValue().isEmpty()) {
214+
entry.setValue(DataLocation.EMPTY);
215+
} else {
216+
entry.getValue().cleanup();
217+
}
218+
}
210219
}
211220

212221
/**
@@ -500,6 +509,8 @@ public String getCheckReport(final boolean compact) {
500509
* @return a string containing the analysis report
501510
*/
502511
public StringBuilder appendFailuresReport(final boolean compact, final StringBuilder sb, final RuleFailureComparator comparator) {
512+
sb.append(getCheckStatus()).append("\n\n");
513+
503514
FileRef last = null;
504515
int lastExtNb = -1;
505516

@@ -543,7 +554,6 @@ public StringBuilder appendFailuresReport(final boolean compact, final StringBui
543554
}
544555
}
545556
}
546-
sb.append('\n').append(getCheckStatus()).append('\n');
547557
return sb;
548558
}
549559

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,19 @@ public boolean equals(Object obj) {
8080
return false;
8181
}
8282
final RuleFailure other = (RuleFailure) obj;
83-
if (this.rule != other.rule) {
83+
if (this.rule != other.getRule()) {
8484
return false;
8585
}
86-
if (!this.fileRef.equals(other.fileRef)) {
86+
if (!this.fileRef.equals(other.getFileRef())) {
8787
return false;
8888
}
89-
if ((this.extName == null) ? (other.extName != null) : !this.extName.equals(other.extName)) {
89+
if ((this.extName == null) ? (other.getExtName() != null) : !this.extName.equals(other.getExtName())) {
9090
return false;
9191
}
92-
if (this.extNb != other.extNb) {
92+
if (this.extNb != other.getExtNb()) {
9393
return false;
9494
}
95-
if ((this.member == null) ? (other.member != null) : !this.member.equals(other.member)) {
95+
if ((this.member == null) ? (other.getMember() != null) : !this.member.equals(other.getMember())) {
9696
return false;
9797
}
9898
// Do not compare Severity (not in the key)
@@ -226,17 +226,18 @@ public String toString() {
226226
* @return a string representation of this class
227227
*/
228228
public StringBuilder toString(final StringBuilder sb) {
229-
230229
sb.append(getSeverity()).append('\t');
231230

232231
if (getRule() != null) {
233-
sb.append(getRule().name()).append('\t');
232+
sb.append(getRule().name());
234233
}
234+
sb.append('\t');
235235

236-
if (getFileRef() != null && getFileRef().getAbsoluteFilePath() != null) {
236+
if ((getFileRef() != null) && (getFileRef().getAbsoluteFilePath() != null)) {
237237
sb.append(getFileRef().getAbsoluteFilePath());
238238
}
239239
sb.append('\t');
240+
240241
if (getExtNb() >= 0) {
241242
sb.append((getExtName() == null) ? "HDU" : getExtName()).append('\t');
242243
sb.append(getExtNb()).append('\t');
@@ -267,11 +268,8 @@ public StringBuilder toXML(StringBuilder sb) {
267268

268269
//Display HDU#0
269270
if (getExtNb() >= 0) {
270-
sb.append(" <extName>");
271-
sb.append((getExtName() == null) ? "HDU" : getExtName());
272-
sb.append("</extName>\n");
273-
sb.append(" <extNb>");
274-
sb.append(getExtNb()).append("</extNb>\n");
271+
sb.append(" <extName>").append((getExtName() == null) ? "HDU" : getExtName()).append("</extName>\n");
272+
sb.append(" <extNb>").append(getExtNb()).append("</extNb>\n");
275273
}
276274

277275
if (getMember() != null) {

0 commit comments

Comments
 (0)