Search in sources :

Example 11 with Join

use of ca.corefacility.bioinformatics.irida.model.joins.Join in project irida by phac-nml.

the class ProjectServiceImplIT method testMoveLockedSamplesWithOwnerFail.

@Test(expected = AccessDeniedException.class)
@WithMockUser(username = "user1", roles = "USER")
public void testMoveLockedSamplesWithOwnerFail() {
    Project source = projectService.read(2L);
    Project destination = projectService.read(10L);
    List<Join<Project, Sample>> samplesForProject = sampleService.getSamplesForProject(source);
    Set<Sample> samples = samplesForProject.stream().map(j -> j.getObject()).collect(Collectors.toSet());
    projectService.moveSamples(source, destination, samples, true);
}
Also used : ProjectRole(ca.corefacility.bioinformatics.irida.model.enums.ProjectRole) ProjectSampleJoinRepository(ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository) ReferenceFileService(ca.corefacility.bioinformatics.irida.service.ReferenceFileService) URISyntaxException(java.net.URISyntaxException) Autowired(org.springframework.beans.factory.annotation.Autowired) ActiveProfiles(org.springframework.test.context.ActiveProfiles) ProjectService(ca.corefacility.bioinformatics.irida.service.ProjectService) TestExecutionListeners(org.springframework.test.context.TestExecutionListeners) SpringJUnit4ClassRunner(org.springframework.test.context.junit4.SpringJUnit4ClassRunner) AnalysisSubmissionService(ca.corefacility.bioinformatics.irida.service.AnalysisSubmissionService) Sort(org.springframework.data.domain.Sort) Path(java.nio.file.Path) AnalysisSubmission(ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission) SequencingObjectService(ca.corefacility.bioinformatics.irida.service.SequencingObjectService) ProjectWithoutOwnerException(ca.corefacility.bioinformatics.irida.exceptions.ProjectWithoutOwnerException) Collection(java.util.Collection) Set(java.util.Set) PageRequest(org.springframework.data.domain.PageRequest) IridaApiServicesConfig(ca.corefacility.bioinformatics.irida.config.services.IridaApiServicesConfig) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) List(java.util.List) WithMockUser(org.springframework.security.test.context.support.WithMockUser) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) User(ca.corefacility.bioinformatics.irida.model.user.User) SampleService(ca.corefacility.bioinformatics.irida.service.sample.SampleService) Revision(org.springframework.data.history.Revision) Revisions(org.springframework.data.history.Revisions) DatabaseTearDown(com.github.springtestdbunit.annotation.DatabaseTearDown) EntityExistsException(ca.corefacility.bioinformatics.irida.exceptions.EntityExistsException) EntityRevisionDeletedException(ca.corefacility.bioinformatics.irida.exceptions.EntityRevisionDeletedException) AnnotationConfigContextLoader(org.springframework.test.context.support.AnnotationConfigContextLoader) RunWith(org.junit.runner.RunWith) EntityNotFoundException(ca.corefacility.bioinformatics.irida.exceptions.EntityNotFoundException) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) SequencingObject(ca.corefacility.bioinformatics.irida.model.sequenceFile.SequencingObject) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) Qualifier(org.springframework.beans.factory.annotation.Qualifier) Direction(org.springframework.data.domain.Sort.Direction) DependencyInjectionTestExecutionListener(org.springframework.test.context.support.DependencyInjectionTestExecutionListener) ReferenceFile(ca.corefacility.bioinformatics.irida.model.project.ReferenceFile) Iterator(java.util.Iterator) WithSecurityContextTestExcecutionListener(org.springframework.security.test.context.support.WithSecurityContextTestExcecutionListener) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) Files(java.nio.file.Files) DatabaseSetup(com.github.springtestdbunit.annotation.DatabaseSetup) IOException(java.io.IOException) Test(org.junit.Test) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) AccessDeniedException(org.springframework.security.access.AccessDeniedException) UserGroup(ca.corefacility.bioinformatics.irida.model.user.group.UserGroup) Project(ca.corefacility.bioinformatics.irida.model.project.Project) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) UserGroupService(ca.corefacility.bioinformatics.irida.service.user.UserGroupService) DbUnitTestExecutionListener(com.github.springtestdbunit.DbUnitTestExecutionListener) Paths(java.nio.file.Paths) UserService(ca.corefacility.bioinformatics.irida.service.user.UserService) ContextConfiguration(org.springframework.test.context.ContextConfiguration) UnsupportedReferenceFileContentError(ca.corefacility.bioinformatics.irida.exceptions.UnsupportedReferenceFileContentError) IridaApiJdbcDataSourceConfig(ca.corefacility.bioinformatics.irida.config.data.IridaApiJdbcDataSourceConfig) Assert(org.junit.Assert) Project(ca.corefacility.bioinformatics.irida.model.project.Project) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.Test)

