Skip to content

Commit cbb2307

Browse files
authored
Fix skydDataId on TargetedMSRun (#1033)
- Added method to update skydDataId on a TargetedMSRun
1 parent 46ce2cc commit cbb2307

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

api-src/org/labkey/api/targetedms/TargetedMSService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.labkey.api.data.TableInfo;
2323
import org.labkey.api.exp.ExperimentRunType;
2424
import org.labkey.api.exp.XarFormatException;
25+
import org.labkey.api.exp.api.ExpData;
2526
import org.labkey.api.pipeline.PipelineValidationException;
2627
import org.labkey.api.query.UserSchema;
2728
import org.labkey.api.security.User;
@@ -72,6 +73,9 @@ enum FolderType
7273
ITargetedMSRun getRunByFileName(String fileName, Container container);
7374
List<ITargetedMSRun> getRuns(Container container);
7475
ITargetedMSRun getRunByLsid(String lsid, Container container);
76+
77+
boolean updateSkydDataId(ITargetedMSRun run, ExpData newSkydData, User user);
78+
7579
List<? extends SkylineAnnotation> getReplicateAnnotations(Container container);
7680
void registerSkylineDocumentImportListener(SkylineDocumentImportListener skyLineDocumentImportListener);
7781
List<SkylineDocumentImportListener> getSkylineDocumentImportListener();

src/org/labkey/targetedms/TargetedMSManager.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import org.labkey.api.query.UserSchema;
7474
import org.labkey.api.security.User;
7575
import org.labkey.api.security.permissions.DeletePermission;
76+
import org.labkey.api.targetedms.ITargetedMSRun;
7677
import org.labkey.api.targetedms.RepresentativeDataState;
7778
import org.labkey.api.targetedms.RunRepresentativeDataState;
7879
import org.labkey.api.targetedms.TargetedMSService;
@@ -123,6 +124,7 @@
123124
import java.util.LinkedHashSet;
124125
import java.util.List;
125126
import java.util.Map;
127+
import java.util.Objects;
126128
import java.util.Set;
127129
import java.util.TreeMap;
128130
import java.util.TreeSet;
@@ -861,6 +863,30 @@ public static TargetedMSRun getRunByLsid(String lsid, Container c)
861863
throw new IllegalArgumentException("More than one TargetedMS runs found for LSID "+lsid);
862864
}
863865

866+
public static boolean updateSkydDataId(ITargetedMSRun run, ExpData newSkydData, User user)
867+
{
868+
if (!(run instanceof TargetedMSRun))
869+
{
870+
throw new IllegalArgumentException("Invalid run type. Expected TargetedMSRun but received " +
871+
(run != null ? run.getClass().getName() : "null"));
872+
}
873+
if (newSkydData == null)
874+
{
875+
throw new IllegalArgumentException("Cannot update with null newSkydData. A valid ExpData object is required");
876+
}
877+
878+
TargetedMSRun targetedRun = (TargetedMSRun) run;
879+
880+
ExpRun expRun = ExperimentService.get().getExpRun(targetedRun.getExperimentRunLSID());
881+
if (expRun == null) return false;
882+
883+
if (!Objects.equals(newSkydData.getRunId(), expRun.getRowId())) return false;
884+
885+
targetedRun.setSkydDataId(newSkydData.getRowId());
886+
TargetedMSManager.updateRun(targetedRun, user);
887+
return true;
888+
}
889+
864890
public static List<Long> getRunIdsByInstrument(String serialNumber)
865891
{
866892
SQLFragment sql = new SQLFragment("SELECT DISTINCT r.Id FROM ");

src/org/labkey/targetedms/TargetedMSServiceImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.labkey.api.data.TableInfo;
2323
import org.labkey.api.exp.ExperimentRunType;
2424
import org.labkey.api.exp.XarFormatException;
25+
import org.labkey.api.exp.api.ExpData;
2526
import org.labkey.api.pipeline.PipelineValidationException;
2627
import org.labkey.api.query.UserSchema;
2728
import org.labkey.api.security.User;
@@ -275,6 +276,11 @@ public ITargetedMSRun getRunByLsid(String lsid, Container container)
275276
return TargetedMSManager.getRunByLsid(lsid, container);
276277
}
277278

279+
public boolean updateSkydDataId(ITargetedMSRun run, ExpData newSkydData, User user)
280+
{
281+
return TargetedMSManager.updateSkydDataId(run, newSkydData, user);
282+
}
283+
278284
@Override
279285
public ExperimentRunType getExperimentRunType()
280286
{

0 commit comments

Comments
 (0)