package org.dresdenocl.tools.transformation.pivot2sql.test.tests; import static org.junit.Assert.fail; import org.dresdenocl.model.IModel; import org.dresdenocl.model.ModelAccessException; import org.dresdenocl.pivotmodel.Namespace; import org.dresdenocl.tools.codegen.declarativ.IOcl2DeclSettings; import org.dresdenocl.tools.transformation.ITransformation; import org.dresdenocl.tools.transformation.TransformationFactory; import org.dresdenocl.tools.transformation.pivot2sql.impl.SchemaStringMap; import org.dresdenocl.tools.transformation.pivot2sql.test.tests.util.ModelChecker; import org.dresdenocl.tools.transformation.pivot2sql.test.tests.util.TestPerformer; import org.dresdenocl.tools.transformation.pivot2sql.test.tests.util.TransformationTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import orgomg.cwm.resource.relational.Catalog; public class Pivot2DdlTest { private IModel model = null; @Before public void setUp() { try { model = TestPerformer.addUMLModel(TransformationTest.TEST_COMPLEX); } catch (Exception e) { fail("Can't initialize model"); } } @After public void tear_down() { if (model != null) { TestPerformer.removeUMLModel(model); model = null; } } @Test public void runTyped() { run(IOcl2DeclSettings.MODUS_TYPED); } @Test public void runVertical() { run(IOcl2DeclSettings.MODUS_VERTICAL); } private void run(int modus) { IOcl2DeclSettings oclSettings = TestPerformer.getSettings(); oclSettings.setModus(modus); // run Pivot2Ddl: ITransformation<Namespace, IOcl2DeclSettings, SchemaStringMap> p2di = TransformationFactory.getInstance().getTransformation("Pivot2Ddl", Namespace.class, SchemaStringMap.class, IOcl2DeclSettings.class, "pivot", "ddl"); p2di.setSettings(oclSettings); try { p2di.setParameterIN(model.getRootNamespace()); } catch (ModelAccessException e) { fail("Can't get Namespace in Pivot2Ddl"); e.printStackTrace(); } try { p2di.invoke(); } catch (Exception e) { fail("Can't transformation namespace in Pivot2Ddl"); } // run Pivot2CWM & CWM2Ddl ITransformation<Namespace, IOcl2DeclSettings, Catalog> p2ci = TransformationFactory.getInstance().getTransformation("Pivot2CwmImpl", Namespace.class, Catalog.class, IOcl2DeclSettings.class, "pivot", "cwm"); p2ci.setSettings(oclSettings); try { p2ci.setParameterIN(model.getRootNamespace()); } catch (ModelAccessException e) { fail("Can't get Namespace in Pivot2Cwm"); e.printStackTrace(); } try { p2ci.invoke(); } catch (Exception e) { fail("Can't transformation namespace in Pivot2Cwm"); } ITransformation<Catalog, IOcl2DeclSettings, SchemaStringMap> c2di = TransformationFactory.getInstance().getTransformation("Cwm2DdlImpl", Catalog.class, SchemaStringMap.class, IOcl2DeclSettings.class, "cwm", "ddl"); c2di.setSettings(oclSettings); c2di.setParameterIN(p2ci.getResult()); try { c2di.invoke(); } catch (Exception e) { fail("Can't transformation cwm"); } ModelChecker.sameDdl(p2di.getResult().toFullString(), c2di.getResult().toFullString()); } }