package org.eclipse.osbp.ui.api.customfields;

public interface IBlobEvent {
	final String STARTED_BLOB_UPLOAD = "startedblobupload"; //$NON-NLS-1$
	final String STOPPED_BLOB_UPLOAD = "stoppedblobupload"; //$NON-NLS-1$
	/**
	 * Provides a boolean that indicates if a blob was successfully uploaded and
	 * persisted into the database.
	 * 
	 * @return boolean indicating a successfully uploaded and persisted blob
	 *         into the database
	 */
	boolean isUploadSuccessful();
	/**
	 * Provides the uuid of the successfully uploaded and persisted blob into
	 * the database or {@code null} otherwise.
	 * 
	 * @return uuid of the successfully uploaded and persisted blob into the
	 *         database or {@code null} otherwise.
	 */
	String getUploadedBlobId();
	/**
	 * Provides the error message that indicates the reason of an unsuccessfully
	 * attempt of uploading and persisting a blob into the database.
	 * 
	 * @return error message indicating why an uploading and persisting of a
	 *         blob into the database was unsuccessfully.
	 */
	String getErrorMessage();
	/**
	 * @return the just uploaded filename to check for the right component when showing image
	 */
	String getUploadedFile();
}
