Skip to content

Commit

Permalink
bulk action renamed to actions, added post-processing formatting to c…
Browse files Browse the repository at this point in the history
…leanup/generate task action
  • Loading branch information
1azyman committed Apr 8, 2024
1 parent ba1824a commit 5caa31b
Show file tree
Hide file tree
Showing 16 changed files with 72 additions and 44 deletions.
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Plugin for Intellij Idea to help identity engineers customize https://midpoint.e

* MidPoint objects manipulation
** Browse, upload objects
** Execute tasks, bulk actions
** Execute tasks, actions
** Test resources
* Documentation generator
* Debugger for Groovy scripts expressions
Expand Down
2 changes: 1 addition & 1 deletion studio-idea-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
### Fixed
- MID-9282 Properties host injector
- MID-9383 Fixed groovy-all dependency in pom.xml in project template
- MID-9501 Missing "t" prefix in bulk actions fixed
- MID-9501 Missing "t" prefix in actions fixed
- Fixed browser panel UI issues

## [4.8.0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,25 @@
import com.evolveum.midpoint.studio.client.MidPointObject;
import com.evolveum.midpoint.studio.impl.Environment;
import com.evolveum.midpoint.studio.impl.MidPointClient;
import com.evolveum.midpoint.studio.impl.configuration.MidPointService;
import com.evolveum.midpoint.studio.impl.ShowResultNotificationAction;
import com.evolveum.midpoint.studio.impl.browse.Generator;
import com.evolveum.midpoint.studio.impl.browse.GeneratorOptions;
import com.evolveum.midpoint.studio.impl.configuration.MidPointService;
import com.evolveum.midpoint.studio.util.FileUtils;
import com.evolveum.midpoint.studio.util.MidPointUtils;
import com.evolveum.midpoint.studio.util.RunnableUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.intellij.notification.NotificationType;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.codeStyle.CodeStyleManager;
import org.apache.commons.io.IOUtils;
import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -175,20 +179,33 @@ private void writeContent(ProgressIndicator indicator, String content) {
new OutputStreamWriter(file.getOutputStream(GeneratorTask.this), file.getCharset()));

IOUtils.write(content, out);

FileEditorManager fem = FileEditorManager.getInstance(project);
fem.openFile(file, true, true);
} catch (IOException ex) {
MidPointUtils.publishExceptionNotification(project, env, GeneratorTask.class, NOTIFICATION_KEY,
"Couldn't store generated content to file " + (file != null ? file.getName() : "[null]"), ex);
} finally {
IOUtils.closeQuietly(out);
}

if (file != null) {
formatAndOpenFile(project, file);
}
});

updateIndicator(indicator, "File saved");
}

private void formatAndOpenFile(Project project, VirtualFile file) {
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
WriteCommandAction.writeCommandAction(getProject()).run(() ->
CodeStyleManager.getInstance(getProject()).reformatText(
psiFile, List.of(psiFile.getTextRange())
)
);

FileEditorManager fem = FileEditorManager.getInstance(project);
fem.openFile(file, true, true);
}

private void updateIndicator(ProgressIndicator indicator, String message) {
LOG.debug(message);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.util.LineSeparator;
import com.intellij.util.ui.UIUtil;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -366,6 +369,10 @@ protected void updateEditor(Editor editor, List<String> newObjects) {

com.intellij.openapi.editor.Document document = editor.getDocument();

String normalized = normalizeText(text.toString(), document);

int startIndex;
int endIndex;
if (isUpdateSelection) {
AtomicInteger start = new AtomicInteger(0);
AtomicInteger end = new AtomicInteger(0);
Expand All @@ -376,18 +383,22 @@ protected void updateEditor(Editor editor, List<String> newObjects) {
end.set(model.getSelectionEnd());
});

WriteCommandAction.runWriteCommandAction(getProject(), () -> {
String normalized = normalizeText(text.toString(), document);

document.replaceString(start.get(), end.get(), normalized);
});
startIndex = start.get();
endIndex = end.get();
} else {
WriteCommandAction.runWriteCommandAction(getProject(), () -> {
String normalized = normalizeText(text.toString(), document);

document.replaceString(0, document.getTextLength(), normalized);
});
startIndex = 0;
endIndex = document.getTextLength();
}

Project project = getProject();

WriteCommandAction.runWriteCommandAction(project, () -> {
document.replaceString(startIndex, endIndex, normalized);

VirtualFile file = editor.getVirtualFile();
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
CodeStyleManager.getInstance(project).reformatText(psiFile, startIndex, normalized.length());
});
}

