Skip to content

Commit 055ec48

Browse files
committed
Fixes
1 parent c0632b9 commit 055ec48

File tree

6 files changed

+99
-20
lines changed

6 files changed

+99
-20
lines changed

judo-tatami-psm2asm/src/main/java/hu/blackbelt/judo/tatami/psm2asm/Psm2Asm.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222

2323
import com.google.common.collect.ImmutableList;
2424
import com.google.common.collect.ImmutableMap;
25+
import hu.blackbelt.epsilon.runtime.execution.EmfUtils;
2526
import hu.blackbelt.epsilon.runtime.execution.ExecutionContext;
27+
import org.eclipse.emf.ecore.resource.ResourceSet;
2628
import org.slf4j.Logger;
2729
import hu.blackbelt.epsilon.runtime.execution.contexts.EtlExecutionContext;
2830
import hu.blackbelt.epsilon.runtime.execution.impl.BufferedSlf4jLogger;
@@ -96,27 +98,35 @@ public static Psm2AsmTransformationTrace executePsm2AsmTransformation(Psm2AsmPar
9698
});
9799

98100
try {
101+
102+
ResourceSet executionResourceSet = parameter.useCache ? EmfUtils.initDefaultCachedResourceSet() : EmfUtils.initDefaultResourceSet();
103+
99104
WrappedEmfModelContext psmModelContext = wrappedEmfModelContextBuilder()
100105
.log(log)
101106
.name("JUDOPSM")
102107
.resource(parameter.psmModel.getResource())
103108
.useCache(parameter.useCache)
104109
.build();
105110

111+
WrappedEmfModelContext asmModelContext = wrappedEmfModelContextBuilder()
112+
.log(log)
113+
.name("ASM")
114+
.resource(parameter.asmModel.getResource())
115+
.parallel(parameter.parallel)
116+
.useCache(false)
117+
.newModel(true)
118+
.build();
119+
106120
// Executrion context
107121
ExecutionContext executionContext = executionContextBuilder()
108122
.log(log)
123+
.resourceSet(executionResourceSet)
109124
.modelContexts(ImmutableList.of(
110125
psmModelContext,
111-
wrappedEmfModelContextBuilder()
112-
.log(log)
113-
.name("ASM")
114-
.resource(parameter.asmModel.getResource())
115-
.useCache(false)
116-
.build()))
126+
asmModelContext))
117127
.injectContexts(ImmutableMap.of(
118-
"asmUtils", new AsmUtils(parameter.asmModel.getResourceSet()),
119-
"psmUtils", new PsmUtils()
128+
"asmUtils", new AsmUtils(executionResourceSet),
129+
"psmUtils", new PsmUtils(psmModelContext.getResourceSet())
120130
)).build();
121131