Example 12 with Join

use of ca.corefacility.bioinformatics.irida.model.joins.Join in project irida by phac-nml.

the class ProjectServiceImplIT method testShareSamplesWithoutOwner.

@Test
@WithMockUser(username = "user1", roles = "USER")
public void testShareSamplesWithoutOwner() {
    Project source = projectService.read(2L);
    Project destination = projectService.read(10L);
    List<Join<Project, Sample>> samplesForProject = sampleService.getSamplesForProject(source);
    Set<Sample> samples = samplesForProject.stream().map(j -> j.getObject()).collect(Collectors.toSet());
    List<ProjectSampleJoin> copiedSamples = projectService.shareSamples(source, destination, samples, false);
    assertEquals(samples.size(), copiedSamples.size());
    copiedSamples.forEach(j -> {
        assertFalse("Project shouldn't be owner for sample", j.isOwner());
    });
    assertEquals("Samples should still exist in source project", Sets.newHashSet(1L, 2L), projectSampleJoinRepository.getSamplesForProject(source).stream().map(j -> j.getObject().getId()).collect(Collectors.toSet()));
    assertEquals("Samples should exist in destination project", Sets.newHashSet(1L, 2L), projectSampleJoinRepository.getSamplesForProject(destination).stream().map(j -> j.getObject().getId()).collect(Collectors.toSet()));
}
Also used : ProjectRole(ca.corefacility.bioinformatics.irida.model.enums.ProjectRole) ProjectSampleJoinRepository(ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository) ReferenceFileService(ca.corefacility.bioinformatics.irida.service.ReferenceFileService) URISyntaxException(java.net.URISyntaxException) Autowired(org.springframework.beans.factory.annotation.Autowired) ActiveProfiles(org.springframework.test.context.ActiveProfiles) ProjectService(ca.corefacility.bioinformatics.irida.service.ProjectService) TestExecutionListeners(org.springframework.test.context.TestExecutionListeners) SpringJUnit4ClassRunner(org.springframework.test.context.junit4.SpringJUnit4ClassRunner) AnalysisSubmissionService(ca.corefacility.bioinformatics.irida.service.AnalysisSubmissionService) Sort(org.springframework.data.domain.Sort) Path(java.nio.file.Path) AnalysisSubmission(ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission) SequencingObjectService(ca.corefacility.bioinformatics.irida.service.SequencingObjectService) ProjectWithoutOwnerException(ca.corefacility.bioinformatics.irida.exceptions.ProjectWithoutOwnerException) Collection(java.util.Collection) Set(java.util.Set) PageRequest(org.springframework.data.domain.PageRequest) IridaApiServicesConfig(ca.corefacility.bioinformatics.irida.config.services.IridaApiServicesConfig) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) List(java.util.List) WithMockUser(org.springframework.security.test.context.support.WithMockUser) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) User(ca.corefacility.bioinformatics.irida.model.user.User) SampleService(ca.corefacility.bioinformatics.irida.service.sample.SampleService) Revision(org.springframework.data.history.Revision) Revisions(org.springframework.data.history.Revisions) DatabaseTearDown(com.github.springtestdbunit.annotation.DatabaseTearDown) EntityExistsException(ca.corefacility.bioinformatics.irida.exceptions.EntityExistsException) EntityRevisionDeletedException(ca.corefacility.bioinformatics.irida.exceptions.EntityRevisionDeletedException) AnnotationConfigContextLoader(org.springframework.test.context.support.AnnotationConfigContextLoader) RunWith(org.junit.runner.RunWith) EntityNotFoundException(ca.corefacility.bioinformatics.irida.exceptions.EntityNotFoundException) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) SequencingObject(ca.corefacility.bioinformatics.irida.model.sequenceFile.SequencingObject) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) Qualifier(org.springframework.beans.factory.annotation.Qualifier) Direction(org.springframework.data.domain.Sort.Direction) DependencyInjectionTestExecutionListener(org.springframework.test.context.support.DependencyInjectionTestExecutionListener) ReferenceFile(ca.corefacility.bioinformatics.irida.model.project.ReferenceFile) Iterator(java.util.Iterator) WithSecurityContextTestExcecutionListener(org.springframework.security.test.context.support.WithSecurityContextTestExcecutionListener) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) Files(java.nio.file.Files) DatabaseSetup(com.github.springtestdbunit.annotation.DatabaseSetup) IOException(java.io.IOException) Test(org.junit.Test) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) AccessDeniedException(org.springframework.security.access.AccessDeniedException) UserGroup(ca.corefacility.bioinformatics.irida.model.user.group.UserGroup) Project(ca.corefacility.bioinformatics.irida.model.project.Project) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) UserGroupService(ca.corefacility.bioinformatics.irida.service.user.UserGroupService) DbUnitTestExecutionListener(com.github.springtestdbunit.DbUnitTestExecutionListener) Paths(java.nio.file.Paths) UserService(ca.corefacility.bioinformatics.irida.service.user.UserService) ContextConfiguration(org.springframework.test.context.ContextConfiguration) UnsupportedReferenceFileContentError(ca.corefacility.bioinformatics.irida.exceptions.UnsupportedReferenceFileContentError) IridaApiJdbcDataSourceConfig(ca.corefacility.bioinformatics.irida.config.data.IridaApiJdbcDataSourceConfig) Assert(org.junit.Assert) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) Project(ca.corefacility.bioinformatics.irida.model.project.Project) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.Test)

