Skip to content

Commit 95479b5

Browse files
committed
Refactor run SWAN action
1 parent 497d4d3 commit 95479b5

File tree

4 files changed

+38
-91
lines changed

4 files changed

+38
-91
lines changed

swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/actions/RunSwanAnalysisAction.java renamed to swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/actions/RunSwanAction.java

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,31 @@
77

88
package de.fraunhofer.iem.swan.assist.actions;
99

10+
import com.intellij.ide.util.PropertiesComponent;
1011
import com.intellij.openapi.actionSystem.AnAction;
1112
import com.intellij.openapi.actionSystem.AnActionEvent;
1213
import com.intellij.openapi.actionSystem.CommonDataKeys;
14+
import com.intellij.openapi.progress.PerformInBackgroundOption;
15+
import com.intellij.openapi.progress.ProgressManager;
1316
import com.intellij.openapi.project.Project;
14-
import com.intellij.openapi.ui.DialogWrapper;
15-
import com.intellij.util.messages.MessageBus;
17+
import de.fraunhofer.iem.swan.assist.analysis.SwanBackgroundTask;
1618
import de.fraunhofer.iem.swan.assist.comm.SwanNotifier;
1719
import de.fraunhofer.iem.swan.assist.data.JSONFileLoader;
18-
import de.fraunhofer.iem.swan.assist.data.TrainingFileManager;
19-
import de.fraunhofer.iem.swan.assist.ui.dialog.RunAnalysisDialog;
2020
import de.fraunhofer.iem.swan.assist.util.Constants;
2121
import de.fraunhofer.iem.swan.data.Method;
2222

2323
import java.io.File;
2424
import java.io.IOException;
2525
import java.io.InputStream;
26-
import java.util.HashMap;
2726
import java.util.HashSet;
27+
import java.util.Objects;
2828
import java.util.Properties;
2929
import java.util.Set;
3030

