package eu.dnetlib.espas.gui.client;

import java.util.List;
import java.util.Map;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

import eu.dnetlib.espas.gui.shared.*;
import eu.dnetlib.espas.gui.shared.Process;

@RemoteServiceRelativePath("dataAccess")
public interface DataAccessService extends RemoteService {
	
	public List<String> getDataProviderNamespaces(String adminId);

    public List<String> getAllNamespaces();

	public Process getProcedure(String procedureId);
	
	public ObservationCollection getObservationCollection(String observationCollectionId);
	
	public List<Organization> getOrganizations();
	
	public Individual getIndividual(String individualId);
	
	public List<Party> getParties();

	public List<Vocabulary> getRoles();
	
	public List<Vocabulary> getVerticalSrs();
	
	public List<Vocabulary> getSrs();
	
	public Organization getOrganization(String organizationId);
	
	public List<Vocabulary> getStatuses();
	
	public List<Project> getProjects(); 
	
	public Project getProject(String projectId);
	
	public List<Vocabulary> getPlatformTypes();
	
	public Platform getPlatform(String platformId);
	
	public List<Vocabulary> getInstrumentTypes();
	
	public List<Instrument> getInstruments();
	
	public Instrument getInstrument(String instrumentId);
	
	public List<Platform> getPlatforms();
	
	public List<Operation> getOperations();
	
	public Operation getOperation(String operationId);
	
	public List<Vocabulary> getComputationTypes();
	
	public List<Vocabulary> getObservedProperties();
	
	public List<Vocabulary> getDimensionalityInstances();
	
	public List<Vocabulary> getDimensionalityTimelines();
	
	public List<Vocabulary> getUnits();
	
	public Computation getComputation(String computationId);
	
	public List<ObservationCollection> getObservationCollections();
	
	public List<Computation> getComputations();
	
	public List<Acquisition> getAcquisitions();
	
	public CompositeProcess getCompositeProcess(String compositeProcessId);
	
	public Acquisition getAcquisition(String acquisitionId);
	
	public List<Vocabulary> getProcedures();
	
	public List<Vocabulary> getFeatureOfInterests();
	
	public List<Vocabulary> getResultAccumulations();
	
	public List<Vocabulary> getRelatedObservationRoles();
	
	public List<Vocabulary> getServiceFunctions();
	
	public List<Vocabulary> getResultDataFormats();
	
	public List<Vocabulary> getProcessCapabilities();
	
	public List<User> getDataProviderUsers();
	
	public List<Vocabulary> getLicences();
	
	public List<Vocabulary> getComponents();
	
	public List<Vocabulary> getProjections();
	
	public List<Vocabulary> getCompressedRepresentations();
	
	public List<Vocabulary> getQualifiers();
	
	public Map<String, Integer> getSummaryOfEntries();
	
	public List<OperationalMode> getOperationalModesForInstrument(String instrumentId);

    public StoreData getStoreData();

    public List<DataProviderPolicies> getDataProviderPolicies();

    public ObservedProperty getObservedPropertyById(String observedPropertyId);

    public CompositeObservedProperty getCompositeObservedPropertyById(String compositeObservedPropertyId);

    public Vocabulary getPhenomenonById(String phenomenonId);

    public Vocabulary getMeasurandById(String measurandId);

    public Vocabulary getQualifierById(String qualifierId);

    public Vocabulary getInteractionById(String interactionId);

    public Vocabulary getPropagationModeById(String propagationModeId);

    public Vocabulary getComponentById(String componentId);

    public Vocabulary getCompressedRepresentationById(String compressedRepresentationId);

    public Vocabulary getComputationTypeById(String computationTypeId);

    public Vocabulary getCrsById(String crsId);

    public Vocabulary getDimensionalityInstanceById(String dimensionalityInstanceId);

    public Vocabulary getDimensionalityTimelineById(String dimensionalityTimelineId);

    public Vocabulary getLicenceById(String licenceId);

    public Vocabulary getFeatureOfInterestById(String featureOfInterestId);

    public Vocabulary getInstrumentTypeById(String instrumentTypeId);

    public Vocabulary getPlatformTypeById(String platformTypeId);

    public Vocabulary getProjectionById(String projectionId);

    public Vocabulary getRelatedObservationRoleById(String relatedObservationRoleId);

    public Vocabulary getRelatedPartyRoleById(String relatedPartyRoleId);

    public Vocabulary getResultAccumulationById(String resultAccumulationId);

    public Vocabulary getResultDataFormatById(String resultDataFormatId);

    public Vocabulary getServiceFunctionById(String serviceFunctionId);

    public Vocabulary getStatusById(String statusId);

    public Vocabulary getUnitById(String unitId);
}