/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.datamanagement.backend;
import de.rcenvironment.core.datamanagement.RemotableMetaDataService;
import de.rcenvironment.core.datamanagement.commons.BinaryReference;
import de.rcenvironment.core.datamanagement.commons.ComponentInstance;
import de.rcenvironment.core.datamanagement.commons.ComponentRun;
import de.rcenvironment.core.datamanagement.commons.DataReference;
import de.rcenvironment.core.datamanagement.commons.WorkflowRun;
/**
* Interface of the data management meta data backend.
*
* @author Jan Flink
*/
public interface MetaDataBackendService extends RemotableMetaDataService {
/**
* Key for a service property.
*/
String PROVIDER = "de.rcenvironment.core.datamanagement.backend.metadata.provider";
/**
* Sets or updates the string representation of a timeline data item of an {@link WorkflowRun}.
*
* @param workflowRunId The identifier of the {@link WorkflowRun}
* @param timelineDataItem The string representation of the timeline data item.
*/
void setOrUpdateTimelineDataItem(Long workflowRunId, String timelineDataItem);
/**
* Adds a {@link DataReference} to the {@link ComponentRun} with the given identifier.
*
* @param componentRunId The identifier of the {@link ComponentRun}.
* @param dataReference The {@link DataReference} to add.
* @return The identifier of the generated dataReference
*/
Long addDataReferenceToComponentRun(Long componentRunId, DataReference dataReference);
/**
* Adds a {@link DataReference} to the {@link ComponentInstance} with the given identifier.
*
* @param componentInstanceId The identifier of the {@link ComponentInstance}.
* @param dataReference The {@link DataReference} to add.
* @return The identifier of the generated dataReference
*/
Long addDataReferenceToComponentInstance(Long componentInstanceId, DataReference dataReference);
/**
* Adds a {@link DataReference} to the {@link ComponentRun} with the given identifier.
*
* @param workflowRunId The identifier of the {@link ComponentRun}.
* @param dataReference The {@link DataReference} to add.
* @return The identifier of the generated dataReference
*/
Long addDataReferenceToWorkflowRun(Long workflowRunId, DataReference dataReference);
/**
* Gets the {@link DataReference} for the given uuid from the meta data backend.
*
* @param dataReferenceKey The key of the {@link DataReference} to return.
* @return The {@link DataReference}.
*/
DataReference getDataReference(String dataReferenceKey);
/**
* Adds a {@link BinaryReference} to the {@link DataReference} with the given identifier.
*
* @param dataReferenceId The identifier of the {@link DataReference}.
* @param binaryReference The {@link BinaryReference} to add.
*/
void addBinaryReference(Long dataReferenceId, BinaryReference binaryReference);
/**
* Checks if the meta data backend service was started successfully.
*
* @return true, iff meta data backend service was started successfully.
*/
boolean isMetaDataBackendOk();
/**
* Gets error message if the meta data backend service was not started successfully.
*
* @return error message if the meta data backend service was not started successfully, and null, else.
*/
String getMetaDataBackendStartErrorMessage();
}