Skip to content

Commit c7cef27

Browse files
Optimized find by id
1 parent e30431e commit c7cef27

48 files changed

Lines changed: 420 additions & 250 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 1.1.0
2+
3+
* Restructured root to improve performance with IDs in entities
4+
15
# 1.0.10
26

37
* Optimistic locking with @Version now possible

docs/antora.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
name: ROOT
22
title: Spring-Data-Eclipse-Store
33
version: master
4-
display_version: '1.0.10'
4+
display_version: '1.1.0'
55
start_page: index.adoc
66
nav:
77
- modules/ROOT/nav.adoc
88
asciidoc:
99
attributes:
1010
product-name: 'Spring-Data-Eclipse-Store'
11-
display-version: '1.0.10'
12-
maven-version: '1.0.10'
11+
display-version: '1.1.0'
12+
maven-version: '1.1.0'
1313
page-editable: false
1414
page-out-of-support: false

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>software.xdev</groupId>
88
<artifactId>spring-data-eclipse-store-root</artifactId>
9-
<version>1.0.11-SNAPSHOT</version>
9+
<version>1.1.0-SNAPSHOT</version>
1010
<packaging>pom</packaging>
1111

1212
<organization>

spring-data-eclipse-store-benchmark/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
<parent>
66
<groupId>software.xdev</groupId>
77
<artifactId>spring-data-eclipse-store-root</artifactId>
8-
<version>1.0.11-SNAPSHOT</version>
8+
<version>1.1.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>spring-data-eclipse-store-benchmark</artifactId>
12-
<version>1.0.11-SNAPSHOT</version>
12+
<version>1.1.0-SNAPSHOT</version>
1313
<packaging>jar</packaging>
1414

1515
<inceptionYear>2023</inceptionYear>

spring-data-eclipse-store-demo/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>software.xdev</groupId>
99
<artifactId>spring-data-eclipse-store-root</artifactId>
10-
<version>1.0.11-SNAPSHOT</version>
10+
<version>1.1.0-SNAPSHOT</version>
1111
</parent>
1212

1313
<artifactId>spring-data-eclipse-store-demo</artifactId>
14-
<version>1.0.11-SNAPSHOT</version>
14+
<version>1.1.0-SNAPSHOT</version>
1515
<packaging>jar</packaging>
1616

1717
<organization>

spring-data-eclipse-store-jpa/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>software.xdev</groupId>
99
<artifactId>spring-data-eclipse-store-root</artifactId>
10-
<version>1.0.11-SNAPSHOT</version>
10+
<version>1.1.0-SNAPSHOT</version>
1111
</parent>
1212

1313
<artifactId>spring-data-eclipse-store-jpa</artifactId>
14-
<version>1.0.11-SNAPSHOT</version>
14+
<version>1.1.0-SNAPSHOT</version>
1515
<packaging>jar</packaging>
1616

1717
<inceptionYear>2023</inceptionYear>

spring-data-eclipse-store/pom.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>software.xdev</groupId>
88
<artifactId>spring-data-eclipse-store</artifactId>
9-
<version>1.0.11-SNAPSHOT</version>
9+
<version>1.1.0-SNAPSHOT</version>
1010
<packaging>jar</packaging>
1111

1212
<name>spring-data-eclipse-store</name>
@@ -148,6 +148,22 @@
148148
<version>${org.eclipse.serializer.version}</version>
149149
</dependency>
150150

151+
<dependency>
152+
<groupId>software.xdev</groupId>
153+
<artifactId>micro-migration</artifactId>
154+
<version>2.0.0</version>
155+
<exclusions>
156+
<exclusion>
157+
<artifactId>storage-embedded</artifactId>
158+
<groupId>org.eclipse.store</groupId>
159+
</exclusion>
160+
<exclusion>
161+
<artifactId>storage-embedded-configuration</artifactId>
162+
<groupId>org.eclipse.store</groupId>
163+
</exclusion>
164+
</exclusions>
165+
</dependency>
166+
151167
<dependency>
152168
<groupId>org.junit.jupiter</groupId>
153169
<artifactId>junit-jupiter-engine</artifactId>

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/core/EntityListProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
public interface EntityListProvider
1919
{
20-
<T> EntityProvider<T> getEntityProvider(final Class<T> clazz);
20+
<T, ID> EntityProvider<T, ID> getEntityProvider(final Class<T> clazz);
2121

2222
<T> long getEntityCount(final Class<T> clazz);
2323
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/core/EntityProvider.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,26 @@
1818
import java.util.ArrayList;
1919
import java.util.Collection;
2020
import java.util.List;
21+
import java.util.Optional;
2122
import java.util.Set;
2223
import java.util.stream.Collectors;
2324
import java.util.stream.Stream;
2425

26+
import software.xdev.spring.data.eclipse.store.repository.root.EntityData;
2527

26-
public class EntityProvider<T>
28+
29+
public class EntityProvider<T, ID>
2730
{
28-
private final List<IdentitySet<? extends T>> identitySets = new ArrayList<>();
31+
private final List<EntityData<? extends T, ID>> entityDataList = new ArrayList<>();
2932

30-
public void addIdentitySet(final IdentitySet<? extends T> identitySet)
33+
public void addEntityData(final EntityData<? extends T, ID> entityData)
3134
{
32-
this.identitySets.add(identitySet);
35+
this.entityDataList.add(entityData);
3336
}
3437

3538
public Stream<? extends T> stream()
3639
{
37-
return this.identitySets.stream().flatMap(Set::stream);
40+
return this.entityDataList.stream().map(EntityData::getEntities).flatMap(Set::stream);
3841
}
3942

4043
public Collection<T> toCollection()
@@ -51,4 +54,13 @@ public long size()
5154
{
5255
return this.stream().count();
5356
}
57+
58+
public Optional<T> findAnyEntityWithId(final ID id)
59+
{
60+
return (Optional<T>)this.entityDataList
61+
.stream()
62+
.map(entityData -> entityData.getEntitiesById().get(id))
63+
.filter(e -> e != null)
64+
.findAny();
65+
}
5466
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/importer/EclipseStoreDataImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
import software.xdev.spring.data.eclipse.store.repository.SupportedChecker;
3535
import software.xdev.spring.data.eclipse.store.repository.config.EclipseStoreClientConfiguration;
3636
import software.xdev.spring.data.eclipse.store.repository.support.SimpleEclipseStoreRepository;
37-
import software.xdev.spring.data.eclipse.store.repository.support.copier.id.IdManager;
3837
import software.xdev.spring.data.eclipse.store.repository.support.copier.working.RecursiveWorkingCopier;
38+
import software.xdev.spring.data.eclipse.store.repository.support.id.IdManager;
3939
import software.xdev.spring.data.eclipse.store.transactions.EclipseStoreTransactionManager;
4040

4141

0 commit comments

Comments
 (0)