Skip to content
Snippets Groups Projects
Commit 7701f65c authored by cramakri's avatar cramakri
Browse files

LMS-1367 Fix custom columns issues.

SVN: 14753
parent b14067fb
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
package ch.systemsx.cisd.openbis.plugin.screening.client.web.server; package ch.systemsx.cisd.openbis.plugin.screening.client.web.server;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -24,6 +26,7 @@ import org.springframework.stereotype.Component; ...@@ -24,6 +26,7 @@ import org.springframework.stereotype.Component;
import ch.rinn.restrictions.Private; import ch.rinn.restrictions.Private;
import ch.systemsx.cisd.common.servlet.IRequestContextProvider; import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GenericTableRowColumnDefinition;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig;
...@@ -33,8 +36,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureE ...@@ -33,8 +36,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureE
import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService; import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractClientService;
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.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.IServer;
import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
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.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableColumnHeader;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableRow; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableRow;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived;
...@@ -175,10 +180,38 @@ public final class ScreeningClientService extends AbstractClientService implemen ...@@ -175,10 +180,38 @@ public final class ScreeningClientService extends AbstractClientService implemen
{ {
PlateMetadataProvider dataProvider = PlateMetadataProvider dataProvider =
new PlateMetadataProvider(server, getSessionToken(), sampleId); new PlateMetadataProvider(server, getSessionToken(), sampleId);
// This is a different kind of query because the criteria does not define which columns
// are available -- the provider does. Thus, inform the criteria which columns are
// available.
updateResultSetColumnsFromProvider(criteria, dataProvider);
ResultSet<GenericTableRow> resultSet = listEntities(criteria, dataProvider); ResultSet<GenericTableRow> resultSet = listEntities(criteria, dataProvider);
return new GenericTableResultSet(resultSet, dataProvider.getHeaders()); return new GenericTableResultSet(resultSet, dataProvider.getHeaders());
} }
/**
* In the plate metadata query, the result set does not define which columns are available --
* the provider does. This method informs the result set about the columns availible in the
* provider.
*/
private void updateResultSetColumnsFromProvider(
IResultSetConfig<String, GenericTableRow> criteria, PlateMetadataProvider dataProvider)
{
Set<IColumnDefinition<GenericTableRow>> columns = criteria.getAvailableColumns();
Set<String> identifiers = new HashSet<String>();
for (IColumnDefinition<GenericTableRow> colDef : columns)
{
identifiers.add(colDef.getIdentifier());
}
List<GenericTableColumnHeader> headers = dataProvider.getHeaders();
for (GenericTableColumnHeader header : headers)
{
// the header's code is the same as the definition's identifier
if (!identifiers.contains(header.getCode()))
columns.add(new GenericTableRowColumnDefinition(header, header.getTitle()));
}
}
public String prepareExportPlateMetadata(TableExportCriteria<GenericTableRow> criteria) public String prepareExportPlateMetadata(TableExportCriteria<GenericTableRow> criteria)
throws UserFailureException throws UserFailureException
{ {
......
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