Search in sources :

Example 21 with ModelProperty

use of org.eclipse.vorto.model.ModelProperty in project vorto by eclipse.

the class ModelContentToEcoreConverter method convertFunctionblockMapping.

private Model convertFunctionblockMapping(FunctionblockModel model, ModelContent context, String platformKey) {
    MappingBuilder builder = BuilderUtils.newMapping(new ModelId(ModelType.InformationModel, model.getId().getName() + "Mapping", model.getId().getNamespace() + ".mapping." + platformKey, model.getId().getVersion()), platformKey);
    builder.withVortolang("1.0");
    builder.withDescription("Mapping that contains " + platformKey + " specific meta data");
    builder.withReference(ModelIdFactory.newInstance(ModelType.Functionblock, model.getId().getNamespace(), model.getId().getVersion(), model.getId().getVersion()));
    org.eclipse.vorto.core.api.model.functionblock.FunctionblockModel eFbm = convertFunctionblock(model, context);
    for (Stereotype stereotype : model.getStereotypes()) {
        MappingRuleBuilder ruleBuilder = new MappingRuleBuilder();
        ruleBuilder.withStereotypeTarget(stereotype.getName(), stereotype.getAttributes());
        FunctionBlockSource source = MappingFactory.eINSTANCE.createFunctionBlockSource();
        source.setModel(eFbm);
        ruleBuilder.withSource(source);
        builder.addRule(ruleBuilder.build());
    }
    for (ModelProperty statusProperty : model.getStatusProperties()) {
        for (Stereotype stereotype : statusProperty.getStereotypes()) {
            MappingRuleBuilder ruleBuilder = new MappingRuleBuilder();
            ruleBuilder.withStereotypeTarget(stereotype.getName(), stereotype.getAttributes());
            StatusSource source = MappingFactory.eINSTANCE.createStatusSource();
            source.setModel(eFbm);
            source.setProperty(eFbm.getFunctionblock().getStatus().getProperties().stream().filter(property -> property.getName().equals(statusProperty.getName())).findAny().get());
            ruleBuilder.withSource(source);
            builder.addRule(ruleBuilder.build());
        }
    }
    for (ModelProperty configProperty : model.getConfigurationProperties()) {
        for (Stereotype stereotype : configProperty.getStereotypes()) {
            MappingRuleBuilder ruleBuilder = new MappingRuleBuilder();
            ruleBuilder.withStereotypeTarget(stereotype.getName(), stereotype.getAttributes());
            ConfigurationSource source = MappingFactory.eINSTANCE.createConfigurationSource();
            source.setModel(eFbm);
            source.setProperty(eFbm.getFunctionblock().getConfiguration().getProperties().stream().filter(property -> property.getName().equals(configProperty.getName())).findAny().get());
            ruleBuilder.withSource(source);
            builder.addRule(ruleBuilder.build());
        }
    }
    return builder.build();
}
Also used : EntityBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.EntityBuilder) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) ReturnPrimitiveType(org.eclipse.vorto.core.api.model.functionblock.ReturnPrimitiveType) ModelIdFactory(org.eclipse.vorto.core.api.model.model.ModelIdFactory) MappingPackageImpl(org.eclipse.vorto.core.api.model.mapping.impl.MappingPackageImpl) Entity(org.eclipse.vorto.core.api.model.datatype.Entity) DictionaryPropertyType(org.eclipse.vorto.core.api.model.datatype.DictionaryPropertyType) PrimitivePropertyType(org.eclipse.vorto.core.api.model.datatype.PrimitivePropertyType) FunctionblockBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.FunctionblockBuilder) RefParam(org.eclipse.vorto.core.api.model.functionblock.RefParam) MappingBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.MappingBuilder) MappingRuleBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.MappingRuleBuilder) ReturnObjectType(org.eclipse.vorto.core.api.model.functionblock.ReturnObjectType) Operation(org.eclipse.vorto.model.Operation) Type(org.eclipse.vorto.core.api.model.datatype.Type) IModel(org.eclipse.vorto.model.IModel) ReturnType(org.eclipse.vorto.core.api.model.functionblock.ReturnType) ConfigurationSource(org.eclipse.vorto.core.api.model.mapping.ConfigurationSource) ReturnDictonaryType(org.eclipse.vorto.core.api.model.functionblock.ReturnDictonaryType) ModelId(org.eclipse.vorto.core.api.model.model.ModelId) ModelBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.ModelBuilder) Collectors(java.util.stream.Collectors) FunctionblockPackageImpl(org.eclipse.vorto.core.api.model.functionblock.impl.FunctionblockPackageImpl) InformationModelPackageImpl(org.eclipse.vorto.core.api.model.informationmodel.impl.InformationModelPackageImpl) List(java.util.List) DictionaryType(org.eclipse.vorto.model.DictionaryType) ModelEvent(org.eclipse.vorto.model.ModelEvent) PrimitiveType(org.eclipse.vorto.model.PrimitiveType) Optional(java.util.Optional) Constraint(org.eclipse.vorto.model.Constraint) Infomodel(org.eclipse.vorto.model.Infomodel) DatatypePackageImpl(org.eclipse.vorto.core.api.model.datatype.impl.DatatypePackageImpl) StatusSource(org.eclipse.vorto.core.api.model.mapping.StatusSource) ArrayList(java.util.ArrayList) EnumBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.EnumBuilder) Model(org.eclipse.vorto.core.api.model.model.Model) ConstraintIntervalType(org.eclipse.vorto.core.api.model.datatype.ConstraintIntervalType) IReferenceType(org.eclipse.vorto.model.IReferenceType) Property(org.eclipse.vorto.core.api.model.datatype.Property) FunctionblockFactory(org.eclipse.vorto.core.api.model.functionblock.FunctionblockFactory) MappingFactory(org.eclipse.vorto.core.api.model.mapping.MappingFactory) DatatypeFactory(org.eclipse.vorto.core.api.model.datatype.DatatypeFactory) PrimitiveParam(org.eclipse.vorto.core.api.model.functionblock.PrimitiveParam) EntityModel(org.eclipse.vorto.model.EntityModel) Presence(org.eclipse.vorto.core.api.model.datatype.Presence) ModelProperty(org.eclipse.vorto.model.ModelProperty) PropertyType(org.eclipse.vorto.core.api.model.datatype.PropertyType) InformationModelBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.InformationModelBuilder) Param(org.eclipse.vorto.core.api.model.functionblock.Param) BuilderUtils(org.eclipse.vorto.core.api.model.BuilderUtils) FunctionBlockSource(org.eclipse.vorto.core.api.model.mapping.FunctionBlockSource) EventBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.EventBuilder) DictonaryParam(org.eclipse.vorto.core.api.model.functionblock.DictonaryParam) FunctionblockModel(org.eclipse.vorto.model.FunctionblockModel) Stereotype(org.eclipse.vorto.model.Stereotype) ModelContent(org.eclipse.vorto.model.ModelContent) ModelType(org.eclipse.vorto.core.api.model.model.ModelType) EnumModel(org.eclipse.vorto.model.EnumModel) ObjectPropertyType(org.eclipse.vorto.core.api.model.datatype.ObjectPropertyType) ConfigurationSource(org.eclipse.vorto.core.api.model.mapping.ConfigurationSource) FunctionBlockSource(org.eclipse.vorto.core.api.model.mapping.FunctionBlockSource) Stereotype(org.eclipse.vorto.model.Stereotype) MappingBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.MappingBuilder) StatusSource(org.eclipse.vorto.core.api.model.mapping.StatusSource) ModelProperty(org.eclipse.vorto.model.ModelProperty) ModelId(org.eclipse.vorto.core.api.model.model.ModelId) MappingRuleBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.MappingRuleBuilder)