122132
// run the model / metadata loading
@@ -138,6 +148,8 @@ public static Psm2AsmTransformationTrace executePsm2AsmTransformation(Psm2AsmPar
138148
executionContext.commit();
139149
executionContext.close();
140150

151+
// AsmUtils asmUtils = new AsmUtils(parameter.asmModel.getResourceSet()).getModel().get().setName(parameter.psmModel.getName());
152+
141153
Map<EObject, List<EObject>> traceMap = new ConcurrentHashMap<>();
142154
if (parameter.createTrace) {
143155
List<EObject> traceModel = getTransformationTraceFromEtlExecutionContext(

judo-tatami-psm2asm/src/main/java/hu/blackbelt/judo/tatami/psm2asm/Psm2AsmWork.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
* #L%
2121
*/
2222

23+
import hu.blackbelt.epsilon.runtime.execution.EmfUtils;
2324
import org.slf4j.Logger;
2425
import hu.blackbelt.epsilon.runtime.execution.impl.BufferedSlf4jLogger;
2526
import hu.blackbelt.epsilon.runtime.execution.impl.StringBuilderLogger;
@@ -72,6 +73,8 @@ public void execute() throws Exception {
7273
.build());
7374
getTransformationContext().put(asmModel);
7475

76+
EmfUtils.addEmfPackagesToResourceSet(asmModel.getResourceSet());
77+
7578
Psm2AsmWorkParameter workParam = getTransformationContext().getByClass(Psm2AsmWorkParameter.class)
7679
.orElseGet(() -> Psm2AsmWork.Psm2AsmWorkParameter.psm2AsmWorkParameter().build());
7780

judo-tatami-psm2asm/src/test/java/hu/blackbelt/judo/tatami/psm2asm/Psm2AsmDerivedTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.junit.jupiter.api.Test;
4444

4545
import java.io.File;
46+
import java.util.List;
4647
import java.util.Optional;
4748

4849
import static hu.blackbelt.judo.meta.asm.runtime.AsmModel.SaveArguments.asmSaveArgumentsBuilder;
@@ -95,7 +96,7 @@ private void transform(final String testName) throws Exception {
9596
log.info(psmModel.getDiagnosticsAsString());
9697
assertTrue(psmModel.isValid());
9798
try (BufferedSlf4jLogger bufferedLog = new BufferedSlf4jLogger(log)) {
98-
validatePsm(bufferedLog, psmModel, calculatePsmValidationScriptURI());
99+
validatePsm(bufferedLog, psmModel, calculatePsmValidationScriptURI(), List.of(), null);
99100
}
100101

101102
executePsm2AsmTransformation(psm2AsmParameter()

judo-tatami-psm2measure/src/main/java/hu/blackbelt/judo/tatami/psm2measure/Psm2Measure.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,15 @@ public static Psm2MeasureTransformationTrace executePsm2MeasureTransformation(Ps
103103
// Execution context
104104
ExecutionContext executionContext = executionContextBuilder()
105105
.log(log)
106-
.resourceSet(parameter.measureModel.getResourceSet())
106+
// .resourceSet(parameter.measureModel.getResourceSet())
107107
.modelContexts(ImmutableList.of(
108108
psmModelContext,
109109
wrappedEmfModelContextBuilder()
110110
.log(log)
111111
.name("MEASURES")
112112
.resource(parameter.measureModel.getResource())
113-
.useCache(false)
113+
.useCache(parameter.useCache)
114+
.newModel(true)
114115
.build()))
115116
.injectContexts(ImmutableMap.of("psmUtils", new PsmUtils(),
116117
"measureUtils", new MeasureUtils(parameter.measureModel.getResourceSet())))

judo-tatami-rdbms2liquibase/src/main/java/hu/blackbelt/judo/tatami/rdbms2liquibase/Rdbms2Liquibase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,15 @@ public static void executeRdbms2LiquibaseTransformation(Rdbms2Liquibase.Rdbms2Li
9999
// Execution context
100100
ExecutionContext executionContext = executionContextBuilder()
101101
.log(log)
102-
.resourceSet(parameter.liquibaseModel.getResourceSet())
102+
//.resourceSet(parameter.liquibaseModel.getResourceSet())
103103
.modelContexts(ImmutableList.of(
104104
rdbmsModelContext,
105105
wrappedEmfModelContextBuilder()
106106
.log(log)
107107
.name("LIQUIBASE")
108108
.resource(parameter.liquibaseModel.getResource())
109109
.useCache(parameter.useCache)
110+
.newModel(true)
110111
.build()))
111112
.build();
112113

judo-tatami-rdbms2liquibase/src/test/java/hu/blackbelt/judo/tatami/rdbms2liquibase/Excel2RdbmsTest.java

Lines changed: 69 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222

2323
import com.google.common.collect.ImmutableList;
2424
import hu.blackbelt.epsilon.runtime.execution.ExecutionContext;
25+
import org.eclipse.emf.ecore.resource.Resource;
26+
import org.eclipse.emf.ecore.xmi.XMLResource;
27+
import org.eclipse.emf.ecore.xmi.impl.URIHandlerImpl;
2528
import org.slf4j.Logger;
2629
import hu.blackbelt.epsilon.runtime.execution.impl.BufferedSlf4jLogger;
2730
import hu.blackbelt.judo.meta.liquibase.ChangeSet;
@@ -48,6 +51,8 @@
4851
import java.net.URI;
4952
import java.net.URISyntaxException;
5053
import java.sql.Connection;
54+
import java.util.HashMap;
55+
import java.util.Map;
5156
import java.util.Optional;
5257

5358
import static hu.blackbelt.epsilon.runtime.execution.ExecutionContext.executionContextBuilder;
@@ -93,7 +98,6 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
9398
// Execution context
9499
ExecutionContext excelToRdbmsEtlContext = executionContextBuilder()
95100
.log(bufferedLog)
96-
.resourceSet(originalModel.getResourceSet())
97101
.modelContexts(ImmutableList.of(
98102
excelModelContextBuilder()
99103
.name("EXCEL")
@@ -104,11 +108,15 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
104108
wrappedEmfModelContextBuilder()
105109
.name("ORIGINAL_MODEL")
106110
.aliases(singletonList("ORIGINAL"))
111+
.useCache(true)
112+
.newModel(true)
107113
.resource(originalModel.getResource())
108114
.build(),
109115
wrappedEmfModelContextBuilder()
110116
.name("NEW_MODEL")
111117
.aliases(singletonList("NEW"))
118+
.useCache(true)
119+
.newModel(true)
112120
.resource(newModel.getResource())
113121
.build()))
114122
.build();
@@ -121,6 +129,7 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
121129
etlExecutionContextBuilder()
122130
.source(UriUtil.resolve("createExcelModel.etl", testRoot))
123131
.parameters(singletonList(programParameterBuilder().name("dialect").value(dialect).build()))
132+
.parallel(true)
124133
.build());
125134

126135
excelToRdbmsEtlContext.commit();
@@ -137,8 +146,16 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
137146
.orElseThrow(() -> new RuntimeException("There are no fields in model: " + newModel.getName()))
138147
.forEach(field -> replaceTypeNames(field, dialect));
139148

140-
saveRdbms(originalModel, dialect);
141-
saveRdbms(newModel, dialect);
149+
saveRdbms("original", originalModel, dialect);
150+
saveRdbms("new", newModel, dialect);
151+
152+
/*
153+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
154+
originalModel.getResource().save(baos, defaultSaveOptions());
155+
baos.flush();
156+
baos.close();
157+
log.info(new String(baos.toByteArray(), "UTF-8"));
158+
*/
142159

143160
// fill models
144161
/////////////////////////////////////////
@@ -147,6 +164,8 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
147164
executeRdbms2LiquibaseTransformation(rdbms2LiquibaseParameter()
148165
.rdbmsModel(originalModel)
149166
.liquibaseModel(originalLiquibaseModel)
167+
.parallel(true)
168+
.useCache(true)
150169
.dialect(dialect));
151170

152171
saveLiquibase(originalLiquibaseModel, dialect);
@@ -158,7 +177,7 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
158177
RdbmsModel incrementalModel = buildRdbmsModel().build();
159178
transformRdbmsIncrementalModel(originalModel, newModel, incrementalModel, dialect, true);
160179

161-
saveRdbms(incrementalModel, dialect);
180+
saveRdbms("incremental", incrementalModel, dialect);
162181

163182
LiquibaseModel dbCheckupModel = buildLiquibaseModel().name("DbCheckup").build();
164183
LiquibaseModel dbBackupLiquibaseModel = buildLiquibaseModel().name("DbBackup").build();
@@ -232,6 +251,48 @@ public void executeExcel2RdbmsModel(RdbmsDatasourceFixture datasource) throws Ex
232251
liquibaseDb.close();
233252
}
234253

254+
/*
255+
public void copyResource(Resource from, Resource to) throws IOException {
256+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
257+
from.save(baos, defaultSaveOptions());
258+
baos.flush();
259+
baos.close();
260+
//log.info(new String(baos.toByteArray(), "UTF-8"));
261+
to.load(new ByteArrayInputStream(baos.toByteArray()), defaultLoadOptions());
262+
}
263+
264+
public Map<Object, Object> defaultSaveOptions() {
265+
Map<Object, Object> saveOptions = new HashMap<>();
266+
saveOptions.put(XMLResource.OPTION_DECLARE_XML, Boolean.TRUE);
267+
saveOptions.put(XMLResource.OPTION_PROCESS_DANGLING_HREF, XMLResource.OPTION_PROCESS_DANGLING_HREF_DISCARD);
268+
saveOptions.put(XMLResource.OPTION_URI_HANDLER, new URIHandlerImpl() {
269+
public org.eclipse.emf.common.util.URI deresolve(org.eclipse.emf.common.util.URI uri) {
270+
return uri.hasFragment()
271+
&& uri.hasOpaquePart()
272+
&& this.baseURI.hasOpaquePart()
273+
&& uri.opaquePart().equals(this.baseURI.opaquePart())
274+
? org.eclipse.emf.common.util.URI.createURI("#" + uri.fragment())
275+
: super.deresolve(uri);
276+
}
277+
});
278+
saveOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
279+
saveOptions.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
280+
saveOptions.put(XMLResource.OPTION_SKIP_ESCAPE_URI, Boolean.FALSE);
281+
saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
282+
return saveOptions;
283+
}
284+
285+
public Map<Object, Object> defaultLoadOptions() {
286+
Map<Object, Object> loadOptions = new HashMap<>();
287+
//loadOptions.put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);
288+
//loadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
289+
loadOptions.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
290+
loadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING, Boolean.TRUE);
291+
loadOptions.put(XMLResource.OPTION_PROCESS_DANGLING_HREF, XMLResource.OPTION_PROCESS_DANGLING_HREF_DISCARD);
292+
return loadOptions;
293+
}
294+
*/
295+
235296
private static void replaceTypeNames(final RdbmsField field, final String dialect) {
236297
final String typeName = field.getRdbmsTypeName();
237298
if (typeName.equals("Number")) {
@@ -260,8 +321,8 @@ private static void runLiquibaseChangeSet(LiquibaseModel liquibaseModel, Databas
260321
), liquibaseDb).update("");
261322
}
262323

263-
private static void saveRdbms(RdbmsModel rdbmsModel, String dialect) {
264-
File incrementalRdbmsFile = new File(TARGET_TEST_CLASSES, getRdbmsFileName(rdbmsModel, dialect));
324+
private static void saveRdbms(String name, RdbmsModel rdbmsModel, String dialect) {
325+
File incrementalRdbmsFile = new File(TARGET_TEST_CLASSES, getRdbmsFileName(name, rdbmsModel, dialect));
265326
try {
266327
rdbmsModel.saveRdbmsModel(rdbmsSaveArgumentsBuilder().file(incrementalRdbmsFile));
267328
} catch (RdbmsValidationException | IOException ex) {
@@ -270,8 +331,8 @@ private static void saveRdbms(RdbmsModel rdbmsModel, String dialect) {
270331

271332
}
272333

273-
private static String getRdbmsFileName(final RdbmsModel rdbmsModel, String dialect) {
274-
return "test-" + dialect + "-" + rdbmsModel.getName() + "-rdbms.model";
334+
private static String getRdbmsFileName(String name, final RdbmsModel rdbmsModel, String dialect) {
335+
return name + "-" + dialect + "-" + rdbmsModel.getName() + "-rdbms.model";
275336
}
276337

277338
private static void saveLiquibase(LiquibaseModel liquibaseModel, String dialect) throws IOException {

0 commit comments

Comments
 (0)