3131
/**
32-
* Action opens dialog for user to set parameters for running SWAN. After which thread is created to run SWAN.
32+
* Action runs SWAN using the configuration provided in the SettingsDialog. After which thread is created to run SWAN.
3333
*/
34-
public class RunSwanAnalysisAction extends AnAction {
34+
public class RunSwanAction extends AnAction {
3535

3636
protected Set<Method> methods = new HashSet<Method>();
3737

@@ -44,7 +44,6 @@ public class RunSwanAnalysisAction extends AnAction {
4444
public void actionPerformed(AnActionEvent anActionEvent) {
4545

4646
final Project project = anActionEvent.getRequiredData(CommonDataKeys.PROJECT);
47-
MessageBus messageBus = project.getMessageBus();
4847

4948
Properties config = new Properties();
5049
InputStream input = null;
@@ -64,30 +63,27 @@ public void actionPerformed(AnActionEvent anActionEvent) {
6463
}
6564
}
6665

67-
//Launch Dialog
68-
RunAnalysisDialog dialog = new RunAnalysisDialog(project, true);
69-
dialog.show();
70-
71-
if (dialog.getExitCode() == DialogWrapper.OK_EXIT_CODE) {
72-
73-
HashMap<String, String> swanParameters = dialog.getParameters();
66+
if (!PropertiesComponent.getInstance(project).isTrueValue(Constants.SWAN_SETTINGS)) {
67+
anActionEvent.getActionManager().getAction("SWAN_Assist.SettingsAction").actionPerformed(anActionEvent);
68+
//TODO Run SWAN if the tool has been configured
69+
} else {
70+
runSwan(project);
71+
}
72+
}
7473

75-
if(!swanParameters.get(Constants.CONFIGURATION_FILE).contentEquals(config.getProperty("swan_default_param_value"))){
76-
String outputPath = swanParameters.get(Constants.OUTPUT_DIRECTORY) + File.separator + config.getProperty("input_json_suffix");
77-
//TrainingFileManager trainingFileManager = new TrainingFileManager(project);
74+
public void runSwan(Project project) {
7875

79-
//if (trainingFileManager.mergeExport(JSONFileLoader.getAllMethods(), outputPath))
80-
// swanParameters.put(Constants.CONFIGURATION_FILE, outputPath);
81-
}
76+
File outputFolder = new File(Objects.requireNonNull(PropertiesComponent.getInstance(project).getValue(Constants.OUTPUT_DIRECTORY)));
8277

83-
RunSwanAnalysisImpl processBuilder = new RunSwanAnalysisImpl(project, dialog.getParameters());
84-
processBuilder.run();
78+
if (!outputFolder.exists())
79+
outputFolder.mkdir();
8580

86-
SwanNotifier publisher = messageBus.syncPublisher(SwanNotifier.START_SWAN_PROCESS_TOPIC);
87-
publisher.launchSwan(null);
88-
}
81+
ProgressManager.getInstance().run(new SwanBackgroundTask(project, "Detecting SRMs", true,
82+
PerformInBackgroundOption.ALWAYS_BACKGROUND));
8983

90-
}
84+
SwanNotifier publisher = project.getMessageBus().syncPublisher(SwanNotifier.START_SWAN_PROCESS_TOPIC);
85+
publisher.launchSwan(null);
86+
}
9187

9288
/**
9389
* Controls whether the action is enabled or disabled

swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/actions/RunSwanAnalysisImpl.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/actions/RunSwanTask.java renamed to swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/analysis/SwanBackgroundTask.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package de.fraunhofer.iem.swan.assist.actions;
1+
package de.fraunhofer.iem.swan.assist.analysis;
22

3+
import com.intellij.ide.util.PropertiesComponent;
34
import com.intellij.openapi.progress.PerformInBackgroundOption;
45
import com.intellij.openapi.progress.ProgressIndicator;
56
import com.intellij.openapi.progress.Task;
@@ -22,16 +23,16 @@
2223
import java.time.format.DateTimeFormatter;
2324
import java.util.HashMap;
2425
import java.util.List;
26+
import java.util.Objects;
2527

26-
public class RunSwanTask extends Task.Backgroundable {
28+
public class SwanBackgroundTask extends Task.Backgroundable {
2729

2830
private Project project;
2931
private HashMap<String, String> parameters;
3032
private long duration;
3133

32-
public RunSwanTask(@Nullable Project project, @NlsContexts.ProgressTitle @NotNull String title, boolean canBeCancelled, @Nullable PerformInBackgroundOption backgroundOption, HashMap<String, String> parameters) {
34+
public SwanBackgroundTask(@Nullable Project project, @NlsContexts.ProgressTitle @NotNull String title, boolean canBeCancelled, @Nullable PerformInBackgroundOption backgroundOption) {
3335
super(project, title, canBeCancelled, backgroundOption);
34-
this.parameters = parameters;
3536
this.project = project;
3637
}
3738

@@ -42,12 +43,14 @@ public void run(@NotNull ProgressIndicator indicator) {
4243

4344
indicator.setText("Configuring SWAN");
4445
SwanOptions options = new CliRunner().initializeOptions();
45-
options.setTestDataDir(parameters.get(Constants.SOURCE_DIRECTORY));
46-
options.setOutputDir(parameters.get(Constants.OUTPUT_DIRECTORY));
47-
options.setToolkit(parameters.get(Constants.TOOLKIT).toLowerCase());
46+
47+
options.setTestDataDir(Objects.requireNonNull(PropertiesComponent.getInstance(project).getValue(Constants.SOURCE_DIRECTORY)));
48+
options.setOutputDir(Objects.requireNonNull(PropertiesComponent.getInstance(project).getValue(Constants.OUTPUT_DIRECTORY)));
49+
options.setToolkit(Objects.requireNonNull(PropertiesComponent.getInstance(project).getValue(Constants.TOOLKIT)).toLowerCase());
4850
options.setSrmClasses(List.of("all"));
4951
options.setPhase("predict");
5052
options.setTrainDataDir("");
53+
options.setAddSrmRepo(true);
5154

5255

5356
indicator.setText("Running SWAN");
@@ -64,7 +67,7 @@ public void run(@NotNull ProgressIndicator indicator) {
6467
int s = (int) ((duration / 1000) % 60);
6568

6669
indicator.setText("Exporting SRMs");
67-
String filename = parameters.get(Constants.OUTPUT_DIRECTORY) + File.separator + "srm-" + getCurrentTimestamp() + ".json";
70+
String filename = Objects.requireNonNull(PropertiesComponent.getInstance(project).getValue(Constants.OUTPUT_DIRECTORY)) + File.separator + "srm-" + getCurrentTimestamp() + ".json";
6871
SrmList srmList = swan.getSwanPipeline().getModelEvaluator().getPredictedSrmList();
6972

7073
try {
@@ -75,6 +78,8 @@ public void run(@NotNull ProgressIndicator indicator) {
7578
}
7679

7780
HashMap<String, String> results = new HashMap<>();
81+
82+
PropertiesComponent.getInstance(project).setValue(Constants.LAST_SRM_LIST, filename);
7883
results.put(Constants.OUTPUT_FILE, filename);
7984
results.put(Constants.OUTPUT_LOG, "");
8085
results.put(Constants.ANALYSIS_RESULT, srmList.getMethods().size() + " methods found in " + m + " mins " + s + " secs");

swan-assist/src/main/java/de/fraunhofer/iem/swan/assist/util/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@ public class Constants {
2626
public final static String TRAIN_DIRECTORY = PLUGIN_ID + "trainingPath";
2727
public final static String SOURCE_DIRECTORY = PLUGIN_ID + "projectJarFiles"; //Test Library (or the project)
2828
public final static String CONFIGURATION_FILE = PLUGIN_ID + "configurationFile";
29+
public final static String SWAN_SETTINGS = PLUGIN_ID + "projectConfigured";
2930
public final static String OUTPUT_DIRECTORY = PLUGIN_ID + "outputPath";
3031
public final static String OUTPUT_FILE = PLUGIN_ID + "outputFile";
3132
public final static String OUTPUT_LOG = PLUGIN_ID + "outputLogs";
3233
public final static String ANALYSIS_RESULT = PLUGIN_ID + "analysisResult";
3334
public final static String TRAIN_FILE_SUGGESTED = PLUGIN_ID + "file_suggested_methods";
3435

35-
public final static String TOOLKIT = "toolkit";
36+
public final static String TOOLKIT = PLUGIN_ID + "toolkit";
3637
public final static String DEFAULT_TRAINING_PATH = PLUGIN_ID + "defaultTrainingPath";
3738
public final static String PROJECT_CONFIGURATION_FILE = PLUGIN_ID + "defaultConfigurationFile";
3839

0 commit comments

Comments
 (0)