Example 22 with ModelProperty

use of org.eclipse.vorto.model.ModelProperty in project vorto by eclipse.

the class SpecWithSameFunctionblock method createModel.

@Override
protected void createModel() {
    FunctionblockModel buttonModel = new FunctionblockModel(ModelId.fromPrettyFormat("demo.fb:PushButton:1.0.0"));
    ModelProperty digitalInputStateProperty = new ModelProperty();
    digitalInputStateProperty.setMandatory(true);
    digitalInputStateProperty.setName("sensor_value");
    digitalInputStateProperty.setType(PrimitiveType.FLOAT);
    digitalInputStateProperty.setTargetPlatformKey("iotbutton");
    digitalInputStateProperty.addStereotype(Stereotype.createWithXpath("/@btnvalue1"));
    buttonModel.setStatusProperties(Arrays.asList(new ModelProperty[] { digitalInputStateProperty }));
    infomodel.getFunctionblocks().add(ModelProperty.Builder("btn1", buttonModel).build());
    FunctionblockModel buttonModel2 = new FunctionblockModel(ModelId.fromPrettyFormat("demo.fb:PushButton:1.0.0"));
    ModelProperty digitalInputStateProperty2 = new ModelProperty();
    digitalInputStateProperty2.setMandatory(true);
    digitalInputStateProperty2.setName("sensor_value");
    digitalInputStateProperty2.setType(PrimitiveType.FLOAT);
    digitalInputStateProperty2.setTargetPlatformKey("iotbutton");
    digitalInputStateProperty2.addStereotype(Stereotype.createWithXpath("/@btnvalue2"));
    buttonModel2.setStatusProperties(Arrays.asList(new ModelProperty[] { digitalInputStateProperty2 }));
    infomodel.getFunctionblocks().add(ModelProperty.Builder("btn2", buttonModel2).build());
}
Also used : FunctionblockModel(org.eclipse.vorto.model.FunctionblockModel) ModelProperty(org.eclipse.vorto.model.ModelProperty)

Example 23 with ModelProperty

use of org.eclipse.vorto.model.ModelProperty in project vorto by eclipse.

the class ModelContentToEcoreConverter method convertInformationModel.

