package org.argeo.slc.client.ui.editors;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
import java.util.UUID;
import javax.jcr.Node;
import org.argeo.slc.client.ui.ClientUiPlugin;
import org.argeo.slc.client.ui.controllers.ProcessController;
import org.argeo.slc.execution.ExecutionProcess;
-import org.argeo.slc.jcr.SlcJcrConstants;
+import org.argeo.slc.jcr.SlcJcrUtils;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
import org.eclipse.core.runtime.IProgressMonitor;
private ProcessBuilderPage builderPage;
private ProcessLogPage logPage;
-
+
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
protected Node newProcessNode(ProcessEditorInput pei)
throws RepositoryException {
- Calendar now = new GregorianCalendar();
String uuid = UUID.randomUUID().toString();
- String processPath = SlcJcrConstants.PROCESSES_BASE_PATH + '/'
- + JcrUtils.dateAsPath(now, true) + uuid;
+ String processPath = SlcJcrUtils.createExecutionProcessPath(uuid);
Node processNode = JcrUtils.mkdirs(session, processPath, SLC_PROCESS);
processNode.setProperty(SLC_UUID, uuid);
- processNode.setProperty(SLC_STATUS, ExecutionProcess.UNINITIALIZED);
+ processNode.setProperty(SLC_STATUS, ExecutionProcess.NEW);
Node processFlow = processNode.addNode(SLC_FLOW);
processFlow.addMixin(SLC_REALIZED_FLOW);
return processNode;
}
+ @Override
+ public boolean isDirty() {
+ if (getProcessStatus().equals(ExecutionProcess.NEW))
+ return true;
+ return super.isDirty();
+ }
+
+ protected String getProcessStatus() {
+ try {
+ return processNode.getProperty(SLC_STATUS).getString();
+ } catch (RepositoryException e) {
+ throw new SlcException("Cannot retrieve status for " + processNode,
+ e);
+ }
+ }
+
@Override
public void dispose() {
JcrUtils.logoutQuietly(session);
public void doSave(IProgressMonitor monitor) {
try {
String status = processNode.getProperty(SLC_STATUS).getString();
- if (status.equals(ExecutionProcess.UNINITIALIZED))
+ if (status.equals(ExecutionProcess.NEW))
processNode.setProperty(SLC_STATUS,
ExecutionProcess.INITIALIZED);
session.save();
builderPage.commit(true);
- firePropertyChange(PROP_DIRTY);
+ editorDirtyStateChanged();
} catch (RepositoryException e) {
throw new SlcException("Cannot save " + processNode, e);
} finally {