Skip to content
Snippets Groups Projects
Commit f253b107 authored by brinn's avatar brinn
Browse files

Add methods IGeneralInformationService.filterXXXVisibleToUser().

SVN: 26110
parent 7d268da0
No related branches found
No related tags found
No related merge requests found
...@@ -342,6 +342,29 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio ...@@ -342,6 +342,29 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
return samples; return samples;
} }
@Override
@Transactional(readOnly = true)
@RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
@Capability("SEARCH_ON_BEHALF_OF_USER")
public List<Sample> filterSamplesVisibleToUser(String sessionToken, List<Sample> allSamples,
String userId)
{
checkSession(sessionToken);
// filter by user
final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId);
final SampleByIdentiferValidator validator = new SampleByIdentiferValidator();
final ArrayList<Sample> samples = new ArrayList<Sample>(allSamples.size());
for (Sample sample : allSamples)
{
if (validator.doValidation(person, sample))
{
samples.add(sample);
}
}
return samples;
}
protected ISampleLister createSampleLister() protected ISampleLister createSampleLister()
{ {
return new SampleLister(getDAOFactory()); return new SampleLister(getDAOFactory());
...@@ -480,6 +503,31 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio ...@@ -480,6 +503,31 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
return null; return null;
} }
@Override
@Transactional(readOnly = true)
@RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
@Capability("SEARCH_ON_BEHALF_OF_USER")
public List<Experiment> filterExperimentsVisibleToUser(String sessionToken,
List<Experiment> allExperiments,
String userId)
{
checkSession(sessionToken);
// filter by user
final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId);
final ExperimentByIdentiferValidator validator = new ExperimentByIdentiferValidator();
final ArrayList<Experiment> experiments = new ArrayList<Experiment>(allExperiments.size());
for (Experiment experiment : allExperiments)
{
if (validator.doValidation(person, experiment))
{
experiments.add(experiment);
}
}
return experiments;
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
@RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
...@@ -715,7 +763,6 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio ...@@ -715,7 +763,6 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
public List<DataSet> searchForDataSetsOnBehalfOfUser(String sessionToken, public List<DataSet> searchForDataSetsOnBehalfOfUser(String sessionToken,
SearchCriteria searchCriteria, String userId) SearchCriteria searchCriteria, String userId)
{ {
final List<DataSet> unfilteredDatasets = searchForDataSets(sessionToken, searchCriteria); final List<DataSet> unfilteredDatasets = searchForDataSets(sessionToken, searchCriteria);
// Filter for user // Filter for user
final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId); final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId);
...@@ -732,6 +779,30 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio ...@@ -732,6 +779,30 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
return datasets; return datasets;
} }
@Override
@Transactional(readOnly = true)
@RolesAllowed(RoleWithHierarchy.INSTANCE_OBSERVER)
@Capability("SEARCH_ON_BEHALF_OF_USER")
public List<DataSet> filterDataSetsVisibleToUser(String sessionToken,
List<DataSet> allDataSets, String userId)
{
checkSession(sessionToken);
// filter by user
final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId);
final DataSetByExperimentIdentifierValidator validator =
new DataSetByExperimentIdentifierValidator();
final ArrayList<DataSet> dataSets = new ArrayList<DataSet>(allDataSets.size());
for (DataSet dataSet : allDataSets)
{
if (validator.doValidation(person, dataSet))
{
dataSets.add(dataSet);
}
}
return dataSets;
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
@RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
......
...@@ -129,6 +129,15 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements ...@@ -129,6 +129,15 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements
return null; return null;
} }
@Override
public List<Sample> filterSamplesVisibleToUser(String sessionToken, List<Sample> allSamples,
String userId)
{
logAccess(sessionToken, "filter-samples-visible-to-user", "SAMPLES(%s)",
"USER(%S)", abbreviate(allSamples), userId);
return null;
}
@Override @Override
public List<DataSet> listDataSets(String sessionToken, List<Sample> samples) public List<DataSet> listDataSets(String sessionToken, List<Sample> samples)
{ {
...@@ -239,6 +248,15 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements ...@@ -239,6 +248,15 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements
return null; return null;
} }
@Override
public List<DataSet> filterDataSetsVisibleToUser(String sessionToken,
List<DataSet> allDataSets, String userId)
{
logAccess(sessionToken, "filter-data-sets-visible-to-user", "DATASETS(%s)",
"USER(%S)", abbreviate(allDataSets), userId);
return null;
}
@Override @Override
public List<Experiment> listExperiments(String sessionToken, List<String> experimentIdentifiers) public List<Experiment> listExperiments(String sessionToken, List<String> experimentIdentifiers)
{ {
...@@ -247,6 +265,16 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements ...@@ -247,6 +265,16 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements
return null; return null;
} }
@Override
public List<Experiment> filterExperimentsVisibleToUser(String sessionToken,
List<Experiment> allExperiments,
String userId)
{
logAccess(sessionToken, "filter-experiments-visible-to-user", "EXPERIMENTS(%s)",
"USER(%s)", abbreviate(allExperiments), userId);
return null;
}
@Override @Override
public List<Project> listProjects(String sessionToken) public List<Project> listProjects(String sessionToken)
{ {
......
...@@ -154,7 +154,7 @@ public interface IGeneralInformationService extends IRpcService ...@@ -154,7 +154,7 @@ public interface IGeneralInformationService extends IRpcService
* possible only in one direction. * possible only in one direction.
* <p> * <p>
* May only be called by users who are <code>INSTANCE_OBSERVER</code>. * May only be called by users who are <code>INSTANCE_OBSERVER</code>.
*
* @param searchCriteria The sample metadata values to be matched against. * @param searchCriteria The sample metadata values to be matched against.
* @param fetchOptions Options that control which parts of the samples are fetched. * @param fetchOptions Options that control which parts of the samples are fetched.
* @since 1.18 * @since 1.18
...@@ -163,6 +163,19 @@ public interface IGeneralInformationService extends IRpcService ...@@ -163,6 +163,19 @@ public interface IGeneralInformationService extends IRpcService
SearchCriteria searchCriteria, SearchCriteria searchCriteria,
EnumSet<SampleFetchOption> fetchOptions, String userId); EnumSet<SampleFetchOption> fetchOptions, String userId);
/**
* Returns a filtered list of <var>allSamples</var> containing those samples which are
* visible to <var>userId</var>.
*
* @param allSamples The list of samples that should be filtered.
* @param userId The user that the samples should be visible to that survive the filtering.
* @return The filtered list of <var>allSamples</var> containing those samples which are
* visible to <var>userId</var>.
* @since 1.18
*/
public List<Sample> filterSamplesVisibleToUser(String sessionToken, List<Sample> allSamples,
String userId);
/** /**
* Return all samples that belong to the supplied experiment. * Return all samples that belong to the supplied experiment.
* *
...@@ -218,6 +231,20 @@ public interface IGeneralInformationService extends IRpcService ...@@ -218,6 +231,20 @@ public interface IGeneralInformationService extends IRpcService
public List<Experiment> listExperimentsHavingDataSets(String sessionToken, public List<Experiment> listExperimentsHavingDataSets(String sessionToken,
List<Project> projects, String experimentType); List<Project> projects, String experimentType);
/**
* Returns a filtered list of <var>allExperiments</var> containing those experiments which are
* visible to <var>userId</var>.
*
* @param allExperiments The list of experiments that should be filtered.
* @param userId The user that the experiments should be visible to that survive the filtering.
* @return The filtered list of <var>allExperiments</var> containing all experiments which are
* visible to <var>userId</var>.
* @since 1.18
*/
public List<Experiment> filterExperimentsVisibleToUser(String sessionToken,
List<Experiment> allExperiments,
String userId);
/** /**
* Return the data sets attached to the specified sample, optionally including child samples. * Return the data sets attached to the specified sample, optionally including child samples.
* Note, that for returned container data sets the contained data sets have only code, type and * Note, that for returned container data sets the contained data sets have only code, type and
...@@ -339,6 +366,19 @@ public interface IGeneralInformationService extends IRpcService ...@@ -339,6 +366,19 @@ public interface IGeneralInformationService extends IRpcService
public List<DataSet> searchForDataSetsOnBehalfOfUser(String sessionToken, public List<DataSet> searchForDataSetsOnBehalfOfUser(String sessionToken,
SearchCriteria searchCriteria, String userId); SearchCriteria searchCriteria, String userId);
/**
* Returns a filtered list of <var>allDataSets</var> containing those data sets which are
* visible to <var>userId</var>.
*
* @param allDataSets The list of data sets that should be filtered.
* @param userId The user that the data sets should be visible to that survive the filtering.
* @return The filtered list of <var>allDataSets</var> containing those data sets which are
* visible to <var>userId</var>.
* @since 1.18
*/
public List<DataSet> filterDataSetsVisibleToUser(String sessionToken,
List<DataSet> allDataSets, String userId);
/** /**
* Return all experiments matching a specified set of identifiers. * Return all experiments matching a specified set of identifiers.
* *
......
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