private InformationModel convertInformationModel(Infomodel model, ModelContent context) {
    InformationModelBuilder builder = BuilderUtils.newInformationModel(new ModelId(ModelType.InformationModel, model.getId().getName(), model.getId().getNamespace(), model.getId().getVersion()));
    builder.withCategory(model.getCategory());
    builder.withDescription(model.getDescription());
    builder.withDisplayName(model.getDisplayName());
    builder.withVortolang(model.getVortolang());
    for (ModelProperty property : model.getFunctionblocks()) {
        FunctionblockModel fbModel = (FunctionblockModel) context.getModels().get((org.eclipse.vorto.model.ModelId) property.getType());
        org.eclipse.vorto.core.api.model.functionblock.FunctionblockModel convertedFb = (org.eclipse.vorto.core.api.model.functionblock.FunctionblockModel) convertFunctionblock(fbModel, context);
        builder.withReference(ModelIdFactory.newInstance(convertedFb));
        builder.withFunctionBlock(convertedFb, property.getName(), property.getDescription(), property.isMandatory());
    }
    return builder.build();
}
Also used : FunctionblockModel(org.eclipse.vorto.model.FunctionblockModel) ModelProperty(org.eclipse.vorto.model.ModelProperty) InformationModelBuilder(org.eclipse.vorto.core.api.model.BuilderUtils.InformationModelBuilder) Infomodel(org.eclipse.vorto.model.Infomodel) ModelId(org.eclipse.vorto.core.api.model.model.ModelId)

Example 24 with ModelProperty

use of org.eclipse.vorto.model.ModelProperty in project vorto by eclipse.

the class MappingSpecificationSerializer method iterator.

public Iterator<IMappingSerializer> iterator() {
    ModelId rootMappingId = MappingIdUtils.getIdForInfoModel(specification.getInfoModel());
    List<IMappingSerializer> serializers = new ArrayList<IMappingSerializer>();
    for (ModelProperty fbProperty : specification.getInfoModel().getFunctionblocks()) {
        FunctionblockModel fbm = specification.getFunctionBlock(fbProperty.getName());
        ModelId mappingId = MappingIdUtils.getIdForProperty(rootMappingId, fbProperty);
        addSerializerRecursive(mappingId, fbm, fbm.getProperties(), serializers);
        serializers.add(new FunctionblockMappingSerializer(specification, mappingId, targetPlatform, fbProperty.getName()));
    }
    serializers.add(new InformationModelMappingSerializer(specification, rootMappingId, targetPlatform));
    return serializers.iterator();
}
Also used : FunctionblockModel(org.eclipse.vorto.model.FunctionblockModel) ArrayList(java.util.ArrayList) ModelProperty(org.eclipse.vorto.model.ModelProperty) ModelId(org.eclipse.vorto.model.ModelId)

Example 25 with ModelProperty

use of org.eclipse.vorto.model.ModelProperty in project vorto by eclipse.

the class MappingSpecificationSerializer method addSerializerRecursive.

private void addSerializerRecursive(ModelId parentId, IModel container, List<ModelProperty> properties, List<IMappingSerializer> serializers) {
    for (ModelProperty property : properties) {
        if (isEntityProperty(property)) {
            EntityModel entityModel = (EntityModel) property.getType();
            ModelId mappingId = MappingIdUtils.getIdForProperty(parentId, property);
            addSerializerRecursive(mappingId, entityModel, entityModel.getProperties(), serializers);
            serializers.add(new EntityMappingSerializer(specification, mappingId, targetPlatform, property.getName(), entityModel));
        }
    }
}
Also used : ModelProperty(org.eclipse.vorto.model.ModelProperty) EntityModel(org.eclipse.vorto.model.EntityModel) ModelId(org.eclipse.vorto.model.ModelId)

Aggregations

ModelProperty (org.eclipse.vorto.model.ModelProperty)39 FunctionblockModel (org.eclipse.vorto.model.FunctionblockModel)30 Property (org.eclipse.vorto.core.api.model.datatype.Property)5 EntityModel (org.eclipse.vorto.model.EntityModel)5 Infomodel (org.eclipse.vorto.model.Infomodel)5 ModelId (org.eclipse.vorto.core.api.model.model.ModelId)4 Constraint (org.eclipse.vorto.model.Constraint)4 EnumModel (org.eclipse.vorto.model.EnumModel)4 ModelEvent (org.eclipse.vorto.model.ModelEvent)3 ModelId (org.eclipse.vorto.model.ModelId)3 Operation (org.eclipse.vorto.model.Operation)3 Stereotype (org.eclipse.vorto.model.Stereotype)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Optional (java.util.Optional)2 Collectors (java.util.stream.Collectors)2 JXPathInvalidAccessException (org.apache.commons.jxpath.JXPathInvalidAccessException)2 JXPathNotFoundException (org.apache.commons.jxpath.JXPathNotFoundException)2 EntityBuilder (org.eclipse.vorto.core.api.model.BuilderUtils.EntityBuilder)2 EventBuilder (org.eclipse.vorto.core.api.model.BuilderUtils.EventBuilder)2