@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public ContentServiceRequest createRemoveRequest(int resourceId, String username, int[] installedPackageIds,
String requestNotes) {
Resource resource = entityManager.find(Resource.class, resourceId);
ContentServiceRequest persistedRequest = new ContentServiceRequest(resource, username,
ContentRequestType.DELETE);
persistedRequest.setStatus(ContentRequestStatus.IN_PROGRESS);
persistedRequest.setNotes(requestNotes);
long timestamp = System.currentTimeMillis();
for (int installedPackageId : installedPackageIds) {
InstalledPackage ip = entityManager.find(InstalledPackage.class, installedPackageId);
PackageVersion packageVersion = ip.getPackageVersion();
InstalledPackageHistory history = new InstalledPackageHistory();
history.setContentServiceRequest(persistedRequest);
history.setPackageVersion(packageVersion);
history.setResource(resource);
history.setStatus(InstalledPackageHistoryStatus.BEING_DELETED);
history.setTimestamp(timestamp);
persistedRequest.addInstalledPackageHistory(history);
}
entityManager.persist(persistedRequest);
return persistedRequest;
}