Skip to content
Snippets Groups Projects
Commit af0c3067 authored by gakin's avatar gakin
Browse files

SSDM-2898 : Automatically created sample codes should form a continuous...

SSDM-2898 : Automatically created sample codes should form a continuous sequence - Temporary code generation.

SVN: 35373
parent 6f48f2d1
No related branches found
No related tags found
No related merge requests found
...@@ -17,15 +17,14 @@ ...@@ -17,15 +17,14 @@
package ch.systemsx.cisd.openbis.generic.server.business.bo; package ch.systemsx.cisd.openbis.generic.server.business.bo;
import java.util.List; import java.util.List;
import java.util.UUID;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
public class SampleCodeGeneratorInternal extends EntityCodeGenerator public class SampleCodeGeneratorTemporal extends EntityCodeGenerator
{ {
String transactionId; public SampleCodeGeneratorTemporal(IDAOFactory daoFactory)
public SampleCodeGeneratorInternal(String transactionId, IDAOFactory daoFactory)
{ {
super(daoFactory); super(daoFactory);
} }
...@@ -33,7 +32,7 @@ public class SampleCodeGeneratorInternal extends EntityCodeGenerator ...@@ -33,7 +32,7 @@ public class SampleCodeGeneratorInternal extends EntityCodeGenerator
@Override @Override
public List<String> generateCodes(String codePrefix, EntityKind entityKind, int numberOfCodes) public List<String> generateCodes(String codePrefix, EntityKind entityKind, int numberOfCodes)
{ {
return super.generateCodes("TEMP-" + transactionId + "-", entityKind, numberOfCodes); return super.generateCodes("TEMP." + UUID.randomUUID().toString() + ".", entityKind, numberOfCodes);
} }
} }
...@@ -34,6 +34,7 @@ import org.springframework.stereotype.Component; ...@@ -34,6 +34,7 @@ import org.springframework.stereotype.Component;
import ch.rinn.restrictions.Private; import ch.rinn.restrictions.Private;
import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
import ch.systemsx.cisd.common.properties.PropertyUtils;
import ch.systemsx.cisd.common.servlet.IRequestContextProvider; import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
import ch.systemsx.cisd.openbis.common.spring.IUncheckedMultipartFile; import ch.systemsx.cisd.openbis.common.spring.IUncheckedMultipartFile;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUpdates; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUpdates;
...@@ -46,6 +47,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerQueue; ...@@ -46,6 +47,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerQueue;
import ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerTask; import ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerTask;
import ch.systemsx.cisd.openbis.generic.client.web.server.translator.UserFailureExceptionTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.translator.UserFailureExceptionTranslator;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.exception.SampleUniqueCodeViolationExceptionAbstract; import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.exception.SampleUniqueCodeViolationExceptionAbstract;
import ch.systemsx.cisd.openbis.generic.shared.Constants;
import ch.systemsx.cisd.openbis.generic.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.IServer;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
...@@ -475,8 +477,10 @@ public class GenericClientService extends AbstractClientService implements IGene ...@@ -475,8 +477,10 @@ public class GenericClientService extends AbstractClientService implements IGene
final boolean allowExperiments, String excelSheetName, BatchOperationKind operationKind, String sessionToken) final boolean allowExperiments, String excelSheetName, BatchOperationKind operationKind, String sessionToken)
{ {
boolean updateExisting = (operationKind == BatchOperationKind.UPDATE); boolean updateExisting = (operationKind == BatchOperationKind.UPDATE);
boolean isCreateContinuousSampleCodes =
PropertyUtils.getBoolean(this.getServiceProperties(), Constants.CREATE_CONTINUOUS_SAMPLES_CODES_KEY, false);
SampleCodeGenerator sampleCodeGeneratorOrNull = SampleCodeGenerator sampleCodeGeneratorOrNull =
tryGetSampleCodeGenerator(isAutoGenerateCodes, sampleType.getGeneratedCodePrefix(), sessionToken); tryGetSampleCodeGenerator(isAutoGenerateCodes, isCreateContinuousSampleCodes, sampleType.getGeneratedCodePrefix(), sessionToken);
Collection<NamedInputStream> files = new ArrayList<NamedInputStream>(uploadedFiles.size()); Collection<NamedInputStream> files = new ArrayList<NamedInputStream>(uploadedFiles.size());
for (IUncheckedMultipartFile f : uploadedFiles.iterable()) for (IUncheckedMultipartFile f : uploadedFiles.iterable())
{ {
...@@ -524,7 +528,7 @@ public class GenericClientService extends AbstractClientService implements IGene ...@@ -524,7 +528,7 @@ public class GenericClientService extends AbstractClientService implements IGene
} }
private SampleCodeGenerator tryGetSampleCodeGenerator(boolean isAutoGenerateCodes, private SampleCodeGenerator tryGetSampleCodeGenerator(boolean isAutoGenerateCodes,
final String codePrefix, final String sessionToken) final boolean isCreateContinuousSampleCodes, final String codePrefix, final String sessionToken)
{ {
if (isAutoGenerateCodes) if (isAutoGenerateCodes)
{ {
...@@ -533,8 +537,16 @@ public class GenericClientService extends AbstractClientService implements IGene ...@@ -533,8 +537,16 @@ public class GenericClientService extends AbstractClientService implements IGene
@Override @Override
public List<String> generateCodes(int size) public List<String> generateCodes(int size)
{ {
return genericServer.generateCodes(sessionToken, codePrefix, if (isCreateContinuousSampleCodes)
EntityKind.SAMPLE, size); {
return genericServer.generateTemporalCodes(sessionToken, codePrefix,
EntityKind.SAMPLE, size);
} else
{
return genericServer.generateCodes(sessionToken, codePrefix,
EntityKind.SAMPLE, size);
}
} }
}; };
} else } else
......
...@@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.EntityCodeGenerator; ...@@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.EntityCodeGenerator;
import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO;
import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO;
import ch.systemsx.cisd.openbis.generic.server.business.bo.SampleCodeGeneratorTemporal;
import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; 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.IDataSetTypeSlaveServerPlugin;
...@@ -758,6 +759,15 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen ...@@ -758,6 +759,15 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen
return new EntityCodeGenerator(getDAOFactory()).generateCodes(prefix, entityKind, number); return new EntityCodeGenerator(getDAOFactory()).generateCodes(prefix, entityKind, number);
} }
@Override
@RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
public List<String> generateTemporalCodes(String sessionToken, String prefix,
ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind entityKind, int number)
{
checkSession(sessionToken);
return new SampleCodeGeneratorTemporal(getDAOFactory()).generateCodes(prefix, entityKind, number);
}
@Override @Override
@RolesAllowed(RoleWithHierarchy.SPACE_USER) @RolesAllowed(RoleWithHierarchy.SPACE_USER)
@Capability("WRITE_EXPERIMENT_SAMPLE") @Capability("WRITE_EXPERIMENT_SAMPLE")
......
...@@ -167,6 +167,14 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric ...@@ -167,6 +167,14 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric
return null; return null;
} }
@Override
public List<String> generateTemporalCodes(String sessionToken, String prefix, EntityKind entityKind, int number)
{
logAccess(sessionToken, "generate_temporal_codes", "PREFIX(%s) ENTITY_KIND(%s) NUMBER(%s)", prefix,
entityKind, number);
return null;
}
@Override @Override
public ExperimentUpdateResult updateExperiment(String sessionToken, ExperimentUpdatesDTO updates) public ExperimentUpdateResult updateExperiment(String sessionToken, ExperimentUpdatesDTO updates)
{ {
...@@ -300,5 +308,4 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric ...@@ -300,5 +308,4 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric
return materials.toString(); return materials.toString();
} }
} }
...@@ -201,6 +201,10 @@ public interface IGenericServer extends IServer ...@@ -201,6 +201,10 @@ public interface IGenericServer extends IServer
public List<String> generateCodes(String sessionToken, String prefix, EntityKind entityKind, public List<String> generateCodes(String sessionToken, String prefix, EntityKind entityKind,
int number); int number);
@Transactional
public List<String> generateTemporalCodes(String sessionToken, String prefix,
EntityKind entityKind, int number);
/** /**
* Saves changed experiment. * Saves changed experiment.
*/ */
......
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