From 758fa2d1cb61a3b934cc11ffc63d5f039b1430ab Mon Sep 17 00:00:00 2001 From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr> Date: Wed, 29 May 2019 10:19:07 +0200 Subject: [PATCH] use NsIdentification while getting stream of nsd objects --- .../iec61850/nsd/util/NsdResourceSetImpl.java | 153 ++++++++++++++++-- 1 file changed, 144 insertions(+), 9 deletions(-) diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java index 48b94cc..e273a7a 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java @@ -31,7 +31,6 @@ import org.eclipse.emf.ecore.resource.Resource; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations; -import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicTypes; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC; @@ -281,7 +280,7 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { * Within an ServiceNS, there shall not be two ServiceCDC sub-elements with same name and (if defined) variant. */ - public Stream< LNClass > getLNClassStream() { + public Stream< LNClass > getAllLNClassStream() { Stream< LNClass > lnClassStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -296,7 +295,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return lnClassStream; } - public Stream< Abbreviation > getAbbreviationStream() { + public Stream< LNClass > getLNClassStream( NsIdentification identification ) { + Stream< LNClass > lnClassStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + LNClasses lnClasses = ns.getLNClasses(); + if( lnClasses != null ) { + Stream< LNClass > tmp = Stream.concat( lnClassStream, lnClasses.getLNClass().stream() ); + lnClassStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< LNClass > tmp = Stream.concat( lnClassStream, getLNClassStream( new NsIdentification( ns.getDependsOn() ))); + lnClassStream = tmp; + } + } + return lnClassStream; + } + + public Stream< Abbreviation > getAllAbbreviationStream() { Stream< Abbreviation > abbreviationStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -309,7 +325,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return abbreviationStream; } - public Stream< Enumeration > getEnumerationStream() { + public Stream< Abbreviation > getAbbreviationStream( NsIdentification identification ) { + Stream< Abbreviation > abbreviationStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + Abbreviations abbreviations = ns.getAbbreviations(); + if( abbreviations != null ) { + Stream< Abbreviation > tmp = Stream.concat( abbreviationStream, abbreviations.getAbbreviation().stream() ); + abbreviationStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< Abbreviation > tmp = Stream.concat( abbreviationStream, getAbbreviationStream( new NsIdentification( ns.getDependsOn() ))); + abbreviationStream = tmp; + } + } + return abbreviationStream; + } + + public Stream< Enumeration > getAllEnumerationStream() { Stream< Enumeration > enumerationStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -322,7 +355,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return enumerationStream; } - public Stream< CDC > getCDCStream() { + public Stream< Enumeration > getEnumerationStream( NsIdentification identification ) { + Stream< Enumeration > enumerationStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + Enumerations enumerations = ns.getEnumerations(); + if( enumerations != null ) { + Stream< Enumeration > tmp = Stream.concat( enumerationStream, enumerations.getEnumeration().stream() ); + enumerationStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< Enumeration > tmp = Stream.concat( enumerationStream, getEnumerationStream( new NsIdentification( ns.getDependsOn() ))); + enumerationStream = tmp; + } + } + return enumerationStream; + } + + public Stream< CDC > getAllCDCStream() { Stream< CDC > cdcStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -335,7 +385,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return cdcStream; } - public Stream< ConstructedAttribute > getConstructedAttributeStream() { + public Stream< CDC > getCDCStream( NsIdentification identification ) { + Stream< CDC > cdcStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + CDCs cdcs = ns.getCDCs(); + if( cdcs != null ) { + Stream< CDC > tmp = Stream.concat( cdcStream, cdcs.getCDC().stream() ); + cdcStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< CDC > tmp = Stream.concat( cdcStream, getCDCStream( new NsIdentification( ns.getDependsOn() ))); + cdcStream = tmp; + } + } + return cdcStream; + } + + public Stream< ConstructedAttribute > getAllConstructedAttributeStream() { Stream< ConstructedAttribute > constructedAttributeStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -348,7 +415,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return constructedAttributeStream; } - public Stream< BasicType > getBasicTypeStream() { + public Stream< ConstructedAttribute > getConstructedAttributeStream( NsIdentification identification ) { + Stream< ConstructedAttribute > constructedAttributeStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + ConstructedAttributes constructedAttributes = ns.getConstructedAttributes(); + if( constructedAttributes != null ) { + Stream< ConstructedAttribute > tmp = Stream.concat( constructedAttributeStream, constructedAttributes.getConstructedAttribute().stream() ); + constructedAttributeStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< ConstructedAttribute > tmp = Stream.concat( constructedAttributeStream, getConstructedAttributeStream( new NsIdentification( ns.getDependsOn() ))); + constructedAttributeStream = tmp; + } + } + return constructedAttributeStream; + } + + public Stream< BasicType > getAllBasicTypeStream() { Stream< BasicType > basicTypeStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -361,7 +445,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return basicTypeStream; } - public Stream< FunctionalConstraint > getFunctionalConstraintStream() { + public Stream< BasicType > getBasicTypeStream( NsIdentification identification ) { + Stream< BasicType > basicTypeStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + BasicTypes basicTypes = ns.getBasicTypes(); + if( basicTypes != null ) { + Stream< BasicType > tmp = Stream.concat( basicTypeStream, basicTypes.getBasicType().stream() ); + basicTypeStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< BasicType > tmp = Stream.concat( basicTypeStream, getBasicTypeStream( new NsIdentification( ns.getDependsOn() ))); + basicTypeStream = tmp; + } + } + return basicTypeStream; + } + + public Stream< FunctionalConstraint > getAllFunctionalConstraintStream() { Stream< FunctionalConstraint > functionalConstraintStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -374,7 +475,24 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return functionalConstraintStream; } - public Stream< PresenceCondition > getPresenceConditionStream() { + public Stream< FunctionalConstraint > getFunctionalConstraintStream( NsIdentification identification ) { + Stream< FunctionalConstraint > functionalConstraintStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + FunctionalConstraints functionalConstraints = ns.getFunctionalConstraints(); + if( functionalConstraints != null ) { + Stream< FunctionalConstraint > tmp = Stream.concat( functionalConstraintStream, functionalConstraints.getFunctionalConstraint().stream() ); + functionalConstraintStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< FunctionalConstraint > tmp = Stream.concat( functionalConstraintStream, getFunctionalConstraintStream( new NsIdentification( ns.getDependsOn() ))); + functionalConstraintStream = tmp; + } + } + return functionalConstraintStream; + } + + public Stream< PresenceCondition > getAllPresenceConditionStream() { Stream< PresenceCondition > presenceConditionStream = Stream.empty(); Iterator< NS > it = nsdResources.values().iterator(); while( it.hasNext() ) { @@ -387,6 +505,23 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { return presenceConditionStream; } + public Stream< PresenceCondition > getPresenceConditionStream( NsIdentification identification ) { + Stream< PresenceCondition > presenceConditionStream = Stream.empty(); + NS ns = getNS( identification ); + if( ns != null ) { + PresenceConditions presenceConditions = ns.getPresenceConditions(); + if( presenceConditions != null ) { + Stream< PresenceCondition > tmp = Stream.concat( presenceConditionStream, presenceConditions.getPresenceCondition().stream() ); + presenceConditionStream = tmp; + } + if( ns.getDependsOn() != null ) { + Stream< PresenceCondition > tmp = Stream.concat( presenceConditionStream, getPresenceConditionStream( new NsIdentification( ns.getDependsOn() ))); + presenceConditionStream = tmp; + } + } + return presenceConditionStream; + } + public Doc findDoc( NsIdentification identification, String id ) { for( NSDoc nsdoc : nsdocResources.values() ) { Optional< Doc > doc = nsdoc -- GitLab