package uk.ac.diamond.scisoft.analysis.processing.test.executionvisitor; import org.eclipse.dawnsci.analysis.api.processing.Atomic; import org.eclipse.dawnsci.analysis.api.processing.OperationData; import org.eclipse.dawnsci.analysis.api.processing.OperationException; import org.eclipse.dawnsci.analysis.api.processing.OperationRank; import org.eclipse.dawnsci.analysis.dataset.operations.AbstractOperation; import org.eclipse.january.IMonitor; import org.eclipse.january.MetadataException; import org.eclipse.january.dataset.Dataset; import org.eclipse.january.dataset.DatasetFactory; import org.eclipse.january.dataset.IDataset; import org.eclipse.january.metadata.AxesMetadata; import org.eclipse.january.metadata.MetadataFactory; @Atomic public class Junk2Dto2DOperation extends AbstractOperation<Junk2Dto2Dmodel, OperationData> implements ITestOperation { private boolean withAxes = true; private int nAxes = 1; @Override public String getId() { return "uk.ac.diamond.scisoft.analysis.processing.test.executionvisitor.Junk2Dto2DOperation"; } @Override public String getName(){ return "Junk2Dto2DOperation"; } @Override public OperationRank getInputRank() { return OperationRank.TWO; } @Override public OperationRank getOutputRank() { return OperationRank.TWO; } public void setWithAxes(boolean withAxes) { this.withAxes = withAxes; } public void setNumberOfAxes(int nAxes) { this.nAxes = nAxes; } protected OperationData process(IDataset input, IMonitor monitor) throws OperationException { return getTestData(); } public OperationData getTestData() { int x = model.getxDim(); int y = model.getyDim(); IDataset out = DatasetFactory.createRange(x*y,Dataset.INT16); out.setShape(new int[]{x,y});; out.setName("Junk2Dto2Dout"); if (withAxes) { AxesMetadata am; try { am = MetadataFactory.createMetadata(AxesMetadata.class, 2); } catch (MetadataException e) { throw new OperationException(this, e); } for (int i = 0; i < nAxes; i++) { Dataset ax1 = DatasetFactory.createRange(0, x,1, Dataset.INT16); ax1.iadd(i); ax1.setShape(new int[]{x,1}); if (i == 0) ax1.setName("Junk2Dto2DAx1"); else ax1.setName("Junk2Dto2DAx1"+"_"+Integer.toString(i)); Dataset ax2 = DatasetFactory.createRange(0, y,1, Dataset.INT16); ax2.setShape(new int[]{1,y}); ax2.setName("Junk2Dto2DAx2"); if (i == 0) ax2.setName("Junk2Dto2DAx2"); else ax2.setName("Junk2Dto2DAx2"+"_"+Integer.toString(i)); ax2.iadd(i); am.addAxis(0, ax1); am.addAxis(1, ax2); } out.setMetadata(am); } return new OperationData(out); } public Class<Junk2Dto2Dmodel> getModelClass() { return Junk2Dto2Dmodel.class; } }