Skip to content
Snippets Groups Projects
Commit 2affaba6 authored by srosse's avatar srosse
Browse files

OO-2070: add method to check existing external identifiers of repository entries

parent 3f4b5d92
No related branches found
No related tags found
No related merge requests found
......@@ -445,6 +445,28 @@ public class RepositoryManager {
return displaynames.get(0);
}
/**
* Check if (and which) external IDs already exist.
* @param a collection of external IDs to check if already existing
* @return a list of already existing external IDs (or an emtpy list).
*/
public List<String> lookupExistingExternalIds(Collection<String> externalIds) {
if (externalIds == null || externalIds.isEmpty()) {
return Collections.emptyList();
}
StringBuilder query = new StringBuilder();
query.append("select v.externalId from ").append(RepositoryEntry.class.getName()).append(" as v ")
.append("where v.externalId in (:externalIds)");
List<String> existingExternalIds =
dbInstance.getCurrentEntityManager().createQuery(query.toString(), String.class)
.setParameter("externalIds", externalIds)
.getResultList();
return existingExternalIds;
}
/**
* Load a list of repository entry without all the security groups ...
* @param resources
......
......@@ -30,6 +30,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
......@@ -205,6 +206,25 @@ public class RepositoryManagerTest extends OlatTestCase {
Assert.assertEquals(re.getOlatResource(), resource);
}
@Test
public void lookupExistingExternalIds() {
RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry();
String externalId = UUID.randomUUID().toString();
re.setExternalId(externalId);
repositoryService.update(re);
dbInstance.commitAndCloseSession();
//load
String nonExistentExternalId = UUID.randomUUID().toString();
List<String> externalIds = new ArrayList<>();
externalIds.add(externalId);
externalIds.add(nonExistentExternalId);
List<String> existentExternalIds = repositoryManager.lookupExistingExternalIds(externalIds);
Assert.assertNotNull(existentExternalIds);
Assert.assertTrue(existentExternalIds.contains(externalId));
Assert.assertFalse(existentExternalIds.contains(nonExistentExternalId));
}
@Test
public void queryByOwner_replaceQueryByEditor() {
//create a repository entry with an owner
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment