package com.plectix.simulator.staticanalysis; import com.plectix.simulator.interfaces.ConnectedComponentInterface; import com.plectix.simulator.simulationclasses.solution.SuperSubstance; /** * This class implements snapshot element entity. * @author avokhmin * */ public final class SnapshotElement { private long count; private ConnectedComponentInterface connectedComponent; private final String ccName; /** * Constructor. Creates snapshot-element with existing connected component * @param component given ConnectedComponent * @param isOcamlStyleObsName <tt>true</tt> if we use O'caml styled observables names, * otherwise <tt>false</tt> */ public SnapshotElement(ConnectedComponentInterface component, long count, boolean isOcamlStyleObsName) { this.count = count; connectedComponent = component; ccName = connectedComponent.getSmilesString(); } /** * This method returns counter of this snapshot element * @return counter of this snapshot element */ public final long getCount() { return count; } /** * This method returns name of current snapshot element * @return name of current snapshot element */ public final String getComponentsName() { return ccName; } /** * This method compares current connected component with the given one and * increments counter for this snapshot element, if they are Automorphic's * @param component given connected component * @return <tt>true</tt> if given connected component is automorphic to current, * otherwise <tt>false</tt> */ public final boolean exists(ConnectedComponentInterface component) { if (connectedComponent == component) return true; if(ccName.equals(component.getSmilesString())){ SuperSubstance substance = component.getSubstance(); if (substance != null) { count += substance.getQuantity(); } else { count++; } return true; } return false; } /** * This method sets connected component of this snapshot element. * @param connectedComponent new values of connected component. */ public final void eraseConnectedComponent() { connectedComponent = null; } }