From 16ec66e18af7c421e80591cf6c463c52980665ec Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Thu, 11 Aug 2016 09:51:40 +0500 Subject: - Added IgnitionEventHandler - Added unit test for some EventHandlers - Changed a bit IdentityManager to fit EventHandlerTest --- src/org/traccar/events/GeofenceEventHandler.java | 2 +- src/org/traccar/events/IgnitionEventHandler.java | 67 +++++++++++++++++++++++ src/org/traccar/events/MotionEventHandler.java | 4 +- src/org/traccar/events/OverspeedEventHandler.java | 4 +- 4 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 src/org/traccar/events/IgnitionEventHandler.java (limited to 'src/org/traccar/events') diff --git a/src/org/traccar/events/GeofenceEventHandler.java b/src/org/traccar/events/GeofenceEventHandler.java index a0291dcfa..6126331bd 100644 --- a/src/org/traccar/events/GeofenceEventHandler.java +++ b/src/org/traccar/events/GeofenceEventHandler.java @@ -40,7 +40,7 @@ public class GeofenceEventHandler extends BaseEventHandler { if (device == null) { return null; } - if (!Context.getDeviceManager().isLatestPosition(position) || !position.getValid()) { + if (!Context.getIdentityManager().isLatestPosition(position) || !position.getValid()) { return null; } diff --git a/src/org/traccar/events/IgnitionEventHandler.java b/src/org/traccar/events/IgnitionEventHandler.java new file mode 100644 index 000000000..297049ccd --- /dev/null +++ b/src/org/traccar/events/IgnitionEventHandler.java @@ -0,0 +1,67 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * 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.traccar.events; + +import java.util.ArrayList; +import java.util.Collection; + +import org.traccar.BaseEventHandler; +import org.traccar.Context; +import org.traccar.model.Device; +import org.traccar.model.Event; +import org.traccar.model.Position; + +public class IgnitionEventHandler extends BaseEventHandler { + + @Override + protected Collection analyzePosition(Position position) { + Device device = Context.getIdentityManager().getDeviceById(position.getDeviceId()); + if (device == null) { + return null; + } + if (!Context.getIdentityManager().isLatestPosition(position) || !position.getValid()) { + return null; + } + + Collection result = null; + + boolean ignition = false; + Object ignitionObject = position.getAttributes().get(Position.KEY_IGNITION); + if (ignitionObject != null && Boolean.parseBoolean(ignitionObject.toString())) { + ignition = true; + } + + boolean oldIgnition = false; + Object oldIgnitionObject = null; + Position lastPosition = Context.getIdentityManager().getLastPosition(position.getDeviceId()); + if (lastPosition != null) { + oldIgnitionObject = lastPosition.getAttributes().get(Position.KEY_IGNITION); + } + if (oldIgnitionObject != null && Boolean.parseBoolean(oldIgnitionObject.toString())) { + oldIgnition = true; + } + + if (ignition && !oldIgnition) { + result = new ArrayList<>(); + result.add(new Event(Event.TYPE_IGNITION_ON, position.getDeviceId(), position.getId())); + } else if (!ignition && oldIgnition) { + result = new ArrayList<>(); + result.add(new Event(Event.TYPE_IGNITION_OFF, position.getDeviceId(), position.getId())); + } + return result; + } + +} diff --git a/src/org/traccar/events/MotionEventHandler.java b/src/org/traccar/events/MotionEventHandler.java index ddb99185f..7178f7036 100644 --- a/src/org/traccar/events/MotionEventHandler.java +++ b/src/org/traccar/events/MotionEventHandler.java @@ -35,14 +35,14 @@ public class MotionEventHandler extends BaseEventHandler { if (device == null) { return null; } - if (!Context.getDeviceManager().isLatestPosition(position) || !position.getValid()) { + if (!Context.getIdentityManager().isLatestPosition(position) || !position.getValid()) { return null; } Collection result = null; double speed = position.getSpeed(); double oldSpeed = 0; - Position lastPosition = Context.getDeviceManager().getLastPosition(position.getDeviceId()); + Position lastPosition = Context.getIdentityManager().getLastPosition(position.getDeviceId()); if (lastPosition != null) { oldSpeed = lastPosition.getSpeed(); } diff --git a/src/org/traccar/events/OverspeedEventHandler.java b/src/org/traccar/events/OverspeedEventHandler.java index dbdb01ffb..c739348eb 100644 --- a/src/org/traccar/events/OverspeedEventHandler.java +++ b/src/org/traccar/events/OverspeedEventHandler.java @@ -42,7 +42,7 @@ public class OverspeedEventHandler extends BaseEventHandler { if (device == null) { return null; } - if (!Context.getDeviceManager().isLatestPosition(position) || !position.getValid()) { + if (!Context.getIdentityManager().isLatestPosition(position) || !position.getValid()) { return null; } @@ -58,7 +58,7 @@ public class OverspeedEventHandler extends BaseEventHandler { } double oldSpeed = 0; if (notRepeat) { - Position lastPosition = Context.getDeviceManager().getLastPosition(position.getDeviceId()); + Position lastPosition = Context.getIdentityManager().getLastPosition(position.getDeviceId()); if (lastPosition != null) { oldSpeed = lastPosition.getSpeed(); } -- cgit v1.2.3 From 8fa931a45755b14f61bcc699296337efefc46160 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 12 Aug 2016 11:19:34 +0500 Subject: - Fixed casting ignition object to boolean - Renamed motorHours to engineHours - Changed engine hours formatter to just hours - Added previously missed license headers to reports - Added Andrey Kunitsyn to some license headers --- src/org/traccar/events/IgnitionEventHandler.java | 10 ++++---- src/org/traccar/reports/Events.java | 15 ++++++++++++ src/org/traccar/reports/ReportUtils.java | 15 ++++++++++++ src/org/traccar/reports/Route.java | 15 ++++++++++++ src/org/traccar/reports/Summary.java | 17 +++++++++++++- src/org/traccar/reports/model/SummaryReport.java | 29 ++++++++++++++++++------ web/app/AttributeFormatter.js | 18 ++++----------- web/app/model/ReportSummary.js | 2 +- web/app/view/ReportController.js | 6 ++--- web/l10n/en.json | 5 +--- 10 files changed, 98 insertions(+), 34 deletions(-) (limited to 'src/org/traccar/events') diff --git a/src/org/traccar/events/IgnitionEventHandler.java b/src/org/traccar/events/IgnitionEventHandler.java index 297049ccd..ae813f77b 100644 --- a/src/org/traccar/events/IgnitionEventHandler.java +++ b/src/org/traccar/events/IgnitionEventHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,8 +40,8 @@ public class IgnitionEventHandler extends BaseEventHandler { boolean ignition = false; Object ignitionObject = position.getAttributes().get(Position.KEY_IGNITION); - if (ignitionObject != null && Boolean.parseBoolean(ignitionObject.toString())) { - ignition = true; + if (ignitionObject != null && ignitionObject instanceof Boolean) { + ignition = (Boolean) ignitionObject; } boolean oldIgnition = false; @@ -50,8 +50,8 @@ public class IgnitionEventHandler extends BaseEventHandler { if (lastPosition != null) { oldIgnitionObject = lastPosition.getAttributes().get(Position.KEY_IGNITION); } - if (oldIgnitionObject != null && Boolean.parseBoolean(oldIgnitionObject.toString())) { - oldIgnition = true; + if (oldIgnitionObject != null && oldIgnitionObject instanceof Boolean) { + oldIgnition = (Boolean) oldIgnitionObject; } if (ignition && !oldIgnition) { diff --git a/src/org/traccar/reports/Events.java b/src/org/traccar/reports/Events.java index fbbd3131b..c8233e4eb 100644 --- a/src/org/traccar/reports/Events.java +++ b/src/org/traccar/reports/Events.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * + * 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.traccar.reports; import java.sql.SQLException; diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java index 5041871f7..76f0ed631 100644 --- a/src/org/traccar/reports/ReportUtils.java +++ b/src/org/traccar/reports/ReportUtils.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * + * 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.traccar.reports; import java.util.ArrayList; diff --git a/src/org/traccar/reports/Route.java b/src/org/traccar/reports/Route.java index 9622151e7..282a6e3f3 100644 --- a/src/org/traccar/reports/Route.java +++ b/src/org/traccar/reports/Route.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * + * 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.traccar.reports; import java.sql.SQLException; diff --git a/src/org/traccar/reports/Summary.java b/src/org/traccar/reports/Summary.java index 2c777b9bb..5c6fa8423 100644 --- a/src/org/traccar/reports/Summary.java +++ b/src/org/traccar/reports/Summary.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * + * 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.traccar.reports; import java.math.BigDecimal; @@ -38,7 +53,7 @@ public final class Summary { && previousPosition.getAttributes().get(Position.KEY_IGNITION) != null && Boolean.parseBoolean(previousPosition.getAttributes() .get(Position.KEY_IGNITION).toString())) { - result.addMotorHours(position.getFixTime().getTime() + result.addEngineHours(position.getFixTime().getTime() - previousPosition.getFixTime().getTime()); } } diff --git a/src/org/traccar/reports/model/SummaryReport.java b/src/org/traccar/reports/model/SummaryReport.java index 01006558f..dfab2f3b8 100644 --- a/src/org/traccar/reports/model/SummaryReport.java +++ b/src/org/traccar/reports/model/SummaryReport.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * + * 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.traccar.reports.model; public class SummaryReport { @@ -48,14 +63,14 @@ public class SummaryReport { } } - private long motorHours; - public long getMotorHours() { - return motorHours; + private long engineHours; + public long getEngineHours() { + return engineHours; } - public void setMotorHours(long motorHours) { - this.motorHours = motorHours; + public void setEngineHours(long engineHours) { + this.engineHours = engineHours; } - public void addMotorHours(long motorHours) { - this.motorHours += motorHours; + public void addEngineHours(long engineHours) { + this.engineHours += engineHours; } } diff --git a/web/app/AttributeFormatter.js b/web/app/AttributeFormatter.js index 7d008dc64..2e0edb6d6 100644 --- a/web/app/AttributeFormatter.js +++ b/web/app/AttributeFormatter.js @@ -34,17 +34,9 @@ Ext.define('Traccar.AttributeFormatter', { return Ext.getStore('DistanceUnits').formatValue(value, Traccar.app.getPreference('distanceUnit')); }, - intervalFormatter: function (value) { - var days, hours, minutes, seconds; - seconds = Math.floor(value / 1000); - days = Math.floor(seconds / 86400); - hours = ('0' + Math.floor(seconds / 3600) % 24).slice(-2); - minutes = ('0' + Math.floor(seconds / 60) % 60).slice(-2); - seconds = ('0' + seconds % 60).slice(-2); - return (days > 0 ? days + Strings.sharedDayAbbreviation + ' ' : '') - + (hours > 0 ? hours + Strings.sharedHourAbbreviation + ' ' : '') - + (minutes > 0 ? minutes + Strings.sharedMinuteAbbreviation + ' ' : '') - + (seconds > 60 ? seconds : seconds + Strings.sharedSecondAbbreviation); + hoursFormatter: function (value) { + var hours = value / 3600000; + return (hours.toFixed(2) + ' ' + Strings.sharedHourAbbreviation); }, defaultFormatter: function (value) { @@ -71,8 +63,8 @@ Ext.define('Traccar.AttributeFormatter', { return this.courseFormatter; } else if (key === 'distance' || key === 'odometer') { return this.distanceFormatter; - } else if (key === 'interval') { - return this.intervalFormatter; + } else if (key === 'hours') { + return this.hoursFormatter; } else { return this.defaultFormatter; } diff --git a/web/app/model/ReportSummary.js b/web/app/model/ReportSummary.js index 2017d164a..39f0c498c 100644 --- a/web/app/model/ReportSummary.js +++ b/web/app/model/ReportSummary.js @@ -34,7 +34,7 @@ Ext.define('Traccar.model.ReportSummary', { name: 'distance', type: 'float' }, { - name: 'motorHours', + name: 'engineHours', type: 'int' }] }); diff --git a/web/app/view/ReportController.js b/web/app/view/ReportController.js index 5ac84e8e2..61e278993 100644 --- a/web/app/view/ReportController.js +++ b/web/app/view/ReportController.js @@ -228,10 +228,10 @@ Ext.define('Traccar.view.ReportController', { flex: 1, renderer: Traccar.AttributeFormatter.getFormatter('speed') }, { - text: Strings.reportMotorHours, - dataIndex: 'motorHours', + text: Strings.reportEngineHours, + dataIndex: 'engineHours', flex: 1, - renderer: Traccar.AttributeFormatter.getFormatter('interval') + renderer: Traccar.AttributeFormatter.getFormatter('hours') }]; if (newValue === 'route') { diff --git a/web/l10n/en.json b/web/l10n/en.json index 11088e9bf..af4f2363e 100644 --- a/web/l10n/en.json +++ b/web/l10n/en.json @@ -26,10 +26,7 @@ "sharedMute": "Mute", "sharedType": "Type", "sharedDistance": "Distance", - "sharedDayAbbreviation": "d", "sharedHourAbbreviation": "h", - "sharedMinuteAbbreviation": "m", - "sharedSecondAbbreviation": "s", "errorTitle": "Error", "errorUnknown": "Unknown error", "errorConnection": "Connection error", @@ -146,5 +143,5 @@ "reportDeviceName": "Device Name", "reportAverageSpeed": "Average Speed", "reportMaximumSpeed": "Maximum Speed", - "reportMotorHours": "Motor Hours" + "reportEngineHours": "Engine Hours" } \ No newline at end of file -- cgit v1.2.3 From 9a55f2b000956717d5caf6fb53793264c0376ce7 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 12 Aug 2016 11:40:03 +0500 Subject: - Removed decimal part - Fixed license header --- src/org/traccar/events/IgnitionEventHandler.java | 3 ++- src/org/traccar/reports/Events.java | 3 ++- src/org/traccar/reports/ReportUtils.java | 3 ++- src/org/traccar/reports/Route.java | 3 ++- src/org/traccar/reports/Summary.java | 3 ++- src/org/traccar/reports/model/SummaryReport.java | 3 ++- web/app/AttributeFormatter.js | 4 ++-- 7 files changed, 14 insertions(+), 8 deletions(-) (limited to 'src/org/traccar/events') diff --git a/src/org/traccar/events/IgnitionEventHandler.java b/src/org/traccar/events/IgnitionEventHandler.java index ae813f77b..e241e450b 100644 --- a/src/org/traccar/events/IgnitionEventHandler.java +++ b/src/org/traccar/events/IgnitionEventHandler.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/org/traccar/reports/Events.java b/src/org/traccar/reports/Events.java index c8233e4eb..ed7e9e411 100644 --- a/src/org/traccar/reports/Events.java +++ b/src/org/traccar/reports/Events.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java index 76f0ed631..9f6d34860 100644 --- a/src/org/traccar/reports/ReportUtils.java +++ b/src/org/traccar/reports/ReportUtils.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/org/traccar/reports/Route.java b/src/org/traccar/reports/Route.java index 282a6e3f3..45b81cd8c 100644 --- a/src/org/traccar/reports/Route.java +++ b/src/org/traccar/reports/Route.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/org/traccar/reports/Summary.java b/src/org/traccar/reports/Summary.java index 5c6fa8423..68733ded6 100644 --- a/src/org/traccar/reports/Summary.java +++ b/src/org/traccar/reports/Summary.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/org/traccar/reports/model/SummaryReport.java b/src/org/traccar/reports/model/SummaryReport.java index dfab2f3b8..271d0c7c2 100644 --- a/src/org/traccar/reports/model/SummaryReport.java +++ b/src/org/traccar/reports/model/SummaryReport.java @@ -1,5 +1,6 @@ /* - * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com), Andrey Kunitsyn (abyss@fox5.ru) + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2016 Andrey Kunitsyn (abyss@fox5.ru) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/web/app/AttributeFormatter.js b/web/app/AttributeFormatter.js index 2e0edb6d6..274b8d028 100644 --- a/web/app/AttributeFormatter.js +++ b/web/app/AttributeFormatter.js @@ -35,8 +35,8 @@ Ext.define('Traccar.AttributeFormatter', { }, hoursFormatter: function (value) { - var hours = value / 3600000; - return (hours.toFixed(2) + ' ' + Strings.sharedHourAbbreviation); + var hours = Math.round(value / 3600000); + return (hours + ' ' + Strings.sharedHourAbbreviation); }, defaultFormatter: function (value) { -- cgit v1.2.3