Class NFEBasicModelManipulator

  • All Implemented Interfaces:
    NFEManipulator

    public class NFEBasicModelManipulator
    extends java.lang.Object
    implements NFEManipulator
    The default implementation of NFEModelManipulator
    • Constructor Detail

      • NFEBasicModelManipulator

        public NFEBasicModelManipulator​(NFEModel model)
    • Method Detail

      • isAllowedPoint

        public boolean isAllowedPoint​(java.awt.geom.Point2D point)
        Description copied from interface: NFEManipulator
        Tells whether a point is inside the boundaries defined by the model. The boundaries are defined at the geometry descriptor when the model is created.
        Specified by:
        isAllowedPoint in interface NFEManipulator
        Parameters:
        point - a java point instance
        Returns:
        true if the point is inside the model boundaries
      • isAllowedPoint

        public boolean isAllowedPoint​(double x,
                                      double y)
        Description copied from interface: NFEManipulator
        Tells whether a point is inside the boundaries defined by the model. The boundaries are defined at the geometry descriptor when the model is created.
        Specified by:
        isAllowedPoint in interface NFEManipulator
        Parameters:
        x - the point's x ordinate
        y - the point's y ordinate
        Returns:
        true if the point is inside the model boundaries
      • isAllowedRectangle

        public boolean isAllowedRectangle​(java.awt.geom.Rectangle2D rectangle)
        Description copied from interface: NFEManipulator
        Tells whether a rectangle is inside the boundaries defined by the model. The boundaries are defined at the geometry descriptor when the model is created.
        Specified by:
        isAllowedRectangle in interface NFEManipulator
        Parameters:
        rectangle - a java rectangle instance
        Returns:
        true if the rectangle is inside the model boundaries
      • isAllowedRectangle

        public boolean isAllowedRectangle​(double x,
                                          double y,
                                          double w,
                                          double h)
        Description copied from interface: NFEManipulator
        Tells whether a rectangle is inside the boundaries defined by the model. The boundaries are defined at the geometry descriptor when the model is created.
        Specified by:
        isAllowedRectangle in interface NFEManipulator
        Parameters:
        x - the rectangle's lower left corner x ordinate
        y - the rectangle's lower left corner y ordinate
        w - the rectangle's width
        h - the rectangle's height
        Returns:
      • isValidPoint

        public boolean isValidPoint​(double x,
                                    double y)
        Description copied from interface: NFEManipulator
        Returns true if the point location is valid, false otherwise. A point location is consider invalid if the location is outside the model boundaries.
        Specified by:
        isValidPoint in interface NFEManipulator
        Parameters:
        x - the x of the point
        y - the y of the point
        Returns:
        true if the point location is valid, false otherwise
      • removedDanglingNetworkElements

        public java.util.Collection<NFENetworkElement> removedDanglingNetworkElements​(NFENetworkElement fromNetElem)
        Description copied from interface: NFEManipulator
        Removes any dangling network element connected to the given network element (including the passed network element if it is itself a dangling element). In FromScratch mode, a network element is considered a dangling element if it is a link without features or an unconnected node without features.
        Specified by:
        removedDanglingNetworkElements in interface NFEManipulator
        Parameters:
        fromNetElem - the network element from where the search begins
        Returns:
        a collection containing all the removed dangling points
      • reverseLinkDirection

        public void reverseLinkDirection​(NFELink link)
        Description copied from interface: NFEManipulator
        Changes the direction of a link by changing the order of its line ordinates
        Specified by:
        reverseLinkDirection in interface NFEManipulator
        Parameters:
        link - a link instance
      • setNetworkElementGeometry

        public void setNetworkElementGeometry​(NFENetworkElement netElem,
                                              JGeometry newGeom)
        Sets a new geometry to the specified network element. All the connected network elements' geometries are updated accordingly.
        Specified by:
        setNetworkElementGeometry in interface NFEManipulator
        Parameters:
        netElem -
        newGeom -
      • setNetworkElementsGeometries

        public void setNetworkElementsGeometries​(NFENetworkElement[] netElems,
                                                 JGeometry[] newGeoms,
                                                 boolean enforceRules,
                                                 double tolerance)
        Description copied from interface: NFEManipulator
        Changes geometries to a group of network elements. Optionally enforces rules. Tolerance is only required is enforce rules is true.
        Specified by:
        setNetworkElementsGeometries in interface NFEManipulator
        Parameters:
        netElems - An array of network elements which geometries will be changed
        newGeoms - An array of new geometries. The length of this array must be equal than the netElems array.
        enforceRules - if true, rules will be executed for the changed elements
        tolerance - tolerance used for detecting interactions if rules are enforced
      • removeFeature

        public boolean removeFeature​(NFEFeature feature)
        Description copied from interface: NFEManipulator
        Removes a feature from the model along with its feature elements and network elements
        Specified by:
        removeFeature in interface NFEManipulator
        Parameters:
        feature - a feature instance
        Returns:
        true if the feature was removed successfully
      • removeFeatureElement

        public boolean removeFeatureElement​(NFEFeatureElement featElem)
        Description copied from interface: NFEManipulator
        Removes a feature element from its feature along with the network element where the feature element is placed.
        Specified by:
        removeFeatureElement in interface NFEManipulator
        Parameters:
        featElem - a feature element instance
        Returns:
        true if the feature element was removed successfully
      • applyFeatureClass

        public void applyFeatureClass​(NFEFeature feature,
                                      NFEFeatureClass featClass)
        Description copied from interface: NFEManipulator
        Enforces all the attribute constraints defined in the feature class to the given feature
        Specified by:
        applyFeatureClass in interface NFEManipulator
        Parameters:
        feature - a feature instance
        featClass - a feature class instance
      • setFeatureActive

        public void setFeatureActive​(NFEFeature feature,
                                     boolean active)
        Description copied from interface: NFEManipulator
        Sets the feature's active property
        Specified by:
        setFeatureActive in interface NFEManipulator
        Parameters:
        feature - a feature instance
        active - the active property value
      • setFeatureBidirected

        public void setFeatureBidirected​(NFEFeature feature,
                                         boolean bidirected)
        Description copied from interface: NFEManipulator
        Sets whether a feature is bidirected or not
        Specified by:
        setFeatureBidirected in interface NFEManipulator
        Parameters:
        feature - a feature instance
        bidirected - true for bidirected
      • reverseLineFeatureDirection

        public void reverseLineFeatureDirection​(NFEFeature lineFeature)
        Description copied from interface: NFEManipulator
        Reverse the direction of all the links containing feature elements of the given feature
        Specified by:
        reverseLineFeatureDirection in interface NFEManipulator
        Parameters:
        lineFeature - a line feature instance
      • updateLinkGeometry

        public void updateLinkGeometry​(NFELink link)
        Updates the link's geometry so reflect the position of its start and end points. If the link's geometry has not been set (it's null), it creates a straight line from the start to the end node.
        Specified by:
        updateLinkGeometry in interface NFEManipulator
        Parameters:
        link -
      • createFeature

        public NFEFeature createFeature​(NFEFeatureClass featClass)
        Description copied from interface: NFEManipulator
        Creates an empty Feature (with no Feature Element) of the specified Feature Class
        Specified by:
        createFeature in interface NFEManipulator
        Parameters:
        featClass - A Feature Class instance. It is expected to be a well formed instance, containing a reference to the Feature Layer it belongs to.
        Returns:
        a new empty feature instance
      • createPointFeature

        public NFEFeature createPointFeature​(NFEFeatureClass featClass,
                                             JGeometry pointGeom,
                                             boolean enforceRules,
                                             double tolerance)
        Creates a new feature of the given feature class, containing only a PON feature element and its corresponding node.
        Specified by:
        createPointFeature in interface NFEManipulator
        Parameters:
        featClass -
        pointGeom -
        enforceRules - if true, rules will be executed for this new point feature
        tolerance - tolerance used for detecting interactions if rules are enforced
        Returns:
      • createStandalonePointFeature

        public NFEFeature createStandalonePointFeature​(NFEFeatureClass featClass,
                                                       JGeometry pointGeom)
        Description copied from interface: NFEManipulator
        Creates a new feature of the given feature class, containing only a PON feature element and its corresponding node. Neither, the feature or the network element are added to a feature layer nor the network
        Specified by:
        createStandalonePointFeature in interface NFEManipulator
        Parameters:
        featClass - a point feature class
        pointGeom - a java point instance
        Returns:
      • createLineFeature

        public NFEFeature createLineFeature​(NFEFeatureClass featClass,
                                            JGeometry lineGeom,
                                            boolean enforceRules,
                                            double tolerance)
        Creates a new line feature and its corresponding feature element(s) and network elements. If the feature class contains predefined point features they are created too. Feature elements are created accordingly.
        Specified by:
        createLineFeature in interface NFEManipulator
        Parameters:
        featClass -
        lineGeom -
        enforceRules - whether rules must be enforced after creating the feature
        tolerance - tolerance used for detecting interactions if rules are enforced
        Returns:
      • getAdjacentFeatureElements

        public java.util.Collection<NFEFeatureElement> getAdjacentFeatureElements​(NFEFeatureElement featElem,
                                                                                  int depth)
        Description copied from interface: NFEManipulator
        Gets all the feature elements connected to the given feature element
        Specified by:
        getAdjacentFeatureElements in interface NFEManipulator
        Parameters:
        featElem - a feature element
        depth - for how many levels connected elements must be retrieved
        Returns:
        a collection of connected feature elements
      • createNode

        public NFENode createNode​(double[] pointOrds)
        Description copied from interface: NFEManipulator
        Creates a new node. The node is added automatically to the network
        Specified by:
        createNode in interface NFEManipulator
        Parameters:
        pointOrds - a point ordinates.
        Returns:
        a new node instance
      • createNode

        public NFENode createNode​(JGeometry geom)
        Description copied from interface: NFEManipulator
        Creates a new node. The node is added automatically to the network
        Specified by:
        createNode in interface NFEManipulator
        Parameters:
        geom - a point geometry
        Returns:
        a new node instance
      • createLink

        public NFELink createLink​(NFENode startNode,
                                  NFENode endNode)
        Description copied from interface: NFEManipulator
        Creates a new link. The links geometry will be a straight line from startNode to endNode. The link is added automatically to the network.
        Specified by:
        createLink in interface NFEManipulator
        Parameters:
        startNode - the link's start node. The node must exist in the network.
        endNode - the link's end node. The node must exist in the network.
        Returns:
        a new link instance
      • createLink

        public NFELink createLink​(NFENode startNode,
                                  NFENode endNode,
                                  JGeometry geom)
        Description copied from interface: NFEManipulator
        Creates a new link. The link is added automatically to the network.
        Specified by:
        createLink in interface NFEManipulator
        Parameters:
        startNode - the link's start node. The node must exist in the network.
        endNode - the link's end node. The node must exist in the network.
        geom - a line string geometry
        Returns:
        a new link instance
      • createPONFeatureElement

        public NFEFeatureElement createPONFeatureElement​(NFENode node,
                                                         long featureLayerId,
                                                         long sequence)
        Description copied from interface: NFEManipulator
        Creates a new feature containing one PointOnNode feature element. The feature is added automatically to its feature layer.
        Specified by:
        createPONFeatureElement in interface NFEManipulator
        Parameters:
        node - the underlying node
        featureLayerId - the ID of feature Layer where the feature belongs
        sequence - the feature element's sequence number
        Returns:
        a new feature element instance
      • createPOLFeatureElement

        public NFEFeatureElement createPOLFeatureElement​(NFELink link,
                                                         double pos,
                                                         long featureLayerId,
                                                         long sequence)
        Description copied from interface: NFEManipulator
        Creates a new feature containing one PointOnLink feature element. The feature is added automatically to its feature layer.
        Specified by:
        createPOLFeatureElement in interface NFEManipulator
        Parameters:
        link - the underlying link
        pos - position of the POL feature element. Relative to the link's length
        featureLayerId - the ID of feature Layer where the feature belongs
        sequence - the feature element's sequence number
        Returns:
        a new feature element instance
      • createLineFeatureElement

        public NFEFeatureElement createLineFeatureElement​(NFELink link,
                                                          double startPos,
                                                          double endPos,
                                                          long featureLayerId,
                                                          long sequence)
        Description copied from interface: NFEManipulator
        Creates a new feature containing one line feature element. The feature is added automatically to its feature layer.
        Specified by:
        createLineFeatureElement in interface NFEManipulator
        Parameters:
        link - the underlying link
        startPos - start position of the line feature element. Relative to the link's length
        endPos - end position of the line feature element. Relative to the link's length
        featureLayerId - the ID of the feature layer the feature belongs
        sequence - the feature element's sequence number
        Returns:
        a new feature element instance
      • enforceRules

        public void enforceRules​(java.util.Collection<NFEFeatureElement> featElems,
                                 double tolerance)
        Description copied from interface: NFEManipulator
        Detect interactions and enforces rules if needed for the given feature elements
        Specified by:
        enforceRules in interface NFEManipulator
        Parameters:
        featElems - a collection of feature elements
        tolerance - tolerance use for detecting interactions