public void initializeFrom(Element element) throws DocumentSerializationException {
    state = null;

    for (Enumeration e = element.getChildren(); e.hasMoreElements(); ) {
      Element childElement = (TextElement) e.nextElement();
      String tagName = (String) childElement.getKey();

      if (tagName.equals("peerID")) {
        String peerIDText = DocumentSerializableUtilities.getString(childElement);

        peerID = MetricUtilities.getPeerIdFromString(peerIDText);
      } else if (tagName.equals("state")) {
        state = DocumentSerializableUtilities.getString(childElement);
      } else if (tagName.equals("transitionTime")) {
        transitionTime = DocumentSerializableUtilities.getLong(childElement);
      } else if (tagName.equals("lastLeaseRenewalTime")) {
        lastLeaseRenewalTime = DocumentSerializableUtilities.getLong(childElement);
      } else if (tagName.equals("lease")) {
        lease = DocumentSerializableUtilities.getLong(childElement);
      } else if (tagName.equals("numConnects")) {
        numConnects = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("numLeaseRenewals")) {
        numLeaseRenewals = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("numDisconnects")) {
        numDisconnects = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("numConnectionsRefused")) {
        numConnectionsRefused = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("numErrorsAddingClient")) {
        numErrorsAddingClient = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("numUnableToRespondToConnectRequest")) {
        numUnableToRespondToConnectRequest = DocumentSerializableUtilities.getInt(childElement);
      } else if (tagName.equals("totalTimeConnected")) {
        totalTimeConnected = DocumentSerializableUtilities.getLong(childElement);
      }
    }
  }