Search in sources :

Example 1 with Runtime

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime in project legend-engine by finos.

the class TestGeneration method testGenerationWithSnowflakeConnection.

@Test
public void testGenerationWithSnowflakeConnection() throws Exception {
    PureModelContextData contextData = PureGrammarParser.newInstance().parseModel("" + "Class p::A {name:String[1];}" + "function p::f():p::A[*]{p::A.all();}\n" + "###Relational\n" + "Database p::db(Table tb (name VARCHAR(200)))\n" + "###Mapping\n" + "Mapping p::M (p::A : Relational {name : [p::db]tb.name })\n" + "###Runtime\n" + "Runtime p::R" + "{" + "   mappings:[p::M];" + "   connections:[" + "       p::db : [" + "           c1: #{\n" + "                   RelationalDatabaseConnection\n" + "                   {\n" + "                       type: Snowflake;\n" + "                       specification: Snowflake\n" + "                                      {\n" + "                                           name: 'test';\n" + "                                           account: 'account';\n" + "                                           warehouse: 'warehouseName';\n" + "                                           region: 'us-east2';\n" + "                                           cloudType: 'aws';\n" + "                                           quotedIdentifiersIgnoreCase : false;\n" + "                                      };\n" + "                       auth: SnowflakePublic\n" + "                             {" + "                                 publicUserName: 'name';\n" + "                                 privateKeyVaultReference : 'key';\n" + "                                 passPhraseVaultReference: 'val';" + "                             };\n" + "                   }\n" + "               }#\n" + "           ]" + "   ];" + "}");
    PureModel pureModel = Compiler.compile(contextData, null, null);
    String plan = PlanGenerator.generateExecutionPlanAsString(HelperValueSpecificationBuilder.buildLambda(contextData.getElementsOfType(Function.class).get(0).body, Collections.emptyList(), new CompileContext.Builder(pureModel).build()), pureModel.getMapping("p::M"), pureModel.getRuntime("p::R"), null, pureModel, "vX_X_X", PlanPlatform.JAVA, null, core_relational_relational_router_router_extension.Root_meta_pure_router_extension_defaultRelationalExtensions__RouterExtension_MANY_(pureModel.getExecutionSupport()), LegendPlanTransformers.transformers);
    ObjectMapper mapper = ObjectMapperFactory.getNewStandardObjectMapperWithPureProtocolExtensionSupports().enable(SerializationFeature.INDENT_OUTPUT);
    ExecutionPlan executionPlan = mapper.readValue(plan, ExecutionPlan.class);
    StringWriter writer = new StringWriter();
    mapper.writeValue(writer, executionPlan);
    assertGeneratedStringEquals("{\n" + "  \"_type\" : \"simple\",\n" + "  \"authDependent\" : false,\n" + "  \"globalImplementationSupport\" : {\n" + "    \"_type\" : \"java\",\n" + "    \"classes\" : [ {\n" + "      \"name\" : \"A\",\n" + "      \"package\" : \"_pure.app.p\",\n" + "      \"source\" : \"package _pure.app.p;\\n\\nimport java.math.*;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic interface A extends org.finos.legend.engine.plan.dependencies.store.shared.IReferencedObject\\n{\\n    String getName();\\n    String getAlloyStoreObjectReference$();\\n}\"\n" + "    }, {\n" + "      \"name\" : \"A_p_A_BaseImpl\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport com.fasterxml.jackson.annotation.JsonIgnore;\\nimport com.fasterxml.jackson.annotation.JsonInclude;\\nimport com.fasterxml.jackson.annotation.JsonProperty;\\nimport com.fasterxml.jackson.core.JsonGenerator;\\nimport com.fasterxml.jackson.databind.JsonSerializer;\\nimport com.fasterxml.jackson.databind.ObjectMapper;\\nimport com.fasterxml.jackson.databind.SerializerProvider;\\nimport com.fasterxml.jackson.databind.module.SimpleModule;\\nimport java.io.IOException;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic class A_p_A_BaseImpl implements _pure.app.p.A\\n{\\n    private String name;\\n    private String setId$;\\n    public static String databaseConnection$;\\n    private static final ObjectMapper objectMapper$ = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL).registerModule(new SimpleModule().addSerializer(PureDate.class, new JsonSerializer<PureDate>() { @Override public void serialize(PureDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeRawValue(\\\"\\\\\\\"\\\" + value.toString() + \\\"\\\\\\\"\\\"); } }));\\n    private String alloyStoreObjectReference$;\\n\\n    @JsonProperty(\\\"name\\\")\\n    public String getName()\\n    {\\n        return this.name;\\n    }\\n\\n    public void setName(String name)\\n    {\\n        this.name = name;\\n    }\\n\\n    @JsonIgnore\\n    public String getSetId$()\\n    {\\n        return this.setId$;\\n    }\\n\\n    public void setSetId$(String setId)\\n    {\\n        this.setId$ = setId;\\n    }\\n\\n    @JsonProperty(\\\"alloyStoreObjectReference$\\\")\\n    public String getAlloyStoreObjectReference$()\\n    {\\n        if (this.alloyStoreObjectReference$ == null)\\n        {\\n            try\\n            {\\n                StringBuilder referenceBuilder = new StringBuilder();\\n                referenceBuilder.append(\\\"001:\\\");\\n                referenceBuilder.append(\\\"010:\\\");\\n\\n                referenceBuilder.append(\\\"0000000010:\\\");\\n                referenceBuilder.append(\\\"Relational:\\\");\\n\\n                referenceBuilder.append(\\\"0000000004:\\\");\\n                referenceBuilder.append(\\\"p::M:\\\");\\n\\n                referenceBuilder.append(\\\"0000000003:\\\");\\n                referenceBuilder.append(\\\"p_A:\\\");\\n\\n                String setId = this.getSetId$();\\n                referenceBuilder.append(String.format(\\\"%010d\\\", setId.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(setId);\\n                referenceBuilder.append(\\\":\\\");\\n\\n                String databaseConnectionString = _pure.plan.root.A_p_A_BaseImpl.databaseConnection$;\\n                referenceBuilder.append(String.format(\\\"%010d\\\", databaseConnectionString.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(databaseConnectionString);\\n                referenceBuilder.append(\\\":\\\");\\n\\n                Map<String, Object> pkMap = new HashMap<>();\\n\\n                String pkMapString = objectMapper$.writeValueAsString(pkMap);\\n                referenceBuilder.append(String.format(\\\"%010d\\\", pkMapString.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(pkMapString);\\n\\n                this.alloyStoreObjectReference$ = \\\"ASOR:\\\" + org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString(referenceBuilder.toString().getBytes());\\n            }\\n            catch (Exception e)\\n            {\\n               throw new RuntimeException(e);\\n            }\\n        }\\n\\n        return this.alloyStoreObjectReference$;\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"A_p_A_Impl\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport com.fasterxml.jackson.annotation.JsonIgnore;\\nimport com.fasterxml.jackson.annotation.JsonProperty;\\nimport java.util.*;\\n\\npublic class A_p_A_Impl extends A_p_A_BaseImpl implements _pure.app.p.A\\n{\\n    public A_p_A_Impl()\\n    {\\n        this.setSetId$(\\\"p_A\\\");\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"Execute\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport java.sql.ResultSet;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.store.relational.classResult.IRelationalClassInstantiationNodeExecutor;\\n\\npublic class Execute implements IRelationalClassInstantiationNodeExecutor\\n{\\n    private Helper helper;\\n\\n    public Execute()\\n    {\\n        this.helper = new Helper();\\n    }\\n\\n    public Object getObjectFromResultSet(ResultSet resultSet,\\n                                         String databaseTimeZone,\\n                                         String databaseConnection)\\n    {\\n        return this.helper.getObjectFromResultSet(resultSet, databaseTimeZone, databaseConnection);\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"Helper\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport java.sql.ResultSet;\\nimport java.sql.ResultSetMetaData;\\nimport java.sql.Types;\\nimport java.util.*;\\nimport java.util.function.*;\\nimport java.util.stream.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic class Helper\\n{\\n    private static final List<Integer> STRING_TYPES = Arrays.asList(Types.CHAR, Types.VARCHAR, Types.LONGVARCHAR, Types.NCHAR, Types.NVARCHAR, Types.LONGNVARCHAR, Types.OTHER, Types.NULL);\\n    private static final List<Integer> INT_TYPES = Arrays.asList(Types.TINYINT, Types.SMALLINT, Types.INTEGER, Types.BIGINT, Types.NULL);\\n    private static final List<Integer> FLOAT_TYPES = Arrays.asList(Types.REAL, Types.FLOAT, Types.DOUBLE, Types.DECIMAL, Types.NUMERIC, Types.NULL);\\n    private static final List<Integer> BOOL_TYPES = Arrays.asList(Types.BIT, Types.BOOLEAN, Types.NULL);\\n    private static final List<Integer> STRICT_DATE_TYPES = Arrays.asList(Types.DATE, Types.NULL);\\n    private static final List<Integer> DATE_TIME_TYPES = Arrays.asList(Types.TIMESTAMP, Types.NULL);\\n    private List<Integer> columnTypes;\\n    private List<List<Integer>> propertyIndices;\\n    private List<List<Supplier<Object>>> propertyGetters;\\n    private Calendar calendar;\\n\\n    private Supplier<Object> getResultSetPropertyGetterForStringProperty(ResultSet resultSet,\\n                                                                         int columnIndex,\\n                                                                         int columnType,\\n                                                                         String propertyName)\\n    {\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n           return () -> {\\n                try\\n                {\\n                    return resultSet.getString(columnIndex);\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        else\\n        {\\n            throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type String from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n        }\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForIntegerProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Long res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Long.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Integer from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForFloatProperty(ResultSet resultSet,\\n                                                                        int columnIndex,\\n                                                                        int columnType,\\n                                                                        String propertyName)\\n    {\\n        if (FLOAT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Double res = null;\\n                    double r = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Double.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Double res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Double.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Float from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDecimalProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (FLOAT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    java.math.BigDecimal res = null;\\n                    double r = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = java.math.BigDecimal.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    java.math.BigDecimal res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = java.math.BigDecimal.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Decimal from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForBooleanProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (BOOL_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    boolean r = resultSet.getBoolean(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r == 1);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Boolean from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForStrictDateProperty(ResultSet resultSet,\\n                                                                             int columnIndex,\\n                                                                             int columnType,\\n                                                                             String propertyName)\\n    {\\n        if (STRICT_DATE_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Date r = resultSet.getDate(columnIndex);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLDate(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException)\\n                        {\\n                            res = PureDate.fromSQLDate(java.sql.Date.valueOf(r));\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type StrictDate from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDateTimeProperty(ResultSet resultSet,\\n                                                                           int columnIndex,\\n                                                                           int columnType,\\n                                                                           String propertyName)\\n    {\\n        if (DATE_TIME_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Timestamp r = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLTimestamp(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException)\\n                        {\\n                            res = PureDate.fromSQLTimestamp(java.sql.Timestamp.valueOf(r));\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type DateTime from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDateProperty(ResultSet resultSet,\\n                                                                       int columnIndex,\\n                                                                       int columnType,\\n                                                                       String propertyName)\\n    {\\n        if (STRICT_DATE_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Date r = resultSet.getDate(columnIndex);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLDate(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (DATE_TIME_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Timestamp r = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLTimestamp(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException1)\\n                        {\\n                            try\\n                            {\\n                                res = PureDate.fromSQLTimestamp(java.sql.Timestamp.valueOf(r));\\n                            }\\n                            catch (java.time.format.DateTimeParseException dateTimeParseException2)\\n                            {\\n                                res = PureDate.fromSQLDate(java.sql.Date.valueOf(r));\\n                            }\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Date from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Object getAlloyNativeValueFromResultSet(ResultSet resultSet,\\n                                                    int columnIndex,\\n                                                    int columnType)\\n    {\\n        try\\n        {\\n            Object result = null;\\n            switch (columnType)\\n            {\\n                case Types.DATE:\\n                {\\n                    java.sql.Date date = resultSet.getDate(columnIndex);\\n                    if (date != null)\\n                    {\\n                        result = PureDate.fromSQLDate(date);\\n                    }\\n                    break;\\n                }\\n                case Types.TIMESTAMP:\\n                {\\n                    java.sql.Timestamp timestamp = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (timestamp != null)\\n                    {\\n                        result = PureDate.fromSQLTimestamp(timestamp);\\n                    }\\n                    break;\\n                }\\n                case Types.TINYINT:\\n                case Types.SMALLINT:\\n                case Types.INTEGER:\\n                case Types.BIGINT:\\n                {\\n                    long num = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Long.valueOf(num);\\n                    }\\n                    break;\\n                }\\n                case Types.REAL:\\n                case Types.FLOAT:\\n                case Types.DOUBLE:\\n                {\\n                    double num = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Double.valueOf(num);\\n                    }\\n                    break;\\n                }\\n                case Types.DECIMAL:\\n                case Types.NUMERIC:\\n                {\\n                    result = resultSet.getBigDecimal(columnIndex);\\n                    break;\\n                }\\n                case Types.CHAR:\\n                case Types.VARCHAR:\\n                case Types.LONGVARCHAR:\\n                case Types.NCHAR:\\n                case Types.NVARCHAR:\\n                case Types.LONGNVARCHAR:\\n                case Types.OTHER:\\n                {\\n                    result = resultSet.getString(columnIndex);\\n                    break;\\n                }\\n                case Types.BIT:\\n                case Types.BOOLEAN:\\n                {\\n                    boolean bool = resultSet.getBoolean(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Boolean.valueOf(bool);\\n                    }\\n                }\\n                case Types.BINARY:\\n                case Types.VARBINARY:\\n                case Types.LONGVARBINARY:\\n                {\\n                    byte[] bytes = resultSet.getBytes(columnIndex);\\n                    if (bytes != null)\\n                    {\\n                        result = this.encodeHex(bytes);\\n                    }\\n                    break;\\n                }\\n                case Types.NULL:\\n                {\\n                    // do nothing: value is already assigned to null\\n                    break;\\n                }\\n                default:\\n                {\\n                    result = resultSet.getObject(columnIndex);\\n                }\\n            }\\n            return result;}\\n        catch (Exception e)\\n        {\\n            throw new RuntimeException(e);\\n        }\\n    }\\n\\n    private String encodeHex(byte[] data)\\n    {\\n        final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};\\n        final int l = data.length;\\n        final char[] out = new char[l << 1];\\n        for (int i = 0, j = 0; i < l; i++)\\n        {\\n            out[j++] = DIGITS_LOWER[(0xF0 & data[i]) >>> 4];\\n            out[j++] = DIGITS_LOWER[0x0F & data[i]];\\n        }\\n        return new String(out);\\n    }\\n\\n    public Object getObjectFromResultSet(ResultSet resultSet,\\n                                         String databaseTimeZone,\\n                                         String databaseConnection)\\n    {\\n        if (this.propertyIndices == null)\\n        {\\n            this.doSetup(resultSet, databaseTimeZone, databaseConnection);\\n        }\\n        final _pure.plan.root.A_p_A_Impl object = new _pure.plan.root.A_p_A_Impl();\\n        object.setSetId$(\\\"p_A\\\");\\n        int pkColIndex;\\n\\n        int propertyIndex;\\n\\n        propertyIndex = this.propertyIndices.get(0).get(0);\\n        {\\n            String res = (String) this.propertyGetters.get(0).get(0).get();\\n            if (res == null)\\n            {\\n                throw new RuntimeException(\\\"Error reading in property 'name'. Property of multiplicity [1] can not be null\\\");\\n            }\\n            object.setName(res);\\n        }\\n\\n        return object;\\n    }\\n\\n    private void doSetup(ResultSet resultSet, String databaseTimeZone, String databaseConnection)\\n    {\\n        try\\n        {\\n            this.calendar = new GregorianCalendar(TimeZone.getTimeZone(databaseTimeZone));\\n            _pure.plan.root.A_p_A_BaseImpl.databaseConnection$ = databaseConnection;\\n            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();\\n            int columnCount = resultSetMetaData.getColumnCount();\\n            this.columnTypes = new ArrayList<>();\\n            List<String> columnNames = new ArrayList<>();\\n            for (int i = 1; i <= columnCount; i++)\\n            {\\n                String columnLabel = resultSetMetaData.getColumnLabel(i);\\n                columnNames.add(columnLabel.startsWith(\\\"\\\\\\\"\\\") && columnLabel.endsWith(\\\"\\\\\\\"\\\") ? columnLabel.substring(1, columnLabel.length() - 1).toUpperCase() : columnLabel.toUpperCase());\\n                this.columnTypes.add(resultSetMetaData.getColumnType(i));\\n            }\\n\\n            this.propertyIndices = new ArrayList<>();\\n            List<Integer> index_0 = new ArrayList<>();\\n            index_0.add(columnNames.indexOf(\\\"NAME\\\") + 1);\\n            this.propertyIndices.add(index_0);\\n\\n            this.propertyGetters = new ArrayList<>();\\n            int propertyIndex;\\n            Supplier<Object> propertyGetter = null;\\n\\n            List<Supplier<Object>> propertyGetter_0 = new ArrayList<>();\\n\\n            propertyIndex = this.propertyIndices.get(0).get(0);\\n            propertyGetter = this.getResultSetPropertyGetterForStringProperty(resultSet, propertyIndex, resultSetMetaData.getColumnType(propertyIndex), \\\"name\\\");\\n            propertyGetter_0.add(propertyGetter);\\n\\n            this.propertyGetters.add(propertyGetter_0);\\n        }\\n        catch (RuntimeException e)\\n        {\\n            throw e;\\n        }\\n        catch (Exception e)\\n        {\\n            throw new RuntimeException(e);\\n        }\\n    }\\n}\"\n" + "    } ]\n" + "  },\n" + "  \"rootExecutionNode\" : {\n" + "    \"_type\" : \"relationalClassInstantiation\",\n" + "    \"executionNodes\" : [ {\n" + "      \"_type\" : \"sql\",\n" + "      \"connection\" : {\n" + "        \"_type\" : \"RelationalDatabaseConnection\",\n" + "        \"authenticationStrategy\" : {\n" + "          \"_type\" : \"snowflakePublic\",\n" + "          \"passPhraseVaultReference\" : \"val\",\n" + "          \"privateKeyVaultReference\" : \"key\",\n" + "          \"publicUserName\" : \"name\"\n" + "        },\n" + "        \"datasourceSpecification\" : {\n" + "          \"_type\" : \"snowflake\",\n" + "          \"accountName\" : \"account\",\n" + "          \"cloudType\" : \"aws\",\n" + "          \"databaseName\" : \"test\",\n" + "          \"quotedIdentifiersIgnoreCase\" : false,\n" + "          \"region\" : \"us-east2\",\n" + "          \"warehouseName\" : \"warehouseName\"\n" + "        },\n" + "        \"element\" : \"p::db\",\n" + "        \"postProcessorWithParameter\" : [ ],\n" + "        \"postProcessors\" : [ ],\n" + "        \"type\" : \"Snowflake\"\n" + "      },\n" + "      \"executionNodes\" : [ ],\n" + "      \"resultColumns\" : [ {\n" + "        \"dataType\" : \"VARCHAR(200)\",\n" + "        \"label\" : \"\\\"name\\\"\"\n" + "      } ],\n" + "      \"resultType\" : {\n" + "        \"_type\" : \"dataType\",\n" + "        \"dataType\" : \"meta::pure::metamodel::type::Any\"\n" + "      },\n" + "      \"sqlQuery\" : \"select \\\"root\\\".name as \\\"name\\\" from tb as \\\"root\\\"\"\n" + "    } ],\n" + "    \"implementation\" : {\n" + "      \"_type\" : \"java\",\n" + "      \"executionClassFullName\" : \"_pure.plan.root.Execute\"\n" + "    },\n" + "    \"resultSizeRange\" : {\n" + "      \"lowerBound\" : 0\n" + "    },\n" + "    \"resultType\" : {\n" + "      \"_type\" : \"class\",\n" + "      \"class\" : \"p::A\",\n" + "      \"setImplementations\" : [ {\n" + "        \"class\" : \"p::A\",\n" + "        \"id\" : \"p_A\",\n" + "        \"mapping\" : \"p::M\",\n" + "        \"propertyMappings\" : [ {\n" + "          \"enumMapping\" : { },\n" + "          \"property\" : \"name\",\n" + "          \"type\" : \"String\"\n" + "        } ]\n" + "      } ]\n" + "    }\n" + "  },\n" + "  \"serializer\" : {\n" + "    \"name\" : \"pure\",\n" + "    \"version\" : \"vX_X_X\"\n" + "  },\n" + "  \"templateFunctions\" : [ \"<#function renderCollection collection separator prefix suffix defaultValue><#if collection?size == 0><#return defaultValue></#if><#return prefix + collection?join(suffix + separator + prefix) + suffix></#function>\", \"<#function collectionSize collection> <#return collection?size?c> </#function>\" ]\n" + "}", writer.toString());
}
Also used : ExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan) StringWriter(java.io.StringWriter) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) CompileContext(org.finos.legend.engine.language.pure.compiler.toPureGraph.CompileContext) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 2 with Runtime

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime in project legend-engine by finos.

the class TestGeneration method testGenerationWithBigQueryConnection.

@Test
public void testGenerationWithBigQueryConnection() throws Exception {
    PureModelContextData contextData = PureGrammarParser.newInstance().parseModel("" + "Class p::A {name:String[1];}" + "function p::f():p::A[*]{p::A.all();}\n" + "###Relational\n" + "Database p::db(Table tb (name VARCHAR(200)))\n" + "###Mapping\n" + "Mapping p::M (p::A : Relational {name : [p::db]tb.name })\n" + "###Runtime\n" + "Runtime p::R" + "{" + "   mappings:[p::M];" + "   connections:[" + "       p::db : [" + "           c1: #{\n" + "                   RelationalDatabaseConnection\n" + "                   {\n" + "                       type: BigQuery;\n" + "                       specification: BigQuery\n" + "                                      {\n" + "                                           projectId: 'proj1';\n" + "                                           defaultDataset: 'dataset1';\n" + "                                      };\n" + "                       auth: GCPApplicationDefaultCredentials;\n" + "                   }\n" + "               }#\n" + "           ]" + "   ];" + "}");
    PureModel pureModel = Compiler.compile(contextData, null, null);
    String plan = PlanGenerator.generateExecutionPlanAsString(HelperValueSpecificationBuilder.buildLambda(contextData.getElementsOfType(Function.class).get(0).body, Collections.emptyList(), new CompileContext.Builder(pureModel).build()), pureModel.getMapping("p::M"), pureModel.getRuntime("p::R"), null, pureModel, "vX_X_X", PlanPlatform.JAVA, null, core_relational_relational_router_router_extension.Root_meta_pure_router_extension_defaultRelationalExtensions__RouterExtension_MANY_(pureModel.getExecutionSupport()), LegendPlanTransformers.transformers);
    ObjectMapper mapper = ObjectMapperFactory.getNewStandardObjectMapperWithPureProtocolExtensionSupports().enable(SerializationFeature.INDENT_OUTPUT);
    ExecutionPlan executionPlan = mapper.readValue(plan, ExecutionPlan.class);
    StringWriter writer = new StringWriter();
    mapper.writeValue(writer, executionPlan);
    assertGeneratedStringEquals("{\n" + "  \"_type\" : \"simple\",\n" + "  \"authDependent\" : false,\n" + "  \"globalImplementationSupport\" : {\n" + "    \"_type\" : \"java\",\n" + "    \"classes\" : [ {\n" + "      \"name\" : \"A\",\n" + "      \"package\" : \"_pure.app.p\",\n" + "      \"source\" : \"package _pure.app.p;\\n\\nimport java.math.*;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic interface A extends org.finos.legend.engine.plan.dependencies.store.shared.IReferencedObject\\n{\\n    String getName();\\n    String getAlloyStoreObjectReference$();\\n}\"\n" + "    }, {\n" + "      \"name\" : \"A_p_A_BaseImpl\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport com.fasterxml.jackson.annotation.JsonIgnore;\\nimport com.fasterxml.jackson.annotation.JsonInclude;\\nimport com.fasterxml.jackson.annotation.JsonProperty;\\nimport com.fasterxml.jackson.core.JsonGenerator;\\nimport com.fasterxml.jackson.databind.JsonSerializer;\\nimport com.fasterxml.jackson.databind.ObjectMapper;\\nimport com.fasterxml.jackson.databind.SerializerProvider;\\nimport com.fasterxml.jackson.databind.module.SimpleModule;\\nimport java.io.IOException;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic class A_p_A_BaseImpl implements _pure.app.p.A\\n{\\n    private String name;\\n    private String setId$;\\n    public static String databaseConnection$;\\n    private static final ObjectMapper objectMapper$ = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL).registerModule(new SimpleModule().addSerializer(PureDate.class, new JsonSerializer<PureDate>() { @Override public void serialize(PureDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeRawValue(\\\"\\\\\\\"\\\" + value.toString() + \\\"\\\\\\\"\\\"); } }));\\n    private String alloyStoreObjectReference$;\\n\\n    @JsonProperty(\\\"name\\\")\\n    public String getName()\\n    {\\n        return this.name;\\n    }\\n\\n    public void setName(String name)\\n    {\\n        this.name = name;\\n    }\\n\\n    @JsonIgnore\\n    public String getSetId$()\\n    {\\n        return this.setId$;\\n    }\\n\\n    public void setSetId$(String setId)\\n    {\\n        this.setId$ = setId;\\n    }\\n\\n    @JsonProperty(\\\"alloyStoreObjectReference$\\\")\\n    public String getAlloyStoreObjectReference$()\\n    {\\n        if (this.alloyStoreObjectReference$ == null)\\n        {\\n            try\\n            {\\n                StringBuilder referenceBuilder = new StringBuilder();\\n                referenceBuilder.append(\\\"001:\\\");\\n                referenceBuilder.append(\\\"010:\\\");\\n\\n                referenceBuilder.append(\\\"0000000010:\\\");\\n                referenceBuilder.append(\\\"Relational:\\\");\\n\\n                referenceBuilder.append(\\\"0000000004:\\\");\\n                referenceBuilder.append(\\\"p::M:\\\");\\n\\n                referenceBuilder.append(\\\"0000000003:\\\");\\n                referenceBuilder.append(\\\"p_A:\\\");\\n\\n                String setId = this.getSetId$();\\n                referenceBuilder.append(String.format(\\\"%010d\\\", setId.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(setId);\\n                referenceBuilder.append(\\\":\\\");\\n\\n                String databaseConnectionString = _pure.plan.root.A_p_A_BaseImpl.databaseConnection$;\\n                referenceBuilder.append(String.format(\\\"%010d\\\", databaseConnectionString.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(databaseConnectionString);\\n                referenceBuilder.append(\\\":\\\");\\n\\n                Map<String, Object> pkMap = new HashMap<>();\\n\\n                String pkMapString = objectMapper$.writeValueAsString(pkMap);\\n                referenceBuilder.append(String.format(\\\"%010d\\\", pkMapString.length()));\\n                referenceBuilder.append(\\\":\\\");\\n                referenceBuilder.append(pkMapString);\\n\\n                this.alloyStoreObjectReference$ = \\\"ASOR:\\\" + org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString(referenceBuilder.toString().getBytes());\\n            }\\n            catch (Exception e)\\n            {\\n               throw new RuntimeException(e);\\n            }\\n        }\\n\\n        return this.alloyStoreObjectReference$;\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"A_p_A_Impl\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport com.fasterxml.jackson.annotation.JsonIgnore;\\nimport com.fasterxml.jackson.annotation.JsonProperty;\\nimport java.util.*;\\n\\npublic class A_p_A_Impl extends A_p_A_BaseImpl implements _pure.app.p.A\\n{\\n    public A_p_A_Impl()\\n    {\\n        this.setSetId$(\\\"p_A\\\");\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"Execute\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport java.sql.ResultSet;\\nimport java.util.*;\\nimport org.finos.legend.engine.plan.dependencies.store.relational.classResult.IRelationalClassInstantiationNodeExecutor;\\n\\npublic class Execute implements IRelationalClassInstantiationNodeExecutor\\n{\\n    private Helper helper;\\n\\n    public Execute()\\n    {\\n        this.helper = new Helper();\\n    }\\n\\n    public Object getObjectFromResultSet(ResultSet resultSet,\\n                                         String databaseTimeZone,\\n                                         String databaseConnection)\\n    {\\n        return this.helper.getObjectFromResultSet(resultSet, databaseTimeZone, databaseConnection);\\n    }\\n}\"\n" + "    }, {\n" + "      \"name\" : \"Helper\",\n" + "      \"package\" : \"_pure.plan.root\",\n" + "      \"source\" : \"package _pure.plan.root;\\n\\nimport java.sql.ResultSet;\\nimport java.sql.ResultSetMetaData;\\nimport java.sql.Types;\\nimport java.util.*;\\nimport java.util.function.*;\\nimport java.util.stream.*;\\nimport org.finos.legend.engine.plan.dependencies.domain.date.PureDate;\\n\\npublic class Helper\\n{\\n    private static final List<Integer> STRING_TYPES = Arrays.asList(Types.CHAR, Types.VARCHAR, Types.LONGVARCHAR, Types.NCHAR, Types.NVARCHAR, Types.LONGNVARCHAR, Types.OTHER, Types.NULL);\\n    private static final List<Integer> INT_TYPES = Arrays.asList(Types.TINYINT, Types.SMALLINT, Types.INTEGER, Types.BIGINT, Types.NULL);\\n    private static final List<Integer> FLOAT_TYPES = Arrays.asList(Types.REAL, Types.FLOAT, Types.DOUBLE, Types.DECIMAL, Types.NUMERIC, Types.NULL);\\n    private static final List<Integer> BOOL_TYPES = Arrays.asList(Types.BIT, Types.BOOLEAN, Types.NULL);\\n    private static final List<Integer> STRICT_DATE_TYPES = Arrays.asList(Types.DATE, Types.NULL);\\n    private static final List<Integer> DATE_TIME_TYPES = Arrays.asList(Types.TIMESTAMP, Types.NULL);\\n    private List<Integer> columnTypes;\\n    private List<List<Integer>> propertyIndices;\\n    private List<List<Supplier<Object>>> propertyGetters;\\n    private Calendar calendar;\\n\\n    private Supplier<Object> getResultSetPropertyGetterForStringProperty(ResultSet resultSet,\\n                                                                         int columnIndex,\\n                                                                         int columnType,\\n                                                                         String propertyName)\\n    {\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n           return () -> {\\n                try\\n                {\\n                    return resultSet.getString(columnIndex);\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        else\\n        {\\n            throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type String from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n        }\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForIntegerProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Long res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Long.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Integer from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForFloatProperty(ResultSet resultSet,\\n                                                                        int columnIndex,\\n                                                                        int columnType,\\n                                                                        String propertyName)\\n    {\\n        if (FLOAT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Double res = null;\\n                    double r = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Double.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Double res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Double.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Float from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDecimalProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (FLOAT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    java.math.BigDecimal res = null;\\n                    double r = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = java.math.BigDecimal.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    java.math.BigDecimal res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = java.math.BigDecimal.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Decimal from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForBooleanProperty(ResultSet resultSet,\\n                                                                          int columnIndex,\\n                                                                          int columnType,\\n                                                                          String propertyName)\\n    {\\n        if (BOOL_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    boolean r = resultSet.getBoolean(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (INT_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    Boolean res = null;\\n                    long r = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        res = Boolean.valueOf(r == 1);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Boolean from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForStrictDateProperty(ResultSet resultSet,\\n                                                                             int columnIndex,\\n                                                                             int columnType,\\n                                                                             String propertyName)\\n    {\\n        if (STRICT_DATE_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Date r = resultSet.getDate(columnIndex);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLDate(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException)\\n                        {\\n                            res = PureDate.fromSQLDate(java.sql.Date.valueOf(r));\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type StrictDate from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDateTimeProperty(ResultSet resultSet,\\n                                                                           int columnIndex,\\n                                                                           int columnType,\\n                                                                           String propertyName)\\n    {\\n        if (DATE_TIME_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Timestamp r = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLTimestamp(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException)\\n                        {\\n                            res = PureDate.fromSQLTimestamp(java.sql.Timestamp.valueOf(r));\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type DateTime from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Supplier<Object> getResultSetPropertyGetterForDateProperty(ResultSet resultSet,\\n                                                                       int columnIndex,\\n                                                                       int columnType,\\n                                                                       String propertyName)\\n    {\\n        if (STRICT_DATE_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Date r = resultSet.getDate(columnIndex);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLDate(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (DATE_TIME_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    java.sql.Timestamp r = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (r != null)\\n                    {\\n                        res = PureDate.fromSQLTimestamp(r);\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        if (STRING_TYPES.contains(columnType))\\n        {\\n            return () -> {\\n                try\\n                {\\n                    PureDate res = null;\\n                    String r = resultSet.getString(columnIndex);\\n                    if (r != null)\\n                    {\\n                        try\\n                        {\\n                            res = PureDate.parsePureDate(r);\\n                        }\\n                        catch (java.lang.IllegalArgumentException dateTimeParseException1)\\n                        {\\n                            try\\n                            {\\n                                res = PureDate.fromSQLTimestamp(java.sql.Timestamp.valueOf(r));\\n                            }\\n                            catch (java.time.format.DateTimeParseException dateTimeParseException2)\\n                            {\\n                                res = PureDate.fromSQLDate(java.sql.Date.valueOf(r));\\n                            }\\n                        }\\n                    }\\n                    return res;\\n                }\\n                catch (Exception e)\\n                {\\n                    throw new RuntimeException(e);\\n                }\\n            };\\n        }\\n        throw new RuntimeException(\\\"Error reading in property '\\\" + propertyName + \\\"' of type Date from SQL column of type '\\\" + columnType + \\\"'.\\\");\\n    }\\n\\n    private Object getAlloyNativeValueFromResultSet(ResultSet resultSet,\\n                                                    int columnIndex,\\n                                                    int columnType)\\n    {\\n        try\\n        {\\n            Object result = null;\\n            switch (columnType)\\n            {\\n                case Types.DATE:\\n                {\\n                    java.sql.Date date = resultSet.getDate(columnIndex);\\n                    if (date != null)\\n                    {\\n                        result = PureDate.fromSQLDate(date);\\n                    }\\n                    break;\\n                }\\n                case Types.TIMESTAMP:\\n                {\\n                    java.sql.Timestamp timestamp = resultSet.getTimestamp(columnIndex, this.calendar);\\n                    if (timestamp != null)\\n                    {\\n                        result = PureDate.fromSQLTimestamp(timestamp);\\n                    }\\n                    break;\\n                }\\n                case Types.TINYINT:\\n                case Types.SMALLINT:\\n                case Types.INTEGER:\\n                case Types.BIGINT:\\n                {\\n                    long num = resultSet.getLong(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Long.valueOf(num);\\n                    }\\n                    break;\\n                }\\n                case Types.REAL:\\n                case Types.FLOAT:\\n                case Types.DOUBLE:\\n                {\\n                    double num = resultSet.getDouble(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Double.valueOf(num);\\n                    }\\n                    break;\\n                }\\n                case Types.DECIMAL:\\n                case Types.NUMERIC:\\n                {\\n                    result = resultSet.getBigDecimal(columnIndex);\\n                    break;\\n                }\\n                case Types.CHAR:\\n                case Types.VARCHAR:\\n                case Types.LONGVARCHAR:\\n                case Types.NCHAR:\\n                case Types.NVARCHAR:\\n                case Types.LONGNVARCHAR:\\n                case Types.OTHER:\\n                {\\n                    result = resultSet.getString(columnIndex);\\n                    break;\\n                }\\n                case Types.BIT:\\n                case Types.BOOLEAN:\\n                {\\n                    boolean bool = resultSet.getBoolean(columnIndex);\\n                    if (!resultSet.wasNull())\\n                    {\\n                        result = Boolean.valueOf(bool);\\n                    }\\n                }\\n                case Types.BINARY:\\n                case Types.VARBINARY:\\n                case Types.LONGVARBINARY:\\n                {\\n                    byte[] bytes = resultSet.getBytes(columnIndex);\\n                    if (bytes != null)\\n                    {\\n                        result = this.encodeHex(bytes);\\n                    }\\n                    break;\\n                }\\n                case Types.NULL:\\n                {\\n                    // do nothing: value is already assigned to null\\n                    break;\\n                }\\n                default:\\n                {\\n                    result = resultSet.getObject(columnIndex);\\n                }\\n            }\\n            return result;}\\n        catch (Exception e)\\n        {\\n            throw new RuntimeException(e);\\n        }\\n    }\\n\\n    private String encodeHex(byte[] data)\\n    {\\n        final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};\\n        final int l = data.length;\\n        final char[] out = new char[l << 1];\\n        for (int i = 0, j = 0; i < l; i++)\\n        {\\n            out[j++] = DIGITS_LOWER[(0xF0 & data[i]) >>> 4];\\n            out[j++] = DIGITS_LOWER[0x0F & data[i]];\\n        }\\n        return new String(out);\\n    }\\n\\n    public Object getObjectFromResultSet(ResultSet resultSet,\\n                                         String databaseTimeZone,\\n                                         String databaseConnection)\\n    {\\n        if (this.propertyIndices == null)\\n        {\\n            this.doSetup(resultSet, databaseTimeZone, databaseConnection);\\n        }\\n        final _pure.plan.root.A_p_A_Impl object = new _pure.plan.root.A_p_A_Impl();\\n        object.setSetId$(\\\"p_A\\\");\\n        int pkColIndex;\\n\\n        int propertyIndex;\\n\\n        propertyIndex = this.propertyIndices.get(0).get(0);\\n        {\\n            String res = (String) this.propertyGetters.get(0).get(0).get();\\n            if (res == null)\\n            {\\n                throw new RuntimeException(\\\"Error reading in property 'name'. Property of multiplicity [1] can not be null\\\");\\n            }\\n            object.setName(res);\\n        }\\n\\n        return object;\\n    }\\n\\n    private void doSetup(ResultSet resultSet, String databaseTimeZone, String databaseConnection)\\n    {\\n        try\\n        {\\n            this.calendar = new GregorianCalendar(TimeZone.getTimeZone(databaseTimeZone));\\n            _pure.plan.root.A_p_A_BaseImpl.databaseConnection$ = databaseConnection;\\n            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();\\n            int columnCount = resultSetMetaData.getColumnCount();\\n            this.columnTypes = new ArrayList<>();\\n            List<String> columnNames = new ArrayList<>();\\n            for (int i = 1; i <= columnCount; i++)\\n            {\\n                String columnLabel = resultSetMetaData.getColumnLabel(i);\\n                columnNames.add(columnLabel.startsWith(\\\"\\\\\\\"\\\") && columnLabel.endsWith(\\\"\\\\\\\"\\\") ? columnLabel.substring(1, columnLabel.length() - 1).toUpperCase() : columnLabel.toUpperCase());\\n                this.columnTypes.add(resultSetMetaData.getColumnType(i));\\n            }\\n\\n            this.propertyIndices = new ArrayList<>();\\n            List<Integer> index_0 = new ArrayList<>();\\n            index_0.add(columnNames.indexOf(\\\"NAME\\\") + 1);\\n            this.propertyIndices.add(index_0);\\n\\n            this.propertyGetters = new ArrayList<>();\\n            int propertyIndex;\\n            Supplier<Object> propertyGetter = null;\\n\\n            List<Supplier<Object>> propertyGetter_0 = new ArrayList<>();\\n\\n            propertyIndex = this.propertyIndices.get(0).get(0);\\n            propertyGetter = this.getResultSetPropertyGetterForStringProperty(resultSet, propertyIndex, resultSetMetaData.getColumnType(propertyIndex), \\\"name\\\");\\n            propertyGetter_0.add(propertyGetter);\\n\\n            this.propertyGetters.add(propertyGetter_0);\\n        }\\n        catch (RuntimeException e)\\n        {\\n            throw e;\\n        }\\n        catch (Exception e)\\n        {\\n            throw new RuntimeException(e);\\n        }\\n    }\\n}\"\n" + "    } ]\n" + "  },\n" + "  \"rootExecutionNode\" : {\n" + "    \"_type\" : \"relationalClassInstantiation\",\n" + "    \"executionNodes\" : [ {\n" + "      \"_type\" : \"sql\",\n" + "      \"connection\" : {\n" + "        \"_type\" : \"RelationalDatabaseConnection\",\n" + "        \"authenticationStrategy\" : {\n" + "          \"_type\" : \"gcpApplicationDefaultCredentials\"\n" + "        },\n" + "        \"datasourceSpecification\" : {\n" + "          \"_type\" : \"bigQuery\",\n" + "          \"defaultDataset\" : \"dataset1\",\n" + "          \"projectId\" : \"proj1\"\n" + "        },\n" + "        \"element\" : \"p::db\",\n" + "        \"postProcessorWithParameter\" : [ ],\n" + "        \"postProcessors\" : [ ],\n" + "        \"type\" : \"BigQuery\"\n" + "      },\n" + "      \"executionNodes\" : [ ],\n" + "      \"resultColumns\" : [ {\n" + "        \"dataType\" : \"VARCHAR(200)\",\n" + "        \"label\" : \"\\\"name\\\"\"\n" + "      } ],\n" + "      \"resultType\" : {\n" + "        \"_type\" : \"dataType\",\n" + "        \"dataType\" : \"meta::pure::metamodel::type::Any\"\n" + "      },\n" + "      \"sqlQuery\" : \"select `root`.name as `name` from tb as `root`\"\n" + "    } ],\n" + "    \"implementation\" : {\n" + "      \"_type\" : \"java\",\n" + "      \"executionClassFullName\" : \"_pure.plan.root.Execute\"\n" + "    },\n" + "    \"resultSizeRange\" : {\n" + "      \"lowerBound\" : 0\n" + "    },\n" + "    \"resultType\" : {\n" + "      \"_type\" : \"class\",\n" + "      \"class\" : \"p::A\",\n" + "      \"setImplementations\" : [ {\n" + "        \"class\" : \"p::A\",\n" + "        \"id\" : \"p_A\",\n" + "        \"mapping\" : \"p::M\",\n" + "        \"propertyMappings\" : [ {\n" + "          \"enumMapping\" : { },\n" + "          \"property\" : \"name\",\n" + "          \"type\" : \"String\"\n" + "        } ]\n" + "      } ]\n" + "    }\n" + "  },\n" + "  \"serializer\" : {\n" + "    \"name\" : \"pure\",\n" + "    \"version\" : \"vX_X_X\"\n" + "  },\n" + "  \"templateFunctions\" : [ \"<#function renderCollection collection separator prefix suffix defaultValue><#if collection?size == 0><#return defaultValue></#if><#return prefix + collection?join(suffix + separator + prefix) + suffix></#function>\", \"<#function collectionSize collection> <#return collection?size?c> </#function>\" ]\n" + "}", writer.toString());
}
Also used : ExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan) StringWriter(java.io.StringWriter) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) CompileContext(org.finos.legend.engine.language.pure.compiler.toPureGraph.CompileContext) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 3 with Runtime

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime in project legend-engine by finos.

the class AbstractTestSemiStructured method buildExecutionPlanString.

protected String buildExecutionPlanString(String function, String mapping, String runtime) {
    MutableList<Root_meta_pure_router_extension_RouterExtension> extensions = Lists.mutable.empty();
    extensions.addAll(Lists.mutable.withAll(core_relational_relational_router_router_extension.Root_meta_pure_router_extension_defaultRelationalExtensions__RouterExtension_MANY_(pureModel.getExecutionSupport())));
    extensions.addAll(core_external_shared_extension.Root_meta_external_shared_format_routerExtensions_String_1__ExternalFormatExtension_MANY__RouterExtension_MANY_("externalFormat", Lists.mutable.with(core_external_format_json_extension.Root_meta_external_format_json_jsonFormatExtension__ExternalFormatExtension_1_(pureModel.getExecutionSupport())), pureModel.getExecutionSupport()).toList());
    Function functionObject = Objects.requireNonNull(contextData.getElementsOfType(Function.class).stream().filter(x -> function.equals(x._package + "::" + x.name)).findFirst().orElse(null));
    Root_meta_pure_executionPlan_ExecutionPlan executionPlan = PlanGenerator.generateExecutionPlanAsPure(HelperValueSpecificationBuilder.buildLambda(functionObject.body, functionObject.parameters, pureModel.getContext()), pureModel.getMapping(mapping), pureModel.getRuntime(runtime), null, pureModel, PlanPlatform.JAVA, null, extensions);
    return core_pure_executionPlan_executionPlan_print.Root_meta_pure_executionPlan_toString_planToString_ExecutionPlan_1__Boolean_1__RouterExtension_MANY__String_1_(executionPlan, true, extensions, pureModel.getExecutionSupport());
}
Also used : PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) Compiler(org.finos.legend.engine.language.pure.compiler.Compiler) PureGrammarParser(org.finos.legend.engine.language.pure.grammar.from.PureGrammarParser) Function(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.domain.Function) Lists(org.eclipse.collections.api.factory.Lists) HelperValueSpecificationBuilder(org.finos.legend.engine.language.pure.compiler.toPureGraph.HelperValueSpecificationBuilder) MutableList(org.eclipse.collections.api.list.MutableList) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) PlanPlatform(org.finos.legend.engine.plan.platform.PlanPlatform) org.finos.legend.pure.generated(org.finos.legend.pure.generated) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) PlanGenerator(org.finos.legend.engine.plan.generation.PlanGenerator) BufferedReader(java.io.BufferedReader) Function(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.domain.Function)

Example 4 with Runtime

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime in project legend-engine by finos.

the class ServiceTestGenerationHelper method hasModelChainConnection.

private static boolean hasModelChainConnection(Runtime runtime, PureModelContextData pureModelContextData) {
    EngineRuntime engineRuntime = resolveRuntime(runtime, pureModelContextData);
    List<StoreConnections> storeConnections = engineRuntime.connections;
    for (StoreConnections s : storeConnections) {
        List<IdentifiedConnection> identifiedConnection = s.storeConnections;
        for (IdentifiedConnection ic : identifiedConnection) {
            if (ic.connection instanceof ModelChainConnection || (("ModelStore").equals(s.store.path) && ic.connection instanceof ConnectionPointer)) {
                return true;
            }
        }
    }
    return false;
}
Also used : StoreConnections(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.StoreConnections) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) ModelChainConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.modelToModel.connection.ModelChainConnection) IdentifiedConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.IdentifiedConnection) ConnectionPointer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.ConnectionPointer)

