core_servicestore.tests.mapping.pure Maven / Gradle / Ivy
The newest version!
// Copyright 2021 Goldman Sachs
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
###Mapping
Mapping meta::external::store::service::tests::mapping::DummyMappingsToBeDeleted
(
meta::external::store::service::tests::domain::S_Trade[s_trade_set_dummy]: Pure
{
~src meta::external::store::service::tests::domain::S_Trade
s_tradeId: $src.s_tradeId
}
meta::external::store::service::tests::domain::S_Product[s_prod_set_dummy]: Pure
{
~src meta::external::store::service::tests::domain::S_Product
s_productId: $src.s_productId
}
)
Mapping meta::external::store::service::tests::mapping::ServiceStoreMapping
(
include meta::external::store::service::tests::mapping::DummyMappingsToBeDeleted
// *meta::external::store::service::tests::domain::S_Trade[s_trade_set]: Service
// {
// [meta::external::store::service::tests::store::TradeProductServiceStore] TradeServices.AllTradeService
// (
// ParamMapping
// (
// serializationFormat : 'CSV'
// )
// )
// }
// *meta::external::store::service::tests::domain::S_Product[s_prod_set]: Service
// {
// [meta::external::store::service::tests::store::TradeProductServiceStore] ProductServices.ProductByIdService
// (
// ParamMapping
// (
// id : $this.s_tradeId->split(':')->at(0),
// serializationFormat : 'CSV'
// )
// )
// [meta::external::store::service::tests::store::TradeProductServiceStore] ProductServices.ProductByIdService
// (
// ParamMapping
// (
// id : $this.s_productId,
// serializationFormat : 'CSV'
// )
// )
// [meta::external::store::service::tests::store::TradeProductServiceStore] ProductServices.ProductByNameService
// (
// ParamMapping
// (
// name : 'product 30'
// )
// )
// }
meta::external::store::service::tests::domain::Trade[trade_set]: Pure
{
~src meta::external::store::service::tests::domain::S_Trade
tradeId: $src.s_tradeId,
+prodId: String[1]: $src.s_tradeDetails->split(':')->at(0),
quantity: $src.s_tradeDetails->split(':')->at(1)->parseInteger(),
trader[trader_set]: $src
}
meta::external::store::service::tests::domain::Trader[trader_set]:Pure
{
~src meta::external::store::service::tests::domain::S_Trade
kerberos : $src.s_traderDetails->split(':')->at(0),
firstName : $src.s_traderDetails->split(':')->at(1),
lastName : $src.s_traderDetails->split(':')->at(2)
}
meta::external::store::service::tests::domain::Product[prod_set]: Pure
{
~src meta::external::store::service::tests::domain::S_Product
productId: $src.s_productId,
productName: $src.s_productName,
description: $src.s_description,
synonyms[synonym_set]: $src.s_synonyms
}
meta::external::store::service::tests::domain::Synonym[synonym_set]:Pure
{
~src meta::external::store::service::tests::domain::S_Synonym
name: $src.s_name,
type: EnumerationMapping SynonymTypeMapping: $src.s_type
}
meta::external::store::service::tests::domain::SynonymType: EnumerationMapping SynonymTypeMapping
{
CUSIP: ['cusip', 'CUSIP'],
ISIN: ['isin', 'ISIN']
}
meta::external::store::service::tests::domain::S_Trade_S_Product[s_cross_set]: XStore
{
s_product[s_trade_set_dummy, s_prod_set_dummy]: $this.s_tradeDetails == $that.s_tradeId
}
meta::external::store::service::tests::domain::Trade_Product[cross_set]: XStore
{
product[trade_set, prod_set]: $this.prodId == $that.productId
}
)
###Pure
import meta::pure::mapping::*;
import meta::external::store::service::metamodel::*;
import meta::external::store::service::tests::domain::*;
import meta::external::format::shared::metamodel::*;
import meta::external::store::service::metamodel::mapping::*;
import meta::pure::mapping::xStore::*;
import meta::external::store::model::*;
function meta::external::store::service::tests::mapping::serviceStoreMapping():Mapping[1]
{
let baseMapping = meta::external::store::service::tests::mapping::ServiceStoreMapping;
let serviceStore = meta::external::store::service::tests::store::TradeProductServiceStore();
//Generated in compilation phase using schema binding details
let tradeSetPropMappings= [
^ServiceStorePropertyMapping(property = S_Trade.properties->filter(p | $p.name == 's_tradeId')->toOne(), sourceSetImplementationId = 's_trade_set', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Trade.properties->filter(p | $p.name == 's_traderDetails')->toOne(), sourceSetImplementationId = 's_trade_set', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Trade.properties->filter(p | $p.name == 's_tradeDetails')->toOne(), sourceSetImplementationId = 's_trade_set', targetSetImplementationId = '')
];
let tradeServiceSetImpl = ^RootServiceInstanceSetImplementation(
id = 's_trade_set',
root = true,
class = meta::external::store::service::tests::domain::S_Trade,
parent = $baseMapping,
propertyMappings = $tradeSetPropMappings);
let tradeService = $serviceStore.getServiceStoreElementById('TradeServices')->cast(@ServiceGroup).getServiceStoreElementById('AllTradeService')->cast(@Service);
let transform3 = {| 'CSV'};
let parameterBuildInfo = ^ServiceRequestParameterBuildInfo(serviceParameter = $tradeService.parameters->toOne(),
transform = $transform3);
let requestBodyBuildInfo = ^ServiceRequestBodyBuildInfo(transform = {s_trade:meta::external::store::service::tests::domain::S_Trade[1]| ^meta::external::store::service::tests::domain::S_RequestBody(propA = $s_trade.s_tradeId, propB = 'propB')});
let tradeServicesMapping = ^ServiceMapping(service = $tradeService,
owner = $tradeServiceSetImpl,
requestBuildInfo = ^ServiceRequestBuildInfo(requestParametersBuildInfo = ^ServiceRequestParametersBuildInfo(parameterBuildInfoList = $parameterBuildInfo),
requestBodyBuildInfo = $requestBodyBuildInfo));
$tradeServiceSetImpl->mutateAdd('servicesMapping', $tradeServicesMapping);
let prodServiceSetImpl = ^RootServiceInstanceSetImplementation(
id = 's_prod_set',
root = true,
class = meta::external::store::service::tests::domain::S_Product,
parent = $baseMapping);
//Generated in compilation phase using schema binding details
let embeddedSetImpl = ^EmbeddedServiceStoreSetImplementation(property = S_Product.properties->filter(p | $p.name == 's_synonyms')->toOne(), owner = $prodServiceSetImpl, sourceSetImplementationId = 's_prod_set', targetSetImplementationId = 's_synonym_set', root = false, class = S_Synonym, parent = $baseMapping, id = 's_synonym_set',
propertyMappings = [^ServiceStorePropertyMapping(property = S_Synonym.properties->filter(p | $p.name == 's_name')->toOne(), sourceSetImplementationId = 's_synonyms', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Synonym.properties->filter(p | $p.name == 's_type')->toOne(), sourceSetImplementationId = 's_synonyms', targetSetImplementationId = '')]);
let prodSetPropMappings= [
^ServiceStorePropertyMapping(property = S_Product.properties->filter(p | $p.name == 's_productId')->toOne(), sourceSetImplementationId = 's_prod_set', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Product.properties->filter(p | $p.name == 's_productName')->toOne(), sourceSetImplementationId = 's_prod_set', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Product.properties->filter(p | $p.name == 's_description')->toOne(), sourceSetImplementationId = 's_prod_set', targetSetImplementationId = ''),
^ServiceStorePropertyMapping(property = S_Product.properties->filter(p | $p.name == 's_tradeId')->toOne(), sourceSetImplementationId = 's_prod_set', targetSetImplementationId = ''),
$embeddedSetImpl
];
let productByIdService = $serviceStore.getServiceStoreElementById('ProductServices')->cast(@ServiceGroup).getServiceStoreElementById('ProductByIdService')->cast(@Service);
let transform = {s_prod:meta::external::store::service::tests::domain::S_Product[1] | $s_prod.s_tradeId->split(':')->at(0)};
let idParamBuildInfos = [^ServiceRequestParameterBuildInfo(serviceParameter = $productByIdService.parameters->at(0),
transform = $transform),
^ServiceRequestParameterBuildInfo(serviceParameter = $productByIdService.parameters->at(1),
transform = $transform3)];
let transform0 = {s_prod:meta::external::store::service::tests::domain::S_Product[1] | $s_prod.s_productId};
let idParamBuildInfos1 = [^ServiceRequestParameterBuildInfo(serviceParameter = $productByIdService.parameters->at(0),
transform = $transform0),
^ServiceRequestParameterBuildInfo(serviceParameter = $productByIdService.parameters->at(1),
transform = $transform3)];
let productByNameService= $serviceStore.getServiceStoreElementById('ProductServices')->cast(@ServiceGroup).getServiceStoreElementById('ProductByNameService')->cast(@Service);
let transform1 = {s_prod:meta::external::store::service::tests::domain::S_Product[1] | 'Product 30'};
let nameParamBuildInfo = ^ServiceRequestParameterBuildInfo(serviceParameter = $productByNameService.parameters->toOne(),
transform = $transform1);
let prodServicesMapping = [^ServiceMapping(service = $productByIdService, owner = $prodServiceSetImpl, requestBuildInfo = ^ServiceRequestBuildInfo(requestParametersBuildInfo = ^ServiceRequestParametersBuildInfo(parameterBuildInfoList = $idParamBuildInfos))),
^ServiceMapping(service = $productByIdService, owner = $prodServiceSetImpl, requestBuildInfo = ^ServiceRequestBuildInfo(requestParametersBuildInfo = ^ServiceRequestParametersBuildInfo(parameterBuildInfoList = $idParamBuildInfos1))),
^ServiceMapping(service = $productByNameService, owner = $prodServiceSetImpl, requestBuildInfo = ^ServiceRequestBuildInfo(requestParametersBuildInfo = ^ServiceRequestParametersBuildInfo(parameterBuildInfoList = $idParamBuildInfos1)))];
$prodServiceSetImpl->mutateAdd('servicesMapping', $prodServicesMapping);
$prodServiceSetImpl->mutateAdd('propertyMappings', $prodSetPropMappings);
let XStoreMapping = $baseMapping.associationMappings->filter(am | $am.id == 's_cross_set')->toOne()->cast(@XStoreAssociationImplementation);
let propertyMapping = $XStoreMapping.propertyMappings->toOne();
let updatedPropMapping = ^$propertyMapping(sourceSetImplementationId = 's_trade_set', targetSetImplementationId = 's_prod_set');
let updatedXStoreMapping = ^$XStoreMapping(propertyMappings = $updatedPropMapping);
let neededClassMappings = $baseMapping.classMappings->filter(cm | $cm.id->in(['trade_set', 'trader_set', 'prod_set', 'synonym_set']));
^$baseMapping(classMappings = [$tradeServiceSetImpl, $prodServiceSetImpl, $embeddedSetImpl]->concatenate($neededClassMappings), associationMappings = $updatedXStoreMapping->concatenate($baseMapping.associationMappings->filter(am | $am.id == 'cross_set')->toOne()));
}