Commit 1ce3df3e authored by Dominique Marcadet's avatar Dominique Marcadet

Modify doResolveLinks() methods

Main changes:
- avoid possible NPE,
- use standards EMF getters,
- use @NonNull
- add some methods for common access
parent 8c3459ef
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
......@@ -14,5 +14,6 @@ Export-Package: fr.centralesupelec.edf.riseclipse.iec61850.scl,
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;visibility:=reexport,
fr.centralesupelec.edf.riseclipse.main
fr.centralesupelec.edf.riseclipse.main,
org.eclipse.jdt.annotation
Bundle-ActivationPolicy: lazy
......@@ -23,6 +23,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.scl.Association;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.ClientLN;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataSet;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataTypeTemplates;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.ExtRef;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.FCDA;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.IEDName;
......@@ -46,6 +47,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
import org.eclipse.emf.ecore.util.EObjectWithInverseEList;
import org.eclipse.emf.ecore.util.InternalEList;
import org.eclipse.jdt.annotation.NonNull;
/**
* <!-- begin-user-doc -->
......@@ -1318,9 +1320,9 @@ public abstract class AnyLNImpl extends UnNamingImpl implements AnyLN {
// lnClass The LN class according to IEC 61850-7-x
// inst The LN instance number identifying this LN – an unsigned integer
// Resolve only if attribute has been read
// Cannot use isSetLnType() Here
if( !lnTypeESet ) return;
if( getLnType() == null ) return;
DataTypeTemplates dtt = get_DataTypeTemplates();
if( dtt == null ) return;
// find an LNodeType with
// LNodeType.id == AnyLN.lnType
......@@ -1328,7 +1330,7 @@ public abstract class AnyLNImpl extends UnNamingImpl implements AnyLN {
@Override
public Boolean caseLNodeType( LNodeType object ) {
return object.getId().equals( getLnType() );
return getLnType().equals( object.getId() );
}
@Override
......@@ -1338,22 +1340,22 @@ public abstract class AnyLNImpl extends UnNamingImpl implements AnyLN {
};
List< LNodeType > res = shallowSearchObjects( getSCLRoot().getDataTypeTemplates().getLNodeType(), s );
List< LNodeType > res = shallowSearchObjects( dtt.getLNodeType(), s );
String mess = "LNodeType( id = " + getLnType() + ", lnClass = " + getLnClass() + " ) for AnyLN on line "
+ getLineNumber() + " ( inst = " + getInst() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
setRefersToLNodeType( res.get( 0 ) );
if( ( lnClass != null ) && !lnClass.equals( refersToLNodeType.getLnClass() ) ) {
if( ( getLnClass() != null ) && ! getLnClass().equals( refersToLNodeType.getLnClass() ) ) {
AbstractRiseClipseConsole.getConsole().error( "lnClass in " + mess + " is not " + lnClass );
}
}
}
} //AnyLNImpl
......@@ -988,8 +988,11 @@ public class AssociationImpl extends BaseElementImpl implements Association {
// prefix The LN prefix
// lnInst The instance number of the client LN
// Resolve only if attribute has been read
if( !isSetIedName() ) return;
if( getIedName() == null ) return;
if( getLdInst() == null ) return;
if( getLnClass() == null ) return;
List< IED > ieds = get_IEDs();
if( ieds == null ) return;
// find an IED with
// IED.name == Association.iedName
......@@ -997,7 +1000,7 @@ public class AssociationImpl extends BaseElementImpl implements Association {
@Override
public Boolean caseIED( IED object ) {
return object.getName().equals( getIedName() );
return getIedName().equals( object.getName() );
}
@Override
......@@ -1008,20 +1011,18 @@ public class AssociationImpl extends BaseElementImpl implements Association {
};
IED ied = null;
List< IED > res = shallowSearchObjects( getSCLRoot().getIED(), s );
List< IED > res = shallowSearchObjects( ieds, s );
String mess = "IED( name = " + getIedName() + " ) for Association on line " + getLineNumber() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
ied = res.get( 0 );
}
// The following is copy/paste from ExtRef/FCDA
// TODO: factor out ?
......@@ -1032,7 +1033,7 @@ public class AssociationImpl extends BaseElementImpl implements Association {
@Override
public Boolean caseLDevice( LDevice object ) {
return object.getInst().equals( getLdInst() );
return getLdInst().equals( object.getInst() );
}
@Override
......@@ -1050,14 +1051,12 @@ public class AssociationImpl extends BaseElementImpl implements Association {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess1 );
return;
}
else if( res1.size() > 1 ) {
if( res1.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess1 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess2 );
lDevice = res1.get( 0 );
}
if( "LLN0".equals( getLnClass() ) ) {
if( lDevice.getLN0() == null ) {
......@@ -1066,16 +1065,12 @@ public class AssociationImpl extends BaseElementImpl implements Association {
+ " )" );
return;
}
else {
setRefersToAnyLN( lDevice.getLN0() );
}
}
else {
// Resolve only if attribute has been read
if( !lnClassESet ) return;
if( !lnInstESet ) return;
if( getLnInst() == null ) return;
// prefix is optional
//if( ! prefixESet ) return;
//if( getPrefix() == null ) return;
// find inside an LN with
// LN.lnClass == Association.lnClass
......@@ -1085,9 +1080,9 @@ public class AssociationImpl extends BaseElementImpl implements Association {
@Override
public Boolean caseLN( LN object ) {
if( object.getLnClass().equals( getLnClass() ) && object.getInst().equals( getLnInst() ) ) {
if( object.getPrefix() == null ) return getPrefix() == null;
return object.getPrefix().equals( getPrefix() );
if( getLnClass().equals( object.getLnClass() ) && getLnInst().equals( object.getInst() ) ) {
if( getPrefix() == null ) return object.getPrefix() == null;
return getPrefix().equals( object.getPrefix() );
}
return false;
}
......@@ -1106,15 +1101,13 @@ public class AssociationImpl extends BaseElementImpl implements Association {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess2 );
return;
}
else if( res2.size() > 1 ) {
if( res2.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess2 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess3 );
setRefersToAnyLN( res2.get( 0 ) );
}
}
}
} //AssociationImpl
......@@ -22,6 +22,7 @@ import java.util.List;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.BDA;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DAType;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataTypeTemplates;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.EnumType;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.util.SclSwitch;
......@@ -225,8 +226,9 @@ public class BDAImpl extends AbstractDataAttributeImpl implements BDA {
// TODO: put in AbstractDataType
// Resolve only if attribute has been read
if( !typeESet ) return;
if( getType() == null ) return;
DataTypeTemplates dtt = get_DataTypeTemplates();
if( dtt == null ) return;
if( "Enum".equals( getBType() ) ) {
......@@ -236,7 +238,7 @@ public class BDAImpl extends AbstractDataAttributeImpl implements BDA {
@Override
public Boolean caseEnumType( EnumType object ) {
return object.getId().equals( getType() );
return getType().equals( object.getId() );
}
@Override
......@@ -246,19 +248,19 @@ public class BDAImpl extends AbstractDataAttributeImpl implements BDA {
};
List< EnumType > res = shallowSearchObjects( getSCLRoot().getDataTypeTemplates().getEnumType(), s );
List< EnumType > res = shallowSearchObjects( dtt.getEnumType(), s );
String mess = "EnumType( id = " + getType() + " ) for BDA on line " + getLineNumber() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
setRefersToEnumType( res.get( 0 ) );
}
}
else if( "Struct".equals( getBType() ) ) {
// find an DAType with
......@@ -267,7 +269,7 @@ public class BDAImpl extends AbstractDataAttributeImpl implements BDA {
@Override
public Boolean caseDAType( DAType object ) {
return object.getId().equals( getType() );
return getType().equals( object.getId() );
}
@Override
......@@ -277,19 +279,19 @@ public class BDAImpl extends AbstractDataAttributeImpl implements BDA {
};
List< DAType > res = shallowSearchObjects( getSCLRoot().getDataTypeTemplates().getDAType(), s );
List< DAType > res = shallowSearchObjects( dtt.getDAType(), s );
String mess = "DAType( id = " + getType() + " ) for BDA on line " + getLineNumber() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
// TODO
//daType = res.get( 0 );
}
}
}
} //BDAImpl
......@@ -988,8 +988,11 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
// lnInst The instance id of this LN instance of below LN class in the IED
// desc optional descriptive text, e.g. about purpose of the client
// Resolve only if attribute has been read
if( ! isSetIedName() ) return;
if( getIedName() == null ) return;
if( getLdInst() == null ) return;
if( getLnClass() == null ) return;
List< IED > ieds = get_IEDs();
if( ieds == null ) return;
// find an IED with
// IED.name == ClientLN.iedName
......@@ -997,7 +1000,7 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
@Override
public Boolean caseIED( IED object ) {
return object.getName().equals( getIedName() );
return getIedName().equals( object.getName() );
}
@Override
......@@ -1008,20 +1011,18 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
};
IED ied = null;
List< IED > res = shallowSearchObjects( getSCLRoot().getIED(), s );
List< IED > res = shallowSearchObjects( ieds, s );
String mess = "IED( name = " + getIedName() + " ) for ClientLN on line " + getLineNumber() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
ied = res.get( 0 );
}
// The following is copy/paste from ExtRef/FCDA
// TODO: factor out ?
......@@ -1032,7 +1033,7 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
@Override
public Boolean caseLDevice( LDevice object ) {
return object.getInst().equals( getLdInst() );
return getLdInst().equals( object.getInst() );
}
@Override
......@@ -1050,14 +1051,12 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess1 );
return;
}
else if( res1.size() > 1 ) {
if( res1.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess1 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess2 );
lDevice = res1.get( 0 );
}
if( "LLN0".equals( getLnClass() ) ) {
if( lDevice.getLN0() == null ) {
......@@ -1065,16 +1064,12 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
+ " ( in ied = " + ied.getName() + " )" );
return;
}
else {
setRefersToAnyLN( lDevice.getLN0() );
}
}
else {
// Resolve only if attribute has been read
if( !lnClassESet ) return;
if( !lnInstESet ) return;
if( getLnInst() == null ) return;
// prefix is optional
//if( ! prefixESet ) return;
//if( getPrefix() == null ) return;
// find inside an LN with
// LN.lnClass == ClientLN.lnClass
......@@ -1084,7 +1079,7 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
@Override
public Boolean caseLN( LN object ) {
if( object.getLnClass().equals( getLnClass() ) && object.getInst().equals( getLnInst() ) ) {
if( getLnClass().equals( object.getLnClass() ) && getLnInst().equals( object.getInst() ) ) {
if( object.getPrefix() == null ) return getPrefix() == null;
return object.getPrefix().equals( getPrefix() );
}
......@@ -1105,15 +1100,13 @@ public class ClientLNImpl extends ExplicitLinkResolverImpl implements ClientLN {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess2 );
return;
}
else if( res2.size() > 1 ) {
if( res2.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess2 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess3 );
setRefersToAnyLN( res2.get( 0 ) );
}
}
}
} //ClientLNImpl
......@@ -937,9 +937,10 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP {
// apName a name identifying this access point within the IED
// desc some descriptive text for this access point at this subnetwork
// Resolve only if attribute has been read
// Cannot use isSetApName() Here
if( !apNameESet ) return;
if( getIedName() == null ) return;
if( getApName() == null ) return;
List< IED > ieds = get_IEDs();
if( ieds == null ) return;
// find an IED with
// IED.name == ConnectedAP.iedName
......@@ -947,7 +948,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP {
@Override
public Boolean caseIED( IED object ) {
return object.getName().equals( getIedName() );
return getIedName().equals( object.getName() );
}
@Override
......@@ -957,7 +958,7 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP {
};
List< IED > res1 = shallowSearchObjects( getSCLRoot().getIED(), s1 );
List< IED > res1 = shallowSearchObjects( ieds, s1 );
IED ied = null;
String mess1 = "IED( name = " + getIedName() + " ) for ConnectedAP on line " + getLineNumber() + " ( apName = "
+ getApName() + " )";
......@@ -965,20 +966,18 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess1 );
return;
}
else if( res1.size() > 1 ) {
if( res1.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess1 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
ied = res1.get( 0 );
}
SclSwitch< Boolean > s2 = new SclSwitch< Boolean >() {
@Override
public Boolean caseAccessPoint( AccessPoint object ) {
return object.getName().equals( getApName() );
return getApName().equals( object.getName() );
}
@Override
......@@ -995,14 +994,12 @@ public class ConnectedAPImpl extends UnNamingImpl implements ConnectedAP {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess2 );
return;
}
else if( res2.size() > 1 ) {
if( res2.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess2 );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
setRefersToAccessPoint( res2.get( 0 ));
}
}
} //ConnectedAPImpl
......@@ -740,20 +740,29 @@ public abstract class ControlBlockImpl extends UnNamingImpl implements ControlBl
// TODO: update comment
// Assumption : we need both an ied name and a ld instance to uniquely identify a LDevice.
// We will use the iedName provided by the enclosing connectedAP.
if( getLdInst() == null ) return;
IED ied = null;
// TODO: put connectedAP in ControlBlock
if( this instanceof GSE ) {
( ( GSE ) this ).getConnectedAP().resolveLinks();
ied = ( ( GSE ) this ).getConnectedAP().getRefersToAccessPoint().getIED();
GSE gse = ( ( GSE ) this );
if( gse.getConnectedAP() == null ) return;
gse.getConnectedAP().resolveLinks();
if( gse.getConnectedAP().getRefersToAccessPoint() == null ) return;
ied = gse.getConnectedAP().getRefersToAccessPoint().getIED();
}
else if( this instanceof SMV ) {
SMV smv = ( ( SMV ) this );
if( smv.getConnectedAP() == null ) return;
smv.getConnectedAP().resolveLinks();
if( smv.getConnectedAP().getRefersToAccessPoint() == null ) return;
ied = ( ( SMV ) this ).getConnectedAP().getRefersToAccessPoint().getIED();
}
else {
( ( SMV ) this ).getConnectedAP().resolveLinks();
ied = ( ( SMV ) this ).getConnectedAP().getRefersToAccessPoint().getIED();
return;
}
// Resolve only if attribute has been read
// Cannot use isSetLdInst() Here
if( !ldInstESet ) return;
if( ied == null ) return;
// find an LDevice with
// LDevice.inst == ControlBlock.ldInst
......@@ -761,7 +770,7 @@ public abstract class ControlBlockImpl extends UnNamingImpl implements ControlBl
@Override
public Boolean caseLDevice( LDevice object ) {
return object.getInst().equals( getLdInst() );
return getLdInst().equals( object.getInst() );
}
@Override
......@@ -776,18 +785,16 @@ public abstract class ControlBlockImpl extends UnNamingImpl implements ControlBl
+ " ( cbName = " + getCbName() + " )";
if( res1.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess1 );
return;
}
else if( res1.size() > 1 ) {
if( res1.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess1 );
return;
}
else {
// AbstractRiseClipseConsole.getConsole().info( "found " + mess );
setRefersToLDevice( res1.get( 0 ) );
}
// Resolve only if attribute has been read
// Cannot use isSetCbName() Here
if( !cbNameESet ) return;
if( getCbName() == null ) return;
// Find a GSEControl inside LN0 of LDevice with
// GSEControl.name == ControlBlock.bName
......@@ -795,7 +802,7 @@ public abstract class ControlBlockImpl extends UnNamingImpl implements ControlBl
@Override
public Boolean caseControlWithIEDName( ControlWithIEDName object ) {
return object.getName().equals( getCbName() );
return getCbName().equals( object.getName() );
}
@Override
......@@ -805,28 +812,27 @@ public abstract class ControlBlockImpl extends UnNamingImpl implements ControlBl
};
if( isSetRefersToLDevice() ) {
List< ControlWithIEDName > l2 = Collections.< ControlWithIEDName > unmodifiableList( getRefersToLDevice()
.getLN0().getGSEControl() );
if( getRefersToLDevice().getLN0() == null ) return;
List< ControlWithIEDName > l2 = Collections.< ControlWithIEDName > unmodifiableList(
getRefersToLDevice().getLN0().getGSEControl() );
List< ControlWithIEDName > res2 = shallowSearchObjects( l2, s2 );
if( res2.isEmpty() ) {
l2 = Collections.< ControlWithIEDName > unmodifiableList( getRefersToLDevice().getLN0()
.getSampledValueControl() );
l2 = Collections.< ControlWithIEDName > unmodifiableList(
getRefersToLDevice().getLN0().getSampledValueControl() );
res2 = shallowSearchObjects( l2, s2 );
}
String mess2 = "ControlWithIEDName( name = " + getCbName() + " ) for ControlBlock on line "
+ getLineNumber() + " ( ldInst = " + getLdInst() + " )";
if( res2.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess2 );
return;
}
else if( res2.size() > 1 ) {
if( res2.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess2 );
return;
}
else {
// AbstractRiseClipseConsole.getConsole().info( "found " + mess2 );
setRefersToControlWithIEDName( res2.get( 0 ) );
}
}
}
} //ControlBlockImpl
......@@ -468,9 +468,8 @@ public abstract class ControlImpl extends UnNamingImpl implements Control {
// datSet The name of the data set to be sent by the report control block; datSet should only be missing within an ICD-File,
// or to indicate an unused control block. The referenced data set must be in the same LN as the control block.
// Resolve only if attribute has been read
// Cannot use isSetDatSet() Here
if( !datSetESet ) return;
if( getDatSet() == null ) return;
if( getAnyLN() == null ) return;
// find an DataSet with
// DataSet.name == Control.datSet
......@@ -478,7 +477,7 @@ public abstract class ControlImpl extends UnNamingImpl implements Control {
@Override
public Boolean caseDataSet( DataSet object ) {
return object.getName().equals( getDatSet() );
return getDatSet().equals( object.getName() );
}
@Override
......@@ -493,15 +492,15 @@ public abstract class ControlImpl extends UnNamingImpl implements Control {
+ getName() + " )";
if( res.isEmpty() ) {
AbstractRiseClipseConsole.getConsole().error( "cannot find " + mess );
return;
}
else if( res.size() > 1 ) {
if( res.size() > 1 ) {
AbstractRiseClipseConsole.getConsole().error( "found several " + mess );
return;
}
else {
//AbstractRiseClipseConsole.getConsole().info( "found " + mess );
setRefersToDataSet( res.get( 0 ) );
}
}
// TODO: redesign this
public AnyLN getAnyLN() {
......
......@@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.scl.impl;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DA;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DAType;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOType;
import fr.centralesupelec.edf.riseclipse.iec61850.scl.DataTypeTemplates;