Skip to content

Commit

Permalink
[airvisualnode] Add null annotations (openhab#13895)
Browse files Browse the repository at this point in the history
* Add null annotation

Signed-off-by: Leo Siepel <leosiepel@gmail.com>
  • Loading branch information
lsiepel authored and renescherer committed Mar 23, 2023
1 parent 10071ee commit f7dc40d
Show file tree
Hide file tree
Showing 21 changed files with 114 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import static org.openhab.binding.airvisualnode.internal.AirVisualNodeBindingConstants.*;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.airvisualnode.internal.handler.AirVisualNodeHandler;
import org.openhab.core.thing.Thing;
Expand All @@ -29,6 +30,7 @@
*
* @author Victor Antonovich - Initial contribution
*/
@NonNullByDefault
@Component(service = ThingHandlerFactory.class, configurationPid = "binding.airvisualnode")
public class AirVisualNodeHandlerFactory extends BaseThingHandlerFactory {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,25 @@
*/
package org.openhab.binding.airvisualnode.internal.config;

import org.eclipse.jdt.annotation.NonNullByDefault;

/**
* Configuration for AirVisual Node.
*
* @author Victor Antonovich - Initial contribution
*/
@NonNullByDefault
public class AirVisualNodeConfig {

public static final String ADDRESS = "address";

public String address;
public String address = "";

public String username;
public String username = "";

public String password;
public String password = "";

public String share;
public String share = "";

public long refresh;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.airvisualnode.internal.AirVisualNodeBindingConstants;
import org.openhab.binding.airvisualnode.internal.config.AirVisualNodeConfig;
import org.openhab.core.config.discovery.AbstractDiscoveryService;
Expand All @@ -39,16 +41,18 @@
*
* @author Victor Antonovich - Initial contribution
*/
@NonNullByDefault
@Component(service = DiscoveryService.class)
public class AirVisualNodeDiscoveryService extends AbstractDiscoveryService {

private final Logger logger = LoggerFactory.getLogger(AirVisualNodeDiscoveryService.class);
private static final int REFRESH_MINUTES = 5;

public static final String AVISUAL_WORKGROUP_NAME = "MSHOME";

private static final Pattern AVISUAL_NAME_PATTERN = Pattern.compile("^AVISUAL-([^/]+)$");

private ScheduledFuture<?> backgroundDiscoveryFuture;
private @Nullable ScheduledFuture<?> backgroundDiscoveryFuture;

public AirVisualNodeDiscoveryService() {
super(Collections.singleton(AirVisualNodeBindingConstants.THING_TYPE_AVNODE), 600, true);
Expand All @@ -63,19 +67,20 @@ protected void startScan() {
@Override
protected void startBackgroundDiscovery() {
logger.debug("Starting background discovery");
backgroundDiscoveryFuture = scheduler.scheduleWithFixedDelay(this::scan, 0, 5, TimeUnit.MINUTES);
ScheduledFuture<?> localDiscoveryFuture = backgroundDiscoveryFuture;
if (localDiscoveryFuture == null || localDiscoveryFuture.isCancelled()) {
backgroundDiscoveryFuture = scheduler.scheduleWithFixedDelay(this::scan, 0, REFRESH_MINUTES,
TimeUnit.MINUTES);
}
}

@Override
protected void stopBackgroundDiscovery() {
logger.debug("Stopping background discovery");
cancelBackgroundDiscoveryFuture();
super.stopBackgroundDiscovery();
}

private void cancelBackgroundDiscoveryFuture() {
if (backgroundDiscoveryFuture != null && !backgroundDiscoveryFuture.isDone()) {
backgroundDiscoveryFuture.cancel(true);
ScheduledFuture<?> localDiscoveryFuture = backgroundDiscoveryFuture;
if (localDiscoveryFuture != null) {
localDiscoveryFuture.cancel(true);
backgroundDiscoveryFuture = null;
}
}
Expand All @@ -87,7 +92,7 @@ private void scan() {
String workgroupUrl = "smb://" + AVISUAL_WORKGROUP_NAME + "/";
workgroupMembers = new SmbFile(workgroupUrl).listFiles();
} catch (IOException e) {
// Can't get workgroup member list
logger.debug("IOException while trying to get workgroup member list", e);
return;
}

Expand All @@ -105,6 +110,10 @@ private void scan() {
// Extract the Node serial number from device name
String nodeSerialNumber = m.group(1);

if (nodeSerialNumber != null) {
logger.debug("Extracting the Node serial number failed");
return;
}
// The Node Thing UID is serial number converted to lower case
ThingUID thingUID = new ThingUID(AirVisualNodeBindingConstants.THING_TYPE_AVNODE,
nodeSerialNumber.toLowerCase());
Expand All @@ -119,14 +128,19 @@ private void scan() {

// Create discovery result
String nodeAddress = nodeNbtAddress.getInetAddress().getHostAddress();
DiscoveryResult result = DiscoveryResultBuilder.create(thingUID)
.withProperty(AirVisualNodeConfig.ADDRESS, nodeAddress)
.withRepresentationProperty(AirVisualNodeConfig.ADDRESS)
.withLabel("AirVisual Node (" + nodeSerialNumber + ")").build();
thingDiscovered(result);
if (nodeAddress != null) {
DiscoveryResult result = DiscoveryResultBuilder.create(thingUID)
.withProperty(AirVisualNodeConfig.ADDRESS, nodeAddress)
.withRepresentationProperty(AirVisualNodeConfig.ADDRESS)
.withLabel("AirVisual Node (" + nodeSerialNumber + ")").build();
thingDiscovered(result);
} else {
logger.debug("Getting the node address from the host failed");
}
} catch (UnknownHostException e) {
logger.debug("The Node address resolving failed ", e);
}

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json;
package org.openhab.binding.airvisualnode.internal.dto;

/**
* Date and time / timestamp data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json;
package org.openhab.binding.airvisualnode.internal.dto;

import org.eclipse.jdt.annotation.NonNullByDefault;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json;
package org.openhab.binding.airvisualnode.internal.dto;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.airvisualnode.internal.json.airvisual.Settings;
import org.openhab.binding.airvisualnode.internal.json.airvisual.Status;
import org.openhab.binding.airvisualnode.internal.dto.airvisual.Settings;
import org.openhab.binding.airvisualnode.internal.dto.airvisual.Status;

/**
* Interface for AirVisual and AirVisual Pro models
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json;
package org.openhab.binding.airvisualnode.internal.dto;

/**
* Power saving time data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json;
package org.openhab.binding.airvisualnode.internal.dto;

/**
* Power saving time slot data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisual;
package org.openhab.binding.airvisualnode.internal.dto.airvisual;

import org.openhab.binding.airvisualnode.internal.json.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.dto.MeasurementsInterface;

import com.google.gson.annotations.SerializedName;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,19 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisual;
package org.openhab.binding.airvisualnode.internal.dto.airvisual;

import org.openhab.binding.airvisualnode.internal.json.DateAndTime;
import org.openhab.binding.airvisualnode.internal.json.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.json.NodeDataInterface;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.airvisualnode.internal.dto.DateAndTime;
import org.openhab.binding.airvisualnode.internal.dto.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.dto.NodeDataInterface;

/**
* Top level object for AirVisual Node JSON data.
*
* @author Victor Antonovich - Initial contribution
*/
@NonNullByDefault
public class NodeData implements NodeDataInterface {

private DateAndTime dateAndTime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisual;
package org.openhab.binding.airvisualnode.internal.dto.airvisual;

import java.util.List;

import org.openhab.binding.airvisualnode.internal.json.PowerSavingTime;
import org.openhab.binding.airvisualnode.internal.json.PowerSavingTimeSlot;
import org.openhab.binding.airvisualnode.internal.dto.PowerSavingTime;
import org.openhab.binding.airvisualnode.internal.dto.PowerSavingTimeSlot;

import com.google.gson.annotations.SerializedName;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisual;
package org.openhab.binding.airvisualnode.internal.dto.airvisual;

/**
* Settings data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisual;
package org.openhab.binding.airvisualnode.internal.dto.airvisual;

/**
* Status data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

import org.openhab.binding.airvisualnode.internal.json.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.dto.MeasurementsInterface;

import com.google.gson.annotations.SerializedName;

Expand Down Expand Up @@ -54,7 +54,6 @@ public class Measurements implements MeasurementsInterface {

public Measurements(int co2Ppm, int humidityRH, int pm25AQICN, int pm25AQIUS, float pm01Ugm3, float pm10Ugm3,
float pm25Ugm3, float temperatureC, float temperatureF, int vocPpb) {

this.co2Ppm = co2Ppm;
this.humidityRH = humidityRH;
this.pm25AQICN = pm25AQICN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

import java.util.List;

import org.openhab.binding.airvisualnode.internal.json.PowerSavingTime;
import org.openhab.binding.airvisualnode.internal.json.PowerSavingTimeSlot;
import org.openhab.binding.airvisualnode.internal.dto.PowerSavingTime;
import org.openhab.binding.airvisualnode.internal.dto.PowerSavingTimeSlot;

import com.google.gson.annotations.SerializedName;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,23 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

import java.util.List;

import org.openhab.binding.airvisualnode.internal.json.DateAndTime;
import org.openhab.binding.airvisualnode.internal.json.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.json.NodeDataInterface;
import org.openhab.binding.airvisualnode.internal.json.airvisual.Settings;
import org.openhab.binding.airvisualnode.internal.json.airvisual.Status;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.airvisualnode.internal.dto.DateAndTime;
import org.openhab.binding.airvisualnode.internal.dto.MeasurementsInterface;
import org.openhab.binding.airvisualnode.internal.dto.NodeDataInterface;
import org.openhab.binding.airvisualnode.internal.dto.airvisual.Settings;
import org.openhab.binding.airvisualnode.internal.dto.airvisual.Status;

/**
* Top level object for AirVisual Node JSON data.
*
* @author Victor Antonovich - Initial contribution
*/
@NonNullByDefault
public class ProNodeData implements NodeDataInterface {

private DateAndTime dateAndTime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

/**
* Sensor Usage/Life data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

/**
* Sensor Operating Mode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

import org.openhab.binding.airvisualnode.internal.json.airvisual.PowerSaving;
import org.openhab.binding.airvisualnode.internal.dto.airvisual.PowerSaving;

/**
* Settings data.
Expand Down Expand Up @@ -41,7 +41,6 @@ public Settings(String followMode, String followedStation, boolean isAqiUsa, boo
boolean isIndoor, boolean isLcdOn, boolean isNetworkTime, boolean isTemperatureCelsius, String language,
int lcdBrightness, String nodeName, PowerSaving powerSaving, SensorMode sensorMode, String speedUnit,
String timezone) {

this.followMode = followMode;
this.followedStation = followedStation;
this.isAqiUsa = isAqiUsa;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.airvisualnode.internal.json.airvisualpro;
package org.openhab.binding.airvisualnode.internal.dto.airvisualpro;

/**
* Status data.
Expand Down
Loading

0 comments on commit f7dc40d

Please sign in to comment.