Link programming examples

The same example using XML can be found in <installdir>/samples/network/links .

How to create a network

The network is created using the network component and the data source API, as illustrated in the following code:
 /**
   * Execute the main part of the sample.
   */
  void doSample (Container container) {
   try {
      // Initialize JTGO
      // Read a deployment descriptor file to initialize JTGO services
      if (isApplet())
        IltSystem.Init(this, "deploy.xml");
      else
        IltSystem.Init("deploy.xml");

      // Create a datasource
      IltDefaultDataSource dataSource = new IltDefaultDataSource();
      fillNetwork(dataSource);

      // Create a network component
      IlpNetwork networkComponent = new IlpNetwork();

      // Connect network component to datasource
      networkComponent.setDataSource(dataSource);

      // Add view to the frame
      container.add(networkComponent);
    }
    catch(Exception e){
      e.printStackTrace();
    }
  }

How to add network elements and links to the network

The function fillNetwork creates network elements and links and adds these instances to the given data source. Then the data source is linked to the network component.
  /**
   * Adds nodes and all kinds of links to the network.
   */
  public void fillNetwork (IltDefaultDataSource dataSource) {
    // Create the network elements.
    IltNetworkElement paris;
    IltNetworkElement berlin;
    IltNetworkElement oslo;
    IltNetworkElement nwest;

    paris =
      new IltNetworkElement("Paris",
                            IltNetworkElement.Type.NE,
                            IltNetworkElement.Function.SwitchCrossConnect,
                            null,
                            new IltBellcoreObjectState());
    berlin =
      new IltNetworkElement("Berlin",
                            IltNetworkElement.Type.NE,
                            IltNetworkElement.Function.TransportCrossConnect,
                            IltNetworkElement.Family.OC12,
                            new IltBellcoreObjectState());
    oslo =
      new IltNetworkElement("Oslo",
                            IltNetworkElement.Type.NE,
                            IltNetworkElement.Function.Transport,
                            null,
                            new IltBellcoreObjectState());
    nwest =
      new IltNetworkElement("North West",
                            IltNetworkElement.Type.NMW,
                            new IltBellcoreObjectState());

    // Place the network elements at the right location while inserting
    // them in the network.
    paris.setState(IltBellcore.State.EnabledActive);
    paris.setAttributeValue(IltObject.PositionAttribute, new IlpPoint(120,
                                                                      365));
    berlin.setState(IltBellcore.State.EnabledActive);
    berlin.setAttributeValue(IltObject.PositionAttribute, new IlpPoint(300,
                                                                         250));
    oslo.setState(IltBellcore.State.EnabledActive);
    oslo.setAttributeValue(IltObject.PositionAttribute, new IlpPoint(190,
                                                                     100));
    nwest.setState(IltBellcore.State.EnabledActive);
    nwest.setAttributeValue(IltObject.PositionAttribute, new IlpPoint(37, 40));

    dataSource.addObject(paris);
    dataSource.addObject(berlin);
    dataSource.addObject(oslo);
    dataSource.addObject(nwest);

    // Add all kinds of links
    addSelfLink(dataSource, paris);
    addBiSONETLinks(dataSource, oslo, nwest);
  }

How to create a self-link

The addSelfLink method creates a self link to Paris with an associated state and an arrow. Note that in self-links the "From" and "To" nodes are the same.
/**
 * Adds a link with the given node as both its from and to end.
 */
public void addSelfLink (IltDefaultDataSource dataSource, IltObject node) {
  IltLink link = new IltLink(new IltSONETObjectState(), null);
  link.setState(IltSONET.State.Active);
  dataSource.addObject(link);
  dataSource.setLink(link.getIdentifier(), 
                     node.getIdentifier(), 
                     node.getIdentifier());
}

How to create links with BiSONET object states

The addBiSONETLinks method creates two links with an object state of type IltBiSONETObjectState. The setReverseState method is used to set the state of the link in the opposite direction.
/**
 * Adds some bi-SONET links between the given nodes.
 */
public void addBiSONETLinks (IltDefaultDataSource dataSource,
                             IltObject node1,
                             IltObject node2) {
  // Create a bi-SONET link.
  IltBiSONETObjectState biState = new IltBiSONETObjectState();
  IltLink link = new IltLink(biState);
  // Set its two states.
  biState.setState(IltSONET.State.TroubledProtected);
  biState.setReverseState(IltSONET.State.Active);
  dataSource.addObject(link);
  dataSource.setLink(link.getIdentifier(), 
                     node1.getIdentifier(),
                     node2.getIdentifier());

  IltBiSONETObjectState biState2 = new IltBiSONETObjectState();
  IltLink link2 = new IltLink(biState2);
  biState2.setState(IltSONET.State.ActiveProtecting);
  biState2.setReverseState(IltSONET.State.TroubledUnprotected);
  dataSource.addObject(link2);
  dataSource.setLink(link2.getIdentifier(), 
                       node2.getIdentifier(), 
                       node1.getIdentifier());
}