/*- ******************************************************************************* * Copyright (c) 2015 Diamond Light Source Ltd. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthew Dickie - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.dawnsci.nexus.builder.impl; import java.util.ArrayList; import java.util.List; import org.eclipse.dawnsci.nexus.NXbeam; import org.eclipse.dawnsci.nexus.NXdetector; import org.eclipse.dawnsci.nexus.NexusBaseClass; import org.eclipse.dawnsci.nexus.NexusException; import org.eclipse.dawnsci.nexus.NexusNodeFactory; import org.eclipse.dawnsci.nexus.builder.AbstractNexusObjectProvider; import org.eclipse.dawnsci.nexus.builder.NexusEntryBuilder; import org.eclipse.dawnsci.nexus.builder.NexusEntryModification; import org.eclipse.dawnsci.nexus.builder.data.DataDeviceBuilder; import org.eclipse.dawnsci.nexus.builder.data.NexusDataBuilder; import org.eclipse.january.dataset.DatasetFactory; public class SimpleNexusFileBuilderTest extends AbstractNexusFileBuilderTestBase { private static class TestDetector extends AbstractNexusObjectProvider<NXdetector> { public TestDetector() { super("analyser", NexusBaseClass.NX_DETECTOR, NXdetector.NX_DATA); } @Override protected NXdetector createNexusObject() { final NXdetector nxDetector = NexusNodeFactory.createNXdetector(); nxDetector.setDescription(DatasetFactory.createFromObject("Test Detector")); nxDetector.initializeLazyDataset(NXdetector.NX_DATA, 2, Double.class); // could add more fields return nxDetector; } } private static class TestBeam extends AbstractNexusObjectProvider<NXbeam> { public TestBeam() { super("beam", NexusBaseClass.NX_BEAM); setCategory(NexusBaseClass.NX_SAMPLE); } @Override protected NXbeam createNexusObject() { final NXbeam beam = NexusNodeFactory.createNXbeam(); beam.setIncident_wavelength(DatasetFactory.createFromObject(123.456)); beam.setFlux(DatasetFactory.createFromObject(12.34f)); return beam; } } private static final String FILE_NAME = "simpleTestFile.nxs"; private TestDetector detector; private TestBeam beam; protected String getFilename() { return FILE_NAME; } protected void addDataBuilder(NexusEntryBuilder entryModel) throws NexusException { NexusDataBuilder dataModel = entryModel.createDefaultData(); dataModel.setPrimaryDevice(DataDeviceBuilder.newPrimaryDataDevice(detector)); } protected List<NexusEntryModification> getNexusTreeModifications() { detector = new TestDetector(); beam = new TestBeam(); final List<NexusEntryModification> modifications = new ArrayList<>(); modifications.add(detector); modifications.add(beam); return modifications; } @Override protected String getTestClassName() { return SimpleNexusFileBuilderTest.class.getCanonicalName(); } }