Esempio n. 1
0
  /**
   * Checks for all registered job vertices if their in-/out-degree is correct.
   *
   * @return <code>null</code> if the in-/out-degree of all vertices is correct or the first job
   *     vertex whose in-/out-degree is incorrect.
   */
  public AbstractJobVertex areVertexDegreesCorrect() {

    // Check input vertices
    final Iterator<AbstractJobInputVertex> iter = getInputVertices();
    while (iter.hasNext()) {

      final AbstractJobVertex jv = iter.next();

      if (jv.getNumberOfForwardConnections() < 1 || jv.getNumberOfBackwardConnections() > 0) {
        return jv;
      }
    }

    // Check task vertices
    final Iterator<JobTaskVertex> iter2 = getTaskVertices();
    while (iter2.hasNext()) {

      final AbstractJobVertex jv = iter2.next();

      if (jv.getNumberOfForwardConnections() < 1 || jv.getNumberOfBackwardConnections() < 1) {
        return jv;
      }
    }

    // Check output vertices
    final Iterator<AbstractJobOutputVertex> iter3 = getOutputVertices();
    while (iter3.hasNext()) {

      final AbstractJobVertex jv = iter3.next();

      if (jv.getNumberOfForwardConnections() > 0 || jv.getNumberOfBackwardConnections() < 1) {
        return jv;
      }
    }

    return null;
  }