package com.plectix.simulator.interfaces;
import com.plectix.simulator.simulationclasses.injections.Injection;
import com.plectix.simulator.simulationclasses.solution.SuperSubstance;
/**
* Interface of Connected Component.
*/
public interface ConnectedComponentInterface extends SolutionElementInterface {
/**
* Sets parent super substance
* @param superSubstance new parent super substance
*/
public void setSuperSubstance(SuperSubstance superSubstance);
/**
* Returns parent super substance
* @return parent super substance
*/
public SuperSubstance getSubstance();
/**
* This method indicates emptiness of this connected component
* @return <tt>true</tt>, if this ConnectedComponent is empty, otherwise <tt>false</tt>.
*/
public boolean isEmpty();
/**
* @return smiles canonical representation of this component as String
*/
public String getSmilesString();
/**
* @return the sum weight of injections from this connected component
*/
public long getInjectionsWeight();
/**
* Completely erases all injection, pointing to this connected component.
* It means, that these injections abort their existance
*/
public void deleteIncomingInjections();
/**
* Sets the weight of all injection, pointing to this connected component, to the 1.
*/
public void burnIncomingInjections();
/**
* Increments the weight of all injection, pointing to this connected component.
*/
public void incrementIncomingInjections();
/**
* Notifies component that some injection changed it's weight
* @param injection changed injection
* @param weightDifference weight shift
*/
public void updateInjection(Injection injection, long weightDifference);
}