All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.ipk_gatersleben.bit.bi.edal.rmi.interfaces.DataManagerRmiInterface Maven / Gradle / Ivy

/*
 * Copyright (c) 2016 Leibniz Institute of Plant Genetics and Crop Plant Research (IPK), Gatersleben, Germany.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
 * which accompanies this distribution, and is available at http://creativecommons.org/licenses/by-nd/4.0/
 *
 * Contributors:
 *      Leibniz Institute of Plant Genetics and Crop Plant Research (IPK), Gatersleben, Germany - RMI Server and wrapper
 */
package de.ipk_gatersleben.bit.bi.edal.rmi.interfaces;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.security.Principal;
import java.util.List;
import java.util.Map;

import javax.security.auth.Subject;

import com.healthmarketscience.rmiio.RemoteInputStream;
import com.healthmarketscience.rmiio.RemoteOutputStream;

import de.ipk_gatersleben.bit.bi.edal.aspectj.security.GrantableMethods.Methods;
import de.ipk_gatersleben.bit.bi.edal.primary_data.file.PrimaryDataDirectoryException;
import de.ipk_gatersleben.bit.bi.edal.primary_data.file.EdalException;
import de.ipk_gatersleben.bit.bi.edal.primary_data.metadata.MetaData;
import de.ipk_gatersleben.bit.bi.edal.primary_data.security.EdalAuthenticateException;
import de.ipk_gatersleben.bit.bi.edal.rmi.server.Authentication;

/**
 * RMI Interface for
 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager} objects.
 * 
 * @author arendd
 */
public interface DataManagerRmiInterface extends Remote {

	Subject authenticate(Authentication authentication) throws RemoteException, EdalAuthenticateException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider#shutdown()}
	 * 
	 * @return a new {@link MetaData} object.
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider#createMetaDataInstance()
	 */
	MetaData createMetaDataInstance() throws RemoteException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getAvailableStorageSpace()}
	 * 
	 * @return available space
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @throws EdalException
	 *             if no mount path is set.
	 * 
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getAvailableStorageSpace()
	 */
	Long getAvailableStorageSpace() throws RemoteException, EdalException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getDefaultPermissions()}
	 * 
	 * @return map with all default permissions.
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getDefaultPermissions()
	 */
	Map> getDefaultPermissions() throws RemoteException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getRootDirectory(de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider, Subject)}
	 * 
	 * @param subject
	 *            the authenticated subject
	 * @return the root
	 *         {@link de.ipk_gatersleben.bit.bi.edal.primary_data.file.PrimaryDataDirectory}
	 *         for the passed implementation
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @throws PrimaryDataDirectoryException
	 *             if any.
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getRootDirectory(de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider,
	 *      Subject)
	 */
	PrimaryDataDirectoryRmiInterface getRootDirectory(final Subject subject) throws RemoteException, PrimaryDataDirectoryException;

	/**
	 * Getter all supported {@link Principal}s of the current eDAL system.
	 * 
	 * @return the list of supported {@link Principal}s
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @throws EdalException
	 *             if unable to load {@link Principal}s.
	 */
	List> getSupportedPrincipals() throws RemoteException, EdalException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getUsedStorageSpace()}
	 * 
	 * @return used space
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @throws EdalException
	 *             if no mount path is set.
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.DataManager#getAvailableStorageSpace()
	 */
	Long getUsedStorageSpace() throws RemoteException, EdalException;

	/**
	 * {@link de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider#shutdown()}
	 * 
	 * @throws RemoteException
	 *             if unable to call remote function.
	 * @see de.ipk_gatersleben.bit.bi.edal.primary_data.file.ImplementationProvider#shutdown()
	 */
	void shutdown() throws RemoteException;

	void receiveTestData(RemoteOutputStream outputStream) throws RemoteException, IOException;

	RemoteInputStream sendFileToClient(String fileName) throws RemoteException, FileNotFoundException, IOException;
	
	RemoteOutputStream sendOutputStreamToFillFromClient(String fileName) throws RemoteException, FileNotFoundException;

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy