From a0a1890b8bd426d717b930b48c6df13dbd464824 Mon Sep 17 00:00:00 2001 From: Kevin Krouse Date: Wed, 29 Jul 2020 17:24:17 -0700 Subject: [PATCH] Issue 41014: fix flagging of flow FCSAnalysis wells - add Identifiable.getExpObject() for attaching flag comment - also fix some unencoded strings --- api/src/org/labkey/api/exp/Identifiable.java | 9 +++++ api/src/org/labkey/api/exp/api/ExpObject.java | 7 ++++ .../src/org/labkey/experiment/api/Data.java | 7 ++++ .../org/labkey/experiment/api/DataClass.java | 7 ++++ .../org/labkey/experiment/api/DataInput.java | 8 ++++ .../experiment/api/DataProtocolInput.java | 39 ++++++++++++------- .../org/labkey/experiment/api/Experiment.java | 9 +++++ .../labkey/experiment/api/ExperimentRun.java | 10 +++-- .../experiment/api/ExperimentServiceImpl.java | 9 ++--- .../org/labkey/experiment/api/Material.java | 8 ++++ .../labkey/experiment/api/MaterialInput.java | 7 ++++ .../experiment/api/MaterialProtocolInput.java | 9 +++++ .../labkey/experiment/api/MaterialSource.java | 7 ++++ .../org/labkey/experiment/api/Protocol.java | 8 +++- .../experiment/api/ProtocolApplication.java | 7 ++++ .../controllers/exp/ExperimentController.java | 4 -- 16 files changed, 127 insertions(+), 28 deletions(-) diff --git a/api/src/org/labkey/api/exp/Identifiable.java b/api/src/org/labkey/api/exp/Identifiable.java index 349a5f4b7e2..75c76485710 100644 --- a/api/src/org/labkey/api/exp/Identifiable.java +++ b/api/src/org/labkey/api/exp/Identifiable.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.Nullable; import org.labkey.api.data.Container; +import org.labkey.api.exp.api.ExpObject; import org.labkey.api.query.QueryRowReference; import org.labkey.api.view.ActionURL; @@ -47,4 +48,12 @@ default String getLSIDNamespacePrefix() { return null; } + + /** + * Get the corresponding ExpObject for this Identifiable, if there is one. + */ + default @Nullable ExpObject getExpObject() + { + return null; + } } diff --git a/api/src/org/labkey/api/exp/api/ExpObject.java b/api/src/org/labkey/api/exp/api/ExpObject.java index 65fbd7bd2fa..a4d210ccb0c 100644 --- a/api/src/org/labkey/api/exp/api/ExpObject.java +++ b/api/src/org/labkey/api/exp/api/ExpObject.java @@ -75,4 +75,11 @@ public interface ExpObject extends Identifiable, Comparable * @return Map from PropertyURI to ObjectProperty */ Map getObjectProperties(); + + @Override + @Nullable + default ExpObject getExpObject() + { + return this; + } } diff --git a/experiment/src/org/labkey/experiment/api/Data.java b/experiment/src/org/labkey/experiment/api/Data.java index a3916b47005..dca4e0bfe14 100644 --- a/experiment/src/org/labkey/experiment/api/Data.java +++ b/experiment/src/org/labkey/experiment/api/Data.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.Nullable; import org.labkey.api.exp.api.ExpData; +import org.labkey.api.exp.api.ExpObject; import org.labkey.api.util.FileUtil; import org.labkey.api.util.URLHelper; import org.labkey.api.view.ActionURL; @@ -123,4 +124,10 @@ public boolean equals(Object o) return !(getRowId() == 0 || getRowId() != data.getRowId()); } + + @Override + public @Nullable ExpDataImpl getExpObject() + { + return new ExpDataImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/DataClass.java b/experiment/src/org/labkey/experiment/api/DataClass.java index 2861ebfafb8..73450268c45 100644 --- a/experiment/src/org/labkey/experiment/api/DataClass.java +++ b/experiment/src/org/labkey/experiment/api/DataClass.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpDataClass; import org.labkey.api.view.ActionURL; import org.labkey.experiment.controllers.exp.ExperimentController; @@ -104,4 +105,10 @@ public int compareTo(@NotNull DataClass o) { return getName().compareToIgnoreCase(o.getName()); } + + @Override + public @Nullable ExpDataClassImpl getExpObject() + { + return new ExpDataClassImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/DataInput.java b/experiment/src/org/labkey/experiment/api/DataInput.java index 20b3ad3cb0e..d91cd3b7c84 100644 --- a/experiment/src/org/labkey/experiment/api/DataInput.java +++ b/experiment/src/org/labkey/experiment/api/DataInput.java @@ -16,8 +16,10 @@ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; import org.labkey.api.exp.LsidType; import org.labkey.api.exp.api.ExpDataRunInput; +import org.labkey.api.exp.api.ExpObject; import org.labkey.api.settings.AppProps; import static org.labkey.api.util.PageFlowUtil.encode; @@ -67,4 +69,10 @@ protected int getInputKey() { return _dataId; } + + @Override + public @Nullable ExpDataRunInputImpl getExpObject() + { + return new ExpDataRunInputImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/DataProtocolInput.java b/experiment/src/org/labkey/experiment/api/DataProtocolInput.java index fb1fd411067..736d5bac24b 100644 --- a/experiment/src/org/labkey/experiment/api/DataProtocolInput.java +++ b/experiment/src/org/labkey/experiment/api/DataProtocolInput.java @@ -1,20 +1,23 @@ -/* - * Copyright (c) 2018 LabKey Corporation - * - * 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. - */ +/* + * Copyright (c) 2018 LabKey Corporation + * + * 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 org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpObject; + public class DataProtocolInput extends AbstractProtocolInput { protected Integer _dataClassId; @@ -34,4 +37,10 @@ public String getObjectType() { return ExpDataImpl.DEFAULT_CPAS_TYPE; } + + @Override + public @Nullable ExpDataProtocolInputImpl getExpObject() + { + return new ExpDataProtocolInputImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/Experiment.java b/experiment/src/org/labkey/experiment/api/Experiment.java index ce99a175ac7..42e72cf9c3c 100644 --- a/experiment/src/org/labkey/experiment/api/Experiment.java +++ b/experiment/src/org/labkey/experiment/api/Experiment.java @@ -15,6 +15,9 @@ */ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpExperiment; + import java.io.Serializable; /** @@ -101,4 +104,10 @@ public void setBatchProtocolId(Integer batchProtocolId) { _batchProtocolId = batchProtocolId; } + + @Override + public @Nullable ExpExperimentImpl getExpObject() + { + return new ExpExperimentImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/ExperimentRun.java b/experiment/src/org/labkey/experiment/api/ExperimentRun.java index 6dd93df0dbd..7f4c49f4f23 100644 --- a/experiment/src/org/labkey/experiment/api/ExperimentRun.java +++ b/experiment/src/org/labkey/experiment/api/ExperimentRun.java @@ -16,11 +16,9 @@ package org.labkey.experiment.api; import org.jetbrains.annotations.Nullable; -import org.labkey.api.assay.AssayUrls; import org.labkey.api.data.Container; -import org.labkey.api.exp.api.ExpProtocol; +import org.labkey.api.exp.api.ExpRun; import org.labkey.api.exp.api.ExperimentService; -import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; import org.labkey.experiment.controllers.exp.ExperimentController; @@ -137,4 +135,10 @@ public int hashCode() result = 31 * result + (protocolLSID != null ? protocolLSID.hashCode() : 0); return result; } + + @Override + public @Nullable ExpRunImpl getExpObject() + { + return new ExpRunImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java b/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java index bdee2be9a22..6360b205d95 100644 --- a/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java +++ b/experiment/src/org/labkey/experiment/api/ExperimentServiceImpl.java @@ -1273,11 +1273,10 @@ public String generateLSID(@NotNull Container container, @NotNull DataType type, public ExpObject findObjectFromLSID(String lsid) { Identifiable id = LsidManager.get().getObject(lsid); - if (id instanceof ExpObject) - { - return (ExpObject) id; - } - return null; + if (id == null) + return null; + + return id.getExpObject(); } @Override diff --git a/experiment/src/org/labkey/experiment/api/Material.java b/experiment/src/org/labkey/experiment/api/Material.java index b8877a82b3f..76aaf9b0af5 100644 --- a/experiment/src/org/labkey/experiment/api/Material.java +++ b/experiment/src/org/labkey/experiment/api/Material.java @@ -15,7 +15,9 @@ */ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; import org.labkey.api.exp.api.ExpMaterial; +import org.labkey.api.exp.api.ExpObject; import org.labkey.api.util.URLHelper; import org.labkey.api.view.ActionURL; import org.labkey.experiment.controllers.exp.ExperimentController; @@ -55,4 +57,10 @@ public int hashCode() { return getRowId(); } + + @Override + public @Nullable ExpMaterialImpl getExpObject() + { + return new ExpMaterialImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/MaterialInput.java b/experiment/src/org/labkey/experiment/api/MaterialInput.java index 2411d26d0e8..d22a80d4a81 100644 --- a/experiment/src/org/labkey/experiment/api/MaterialInput.java +++ b/experiment/src/org/labkey/experiment/api/MaterialInput.java @@ -16,6 +16,7 @@ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; import org.labkey.api.exp.LsidType; import org.labkey.api.exp.api.ExpMaterialRunInput; import org.labkey.api.settings.AppProps; @@ -64,4 +65,10 @@ protected int getInputKey() { return _materialId; } + + @Override + public @Nullable ExpMaterialRunInputImpl getExpObject() + { + return new ExpMaterialRunInputImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/MaterialProtocolInput.java b/experiment/src/org/labkey/experiment/api/MaterialProtocolInput.java index 1c7f1904663..293e7f93a9f 100644 --- a/experiment/src/org/labkey/experiment/api/MaterialProtocolInput.java +++ b/experiment/src/org/labkey/experiment/api/MaterialProtocolInput.java @@ -15,6 +15,9 @@ */ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpObject; + public class MaterialProtocolInput extends AbstractProtocolInput { protected Integer _materialSourceId; @@ -34,4 +37,10 @@ public String getObjectType() { return ExpMaterialImpl.DEFAULT_CPAS_TYPE; } + + @Override + public @Nullable ExpMaterialProtocolInputImpl getExpObject() + { + return new ExpMaterialProtocolInputImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/MaterialSource.java b/experiment/src/org/labkey/experiment/api/MaterialSource.java index 59d03c4448c..59f896d9ff7 100644 --- a/experiment/src/org/labkey/experiment/api/MaterialSource.java +++ b/experiment/src/org/labkey/experiment/api/MaterialSource.java @@ -17,6 +17,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpObject; +import org.labkey.api.exp.api.ExpSampleType; import org.labkey.api.exp.query.ExpSampleTypeTable; import org.labkey.api.exp.query.ExpSchema; import org.labkey.api.query.FieldKey; @@ -169,4 +171,9 @@ public int compareTo(@NotNull MaterialSource o) return getName().compareToIgnoreCase(o.getName()); } + @Override + public @Nullable ExpSampleTypeImpl getExpObject() + { + return new ExpSampleTypeImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/Protocol.java b/experiment/src/org/labkey/experiment/api/Protocol.java index b957282bfee..12c2576eb15 100644 --- a/experiment/src/org/labkey/experiment/api/Protocol.java +++ b/experiment/src/org/labkey/experiment/api/Protocol.java @@ -16,14 +16,15 @@ package org.labkey.experiment.api; import org.apache.commons.beanutils.BeanUtils; +import org.jetbrains.annotations.Nullable; import org.labkey.api.exp.ObjectProperty; import org.labkey.api.exp.OntologyManager; import org.labkey.api.exp.PropertyType; import org.labkey.api.exp.ProtocolParameter; +import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.api.ExpProtocolInput; import java.lang.reflect.InvocationTargetException; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -411,4 +412,9 @@ public List retrieveProtocolInputs() return _protocolInputs; } + @Override + public @Nullable ExpProtocolImpl getExpObject() + { + return new ExpProtocolImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/api/ProtocolApplication.java b/experiment/src/org/labkey/experiment/api/ProtocolApplication.java index e5bc98a2f72..da33d250245 100644 --- a/experiment/src/org/labkey/experiment/api/ProtocolApplication.java +++ b/experiment/src/org/labkey/experiment/api/ProtocolApplication.java @@ -15,6 +15,8 @@ */ package org.labkey.experiment.api; +import org.jetbrains.annotations.Nullable; +import org.labkey.api.exp.api.ExpObject; import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.IdentifiableBase; @@ -155,4 +157,9 @@ public void setEndTime(Date endTime) } + @Override + public @Nullable ExpProtocolApplicationImpl getExpObject() + { + return new ExpProtocolApplicationImpl(this); + } } diff --git a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java index 74674980c80..454a546c950 100644 --- a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java +++ b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java @@ -4627,10 +4627,6 @@ public boolean handlePost(SetFlagForm form, BindException errors) throws Excepti throw new UnauthorizedException(); } - if (!container.hasPermission(getUser(), UpdatePermission.class)) - { - throw new UnauthorizedException(); - } obj.setComment(getUser(), form.getComment()); if (form.isRedirect())