diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java index 87a8793f6b2cefa57f16e3d8db81dbacdf36dbbf..5cf5d7a8776826c330be052174ce5f92c9fc3c98 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java @@ -53,9 +53,11 @@ public class LinkRenderer private static final String LINK_STYLE = "link-style"; - @Deprecated - public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer( - final boolean renderOriginalValueForEmptyToken) + /** + * @deprecated doesn't support invalidation; use {@link #createLinkRenderer(boolean, int)} + */ + @Deprecated + public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer() { return new GridCellRenderer<BaseEntityModel<?>>() { @@ -70,9 +72,7 @@ public class LinkRenderer { String originalValue = model.get(property).toString(); String tokenOrNull = model.tryGetLink(property); - if (tokenOrNull == null - && (renderOriginalValueForEmptyToken || ClientStaticState - .isSimpleMode())) + if (tokenOrNull == null && ClientStaticState.isSimpleMode()) { return new MultilineHTML(originalValue).toString(); } else @@ -147,11 +147,6 @@ public class LinkRenderer }; } - public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer() - { - return createLinkRenderer(false); - } - public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer( final String overridenLinkTextOrNull) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewerWithVerticalSplit.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewerWithVerticalSplit.java index e778665ee723c3ae2d899002d0e0c9cbee517333..8a689fd08a7fe14b53535a8ed20f034484c351d0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewerWithVerticalSplit.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewerWithVerticalSplit.java @@ -39,7 +39,7 @@ public abstract class AbstractViewerWithVerticalSplit<D extends IEntityInformati { private final static String LEFT_PANEL_PREFIX = "left_panel_"; - private final static int INITIAL_LEFT_PANEL_SIZE = 300; + private final static int INITIAL_LEFT_PANEL_SIZE = 330; protected AbstractViewerWithVerticalSplit(IViewContext<?> viewContext, String id) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java index 8850177845a7d1f3290b9aea717932ef1c715a29..4020a976ef06469e3bc88ee0eb1d39ba0918c605 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java @@ -131,7 +131,7 @@ public abstract class TypedTableGrid<T extends ISerializable> if (value instanceof EntityTableCell) { EntityTableCell entityTableCell = (EntityTableCell) value; - if (entityTableCell.isMissing()) + if (entityTableCell.isMissing() || entityTableCell.isFake()) { return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index 57c2aac5855836bd7b1023ce5d09db6334359ba3..89da2303b88ab5cb085d59fd11ca0d3666280f61 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -25,7 +25,6 @@ import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; -import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; @@ -37,7 +36,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ComponentProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.DisplayedAndSelectedEntities; @@ -317,9 +315,6 @@ public class ExperimentBrowserGrid extends AbstractEntityGrid<Experiment> { ColumnDefsAndConfigs<TableModelRowWithObject<Experiment>> schema = super.createColumnsDefinition(); - GridCellRenderer<BaseEntityModel<?>> linkCellRenderer = createInternalLinkCellRenderer(); - schema.setGridCellRendererFor(ExperimentBrowserGridColumnIDs.EXPERIMENT_IDENTIFIER, - linkCellRenderer); schema.setGridCellRendererFor(ExperimentBrowserGridColumnIDs.REGISTRATOR, PersonRenderer.REGISTRATOR_RENDERER); schema.setGridCellRendererFor(ExperimentBrowserGridColumnIDs.SHOW_DETAILS_LINK, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentListDeletionConfirmationDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentListDeletionConfirmationDialog.java index 2b8812ea398e37aff0f77ac4b3efb02676cf7d2e..f8ac9e658d3b703e821551ee6acb8ff3c9ed95b7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentListDeletionConfirmationDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentListDeletionConfirmationDialog.java @@ -29,6 +29,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experim import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataListDeletionConfirmationDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedIdHolderCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.InvalidationUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -64,7 +65,10 @@ public final class ExperimentListDeletionConfirmationDialog extends AbstractAsyncCallback<Void> invalidationCallback, Experiment experiment) { super(viewContext, Collections.singletonList(experiment), deletionCallback); - this.withInvalidation(invalidationCallback); + if (InvalidationUtils.isInvalid(experiment) == false) + { + this.withInvalidation(invalidationCallback); + } this.viewContext = viewContext; this.singleDataOrNull = experiment; this.selectedAndDisplayedItemsOrNull = null; @@ -73,8 +77,7 @@ public final class ExperimentListDeletionConfirmationDialog extends @Override protected void executeDeletion(AsyncCallback<Void> deletionCallback) { - DeletionType deletionType = - isPermanentDeletion() ? DeletionType.PERMANENT : DeletionType.INVALIDATION; + final DeletionType deletionType = getDeletionType(); if (selectedAndDisplayedItemsOrNull != null) { final DisplayedOrSelectedIdHolderCriteria<TableModelRowWithObject<Experiment>> uploadCriteria = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index fb52ef297adfcc7ffecdb35b037d96d57d8cfe76..05e71004143902c1acee494d9367673c6444c66e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -324,7 +324,6 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample> propertyTypesAndCriteriaProvider = criteriaProvider; // NOTE: links to sample, container and experiment are handled by EntityTableCell linkProject(); - linkParent(); } @Override @@ -376,45 +375,6 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample> }); } - private void linkParent() - { - registerListenerAndLinkGenerator(SampleGridColumnIDs.PARENTS, - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - Sample parent = getParentOrNull(rowItem.getObjectOrNull()); - if (parent != null) - { - showEntityInformationHolderViewer(parent, false, specialKeyPressed); - } - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - Sample parent = getParentOrNull(entity); - return LinkExtractor.tryExtract(parent); - } - - private Sample getParentOrNull(Sample entity) - { - if (entity.getParents().size() == 1) - { - return entity.getGeneratedFrom(); - } - return null; - } - }); - } - - @Override - protected GridCellRenderer<BaseEntityModel<?>> createInternalLinkCellRenderer() - { - return LinkRenderer.createLinkRenderer(true); - } - @Override protected String translateColumnIdToDictionaryKey(String columnID) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleListDeletionConfirmationDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleListDeletionConfirmationDialog.java index 2c7e4593d40f3fe129f69610d691bbb827b9895f..3b2aac533eb86a2d6b781e29335158b8edcf5896 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleListDeletionConfirmationDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleListDeletionConfirmationDialog.java @@ -31,6 +31,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedIdHolderCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.InvalidationUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -64,7 +65,10 @@ public final class SampleListDeletionConfirmationDialog<T extends IIdHolder> ext AbstractAsyncCallback<Void> invalidationCallback, T sample) { super(viewContext, data, deletionCallback); - this.withInvalidation(invalidationCallback); + if (InvalidationUtils.isInvalid(sample) == false) + { + this.withInvalidation(invalidationCallback); + } this.viewContext = viewContext; this.singleDataOrNull = sample; this.selectedAndDisplayedItemsOrNull = null; @@ -73,8 +77,7 @@ public final class SampleListDeletionConfirmationDialog<T extends IIdHolder> ext @Override protected void executeDeletion(AsyncCallback<Void> deletionCallback) { - DeletionType deletionType = - isPermanentDeletion() ? DeletionType.PERMANENT : DeletionType.INVALIDATION; + final DeletionType deletionType = getDeletionType(); if (selectedAndDisplayedItemsOrNull != null) { final DisplayedOrSelectedIdHolderCriteria<T> uploadCriteria = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java index ad4fa6589695d5e77de7501b34f696ab4f82e86d..a09bf9132eaebbc165f7eebd27c621510d712535 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java @@ -45,6 +45,8 @@ import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.basic.InvalidationUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.SimpleYesNoRenderer; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; @@ -118,7 +120,20 @@ public class SampleProvider extends AbstractCommonTableModelProvider<Sample> builder.column(PROJECT).addString(getProjectCode(sample)); builder.column(PERM_ID).addString(sample.getPermId()); builder.column(SHOW_DETAILS_LINK_COLUMN_NAME).addString(sample.getPermlink()); - builder.column(PARENTS).addString(getParents(sample)); + final Sample parentOrNull = tryGetParent(sample); + if (parentOrNull != null) + { + final Sample parent = parentOrNull; + builder.column(PARENTS).addEntityLink(parent, parent.getIdentifier()); + } else + { + // WORKAROUND we have no way to create cells with multiple links. + // This is an ugly way not to display multiple parents as single link. + EntityTableCell fakeEntityTableCell = + new EntityTableCell(EntityKind.SAMPLE, getParentsString(sample)); + fakeEntityTableCell.setFake(true); + builder.column(PARENTS).addValue(fakeEntityTableCell); + } final Sample containerOrNull = sample.getContainer(); if (containerOrNull != null) { @@ -152,14 +167,10 @@ public class SampleProvider extends AbstractCommonTableModelProvider<Sample> return sampleTypMap; } - private String getParents(Sample sample) + private String getParentsString(Sample sample) { Set<Sample> parents = sample.getParents(); int parentsSize = parents.size(); - if (parentsSize == 1) - { - return sample.getGeneratedFrom().getIdentifier(); - } StringBuilder builder = new StringBuilder(); int counter = 0; for (Sample parent : parents) @@ -175,6 +186,11 @@ public class SampleProvider extends AbstractCommonTableModelProvider<Sample> return builder.toString(); } + private Sample tryGetParent(Sample sample) + { + return (sample.getParents().size() == 1) ? sample.getGeneratedFrom() : null; + } + private String getProjectCode(Sample sample) { Experiment experiment = sample.getExperiment(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java index 2b0ec87efd36d0c6befdd2a86fdd0a853ecc9262..5ea414f58b910f6ffe9c542860be88ef8811e3d6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java @@ -576,6 +576,7 @@ final class SampleListingWorker extends AbstractLister return null; } } + enrichWithInvalidation(sample, row); // this is cheap even for dependent samples // set properties needed for primary samples // (dependent samples too if they need to be enriched e.g. for entity tracking) if (primarySample || enrichDependentSamples) @@ -586,12 +587,6 @@ final class SampleListingWorker extends AbstractLister row.perm_id)); sample.setRegistrationDate(row.registration_timestamp); sample.setModificationDate(row.modification_timestamp); - if (row.inva_id != null) - { - // NOTE: this just marks the sample as invalid without any details - final Invalidation invalidation = new Invalidation(); - sample.setInvalidation(invalidation); - } sample.setRegistrator(getOrCreateRegistrator(row.pers_id_registerer)); if (row.expe_id != null) { @@ -621,6 +616,16 @@ final class SampleListingWorker extends AbstractLister return sample; } + // NOTE: this just marks the sample as invalid without loading any details + private void enrichWithInvalidation(final Sample sample, SampleRecord row) + { + if (row.inva_id != null) + { + final Invalidation invalidation = new Invalidation(); + sample.setInvalidation(invalidation); + } + } + private void setSpace(final Sample sample, final Space space) { sample.setSpace(space); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java index f0aea06842a6bb082df684c132d82cf470cf83f7..a2f2ed52498c17cbffd9c7a656940e11ee583a89 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java @@ -307,8 +307,10 @@ public class ExperimentDAO extends AbstractGenericEntityWithPropertiesDAO<Experi for (TechId experimentId : experimentIds) { ExperimentPE experiment = loadByTechId(experimentId); - experiment.setInvalidation(invalidation); - getHibernateTemplate().update(experiment); + if (experiment.getInvalidation() == null) + { + experiment.setInvalidation(invalidation); + } } getHibernateTemplate().flush(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java index 35f280dcb7b8bf9234a0e1e823cf11b553485690..a25ec3bb15c4b27e7765f9f725421ba71783fd48 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java @@ -447,8 +447,10 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE> for (TechId sampleId : sampleIds) { SamplePE sample = loadByTechId(sampleId); - sample.setInvalidation(invalidation); - getHibernateTemplate().update(sample); + if (sample.getInvalidation() == null) + { + sample.setInvalidation(invalidation); + } } getHibernateTemplate().flush(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java index 91491c5917f2b6ace5bf5b50d54c481613083a6b..330a95018bbe8d88316106c783fc63dfd03c038d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java @@ -37,6 +37,8 @@ public class EntityTableCell implements ISerializableComparable private boolean invalid = false; + private boolean fake = false; + public EntityTableCell(EntityKind entityKind, String permId) { this(entityKind, permId, permId); @@ -124,6 +126,16 @@ public class EntityTableCell implements ISerializableComparable this.invalid = invalid; } + public boolean isFake() + { + return fake; + } + + public void setFake(boolean fake) + { + this.fake = fake; + } + @Override public String toString() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java index 59a27236fadcd4f4bfcb22272d841624f777ef94..ba6175cc1b41d38b72ffa004a25cc22009e4d9d1 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java @@ -92,7 +92,7 @@ public class SampleProviderTest extends AbstractProviderTest assertEquals( "[null, null, VARCHAR, VARCHAR, null, VARCHAR, " + "VARCHAR, VARCHAR, VARCHAR, TIMESTAMP, null, null, VARCHAR, " - + "VARCHAR, VARCHAR, VARCHAR, null, REAL, TIMESTAMP, VARCHAR, MATERIAL, MULTILINE_VARCHAR]", + + "VARCHAR, VARCHAR, null, null, REAL, TIMESTAMP, VARCHAR, MATERIAL, MULTILINE_VARCHAR]", getHeaderDataTypes(tableModel).toString()); assertEquals("[SAMPLE, SAMPLE, null, null, SAMPLE, null, " + "null, null, null, null, null, null, null, " @@ -120,13 +120,13 @@ public class SampleProviderTest extends AbstractProviderTest final SampleBuilder s1 = new SampleBuilder("DB:/S1").id(1).type("ALPHA").permID("123-45"); s1.registrator(new PersonBuilder().name("Albert", "Einstein").getPerson()); s1.invalidate().date(new Date(4711)); - Sample p1 = new SampleBuilder("/AB/CD").getSample(); + Sample p1 = new SampleBuilder("/AB/CD").permID("p-123").getSample(); s1.property("NAME", "hello").permLink("http").childOf(p1); final SampleBuilder s2 = new SampleBuilder("DB:/MY-SPACE/S:2").id(2).type("BETA").permID("234-56"); s2.experiment(new ExperimentBuilder().identifier("DB:/SPACE1/P1/EXP1").permID("e-123") .getExperiment()); - Sample p2 = new SampleBuilder("/DE/FG").getSample(); + Sample p2 = new SampleBuilder("/DE/FG").permID("p-456").getSample(); s2.partOf(new SampleBuilder("DB:/A/B").permID("c-456").getSample()).childOf(p1, p2); context.checking(new Expectations() { @@ -147,11 +147,11 @@ public class SampleProviderTest extends AbstractProviderTest getHeaderIDs(tableModel).toString()); assertEquals("[null, null, VARCHAR, VARCHAR, null, VARCHAR, " + "VARCHAR, VARCHAR, VARCHAR, TIMESTAMP, null, null, VARCHAR, " - + "VARCHAR, VARCHAR, VARCHAR, null, VARCHAR, TIMESTAMP, REAL, MULTILINE_VARCHAR]", + + "VARCHAR, VARCHAR, null, null, VARCHAR, TIMESTAMP, REAL, MULTILINE_VARCHAR]", getHeaderDataTypes(tableModel).toString()); assertEquals("[SAMPLE, SAMPLE, null, null, SAMPLE, null, " + "null, null, null, null, EXPERIMENT, EXPERIMENT, null, " - + "null, null, null, SAMPLE, null, null, null, null]", + + "null, null, SAMPLE, SAMPLE, null, null, null, null]", getHeaderEntityKinds(tableModel).toString()); List<TableModelRowWithObject<Sample>> rows = tableModel.getRows(); assertSame(s1.getSample(), rows.get(0).getObjectOrNull());