committed by
GitHub
15 changed files with 205 additions and 29 deletions
@ -0,0 +1,34 @@ |
|||
/** |
|||
* Copyright © 2016-2017 The Thingsboard Authors |
|||
* |
|||
* 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. |
|||
*/ |
|||
package org.thingsboard.server.extensions.api.device; |
|||
|
|||
import lombok.Data; |
|||
import org.thingsboard.server.common.data.id.DeviceId; |
|||
|
|||
/** |
|||
* Contains basic device metadata; |
|||
* |
|||
* @author ashvayka |
|||
*/ |
|||
@Data |
|||
public final class DeviceMetaData { |
|||
|
|||
final DeviceId deviceId; |
|||
final String deviceName; |
|||
final String deviceType; |
|||
final DeviceAttributes deviceAttributes; |
|||
|
|||
} |
|||
@ -0,0 +1,52 @@ |
|||
/** |
|||
* Copyright © 2016-2017 The Thingsboard Authors |
|||
* |
|||
* 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. |
|||
*/ |
|||
package org.thingsboard.server.extensions.core.filter; |
|||
|
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.thingsboard.server.common.msg.core.ToServerRpcRequestMsg; |
|||
import org.thingsboard.server.common.msg.device.ToDeviceActorMsg; |
|||
import org.thingsboard.server.extensions.api.component.Filter; |
|||
import org.thingsboard.server.extensions.api.rules.RuleContext; |
|||
import org.thingsboard.server.extensions.api.rules.RuleFilter; |
|||
import org.thingsboard.server.extensions.api.rules.SimpleRuleLifecycleComponent; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.Set; |
|||
import java.util.stream.Collectors; |
|||
|
|||
import static org.thingsboard.server.common.msg.session.MsgType.TO_SERVER_RPC_REQUEST; |
|||
|
|||
/** |
|||
* @author Andrew Shvayka |
|||
*/ |
|||
@Filter(name = "Device Type Filter", descriptor = "DeviceTypeFilterDescriptor.json", configuration = DeviceTypeFilterConfiguration.class) |
|||
@Slf4j |
|||
public class DeviceTypeFilter extends SimpleRuleLifecycleComponent implements RuleFilter<DeviceTypeFilterConfiguration> { |
|||
|
|||
private Set<String> deviceTypes; |
|||
|
|||
@Override |
|||
public void init(DeviceTypeFilterConfiguration configuration) { |
|||
deviceTypes = Arrays.stream(configuration.getDeviceTypes()) |
|||
.map(m -> m.getName()) |
|||
.collect(Collectors.toSet()); |
|||
} |
|||
|
|||
@Override |
|||
public boolean filter(RuleContext ctx, ToDeviceActorMsg msg) { |
|||
return deviceTypes.contains(ctx.getDeviceMetaData().getDeviceType()); |
|||
} |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
/** |
|||
* Copyright © 2016-2017 The Thingsboard Authors |
|||
* |
|||
* 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. |
|||
*/ |
|||
package org.thingsboard.server.extensions.core.filter; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author Andrew Shvayka |
|||
*/ |
|||
@Data |
|||
public class DeviceTypeFilterConfiguration { |
|||
|
|||
private DeviceTypeName[] deviceTypes; |
|||
|
|||
@Data |
|||
public static class DeviceTypeName { |
|||
private String name; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
{ |
|||
"schema": { |
|||
"title": "Device Type Filter Configuration", |
|||
"type": "object", |
|||
"properties": { |
|||
"deviceTypes": { |
|||
"title": "Device types", |
|||
"type": "array", |
|||
"minItems" : 1, |
|||
"items": { |
|||
"type": "object", |
|||
"title": "Device Type", |
|||
"properties": { |
|||
"name": { |
|||
"title": "Device Type", |
|||
"type": "string" |
|||
} |
|||
} |
|||
}, |
|||
"uniqueItems": true |
|||
} |
|||
}, |
|||
"required": ["deviceTypes"] |
|||
}, |
|||
"form": [ |
|||
"deviceTypes" |
|||
] |
|||
} |
|||
Loading…
Reference in new issue