aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2017-07-11 16:32:39 +0500
committerAbyss777 <abyss@fox5.ru>2017-07-11 16:32:39 +0500
commitaeb9dace63d4c9ae02af80824fe157fa43129595 (patch)
treea5ab84b414ec1ac5ee75259bc9f5d7ff8db72ad6
parent85f7eae47ec4bf6b269305a05a696f9acce31fd5 (diff)
downloadtraccar-server-aeb9dace63d4c9ae02af80824fe157fa43129595.tar.gz
traccar-server-aeb9dace63d4c9ae02af80824fe157fa43129595.tar.bz2
traccar-server-aeb9dace63d4c9ae02af80824fe157fa43129595.zip
Implement Driver models, schema and database
-rw-r--r--schema/changelog-3.14.xml65
-rw-r--r--schema/changelog-master.xml1
-rw-r--r--src/org/traccar/database/DataManager.java84
-rw-r--r--src/org/traccar/model/DeviceDriver.java41
-rw-r--r--src/org/traccar/model/Driver.java40
-rw-r--r--src/org/traccar/model/DriverPermission.java40
-rw-r--r--src/org/traccar/model/GroupDriver.java41
7 files changed, 312 insertions, 0 deletions
diff --git a/schema/changelog-3.14.xml b/schema/changelog-3.14.xml
new file mode 100644
index 000000000..7965bc020
--- /dev/null
+++ b/schema/changelog-3.14.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<databaseChangeLog
+ xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
+ http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"
+ logicalFilePath="changelog-3.14">
+
+ <changeSet author="author" id="changelog-3.14">
+
+ <createTable tableName="drivers">
+ <column name="id" type="INT" autoIncrement="true">
+ <constraints primaryKey="true" />
+ </column>
+ <column name="name" type="VARCHAR(128)">
+ <constraints nullable="false" />
+ </column>
+ <column name="uniqueid" type="VARCHAR(128)">
+ <constraints nullable="false" />
+ </column>
+ <column name="attributes" type="VARCHAR(4000)">
+ <constraints nullable="false" />
+ </column>
+ </createTable>
+
+ <addUniqueConstraint tableName="drivers" columnNames="uniqueid" constraintName="uk_driver_uniqueid" />
+
+ <createTable tableName="user_driver">
+ <column name="userid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ <column name="driverid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ </createTable>
+
+ <addForeignKeyConstraint baseTableName="user_driver" baseColumnNames="userid" constraintName="fk_user_driver_userid" referencedTableName="users" referencedColumnNames="id" onDelete="CASCADE" />
+ <addForeignKeyConstraint baseTableName="user_driver" baseColumnNames="driverid" constraintName="fk_user_driver_driverid" referencedTableName="drivers" referencedColumnNames="id" onDelete="CASCADE" />
+
+ <createTable tableName="group_driver">
+ <column name="groupid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ <column name="driverid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ </createTable>
+
+ <addForeignKeyConstraint baseTableName="group_driver" baseColumnNames="groupid" constraintName="fk_group_driver_groupid" referencedTableName="groups" referencedColumnNames="id" onDelete="CASCADE" />
+ <addForeignKeyConstraint baseTableName="group_driver" baseColumnNames="driverid" constraintName="fk_group_driver_driverid" referencedTableName="drivers" referencedColumnNames="id" onDelete="CASCADE" />
+
+ <createTable tableName="device_driver">
+ <column name="deviceid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ <column name="driverid" type="INT">
+ <constraints nullable="false" />
+ </column>
+ </createTable>
+
+ <addForeignKeyConstraint baseTableName="device_driver" baseColumnNames="deviceid" constraintName="fk_device_driver_deviceid" referencedTableName="devices" referencedColumnNames="id" onDelete="CASCADE" />
+ <addForeignKeyConstraint baseTableName="device_driver" baseColumnNames="driverid" constraintName="fk_device_driver_driverid" referencedTableName="drivers" referencedColumnNames="id" onDelete="CASCADE" />
+
+ </changeSet>
+</databaseChangeLog> \ No newline at end of file
diff --git a/schema/changelog-master.xml b/schema/changelog-master.xml
index ba93d105f..d1b51b40e 100644
--- a/schema/changelog-master.xml
+++ b/schema/changelog-master.xml
@@ -14,4 +14,5 @@
<include file="changelog-3.10.xml" relativeToChangelogFile="true" />
<include file="changelog-3.11.xml" relativeToChangelogFile="true" />
<include file="changelog-3.12.xml" relativeToChangelogFile="true" />
+ <include file="changelog-3.14.xml" relativeToChangelogFile="true" />
</databaseChangeLog>
diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java
index dd65289e4..1c2a66bcf 100644
--- a/src/org/traccar/database/DataManager.java
+++ b/src/org/traccar/database/DataManager.java
@@ -44,11 +44,15 @@ import org.traccar.model.CalendarPermission;
import org.traccar.model.Attribute;
import org.traccar.model.Device;
import org.traccar.model.DeviceAttribute;
+import org.traccar.model.DeviceDriver;
import org.traccar.model.DevicePermission;
+import org.traccar.model.Driver;
+import org.traccar.model.DriverPermission;
import org.traccar.model.Event;
import org.traccar.model.Geofence;
import org.traccar.model.Group;
import org.traccar.model.GroupAttribute;
+import org.traccar.model.GroupDriver;
import org.traccar.model.GroupGeofence;
import org.traccar.model.GroupPermission;
import org.traccar.model.Notification;
@@ -638,4 +642,84 @@ public class DataManager {
.executeUpdate();
}
+ public Collection<Driver> getDrivers() throws SQLException {
+ return QueryBuilder.create(dataSource, getQuery("database.selectDrivers"))
+ .executeQuery(Driver.class);
+ }
+
+ public void addDriver(Driver driver) throws SQLException {
+ driver.setId(QueryBuilder.create(dataSource, getQuery("database.insertDriver"), true)
+ .setObject(driver)
+ .executeUpdate());
+ }
+
+ public void updateDriver(Driver driver) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.updateDriver"))
+ .setObject(driver)
+ .executeUpdate();
+ }
+
+ public void removeDriver(long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.deleteDriver"))
+ .setLong("id", driverId)
+ .executeUpdate();
+ }
+
+ public Collection<DriverPermission> getDriverPermissions() throws SQLException {
+ return QueryBuilder.create(dataSource, getQuery("database.selectDriverPermissions"))
+ .executeQuery(DriverPermission.class);
+ }
+
+ public void linkDriver(long userId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.linkDriver"))
+ .setLong("userId", userId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
+ public void unlinkDriver(long userId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.unlinkDriver"))
+ .setLong("userId", userId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
+ public Collection<GroupDriver> getGroupDrivers() throws SQLException {
+ return QueryBuilder.create(dataSource, getQuery("database.selectGroupDrivers"))
+ .executeQuery(GroupDriver.class);
+ }
+
+ public void linkGroupDriver(long groupId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.linkGroupDriver"))
+ .setLong("groupId", groupId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
+ public void unlinkGroupDriver(long groupId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.unlinkGroupDriver"))
+ .setLong("groupId", groupId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
+ public Collection<DeviceDriver> getDeviceDrivers() throws SQLException {
+ return QueryBuilder.create(dataSource, getQuery("database.selectDeviceDrivers"))
+ .executeQuery(DeviceDriver.class);
+ }
+
+ public void linkDeviceDriver(long deviceId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.linkDeviceDriver"))
+ .setLong("deviceId", deviceId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
+ public void unlinkDeviceDriver(long deviceId, long driverId) throws SQLException {
+ QueryBuilder.create(dataSource, getQuery("database.unlinkDeviceDriver"))
+ .setLong("deviceId", deviceId)
+ .setLong("driverId", driverId)
+ .executeUpdate();
+ }
+
}
diff --git a/src/org/traccar/model/DeviceDriver.java b/src/org/traccar/model/DeviceDriver.java
new file mode 100644
index 000000000..2008aaddf
--- /dev/null
+++ b/src/org/traccar/model/DeviceDriver.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2017 Andrey Kunitsyn (andrey@traccar.org)
+ *
+ * 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.model;
+
+public class DeviceDriver {
+
+ private long deviceId;
+
+ public long getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(long deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ private long driverId;
+
+ public long getDriverId() {
+ return driverId;
+ }
+
+ public void setDriverId(long driverId) {
+ this.driverId = driverId;
+ }
+
+}
diff --git a/src/org/traccar/model/Driver.java b/src/org/traccar/model/Driver.java
new file mode 100644
index 000000000..7a51d9151
--- /dev/null
+++ b/src/org/traccar/model/Driver.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2017 Andrey Kunitsyn (andrey@traccar.org)
+ *
+ * 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.model;
+
+public class Driver extends Extensible {
+
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ private String uniqueId;
+
+ public String getUniqueId() {
+ return uniqueId;
+ }
+
+ public void setUniqueId(String uniqueId) {
+ this.uniqueId = uniqueId;
+ }
+}
diff --git a/src/org/traccar/model/DriverPermission.java b/src/org/traccar/model/DriverPermission.java
new file mode 100644
index 000000000..cdbcc4a50
--- /dev/null
+++ b/src/org/traccar/model/DriverPermission.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2017 Andrey Kunitsyn (andrey@traccar.org)
+ *
+ * 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.model;
+
+public class DriverPermission {
+
+ private long userId;
+
+ public long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(long userId) {
+ this.userId = userId;
+ }
+
+ private long driverId;
+
+ public long getDriverId() {
+ return driverId;
+ }
+
+ public void setDriverId(long driverId) {
+ this.driverId = driverId;
+ }
+}
diff --git a/src/org/traccar/model/GroupDriver.java b/src/org/traccar/model/GroupDriver.java
new file mode 100644
index 000000000..91b205923
--- /dev/null
+++ b/src/org/traccar/model/GroupDriver.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2017 Andrey Kunitsyn (andrey@traccar.org)
+ *
+ * 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.model;
+
+public class GroupDriver {
+
+ private long groupId;
+
+ public long getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(long groupId) {
+ this.groupId = groupId;
+ }
+
+ private long driverId;
+
+ public long getDriverId() {
+ return driverId;
+ }
+
+ public void setDriverId(long driverId) {
+ this.driverId = driverId;
+ }
+
+}