/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.update.spi;
import java.io.IOException;
import de.rcenvironment.core.component.update.api.PersistentComponentDescription;
/**
* Must be implemented by all components which need to update its persistent JSON descriptions in workflow files.
*
* @author Doreen Seider
*/
public interface PersistentComponentDescriptionUpdater {
/**
* @return component identifier this updater has updates for
*/
String[] getComponentIdentifiersAffectedByUpdate();
/**
* @param persistentComponentDescriptionVersion version found
* @param silent if dialog shouldn't pop up
* @return logically concatenated {@link PersistentDescriptionFormatVersion} an update must be performed for
*/
int getFormatVersionsAffectedByUpdate(String persistentComponentDescriptionVersion, boolean silent);
/**
* Performs the actual update.
* @param formatVersion {@link PersistentDescriptionFormatVersion} the update must be performed for
* @param description persistent descriptions of affected component
* @param silent if dialog shouldn't pop up
* @return updated persistent descriptions
* @throws IOException on parsing errors
*/
PersistentComponentDescription performComponentDescriptionUpdate(int formatVersion, PersistentComponentDescription description,
boolean silent) throws IOException;
}