diff options
-rw-r--r-- | schema/changelog-3.14.xml | 65 | ||||
-rw-r--r-- | schema/changelog-master.xml | 1 | ||||
-rw-r--r-- | src/org/traccar/database/DataManager.java | 84 | ||||
-rw-r--r-- | src/org/traccar/model/DeviceDriver.java | 41 | ||||
-rw-r--r-- | src/org/traccar/model/Driver.java | 40 | ||||
-rw-r--r-- | src/org/traccar/model/DriverPermission.java | 40 | ||||
-rw-r--r-- | src/org/traccar/model/GroupDriver.java | 41 |
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; + } + +} |