package com.psddev.cms.db; import com.psddev.dari.db.Modification; import com.psddev.dari.db.ObjectField; import com.psddev.dari.db.Query; import com.psddev.dari.db.State; import com.psddev.dari.db.VisibilityLabel; import java.util.UUID; @BulkUploadDraft.FieldInternalNamePrefix("cms.bulkUpload.") public class BulkUploadDraft extends Modification<Object> implements VisibilityLabel { @Indexed private UUID uploadId; @Indexed(visibility = true) @ToolUi.Sortable(false) private String containerId; private transient boolean runAfterSave; public UUID getUploadId() { return uploadId; } public void setUploadId(UUID uploadId) { this.uploadId = uploadId; } public String getContainerId() { return containerId; } public void setContainerId(String containerId) { this.containerId = containerId; } public boolean isRunAfterSave() { return runAfterSave; } public void setRunAfterSave(boolean runAfterSave) { this.runAfterSave = runAfterSave; } @Override public String createVisibilityLabel(ObjectField field) { if ("cms.bulkUpload.containerId".equals(field.getInternalName())) { return Localization.currentUserText(getClass(), "displayName"); } else { return null; } } @Override protected void afterSave() { if (!isRunAfterSave() || !getState().isVisible()) { return; } for (Object item : Query .fromAll() .where("cms.bulkUpload.containerId = ?", getId().toString()) .selectAll()) { State itemState = State.getInstance(item); itemState.as(BulkUploadDraft.class).setContainerId(null); itemState.saveImmediately(); } } @Override protected void afterDelete() { State state = getState(); if (state.isVisible()) { return; } for (Object item : Query .fromAll() .where("cms.bulkUpload.containerId = ?", state.getId().toString()) .selectAll()) { State.getInstance(item).deleteImmediately(); } } }