Example 5 with Runtime

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime in project legend-engine by finos.

the class ServiceTestGenerationHelper method buildTestConnection.

private static StoreConnections buildTestConnection(StoreConnections storeConnections, Function<String, String> testDataAccessor, PureModelContextData pureModelContextData, EngineRuntime runtime, String mappingPath, PureModel pureModel, String testData) {
    StoreConnections newStoreConnections = new StoreConnections();
    newStoreConnections.store = storeConnections.store;
    newStoreConnections.storeConnections = ListIterate.collect(storeConnections.storeConnections, s -> newTestIdentifiedConnection(s, storeConnections, testDataAccessor, pureModelContextData, runtime, mappingPath, pureModel, testData));
    return newStoreConnections;
}
Also used : DatabaseType(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseType) Runtime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime) MutableList(org.eclipse.collections.api.list.MutableList) ProcessorSupport(org.finos.legend.pure.m3.navigation.ProcessorSupport) PackageableElementPointer(org.finos.legend.engine.protocol.pure.v1.model.context.PackageableElementPointer) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) MediaType(javax.ws.rs.core.MediaType) RichIterable(org.eclipse.collections.api.RichIterable) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) PackageableConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.PackageableConnection) Map(java.util.Map) Tuples(org.eclipse.collections.impl.tuple.Tuples) LegacyRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.LegacyRuntime) TypeReference(com.fasterxml.jackson.core.type.TypeReference) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) IdentifiedConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.IdentifiedConnection) StoreConnections(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.StoreConnections) ProcessingContext(org.finos.legend.engine.language.pure.compiler.toPureGraph.ProcessingContext) ServiceLoader(java.util.ServiceLoader) Iterate(org.eclipse.collections.impl.utility.Iterate) StandardCharsets(java.nio.charset.StandardCharsets) PackageableElementType(org.finos.legend.engine.protocol.pure.v1.model.context.PackageableElementType) RelationalDatabaseConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.RelationalDatabaseConnection) Base64(java.util.Base64) List(java.util.List) DatabaseConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.DatabaseConnection) Lists(org.eclipse.collections.impl.factory.Lists) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) CompileContext(org.finos.legend.engine.language.pure.compiler.toPureGraph.CompileContext) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) ObjectMapperFactory(org.finos.legend.engine.shared.core.ObjectMapperFactory) TestContainer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer) Optional(java.util.Optional) XmlModelConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.modelToModel.connection.XmlModelConnection) PackageableElement(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.PackageableElement) ModelChainConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.modelToModel.connection.ModelChainConnection) ProcessorContext(org.finos.legend.pure.runtime.java.compiled.generation.ProcessorContext) ExternalFormatConnection(org.finos.legend.engine.protocol.pure.v1.packageableElement.external.shared.ExternalFormatConnection) UrlStreamExternalSource(org.finos.legend.engine.protocol.pure.v1.packageableElement.external.shared.UrlStreamExternalSource) Function(java.util.function.Function) ConnectionFactoryExtension(org.finos.legend.engine.protocol.pure.v1.extension.ConnectionFactoryExtension) HelperRuntimeBuilder(org.finos.legend.engine.language.pure.compiler.toPureGraph.HelperRuntimeBuilder) Pair(org.eclipse.collections.api.tuple.Pair) TestDatabaseAuthenticationStrategy(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.authentication.TestDatabaseAuthenticationStrategy) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) JsonModelConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.modelToModel.connection.JsonModelConnection) ValueSpecificationBuilder(org.finos.legend.engine.language.pure.compiler.toPureGraph.ValueSpecificationBuilder) ListIterate(org.eclipse.collections.impl.utility.ListIterate) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) RuntimePointer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.RuntimePointer) InstanceValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValue) Connection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.Connection) LazyIterate(org.eclipse.collections.impl.utility.LazyIterate) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) ConnectionPointer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.ConnectionPointer) LocalH2DatasourceSpecification(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.specification.LocalH2DatasourceSpecification) DataProtocolHandler(org.finos.legend.engine.shared.core.url.DataProtocolHandler) org.finos.legend.pure.generated.core_relational_relational_helperFunctions_helperFunctions(org.finos.legend.pure.generated.core_relational_relational_helperFunctions_helperFunctions) PackageableRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.PackageableRuntime) ValueSpecificationProcessor(org.finos.legend.pure.runtime.java.compiled.generation.processors.valuespecification.ValueSpecificationProcessor) StoreConnections(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.StoreConnections)

Aggregations

PureModelContextData (org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData)28 Test (org.junit.Test)21 PureModel (org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel)17 EngineRuntime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime)16 ModelToSchemaGenerationTest (org.finos.legend.engine.external.shared.format.model.test.ModelToSchemaGenerationTest)14 ListIterate (org.eclipse.collections.impl.utility.ListIterate)11 SchemaToModelGenerationTest (org.finos.legend.engine.external.shared.format.model.test.SchemaToModelGenerationTest)10 ConnectionPointer (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.ConnectionPointer)10 IdentifiedConnection (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.IdentifiedConnection)10 LegacyRuntime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.LegacyRuntime)10 List (java.util.List)9 PackageableElementPointer (org.finos.legend.engine.protocol.pure.v1.model.context.PackageableElementPointer)9 RuntimePointer (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.RuntimePointer)9 CompileContext (org.finos.legend.engine.language.pure.compiler.toPureGraph.CompileContext)8 StoreConnections (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.StoreConnections)8 PackageableElement (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.PackageableElement)7 Connection (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.connection.Connection)7 PackageableRuntime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.PackageableRuntime)7 Runtime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime)7 ModelChainConnection (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.modelToModel.connection.ModelChainConnection)7