diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java index 8c967240acb30e522b081cf0400a97fb0fab690d..ad5e214d2c508cfbe6f33350dfba8464ab0b1bd9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java @@ -25,9 +25,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder /** * An abstract decorator for {@link EntityPropertyColDef} to be used in grids for rendering values * in a different way in grids than in export. <br> - * It changes {@link EntityPropertyColDef#getValue(GridRowModel)} behavior distinguishing certain property - * types so in grid there can be e.g. a link displayed for hyperlink property. Other methods are - * delegated without any change. + * It changes {@link EntityPropertyColDef#getValue(GridRowModel)} behavior distinguishing certain + * property types so in grid there can be e.g. a link displayed for hyperlink property. Other + * methods are delegated without any change. * * @author Piotr Buczek */ @@ -43,6 +43,8 @@ public abstract class AbstractPropertyColRenderer<T extends IEntityPropertiesHol { switch (colDef.getDataTypeCode()) { + case REAL: + return new RealPropertyColRenderer<S>(colDef); case HYPERLINK: return new HyperlinkPropertyColRenderer<S>(colDef); case MULTILINE_VARCHAR: diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java new file mode 100644 index 0000000000000000000000000000000000000000..3d6d009d21969ec92ea1f709852bd11e63851455 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java @@ -0,0 +1,56 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer; + +import com.google.gwt.i18n.client.NumberFormat; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.EntityPropertyColDef; +import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder; + +/** + * An {@link AbstractPropertyColRenderer} which renders Real values. + * + * @author Izabela Adamczyk + */ +class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends + AbstractPropertyColRenderer<T> +{ + + private static final int MAX_DIGITAL_FORMAT_LENGTH = 10; + private static final String SCIENTIFIC_FORMAT = "0.0000E00"; + private static final String DIGITAL_FORMAT = "0.0000"; + + public RealPropertyColRenderer(EntityPropertyColDef<T> colDef) + { + super(colDef); + } + + @Override + protected String renderValue(GridRowModel<T> entity) + { + String value = colDef.getValue(entity); + double doubleValue = Double.parseDouble(value); + String formattedValue = NumberFormat.getFormat(DIGITAL_FORMAT).format(doubleValue); + if (formattedValue.length() > MAX_DIGITAL_FORMAT_LENGTH) + { + formattedValue = NumberFormat.getFormat(SCIENTIFIC_FORMAT).format(doubleValue); + } + return formattedValue; + } + +}