@@ -340,7 +340,7 @@ private static void writeFailures(final OIFitsChecker checker) throws IOExceptio
340340 final Set <Rule > usedRules = checker .getRulesUsedByFailures ();
341341
342342 if (Rule .values ().length != usedRules .size ()) {
343- final Set <Rule > missing = new HashSet <Rule >();
343+ final Set <Rule > missing = new HashSet <Rule >(16 );
344344 missing .addAll (Arrays .asList (Rule .values ()));
345345 missing .removeAll (usedRules );
346346
@@ -582,8 +582,10 @@ private static OIFitsFile createOIFitsFile(final OIFitsStandard version) {
582582 private final Collection <OIData > oiDatas ;
583583 /* cached values */
584584 private Set <String > allColumnNames = null ;
585- private Set <String > allColumnNames1D = null ;
586- private Set <String > allColumnNames2D = null ;
585+ private Set <String > allNumColumnNames = null ;
586+ private Set <String > allNumColumnNames1D = null ;
587+ private Set <String > allNumColumnNames2D = null ;
588+ private Set <String > allOtherColumnNames = null ;
587589
588590 private DataModel (final OIFitsStandard version ) {
589591 this (createOIFitsFile (version ).getOiDataList (), true );
@@ -595,9 +597,9 @@ private DataModel(final Collection<OIData> oiDatas, final boolean shared) {
595597 }
596598
597599 private void reset () {
598- allColumnNames = null ;
599- allColumnNames1D = null ;
600- allColumnNames2D = null ;
600+ allNumColumnNames = null ;
601+ allNumColumnNames1D = null ;
602+ allNumColumnNames2D = null ;
601603 }
602604
603605 public void refresh () {
@@ -611,30 +613,81 @@ private Collection<OIData> getOiDatas() {
611613 return oiDatas ;
612614 }
613615
614- public Set <String > getNumericalColumnNames () {
616+ public boolean isColumn (final String name ) {
617+ return getNumericalColumnNames ().contains (name );
618+ }
619+
620+ public Set <String > getAllColumnNames () {
615621 if (allColumnNames == null ) {
616- allColumnNames = getAllNumericalColumnNames (getOiDatas (), true , false );
622+ allColumnNames = getAllColumnNames (getOiDatas ());
617623 }
618624 return allColumnNames ;
619625 }
620626
627+ public boolean isNumericalColumn (final String name ) {
628+ return getNumericalColumnNames ().contains (name );
629+ }
630+
631+ public Set <String > getNumericalColumnNames () {
632+ if (allNumColumnNames == null ) {
633+ allNumColumnNames = getAllNumericalColumnNames (getOiDatas (), true , false );
634+ }
635+ return allNumColumnNames ;
636+ }
637+
638+ public boolean isNumericalColumn1D (final String name ) {
639+ return getNumericalColumnNames1D ().contains (name );
640+ }
641+
621642 public Set <String > getNumericalColumnNames1D () {
622- if (allColumnNames1D == null ) {
623- allColumnNames1D = getAllNumericalColumnNames (getOiDatas (), false , false );
643+ if (allNumColumnNames1D == null ) {
644+ allNumColumnNames1D = getAllNumericalColumnNames (getOiDatas (), false , false );
624645 }
625- return allColumnNames1D ;
646+ return allNumColumnNames1D ;
647+ }
648+
649+ public boolean isNumericalColumn2D (final String name ) {
650+ return getNumericalColumnNames2D ().contains (name );
626651 }
627652
628653 public Set <String > getNumericalColumnNames2D () {
629- if (allColumnNames2D == null ) {
630- allColumnNames2D = getAllNumericalColumnNames (getOiDatas (), false , true );
654+ if (allNumColumnNames2D == null ) {
655+ allNumColumnNames2D = getAllNumericalColumnNames (getOiDatas (), false , true );
656+ }
657+ return allNumColumnNames2D ;
658+ }
659+
660+ public boolean isOtherColumn (final String name ) {
661+ return getOtherColumnNames ().contains (name );
662+ }
663+
664+ public Set <String > getOtherColumnNames () {
665+ if (allOtherColumnNames == null ) {
666+ allOtherColumnNames = getOtherColumnNames (getOiDatas ());
631667 }
632- return allColumnNames2D ;
668+ return allOtherColumnNames ;
669+ }
670+
671+ private static Set <String > getAllColumnNames (final Collection <OIData > oiDatas ) {
672+ final Set <String > columnNames = new LinkedHashSet <String >();
673+
674+ getAllNumericalColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS2 , true , false , columnNames );
675+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS2 , columnNames );
676+
677+ getAllNumericalColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS , true , false , columnNames );
678+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS , columnNames );
679+
680+ getAllNumericalColumnNames (oiDatas , OIFitsConstants .TABLE_OI_T3 , true , false , columnNames );
681+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_T3 , columnNames );
682+
683+ getAllNumericalColumnNames (oiDatas , OIFitsConstants .TABLE_OI_FLUX , true , false , columnNames );
684+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_FLUX , columnNames );
685+
686+ return columnNames ;
633687 }
634688
635689 private static Set <String > getAllNumericalColumnNames (final Collection <OIData > oiDatas ,
636690 final boolean all , final boolean is2D ) {
637-
638691 final Set <String > columnNames = new LinkedHashSet <String >();
639692
640693 getAllNumericalColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS2 , all , is2D , columnNames );
@@ -645,14 +698,23 @@ private static Set<String> getAllNumericalColumnNames(final Collection<OIData> o
645698 return columnNames ;
646699 }
647700
701+ private static Set <String > getOtherColumnNames (final Collection <OIData > oiDatas ) {
702+ final Set <String > columnNames = new LinkedHashSet <String >();
703+
704+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS2 , columnNames );
705+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_VIS , columnNames );
706+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_T3 , columnNames );
707+ getOtherColumnNames (oiDatas , OIFitsConstants .TABLE_OI_FLUX , columnNames );
708+
709+ return columnNames ;
710+ }
711+
648712 private static void getAllNumericalColumnNames (final Collection <OIData > oiDatas , final String extName ,
649713 final boolean all , final boolean is2D ,
650714 final Set <String > columnNames ) {
651715 for (final OIData oiData : oiDatas ) {
652716 if (extName .equals (oiData .getExtName ())) {
653- final List <ColumnMeta > columnsDescCollection = oiData .getNumericalColumnsDescs ();
654-
655- for (final ColumnMeta colMeta : columnsDescCollection ) {
717+ for (final ColumnMeta colMeta : oiData .getNumericalColumnsDescs ()) {
656718 if (colMeta != null ) {
657719 if (colMeta instanceof WaveColumnMeta ) {
658720 if (all || is2D ) {
@@ -669,6 +731,23 @@ private static void getAllNumericalColumnNames(final Collection<OIData> oiDatas,
669731 }
670732 }
671733
734+ private static void getOtherColumnNames (final Collection <OIData > oiDatas , final String extName ,
735+ final Set <String > columnNames ) {
736+ for (final OIData oiData : oiDatas ) {
737+ if (extName .equals (oiData .getExtName ())) {
738+ for (final ColumnMeta meta : oiData .getOtherColumnsDescs ()) {
739+ if (meta != null ) {
740+ if (logger .isLoggable (Level .FINE )) {
741+ logger .log (Level .FINE , "Column[{0}] type = {1}" ,
742+ new Object []{meta .getName (), meta .getDataType ()});
743+ }
744+ columnNames .add (meta .getName ());
745+ }
746+ }
747+ }
748+ }
749+ }
750+
672751 /**
673752 * Main function to create files.
674753 * @param unused
@@ -677,12 +756,25 @@ public static void main(String[] unused) {
677756 dump (false );
678757 dump (true );
679758
680- final DataModel dm = getInstance ();
759+ final DataModel dm = getInstance (OIFitsStandard .VERSION_2 );
760+
761+ logger .log (Level .WARNING , "allColumnNames: {0}" , dm .getAllColumnNames ());
681762
682- logger .log (Level .WARNING , "columnNames: {0}" , dm .getNumericalColumnNames ());
763+ logger .log (Level .WARNING , "allNumColumnNames: {0}" , dm .getNumericalColumnNames ());
764+ logger .log (Level .WARNING , "allNumColumnNames1D: {0}" , dm .getNumericalColumnNames1D ());
765+ logger .log (Level .WARNING , "allNumColumnNames2D: {0}" , dm .getNumericalColumnNames2D ());
683766
684- logger .log (Level .WARNING , "columnNames1D: {0}" , dm .getNumericalColumnNames1D ());
685- logger .log (Level .WARNING , "columnNames2D: {0}" , dm .getNumericalColumnNames2D ());
767+ logger .log (Level .WARNING , "allOtherColumnNames: {0}" , dm .getOtherColumnNames ());
768+
769+ for (String name : dm .getAllColumnNames ()) {
770+ final boolean isNumeric = dm .isNumericalColumn (name );
771+ final boolean isNumeric1D = dm .isNumericalColumn1D (name );
772+ final boolean isNumeric2D = dm .isNumericalColumn2D (name );
773+ final boolean isOther = dm .isOtherColumn (name );
774+
775+ logger .log (Level .WARNING , "column[{0}] : isNumeric={1} isNumeric1D={2} isNumeric2D={3} isOther={4}" ,
776+ new Object []{name , isNumeric , isNumeric1D , isNumeric2D , isOther });
777+ }
686778 }
687779
688780}
0 commit comments