Example 13 with Join

use of ca.corefacility.bioinformatics.irida.model.joins.Join in project irida by phac-nml.

the class ProjectServiceImplIT method testAddTwoUsersToProject.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void testAddTwoUsersToProject() {
    Project p = projectService.read(1L);
    User u1 = userService.read(1L);
    User u2 = userService.read(2L);
    projectService.addUserToProject(p, u1, ProjectRole.PROJECT_OWNER);
    projectService.addUserToProject(p, u2, ProjectRole.PROJECT_OWNER);
    Collection<Join<Project, User>> usersOnProject = userService.getUsersForProject(p);
    assertEquals("Wrong number of users on project.", 2, usersOnProject.size());
    Set<User> users = Sets.newHashSet(u1, u2);
    for (Join<Project, User> user : usersOnProject) {
        assertTrue("No such user on project.", users.remove(user.getObject()));
    }
    assertEquals("Too many users on project", 0, users.size());
}
Also used : Project(ca.corefacility.bioinformatics.irida.model.project.Project) WithMockUser(org.springframework.security.test.context.support.WithMockUser) User(ca.corefacility.bioinformatics.irida.model.user.User) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.Test)

Example 14 with Join

use of ca.corefacility.bioinformatics.irida.model.joins.Join in project irida by phac-nml.

the class ProjectServiceImplIT method testMoveSamplesWithoutOwner.

