Put IDS into Non-default OccurrenceΒΆ

This example focuses on putting IDS into another occurrence.

See also

API documentation for imas.open, put, listAllOccurrences

    public static void putIntoNonDefaultOccurrence() throws Exception {
        
        try { 
            int dataEntry = imas.open("imas:mdsplus?path=./testdb_mdsplus", LowLevel.FORCE_CREATE_PULSE);

            // default occurrence for get/put is 0
            // list of available occurrences can be found inside Data Dictionary documentation.
            imas.equilibrium emptyEquilibrium = new imas.equilibrium();

            // set mandatory field
            emptyEquilibrium.ids_properties.homogeneous_time = LowLevel.IDS_TIME_MODE_HOMOGENEOUS;

            // when ids_properties.homogeneous_time is set to IDS_TIME_MODE_HOMOGENEOUS,
            // all time-dependent fields values correspond to <ids>.time vector.
            double[] timeArray = {1.0, 2.0, 3.0};
            emptyEquilibrium.time = new Vect1DDouble(timeArray);

            // in order to print properly all occurrences with content of a given node, we need to put empty IDS to default occurrence
            emptyEquilibrium.put(dataEntry, "equilibrium", emptyEquilibrium);

            // add some comment to IDS
            emptyEquilibrium.ids_properties.comment = "comment from 1st occurrence";

            // put IDS into occurrence 1
            emptyEquilibrium.put(dataEntry, "equilibrium/1", emptyEquilibrium);
        
            // modify comment, so differences between occurrences can be spotted
            emptyEquilibrium.ids_properties.comment = "comment from 2nd occurrence";

            // put IDS into occurrence 2
            emptyEquilibrium.put(dataEntry, "equilibrium/2", emptyEquilibrium);
            imas.close(dataEntry);

            try {
                // now we can print saved comments
                int dataEntry1 = imas.open("imas:mdsplus?path=./testdb_mdsplus", LowLevel.OPEN_PULSE);
                imas.equilibrium savedEquilibriumOccurrence1 = imas.equilibrium.get(dataEntry1, "equilibrium/1");
                imas.equilibrium savedEquilibriumOccurrence2 = imas.equilibrium.get(dataEntry1, "equilibrium/2");
                
                System.out.println("\nSaved equilibrium/ids_properties/comment field: (occurrence 1)\n" + savedEquilibriumOccurrence1.ids_properties.comment);
                System.out.println("\nSaved equilibrium/ids_properties/comment field: (occurrence 2)\n" + savedEquilibriumOccurrence2.ids_properties.comment);
                imas.close(dataEntry1);

            } catch (Exception e) {
            System.err.println("Following exception occurred\n" + e.getMessage());
                throw e; 
            }
            
            try {
                // occurrences can be listed with listAllOccurrences() function
                // listAllOccurrences also returns content of IDS field pointed by nodePath argument    
                // nodePath in Java HLI works with STR_0D (Sting) fields
                int dataEntry2 = imas.open("imas:mdsplus?path=./testdb_mdsplus", LowLevel.OPEN_PULSE);
                
                HashMap<Integer, String> occurrences;
                
                // listAllOccurrences accepts as its 3rd parameter string containing nodePath
                occurrences = imas.listAllOccurrences(dataEntry2, "equilibrium", "");
                System.out.println("\nequilibrium occurrences without nodePath\n" + occurrences);

                occurrences = imas.listAllOccurrences(dataEntry2, "equilibrium", "ids_properties/comment");
                System.out.println("\nequilibrium occurrences with 'ids_properties/comment' nodePath\n" + occurrences);

                imas.close(dataEntry2);
            } catch (Exception e) { 
            System.err.println("Following exception occurred\n" + e.getMessage());
                throw e; 
            }
        } catch (Exception e) {
            System.err.println("Following exception occurred\n" + e.getMessage());
            throw e;
        }
    }
}