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(); } } }