@Test
@WithMockUser(username = "user1", roles = "USER")
public void testMoveSamplesWithoutOwner() {
    Project source = projectService.read(2L);
    Project destination = projectService.read(10L);
    List<Join<Project, Sample>> samplesForProject = sampleService.getSamplesForProject(source);
    Set<Sample> samples = samplesForProject.stream().map(j -> j.getObject()).collect(Collectors.toSet());
    List<ProjectSampleJoin> movedSamples = projectService.moveSamples(source, destination, samples, false);
    assertEquals(samples.size(), movedSamples.size());
    movedSamples.forEach(j -> {
        assertFalse("Project shouldn't be owner for sample", j.isOwner());
    });
    assertEquals("Samples should not exist in source project", Long.valueOf(0L), projectSampleJoinRepository.countSamplesForProject(source));
    assertEquals("Samples should exist in destination project", Sets.newHashSet(1L, 2L), projectSampleJoinRepository.getSamplesForProject(destination).stream().map(j -> j.getObject().getId()).collect(Collectors.toSet()));
}
Also used : ProjectRole(ca.corefacility.bioinformatics.irida.model.enums.ProjectRole) ProjectSampleJoinRepository(ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository) ReferenceFileService(ca.corefacility.bioinformatics.irida.service.ReferenceFileService) URISyntaxException(java.net.URISyntaxException) Autowired(org.springframework.beans.factory.annotation.Autowired) ActiveProfiles(org.springframework.test.context.ActiveProfiles) ProjectService(ca.corefacility.bioinformatics.irida.service.ProjectService) TestExecutionListeners(org.springframework.test.context.TestExecutionListeners) SpringJUnit4ClassRunner(org.springframework.test.context.junit4.SpringJUnit4ClassRunner) AnalysisSubmissionService(ca.corefacility.bioinformatics.irida.service.AnalysisSubmissionService) Sort(org.springframework.data.domain.Sort) Path(java.nio.file.Path) AnalysisSubmission(ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission) SequencingObjectService(ca.corefacility.bioinformatics.irida.service.SequencingObjectService) ProjectWithoutOwnerException(ca.corefacility.bioinformatics.irida.exceptions.ProjectWithoutOwnerException) Collection(java.util.Collection) Set(java.util.Set) PageRequest(org.springframework.data.domain.PageRequest) IridaApiServicesConfig(ca.corefacility.bioinformatics.irida.config.services.IridaApiServicesConfig) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) List(java.util.List) WithMockUser(org.springframework.security.test.context.support.WithMockUser) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) User(ca.corefacility.bioinformatics.irida.model.user.User) SampleService(ca.corefacility.bioinformatics.irida.service.sample.SampleService) Revision(org.springframework.data.history.Revision) Revisions(org.springframework.data.history.Revisions) DatabaseTearDown(com.github.springtestdbunit.annotation.DatabaseTearDown) EntityExistsException(ca.corefacility.bioinformatics.irida.exceptions.EntityExistsException) EntityRevisionDeletedException(ca.corefacility.bioinformatics.irida.exceptions.EntityRevisionDeletedException) AnnotationConfigContextLoader(org.springframework.test.context.support.AnnotationConfigContextLoader) RunWith(org.junit.runner.RunWith) EntityNotFoundException(ca.corefacility.bioinformatics.irida.exceptions.EntityNotFoundException) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) SequencingObject(ca.corefacility.bioinformatics.irida.model.sequenceFile.SequencingObject) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) Qualifier(org.springframework.beans.factory.annotation.Qualifier) Direction(org.springframework.data.domain.Sort.Direction) DependencyInjectionTestExecutionListener(org.springframework.test.context.support.DependencyInjectionTestExecutionListener) ReferenceFile(ca.corefacility.bioinformatics.irida.model.project.ReferenceFile) Iterator(java.util.Iterator) WithSecurityContextTestExcecutionListener(org.springframework.security.test.context.support.WithSecurityContextTestExcecutionListener) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) Files(java.nio.file.Files) DatabaseSetup(com.github.springtestdbunit.annotation.DatabaseSetup) IOException(java.io.IOException) Test(org.junit.Test) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) AccessDeniedException(org.springframework.security.access.AccessDeniedException) UserGroup(ca.corefacility.bioinformatics.irida.model.user.group.UserGroup) Project(ca.corefacility.bioinformatics.irida.model.project.Project) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) UserGroupService(ca.corefacility.bioinformatics.irida.service.user.UserGroupService) DbUnitTestExecutionListener(com.github.springtestdbunit.DbUnitTestExecutionListener) Paths(java.nio.file.Paths) UserService(ca.corefacility.bioinformatics.irida.service.user.UserService) ContextConfiguration(org.springframework.test.context.ContextConfiguration) UnsupportedReferenceFileContentError(ca.corefacility.bioinformatics.irida.exceptions.UnsupportedReferenceFileContentError) IridaApiJdbcDataSourceConfig(ca.corefacility.bioinformatics.irida.config.data.IridaApiJdbcDataSourceConfig) Assert(org.junit.Assert) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) Project(ca.corefacility.bioinformatics.irida.model.project.Project) Sample(ca.corefacility.bioinformatics.irida.model.sample.Sample) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.Test)

