Skip to content
This repository was archived by the owner on Dec 4, 2017. It is now read-only.

Commit 80e92c7

Browse files
committed
complete OrmExporter and SqlExporter
1 parent 2165fa2 commit 80e92c7

File tree

17 files changed

+214
-317
lines changed

17 files changed

+214
-317
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package elasta.module;
22

3+
import java.util.Optional;
4+
35
/**
46
* Created by sohan on 5/14/2017.
57
*/
68
@FunctionalInterface
79
public interface ModuleProvider {
8-
<T> T get();
10+
<T> Optional<T> get();
911
}

elasta-module/src/main/java/elasta/module/impl/ModuleProviderImpl.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import elasta.module.ex.ModuleSystemException;
66

77
import java.util.Objects;
8+
import java.util.Optional;
89

910
/**
1011
* Created by sohan on 5/14/2017.
@@ -22,26 +23,22 @@ public ModuleProviderImpl(ExportScript exportScript, ModuleMapProxy moduleMapPro
2223
}
2324

2425
@Override
25-
public <T> T get() {
26+
public <T> Optional<T> get() {
2627

2728
if (exportedModule == null) {
2829

29-
return cast(exportedModule = executeScript());
30+
executeScript().ifPresent(newModule -> exportedModule = newModule);
3031
}
3132

32-
return cast(exportedModule);
33+
return Optional.ofNullable((T) exportedModule);
3334
}
3435

35-
private <T> T cast(Object exportedModule) {
36-
return (T) exportedModule;
37-
}
36+
private <T> Optional<T> executeScript() {
3837

39-
private <T> T executeScript() {
4038
final ImmutableModuleImpl<T> immutableModule = new ImmutableModuleImpl<>(moduleMapProxy.getMap());
4139

4240
exportScript.run(immutableModule);
4341

44-
return immutableModule.getExportedModule()
45-
.orElseThrow(() -> new ModuleSystemException("No module was exported during export script execution"));
42+
return immutableModule.getExportedModule();
4643
}
4744
}

elasta-module/src/main/java/elasta/module/impl/ModuleSystemImpl.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,12 @@ public <T> T requireOrElse(Class<T> type, String moduleName, T defaultValue) {
6565

6666
private <T> Optional<T> get(TypeAndNamePair typeAndNamePair) {
6767
Objects.requireNonNull(typeAndNamePair);
68-
ModuleProvider moduleProvider = typeAndNamePairToModuleHolderMap.get(typeAndNamePair);
69-
return Optional.ofNullable(moduleProvider).map(ModuleProvider::get);
68+
69+
return Optional.ofNullable(typeAndNamePairToModuleHolderMap.get(typeAndNamePair))
70+
.map(
71+
moduleProvider -> moduleProvider.<T>get()
72+
.orElseThrow(() -> new ModuleSystemException("No module was exported during script execution for module '" + typeAndNamePair + "'"))
73+
);
7074
}
7175

7276
@Value
@@ -84,6 +88,11 @@ public TypeAndNamePair(Class type, String name) {
8488
public Optional<String> getName() {
8589
return Optional.ofNullable(name);
8690
}
91+
92+
@Override
93+
public String toString() {
94+
return "(type=" + type + getName().map(nm -> ", name=" + nm).orElse("") + ")";
95+
}
8796
}
8897

8998
}

elasta-orm/src/main/java/elasta/orm/OrmExporter.java

+52-47
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package elasta.orm;
22

3-
import com.google.common.collect.ImmutableList;
43
import elasta.criteria.json.mapping.*;
5-
import elasta.criteria.json.mapping.impl.JsonToFuncConverterBuilderHelperImpl;
6-
import elasta.criteria.json.mapping.impl.JsonToFuncConverterMapBuilderImpl;
7-
import elasta.criteria.json.mapping.impl.ValueHolderOperationBuilderHelperImpl;
4+
import elasta.criteria.json.mapping.impl.*;
85
import elasta.module.ModuleExporter;
96
import elasta.module.ModuleSystemBuilder;
107
import elasta.orm.builder.impl.OperationMapBuilder;
@@ -13,17 +10,11 @@
1310
import elasta.orm.entity.core.Entity;
1411
import elasta.orm.entity.impl.EntityMappingHelperImpl;
1512
import elasta.sql.*;
16-
import elasta.sql.dbaction.DbInterceptors;
17-
import elasta.sql.dbaction.impl.DbInterceptorsImpl;
1813
import elasta.orm.impl.BaseOrmImpl;
1914
import elasta.orm.impl.OrmImpl;
2015
import elasta.orm.impl.QueryDataLoaderImpl;
2116
import elasta.orm.query.QueryExecutor;
2217
import elasta.orm.query.iml.QueryExecutorImpl;
23-
import elasta.sql.impl.BaseSqlDBImpl;
24-
import elasta.sql.impl.SqlBuilderUtilsImpl;
25-
import elasta.sql.impl.SqlDBImpl;
26-
import elasta.sql.impl.SqlExecutorImpl;
2718
import io.vertx.ext.jdbc.JDBCClient;
2819
import lombok.Builder;
2920
import lombok.Value;
@@ -37,17 +28,20 @@
3728
*/
3829
public interface OrmExporter extends ModuleExporter {
3930

40-
static void exportTo(ExportToParams params) {
31+
static ModuleSystemBuilder exportTo(ExportToParams params) {
4132
Objects.requireNonNull(params);
4233

34+
final JDBCClient jdbcClient = params.getJdbcClient();
4335
final ModuleSystemBuilder builder = params.getModuleSystemBuilder();
4436
final Collection<Entity> entities = params.getEntities();
4537

4638
builder.export(Orm.class, module -> {
47-
new OrmImpl(
48-
module.require(EntityMappingHelper.class),
49-
module.require(BaseOrm.class),
50-
module.require(QueryDataLoader.class)
39+
module.export(
40+
new OrmImpl(
41+
module.require(EntityMappingHelper.class),
42+
module.require(BaseOrm.class),
43+
module.require(QueryDataLoader.class)
44+
)
5145
);
5246
});
5347

@@ -67,21 +61,31 @@ static void exportTo(ExportToParams params) {
6761
)
6862
);
6963
});
64+
65+
SqlExporter.exportTo(
66+
SqlExporter.ExportToParams.builder()
67+
.jdbcClient(jdbcClient)
68+
.moduleSystemBuilder(builder)
69+
.build()
70+
);
71+
72+
return builder;
7073
}
7174

