/**
   * controlla ThreadElement
   *
   * @param eName tag da controllare
   * @param attrs Attributi
   */
  private void createThreadElement(String eName, Attributes attrs) {
    // thread element
    if (bThreadElement) {

      if (bListaStato) {
        if (!bElementoStato) {
          tipo = Integer.parseInt(attrs.getValue(Tag.att_EST_tipo));
          id = util.strToId(attrs.getValue(Tag.att_EST_id));
          nome = attrs.getValue(Tag.att_EST_nome);
          bElementoStato = true;
          return;
        }
        if (eName.equals(Tag.onEntryCode)) {

          bOnEntryCode = true;
          return;
        }
        if (eName.equals(Tag.onExitCode)) {

          bOnExitCode = true;
          return;
        }
      }

      // sto nei messaggi
      if (bListaMessaggio) {
        if (!bElementoMessaggio) {
          // primo elemento messaggio incontrato
          tipo = Integer.parseInt(attrs.getValue(Tag.att_EME_tipo));
          id = util.strToId(attrs.getValue(Tag.att_EME_id));
          nome = attrs.getValue(Tag.att_EME_nome);
          modality = Integer.parseInt(attrs.getValue(Tag.att_EME_sendReceive));
          flussodiretto = util.strToBool(attrs.getValue(Tag.att_EME_flussodiretto));
          rff = Integer.parseInt(attrs.getValue(Tag.att_EME_rff));
          bElementoMessaggio = true;
          return;
        }

        if (eName.equals(Tag.elementoStatoFrom)) {
          idStatoFrom = util.strToId(attrs.getValue(Tag.att_ESFrom_idref));
          return;
        }

        if (eName.equals(Tag.elementoStatoTo)) {
          idStatoTo = util.strToId(attrs.getValue(Tag.att_ESTo_idref));
          return;
        }

        if (eName.equals(Tag.guard)) {
          bGuard = true;
          return;
        }

        if (eName.equals(Tag.parametri)) {
          parameters = new LinkedList();
          bParameters = true;
          return;
        }

        if (eName.equals(Tag.elementoParam)) {
          bElementoParam = true;
          return;
        }

        if (eName.equals(Tag.operations)) {
          bOperations = true;
          return;
        }
      }

      if (eName.equals(Tag.listaStato)) {
        bListaStato = true;
        return;
      }

      if (eName.equals(Tag.listaMessaggio)) {
        bListaMessaggio = true;
        return;
      }
    } // fine thread Element

    // preleva gli attributi di threadElement e lo costruisce
    if (eName.equals(Tag.threadElement)) {
      bThreadElement = true;
      if (plugData != null) {
        listaThread = plugData.getListaDP().getListaThread(idProcessoDP);

        threadElement = new ThreadElement(attrs.getValue(Tag.att_TE_nome), listaThread, plugData);
        threadElement.setNumStato(new Long(attrs.getValue(Tag.att_TE_numStato)).longValue());
        listaThread.add(threadElement);
      }
      return;
    }

    // preleva il riferimento al processo
    if (eName.equals(Tag.listaThread)) {
      idProcessoDP = util.strToId(attrs.getValue(Tag.att_LT_processo));
      return;
    }
  }
  public Object[] getList(SchemaEntry schemaEntry) {

    String elementName = schemaEntry.getElementName();
    String elementParentName = schemaEntry.getElementParentName();

    Object parentInstanceElement = null;
    if (schemaEntry.getParent() != null)
      parentInstanceElement = schemaEntry.getParent().getInstanceElement();

    if ((elementName.compareTo(Tag.listaThread) == 0)
        && (elementParentName.compareTo(Tag.listaDP) == 0)) {

      ArrayList result = new ArrayList();
      ListaDP listaDp = ((ListaDP) parentInstanceElement);

      for (int i = 0; i < listaDp.size(); i++) {
        result.add(listaDp.get(i));
      }
      return (Object[]) result.toArray(new Object[result.size()]);
    }

    if ((elementName.compareTo(Tag.threadElement) == 0)
        && (elementParentName.compareTo(Tag.listaThread) == 0)) {

      ArrayList result = new ArrayList();
      ListaThread listaThread = ((ListaThread) parentInstanceElement);

      Iterator ite = listaThread.iterator();
      while (ite.hasNext()) {
        ThreadElement te = (ThreadElement) ite.next();
        result.add(te);
      }
      return (Object[]) result.toArray(new Object[result.size()]);
    }

    if ((elementName.compareTo(Tag.elementoStato) == 0)
        && (elementParentName.compareTo(Tag.listaStato) == 0)) {

      ArrayList result = new ArrayList();

      ListaStato listaStato = ((ListaStato) parentInstanceElement);
      Iterator ite = listaStato.iterator();
      while (ite.hasNext()) {
        ElementoStato es = (ElementoStato) ite.next();
        result.add(es);
      }
      return (Object[]) result.toArray(new Object[result.size()]);
    }

    if ((elementName.compareTo(Tag.elementoMessaggio) == 0)
        && (elementParentName.compareTo(Tag.listaMessaggio) == 0)) {

      ArrayList result = new ArrayList();

      ListaMessaggio listaMessaggio = ((ListaMessaggio) parentInstanceElement);
      Iterator ite = listaMessaggio.iterator();
      while (ite.hasNext()) {
        ElementoMessaggio em = (ElementoMessaggio) ite.next();
        result.add(em);
      }
      return (Object[]) result.toArray(new Object[result.size()]);
    }

    if ((elementName.compareTo(Tag.elementoParam) == 0)
        && (elementParentName.compareTo(Tag.parametri) == 0)) {

      LinkedList listaParametri =
          ((ElementoMessaggio) (schemaEntry.getParent().getParent().getInstanceElement()))
              .getParameters();

      ArrayList result = new ArrayList();
      Iterator ite = listaParametri.iterator();
      while (ite.hasNext()) {
        result.add(ite.next());
      }

      return (Object[]) result.toArray(new Object[result.size()]);
    }

    return null;
  }