@Override
public QueryResult<Panel> update(String studyStr, String panelId, ObjectMap parameters, QueryOptions options, String sessionId)
throws CatalogException {
ParamUtils.checkObj(parameters, "parameters");
parameters = new ObjectMap(parameters);
options = ParamUtils.defaultObject(options, QueryOptions::new);
MyResource<Panel> resource = getUid(panelId, studyStr, sessionId);
authorizationManager.checkPanelPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(),
PanelAclEntry.PanelPermissions.UPDATE);
try {
ParamUtils.checkAllParametersExist(parameters.keySet().iterator(),
(a) -> PanelDBAdaptor.UpdateParams.getParam(a) != null);
} catch (CatalogParameterException e) {
throw new CatalogException("Could not update: " + e.getMessage(), e);
}
if (parameters.containsKey(PanelDBAdaptor.UpdateParams.ID.key())) {
ParamUtils.checkAlias(parameters.getString(PanelDBAdaptor.UpdateParams.ID.key()),
PanelDBAdaptor.UpdateParams.ID.key());
}
if (options.getBoolean(Constants.INCREMENT_VERSION)) {
options.put(Constants.CURRENT_RELEASE, studyManager.getCurrentRelease(resource.getStudy(), resource.getUser()));
}
QueryResult<Panel> queryResult = panelDBAdaptor.update(resource.getResource().getUid(), parameters, options);
auditManager.recordUpdate(AuditRecord.Resource.panel, resource.getResource().getUid(), resource.getUser(), parameters, null, null);
return queryResult;
}