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 f9bacd392fc793012fd0aab82fc6f74ba4b76dbf..5c1760069ade9560ad0ca833339da03e8e1a53b0 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 @@ -51,24 +51,21 @@ public class LinkRenderer }; } - public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer(final String text, - final boolean openInNewWindow) + public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer(final String text) { return new GridCellRenderer<BaseEntityModel<?>>() { - public Object render(BaseEntityModel<?> model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store, Grid<BaseEntityModel<?>> grid) { - String originalValue = String.valueOf(model.get(property)); - return LinkRenderer - .renderAsLinkWithAnchor(text, originalValue, openInNewWindow); + return LinkRenderer.renderAsLinkWithAnchor(text); } }; } - public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer() + public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer( + final String overridenLinkTextOrNull) { return new GridCellRenderer<BaseEntityModel<?>>() { @@ -77,12 +74,20 @@ public class LinkRenderer int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store, Grid<BaseEntityModel<?>> grid) { - return LinkRenderer.renderAsLinkWithAnchor(model.get(property).toString(), - model.get(property).toString(), true); + String originalValue = String.valueOf(model.get(property)); + String linkText = + overridenLinkTextOrNull != null ? overridenLinkTextOrNull + : originalValue; + return LinkRenderer.renderAsLinkWithAnchor(linkText, originalValue, true); } }; } + public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer() + { + return createExternalLinkRenderer(null); + } + /** renders a div witch looks like an anchor (hand cursor is on div - block) */ public static String renderAsLink(final String message) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java index a80ea5300d205a0a6b91d3bc15664d9a86a15b3e..515ff0933e1db76a405c759eae2d2487d6725cee 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java @@ -242,8 +242,8 @@ public abstract class AbstractEntityBrowserGrid<T extends IEntityPropertiesHolde protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer() { - return LinkRenderer.createLinkRenderer(viewContext - .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE), true); + return LinkRenderer.createExternalLinkRenderer(viewContext + .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java index 10e6e2caf260ebc9d3156aac22252c60f0e89267..694596368410bc50df4c1b7be9dfeb19f5159d88 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java @@ -256,7 +256,7 @@ public class ReportGrid extends AbstractBrowserGrid<TableModelRow, BaseEntityMod EntityKind entityKind) { return LinkRenderer.createLinkRenderer(viewContext.getMessage( - Dict.SHOW_ENTITY_DETAILS_LINK_TEXT_TEMPLATE, entityKind.getDescription()), false); + Dict.SHOW_ENTITY_DETAILS_LINK_TEXT_TEMPLATE, entityKind.getDescription())); } private void showEntityViewer(EntityKind entityKind, String permId) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java index 299c4fe793aad7b94a6e69f1bc316909e67ab7e9..db504322259ba3ecc2634c1a6154c3ab1c715b20 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java @@ -70,6 +70,12 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO return entityKindByColumnName.get(columnName.toUpperCase()); } + private static String removeEntityColumnNameSuffix(String columnName) + { + assert columnName.toUpperCase().endsWith(ENTITY_COLUMN_NAME_SUFFIX); + return columnName.substring(0, columnName.length() - ENTITY_COLUMN_NAME_SUFFIX.length()); + } + private static DataTypeCode getDataTypeCode(int sqlType) { if (isInteger(sqlType)) @@ -120,10 +126,15 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO for (int i = 1; i <= columnCount; i++) { String columnName = JdbcUtils.lookupColumnName(metaData, i); + EntityKind entityKindOrNull = tryGetEntityKind(columnName); + if (entityKindOrNull != null) + { + columnName = removeEntityColumnNameSuffix(columnName); + } TableModelColumnHeader header = new TableModelColumnHeader(columnName, i - 1); header.setDataType(getDataTypeCode(metaData.getColumnType(i))); - header.setEntityKind(tryGetEntityKind(columnName)); + header.setEntityKind(entityKindOrNull); headers.add(header); } List<TableModelRow> rows = new ArrayList<TableModelRow>(); @@ -152,6 +163,7 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO JdbcUtils.closeResultSet(resultSet); return new TableModel(headers, rows); } + }; return (TableModel) getJdbcTemplate().execute(