Example 15 with Join

use of ca.corefacility.bioinformatics.irida.model.joins.Join in project irida by phac-nml.

the class ProjectServiceImplIT method testAddUserToProject.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void testAddUserToProject() {
    Project p = projectService.read(1L);
    User u = userService.read(1L);
    Join<Project, User> join = projectService.addUserToProject(p, u, ProjectRole.PROJECT_OWNER);
    assertNotNull("Join was not populated.", join);
    assertEquals("Join has wrong project.", p, join.getSubject());
    assertEquals("Join has wrong user.", u, join.getObject());
    List<Join<Project, User>> projects = projectService.getProjectsForUser(u);
    assertEquals("User is not part of project.", p, projects.iterator().next().getSubject());
}
Also used : Project(ca.corefacility.bioinformatics.irida.model.project.Project) WithMockUser(org.springframework.security.test.context.support.WithMockUser) User(ca.corefacility.bioinformatics.irida.model.user.User) RelatedProjectJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) ProjectSampleJoin(ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin) ProjectAnalysisSubmissionJoin(ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.Test)

Aggregations

Join (ca.corefacility.bioinformatics.irida.model.joins.Join)65 Project (ca.corefacility.bioinformatics.irida.model.project.Project)60 Test (org.junit.Test)40 Sample (ca.corefacility.bioinformatics.irida.model.sample.Sample)35 User (ca.corefacility.bioinformatics.irida.model.user.User)35 ProjectSampleJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin)34 RelatedProjectJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin)26 ProjectUserJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectUserJoin)23 ArrayList (java.util.ArrayList)20 WithMockUser (org.springframework.security.test.context.support.WithMockUser)20 ProjectAnalysisSubmissionJoin (ca.corefacility.bioinformatics.irida.model.workflow.submission.ProjectAnalysisSubmissionJoin)16 SampleSequencingObjectJoin (ca.corefacility.bioinformatics.irida.model.sample.SampleSequencingObjectJoin)14 ProjectRole (ca.corefacility.bioinformatics.irida.model.enums.ProjectRole)13 ReferenceFile (ca.corefacility.bioinformatics.irida.model.project.ReferenceFile)13 List (java.util.List)12 Set (java.util.Set)12 SequencingObject (ca.corefacility.bioinformatics.irida.model.sequenceFile.SequencingObject)11 Autowired (org.springframework.beans.factory.annotation.Autowired)11 ProjectSampleJoinRepository (ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository)10 ProjectService (ca.corefacility.bioinformatics.irida.service.ProjectService)10