diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/FieldComparator.java b/common/source/java/ch/systemsx/cisd/common/utilities/FieldComparator.java index 1288ed4cc7189ef2dbdc73a891d5f3a720ad2a05..e6a0a4eade479e75892d98236953160be59d911d 100644 --- a/common/source/java/ch/systemsx/cisd/common/utilities/FieldComparator.java +++ b/common/source/java/ch/systemsx/cisd/common/utilities/FieldComparator.java @@ -16,27 +16,96 @@ package ch.systemsx.cisd.common.utilities; +import java.lang.reflect.Field; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel; /** + * A {@link Comparator} implementation based on an internal field specified in the constructor. + * <p> + * No that this field MUST implement the {@link Comparable} interface. + * </p> + * * @author Christian Ribeaud */ -public class FieldComparator implements Comparator<Object> +// TODO: With fieldName.fieldName +public final class FieldComparator<T> implements Comparator<T> { private final String fieldName; + private final Map<MapEntry, Field> cache = new HashMap<MapEntry, Field>(); + public FieldComparator(final String fieldName) { + assert fieldName != null : "Unspecified field name."; this.fieldName = fieldName; } + private final Comparable<Object> getComparable(final T t) + { + final Class<?> clazz = t.getClass(); + final MapEntry mapEntry = new MapEntry(clazz, fieldName); + Field field = cache.get(mapEntry); + if (field == null) + { + field = ClassUtils.tryGetDeclaredField(clazz, fieldName); + if (field == null) + { + throw new IllegalArgumentException(String.format( + "Field name '%s' could not be found in class '%s'.", fieldName, clazz + .getName())); + } + cache.put(mapEntry, field); + } + try + { + final Object object = field.get(t); + if (object instanceof Comparable == false) + { + throw new IllegalArgumentException(String.format( + "Object '%s' does not implement the Comparable interface.", object)); + } + return cast(object); + } catch (final Exception ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } + } + + @SuppressWarnings("unchecked") + private final static Comparable<Object> cast(final Object object) + { + return (Comparable<Object>) object; + } + // // Comparator // - public final int compare(final Object o1, final Object o2) + public final int compare(final T o1, final T o2) { - // TODO Auto-generated method stub - return 0; + final Comparable<Object> comparable1 = getComparable(o1); + final Comparable<Object> comparable2 = getComparable(o2); + return comparable1.compareTo(comparable2); + } + + // + // Helper classes + // + + private final static class MapEntry extends AbstractHashable + { + final Class<?> clazz; + + final String fieldName; + + MapEntry(final Class<?> clazz, final String fieldName) + { + this.clazz = clazz; + this.fieldName = fieldName; + } } } diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/FieldComparatorTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/FieldComparatorTest.java index 8c15ad3bb3c1a300d7b348351c8b7b296358ba5f..f1e0e3f09b0a16a176a46e1ae8c34a7b91da02cd 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/FieldComparatorTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/FieldComparatorTest.java @@ -16,6 +16,14 @@ package ch.systemsx.cisd.common.utilities; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.fail; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.testng.annotations.Test; /** @@ -26,8 +34,78 @@ import org.testng.annotations.Test; public final class FieldComparatorTest { + private final List<Bean> createBeanList() + { + final List<Bean> list = new ArrayList<Bean>(); + list.add(new Bean(new Object(), "c")); + list.add(new Bean(new Object(), "b")); + list.add(new Bean(new Object(), "a")); + return list; + } + @Test public final void testConstructor() { + boolean fail = true; + try + { + new FieldComparator<Bean>(null); + } catch (final AssertionError error) + { + fail = false; + } + assertFalse(fail); + } + + @Test + public final void testCompare() + { + final FieldComparator<Bean> fieldComparator = new FieldComparator<Bean>("value"); + final List<Bean> beans = createBeanList(); + assertEquals("c", beans.get(0).value); + Collections.sort(beans, fieldComparator); + assertEquals("a", beans.get(0).value); + } + + @Test + public final void testCompareFailed() + { + FieldComparator<Bean> fieldComparator = new FieldComparator<Bean>("doesNotExist"); + final List<Bean> beans = createBeanList(); + try + { + Collections.sort(beans, fieldComparator); + fail("'" + IllegalArgumentException.class + "' expected."); + } catch (final IllegalArgumentException ex) + { + // Nothing to do here. + } + fieldComparator = new FieldComparator<Bean>("object"); + try + { + Collections.sort(beans, fieldComparator); + fail("'" + IllegalArgumentException.class + "' expected."); + } catch (final IllegalArgumentException ex) + { + // Nothing to do here. + } + } + + // + // Helper classes + // + + private static final class Bean + { + private final String value; + + @SuppressWarnings("unused") + private final Object object; + + Bean(final Object object, final String value) + { + this.object = object; + this.value = value; + } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/AbstractResultSetConfig.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/AbstractResultSetConfig.java index 31f97e7d6bfbf48c95180ce6a17bc4494268534e..d04857ccbe50f80d7f432d455a5ba52ee3bfa070 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/AbstractResultSetConfig.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/AbstractResultSetConfig.java @@ -25,10 +25,16 @@ public abstract class AbstractResultSetConfig<K> implements IResultSetConfig<K> { private int limit = -1; - private int offset; + private int offset = 0; - private SortInfo sortInfo; + private SortInfo sortInfo = new SortInfo(); + /** + * The result set key. + * <p> + * Could be <code>null</code> if unknown. + * </p> + */ private K resultSetKey; public final void setLimit(final int limit) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java index 76d9b975bc4d93a9e1a4a88666f712143f715e6d..dee8064332432c62557e73facd264e8b3cc05dbc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java @@ -32,15 +32,15 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; */ public final class ResultSet<T> implements IsSerializable { - private List<T> result; + private List<T> list; private int totalLength; private String resultSetKey; - public final void setResult(final List<T> result) + public final void setList(final List<T> result) { - this.result = result; + this.list = result; } public final void setTotalLength(final int totalLength) @@ -66,7 +66,7 @@ public final class ResultSet<T> implements IsSerializable */ public List<T> getList() { - return result; + return list; } /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java index 406b4db04c3175e2482172671c7c24722c3fc549..0bfe7662bd7ba1e2e1afed96e050db54b0a6b8a7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java @@ -62,11 +62,8 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se @SuppressWarnings("unchecked") private final <T> void sortData(final List<T> data, final SortInfo sortInfo) { - // TODO: Remove null check. - if (sortInfo == null) - { - return; - } + assert data != null : "Unspecified data."; + assert sortInfo != null : "Unspecified sort information."; final SortDir sortDir = sortInfo.getSortDir(); if (sortDir == SortDir.NONE) { @@ -99,6 +96,16 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se return Math.min(size - 1, Math.max(offset, 0)); } + /** + * Encapsulates list returned by {@link List#subList(int, int)} in a new <code>List</code> as + * <i>GWT</i> complains because of a serialization concern. + */ + private final static <T> List<T> subList(final List<T> data, final int offset, final int limit) + { + final int toIndex = offset + limit; + return new ArrayList<T>(data.subList(offset, toIndex)); + } + // // IDataManager // @@ -129,17 +136,6 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se return new DefaultResultSet<K, T>(dataKey, list, size); } - // TODO: Put doc here. - private final static <T> List<T> subList(final List<T> data, final int offset, final int limit) - { - final List<T> list = new ArrayList<T>(); - for (int i = offset; i < offset + limit; i++) - { - list.add(data.get(i)); - } - return list; - } - public final synchronized void removeData(final IResultSetKeyHolder<K> dataKeyHolder) { assert dataKeyHolder != null : "Unspecified data key holder."; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java index 007de2287b070309a7e2006e4def043ddf6a4268..befeb9d113a5e258c6a2d135efd27dada61b77b1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java @@ -33,6 +33,9 @@ final class DefaultResultSet<K, T> implements IResultSet<K, T> DefaultResultSet(final K resultSetKey, final List<T> list, final int totalLength) { + assert resultSetKey != null : "Unspecified result set key"; + assert list != null : "Unspecified list."; + assert totalLength > -1 : "Total length must be >= 0."; this.resultSetKey = resultSetKey; this.list = list; this.totalLength = totalLength; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/DatabaseInstanceTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/DatabaseInstanceTranslator.java index b3fbfe30529e22fa16daa2ccea3c594e66d730a7..8ae8661b7ef760bb5a4e5747dd166f087367c16a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/DatabaseInstanceTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/DatabaseInstanceTranslator.java @@ -21,31 +21,38 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; /** + * A {@link DatabaseInstance} <---> {@link DatabaseInstancePE} translator. + * * @author Izabela Adamczyk */ -public class DatabaseInstanceTranslator +public final class DatabaseInstanceTranslator { - public static DatabaseInstance translate(DatabaseInstancePE databaseInstance) + private DatabaseInstanceTranslator() + { + // Can not be instantiated. + } + + public final static DatabaseInstance translate(final DatabaseInstancePE databaseInstance) { if (databaseInstance == null) { return null; } - DatabaseInstance result = new DatabaseInstance(); + final DatabaseInstance result = new DatabaseInstance(); result.setCode(databaseInstance.getCode()); result.setUuid(databaseInstance.getUuid()); result.setIdentifier(IdentifierHelper.createIdentifier(databaseInstance).toString()); return result; } - public static DatabaseInstancePE translate(DatabaseInstance databaseInstance) + public final static DatabaseInstancePE translate(final DatabaseInstance databaseInstance) { if (databaseInstance == null) { return null; } - DatabaseInstancePE result = new DatabaseInstancePE(); + final DatabaseInstancePE result = new DatabaseInstancePE(); result.setCode(databaseInstance.getCode()); result.setUuid(databaseInstance.getUuid()); return result; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ExperimentTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ExperimentTranslator.java index 37d0a74e6c88c3f3440c148f814ab736fe18e154..7d4d91c79acc6f81920efbdc0656bac004fa3d35 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ExperimentTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ExperimentTranslator.java @@ -22,27 +22,34 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; /** + * A {@link Experiment} <---> {@link ExperimentPE} translator. + * * @author Tomasz Pylak */ -public class ExperimentTranslator +public final class ExperimentTranslator { - public static Experiment translate(ExperimentPE experiment) + private ExperimentTranslator() + { + // Can not be instantiated. + } + + public final static Experiment translate(final ExperimentPE experiment) { if (experiment == null) { return null; } - Experiment result = new Experiment(); + final Experiment result = new Experiment(); result.setCode(experiment.getCode()); result.setExperimentType(translate(experiment.getExperimentType())); result.setProject(ProjectTranslator.translate(experiment.getProject())); return result; } - private static ExperimentType translate(ExperimentTypePE experimentType) + private final static ExperimentType translate(final ExperimentTypePE experimentType) { - ExperimentType result = new ExperimentType(); + final ExperimentType result = new ExperimentType(); result.setCode(experimentType.getCode()); result.setDescription(experimentType.getDescription()); result.setDatabaseInstance(DatabaseInstanceTranslator.translate(experimentType diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/GroupTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/GroupTranslator.java index d6a7687e5a2b64a1e439d2e54aff73074d95606c..539846eebe3cb1849a108623712dbd510620bdf0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/GroupTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/GroupTranslator.java @@ -21,21 +21,24 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; /** + * A {@link Group} <---> {@link GroupPE} translator. + * * @author Franz-Josef Elmer */ -public class GroupTranslator +public final class GroupTranslator { private GroupTranslator() { + // Can not be instantiated. } - public static Group translate(GroupPE group) + public static Group translate(final GroupPE group) { if (group == null) { return null; } - Group result = new Group(); + final Group result = new Group(); result.setCode(group.getCode()); result.setDescription(group.getDescription()); result.setInstance(DatabaseInstanceTranslator.translate(group.getDatabaseInstance())); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ListSampleCriteriaTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ListSampleCriteriaTranslator.java index 9918ec59f610733ebcc004e6b8f15874a4f018f7..1dccd5bcf1af46ca68d7f61af9982ca33abc2a3d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ListSampleCriteriaTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ListSampleCriteriaTranslator.java @@ -28,7 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleOwnerIdentifier; /** - * A {@link ListSampleCriteria} <--> {@link ListSampleCriteriaDTO} translator. + * A {@link ListSampleCriteria} <---> {@link ListSampleCriteriaDTO} translator. * * @author Christian Ribeaud */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PersonTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PersonTranslator.java index c1dd009ab6687980ea352a154e96d8cb5a0d7cd1..f495a1b48f81af55fc0bb72eac67c5ac30d4aaa2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PersonTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PersonTranslator.java @@ -20,26 +20,29 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; /** + * A {@link Person} <---> {@link PersonPE} translator. + * * @author Franz-Josef Elmer */ public class PersonTranslator { private PersonTranslator() { + // Can not be instantiated. } - public static Person translate(PersonPE person) + public final static Person translate(final PersonPE person) { return translate(person, true); } - private static Person translate(PersonPE person, boolean recursively) + private final static Person translate(final PersonPE person, final boolean recursively) { if (person == null) { return null; } - Person result = new Person(); + final Person result = new Person(); result.setFirstName(person.getFirstName()); result.setLastName(person.getLastName()); result.setEmail(person.getEmail()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProcedureTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProcedureTranslator.java index 534c3e17e5913ec2a2f245611756888cf3359db5..960a1c9c443c44f1c1b2feba1a6ab21147b9f630 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProcedureTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProcedureTranslator.java @@ -16,33 +16,42 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.util; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Procedure; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ProcedureType; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProcedureTypePE; /** + * A {@link Person} <---> {@link PersonPE} translator. + * * @author Tomasz Pylak */ -public class ProcedureTranslator +public final class ProcedureTranslator { - public static Procedure translate(ProcedurePE procedure) + private ProcedureTranslator() + { + // Can not be instantiated. + } + + public final static Procedure translate(final ProcedurePE procedure) { if (procedure == null) { return null; } - Procedure result = new Procedure(); + final Procedure result = new Procedure(); result.setExperiment(ExperimentTranslator.translate(procedure.getExperiment())); result.setProcedureType(translate(procedure.getProcedureType())); result.setRegistrationDate(procedure.getRegistrationDate()); return result; } - private static ProcedureType translate(ProcedureTypePE procedureType) + private final static ProcedureType translate(final ProcedureTypePE procedureType) { - ProcedureType result = new ProcedureType(); + final ProcedureType result = new ProcedureType(); result.setCode(procedureType.getCode()); result.setDataAcquisition(procedureType.isDataAcquisition()); result.setDatabaseInstance(DatabaseInstanceTranslator.translate(procedureType diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProjectTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProjectTranslator.java index 5a86983a83bc2c3bc2d44bc456064cd839f19693..45f17f3cba4464704b5eae70aaf258f25519e74d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProjectTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ProjectTranslator.java @@ -16,22 +16,31 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.util; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; /** + * A {@link Person} <---> {@link PersonPE} translator. + * * @author Tomasz Pylak */ -public class ProjectTranslator +public final class ProjectTranslator { - public static Project translate(ProjectPE project) + private ProjectTranslator() + { + // Can not be instantiated. + } + + public final static Project translate(final ProjectPE project) { if (project == null) { return null; } - Project result = new Project(); + final Project result = new Project(); result.setCode(project.getCode()); result.setDescription(project.getDescription()); result.setGroup(GroupTranslator.translate(project.getGroup())); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PropertyTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PropertyTypeTranslator.java index 5ef3215020fed6591fe451952fec78fdbac5523b..26faa64985895ed4468dd79ee013276c5026e545 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PropertyTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/PropertyTypeTranslator.java @@ -23,12 +23,19 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; /** + * A {@link PropertyType} <---> {@link PropertyTypePE} translator. + * * @author Izabela Adamczyk */ -public class PropertyTypeTranslator +public final class PropertyTypeTranslator { - public static PropertyType translate(PropertyTypePE propertyType) + private PropertyTypeTranslator() + { + // Can not be instantiated. + } + + public final static PropertyType translate(final PropertyTypePE propertyType) { final PropertyType result = new PropertyType(); result.setSimpleCode(propertyType.getSimpleCode()); @@ -37,7 +44,7 @@ public class PropertyTypeTranslator return result; } - public static PropertyTypePE translate(final PropertyType propertyType) + public final static PropertyTypePE translate(final PropertyType propertyType) { final PropertyTypePE result = new PropertyTypePE(); result.setSimpleCode(propertyType.getSimpleCode()); @@ -46,10 +53,10 @@ public class PropertyTypeTranslator return result; } - public static List<PropertyTypePE> translate(List<PropertyType> propertyCodes) + public final static List<PropertyTypePE> translate(final List<PropertyType> propertyCodes) { - List<PropertyTypePE> result = new ArrayList<PropertyTypePE>(); - for (PropertyType s : propertyCodes) + final List<PropertyTypePE> result = new ArrayList<PropertyTypePE>(); + for (final PropertyType s : propertyCodes) { result.add(translate(s)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ResultSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ResultSetTranslator.java new file mode 100644 index 0000000000000000000000000000000000000000..4496a5016631b0891ab798807445dfbda0a13448 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/ResultSetTranslator.java @@ -0,0 +1,42 @@ +/* + * Copyright 2008 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.server.util; + +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet; + +/** + * A {@link ResultSet} <---> {@link IResultSet} translator. + * + * @author Christian Ribeaud + */ +public final class ResultSetTranslator +{ + private ResultSetTranslator() + { + // Can not be instantiated. + } + + public final static <K, T> ResultSet<T> translate(final IResultSet<String, T> result) + { + final ResultSet<T> resultSet = new ResultSet<T>(); + resultSet.setList(result.getList()); + resultSet.setTotalLength(result.getTotalLength()); + resultSet.setResultSetKey(result.getResultSetKey()); + return resultSet; + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/RoleAssignmentTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/RoleAssignmentTranslator.java index 5b4da84a4d0b7660bf1c43ab2c0059d82f93f0dd..54aff97229d72cc76b534f3b1a71719544c02098 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/RoleAssignmentTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/RoleAssignmentTranslator.java @@ -19,19 +19,25 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.util; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; -public class RoleAssignmentTranslator +/** + * A {@link RoleAssignment} <---> {@link RoleAssignmentPE} translator. + * + * @author Christian Ribeaud + */ +public final class RoleAssignmentTranslator { private RoleAssignmentTranslator() { + // Can not be instantiated. } - public static RoleAssignment translate(RoleAssignmentPE role) + public final static RoleAssignment translate(final RoleAssignmentPE role) { if (role == null) { return null; } - RoleAssignment result = new RoleAssignment(); + final RoleAssignment result = new RoleAssignment(); result.setGroup(GroupTranslator.translate(role.getGroup())); result.setInstance(DatabaseInstanceTranslator.translate(role.getDatabaseInstance())); result.setPerson(PersonTranslator.translate(role.getPerson())); @@ -39,7 +45,7 @@ public class RoleAssignmentTranslator return result; } - private static String getRoleCode(RoleAssignmentPE role) + private final static String getRoleCode(final RoleAssignmentPE role) { String code; switch (role.getRole()) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SamplePropertyTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SamplePropertyTranslator.java index 126ad5da0e6616834ec138d9128cf9c3d7114397..1e7ece9f7cb06b2edd0edeebe5d1ae999f6b65ec 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SamplePropertyTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SamplePropertyTranslator.java @@ -24,15 +24,18 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePropertyTypePE; /** + * A {@link SampleProperty} <---> {@link SamplePropertyPE} translator. + * * @author Franz-Josef Elmer */ -public class SamplePropertyTranslator +public final class SamplePropertyTranslator { private SamplePropertyTranslator() { + // Can not be instantiated. } - public static SampleProperty translate(final SamplePropertyPE samplePropertyPE) + public final static SampleProperty translate(final SamplePropertyPE samplePropertyPE) { final SampleProperty result = new SampleProperty(); result.setValue(samplePropertyPE.getValue() == null ? samplePropertyPE.getVocabularyTerm() @@ -45,7 +48,7 @@ public class SamplePropertyTranslator } - public static List<SampleProperty> translate(final List<SamplePropertyPE> list) + public final static List<SampleProperty> translate(final List<SamplePropertyPE> list) { if (list == null) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTranslator.java index c343e86fda2835f929a0dd90270bf03675b992ac..d69ebb0a1b3549fa8a153d14e9f04e24141a1901 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTranslator.java @@ -20,16 +20,19 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; /** + * A {@link Sample} <---> {@link SamplePE} translator. + * * @author Franz-Josef Elmer */ -public class SampleTranslator +public final class SampleTranslator { private SampleTranslator() { + // Can not be instantiated. } /** NOTE: ignores sample properties */ - public static Sample translate(final SamplePE samplePE) + public final static Sample translate(final SamplePE samplePE) { if (samplePE == null) { @@ -41,8 +44,8 @@ public class SampleTranslator } - private static Sample translate(final SamplePE samplePE, final int containerDep, final int generatedFromDep, - final boolean withDetails) + private final static Sample translate(final SamplePE samplePE, final int containerDep, + final int generatedFromDep, final boolean withDetails) { final Sample result = new Sample(); result.setCode(samplePE.getCode()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypePropertyTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypePropertyTypeTranslator.java index 52213a7b12a8f978c317981a17e0662de07ff75c..b1d6ea0ecde8eaf421d7d1dc2c731872b8a3206a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypePropertyTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypePropertyTypeTranslator.java @@ -25,12 +25,15 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; /** + * A {@link SampleTypePropertyType} <---> {@link SampleTypePropertyTypePE} translator. + * * @author Franz-Josef Elmer */ -public class SampleTypePropertyTypeTranslator +public final class SampleTypePropertyTypeTranslator { private SampleTypePropertyTypeTranslator() { + // Can not be instantiated. } public static SampleTypePropertyType translate(final SampleTypePropertyTypePE s) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypeTranslator.java index eb90e0224aba5b8c4a840d9aa62278855a69da6f..857707affe9bd8cce3a0c821767c0e7cf682eff5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/SampleTypeTranslator.java @@ -20,12 +20,15 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; /** + * A {@link SampleType} <---> {@link SampleTypePE} translator. + * * @author Franz-Josef Elmer */ public class SampleTypeTranslator { private SampleTypeTranslator() { + // Can not be instantiated. } public static SampleType translate(final SampleTypePE sampleTypePE) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java index 25e650e61b556bbf1ff813ec721e1e0ad2f654f9..2c6ec53ac9c1b27567f6ecf6b578f856403f09c1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java @@ -51,6 +51,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.util.GroupTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.ListSampleCriteriaTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.PersonTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.PropertyTypeTranslator; +import ch.systemsx.cisd.openbis.generic.client.web.server.util.ResultSetTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.RoleAssignmentTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.SamplePropertyTranslator; import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleTranslator; @@ -365,12 +366,7 @@ public final class GenericClientService extends AbstractClientService implements return list; } }); - // TODO: Use BeanUtils - final ResultSet<Sample> resultSet = new ResultSet<Sample>(); - resultSet.setResult(result.getList()); - resultSet.setResultSetKey(result.getResultSetKey()); - resultSet.setTotalLength(result.getTotalLength()); - return resultSet; + return ResultSetTranslator.translate(result); } catch (final UserFailureException e) { throw UserFailureExceptionTranslator.translate(e); @@ -463,4 +459,6 @@ public final class GenericClientService extends AbstractClientService implements throw UserFailureExceptionTranslator.translate(e); } } + + // TODO: Add tab removing... } diff --git a/openbis/source/java/service.properties b/openbis/source/java/service.properties index 2abf872f71c2ac244c4cf4079cf0deaffdb0b477..63f55ae1b1904256f9d406ebf0184f9ddf02ab93 100644 --- a/openbis/source/java/service.properties +++ b/openbis/source/java/service.properties @@ -15,7 +15,7 @@ database.create-from-scratch = false # For debugging set this value to true. database.script-single-step-mode = false database.url-host-part = -database.kind = test +database.kind = dev # database.kind = system_test_strict # database.kind = system_test_plates_on_demand # database.kind = system_test_multi_groups