aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2014-10-09 13:24:47 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2014-10-09 13:24:47 +1300
commit4f5f815f88e81000510ef2544e3e392fd7465d8e (patch)
tree3e36831dacd62eb36242973517ff41fa069b272a
parent21d69f45cd5badf52e175fc234c5c7bd3c2aeb35 (diff)
downloadtraccar-server-4f5f815f88e81000510ef2544e3e392fd7465d8e.tar.gz
traccar-server-4f5f815f88e81000510ef2544e3e392fd7465d8e.tar.bz2
traccar-server-4f5f815f88e81000510ef2544e3e392fd7465d8e.zip
Integrate c3p0 database library
-rw-r--r--default.cfg1
-rw-r--r--pom.xml5
-rw-r--r--src/org/traccar/BasePipelineFactory.java2
-rw-r--r--src/org/traccar/BaseProtocolDecoder.java2
-rw-r--r--src/org/traccar/ServerManager.java7
-rw-r--r--src/org/traccar/TrackerEventHandler.java2
-rw-r--r--src/org/traccar/database/DataManager.java (renamed from src/org/traccar/model/DatabaseDataManager.java)152
-rw-r--r--src/org/traccar/database/NamedParameterStatement.java (renamed from src/org/traccar/helper/NamedParameterStatement.java)117
-rw-r--r--src/org/traccar/helper/AdvancedConnection.java61
-rw-r--r--src/org/traccar/http/WebServer.java48
-rw-r--r--src/org/traccar/model/DataManager.java37
-rw-r--r--src/org/traccar/protocol/ApelProtocolDecoder.java10
-rw-r--r--src/org/traccar/protocol/ProgressProtocolDecoder.java20
-rw-r--r--test/org/traccar/helper/TestDataManager.java18
14 files changed, 135 insertions, 347 deletions
diff --git a/default.cfg b/default.cfg
index a684f7631..4983bac16 100644
--- a/default.cfg
+++ b/default.cfg
@@ -7,7 +7,6 @@
<!-- Global configuration -->
<!--<entry key='database.driverFile'>/home/user/Documents/traccar/hsqldb.jar</entry>-->
<entry key='database.driver'>org.h2.Driver</entry>
- <entry key='database.dataSource'>org.h2.jdbcx.JdbcDataSource</entry>
<entry key='database.url'>jdbc:h2:/home/user/Documents/traccar/target/database</entry>
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
diff --git a/pom.xml b/pom.xml
index 86c0e4fc4..6ede1e533 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,11 @@
<version>9.3-1102-jdbc4</version>
</dependency>
<dependency>
+ <groupId>com.mchange</groupId>
+ <artifactId>c3p0</artifactId>
+ <version>0.9.2.1</version>
+ </dependency>
+ <dependency>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
<version>3.9.2.Final</version>
diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java
index e1f1e10e5..83207b91f 100644
--- a/src/org/traccar/BasePipelineFactory.java
+++ b/src/org/traccar/BasePipelineFactory.java
@@ -23,7 +23,7 @@ import org.jboss.netty.handler.logging.LoggingHandler;
import org.jboss.netty.handler.timeout.IdleStateHandler;
import org.traccar.geocode.ReverseGeocoder;
import org.traccar.helper.Log;
-import org.traccar.model.DataManager;
+import org.traccar.database.DataManager;
/**
* Base pipeline factory
diff --git a/src/org/traccar/BaseProtocolDecoder.java b/src/org/traccar/BaseProtocolDecoder.java
index 447bf364b..e23367278 100644
--- a/src/org/traccar/BaseProtocolDecoder.java
+++ b/src/org/traccar/BaseProtocolDecoder.java
@@ -22,7 +22,7 @@ import org.jboss.netty.channel.ChannelHandlerContext;
import static org.jboss.netty.channel.Channels.fireMessageReceived;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.handler.codec.oneone.OneToOneDecoder;
-import org.traccar.model.DataManager;
+import org.traccar.database.DataManager;
/**
* Base class for protocol decoders
diff --git a/src/org/traccar/ServerManager.java b/src/org/traccar/ServerManager.java
index 7c085d0be..2d3788720 100644
--- a/src/org/traccar/ServerManager.java
+++ b/src/org/traccar/ServerManager.java
@@ -40,8 +40,7 @@ import org.traccar.geocode.NominatimReverseGeocoder;
import org.traccar.geocode.ReverseGeocoder;
import org.traccar.helper.Log;
import org.traccar.http.WebServer;
-import org.traccar.model.DataManager;
-import org.traccar.model.DatabaseDataManager;
+import org.traccar.database.DataManager;
import org.traccar.protocol.*;
/**
@@ -99,7 +98,7 @@ public class ServerManager {
Log.setupLogger(properties);
}
- dataManager = new DatabaseDataManager(properties);
+ dataManager = new DataManager(properties);
initGeocoder(properties);
@@ -178,7 +177,7 @@ public class ServerManager {
// Initialize web server
if (Boolean.valueOf(properties.getProperty("http.enable"))) {
- webServer = new WebServer(properties);
+ webServer = new WebServer(properties, dataManager.getDataSource());
}
}
diff --git a/src/org/traccar/TrackerEventHandler.java b/src/org/traccar/TrackerEventHandler.java
index 5387074dc..878b3ba70 100644
--- a/src/org/traccar/TrackerEventHandler.java
+++ b/src/org/traccar/TrackerEventHandler.java
@@ -20,7 +20,7 @@ import org.jboss.netty.channel.*;
import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
import org.jboss.netty.handler.timeout.IdleStateEvent;
import org.traccar.helper.Log;
-import org.traccar.model.DataManager;
+import org.traccar.database.DataManager;
import org.traccar.model.Position;
/**
diff --git a/src/org/traccar/model/DatabaseDataManager.java b/src/org/traccar/database/DataManager.java
index f8d8806a7..27f4cb5c2 100644
--- a/src/org/traccar/model/DatabaseDataManager.java
+++ b/src/org/traccar/database/DataManager.java
@@ -13,30 +13,40 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.traccar.model;
+package org.traccar.database;
+import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.io.File;
import java.io.StringReader;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.*;
import java.util.*;
+import javax.sql.DataSource;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
-import org.traccar.helper.AdvancedConnection;
import org.traccar.helper.DriverDelegate;
import org.traccar.helper.Log;
-import org.traccar.helper.NamedParameterStatement;
+import org.traccar.model.Device;
+import org.traccar.model.Position;
import org.xml.sax.InputSource;
/**
* Database abstraction class
*/
-public class DatabaseDataManager implements DataManager {
+public class DataManager {
- public DatabaseDataManager(Properties properties) throws Exception {
- initDatabase(properties);
+ public DataManager(Properties properties) throws Exception {
+ if (properties != null) {
+ initDatabase(properties);
+ }
+ }
+
+ private DataSource dataSource;
+
+ public DataSource getDataSource() {
+ return dataSource;
}
/**
@@ -65,45 +75,57 @@ public class DatabaseDataManager implements DataManager {
Class.forName(driver);
}
}
-
- // Connect database
- String url = properties.getProperty("database.url");
- String user = properties.getProperty("database.user");
- String password = properties.getProperty("database.password");
- AdvancedConnection connection = new AdvancedConnection(url, user, password);
+
+ // Initialize data source
+ ComboPooledDataSource ds = new ComboPooledDataSource();
+ ds.setDriverClass(properties.getProperty("database.driver"));
+ ds.setJdbcUrl(properties.getProperty("database.url"));
+ ds.setUser(properties.getProperty("database.user"));
+ ds.setPassword(properties.getProperty("database.password"));
+ ds.setIdleConnectionTestPeriod(600);
+ ds.setTestConnectionOnCheckin(true);
+ dataSource = ds;
// Load statements from configuration
String query;
query = properties.getProperty("database.selectDevice");
if (query != null) {
- queryGetDevices = new NamedParameterStatement(connection, query);
+ queryGetDevices = new NamedParameterStatement(query);
}
query = properties.getProperty("database.insertPosition");
if (query != null) {
- queryAddPosition = new NamedParameterStatement(connection, query);
+ queryAddPosition = new NamedParameterStatement(query);
}
query = properties.getProperty("database.updateLatestPosition");
if (query != null) {
- queryUpdateLatestPosition = new NamedParameterStatement(connection, query);
+ queryUpdateLatestPosition = new NamedParameterStatement(query);
}
}
- @Override
public synchronized List<Device> getDevices() throws SQLException {
List<Device> deviceList = new LinkedList<Device>();
if (queryGetDevices != null) {
- queryGetDevices.prepare();
- ResultSet result = queryGetDevices.executeQuery();
- while (result.next()) {
- Device device = new Device();
- device.setId(result.getLong("id"));
- device.setImei(result.getString("imei"));
- deviceList.add(device);
+ Connection connection = dataSource.getConnection();
+ try {
+ PreparedStatement statement = queryGetDevices.prepare(connection);
+ try {
+ ResultSet result = statement.executeQuery();
+ while (result.next()) {
+ Device device = new Device();
+ device.setId(result.getLong("id"));
+ device.setImei(result.getString("imei"));
+ deviceList.add(device);
+ }
+ } finally {
+ statement.close();
+ }
+ } finally {
+ connection.close();
}
}
@@ -115,7 +137,6 @@ public class DatabaseDataManager implements DataManager {
*/
private Map<String, Device> devices;
- @Override
public Device getDeviceByImei(String imei) throws SQLException {
if (devices == null || !devices.containsKey(imei)) {
@@ -128,49 +149,61 @@ public class DatabaseDataManager implements DataManager {
return devices.get(imei);
}
- @Override
public synchronized Long addPosition(Position position) throws SQLException {
if (queryAddPosition != null) {
- queryAddPosition.prepare(Statement.RETURN_GENERATED_KEYS);
-
- queryAddPosition = assignVariables(queryAddPosition, position);
-
- queryAddPosition.executeUpdate();
-
- ResultSet result = queryAddPosition.getGeneratedKeys();
- if (result != null && result.next()) {
- return result.getLong(1);
+ Connection connection = dataSource.getConnection();
+ try {
+ PreparedStatement statement = queryAddPosition.prepare(connection, Statement.RETURN_GENERATED_KEYS);
+ try {
+ assignVariables(queryAddPosition, statement, position);
+ statement.executeUpdate();
+
+ ResultSet result = statement.getGeneratedKeys();
+ if (result != null && result.next()) {
+ return result.getLong(1);
+ }
+ } finally {
+ statement.close();
+ }
+ } finally {
+ connection.close();
}
}
return null;
}
- @Override
public void updateLatestPosition(Position position, Long positionId) throws SQLException {
if (queryUpdateLatestPosition != null) {
- queryUpdateLatestPosition.prepare();
-
- queryUpdateLatestPosition = assignVariables(queryUpdateLatestPosition, position);
- queryUpdateLatestPosition.setLong("id", positionId);
-
- queryUpdateLatestPosition.executeUpdate();
+ Connection connection = dataSource.getConnection();
+ try {
+ PreparedStatement statement = queryUpdateLatestPosition.prepare(connection);
+ try {
+ assignVariables(queryUpdateLatestPosition, statement, position);
+ queryUpdateLatestPosition.setLong(statement, "id", positionId);
+ statement.executeUpdate();
+ } finally {
+ statement.close();
+ }
+ } finally {
+ connection.close();
+ }
}
}
- private NamedParameterStatement assignVariables(NamedParameterStatement preparedStatement, Position position) throws SQLException {
+ private void assignVariables(NamedParameterStatement nps, PreparedStatement ps, Position position) throws SQLException {
- preparedStatement.setLong("device_id", position.getDeviceId());
- preparedStatement.setTimestamp("time", position.getTime());
- preparedStatement.setBoolean("valid", position.getValid());
- preparedStatement.setDouble("altitude", position.getAltitude());
- preparedStatement.setDouble("latitude", position.getLatitude());
- preparedStatement.setDouble("longitude", position.getLongitude());
- preparedStatement.setDouble("speed", position.getSpeed());
- preparedStatement.setDouble("course", position.getCourse());
- preparedStatement.setString("address", position.getAddress());
- preparedStatement.setString("extended_info", position.getExtendedInfo());
+ nps.setLong(ps, "device_id", position.getDeviceId());
+ nps.setTimestamp(ps, "time", position.getTime());
+ nps.setBoolean(ps, "valid", position.getValid());
+ nps.setDouble(ps, "altitude", position.getAltitude());
+ nps.setDouble(ps, "latitude", position.getLatitude());
+ nps.setDouble(ps, "longitude", position.getLongitude());
+ nps.setDouble(ps, "speed", position.getSpeed());
+ nps.setDouble(ps, "course", position.getCourse());
+ nps.setString(ps, "address", position.getAddress());
+ nps.setString(ps, "extended_info", position.getExtendedInfo());
// DELME: Temporary compatibility support
XPath xpath = XPathFactory.newInstance().newXPath();
@@ -178,25 +211,22 @@ public class DatabaseDataManager implements DataManager {
InputSource source = new InputSource(new StringReader(position.getExtendedInfo()));
String index = xpath.evaluate("/info/index", source);
if (!index.isEmpty()) {
- preparedStatement.setLong("id", Long.valueOf(index));
+ nps.setLong(ps, "id", Long.valueOf(index));
} else {
- preparedStatement.setLong("id", null);
+ nps.setLong(ps, "id", null);
}
source = new InputSource(new StringReader(position.getExtendedInfo()));
String power = xpath.evaluate("/info/power", source);
if (!power.isEmpty()) {
- preparedStatement.setDouble("power", Double.valueOf(power));
+ nps.setDouble(ps, "power", Double.valueOf(power));
} else {
- preparedStatement.setLong("power", null);
+ nps.setLong(ps, "power", null);
}
} catch (XPathExpressionException e) {
Log.warning("Error in XML: " + position.getExtendedInfo(), e);
- preparedStatement.setLong("id", null);
- preparedStatement.setLong("power", null);
+ nps.setLong(ps, "id", null);
+ nps.setLong(ps, "power", null);
}
-
- return preparedStatement;
-
}
}
diff --git a/src/org/traccar/helper/NamedParameterStatement.java b/src/org/traccar/database/NamedParameterStatement.java
index f66d8c4dd..850462b2c 100644
--- a/src/org/traccar/helper/NamedParameterStatement.java
+++ b/src/org/traccar/database/NamedParameterStatement.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.traccar.helper;
+package org.traccar.database;
import java.sql.*;
import java.util.*;
@@ -21,43 +21,15 @@ import java.util.Date;
public class NamedParameterStatement {
- /**
- * Native statement
- */
- private PreparedStatement statement;
-
- /**
- * Index mapping
- */
private final Map<String, List<Integer>> indexMap;
- /**
- * Query string
- */
private final String parsedQuery;
- /**
- * Database connection
- */
- private final AdvancedConnection connection;
-
- private int autoGeneratedKeys;
-
- private boolean failed;
-
- /**
- * Initialize statement
- */
- public NamedParameterStatement(AdvancedConnection connection, String query) {
-
+ public NamedParameterStatement(String query) {
indexMap = new HashMap<String, List<Integer>>();
parsedQuery = parse(query, indexMap);
- this.connection = connection;
}
- /**
- * Parse query
- */
static String parse(String query, Map<String, List<Integer>> paramMap) {
int length = query.length();
@@ -111,80 +83,15 @@ public class NamedParameterStatement {
return parsedQuery.toString();
}
- public void reset(boolean resetConnection) throws SQLException {
- if (statement != null) {
- statement.close();
- statement = null;
- }
- if (resetConnection) {
- connection.reset();
- }
- statement = connection.getInstance().prepareStatement(parsedQuery, autoGeneratedKeys);
- failed = false;
- }
-
- public void prepare(int autoGeneratedKeys) throws SQLException {
- this.autoGeneratedKeys = autoGeneratedKeys;
- try {
- if (statement == null) {
- reset(false);
- } else if (failed || statement.getWarnings() != null) {
- reset(true);
- }
- } catch (SQLException firstError) {
- try {
- reset(true);
- } catch (SQLException secondError) {
- Log.warning(secondError);
- failed = true;
- throw secondError;
- }
- }
- }
-
- public void prepare() throws SQLException {
- prepare(Statement.NO_GENERATED_KEYS);
- }
-
- /**
- * Execute query with result
- */
- public ResultSet executeQuery() throws SQLException {
- try {
- return statement.executeQuery();
- } catch (SQLException error) {
- failed = true;
- throw error;
- }
- }
-
- /**
- * Executes query without result
- */
- public int executeUpdate() throws SQLException {
- try {
- return statement.executeUpdate();
- } catch (SQLException error) {
- failed = true;
- throw error;
- }
- }
-
- /**
- * Return generated keys
- */
- public ResultSet getGeneratedKeys() throws SQLException {
- return statement.getGeneratedKeys();
+ public PreparedStatement prepare(Connection connection, int autoGeneratedKeys) throws SQLException {
+ return connection.prepareStatement(parsedQuery, autoGeneratedKeys);
}
- /**
- * Immediately closes the statement
- */
- public void close() throws SQLException {
- statement.close();
+ public PreparedStatement prepare(Connection connection) throws SQLException {
+ return prepare(connection, Statement.NO_GENERATED_KEYS);
}
- public void setInt(String name, Integer value) throws SQLException {
+ public void setInt(PreparedStatement statement, String name, Integer value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
@@ -196,7 +103,7 @@ public class NamedParameterStatement {
}
}
- public void setLong(String name, Long value) throws SQLException {
+ public void setLong(PreparedStatement statement, String name, Long value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
@@ -208,7 +115,7 @@ public class NamedParameterStatement {
}
}
- public void setBoolean(String name, Boolean value) throws SQLException {
+ public void setBoolean(PreparedStatement statement, String name, Boolean value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
@@ -220,7 +127,7 @@ public class NamedParameterStatement {
}
}
- public void setDouble(String name, Double value) throws SQLException {
+ public void setDouble(PreparedStatement statement, String name, Double value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
@@ -232,7 +139,7 @@ public class NamedParameterStatement {
}
}
- public void setTimestamp(String name, Date value) throws SQLException {
+ public void setTimestamp(PreparedStatement statement, String name, Date value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
@@ -244,7 +151,7 @@ public class NamedParameterStatement {
}
}
- public void setString(String name, String value) throws SQLException {
+ public void setString(PreparedStatement statement, String name, String value) throws SQLException {
List<Integer> indexList = indexMap.get(name);
if (indexList != null) for (Integer index: indexList) {
diff --git a/src/org/traccar/helper/AdvancedConnection.java b/src/org/traccar/helper/AdvancedConnection.java
deleted file mode 100644
index c0126974b..000000000
--- a/src/org/traccar/helper/AdvancedConnection.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2012 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.helper;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-
-public class AdvancedConnection {
-
- /**
- * Database connection
- */
- private Connection connection;
-
- /**
- * Connection attributes
- */
- private String url;
- private String user;
- private String password;
-
- public AdvancedConnection(String url, String user, String password) {
- this.url = url;
- this.user = user;
- this.password = password;
- }
-
- public final void reset() throws SQLException {
- if (connection != null) {
- connection.close();
- connection = null;
- }
- if (user != null && password != null) {
- connection = DriverManager.getConnection(url, user, password);
- } else {
- connection = DriverManager.getConnection(url);
- }
- }
-
- public Connection getInstance() throws SQLException {
- if (connection == null) {
- reset();
- }
- return connection;
- }
-
-}
diff --git a/src/org/traccar/http/WebServer.java b/src/org/traccar/http/WebServer.java
index 2745cd7b8..9a7cb9e4e 100644
--- a/src/org/traccar/http/WebServer.java
+++ b/src/org/traccar/http/WebServer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2014 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.
@@ -15,10 +15,7 @@
*/
package org.traccar.http;
-import java.io.File;
import java.net.InetSocketAddress;
-import java.net.URL;
-import java.net.URLClassLoader;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -34,41 +31,7 @@ public class WebServer {
private Server server;
- private void initDataSource(Properties properties) {
- try {
-
- Context context = new InitialContext();
-
- String dataSourceClass = properties.getProperty("database.dataSource");
- if (dataSourceClass != null) {
-
- Class clazz;
-
- String driverFile = properties.getProperty("database.driverFile");
- if (driverFile != null) {
- URL url = new URL("jar:file:" + new File(driverFile).getAbsolutePath() + "!/");
- URLClassLoader cl = new URLClassLoader(new URL[] { url });
- clazz = Class.forName(dataSourceClass, true, cl);
- } else {
- clazz = Class.forName(dataSourceClass);
- }
-
- if (clazz != null) {
- DataSource ds = (DataSource) clazz.newInstance();
- clazz.getMethod("setURL", String.class).invoke(ds, properties.getProperty("database.url"));
- clazz.getMethod("setUser", String.class).invoke(ds, properties.getProperty("database.user"));
- clazz.getMethod("setPassword", String.class).invoke(ds, properties.getProperty("database.password"));
-
- context.bind("java:/DefaultDS", ds);
- }
- }
-
- } catch (Exception error) {
- Log.warning(error);
- }
- }
-
- public WebServer(Properties properties) {
+ public WebServer(Properties properties, DataSource dataSource) {
String address = properties.getProperty("http.address");
Integer port = Integer.valueOf(properties.getProperty("http.port", "8082"));
if (address == null) {
@@ -77,7 +40,12 @@ public class WebServer {
server = new Server(new InetSocketAddress(address, port));
}
- initDataSource(properties);
+ try {
+ Context context = new InitialContext();
+ context.bind("java:/DefaultDS", dataSource);
+ } catch (Exception error) {
+ Log.warning(error);
+ }
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
diff --git a/src/org/traccar/model/DataManager.java b/src/org/traccar/model/DataManager.java
deleted file mode 100644
index f0bfdb50d..000000000
--- a/src/org/traccar/model/DataManager.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2012 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.model;
-
-import java.util.List;
-
-/**
- * Data manager
- */
-public interface DataManager {
-
- /**
- * Manage devices
- */
- public List<Device> getDevices() throws Exception;
- public Device getDeviceByImei(String imei) throws Exception;
-
- /**
- * Manage positions
- */
- public Long addPosition(Position position) throws Exception;
- public void updateLatestPosition(Position position, Long positionId) throws Exception;
-
-}
diff --git a/src/org/traccar/protocol/ApelProtocolDecoder.java b/src/org/traccar/protocol/ApelProtocolDecoder.java
index 9ffc473c7..54b112b59 100644
--- a/src/org/traccar/protocol/ApelProtocolDecoder.java
+++ b/src/org/traccar/protocol/ApelProtocolDecoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2013 - 2014 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.
@@ -17,11 +17,9 @@ package org.traccar.protocol;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
-import java.sql.ResultSet;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
-import java.util.Properties;
import java.util.TimeZone;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
@@ -29,10 +27,8 @@ import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.traccar.BaseProtocolDecoder;
import org.traccar.ServerManager;
-import org.traccar.helper.AdvancedConnection;
import org.traccar.helper.Crc;
import org.traccar.helper.Log;
-import org.traccar.helper.NamedParameterStatement;
import org.traccar.model.ExtendedInfoFormatter;
import org.traccar.model.Position;
@@ -77,7 +73,7 @@ public class ApelProtocolDecoder extends BaseProtocolDecoder {
private static final String HEX_CHARS = "0123456789ABCDEF";
private void loadLastIndex() {
- try {
+ /*try {
Properties p = getServerManager().getProperties();
if (p.contains("database.selectLastIndex")) {
AdvancedConnection connection = new AdvancedConnection(
@@ -91,7 +87,7 @@ public class ApelProtocolDecoder extends BaseProtocolDecoder {
}
}
} catch(Exception error) {
- }
+ }*/
}
private void sendSimpleMessage(Channel channel, short type) {
diff --git a/src/org/traccar/protocol/ProgressProtocolDecoder.java b/src/org/traccar/protocol/ProgressProtocolDecoder.java
index c4a4d5e6f..85680c039 100644
--- a/src/org/traccar/protocol/ProgressProtocolDecoder.java
+++ b/src/org/traccar/protocol/ProgressProtocolDecoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com)
+ * Copyright 2012 - 2014 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.
@@ -17,11 +17,9 @@ package org.traccar.protocol;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
-import java.sql.ResultSet;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
-import java.util.Properties;
import java.util.TimeZone;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
@@ -29,9 +27,7 @@ import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.traccar.BaseProtocolDecoder;
import org.traccar.ServerManager;
-import org.traccar.helper.AdvancedConnection;
import org.traccar.helper.Log;
-import org.traccar.helper.NamedParameterStatement;
import org.traccar.model.ExtendedInfoFormatter;
import org.traccar.model.Position;
@@ -63,11 +59,8 @@ public class ProgressProtocolDecoder extends BaseProtocolDecoder {
private static final String HEX_CHARS = "0123456789ABCDEF";
- /**
- * Hack to load last index from database
- */
private void loadLastIndex() {
- try {
+ /*try {
Properties p = getServerManager().getProperties();
if (p.contains("database.selectLastIndex")) {
AdvancedConnection connection = new AdvancedConnection(
@@ -81,7 +74,7 @@ public class ProgressProtocolDecoder extends BaseProtocolDecoder {
}
}
} catch(Exception error) {
- }
+ }*/
}
/**
@@ -100,13 +93,8 @@ public class ProgressProtocolDecoder extends BaseProtocolDecoder {
}
}
- /**
- * Decode message
- */
@Override
- protected Object decode(
- ChannelHandlerContext ctx, Channel channel, Object msg)
- throws Exception {
+ protected Object decode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
ChannelBuffer buf = (ChannelBuffer) msg;
int type = buf.readUnsignedShort();
diff --git a/test/org/traccar/helper/TestDataManager.java b/test/org/traccar/helper/TestDataManager.java
index 9e8147b05..a54c1f7a3 100644
--- a/test/org/traccar/helper/TestDataManager.java
+++ b/test/org/traccar/helper/TestDataManager.java
@@ -1,16 +1,16 @@
package org.traccar.helper;
import java.util.List;
-import org.traccar.model.DataManager;
+import org.traccar.database.DataManager;
import org.traccar.model.Device;
import org.traccar.model.Position;
-public class TestDataManager implements DataManager {
+public class TestDataManager extends DataManager {
- @Override
- public List getDevices() {
- return null;
+ public TestDataManager() throws Exception {
+ super(null);
}
+
@Override
public Device getDeviceByImei(String imei) {
Device device = new Device();
@@ -18,11 +18,5 @@ public class TestDataManager implements DataManager {
device.setImei("123456789012345");
return device;
}
- @Override
- public Long addPosition(Position position) {
- return null;
- }
- @Override
- public void updateLatestPosition(Position position, Long positionId) throws Exception {
- }
+
}