Skip to content

Commit f5f80f6

Browse files
committed
improved CLI parse / dump
1 parent ff35702 commit f5f80f6

4 files changed

Lines changed: 90 additions & 35 deletions

File tree

src/main/java/fr/jmmc/oitools/OIFitsCommand.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,15 @@ public static void error(final String message, final Exception exception) {
9797
}
9898
}
9999

100+
static boolean hasOptionArg(final String[] args, final String opt) {
101+
for (final String arg : args) {
102+
if (arg.equals(opt)) {
103+
return true;
104+
}
105+
}
106+
return false;
107+
}
108+
100109
static boolean hasOptionArg(final String[] args, final String opt, final String longOpt) {
101110
for (final String arg : args) {
102111
if (arg.equals(opt) || arg.equals(longOpt)) {

src/main/java/fr/jmmc/oitools/OIFitsProcessor.java

Lines changed: 67 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public class OIFitsProcessor extends OIFitsCommand {
5151
private static final String OPTION_TARGET = "-target";
5252
private static final String OPTION_INSNAME = "-insname";
5353
private static final String OPTION_NIGHT = "-night";
54-
private static final String OPTION_BASELINES = "-baselines";
5554
private static final String OPTION_MJD_RANGES = "-mjds";
55+
private static final String OPTION_BASELINES = "-baselines";
5656
private static final String OPTION_WL_RANGES = "-wavelengths";
5757

5858
/**
@@ -213,36 +213,67 @@ private static void merge(final String[] args) throws FitsException, IOException
213213

214214
handleArgSeparation(args);
215215

216-
// Optional filters:
217-
final String targetUID = getOptionArgValue(args, OPTION_TARGET);
218-
final String insModeUID = getOptionArgValue(args, OPTION_INSNAME);
219-
final String night = getOptionArgValue(args, OPTION_NIGHT);
220-
final String mjds = getOptionArgValue(args, OPTION_MJD_RANGES);
221-
final String baselines = getOptionArgValue(args, OPTION_BASELINES);
222-
final String wavelengths = getOptionArgValue(args, OPTION_WL_RANGES);
223-
224216
final OIFitsCollection oiFitsCollection = OIFitsCollection.create(null, fileLocations);
225217

226218
final Selector selector = new Selector();
227-
if (targetUID != null) {
228-
selector.setTargetUID(targetUID);
219+
220+
if (hasOptionArg(args, OPTION_TARGET)) {
221+
selector.setTargetUID(getOptionArgValue(args, OPTION_TARGET));
222+
} else {
223+
final String arg = "-" + Selector.FILTER_TARGET_ID.toLowerCase();
224+
if (hasOptionArg(args, arg)) {
225+
selector.setTargetUID(getOptionArgValue(args, arg));
226+
}
227+
}
228+
if (hasOptionArg(args, OPTION_INSNAME)) {
229+
selector.setInsModeUID(getOptionArgValue(args, OPTION_INSNAME));
229230
}
230-
if (insModeUID != null) {
231-
selector.setInsModeUID(insModeUID);
231+
if (hasOptionArg(args, OPTION_NIGHT)) {
232+
selector.setNightID(Integer.valueOf(getOptionArgValue(args, OPTION_NIGHT)));
233+
} else {
234+
final String arg = "-" + Selector.FILTER_NIGHT_ID.toLowerCase();
235+
if (hasOptionArg(args, arg)) {
236+
selector.setNightID(Integer.valueOf(getOptionArgValue(args, arg)));
237+
}
232238
}
233-
if (night != null) {
234-
selector.setNightID(Integer.valueOf(night));
239+
if (hasOptionArg(args, OPTION_MJD_RANGES)) {
240+
selector.addFilter(Selector.FILTER_MJD, parseRanges(getOptionArgValue(args, OPTION_MJD_RANGES)));
241+
} else {
242+
final String arg = "-" + Selector.FILTER_MJD.toLowerCase();
243+
if (hasOptionArg(args, arg)) {
244+
selector.addFilter(Selector.FILTER_MJD, parseRanges(arg));
245+
}
246+
}
247+
if (hasOptionArg(args, OPTION_BASELINES)) {
248+
selector.addFilter(Selector.FILTER_STAINDEX, parseStrings(getOptionArgValue(args, OPTION_BASELINES)));
249+
} else {
250+
final String arg = "-" + Selector.FILTER_STAINDEX.toLowerCase();
251+
if (hasOptionArg(args, arg)) {
252+
selector.addFilter(Selector.FILTER_STAINDEX, parseStrings(getOptionArgValue(args, arg)));
253+
}
235254
}
236-
if (baselines != null) {
237-
selector.addFilter(Selector.FILTER_STAINDEX, parseStrings(baselines));
255+
{
256+
final String arg = "-" + Selector.FILTER_STACONF.toLowerCase();
257+
if (hasOptionArg(args, arg)) {
258+
selector.addFilter(Selector.FILTER_STACONF, parseStrings(getOptionArgValue(args, arg)));
259+
}
238260
}
239-
if (mjds != null) {
240-
selector.addFilter(Selector.FILTER_MJD, parseRanges(mjds));
261+
if (hasOptionArg(args, OPTION_WL_RANGES)) {
262+
selector.addFilter(Selector.FILTER_EFFWAVE, parseRanges(getOptionArgValue(args, OPTION_WL_RANGES)));
263+
} else {
264+
final String arg = "-" + Selector.FILTER_EFFWAVE.toLowerCase();
265+
if (hasOptionArg(args, arg)) {
266+
selector.addFilter(Selector.FILTER_EFFWAVE, parseRanges(getOptionArgValue(args, arg)));
267+
}
241268
}
242-
if (wavelengths != null) {
243-
selector.addFilter(Selector.FILTER_EFFWAVE, parseRanges(wavelengths));
269+
{
270+
final String arg = "-" + Selector.FILTER_EFFBAND.toLowerCase();
271+
if (hasOptionArg(args, arg)) {
272+
selector.addFilter(Selector.FILTER_EFFBAND, parseRanges(getOptionArgValue(args, arg)));
273+
}
244274
}
245275

276+
// TODO: handle extra arguments from OIFITS2 data model
246277
// Call merge
247278
final OIFitsFile result = Merger.process(oiFitsCollection, selector);
248279

@@ -347,6 +378,8 @@ protected static void showArgumentsHelp() {
347378
info("| [-baselines] <values> Filter result on given Baselines or Triplets (comma-separated) |");
348379
info("| [-mjds] <values> Filter result on given MJD ranges (comma-separated pairs) |");
349380
info("| [-wavelengths] <values> Filter result on given wavelength ranges (comma-separated pairs) |");
381+
382+
// TODO: dump extra arguments from OIFITS2 data model
350383
info("--------------------------------------------------------------------------------------");
351384
}
352385

@@ -414,42 +447,43 @@ public static String generateCLIargs(final Selector selector) {
414447
final StringBuilder sb = new StringBuilder(128);
415448

416449
if (selector.getTargetUID() != null) {
417-
sb.append(OIFitsProcessor.OPTION_TARGET).append("|").append(Selector.FILTER_TARGET_ID).append(" ").append(selector.getTargetUID()).append(" ");
450+
sb.append("-").append(Selector.FILTER_TARGET_ID.toLowerCase()).append(" ").append(selector.getTargetUID()).append(" ");
418451
}
419452
if (selector.getInsModeUID() != null) {
420453
sb.append(OIFitsProcessor.OPTION_INSNAME).append(" ").append(selector.getInsModeUID()).append(" ");
421454
}
422455
if (selector.getNightID() != null) {
423-
sb.append(OIFitsProcessor.OPTION_NIGHT).append("|").append(Selector.FILTER_NIGHT_ID).append(" ").append(selector.getNightID()).append(" ");
456+
sb.append("-").append(Selector.FILTER_NIGHT_ID.toLowerCase()).append(" ").append(selector.getNightID()).append(" ");
424457
}
425458
/* no way to define selector.tables via CLI */
459+
460+
if (selector.hasFilter(Selector.FILTER_MJD)) {
461+
sb.append("-").append(Selector.FILTER_MJD.toLowerCase()).append(" ");
462+
dumpRanges(selector.getFilter(Selector.FILTER_MJD), sb).append(" ");
463+
}
464+
426465
if (selector.hasFilter(Selector.FILTER_STAINDEX)) {
427-
sb.append(OIFitsProcessor.OPTION_BASELINES).append("|").append(Selector.FILTER_STAINDEX).append(" ");
466+
sb.append("-").append(Selector.FILTER_STAINDEX.toLowerCase()).append(" ");
428467
dumpStrings(selector.getFilter(Selector.FILTER_STAINDEX), sb).append(" ");
429468
}
430469
if (selector.hasFilter(Selector.FILTER_STACONF)) {
431-
sb.append("-").append(Selector.FILTER_STACONF).append(" ");
470+
sb.append("-").append(Selector.FILTER_STACONF.toLowerCase()).append(" ");
432471
dumpStrings(selector.getFilter(Selector.FILTER_STACONF), sb).append(" ");
433472
}
434473

435-
if (selector.hasFilter(Selector.FILTER_MJD)) {
436-
sb.append(OIFitsProcessor.OPTION_MJD_RANGES).append("|").append(Selector.FILTER_MJD).append(" ");
437-
dumpRanges(selector.getFilter(Selector.FILTER_MJD), sb).append(" ");
438-
}
439-
440474
if (selector.hasFilter(Selector.FILTER_EFFWAVE)) {
441-
sb.append(OIFitsProcessor.OPTION_WL_RANGES).append("|").append(Selector.FILTER_EFFWAVE).append(" ");
475+
sb.append("-").append(Selector.FILTER_EFFWAVE.toLowerCase()).append(" ");
442476
dumpRanges(selector.getFilter(Selector.FILTER_EFFWAVE), sb).append(" ");
443477
}
444478
if (selector.hasFilter(Selector.FILTER_EFFBAND)) {
445-
sb.append("-").append(Selector.FILTER_EFFBAND).append(" ");
479+
sb.append("-").append(Selector.FILTER_EFFBAND.toLowerCase()).append(" ");
446480
dumpRanges(selector.getFilter(Selector.FILTER_EFFBAND), sb).append(" ");
447481
}
448482

449483
// convert generic filters from selector.filters (1D)
450484
for (Map.Entry<String, List<?>> e : selector.getFiltersMap().entrySet()) {
451485
if (!Selector.isCustomFilter(e.getKey())) {
452-
sb.append("-").append(e.getKey()).append(" ");
486+
sb.append("-").append(e.getKey().toLowerCase()).append(" ");
453487
dumpRanges((List<Range>) e.getValue(), sb).append(" ");
454488
}
455489
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ public SelectorResult findOIData(final Selector selector, final SelectorResult i
515515
if (selector.getNightID() != null) {
516516
filtersData1D.add(new NightIdFilter(selector.getNightID()));
517517
}
518-
// table refs: see OIData filtering below
518+
// selector.tables: see OIData filtering below
519519

520520
// generic filters:
521521
if (selector.hasFilter(Selector.FILTER_STAINDEX)) {

src/main/java/fr/jmmc/oitools/processing/Selector.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,19 @@ public String toString() {
144144
+ (hasFilters() ? " filters: " + filtersMap : "")
145145
+ ']';
146146
}
147-
147+
148+
public static boolean isRangeFilter(final String name) {
149+
switch (name) {
150+
case Selector.FILTER_TARGET_ID:
151+
case Selector.FILTER_NIGHT_ID:
152+
case Selector.FILTER_STAINDEX:
153+
case Selector.FILTER_STACONF:
154+
return false;
155+
default:
156+
return true;
157+
}
158+
}
159+
148160
public static boolean isCustomFilter(final String name) {
149161
switch (name) {
150162
case Selector.FILTER_TARGET_ID:

0 commit comments

Comments
 (0)