cim1.model.CurveData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powsybl-cim1-model Show documentation
Show all versions of powsybl-cim1-model Show documentation
CIM ENTSO-E V1 model generated by CIM Gateway tool
/**
* Copyright (c) 2016, All partners of the iTesla project (http://www.itesla-project.eu/consortium)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package cim1.model;
import cim1.exc.InterpretationException;
import cim1.exc.LinkageException;
import java.util.BitSet;
import java.util.Map;
import java.util.EnumMap;
import javax.xml.stream.XMLStreamException;
import cim1.CIMURI;
import javax.xml.stream.XMLStreamWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* This file has been automatically generated by CIMGateway
*
* Description :
*
* This class "CurveData.java" represents the
* class CurveData : CIMInstance
*
* + y1value 1..1 float
* + xvalue 1..1 float
* + y2value 1..1 float
* + CurveSchedule 1..1 Curve
*/
public class CurveData extends CIMInstance {
private static Logger LOGGER = LoggerFactory.getLogger(CurveData.class);
/**
* Attribute "y1value"
*
* Comment from profile:
* The data value of the first Y-axis variable, depending on the Y-axis units
*/
public float y1value;
/**
* Attribute "xvalue"
*
* Comment from profile:
* The data value of the X-axis variable, depending on the X-axis units
*/
public float xvalue;
/**
* Attribute "y2value"
*
* Comment from profile:
* The data value of the second Y-axis variable (if present), depending on the Y-axis units
*/
public float y2value;
/**
* Attribute "curveSchedule"
*
* Comment from profile:
* The Curve defined by this CurveData.
*/
public Curve curveSchedule;
/**
* The id of the attribute "curveSchedule"
* This id is mainly used to resolve links after parsing an instance
*/
public String idCurveSchedule;
/**
* The current bitset describing the state of each CIM attribute of this
* class
*/
private BitSet currentBitset = new BitSet();
/**
* The bitset describing which CIM attributes of this class have to set to
* be consistent within a "merged" context
*/
private final BitSet minBitset = new BitSet();
/**
* The Map of subset<=>bitset describing which CIM attributes of this class
* have to set to be consistent within a specific subset context
*/
private final Map minBitsets
= new EnumMap(Subset.class);
/**
* Utility to return the "y1value" value
*
* @return the value of the attribute "y1value"
*/
public float getY1value() {
return this.y1value;
}
/**
* Utility to set the "y1value" value
*
* @param y1valueValue
* value to set
*/
public void setY1value(float y1valueValue) {
this.y1value = y1valueValue;
this.currentBitset.set(0);
}
/**
* Utility to test if the value of "y1value" has been set
*
* @return boolean
* if true the attribute "y1value" is already set
* if false isn't yet
*/
public boolean y1valueIsSet() {
return this.currentBitset.get(0);
}
/**
* Utility to return the "xvalue" value
*
* @return the value of the attribute "xvalue"
*/
public float getXvalue() {
return this.xvalue;
}
/**
* Utility to set the "xvalue" value
*
* @param xvalueValue
* value to set
*/
public void setXvalue(float xvalueValue) {
this.xvalue = xvalueValue;
this.currentBitset.set(1);
}
/**
* Utility to test if the value of "xvalue" has been set
*
* @return boolean
* if true the attribute "xvalue" is already set
* if false isn't yet
*/
public boolean xvalueIsSet() {
return this.currentBitset.get(1);
}
/**
* Utility to return the "y2value" value
*
* @return the value of the attribute "y2value"
*/
public float getY2value() {
return this.y2value;
}
/**
* Utility to set the "y2value" value
*
* @param y2valueValue
* value to set
*/
public void setY2value(float y2valueValue) {
this.y2value = y2valueValue;
this.currentBitset.set(2);
}
/**
* Utility to test if the value of "y2value" has been set
*
* @return boolean
* if true the attribute "y2value" is already set
* if false isn't yet
*/
public boolean y2valueIsSet() {
return this.currentBitset.get(2);
}
/**
* Utility to return the "curveSchedule"
*
* @return the value of the attribute "curveSchedule"
*/
public Curve getCurveSchedule() {
return this.curveSchedule;
}
/**
* Utility to test if the value of "curveSchedule" has been set
*
* @return boolean
* if true the attribute "curveSchedule" is already set
* if false it isn't yet
*/
public boolean curveScheduleIsSet() {
return this.currentBitset.get(3);
}
/**
* Utility to set the "curveScheduleValue"
*
* @param curveScheduleValue
* instance to set
* @param setInverse
* boolean to specify whether to set the inverse association
* or not
* @throws LinkageException
*/
public void setCurveSchedule(
Curve curveScheduleValue,
boolean setInverse) throws LinkageException {
this.curveSchedule = curveScheduleValue;
this.currentBitset.set(3);
if (setInverse) {
if (curveScheduleValue != null) {
curveScheduleValue.addCurveScheduleDatas(this, false);
}
}
}
/**
* Factory of the class
*
* @param id
* id of the class CurveData to create
* @return the class created
*/
public static CurveData create(final String id) {
CurveData newCurveData = new CurveData();
newCurveData.setId(id);
return newCurveData;
}
/**
* Utility to "clear" the content of a class when a subset is invalidated
*
* @param subset subset to clean
*/
@Override
public void clearContent(Subset subset) {
// First of all, we clear the associations:
this.clearAssociations(subset);
switch (subset) {
default: // nothing to clear
}
}
/**
* Utility to read an attribute
* This function is called by the CIMModel
*
* @param class_name
* the read name of class
* @param attr_name
* the read name of attribute
* @param value
* the read value of the attribute
* @param model
* the interface to the model this class belongs to
* @throws InterpretationException
*/
@Override
public void readAttribute(final String class_name, final String attr_name,
final String value, CIMModel model) throws InterpretationException {
if (class_name.equals("CurveData")) {
if (attr_name.equals("y1value")) {
if (!(model.isCurrentSubsetSet())
|| (model.getCurrentSubset() == Subset.Equipment)) {
float typedValue;
if (!value.isEmpty()) {
try {
if (value.equalsIgnoreCase("NaN")) {
throw new NumberFormatException();
}
typedValue = Float
.parseFloat(value);
} catch(NumberFormatException e) {
throw new InterpretationException("The attribute y1value in class "
+ "CurveData is supposed to be a Float"
+ " but has not the expected NumberFormat");
}
} else {
throw new InterpretationException("The field of float"
+ " in CurveData was found empty");
}
this.setY1value(typedValue);
return;
} else {
StringBuilder errorMessage
= new StringBuilder("The attribute \"");
errorMessage.append(attr_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage.append("\" cannot be defined in a file ");
errorMessage.append("describing an other subset than ");
errorMessage.append("\"Equipment\".");
throw new InterpretationException(errorMessage.toString());
}
}
if (attr_name.equals("xvalue")) {
if (!(model.isCurrentSubsetSet())
|| (model.getCurrentSubset() == Subset.Equipment)) {
float typedValue;
if (!value.isEmpty()) {
try {
if (value.equalsIgnoreCase("NaN")) {
throw new NumberFormatException();
}
typedValue = Float
.parseFloat(value);
} catch(NumberFormatException e) {
throw new InterpretationException("The attribute xvalue in class "
+ "CurveData is supposed to be a Float"
+ " but has not the expected NumberFormat");
}
} else {
throw new InterpretationException("The field of float"
+ " in CurveData was found empty");
}
this.setXvalue(typedValue);
return;
} else {
StringBuilder errorMessage
= new StringBuilder("The attribute \"");
errorMessage.append(attr_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage.append("\" cannot be defined in a file ");
errorMessage.append("describing an other subset than ");
errorMessage.append("\"Equipment\".");
throw new InterpretationException(errorMessage.toString());
}
}
if (attr_name.equals("y2value")) {
if (!(model.isCurrentSubsetSet())
|| (model.getCurrentSubset() == Subset.Equipment)) {
float typedValue;
if (!value.isEmpty()) {
try {
if (value.equalsIgnoreCase("NaN")) {
throw new NumberFormatException();
}
typedValue = Float
.parseFloat(value);
} catch(NumberFormatException e) {
throw new InterpretationException("The attribute y2value in class "
+ "CurveData is supposed to be a Float"
+ " but has not the expected NumberFormat");
}
} else {
throw new InterpretationException("The field of float"
+ " in CurveData was found empty");
}
this.setY2value(typedValue);
return;
} else {
StringBuilder errorMessage
= new StringBuilder("The attribute \"");
errorMessage.append(attr_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage.append("\" cannot be defined in a file ");
errorMessage.append("describing an other subset than ");
errorMessage.append("\"Equipment\".");
throw new InterpretationException(errorMessage.toString());
}
}
StringBuilder errorMessage = new StringBuilder("The attribute \"");
errorMessage.append(attr_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage
.append("\" could not be found in the model !");
throw new InterpretationException(errorMessage.toString());
} else {
StringBuilder errorMessage = new StringBuilder("The attribute \"");
errorMessage.append(attr_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage
.append("\" could not be found in the model !");
throw new InterpretationException(errorMessage.toString());
}
}
/**
* Utility to read a reference to a resource
* This function is called by the CIMModel
*
* @param class_name
* the read name of class
* @param resource_name
* the read name of the associated resource
* @param id
* the id of the associated resource
* @param model
* the model this class belongs to
* @throws InterpretationException
*/
@Override
public void readResource(final String class_name,
final String resource_name, final String id, CIMModel model)
throws InterpretationException, LinkageException {
if (class_name.equals("CurveData")) {
if (resource_name.equals("CurveSchedule")) {
if (!(model.isCurrentSubsetSet())
|| (model.getCurrentSubset() == Subset.Equipment)) {
idCurveSchedule = id.substring(1);
if (!super.isAddedToUnresolved()) {
model.addUnresolved();
super.addToUnresolved();
}
return;
} else {
StringBuilder errorMessage
= new StringBuilder("The association \"");
errorMessage.append(resource_name);
errorMessage.append("\" in class");
errorMessage.append("\""+class_name+" \"");
errorMessage.append("is not supposed to be in the subset \"");
errorMessage.append(model.getCurrentSubset().getIdentifier());
errorMessage.append("\"");
throw new InterpretationException(errorMessage.toString());
}
}
StringBuilder errorMessage = new StringBuilder("The association \"");
errorMessage.append(resource_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage.append("\" could not be found in the model !");
throw new InterpretationException(errorMessage.toString());
} else {
StringBuilder errorMessage = new StringBuilder("The association \"");
errorMessage.append(resource_name);
errorMessage.append("\" in class \"");
errorMessage.append(class_name);
errorMessage.append("\" could not be found in the model !");
throw new InterpretationException(errorMessage.toString());
}
}
/**
* Utility to write the content into the CIM XML format
*
* @param writeID
* specifies whether to write the XML "id" attribute (this is used for describing concrete class)
* @param xmlsw
* XMLStreamWriter where are stored the elements to write
*/
@Override
public void write(XMLStreamWriter xmlsw, boolean writeID) {
/*
* In previous versions, we used to check the consistency
* of the instance in the context but this task is now
* performed by the model before attempting to write.
* Therefore each instance can now be written even if
* it is not consistent !
*/
if (writeID) {
try {
xmlsw.writeStartElement(CIMURI.CIMURI, "CurveData");
xmlsw.writeAttribute(CIMModel.rdfURI, "ID", getId());
// xmlsw.writeCharacters("\n");
} catch (XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
writeClass(xmlsw);
if (writeID) {
try {
xmlsw.writeEndElement();
// xmlsw.writeCharacters("\n");
} catch (XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the end Element of the class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
return;
}
/**
* Utility to write the content this class into the CIM/XML format according
* to a subset
*
* @param subset
* the subset defining the context in which to write this class
* @param writeID
* specifies whether to write the XML "id" attribute (this is used for describing concrete class)
* @param xmlsw
* the stream in which are stored the elements to write
*/
@Override
public void write(XMLStreamWriter xmlsw, final Subset subset,
boolean writeID) {
/*
* In previous versions, we used to check the consistency
* of the instance in the context but this task is now
* performed by the model before attempting to write.
* Therefore each instance can now be written even if
* it is not consistent !
*/
switch (subset) {
case Equipment: {
if (writeID) {
try {
xmlsw.writeStartElement(CIMURI.CIMURI, "CurveData");
xmlsw.writeAttribute(CIMModel.rdfURI, "ID", getId());
// xmlsw.writeCharacters("\n");
} catch (XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
errorMessage.append(" in the subset ");
errorMessage.append("Equipment");
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
writeClass(xmlsw);
if (writeID) {
try {
xmlsw.writeEndElement();
// xmlsw.writeCharacters("\n");
} catch (XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write end element of ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
errorMessage.append(" in the subset ");
errorMessage.append("Equipment");
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
break;
}
default: {// Do nothing !
}
}
return;
}
/**
* Utility to resolve the links at the end of parsing
*
* @param model
* the model this class belongs to
* @param boundaryModel
* the model that gather data about the boundarySet, used
* as a resource force links resolving
* @throws Linkage Exception
*/
@Override
public void resolveLinks(CIMModel model, CIMModel boundaryModel) throws LinkageException {
if (idCurveSchedule != null) {
Curve attributeToSet =
model.searchCurve
(idCurveSchedule);
if (attributeToSet != null) {
boolean setInverse = true;
try {
this.setCurveSchedule(attributeToSet, setInverse);
} catch(LinkageException e) {
LOGGER.error(e.toString(), e);
throw new LinkageException(e.getMessage());
}
} else if (boundaryModel != null) {
Curve attributeToSetFromBoundary = boundaryModel.searchCurve(idCurveSchedule);
if(attributeToSetFromBoundary != null) {
attributeToSetFromBoundary.setFromBoundary(true);
boolean setInverse = true;
try {
this.setCurveSchedule(attributeToSetFromBoundary, setInverse);
} catch(LinkageException e) {
LOGGER.error(e.toString(), e);
throw new LinkageException(e.getMessage());
}
attributeToSetFromBoundary.resolveLinks(model, boundaryModel);
} else {
StringBuilder errorMessage = new StringBuilder(
"Could not find the reference to object of type \"Curve\" and id \"");
errorMessage.append(idCurveSchedule);
errorMessage.append("\" in \"CurveData\" of id \"");
errorMessage.append(this.getId());
errorMessage.append("\" !");
throw new LinkageException(errorMessage.toString());
}
} else {
StringBuilder errorMessage = new StringBuilder(
"Could not find the reference to object of type \"Curve\" and id \"");
errorMessage.append(idCurveSchedule);
errorMessage.append("\" in \"CurveData\" of id \"");
errorMessage.append(this.getId());
errorMessage.append("\" !");
throw new LinkageException(errorMessage.toString());
}
}
removeFromUnresolved();
}
/**
* Utility to check whether this class is consistent according to a subset
*
* @param subset
* the subset defining the context in which to check whether this class is consistent
* @return a ConsistencyCheck instance whose boolean attribute (consistent)
* indicates if this class is consistent and whose String attribute
* (message)
* indicates why this class is not consistent if it is not
*/
@Override
public ConsistencyCheck modelConsistency(final Subset subset) {
BitSet intersection = new BitSet(this.minBitsets.get(subset).length());
intersection.or(this.minBitsets.get(subset));
// we create a copy of minBitsets.get(subset)
intersection.and(this.currentBitset);
boolean consistent = (this.minBitsets.get(subset).equals(intersection));
StringBuilder message = new StringBuilder("");
if (!consistent) {
message.append(getMessageForConsistency(this.minBitsets.get(subset)));
}
return new ConsistencyCheck(consistent, message.toString());
}
/**
* Utility to check whether this class is consistent in a "merged" context
*
* @return a ConsistencyCheck instance whose boolean attribute (consistent)
* indicates if this class is consistent and whose String attribute
* (message)
* indicates why this class is not consistent if it is not
*/
@Override
public ConsistencyCheck modelConsistency() {
BitSet intersection = new BitSet(this.minBitset.length());
intersection.or(this.minBitset);
// we create a copy of minBitSet
intersection.and(this.currentBitset);
boolean consistent = (this.minBitset.equals(intersection));
StringBuilder message = new StringBuilder("");
if (!consistent) {
message.append(getMessageForConsistency(this.minBitset));
}
return new ConsistencyCheck(consistent, message.toString());
}
/**
* Utility to copy the "base" of an other instance of the same class
* This utility does not copy the associations with other instances from
* the instance to copy
*
* @param otherCurveData
* the instance to copy
*/
public void copyBase(final CurveData otherCurveData) {
float newy1value;
// assigning primitive type :
if (otherCurveData.currentBitset.get(0)) {
newy1value = otherCurveData.getY1value();
this.setY1value(newy1value);
}
float newxvalue;
// assigning primitive type :
if (otherCurveData.currentBitset.get(1)) {
newxvalue = otherCurveData.getXvalue();
this.setXvalue(newxvalue);
}
float newy2value;
// assigning primitive type :
if (otherCurveData.currentBitset.get(2)) {
newy2value = otherCurveData.getY2value();
this.setY2value(newy2value);
}
// Memory allocation has done successfully !
// Dropping "old" objects...
// This part may change : we do nothing to allow the user to access
// object by their id from the global model.
if (otherCurveData.currentBitset.get(3)) {
Curve curveScheduleAssociation = otherCurveData.getCurveSchedule();
//this.idCurveSchedule = (curveScheduleAssociation != null) ? curveScheduleAssociation.getId() : "";
if (curveScheduleAssociation != null) {
this.idCurveSchedule = curveScheduleAssociation.getId();
// the proper bit will be set when the setter is called
} else {
this.idCurveSchedule = "";
}
}
// TODO : Call the parent copy constructor instead ?
super.copyBase(otherCurveData);
}
/**
* Utility to return the content of this class into the CIM XML format
*
* @param xmlsw
* the stream in which are stored the elements to write
*/
private void writeClass(XMLStreamWriter xmlsw) {
if (currentBitset.get(0)) {
try {
// xmlsw.writeCharacters("\t");
xmlsw.writeStartElement(CIMURI.CIMURI,
"CurveData.y1value");
xmlsw.writeCharacters(String.valueOf(getY1value()));
xmlsw.writeEndElement();
// xmlsw.writeCharacters("\n");
} catch(XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the value of the attribute ");
errorMessage.append("Y1value");
errorMessage.append(" in class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
if (currentBitset.get(1)) {
try {
// xmlsw.writeCharacters("\t");
xmlsw.writeStartElement(CIMURI.CIMURI,
"CurveData.xvalue");
xmlsw.writeCharacters(String.valueOf(getXvalue()));
xmlsw.writeEndElement();
// xmlsw.writeCharacters("\n");
} catch(XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the value of the attribute ");
errorMessage.append("Xvalue");
errorMessage.append(" in class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
if (currentBitset.get(2)) {
try {
// xmlsw.writeCharacters("\t");
xmlsw.writeStartElement(CIMURI.CIMURI,
"CurveData.y2value");
xmlsw.writeCharacters(String.valueOf(getY2value()));
xmlsw.writeEndElement();
// xmlsw.writeCharacters("\n");
} catch(XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the value of the attribute ");
errorMessage.append("Y2value");
errorMessage.append(" in class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
if (currentBitset.get(3)) {
if (idCurveSchedule != null) {
try {
// xmlsw.writeCharacters("\t");
xmlsw.writeEmptyElement(CIMURI.CIMURI,
"CurveData.CurveSchedule");
xmlsw.writeAttribute(CIMModel.rdfURI, "resource", "#"
+ idCurveSchedule);
// xmlsw.writeCharacters("\n");
} catch(XMLStreamException e) {
StringBuilder errorMessage = new StringBuilder(
"Error while trying to write the resource attribute ");
errorMessage.append("CurveSchedule");
errorMessage.append(" in class ");
errorMessage.append("CurveData ");
errorMessage.append("which ID has been initialized to : ");
errorMessage.append(getId());
LOGGER.error(errorMessage.toString());
LOGGER.error(e.toString(), e);
}
}
}
return;
}
/**
* Utility in charge of creating the message when the class is not
* consistent within a specific context
*
* @param minBitset
* bitset describing which CIM attributes of this class have
* to be set so that it is consistent within a
* specific subset context
* @return the message explaining what is not consistent
*/
private String getMessageForConsistency(final BitSet minBitset) {
StringBuilder message = new StringBuilder(
"Instance of \"CurveData\" of id \"");
message.append(this.getId());
message.append("\" is not consistent in this context:\n");
/*
* XOR and then AND
* The result is :
* "1" : has not been set and need to be
* "0" : has been set or is not mandatory
*/
BitSet isNotSet = new BitSet(minBitset.length());
isNotSet.or(minBitset);
// we create a copy of minBitset
isNotSet.xor(this.currentBitset);
isNotSet.and(minBitset);
if (isNotSet.get(0)) {
message.append("\t\"y1value\" needs to be set\n");
}
if (isNotSet.get(1)) {
message.append("\t\"xvalue\" needs to be set\n");
}
if (isNotSet.get(2)) {
message.append("\t\"y2value\" needs to be set\n");
}
if (isNotSet.get(3)) {
message.append("\t\"CurveSchedule\" needs to be set\n");
}
return message.toString();
}
/**
* Copy constructor
* The associations with other objects are not copied
*
* @param CurveData
* the reference to the class to copy
* @return the class constructed
*/
private CurveData(final CurveData otherCurveData) {
// TODO : check exception safe
this.copyBase(otherCurveData);
}
/**
* Constructor of the class CurveData
*/
protected CurveData() {
super.subset = Subset.Equipment;
this.minBitsets.put(Subset.StateVariables, new BitSet(4));
this.minBitsets.put(Subset.Topology, new BitSet(4));
BitSet classBitset = new BitSet(4);
classBitset.set(0);
classBitset.set(1);
classBitset.set(2);
classBitset.set(3);
this.minBitsets.put(Subset.Equipment, classBitset);
}
/**
* Utility to clear the associations of this class belonging to a
* specific subset
*
* @param subset
* the subset from which to clear the associations of this class
*/
@Override
protected void clearAssociations(final Subset subset) {
switch (subset) {
case StateVariables: {
break;
}
case Topology: {
break;
}
case Equipment: {
break;
}
default: // nothing to clear
}
}
/**
* Utility returning a copy of the "base" of this instance
* This utility does not copy the associations with other instances
*
* @return a clone of this instance
*/
public CurveData clone() {
CurveData newInstance = new CurveData(this);
CurveData newInstanceSP = newInstance;
return newInstanceSP;
}
}