Implement Driver models, schema and database

This commit is contained in:
Abyss777
2017-07-11 16:32:39 +05:00
parent 85f7eae47e
commit aeb9dace63
7 changed files with 312 additions and 0 deletions

65
schema/changelog-3.14.xml Normal file
View File

@@ -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>

View File

@@ -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>

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}