Skip to content
Snippets Groups Projects
Commit 4c676019 authored by felmer's avatar felmer
Browse files

SE-326 create column definitions only once

SVN: 19209
parent 4e29ff90
No related branches found
No related tags found
No related merge requests found
...@@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns ...@@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.CommonColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.CommonColumnDefinition;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
...@@ -58,11 +59,21 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData ...@@ -58,11 +59,21 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData
/** NOTE: it's assumed that columnDefinitions do not contain custom columns */ /** NOTE: it's assumed that columnDefinitions do not contain custom columns */
public BaseEntityModel(final GridRowModel<T> entity, public BaseEntityModel(final GridRowModel<T> entity,
List<? extends IColumnDefinition<T>> columnDefinitions) List<? extends IColumnDefinition<T>> columnDefinitions)
{
this(entity, columnDefinitions, false);
}
public BaseEntityModel(final GridRowModel<T> entity,
List<? extends IColumnDefinition<T>> columnDefinitions, boolean ignoreCustomColumns)
{ {
set(ModelDataPropertyNames.OBJECT, entity.getOriginalObject()); set(ModelDataPropertyNames.OBJECT, entity.getOriginalObject());
for (IColumnDefinition<T> column : columnDefinitions) for (IColumnDefinition<T> column : columnDefinitions)
{ {
if (ignoreCustomColumns && column instanceof GridCustomColumnDefinition)
{
continue;
}
String value = renderColumnValue(entity, column); String value = renderColumnValue(entity, column);
set(column.getIdentifier(), value); set(column.getIdentifier(), value);
if (column instanceof IColumnDefinitionUI<?>) if (column instanceof IColumnDefinitionUI<?>)
......
...@@ -87,6 +87,10 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn ...@@ -87,6 +87,10 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn
private List<AbundanceColumnDefinition> abundanceColumnDefinitions; private List<AbundanceColumnDefinition> abundanceColumnDefinitions;
private boolean abundanceColumnDefinitionsChanged = true;
private ColumnDefsAndConfigs<ProteinInfo> columnDefinitionsAndConfigs;
private IDataRefreshCallback postRefreshCallback = new IDataRefreshCallback() private IDataRefreshCallback postRefreshCallback = new IDataRefreshCallback()
{ {
public void postRefresh(boolean wasSuccessful) public void postRefresh(boolean wasSuccessful)
...@@ -182,6 +186,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn ...@@ -182,6 +186,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn
criteria.setTreatmentTypeCode(treatmentTypeCode); criteria.setTreatmentTypeCode(treatmentTypeCode);
criteria.setAggregateOriginal(aggregateOriginal); criteria.setAggregateOriginal(aggregateOriginal);
abundanceColumnDefinitions = definitions; abundanceColumnDefinitions = definitions;
abundanceColumnDefinitionsChanged = true;
refresh(postRefreshCallback, true); refresh(postRefreshCallback, true);
} }
...@@ -195,49 +200,53 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn ...@@ -195,49 +200,53 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn
{ {
return ProteinColDefKind.values(); return ProteinColDefKind.values();
} }
@Override @Override
protected ColumnDefsAndConfigs<ProteinInfo> createColumnsDefinition() protected ColumnDefsAndConfigs<ProteinInfo> createColumnsDefinition()
{ {
ColumnDefsAndConfigs<ProteinInfo> definitions = super.createColumnsDefinition(); if (columnDefinitionsAndConfigs == null || abundanceColumnDefinitionsChanged)
List<IColumnDefinitionUI<ProteinInfo>> columns =
new ArrayList<IColumnDefinitionUI<ProteinInfo>>();
List<String> abundanceColumnIDs = new ArrayList<String>();
for (AbundanceColumnDefinition definition : abundanceColumnDefinitions)
{ {
String header = definition.getSampleCode(); columnDefinitionsAndConfigs = super.createColumnsDefinition();
Map<String, String> properties = new HashMap<String, String>(); List<IColumnDefinitionUI<ProteinInfo>> columns =
properties.put(ABUNDANCE_PROPERTY_KEY, header); new ArrayList<IColumnDefinitionUI<ProteinInfo>>();
List<Treatment> treatments = definition.getTreatments(); List<String> abundanceColumnIDs = new ArrayList<String>();
if (treatments.isEmpty() == false) for (AbundanceColumnDefinition definition : abundanceColumnDefinitions)
{ {
header = ""; String header = definition.getSampleCode();
String delim = ""; Map<String, String> properties = new HashMap<String, String>();
for (Treatment treatment : treatments) properties.put(ABUNDANCE_PROPERTY_KEY, header);
List<Treatment> treatments = definition.getTreatments();
if (treatments.isEmpty() == false)
{ {
header += delim + treatment; header = "";
delim = ", "; String delim = "";
properties.put(treatment.getTypeCode(), treatment.getValue()); for (Treatment treatment : treatments)
{
header += delim + treatment;
delim = ", ";
properties.put(treatment.getTypeCode(), treatment.getValue());
}
} }
} final long sampleID = definition.getID();
final long sampleID = definition.getID(); IColumnDefinitionUI<ProteinInfo> columnDefinition =
IColumnDefinitionUI<ProteinInfo> columnDefinition =
new InternalAbundanceColumnDefinition(header, properties, 100, false, sampleID); new InternalAbundanceColumnDefinition(header, properties, 100, false, sampleID);
abundanceColumnIDs.add(columnDefinition.getIdentifier()); abundanceColumnIDs.add(columnDefinition.getIdentifier());
columns.add(columnDefinition); columns.add(columnDefinition);
} }
definitions.addColumns(columns); columnDefinitionsAndConfigs.addColumns(columns);
definitions.setGridCellRendererFor(ProteinColDefKind.ACCESSION_NUMBER.id(), columnDefinitionsAndConfigs.setGridCellRendererFor(ProteinColDefKind.ACCESSION_NUMBER.id(),
createInternalLinkCellRenderer()); createInternalLinkCellRenderer());
RealNumberRenderer renderer = RealNumberRenderer renderer =
new RealNumberRenderer(viewContext.getDisplaySettingsManager() new RealNumberRenderer(viewContext.getDisplaySettingsManager()
.getRealNumberFormatingParameters()); .getRealNumberFormatingParameters());
for (String abundanceColumneID : abundanceColumnIDs) for (String abundanceColumneID : abundanceColumnIDs)
{ {
definitions.setGridCellRendererFor(abundanceColumneID, renderer); columnDefinitionsAndConfigs.setGridCellRendererFor(abundanceColumneID, renderer);
}
columnDefinitionsAndConfigs.setGridCellRendererFor(ProteinColDefKind.COVERAGE.id(), renderer);
abundanceColumnDefinitionsChanged = false;
} }
definitions.setGridCellRendererFor(ProteinColDefKind.COVERAGE.id(), renderer); return columnDefinitionsAndConfigs;
return definitions;
} }
@Override @Override
...@@ -245,7 +254,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn ...@@ -245,7 +254,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn
{ {
Set<IColumnDefinition<ProteinInfo>> columnDefs = createColumnsDefinition().getColumnDefs(); Set<IColumnDefinition<ProteinInfo>> columnDefs = createColumnsDefinition().getColumnDefs();
return new BaseEntityModel<ProteinInfo>(entity, return new BaseEntityModel<ProteinInfo>(entity,
new ArrayList<IColumnDefinition<ProteinInfo>>(columnDefs)); new ArrayList<IColumnDefinition<ProteinInfo>>(columnDefs), true);
} }
@Override @Override
......
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