private String normalizeText(String text, Document document) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.evolveum.midpoint.studio.action.transfer.ProcessObjectResult;
import com.evolveum.midpoint.studio.client.MidPointObject;
import com.evolveum.midpoint.studio.impl.Environment;
import com.evolveum.midpoint.studio.impl.browse.BulkActionGenerator;
import com.evolveum.midpoint.studio.impl.browse.ActionGenerator;
import com.evolveum.midpoint.studio.impl.browse.GeneratorOptions;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.ExecuteScriptResponseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType;
Expand Down Expand Up @@ -43,7 +43,7 @@ public ProcessObjectResult processObject(MidPointObject obj) throws Exception {
}

GeneratorOptions genOptions = new GeneratorOptions();
BulkActionGenerator gen = new BulkActionGenerator(BulkActionGenerator.Action.VALIDATE);
ActionGenerator gen = new ActionGenerator(ActionGenerator.Action.VALIDATE);
String requestString = gen.generateFromSourceObject(obj, genOptions, getProject());

ExecuteScriptResponseType response = client.execute(requestString);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

import static com.evolveum.midpoint.studio.impl.browse.Constants.*;

public class BulkActionGenerator extends Generator {
public class ActionGenerator extends Generator {

public static final String ITERATIVE_SCRIPT_EXECUTION_TASK_HANDLER_URI = SchemaConstants.NS_MODEL + "/iterative-scripting/handler-3";

Expand Down Expand Up @@ -74,13 +74,13 @@ public enum Action {

private Action action;

public BulkActionGenerator(Action action) {
public ActionGenerator(Action action) {
this.action = action;
}

@Override
public String getLabel() {
return "Bulk action: " + action.displayName;
return "Action: " + action.displayName;
}

@Override
Expand Down Expand Up @@ -144,7 +144,7 @@ public String generate(Project project, List<ObjectType> objects, GeneratorOptio
options.isCreateSuspended() ? "suspended" : "runnable"
);

DOMUtil.createSubElement(task, TaskType.F_CATEGORY).setTextContent("BulkActions");
DOMUtil.createSubElement(task, TaskType.F_CATEGORY).setTextContent("Actions");
DOMUtil.createSubElement(task, TaskType.F_HANDLER_URI).setTextContent(ITERATIVE_SCRIPT_EXECUTION_TASK_HANDLER_URI);
DOMUtil.createSubElement(task, TaskType.F_RECURRENCE).setTextContent(TaskRecurrenceType.SINGLE.value());
}
Expand Down Expand Up @@ -230,7 +230,7 @@ private void createSearch(Element extension, GeneratorOptions options, Batch bat
objectQuery, v, k, objectQuery.getOwnerDocument().getDocumentElement(), false);
});
} catch (RuntimeException e) {
MidPointUtils.publishExceptionNotification(project, null, BulkActionGenerator.class,
MidPointUtils.publishExceptionNotification(project, null, ActionGenerator.class,
GeneratorTask.NOTIFICATION_KEY, "Couldn't parse XML query", e);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public String getLabel() {

@Override
public String generate(Project project, List<ObjectType> objects, GeneratorOptions options) {
// TODO deduplicate with bulk actions
// TODO deduplicate with actions
ObjectTypes type = action.applicableTo;
if (options.isBatchUsingOriginalQuery()) {
if (options.getOriginalQueryTypes().size() == 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,18 @@
public class ProcessResultsDialog extends DialogWrapper {

public static final List<Generator> GENERATORS = Arrays.asList(
new BulkActionGenerator(BulkActionGenerator.Action.RECOMPUTE),
new BulkActionGenerator(BulkActionGenerator.Action.ENABLE),
new BulkActionGenerator(BulkActionGenerator.Action.DISABLE),
new BulkActionGenerator(BulkActionGenerator.Action.DELETE),
new BulkActionGenerator(BulkActionGenerator.Action.MODIFY),
new BulkActionGenerator(BulkActionGenerator.Action.ASSIGN_TO_THIS),
new BulkActionGenerator(BulkActionGenerator.Action.ASSIGN_THIS),
new BulkActionGenerator(BulkActionGenerator.Action.EXECUTE_SCRIPT),
new BulkActionGenerator(BulkActionGenerator.Action.NOTIFY),
new BulkActionGenerator(BulkActionGenerator.Action.LOG),
new BulkActionGenerator(BulkActionGenerator.Action.TEST_RESOURCE),
new BulkActionGenerator(BulkActionGenerator.Action.VALIDATE),
new ActionGenerator(ActionGenerator.Action.RECOMPUTE),
new ActionGenerator(ActionGenerator.Action.ENABLE),
new ActionGenerator(ActionGenerator.Action.DISABLE),
new ActionGenerator(ActionGenerator.Action.DELETE),
new ActionGenerator(ActionGenerator.Action.MODIFY),
new ActionGenerator(ActionGenerator.Action.ASSIGN_TO_THIS),
new ActionGenerator(ActionGenerator.Action.ASSIGN_THIS),
new ActionGenerator(ActionGenerator.Action.EXECUTE_SCRIPT),
new ActionGenerator(ActionGenerator.Action.NOTIFY),
new ActionGenerator(ActionGenerator.Action.LOG),
new ActionGenerator(ActionGenerator.Action.TEST_RESOURCE),
new ActionGenerator(ActionGenerator.Action.VALIDATE),
new TaskGenerator(TaskGenerator.Action.RECOMPUTE),
new TaskGenerator(TaskGenerator.Action.DELETE),
new TaskGenerator(TaskGenerator.Action.MODIFY),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,12 @@ public void testImport3WithQuery() {

@Test
public void testBulkIterative1Multinode() {
testUpgrade("bulk-iterative-1-input.xml", "bulk-iterative-1-output.xml");
testUpgrade("action-iterative-1-input.xml", "action-iterative-1-output.xml");
}

@Test
public void testBulkIterative2() {
testUpgrade("bulk-iterative-2-input.xml", "bulk-iterative-2-output.xml");
testUpgrade("action-iterative-2-input.xml", "action-iterative-2-output.xml");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void transformTask() throws Exception {
System.out.println(sw);

File parent = new File(".");
File datafile = new File(parent, "src/test/testData/task-upgrade/bulk-iterative-2-input.xml");
File datafile = new File(parent, "src/test/testData/task-upgrade/action-iterative-2-input.xml");

String input = Files.readString(datafile.toPath());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</assignment>
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionStatus>closed</executionStatus>
<category>BulkActions</category>
<category>Actions</category>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/task/workers-creation/handler-3</handlerUri>
<workManagement>
<taskKind>coordinator</taskKind>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
</extension>
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionStatus>runnable</executionStatus>
<category>BulkActions</category>
<category>Actions</category>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/iterative-scripting/handler-3</handlerUri>
<recurrence>single</recurrence>
</task>
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
</scext:executeScript>
</extension>
<assignment>
<targetRef oid="00000000-0000-0000-0000-000000000508" type="ArchetypeType"/> <!--Iterative bulk action task -->
<targetRef oid="00000000-0000-0000-0000-000000000508" type="ArchetypeType"/> <!--Iterative action task -->
</assignment>
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionStatus>runnable</executionStatus>
<category>BulkActions</category>
<category>Actions</category>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/scripting/handler-3</handlerUri>
<recurrence>single</recurrence>
</task>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<name>Delete asdf</name>
<assignment>
<targetRef oid="00000000-0000-0000-0000-000000000508" type="ArchetypeType"/>
<!--Iterative bulk action task -->
<!--Iterative action task -->
</assignment>
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionState>runnable</executionState>
Expand Down

0 comments on commit 5caa31b

Please sign in to comment.