package com.psddev.cms.tool.page.content;
import com.psddev.cms.rtc.RtcAction;
import com.psddev.dari.db.Query;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.TypeReference;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
class EditFieldUpdateAction implements RtcAction {
@Override
public void execute(Map<String, Object> data, UUID userId, UUID sessionId) {
UUID contentId = ObjectUtils.to(UUID.class, data.get("contentId"));
String unlockObjectId = ObjectUtils.to(String.class, data.get("unlockObjectId"));
if (!ObjectUtils.isBlank(unlockObjectId)) {
String unlockFieldName = ObjectUtils.to(String.class, data.get("unlockFieldName"));
if (!ObjectUtils.isBlank(unlockFieldName)) {
for (EditFieldUpdate update : Query
.from(EditFieldUpdate.class)
.where("contentId = ?", contentId)
.selectAll()) {
Set<String> fieldNames = update.getFieldNamesByObjectId().get(unlockObjectId);
if (fieldNames != null && !fieldNames.isEmpty()) {
fieldNames.remove(unlockFieldName);
update.save();
}
}
}
} else {
EditFieldUpdate.save(
userId,
sessionId,
contentId,
ObjectUtils.to(new TypeReference<Map<String, Set<String>>>() {
}, data.get("fieldNamesByObjectId")));
}
}
}