Skip to content
Snippets Groups Projects
Commit b8d3f185 authored by buczekp's avatar buczekp
Browse files

[LMS-1457] added sample type to new sample tracking criteria

SVN: 15514
parent f5de10f6
No related branches found
No related tags found
No related merge requests found
...@@ -33,7 +33,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCrite ...@@ -33,7 +33,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCrite
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewTrackingSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewTrackingSampleCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
public final class TrackingServer extends AbstractServer<ITrackingServer> implements public final class TrackingServer extends AbstractServer<ITrackingServer> implements
...@@ -69,16 +68,6 @@ public final class TrackingServer extends AbstractServer<ITrackingServer> implem ...@@ -69,16 +68,6 @@ public final class TrackingServer extends AbstractServer<ITrackingServer> implem
// ITrackingServer // ITrackingServer
// //
public List<Sample> listSamples(String sessionToken, TrackingSampleCriteria criteria)
{
final Session session = getSession(sessionToken);
final ISampleLister sampleLister = businessObjectFactory.createSampleLister(session);
final ListOrSearchSampleCriteria listerCriteria = new ListOrSearchSampleCriteria(criteria);
listerCriteria.setEnrichDependentSamplesWithProperties(true);
return sampleLister.list(listerCriteria);
}
public List<Sample> listSamples(String sessionToken, NewTrackingSampleCriteria criteria) public List<Sample> listSamples(String sessionToken, NewTrackingSampleCriteria criteria)
{ {
final Session session = getSession(sessionToken); final Session session = getSession(sessionToken);
......
...@@ -211,33 +211,22 @@ public interface ISampleListingQuery extends TransactionQuery, IPropertyListingQ ...@@ -211,33 +211,22 @@ public interface ISampleListingQuery extends TransactionQuery, IPropertyListingQ
// //
/** /**
* Returns all samples of sample type with given <var>sampleTypeId</var> that are newer than * Returns all samples with a <var>propertyType</var> attached having specified
* sample with given id (<var>lastSeenSampleId</var>). * <var>popertyValue</var>. Additionally id of the sample SHOULDN'T be in the specified set of
* ids.
*/ */
@Select(sql = "select s.id, s.perm_id, s.code, s.expe_id, s.grou_id, s.dbin_id, " @Select(sql = "select s.id, s.perm_id, s.code, s.expe_id, s.grou_id, s.dbin_id, "
+ " s.registration_timestamp, s.pers_id_registerer, " + " s.registration_timestamp, s.pers_id_registerer, "
+ " s.samp_id_generated_from, s.samp_id_part_of, s.saty_id, s.inva_id " + " s.samp_id_generated_from, s.samp_id_part_of, s.saty_id, s.inva_id "
+ " from samples s where s.saty_id=?{1} and s.id > ?{2}", fetchSize = FETCH_SIZE) + " from samples s where s.saty_id=?{1} and id in ("
public DataIterator<SampleRecord> getNewSamplesForSampleType(long sampleTypeId,
int lastSeenSampleId);
/**
* Returns all samples with a <var>propertyType</var> attached having specified
* <var>popertyValue</var>. Additionally id of the sample SHOULDN'T be in the specified
* set of ids.
*/
@Select(sql = "select s.id, s.perm_id, s.code, s.expe_id, s.grou_id, s.dbin_id, "
+ " s.registration_timestamp, s.pers_id_registerer, "
+ " s.samp_id_generated_from, s.samp_id_part_of, s.saty_id, s.inva_id "
+ " from samples s where id in ("
+ " select samp_id from sample_properties sp where sp.stpt_id in (" + " select samp_id from sample_properties sp where sp.stpt_id in ("
+ " select id from sample_type_property_types stpt where stpt.prty_id = " + " select id from sample_type_property_types stpt where stpt.prty_id = "
+ " (select id from property_types where code=?{1})" + " (select id from property_types where code=?{2})"
+ " ) and value=?{2}" + " ) and value=?{3}"
+ " ) and not id = any(?{3})", parameterBindings = + " ) and not id = any(?{4})", parameterBindings =
{ TypeMapper.class, TypeMapper.class, LongSetMapper.class }, fetchSize = FETCH_SIZE) { TypeMapper.class, TypeMapper.class, TypeMapper.class, LongSetMapper.class }, fetchSize = FETCH_SIZE)
public DataIterator<SampleRecord> getSamplesWithPropertyValue(String propertyTypeCode, public DataIterator<SampleRecord> getSamplesWithPropertyValue(long sampleTypeId,
String propertyValue, LongSet sampleIds); String propertyTypeCode, String propertyValue, LongSet sampleIds);
// //
// Shared samples // Shared samples
......
...@@ -213,7 +213,6 @@ final class SampleListingWorker ...@@ -213,7 +213,6 @@ final class SampleListingWorker
retrievePrimaryBasicSamples(tryGetIteratorForSharedSamples()); retrievePrimaryBasicSamples(tryGetIteratorForSharedSamples());
retrievePrimaryBasicSamples(tryGetIteratorForExperimentSamples()); retrievePrimaryBasicSamples(tryGetIteratorForExperimentSamples());
retrievePrimaryBasicSamples(tryGetIteratorForContainedSamples()); retrievePrimaryBasicSamples(tryGetIteratorForContainedSamples());
retrievePrimaryBasicSamples(tryGetIteratorForTrackedSamples());
retrievePrimaryBasicSamples(tryGetIteratorForNewTrackedSamples()); retrievePrimaryBasicSamples(tryGetIteratorForNewTrackedSamples());
if (operationLog.isDebugEnabled()) if (operationLog.isDebugEnabled())
{ {
...@@ -443,27 +442,17 @@ final class SampleListingWorker ...@@ -443,27 +442,17 @@ final class SampleListingWorker
} }
} }
private Iterable<SampleRecord> tryGetIteratorForTrackedSamples() private Iterable<SampleRecord> tryGetIteratorForNewTrackedSamples()
{ {
final String sampleTypeCode = criteria.getSampleTypeCode(); if (criteria.getSampleTypeCode() == null)
if (sampleTypeCode == null)
{ {
return null; return null;
} }
Long sampleTypeId = final long sampleTypeId =
referencedEntityDAO.getSampleTypeIdForSampleTypeCode(criteria.getSampleTypeCode()); referencedEntityDAO.getSampleTypeIdForSampleTypeCode(criteria.getSampleTypeCode());
return query.getNewSamplesForSampleType(sampleTypeId, criteria.getLastSeenSampleId());
}
private Iterable<SampleRecord> tryGetIteratorForNewTrackedSamples()
{
final String propertyTypeCode = criteria.getPropertyTypeCode(); final String propertyTypeCode = criteria.getPropertyTypeCode();
if (propertyTypeCode == null)
{
return null;
}
final String propertyValue = criteria.getPropertyValue(); final String propertyValue = criteria.getPropertyValue();
return query.getSamplesWithPropertyValue(propertyTypeCode, propertyValue, return query.getSamplesWithPropertyValue(sampleTypeId, propertyTypeCode, propertyValue,
new LongOpenHashSet(criteria.getAlreadyTrackedSampleIds())); new LongOpenHashSet(criteria.getAlreadyTrackedSampleIds()));
} }
......
...@@ -27,7 +27,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; ...@@ -27,7 +27,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewTrackingSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewTrackingSampleCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
/** /**
* Definition of the client-server interface for tracking creation of samples and datasets. * Definition of the client-server interface for tracking creation of samples and datasets.
...@@ -37,15 +36,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria; ...@@ -37,15 +36,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
public interface ITrackingServer extends IServer public interface ITrackingServer extends IServer
{ {
/**
* Lists samples using given criteria.
*
* @return a sorted list of {@link Sample}.
*/
@Transactional(readOnly = true)
@RolesAllowed(RoleSet.INSTANCE_ADMIN)
public List<Sample> listSamples(final String sessionToken, final TrackingSampleCriteria criteria);
/** /**
* Lists samples using given criteria. * Lists samples using given criteria.
* *
......
...@@ -39,8 +39,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria ...@@ -39,8 +39,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
private ListSampleCriteria listCriteria; private ListSampleCriteria listCriteria;
private TrackingSampleCriteria trackingCriteria;
private NewTrackingSampleCriteria newTrackingCriteria; private NewTrackingSampleCriteria newTrackingCriteria;
private Collection<Long> sampleIds; private Collection<Long> sampleIds;
...@@ -54,13 +52,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria ...@@ -54,13 +52,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
this.listCriteria = listCriteria; this.listCriteria = listCriteria;
} }
/** Creates criteria that delegates to given {@link TrackingSampleCriteria}. */
public ListOrSearchSampleCriteria(TrackingSampleCriteria trackingCriteria)
{
assert trackingCriteria != null;
this.trackingCriteria = trackingCriteria;
}
/** Creates criteria that delegates to given {@link NewTrackingSampleCriteria}. */ /** Creates criteria that delegates to given {@link NewTrackingSampleCriteria}. */
public ListOrSearchSampleCriteria(NewTrackingSampleCriteria newTrackingCriteria) public ListOrSearchSampleCriteria(NewTrackingSampleCriteria newTrackingCriteria)
{ {
...@@ -84,6 +75,11 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria ...@@ -84,6 +75,11 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
// delegation to NewTrackingSampleCriteria // delegation to NewTrackingSampleCriteria
public String getSampleTypeCode()
{
return newTrackingCriteria == null ? null : newTrackingCriteria.getSampleTypeCode();
}
public String getPropertyTypeCode() public String getPropertyTypeCode()
{ {
return newTrackingCriteria == null ? null : newTrackingCriteria.getPropertyTypeCode(); return newTrackingCriteria == null ? null : newTrackingCriteria.getPropertyTypeCode();
...@@ -100,18 +96,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria ...@@ -100,18 +96,6 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
.getAlreadyTrackedSampleIds(); .getAlreadyTrackedSampleIds();
} }
// delegation to TrackingSampleCriteria
public String getSampleTypeCode()
{
return trackingCriteria == null ? null : trackingCriteria.getSampleTypeCode();
}
public int getLastSeenSampleId()
{
return trackingCriteria == null ? null : trackingCriteria.getLastSeenSampleId();
}
// delegation to ListSampleCriteria // delegation to ListSampleCriteria
@Override @Override
......
...@@ -20,7 +20,8 @@ import java.io.Serializable; ...@@ -20,7 +20,8 @@ import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
/** /**
* Criteria for tracking <i>samples</i> with a particular property having certain property value. * Criteria for tracking <i>samples</i> of particular type with certain property set to specified
* value.
* <p> * <p>
* Parent and Container samples should be loaded according to {@link SampleType} hierarchy depths. * Parent and Container samples should be loaded according to {@link SampleType} hierarchy depths.
* All referenced samples should have all properties loaded. * All referenced samples should have all properties loaded.
...@@ -32,8 +33,7 @@ public class NewTrackingSampleCriteria implements Serializable ...@@ -32,8 +33,7 @@ public class NewTrackingSampleCriteria implements Serializable
{ {
private static final long serialVersionUID = ServiceVersionHolder.VERSION; private static final long serialVersionUID = ServiceVersionHolder.VERSION;
// TODO private final String sampleTypeCode;
// private final String sampleTypeCode;
private final String propertyTypeCode; private final String propertyTypeCode;
...@@ -41,16 +41,23 @@ public class NewTrackingSampleCriteria implements Serializable ...@@ -41,16 +41,23 @@ public class NewTrackingSampleCriteria implements Serializable
private final Collection<Long> alreadyTrackedSampleIds; private final Collection<Long> alreadyTrackedSampleIds;
public NewTrackingSampleCriteria(String propertyTypeCode, String propertyValue, public NewTrackingSampleCriteria(String sampleTypeCode, String propertyTypeCode,
Collection<Long> alreadyTrackedSampleIds) String propertyValue, Collection<Long> alreadyTrackedSampleIds)
{ {
assert propertyTypeCode != null; assert propertyTypeCode != null;
assert propertyValue != null; assert propertyValue != null;
assert sampleTypeCode != null;
this.sampleTypeCode = sampleTypeCode;
this.propertyTypeCode = propertyTypeCode; this.propertyTypeCode = propertyTypeCode;
this.propertyValue = propertyValue; this.propertyValue = propertyValue;
this.alreadyTrackedSampleIds = alreadyTrackedSampleIds; this.alreadyTrackedSampleIds = alreadyTrackedSampleIds;
} }
public String getSampleTypeCode()
{
return sampleTypeCode;
}
public String getPropertyTypeCode() public String getPropertyTypeCode()
{ {
return propertyTypeCode; return propertyTypeCode;
......
...@@ -22,7 +22,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; ...@@ -22,7 +22,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingSampleCriteria;
import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer;
...@@ -106,15 +105,8 @@ public class OpenbisClientTest ...@@ -106,15 +105,8 @@ public class OpenbisClientTest
SessionContextDTO session = trackingServer.tryToAuthenticate(USER_ID, USER_PASSWORD); SessionContextDTO session = trackingServer.tryToAuthenticate(USER_ID, USER_PASSWORD);
final String sampleTypeCode = "CELL_PLATE"; final String sampleTypeCode = "CELL_PLATE";
final int lastSeenSampleId = 1000; // compare with 0
final int lastSeenDataSetId = 0; // compare with 3 final int lastSeenDataSetId = 0; // compare with 3
final TrackingSampleCriteria sampleCriteria =
new TrackingSampleCriteria(sampleTypeCode, lastSeenSampleId);
final List<Sample> samples =
trackingServer.listSamples(session.getSessionToken(), sampleCriteria);
System.out.println(TrackingHelper.trackedEntitiesInformation(samples, EntityKind.SAMPLE));
final TrackingDataSetCriteria dataSetCriteria = final TrackingDataSetCriteria dataSetCriteria =
new TrackingDataSetCriteria(sampleTypeCode, lastSeenDataSetId); new TrackingDataSetCriteria(sampleTypeCode, lastSeenDataSetId);
final List<ExternalData> dataSets = final List<ExternalData> dataSets =
...@@ -128,7 +120,8 @@ public class OpenbisClientTest ...@@ -128,7 +120,8 @@ public class OpenbisClientTest
{ 986L, 987L }); { 986L, 987L });
final NewTrackingSampleCriteria newSampleCriteria = final NewTrackingSampleCriteria newSampleCriteria =
new NewTrackingSampleCriteria(propertyTypeCode, propertyValue, alreadyTracked); new NewTrackingSampleCriteria(sampleTypeCode, propertyTypeCode, propertyValue,
alreadyTracked);
final List<Sample> newSamples = final List<Sample> newSamples =
trackingServer.listSamples(session.getSessionToken(), newSampleCriteria); trackingServer.listSamples(session.getSessionToken(), newSampleCriteria);
System.out System.out
......
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