public Key persistRequirementOfNewArtifact(
      Key projectKey, String editorId, String editorEmail, String artifactTitle, Text text) {
    ArtifactVersionEntityManager artifactVersionEntityManager = new ArtifactVersionEntityManager();

    Map<String, Object> requirementVersionProperties = new HashMap<String, Object>();
    requirementVersionProperties.put(RequirementVersion.TEXT, text);

    LogEntityManager logEntityManager = new LogEntityManager();
    Key key;
    Transaction txn = datastore.beginTransaction();
    try {
      Entity project = this.find(projectKey);
      int number = this.getLatestRequirementVersionsByProject(projectKey).size() + 1;
      Key artifactVersionKey =
          artifactVersionEntityManager.persistVersionOfNewArtifact(
              projectKey, editorId, editorEmail, artifactTitle, new Date(), number);
      key =
          super.persist(
              RequirementVersion.ENTITY_NAME, requirementVersionProperties, artifactVersionKey);
      logEntityManager.persist(
          project.getKey(),
          new Date(),
          "Usu�rio "
              + editorEmail
              + " adicionou o requisito  "
              + number
              + ": "
              + artifactTitle
              + " ao projeto "
              + project.getProperty(Project.PROJECT_NAME));
      txn.commit();
      return key;
    } finally {
      if (txn.isActive()) {
        txn.rollback();
        throw new TransactionException();
      }
    }
  }