diff --git a/eraser-base/src/main/jastadd/Navigation.jrag b/eraser-base/src/main/jastadd/Navigation.jrag index bb57ce614c40c68bf1afc4bc53680d3c9a3a8884..e75f39c8fa19496dc362f2f38625024691e01e76 100644 --- a/eraser-base/src/main/jastadd/Navigation.jrag +++ b/eraser-base/src/main/jastadd/Navigation.jrag @@ -116,10 +116,6 @@ aspect Navigation { return java.util.Optional.empty(); } - //--- containingChannel --- - inh Channel Link.containingChannel(); - eq Channel.getLink().containingChannel() = this; - //--- containingThing --- inh Thing Channel.containingThing(); eq Thing.getChannel().containingThing() = this; diff --git a/eraser-base/src/main/jastadd/Printing.jrag b/eraser-base/src/main/jastadd/Printing.jrag index 3c463ac7c2a1964aa835cdb0404e87b2f61c1a9d..3bfa5280da744f15b42f0371ac3323aaac1b9623 100644 --- a/eraser-base/src/main/jastadd/Printing.jrag +++ b/eraser-base/src/main/jastadd/Printing.jrag @@ -160,7 +160,7 @@ aspect Printing { return new MemberPrinter("Channel") .addRequired("id", getID()) .addRequired("type", getType(), ChannelType::getID) - .addIds("links", getNumLink(), getLinkList(), Link::getItem) + .addIds("links", getLinkedItems()) .build(); } diff --git a/eraser-base/src/main/jastadd/openhab.relast b/eraser-base/src/main/jastadd/openhab.relast index e26d7b00b6cac0a01627cab3eb2f4ecbde9767ff..6f5b378edb8a57a61d07208e682440f8dcd5847c 100644 --- a/eraser-base/src/main/jastadd/openhab.relast +++ b/eraser-base/src/main/jastadd/openhab.relast @@ -16,10 +16,9 @@ abstract ChannelCategory ; DefaultChannelCategory : ChannelCategory ::= <Value:DefaultChannelCategoryValue> ; SimpleChannelCategory : ChannelCategory ::= <Value:String> ; -Channel : ModelElement ::= Link* ; +Channel : ModelElement ::= ; rel Channel.Type -> ChannelType ; - -Link ::= <Item:Item> ; +rel Channel.LinkedItem* <-> Item.Channel? ; Parameter : DescribableModelElement ::= <Type:ParameterValueType> [DefaultValue:ParameterDefaultValue] <Context:String> <Required:boolean> ; ParameterDefaultValue ::= <Value:String> ; diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java index 627167f83a7773e2923dc31508904405042bc25b..19f0dff885570597ecf0f05cf155d58f44d0d67c 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java @@ -311,10 +311,8 @@ public class OpenHab2Importer { private void update(Root model, LinkData[] linkList) { for (LinkData linkData : linkList) { - Link link = new Link(); ifPresent(model.resolveChannel(linkData.channelUID), "Channel", linkData, - channel -> channel.addLink(link)); - ifPresent(model.resolveItem(linkData.itemName), "Item", linkData, link::setItem); + channel -> ifPresent(model.resolveItem(linkData.itemName), "Item", linkData, channel::addLinkedItem)); } } diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java index 2aa34c770542a34292550b1e046ba34d3c3cd7c0..ea392f2a9cd747b9f06a355e9648bc7d2a5b642d 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java @@ -73,7 +73,7 @@ public class EraserParserHelper { this.root.getMqttRoot().ensureCorrectPrefixes(); resolveList(channelMap, missingChannelListMap, Thing::addChannel); - resolveList(itemMap, missingItemLinkListMap, (channel, item) -> channel.addLink(new Link(item))); + resolveList(itemMap, missingItemLinkListMap, Channel::addLinkedItem); resolveList(groupMap, missingSubGroupListMap, Group::addGroup); resolveList(itemMap, missingItemListMap, this::addItemToGroup); resolveList(channelTypeMap, missingChannelTypeListMap, ThingType::addChannelType); diff --git a/eraser-base/src/test/resources/openhabtest/oh2/links.json b/eraser-base/src/test/resources/openhabtest/oh2/links.json index 79e79442806b87513d8581eb877453873069ddbe..f881db063fd53906ab14e3fda79dbf4a5fac0d4b 100644 --- a/eraser-base/src/test/resources/openhabtest/oh2/links.json +++ b/eraser-base/src/test/resources/openhabtest/oh2/links.json @@ -142,7 +142,7 @@ { "channelUID": "openlicht:polar-m600:342dfc32:rotation-y", "configuration": {}, - "itemName": "watch_acceleration_y" + "itemName": "watch_rotation_y" }, { "channelUID": "openlicht:polar-m600:342dfc32:rotation-z", diff --git a/eraser-base/src/test/resources/openhabtest/oh2/output.eraser b/eraser-base/src/test/resources/openhabtest/oh2/output.eraser index c5e139935809383792596f6183ffe31514c8dbd0..45f5a63949ad5615ae7ae2bc11b8a7db3e384b1c 100644 --- a/eraser-base/src/test/resources/openhabtest/oh2/output.eraser +++ b/eraser-base/src/test/resources/openhabtest/oh2/output.eraser @@ -77,7 +77,7 @@ Channel: id="openlicht:polar-m600:342dfc32:activity" type="openlicht:activity-ty Channel: id="openlicht:polar-m600:342dfc32:brightness" type="openlicht:brightness-type" links=["polar_brightness"] ; Channel: id="openlicht:polar-m600:342dfc32:heart-rate" type="openlicht:heart-rate-type" ; Channel: id="openlicht:polar-m600:342dfc32:rotation-x" type="openlicht:rotation-type" links=["watch_rotation_x"] ; -Channel: id="openlicht:polar-m600:342dfc32:rotation-y" type="openlicht:rotation-type" links=["watch_acceleration_y"] ; +Channel: id="openlicht:polar-m600:342dfc32:rotation-y" type="openlicht:rotation-type" links=["watch_rotation_y"] ; Channel: id="openlicht:polar-m600:342dfc32:rotation-z" type="openlicht:rotation-type" links=["watch_rotation_z"] ; Channel: id="openlicht:polar-m600:342dfc32:steps" type="openlicht:steps-type" ; Channel: id="openlicht:samsung-s6:2ca84896:brightness" type="openlicht:brightness-type" links=["samsung_brightness"] ;