001/*- 002 * Copyright 2015, 2016 Diamond Light Source Ltd. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 */ 009 010package org.eclipse.january.io; 011 012import java.io.IOException; 013 014import org.eclipse.january.IMonitor; 015import org.eclipse.january.dataset.IDataset; 016import org.eclipse.january.dataset.SliceND; 017 018/** 019 * Used by lazy writeable datasets to write slices to a file 020 */ 021public interface ILazySaver extends ILazyLoader { 022 public static final long serialVersionUID = 1366057382940519510L; 023 024 /** 025 * Initialize dataset in file 026 * @throws IOException when cannot open destination 027 */ 028 public void initialize() throws IOException; 029 030 /** 031 * @return true if file is writeable 032 */ 033 public boolean isFileWriteable(); 034 035 /** 036 * @param mon can be null 037 * @param data to use 038 * @param slice destination where to set with items of data 039 * @throws IOException when cannot write data 040 */ 041 public void setSlice(IMonitor mon, IDataset data, SliceND slice) throws IOException; 042}