Skip to content

Commit 56a2fe7

Browse files
committed
Fix data source state persistance
1 parent 31006df commit 56a2fe7

File tree

5 files changed

+51
-43
lines changed

5 files changed

+51
-43
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/actions/execute/ExecuteQueryAction.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.awt.Component;
2727
import java.awt.event.KeyEvent;
28+
import java.util.Optional;
2829

2930
public class ExecuteQueryAction extends AnAction {
3031

@@ -85,10 +86,12 @@ public void actionPerformed(AnActionEvent e) {
8586
if (virtualFile != null) {
8687
String fileName = virtualFile.getName();
8788
if (fileName.startsWith(GraphConstants.BOUND_DATA_SOURCE_PREFIX)) {
88-
DataSourceApi boundDataSource = dataSourcesComponent.getDataSourceContainer()
89-
.findDataSource(NameUtil.extractDataSourceUUID(fileName));
90-
executeQuery(messageBus, boundDataSource, executeQueryPayload);
91-
return;
89+
Optional<? extends DataSourceApi> boundDataSource = dataSourcesComponent.getDataSourceContainer()
90+
.findDataSource(NameUtil.extractDataSourceUUID(fileName));
91+
if (boundDataSource.isPresent()) {
92+
executeQuery(messageBus, boundDataSource.get(), executeQueryPayload);
93+
return;
94+
}
9295
}
9396
}
9497

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/datasource/state/DataSourceContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ default List<DataSourceApi> getDataSources() {
1313
return (List<DataSourceApi>) getGenericDataSources();
1414
}
1515

16-
DataSourceApi findDataSource(String uuid);
16+
Optional<DataSourceApi> findDataSource(String uuid);
1717

1818
void addDataSource(DataSourceApi dataSource);
1919

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/datasource/state/container/DataSourceContainerV1.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,47 +7,42 @@
77
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.DataSourceContainer;
88
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.impl.DataSourceV1;
99

10+
@SuppressWarnings("SuspiciousMethodCalls")
1011
public class DataSourceContainerV1 implements DataSourceContainer {
1112

12-
public List<DataSourceApi> dataSources = new ArrayList<>();
13+
public List<DataSourceV1> dataSources = new ArrayList<>();
1314

1415
@Override
1516
public List getGenericDataSources() {
1617
return dataSources;
1718
}
1819

1920
@Override
20-
public DataSourceApi findDataSource(String uuid) {
21-
Optional<DataSourceApi> foundDataSource = dataSources.stream()
21+
public Optional<DataSourceApi> findDataSource(String uuid) {
22+
return getDataSources().stream()
2223
.filter((dataSource) -> dataSource.getUUID().equals(uuid))
2324
.findFirst();
24-
25-
if (foundDataSource.isPresent()) {
26-
return foundDataSource.get();
27-
} else {
28-
throw new IllegalStateException("Data source with UUID[" + uuid + "] does not exist");
29-
}
3025
}
3126

3227
@Override
3328
public void addDataSource(DataSourceApi dataSource) {
34-
dataSources.add(dataSource);
29+
getDataSources().add(dataSource);
3530
}
3631

3732
@Override
3833
public void updateDataSource(DataSourceApi oldDataSource, DataSourceApi newDataSource) {
39-
int index = dataSources.indexOf(oldDataSource);
40-
dataSources.set(index, newDataSource);
34+
int index = getDataSources().indexOf(oldDataSource);
35+
getDataSources().set(index, newDataSource);
4136
}
4237

4338
@Override
4439
public void removeDataSources(List<DataSourceApi> dataSourcesForRemoval) {
45-
dataSources.removeAll(dataSourcesForRemoval);
40+
getDataSources().removeAll(dataSourcesForRemoval);
4641
}
4742

4843
@Override
4944
public Optional<DataSourceApi> getDataSource(final String dataSourceName) {
50-
return dataSources.stream()
45+
return getDataSources().stream()
5146
.filter((dataSource) -> dataSource.getName().equals(dataSourceName))
5247
.findAny();
5348
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions;
22

3+
import java.util.Optional;
4+
5+
import javax.swing.*;
6+
7+
import org.jetbrains.annotations.NotNull;
8+
import org.jetbrains.annotations.Nullable;
9+
310
import com.intellij.execution.console.ConsoleRootType;
411
import com.intellij.openapi.project.Project;
512
import com.intellij.openapi.vfs.VirtualFile;
13+
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourceDescription;
614
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourcesComponent;
715
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.DataSourceApi;
816
import com.neueda.jetbrains.plugin.graphdb.jetbrains.util.NameUtil;
9-
import org.jetbrains.annotations.NotNull;
10-
import org.jetbrains.annotations.Nullable;
11-
12-
import javax.swing.Icon;
1317

1418
public class GraphDbEditorsConsoleRootType extends ConsoleRootType {
1519

@@ -25,17 +29,23 @@ public static GraphDbEditorsConsoleRootType getInstance() {
2529
@Nullable
2630
@Override
2731
public Icon substituteIcon(@NotNull Project project, @NotNull VirtualFile file) {
28-
return getDataSource(project, file).getDescription().getIcon();
32+
return getDataSource(project, file)
33+
.map(DataSourceApi::getDescription)
34+
.map(DataSourceDescription::getIcon)
35+
.orElse(null);
2936
}
3037

3138
@Nullable
3239
@Override
3340
public String substituteName(@NotNull Project project, @NotNull VirtualFile file) {
34-
return getDataSource(project, file).getName();
41+
return getDataSource(project, file)
42+
.map(DataSourceApi::getName)
43+
.orElse(null);
3544
}
3645

37-
private DataSourceApi getDataSource(@NotNull Project project, @NotNull VirtualFile file) {
46+
private Optional<? extends DataSourceApi> getDataSource(@NotNull Project project, @NotNull VirtualFile file) {
3847
DataSourcesComponent component = project.getComponent(DataSourcesComponent.class);
39-
return component.getDataSourceContainer().findDataSource(NameUtil.extractDataSourceUUID(file.getName()));
48+
return component.getDataSourceContainer()
49+
.findDataSource(NameUtil.extractDataSourceUUID(file.getName()));
4050
}
4151
}

ui/jetbrains/src/test/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/datasource/state/DataSourcesComponentStateTest.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state;
22

3-
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourceType;
4-
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.impl.DataSource;
3+
import static org.assertj.core.api.Assertions.*;
4+
5+
import java.util.*;
6+
57
import org.junit.Before;
68
import org.junit.Test;
79

8-
import java.util.Collections;
9-
import java.util.List;
10-
import java.util.UUID;
11-
12-
import static org.assertj.core.api.Assertions.assertThat;
10+
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourceType;
11+
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.impl.DataSource;
1312

1413
public class DataSourcesComponentStateTest {
1514

@@ -25,32 +24,33 @@ public void testMigrateFromInitial() throws Exception {
2524
state.dataSources.add(new DataSource(DataSourceType.NEO4J_BOLT, "testName", Collections.emptyMap()));
2625
state.migrate();
2726

28-
List<DataSourceApi> dataSources = state.containerV1.getDataSources();
27+
List<? extends DataSourceApi> dataSources = state.containerV1.getDataSources();
2928
assertThat(state.dataSources).hasSize(0);
3029
assertThat(dataSources).hasSize(1);
3130
DataSourceApi dataSource = dataSources.get(0);
3231

3332
assertThat(dataSource.getUUID())
34-
.isNotNull()
35-
.hasSameSizeAs(UUID.randomUUID().toString());
33+
.isNotNull()
34+
.hasSameSizeAs(UUID.randomUUID().toString());
3635
assertThat(dataSource.getName())
37-
.isEqualTo("testName");
36+
.isEqualTo("testName");
3837
assertThat(dataSource.getDataSourceType())
39-
.isEqualTo(DataSourceType.NEO4J_BOLT);
38+
.isEqualTo(DataSourceType.NEO4J_BOLT);
4039
}
4140

42-
@Test(expected = IllegalStateException.class)
41+
@Test
4342
public void findDataSourceByUuidThrowsExceptionIfNotExists() throws Exception {
44-
state.getCurrentContainer().findDataSource("notexists");
43+
Optional<? extends DataSourceApi> dataSource = state.getCurrentContainer().findDataSource("notexists");
44+
assertThat(dataSource).isNotPresent();
4545
}
4646

4747
@Test
4848
public void findDataSourceByUuidReturnObjectIfExists() throws Exception {
4949
DataSourceApi dataSource = state.getCurrentContainer()
50-
.createDataSource(null, DataSourceType.NEO4J_BOLT, "testName", Collections.emptyMap());
50+
.createDataSource(null, DataSourceType.NEO4J_BOLT, "testName", Collections.emptyMap());
5151

5252
state.getCurrentContainer().addDataSource(dataSource);
53-
DataSourceApi foundDataSource = state.getCurrentContainer().findDataSource(dataSource.getUUID());
53+
DataSourceApi foundDataSource = state.getCurrentContainer().findDataSource(dataSource.getUUID()).get();
5454

5555
assertThat(foundDataSource.getUUID()).isEqualTo(dataSource.getUUID());
5656
assertThat(foundDataSource.getName()).isEqualTo(dataSource.getName());

0 commit comments

Comments
 (0)