From 5e0117b78b655a6e687521075a6c1c0fbb8b162c Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Fri, 15 May 2009 19:38:03 +0000 Subject: [PATCH] [LMS-870] added usage of techId to download/upload attachments and load sample/experiment edit data SVN: 11058 --- .../application/AttachmentsSection.java | 19 ++++---- .../client/application/GenericConstants.java | 4 +- .../web/client/dto/IAttachmentHolder.java | 8 ++-- .../generic/shared/IPluginCommonServer.java | 15 +++++++ .../web/client/IGenericClientService.java | 10 +++++ .../client/IGenericClientServiceAsync.java | 11 +++++ .../experiment/GenericExperimentEditForm.java | 6 +-- .../material/GenericMaterialEditForm.java | 5 +-- .../sample/GenericSampleEditForm.java | 7 +-- .../web/server/AttachmentDownloadServlet.java | 38 +++++++--------- .../web/server/GenericClientService.java | 38 ++++++++++++++++ .../plugin/generic/server/GenericServer.java | 40 +++++++++++++---- .../generic/server/GenericServerLogger.java | 43 ++++++++++++------- .../plugin/generic/shared/IGenericServer.java | 27 +++++++----- .../screening/server/ScreeningServer.java | 11 +++++ .../server/ScreeningServerLogger.java | 7 +++ .../shared/AbstractServerTestCase.java | 3 -- .../generic/shared/CommonTestUtils.java | 3 ++ .../shared/IPluginCommonServer.java.expected | 15 +++++++ .../server/AttachmentDownloadServletTest.java | 6 +-- .../generic/server/GenericServerTest.java | 9 ++-- .../shared/IGenericServer.java.expected | 27 +++++++----- 22 files changed, 246 insertions(+), 106 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AttachmentsSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AttachmentsSection.java index 00fc6f1c2a6..eed36891eaa 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AttachmentsSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AttachmentsSection.java @@ -52,6 +52,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.Windo import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Attachment; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.AttachmentHolderKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IAttachmentHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable; import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; @@ -138,7 +139,8 @@ public class AttachmentsSection<T extends IAttachmentHolder> extends SectionPane private void showVersionsPanel(final String fileName, final List<Attachment> allFiles) { - final String tabTitle = attachmentHolder.getIdentifier() + ">" + fileName; + final String tabTitle = + "Attachment " + attachmentHolder.getCode() + "/" + fileName; final ITabItemFactory tabFactory = new ITabItemFactory() { public ITabItem create() @@ -149,8 +151,7 @@ public class AttachmentsSection<T extends IAttachmentHolder> extends SectionPane public String getId() { - return createAttachmentVersionTabId(fileName, attachmentHolder - .getIdentifier()); + return createAttachmentVersionTabId(fileName, attachmentHolder); } }; DispatcherHelper.dispatchNaviEvent(tabFactory); @@ -189,7 +190,7 @@ public class AttachmentsSection<T extends IAttachmentHolder> extends SectionPane ContentPanel panel = new ContentPanel(); panel.setHeading("Versions of file '" + fileName + "' from " + attachmentHolder.getAttachmentHolderKind().name().toLowerCase() + " '" - + attachmentHolder.getIdentifier() + "'"); + + attachmentHolder.getCode() + "'"); final ListStore<AttachmentVersionModel> attachmentStore = new ListStore<AttachmentVersionModel>(); attachmentStore.add(AttachmentVersionModel.convert(oldVersions)); @@ -217,15 +218,16 @@ public class AttachmentsSection<T extends IAttachmentHolder> extends SectionPane attachmentGrid.getSelectionModel().deselectAll(); } }); - panel.setId(createAttachmentVersionTabId(fileName, attachmentHolder.getIdentifier())); + panel.setId(createAttachmentVersionTabId(fileName, attachmentHolder)); panel.add(attachmentGrid); return panel; } // @Private - static String createAttachmentVersionTabId(final String fileName, String experimentIdentifier) + static String createAttachmentVersionTabId(final String fileName, + final IIdentifiable identifiable) { - return GenericConstants.ID_PREFIX + "attachment-versions-" + experimentIdentifier + "_" + return GenericConstants.ID_PREFIX + "attachment-versions-" + identifiable.getId() + "_" + fileName; } @@ -243,8 +245,7 @@ public class AttachmentsSection<T extends IAttachmentHolder> extends SectionPane methodWithParameters.addParameter(GenericConstants.FILE_NAME_PARAMETER, fileName); methodWithParameters.addParameter(GenericConstants.ATTACHMENT_HOLDER_PARAMETER, exp .getAttachmentHolderKind().name()); - methodWithParameters.addParameter(GenericConstants.IDENTIFIER_PARAMETER, exp - .getIdentifier()); + methodWithParameters.addParameter(GenericConstants.TECH_ID_PARAMETER, exp.getId()); return methodWithParameters.toString(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java index 0579c590123..cf2a381c350 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java @@ -74,6 +74,6 @@ public final class GenericConstants public static final String LABEL_SEPARATOR = ":"; - /** The HTTP URL parameter used to specify the identifier. */ - public static final String IDENTIFIER_PARAMETER = "identifier"; + /** The HTTP URL parameter used to specify the technical id. */ + public static final String TECH_ID_PARAMETER = "id"; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IAttachmentHolder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IAttachmentHolder.java index 79d87750fe5..446359f29b9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IAttachmentHolder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/IAttachmentHolder.java @@ -18,16 +18,14 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.dto; import java.util.List; +import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable; + /** * @author Izabela Adamczyk */ -public interface IAttachmentHolder +public interface IAttachmentHolder extends IIdentifiable { public AttachmentHolderKind getAttachmentHolderKind(); - public String getIdentifier(); - - public Long getId(); - public List<Attachment> getAttachments(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java index 3274c3010a3..bcd1a5df0e3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java @@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RoleSet; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; @@ -55,6 +57,19 @@ public interface IPluginCommonServer extends IServer @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier) throws UserFailureException; + /** + * For given {@link TechId} returns the {@link SamplePE} and its children. + * + * @return never <code>null</code>. + * @throws UserFailureException if given <var>sessionToken</var> is invalid or whether sample + * uniquely identified by given <var>sampleId</var> does not exist. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleSet.OBSERVER) + public SampleGenerationDTO getSampleInfo(final String sessionToken, + @AuthorizationGuard(guardClass = SampleTechIdPredicate.class) final TechId sampleId) + throws UserFailureException; + /** * Registers a new sample. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java index e7816f49838..5bc2e8ed6f1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java @@ -63,6 +63,11 @@ public interface IGenericClientService extends IClientService */ public Sample getSampleInfo(final String sampleIdentifier) throws UserFailureException; + /** + * For given {@link TechId} returns corresponding {@link Sample}. + */ + public Sample getSampleInfo(final TechId sampleId) throws UserFailureException; + /** * Registers a new sample. */ @@ -84,6 +89,11 @@ public interface IGenericClientService extends IClientService public Experiment getExperimentInfo(final String experimentIdentifier) throws UserFailureException; + /** + * For given {@link TechId} returns corresponding {@link Experiment}. + */ + public Experiment getExperimentInfo(final TechId experimentId) throws UserFailureException; + /** * For given {@link TechId} returns corresponding {@link Material}. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java index 6b154f4b773..e87f976f6e6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java @@ -59,6 +59,11 @@ public interface IGenericClientServiceAsync extends IClientServiceAsync */ public void getSampleInfo(final String sampleIdentifier, AsyncCallback<Sample> asyncCallback); + /** + * @see IGenericClientService#getSampleInfo(TechId) + */ + public void getSampleInfo(final TechId sampleId, AsyncCallback<Sample> asyncCallback); + /** * @see IGenericClientService#registerSample(String, NewSample) */ @@ -79,6 +84,12 @@ public interface IGenericClientServiceAsync extends IClientServiceAsync public void getExperimentInfo(String experimentIdentifier, final AsyncCallback<Experiment> experimentInfoCallback); + /** + * @see IGenericClientService#getExperimentInfo(TechId) + */ + public void getExperimentInfo(TechId experimentId, + final AsyncCallback<Experiment> experimentInfoCallback); + /** * @see IGenericClientService#getMaterialInfo(TechId) */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java index a652b9a31fc..06b53b205d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java @@ -40,8 +40,7 @@ public final class GenericExperimentEditForm extends AbstractGenericExperimentRe private Experiment originalExperiment; public static DatabaseModificationAwareComponent create( - IViewContext<IGenericClientServiceAsync> viewContext, - IIdentifiable identifiable) + IViewContext<IGenericClientServiceAsync> viewContext, IIdentifiable identifiable) { GenericExperimentEditForm form = new GenericExperimentEditForm(viewContext, identifiable); return new DatabaseModificationAwareComponent(form, form); @@ -149,8 +148,7 @@ public final class GenericExperimentEditForm extends AbstractGenericExperimentRe @Override protected void loadForm() { - String experimentIdentifier = identifiableOrNull.getIdentifier(); - viewContext.getService().getExperimentInfo(experimentIdentifier, + viewContext.getService().getExperimentInfo(techIdOrNull, new ExperimentInfoCallback(viewContext)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java index f52efa4e8f0..b6db2040452 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java @@ -28,7 +28,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Material; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; @@ -135,8 +134,8 @@ public final class GenericMaterialEditForm @Override protected void loadForm() { - TechId materialId = new TechId(identifiableOrNull); - viewContext.getService().getMaterialInfo(materialId, new MaterialInfoCallback(viewContext)); + viewContext.getService().getMaterialInfo(techIdOrNull, + new MaterialInfoCallback(viewContext)); } public final class MaterialInfoCallback extends AbstractAsyncCallback<Material> diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java index 63052ff9239..75c724e2c87 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java @@ -70,8 +70,7 @@ public final class GenericSampleEditForm extends private ExperimentChooserFieldAdaptor experimentFieldOrNull; public static DatabaseModificationAwareComponent create( - IViewContext<IGenericClientServiceAsync> viewContext, - IIdentifiable identifiable) + IViewContext<IGenericClientServiceAsync> viewContext, IIdentifiable identifiable) { GenericSampleEditForm form = new GenericSampleEditForm(viewContext, identifiable); return new DatabaseModificationAwareComponent(form, form); @@ -237,9 +236,7 @@ public final class GenericSampleEditForm extends @Override protected void loadForm() { - String sampleIdentifier = identifiableOrNull.getIdentifier(); - viewContext.getService().getSampleInfo(sampleIdentifier, - new SampleInfoCallback(viewContext)); + viewContext.getService().getSampleInfo(techIdOrNull, new SampleInfoCallback(viewContext)); } public final class SampleInfoCallback extends AbstractAsyncCallback<Sample> diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServlet.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServlet.java index b1ebb13d740..9bbbf64f70f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServlet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServlet.java @@ -28,13 +28,8 @@ import ch.rinn.restrictions.Private; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.AttachmentHolderKind; import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractFileDownloadServlet; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; /** @@ -70,56 +65,53 @@ public class AttachmentDownloadServlet extends AbstractFileDownloadServlet final int version = Integer.parseInt(request.getParameter(GenericConstants.VERSION_PARAMETER)); final String fileName = request.getParameter(GenericConstants.FILE_NAME_PARAMETER); - final String identifier = request.getParameter(GenericConstants.IDENTIFIER_PARAMETER); + final String techIdString = request.getParameter(GenericConstants.TECH_ID_PARAMETER); final String attachmentHolderKind = request.getParameter(GenericConstants.ATTACHMENT_HOLDER_PARAMETER); - if (StringUtils.isNotBlank(fileName) && StringUtils.isNotBlank(identifier) + if (StringUtils.isNotBlank(fileName) && StringUtils.isNotBlank(techIdString) && StringUtils.isNotBlank(attachmentHolderKind)) { + final TechId techId = new TechId(Long.parseLong(techIdString)); if (attachmentHolderKind.equals(AttachmentHolderKind.EXPERIMENT.name())) { - return getExperimentFile(request, version, fileName, identifier); + return getExperimentFile(request, version, fileName, techId); } else if (attachmentHolderKind.equals(AttachmentHolderKind.SAMPLE.name())) { - return getSampleFile(request, version, fileName, identifier); + return getSampleFile(request, version, fileName, techId); } else if (attachmentHolderKind.equals(AttachmentHolderKind.PROJECT.name())) { - return getProjectFile(request, version, fileName, identifier); + return getProjectFile(request, version, fileName, techId); } } return null; } private FileContent getExperimentFile(final HttpServletRequest request, final int version, - final String fileName, final String identifier) + final String fileName, final TechId experimentId) { - final ExperimentIdentifier experiment = - new ExperimentIdentifierFactory(identifier).createIdentifier(); final AttachmentPE attachment = - server.getExperimentFileAttachment(getSessionToken(request), experiment, fileName, - version); + server.getExperimentFileAttachment(getSessionToken(request), experimentId, + fileName, version); return new FileContent(attachment.getAttachmentContent().getValue(), attachment .getFileName()); } private FileContent getSampleFile(final HttpServletRequest request, final int version, - final String fileName, final String identifier) + final String fileName, final TechId sampleId) { - final SampleIdentifier sample = new SampleIdentifierFactory(identifier).createIdentifier(); final AttachmentPE attachment = - server.getSampleFileAttachment(getSessionToken(request), sample, fileName, version); + server.getSampleFileAttachment(getSessionToken(request), sampleId, fileName, + version); return new FileContent(attachment.getAttachmentContent().getValue(), attachment .getFileName()); } private FileContent getProjectFile(final HttpServletRequest request, final int version, - final String fileName, final String identifier) + final String fileName, final TechId projectId) { - final ProjectIdentifier project = - new ProjectIdentifierFactory(identifier).createIdentifier(); final AttachmentPE attachment = - server.getProjectFileAttachment(getSessionToken(request), project, fileName, + server.getProjectFileAttachment(getSessionToken(request), projectId, fileName, version); return new FileContent(attachment.getAttachmentContent().getValue(), attachment .getFileName()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java index 14939ae50d7..4e699356ba7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java @@ -140,6 +140,27 @@ public final class GenericClientService extends AbstractClientService implements return getSampleGenerationInfo(sampleIdentifier).getGenerator(); } + public final SampleGeneration getSampleGenerationInfo(final TechId sampleId) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + try + { + final String sessionToken = getSessionToken(); + final SampleGenerationDTO sampleGenerationDTO = + genericServer.getSampleInfo(sessionToken, sampleId); + return SampleTranslator.translate(sampleGenerationDTO); + } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + + public final Sample getSampleInfo(final TechId sampleId) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + return getSampleGenerationInfo(sampleId).getGenerator(); + } + public final void registerSample(final String sessionKey, final NewSample newSample) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { @@ -320,6 +341,23 @@ public final class GenericClientService extends AbstractClientService implements } } + public final Experiment getExperimentInfo(final TechId experimentId) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + try + { + final String sessionToken = getSessionToken(); + final ExperimentPE experiment = + genericServer.getExperimentInfo(sessionToken, experimentId); + return ExperimentTranslator.translate(experiment, + ExperimentTranslator.LoadableFields.PROPERTIES, + ExperimentTranslator.LoadableFields.ATTACHMENTS); + } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + public final Material getMaterialInfo(final TechId materialId) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java index f4e6824bd93..65da88679d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java @@ -60,7 +60,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; @@ -133,6 +132,20 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen .getSampleInfo(session, sample); } + public final SampleGenerationDTO getSampleInfo(final String sessionToken, final TechId sampleId) + { + assert sessionToken != null : "Unspecified session token."; + assert sampleId != null : "Unspecified sample techId."; + + final Session session = getSessionManager().getSession(sessionToken); + final ISampleBO sampleBO = businessObjectFactory.createSampleBO(session); + sampleBO.loadDataByTechId(sampleId); + sampleBO.enrichWithAttachments(); + final SamplePE sample = sampleBO.getSample(); + return getSampleTypeSlaveServerPlugin(sample.getSampleType()) + .getSampleInfo(session, sample); + } + public final void registerSample(final String sessionToken, final NewSample newSample, List<AttachmentPE> attachments) { @@ -162,6 +175,17 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen return experiment; } + public ExperimentPE getExperimentInfo(final String sessionToken, final TechId experimentId) + { + final Session session = getSessionManager().getSession(sessionToken); + final IExperimentBO experimentBO = businessObjectFactory.createExperimentBO(session); + experimentBO.loadDataByTechId(experimentId); + experimentBO.enrichWithProperties(); + experimentBO.enrichWithAttachments(); + final ExperimentPE experiment = experimentBO.getExperiment(); + return experiment; + } + public MaterialPE getMaterialInfo(final String sessionToken, final TechId materialId) { final Session session = getSessionManager().getSession(sessionToken); @@ -184,12 +208,12 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen } public AttachmentPE getExperimentFileAttachment(final String sessionToken, - final ExperimentIdentifier experimentIdentifier, final String filename, - final int version) throws UserFailureException + final TechId experimentId, final String filename, final int version) + throws UserFailureException { final Session session = getSessionManager().getSession(sessionToken); final IExperimentBO experimentBO = businessObjectFactory.createExperimentBO(session); - experimentBO.loadByExperimentIdentifier(experimentIdentifier); + experimentBO.loadDataByTechId(experimentId); return experimentBO.getExperimentFileAttachment(filename, version); } @@ -303,21 +327,21 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen materialTable.save(); } - public AttachmentPE getProjectFileAttachment(String sessionToken, ProjectIdentifier project, + public AttachmentPE getProjectFileAttachment(String sessionToken, TechId projectId, String fileName, int version) { final Session session = getSessionManager().getSession(sessionToken); final IProjectBO bo = businessObjectFactory.createProjectBO(session); - bo.loadByProjectIdentifier(project); + bo.loadDataByTechId(projectId); return bo.getProjectFileAttachment(fileName, version); } - public AttachmentPE getSampleFileAttachment(String sessionToken, SampleIdentifier sample, + public AttachmentPE getSampleFileAttachment(String sessionToken, TechId sampleId, String fileName, int version) { final Session session = getSessionManager().getSession(sessionToken); final ISampleBO bo = businessObjectFactory.createSampleBO(session); - bo.loadBySampleIdentifier(sample); + bo.loadDataByTechId(sampleId); return bo.getSampleFileAttachment(fileName, version); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java index 59aa8d82ac5..0fe6fd67410 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java @@ -42,7 +42,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleGenerationDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; @@ -74,6 +73,12 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric return null; } + public final SampleGenerationDTO getSampleInfo(final String sessionToken, final TechId sampleId) + { + logAccess(sessionToken, "get_sample_info", "ID(%s)", sampleId); + return null; + } + public void registerSample(final String sessionToken, final NewSample newSample, List<AttachmentPE> attachments) { @@ -88,6 +93,12 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric return null; } + public ExperimentPE getExperimentInfo(final String sessionToken, final TechId experimentId) + { + logAccess(sessionToken, "get_experiment_info", "ID(%s)", experimentId); + return null; + } + public MaterialPE getMaterialInfo(final String sessionToken, final TechId materialId) { logAccess(sessionToken, "get_material_info", "ID(%s)", materialId); @@ -101,15 +112,6 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric return null; } - public AttachmentPE getExperimentFileAttachment(final String sessionToken, - final ExperimentIdentifier experimentIdentifier, final String filename, - final int version) throws UserFailureException - { - logAccess(sessionToken, "get_attachment", "EXPERIMENT_IDENTIFIER(%s) FILE(%s) VERSION(%s)", - experimentIdentifier, filename, version); - return null; - } - public final void registerSamples(final String sessionToken, final SampleType sampleType, final List<NewSample> newSamples) throws UserFailureException { @@ -132,19 +134,28 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric materialTypeCode, CollectionUtils.abbreviate(newMaterials, 20)); } - public AttachmentPE getProjectFileAttachment(String sessionToken, ProjectIdentifier project, + public AttachmentPE getExperimentFileAttachment(final String sessionToken, + final TechId experimentId, final String filename, final int version) + throws UserFailureException + { + logAccess(sessionToken, "get_attachment", "EXPERIMENT_ID(%s) FILE(%s) VERSION(%s)", + experimentId, filename, version); + return null; + } + + public AttachmentPE getProjectFileAttachment(String sessionToken, TechId projectId, String fileName, int version) { - logAccess(sessionToken, "get_attachment", "PROJECT_IDENTIFIER(%s) FILE(%s) VERSION(%s)", - project, fileName, version); + logAccess(sessionToken, "get_attachment", "PROJECT_ID(%s) FILE(%s) VERSION(%s)", projectId, + fileName, version); return null; } - public AttachmentPE getSampleFileAttachment(String sessionToken, SampleIdentifier sample, + public AttachmentPE getSampleFileAttachment(String sessionToken, TechId sampleId, String fileName, int version) { - logAccess(sessionToken, "get_attachment", "SAMPLE_IDENTIFIER(%s) FILE(%s) VERSION(%s)", - sample, fileName, version); + logAccess(sessionToken, "get_attachment", "SAMPLE_ID(%s) FILE(%s) VERSION(%s)", sampleId, + fileName, version); return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java index d682ea2c12b..cd60e63a512 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java @@ -35,6 +35,9 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewExperi import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NullableGroupIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.AbstractTechIdPredicate.ExperimentTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.AbstractTechIdPredicate.ProjectTechIdPredicate; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; @@ -51,7 +54,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; /** @@ -71,6 +73,14 @@ public interface IGenericServer extends IPluginCommonServer String sessionToken, @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ExperimentIdentifier identifier); + /** + * For given {@link TechId} returns the corresponding {@link ExperimentPE}. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleSet.OBSERVER) + public ExperimentPE getExperimentInfo(String sessionToken, + @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId); + /** * For given {@link TechId} returns the corresponding {@link MaterialPE}. */ @@ -91,9 +101,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getExperimentFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ExperimentIdentifier experimentIdentifier, + public AttachmentPE getExperimentFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId, String filename, int version) throws UserFailureException; /** @@ -133,9 +142,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getSampleFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) SampleIdentifier sample, + public AttachmentPE getSampleFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = SampleTechIdPredicate.class) TechId sampleId, String fileName, int version); /** @@ -143,9 +151,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getProjectFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ProjectIdentifier project, + public AttachmentPE getProjectFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = ProjectTechIdPredicate.class) TechId projectId, String fileName, int version); /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java index d2171609765..5fa2379958c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java @@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.plugin.IDataSetTypeSlaveServerPlugin; import ch.systemsx.cisd.openbis.generic.server.plugin.ISampleTypeSlaveServerPlugin; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleGenerationDTO; @@ -102,6 +103,16 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl .getSampleInfo(session, sample); } + public final SampleGenerationDTO getSampleInfo(final String sessionToken, final TechId sampleId) + { + final Session session = getSessionManager().getSession(sessionToken); + final ISampleBO sampleBO = businessObjectFactory.createSampleBO(session); + sampleBO.loadDataByTechId(sampleId); + final SamplePE sample = sampleBO.getSample(); + return getSampleTypeSlaveServerPlugin(sample.getSampleType()) + .getSampleInfo(session, sample); + } + public final void registerSample(final String sessionToken, final NewSample newSample, List<AttachmentPE> attachments) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServerLogger.java index 96bab1b0843..dbf560041c1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServerLogger.java @@ -20,6 +20,7 @@ import java.util.List; import ch.systemsx.cisd.authentication.ISessionManager; import ch.systemsx.cisd.openbis.generic.server.AbstractServerLogger; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleGenerationDTO; @@ -51,6 +52,12 @@ final class ScreeningServerLogger extends AbstractServerLogger implements IScree return null; } + public final SampleGenerationDTO getSampleInfo(final String sessionToken, final TechId sampleId) + { + logAccess(sessionToken, "get_plate_info", "ID(%s)", sampleId); + return null; + } + public void registerSample(final String sessionToken, final NewSample newSample, List<AttachmentPE> attachments) { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java index 2c7bd75f3a4..762761f9210 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java @@ -55,7 +55,6 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleTypeDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyDAO; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; @@ -79,8 +78,6 @@ public abstract class AbstractServerTestCase extends AssertJUnit protected static final Session SESSION = new Session(CommonTestUtils.USER_ID, SESSION_TOKEN, PRINCIPAL, "remote-host", 1); - protected static final TechId DUMMY_TECH_ID = new TechId(1L); - protected BufferedAppender logRecorder; protected Mockery context; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java index bb6c3466aed..c4baa9f8f1a 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/CommonTestUtils.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.List; import ch.systemsx.cisd.authentication.Principal; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentContentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataTypePE; @@ -57,6 +58,8 @@ public class CommonTestUtils private static final VocabularyTermPE HEAD = createVocabularyTerm("HEAD"); + public static final TechId DUMMY_TECH_ID = new TechId(1L); + public final static String ATTACHMENT_CONTENT_TEXT = "Lorem ipsum..."; public final static String HOME_DATABASE_INSTANCE_CODE = "HOME_DATABASE"; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java.expected index 0482200f5f7..4bbeea92309 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IPluginCommonServer.java.expected @@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RoleSet; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; @@ -55,6 +57,19 @@ public interface IPluginCommonServer extends IServer @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier) throws UserFailureException; + /** + * For given {@link TechId} returns the {@link SamplePE} and its children. + * + * @return never <code>null</code>. + * @throws UserFailureException if given <var>sessionToken</var> is invalid or whether sample + * uniquely identified by given <var>sampleId</var> does not exist. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleSet.OBSERVER) + public SampleGenerationDTO getSampleInfo(final String sessionToken, + @AuthorizationGuard(guardClass = SampleTechIdPredicate.class) final TechId sampleId) + throws UserFailureException; + /** * Registers a new sample. */ diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServletTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServletTest.java index 678f76be20b..76c7a8e1b01 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServletTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/AttachmentDownloadServletTest.java @@ -100,8 +100,8 @@ public final class AttachmentDownloadServletTest will(returnValue(CommonTestUtils.FILENAME)); one(servletRequest).getParameter(GenericConstants.ATTACHMENT_HOLDER_PARAMETER); will(returnValue(AttachmentHolderKind.EXPERIMENT.name())); - one(servletRequest).getParameter(GenericConstants.IDENTIFIER_PARAMETER); - will(returnValue(CommonTestUtils.createExperimentIdentifier().toString())); + one(servletRequest).getParameter(GenericConstants.TECH_ID_PARAMETER); + will(returnValue(CommonTestUtils.DUMMY_TECH_ID.toString())); one(servletRequest).getSession(false); will(Expectations.returnValue(httpSession)); @@ -110,7 +110,7 @@ public final class AttachmentDownloadServletTest will(Expectations.returnValue(session)); one(genericServer).getExperimentFileAttachment(session.getSessionToken(), - CommonTestUtils.createExperimentIdentifier(), CommonTestUtils.FILENAME, + CommonTestUtils.DUMMY_TECH_ID, CommonTestUtils.FILENAME, CommonTestUtils.VERSION_22); will(returnValue(attachment)); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java index 60b01353def..69883626ab5 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java @@ -197,8 +197,7 @@ public final class GenericServerTest extends AbstractServerTestCase public void testGetExperimentFileAttachment() throws Exception { prepareGetSession(); - final ExperimentIdentifier experimentIdentifier = - CommonTestUtils.createExperimentIdentifier(); + final TechId experimentId = CommonTestUtils.DUMMY_TECH_ID; final AttachmentPE attachmentPE = CommonTestUtils.createAttachment(); context.checking(new Expectations() { @@ -206,7 +205,7 @@ public final class GenericServerTest extends AbstractServerTestCase one(genericBusinessObjectFactory).createExperimentBO(SESSION); will(returnValue(experimentBO)); - one(experimentBO).loadByExperimentIdentifier(experimentIdentifier); + one(experimentBO).loadDataByTechId(experimentId); one(experimentBO).getExperimentFileAttachment(attachmentPE.getFileName(), attachmentPE.getVersion()); @@ -215,7 +214,7 @@ public final class GenericServerTest extends AbstractServerTestCase } }); assertEquals(attachmentPE, createServer().getExperimentFileAttachment(SESSION_TOKEN, - experimentIdentifier, attachmentPE.getFileName(), attachmentPE.getVersion())); + experimentId, attachmentPE.getFileName(), attachmentPE.getVersion())); context.assertIsSatisfied(); } @@ -426,7 +425,7 @@ public final class GenericServerTest extends AbstractServerTestCase @Test public void testEditMaterialNothingChanged() throws Exception { - final TechId materialId = DUMMY_TECH_ID; + final TechId materialId = CommonTestUtils.DUMMY_TECH_ID; final List<MaterialProperty> properties = new ArrayList<MaterialProperty>(); prepareGetSession(); final Date version = new Date(1); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected index d682ea2c12b..cd60e63a512 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected @@ -35,6 +35,9 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewExperi import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NewSamplePredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.NullableGroupIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleOwnerIdentifierPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.SampleTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.AbstractTechIdPredicate.ExperimentTechIdPredicate; +import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.AbstractTechIdPredicate.ProjectTechIdPredicate; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; @@ -51,7 +54,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; /** @@ -71,6 +73,14 @@ public interface IGenericServer extends IPluginCommonServer String sessionToken, @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ExperimentIdentifier identifier); + /** + * For given {@link TechId} returns the corresponding {@link ExperimentPE}. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleSet.OBSERVER) + public ExperimentPE getExperimentInfo(String sessionToken, + @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId); + /** * For given {@link TechId} returns the corresponding {@link MaterialPE}. */ @@ -91,9 +101,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getExperimentFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ExperimentIdentifier experimentIdentifier, + public AttachmentPE getExperimentFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = ExperimentTechIdPredicate.class) TechId experimentId, String filename, int version) throws UserFailureException; /** @@ -133,9 +142,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getSampleFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) SampleIdentifier sample, + public AttachmentPE getSampleFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = SampleTechIdPredicate.class) TechId sampleId, String fileName, int version); /** @@ -143,9 +151,8 @@ public interface IGenericServer extends IPluginCommonServer */ @Transactional @RolesAllowed(RoleSet.OBSERVER) - public AttachmentPE getProjectFileAttachment( - String sessionToken, - @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) ProjectIdentifier project, + public AttachmentPE getProjectFileAttachment(String sessionToken, + @AuthorizationGuard(guardClass = ProjectTechIdPredicate.class) TechId projectId, String fileName, int version); /** -- GitLab