diff --git a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java index 958a77076803eb5b77d334829355cafaca06a9cf..ecce23e81e9842a76c39a4adbb2561759a0747f5 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java @@ -5,7 +5,9 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; import net.jami.jams.common.dao.SelectStatementBuilder; +import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; +import net.jami.jams.common.dao.UpdateStatementBuilder; import net.jami.jams.common.dao.connectivity.SQLConnection; import java.sql.PreparedStatement; @@ -22,11 +24,14 @@ public abstract class AbstractDao<T> { @Getter @Setter private Class<T> tClass; + public abstract boolean storeObject(T object); + public abstract boolean deleteObject(LinkedHashMap<String,String> constraints); + public List<T> getObjects(StatementList constraints){ List<T> result = new ArrayList<>(); SQLConnection connection = DataStore.connectionPool.getConnection(); try{ - PreparedStatement ps = SelectStatementBuilder.buildStatement(tableName,constraints.getStatements(),connection); + PreparedStatement ps = SelectStatementBuilder.buildStatement(tableName,constraints,connection); ResultSet rs = ps.executeQuery(); while(rs.next()){ result.add(tClass.getConstructor(ResultSet.class).newInstance(rs)); @@ -42,7 +47,18 @@ public abstract class AbstractDao<T> { } } - - public abstract boolean storeObject(T object); - public abstract boolean deleteObject(LinkedHashMap<String,String> constraints); + public boolean updateObject(StatementList update, StatementList constraints){ + SQLConnection connection = DataStore.connectionPool.getConnection(); + try{ + PreparedStatement ps = UpdateStatementBuilder.buildStatement(tableName,update,constraints,connection); + return ps.execute(); + } + catch (Exception e){ + log.error("An error has occurred while trying to fetch a device: " + e.toString()); + return false; + } + finally { + DataStore.connectionPool.returnConnection(connection); + } + } } diff --git a/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java b/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java index f5074bbdb513901ed2a9140eca489514c4fdaa95..c3e9ad42b9ad07870f437669ccad458bc26a2094 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java @@ -1,5 +1,6 @@ package net.jami.datastore.dao; +import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.contacts.Contact; import java.util.LinkedHashMap; @@ -15,4 +16,9 @@ public class ContactDao extends AbstractDao<Contact> { public boolean deleteObject(LinkedHashMap<String, String> constraints) { return false; } + + @Override + public boolean updateObject(StatementList update, StatementList constraints) { + return false; + } } diff --git a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java index 9f7db3e553425bc8af3fdce2945c59446534c6c1..94e2fc99ea3c729b2501370e12527ab0be0593e9 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java @@ -2,6 +2,7 @@ package net.jami.datastore.dao; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; +import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.devices.Device; @@ -59,4 +60,9 @@ public class DeviceDao extends AbstractDao<Device> { public boolean deleteObject(LinkedHashMap<String, String> constraints) { return false; } + + @Override + public boolean updateObject(StatementList update, StatementList constraints) { + return false; + } } diff --git a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java index 63545e5070ff15a148dd846b8df305fc13eeed82..35591e2a6f76f86bb6ba0d733f967dd682596fe8 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java @@ -2,6 +2,7 @@ package net.jami.datastore.dao; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; +import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.system.SystemAccount; @@ -57,4 +58,9 @@ public class SystemDao extends AbstractDao<SystemAccount> { public boolean deleteObject(LinkedHashMap<String, String> constraints) { return false; } + + @Override + public boolean updateObject(StatementList update, StatementList constraints) { + return false; + } } diff --git a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java index 8573b444a9c8f28b27b2b611d77b7090b5bddc55..1c203436e7c371089775ea1c6f320a96454c852a 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java @@ -2,6 +2,7 @@ package net.jami.datastore.dao; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; +import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.user.User; diff --git a/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java b/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java index d5d53104dbda41eeb4b04e4ce6aae7d9189cfa9c..8c840f19cb97c016a31e43ad8cf6c75ea3abaa79 100644 --- a/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java +++ b/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java @@ -7,7 +7,7 @@ import java.util.List; public class SelectStatementBuilder { - public static PreparedStatement buildStatement(String table, List<StatementElement> statementElements, + public static PreparedStatement buildStatement(String table, StatementList statementElements, SQLConnection connection) throws Exception { PreparedStatement ps = null; @@ -15,7 +15,7 @@ public class SelectStatementBuilder { stringBuilder.append("SELECT * FROM ").append(table); if(statementElements != null) { stringBuilder.append(" WHERE "); - for (StatementElement statementElement : statementElements) { + for (StatementElement statementElement : statementElements.getStatements()) { stringBuilder .append(statementElement.getColumn()) .append(" ") @@ -27,7 +27,7 @@ public class SelectStatementBuilder { } ps = connection.getConnection().prepareStatement(stringBuilder.toString()); int i = 1; - for (StatementElement statementElement : statementElements) { + for (StatementElement statementElement : statementElements.getStatements()) { ps.setString(i, statementElement.getValue()); i++; } diff --git a/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java b/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java index d67273725f6635649bad1b7e382bd1101b74f8da..c0efc337f02bf290503d797aa246fd74cbc33ac6 100644 --- a/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java +++ b/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java @@ -6,22 +6,22 @@ import java.sql.PreparedStatement; import java.util.List; public class UpdateStatementBuilder { - public static PreparedStatement buildStatement(String table, List<StatementElement> updateElements, - List<StatementElement> conditionalElements, + public static PreparedStatement buildStatement(String table, StatementList updateElements, + StatementList conditionalElements, SQLConnection connection) throws Exception { PreparedStatement ps = null; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("UPDATE ").append(table).append(" SET "); - for (int i = 0; i < updateElements.size(); i++) { - StatementElement statementElement = updateElements.get(i); + for (int i = 0; i < updateElements.getStatements().size(); i++) { + StatementElement statementElement = updateElements.getStatements().get(i); stringBuilder .append(statementElement.getColumn()) .append(" = ") .append("?"); - if (i != updateElements.size() - 1) stringBuilder.append(","); + if (i != updateElements.getStatements().size() - 1) stringBuilder.append(","); } stringBuilder.append(" WHERE "); - for (StatementElement statementElement : conditionalElements) { + for (StatementElement statementElement : conditionalElements.getStatements()) { stringBuilder .append(statementElement.getColumn()) .append(" ") @@ -32,10 +32,10 @@ public class UpdateStatementBuilder { .append(statementElement.getNextStatementRelation()); } ps = connection.getConnection().prepareStatement(stringBuilder.toString()); - //Now we have to feed this all the elements it hsould have. - updateElements.addAll(conditionalElements); + //Now we have to feed this all the elements it should have. + updateElements.getStatements().addAll(conditionalElements.getStatements()); int i = 1; - for (StatementElement statementElement : updateElements) { + for (StatementElement statementElement : updateElements.getStatements()) { ps.setString(i, statementElement.getValue()); i++; } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java index f6ccf37b3749e6b6e18ae6168b9ec2025bd5a56b..6dbeb31e396443afd4619ec2ff3b13afcacd8c0a 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java @@ -34,7 +34,12 @@ public class DeviceServlet extends HttpServlet { //Update device data. @Override protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - + String username = req.getParameter("username"); + String deviceId = req.getParameter("deviceId"); + StatementList statementList = new StatementList(); + StatementElement st0 = new StatementElement() + StatementElement st1 = new StatementElement("owner","=",username,"AND"); + StatementElement st2 = new StatementElement("deviceId","=",deviceId,""); } //Revoke/delete a device.