72-
static void exportBaseOrm(ExportToParams params) {
75+
static ModuleSystemBuilder exportBaseOrm(ExportToParams params) {
7376

7477
final ModuleSystemBuilder builder = params.getModuleSystemBuilder();
7578
final JDBCClient jdbcClient = params.getJdbcClient();
7679
final Collection<Entity> entities = params.getEntities();
80+
final String isNewKey = params.getIsNewKey();
7781

7882
builder.export(BaseOrm.class, module -> {
7983

8084
final Map<String, BaseOrmImpl.EntityOperation> operationMap = new OperationMapBuilder(
8185
entities,
8286
module.require(EntityMappingHelper.class),
8387
module.require(SqlDB.class),
84-
params.getIsNewKey()
88+
isNewKey
8589
).build();
8690

8791
module.export(new BaseOrmImpl(
@@ -99,6 +103,23 @@ static void exportBaseOrm(ExportToParams params) {
99103
));
100104
});
101105

106+
exportJsonToFuncConverterMap(builder);
107+
108+
exportGenericJsonToFuncConverter(builder);
109+
110+
return builder;
111+
}
112+
113+
static void exportGenericJsonToFuncConverter(ModuleSystemBuilder builder) {
114+
builder.export(GenericJsonToFuncConverter.class, module -> {
115+
module.export(
116+
new GenericJsonToFuncConverterImpl()
117+
);
118+
});
119+
}
120+
121+
static void exportJsonToFuncConverterMap(ModuleSystemBuilder builder) {
122+
102123
builder.export(JsonToFuncConverterMap.class, module -> {
103124

104125
module.export(
@@ -110,44 +131,28 @@ static void exportBaseOrm(ExportToParams params) {
110131

111132
});
112133

134+
builder.export(JsonToFuncConverterHelper.class, module -> {
135+
module.export(new JsonToFuncConverterHelperImpl(
136+
module.require(JsonToFuncConverterBuilderHelper.class)
137+
));
138+
});
139+
140+
exportJsonToFuncConverterBuilderHelper(builder);
141+
}
142+
143+
static void exportJsonToFuncConverterBuilderHelper(ModuleSystemBuilder builder) {
144+
113145
builder.export(JsonToFuncConverterBuilderHelper.class, module -> {
114146
module.export(
115147
new JsonToFuncConverterBuilderHelperImpl(
116-
new ValueHolderOperationBuilderHelperImpl()
148+
module.require(ValueHolderOperationBuilderHelper.class)
117149
)
118150
);
119151
});
120152

121-
builder.export(SqlDB.class, module -> {
122-
module.export(new SqlDBImpl(
123-
module.require(BaseSqlDB.class),
124-
module.require(SqlBuilderUtils.class),
125-
new DbInterceptorsImpl(
126-
ImmutableList.of(),
127-
ImmutableList.of()
128-
)
129-
));
130-
});
131-
132-
builder.export(BaseSqlDB.class, module -> {
133-
module.export(new BaseSqlDBImpl(
134-
module.require(SqlExecutor.class),
135-
module.require(SqlQueryBuilderUtils.class)
136-
));
153+
builder.export(ValueHolderOperationBuilderHelper.class, module -> {
154+
module.export(new ValueHolderOperationBuilderHelperImpl());
137155
});
138-
139-
builder.export(SqlExecutor.class, module -> module.export(new SqlExecutorImpl(
140-
jdbcClient
141-
)));
142-
143-
builder.export(SqlBuilderUtils.class, module -> module.export(new SqlBuilderUtilsImpl()));
144-
145-
builder.export(DbInterceptors.class, module -> module.export(
146-
new DbInterceptorsImpl(
147-
ImmutableList.of(),
148-
ImmutableList.of()
149-
)
150-
));
151156
}
152157

153158
@Value

elasta-orm/src/test/java/test/Delete.java

+2-11
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,6 @@
1313
*/
1414
public interface Delete {
1515
static void main(String[] asdfasd) {
16-
JDBCClient jdbcClient = Test.jdbcClient("jpadb", Vertx.vertx(new VertxOptions()
17-
.setWorkerPoolSize(1)
18-
.setEventLoopPoolSize(1)
19-
));
20-
21-
BaseOrm baseOrm = Test.baseOrm(Test.Params.builder()
22-
.entities(Employees.entities())
23-
.jdbcClient(jdbcClient)
24-
.build());
2516

2617
final JsonObject employee = new JsonObject(
2718
ImmutableMap.of(
@@ -53,12 +44,12 @@ static void main(String[] asdfasd) {
5344
)
5445
);
5546

56-
baseOrm.delete(
47+
Test.baseOrm().delete(
5748
BaseOrm.DeleteParams.builder()
5849
.entity("employee")
5950
.jsonObject(employee)
6051
.build()
61-
).thenP(Test.sqlDB(jdbcClient)::update).then(jsonObject -> {
52+
).thenP(Test.sqlDB()::update).then(jsonObject -> {
6253
System.out.println("ppp888888888888888888888888888888888888888888888888888888888888888888888");
6354
}).err(Throwable::printStackTrace);
6455
}

elasta-orm/src/test/java/test/Delete22.java

+2-9
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,8 @@
1313
*/
1414
public interface Delete22 {
1515
static void main(String[] asdfasd) {
16-
JDBCClient jdbcClient = Test.jdbcClient("jpadb", Vertx.vertx(new VertxOptions()
17-
.setWorkerPoolSize(1)
18-
.setEventLoopPoolSize(1)
19-
));
2016

21-
BaseOrm baseOrm = Test.baseOrm(Test.Params.builder()
22-
.entities(Employees.entities())
23-
.jdbcClient(jdbcClient)
24-
.build());
17+
BaseOrm baseOrm = Test.baseOrm();
2518

2619
JsonObject department = new JsonObject(
2720
ImmutableMap.of(
@@ -35,7 +28,7 @@ static void main(String[] asdfasd) {
3528
.entity("department")
3629
.jsonObject(department)
3730
.build()
38-
).mapP(Test.sqlDB(jdbcClient)::update).then(jsonObject -> {
31+
).mapP(Test.sqlDB()::update).then(jsonObject -> {
3932
System.out.println("ppp888888888888888888888888888888888888888888888888888888888888888888888");
4033
}).err(Throwable::printStackTrace);
4134
}

elasta-orm/src/test/java/test/Delete33.java

+2-10
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,7 @@
1313
public interface Delete33 {
1414
static void main(String[] asdfasd) {
1515

16-
JDBCClient jdbcClient = Test.jdbcClient("jpadb", Vertx.vertx(new VertxOptions()
17-
.setWorkerPoolSize(1)
18-
.setEventLoopPoolSize(1)
19-
));
20-
21-
BaseOrm baseOrm = Test.baseOrm(Test.Params.builder()
22-
.entities(Employees.entities())
23-
.jdbcClient(jdbcClient)
24-
.build());
16+
BaseOrm baseOrm = Test.baseOrm();
2517

2618
JsonObject employee = new JsonObject(
2719
ImmutableMap.of(
@@ -34,7 +26,7 @@ static void main(String[] asdfasd) {
3426
.entity("employee")
3527
.jsonObject(employee)
3628
.build()
37-
).mapP(Test.sqlDB(jdbcClient)::update).then(jsonObject -> {
29+
).mapP(Test.sqlDB()::update).then(jsonObject -> {
3830
System.out.println("ppp888888888888888888888888888888888888888888888888888888888888888888888");
3931
}).err(Throwable::printStackTrace);
4032
}

elasta-orm/src/test/java/test/Delete44.java

+2-9
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,8 @@
1212
*/
1313
public interface Delete44 {
1414
static void main(String[] asdfasd) {
15-
JDBCClient jdbcClient = Test.jdbcClient("jpadb", Vertx.vertx(new VertxOptions()
16-
.setWorkerPoolSize(1)
17-
.setEventLoopPoolSize(1)
18-
));
1915

20-
BaseOrm baseOrm = Test.baseOrm(Test.Params.builder()
21-
.entities(Employees.entities())
22-
.jdbcClient(jdbcClient)
23-
.build());
16+
BaseOrm baseOrm = Test.baseOrm();
2417

2518
final JsonObject employee = new JsonObject(
2619
ImmutableMap.copyOf(
@@ -35,7 +28,7 @@ static void main(String[] asdfasd) {
3528
.entity("employee")
3629
.jsonObject(employee)
3730
.build()
38-
).mapP(Test.sqlDB(jdbcClient)::update).then(jsonObject -> {
31+
).mapP(Test.sqlDB()::update).then(jsonObject -> {
3932
System.out.println("ppp888888888888888888888888888888888888888888888888888888888888888888888");
4033
}).err(Throwable::printStackTrace);
4134
}

elasta-orm/src/test/java/test/Delete55.java

+2-9
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,8 @@
1313
*/
1414
public interface Delete55 {
1515
static void main(String[] asdfasd) {
16-
JDBCClient jdbcClient = Test.jdbcClient("jpadb", Vertx.vertx(new VertxOptions()
17-
.setWorkerPoolSize(1)
18-
.setEventLoopPoolSize(1)
19-
));
2016

21-
BaseOrm baseOrm = Test.baseOrm(Test.Params.builder()
22-
.entities(Employees.entities())
23-
.jdbcClient(jdbcClient)
24-
.build());
17+
BaseOrm baseOrm = Test.baseOrm();
2518

2619
final JsonObject department = new JsonObject(
2720
ImmutableMap.of(
@@ -34,7 +27,7 @@ static void main(String[] asdfasd) {
3427
.entity("department")
3528
.jsonObject(department)
3629
.build()
37-
).thenP(Test.sqlDB(jdbcClient)::update).then(jsonObject -> {
30+
).thenP(Test.sqlDB()::update).then(jsonObject -> {
3831
System.out.println("ppp888888888888888888888888888888888888888888888888888888888888888888888");
3932
}).err(Throwable::printStackTrace);
4033
}

elasta-orm/src/test/java/test/EventProcessorTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public interface EventProcessorTest {
1212
static void main(String[] asdf) {
1313

1414
EventProcessorBuilderImpl builder = new EventProcessorBuilderImpl(
15-
Test.helper(Employees.entities())
15+
Test.helper()
1616
);
1717

1818
EventProcessor processor = builder

0 commit comments

Comments
 (0)