forked from eclipse/org.eclipse.sensinact.gateway
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sensinact.genmodel
86 lines (86 loc) · 8.7 KB
/
sensinact.genmodel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2022 Contributors to the Eclipse Foundation.

This program and the accompanying materials are made
available under the terms of the Eclipse Public License 2.0
which is available at https://www.eclipse.org/legal/epl-2.0/

SPDX-License-Identifier: EPL-2.0

Contributors:
 Data In Motion - initial API and implementation "
modelDirectory="/org.eclipse.sensinact.core.model/src" modelPluginID="org.eclipse.sensinact.core.model"
modelName="sensinact" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container$Dynamic$Permissive"
importerID="org.eclipse.emf.importer.ecore" complianceLevel="11.0" suppressGenModelAnnotations="false"
copyrightFields="false" operationReflection="true" importOrganizing="true" oSGiCompatible="true">
<foreignModel>sensinact.ecore</foreignModel>
<genPackages prefix="Provider" basePackage="org.eclipse.sensinact.model.core" resource="XMI"
disposableProviderFactory="true" ecorePackage="sensinact.ecore#/">
<genEnums typeSafeEnumCompatible="false" ecoreEnum="sensinact.ecore#//ResourceType">
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ResourceType/ACTION"/>
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ResourceType/PROPERTY"/>
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ResourceType/SENSOR"/>
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ResourceType/STATE_VARIABLE"/>
</genEnums>
<genEnums typeSafeEnumCompatible="false" ecoreEnum="sensinact.ecore#//ValueType">
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ValueType/FIXED"/>
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ValueType/OBSERVABLE"/>
<genEnumLiterals ecoreEnumLiteral="sensinact.ecore#//ValueType/MODIFIABLE"/>
</genEnums>
<genDataTypes ecoreDataType="sensinact.ecore#//EGeoJsonObject" create="try { return new com.fasterxml.jackson.databind.ObjectMapper().readValue(it, GeoJsonObject.class); } catch (com.fasterxml.jackson.core.JsonProcessingException e) { throw new IllegalArgumentException(e); }"
convert="try { return new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(it); } catch (com.fasterxml.jackson.core.JsonProcessingException e) { throw new IllegalArgumentException(e); }"/>
<genDataTypes ecoreDataType="sensinact.ecore#//EInstant" create="return Instant.parse(it);"
convert="return it.toString();"/>
<genClasses ecoreClass="sensinact.ecore#//Provider">
<genAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="org.eclipse.emf.ecore.EStructuralFeature serviceFeature = eClass().getEStructuralFeature(service);\nreturn serviceFeature != null ? (Service) eGet(serviceFeature) : null;"/>
</genAnnotations>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Provider/id"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sensinact.ecore#//Provider/admin"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sensinact.ecore#//Provider/linkedProviders"/>
<genOperations ecoreOperation="sensinact.ecore#//Provider/getService" body="EStructuralFeature serviceFeature = eClass().getEStructuralFeature(serviceName);
if (serviceFeature instanceof <%org.eclipse.emf.ecore.EReference%>) {
	EClass refEClass = ((EReference) serviceFeature).getEReferenceType();
	return ProviderPackage.Literals.SERVICE.isSuperTypeOf(refEClass) ? (Service) eGet(serviceFeature) : null;
}
return null;">
<genParameters ecoreParameter="sensinact.ecore#//Provider/getService/serviceName"/>
</genOperations>
<genOperations ecoreOperation="sensinact.ecore#//Provider/getServiceEClass"
body="<%org.eclipse.emf.ecore.EStructuralFeature%> serviceFeature = eClass().getEStructuralFeature(serviceName);
if (serviceFeature instanceof <%org.eclipse.emf.ecore.EReference%>) {
	<%org.eclipse.emf.ecore.EClass%> refEClass = ((EReference) serviceFeature).getEReferenceType();
	return ProviderPackage.Literals.SERVICE.isSuperTypeOf(refEClass) ? refEClass : null;
}
return null;">
<genParameters ecoreParameter="sensinact.ecore#//Provider/getServiceEClass/serviceName"/>
</genOperations>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//Admin">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Admin/friendlyName"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Admin/location"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Admin/modelPackageUri"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Admin/model"/>
</genClasses>
<genClasses image="false" ecoreClass="sensinact.ecore#//Service">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sensinact.ecore#//Service/metadata"/>
<genOperations documentation="The eIsSet works a bit differently than the EMF Default. An EAttribute is seen as set, if it is the default value or if the Metadata with a timestamp are available."
ecoreOperation="sensinact.ecore#//Service/eIsSet" body="boolean result = super.eIsSet(feature);
// we only change the behaviour for EAttributes
if (!result && feature instanceof org.eclipse.emf.ecore.EAttribute){
 if (getMetadata().containsKey(feature) && getMetadata().get(feature).getTimestamp() != null) {
 result = true;
 } else {
 // if there is a default, we can see this as set
 result = feature.getDefaultValueLiteral() != null;
 }
}
return result;">
<genParameters ecoreParameter="sensinact.ecore#//Service/eIsSet/feature"/>
</genOperations>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//Metadata">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sensinact.ecore#//Metadata/extra"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//Metadata/timestamp"/>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//FeatureMetadata">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sensinact.ecore#//FeatureMetadata/key"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sensinact.ecore#//FeatureMetadata/value"/>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//FeatureCustomMetadata">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//FeatureCustomMetadata/name"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//FeatureCustomMetadata/value"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//FeatureCustomMetadata/timestamp"/>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//ServiceMap">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sensinact.ecore#//ServiceMap/value"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute sensinact.ecore#//ServiceMap/key"/>
</genClasses>
<genClasses ecoreClass="sensinact.ecore#//DynamicProvider">
<genAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return getServices().get(service);"/>
</genAnnotations>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sensinact.ecore#//DynamicProvider/services"/>
<genOperations ecoreOperation="sensinact.ecore#//DynamicProvider/getService"
body="Service service = super.getService(serviceName);
return service != null ? service : getServices().get(serviceName);">
<genParameters ecoreParameter="sensinact.ecore#//DynamicProvider/getService/serviceName"/>
</genOperations>
<genOperations ecoreOperation="sensinact.ecore#//DynamicProvider/getServiceEClass"
body="EClass serviceType = super.getServiceEClass(serviceName);
return serviceType != null ? serviceType : getServices().get(serviceName).eClass();">
<genParameters ecoreParameter="sensinact.ecore#//DynamicProvider/getServiceEClass/serviceName"/>
</genOperations>
</genClasses>
</genPackages>
</genmodel:GenModel>