From e69be9cf507e6ceae33aca7bb4d4290b18b157d2 Mon Sep 17 00:00:00 2001 From: "m.dalakov" Date: Fri, 9 Mar 2018 09:10:04 +0200 Subject: [PATCH] [SECARSP-147] *save only last device settings Change-Id: Iad6f063fabb5f83b379d553204882e3c0d359bd6 --- .../samserver/repository/UpdatesRepository.java | 2 ++ .../samsung/samserver/service/UpdatesService.java | 9 +++++++++ .../samserver/service/impl/LockServiceImpl.java | 23 +++++++++++++++++++--- .../samserver/service/impl/UpdatesServiceImpl.java | 15 ++++++++++++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/samsung/samserver/repository/UpdatesRepository.java b/server/src/main/java/com/samsung/samserver/repository/UpdatesRepository.java index 815774d..b988fd0 100644 --- a/server/src/main/java/com/samsung/samserver/repository/UpdatesRepository.java +++ b/server/src/main/java/com/samsung/samserver/repository/UpdatesRepository.java @@ -26,4 +26,6 @@ public interface UpdatesRepository extends JpaRepository { Optional findOneBySuAndUuidAndDevice(String su, String uuid, Device device); + Optional findOneBySuAndDeviceAndType(String su, Device device, String type); + } diff --git a/server/src/main/java/com/samsung/samserver/service/UpdatesService.java b/server/src/main/java/com/samsung/samserver/service/UpdatesService.java index fb40b55..0b7b048 100644 --- a/server/src/main/java/com/samsung/samserver/service/UpdatesService.java +++ b/server/src/main/java/com/samsung/samserver/service/UpdatesService.java @@ -79,4 +79,13 @@ public interface UpdatesService { */ void confirm(String uuid, Device device); + /** + * Get updates data by update type + * + * @param device the Device entity + * @param type the update type + * @return the update data entity + */ + Optional find(Device device, String type); + } diff --git a/server/src/main/java/com/samsung/samserver/service/impl/LockServiceImpl.java b/server/src/main/java/com/samsung/samserver/service/impl/LockServiceImpl.java index 483e661..b4cec01 100644 --- a/server/src/main/java/com/samsung/samserver/service/impl/LockServiceImpl.java +++ b/server/src/main/java/com/samsung/samserver/service/impl/LockServiceImpl.java @@ -11,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.slf4j.*; + +import java.time.Instant; import java.util.Optional; import static com.samsung.samserver.config.ApplicationProperties.DeviceSettings; @@ -55,12 +57,27 @@ public class LockServiceImpl implements LockService { " \"lock\": " + unlocked.getLock() + "\n" + "}\n"; } + String uuid = updatesService.getUpdateUID(type, out); - Optional u = updatesService.find(uuid, device); + Optional u = updatesService.find(device, type); if (!u.isPresent()) { - String uri = "/api/device-service/get-udata?duid="+device.getDuid()+"&uuid="+uuid; - updatesService.save(new Updates(uuid, type, uri, null, "action:settings updates", out, device)); + u = Optional.of( + new Updates() + .type(type) + .descr("action:settings updates") + .device(device) + .su("n") + ); } + + updatesService.save( + u.get() + .uuid(uuid) + .uri( "/api/device-service/get-udata?duid="+device.getDuid()+"&uuid="+uuid) + .rdate(Instant.now()) + .ctime(Instant.now()) + .data(out) + ); } } diff --git a/server/src/main/java/com/samsung/samserver/service/impl/UpdatesServiceImpl.java b/server/src/main/java/com/samsung/samserver/service/impl/UpdatesServiceImpl.java index 3e17389..b1f1de8 100644 --- a/server/src/main/java/com/samsung/samserver/service/impl/UpdatesServiceImpl.java +++ b/server/src/main/java/com/samsung/samserver/service/impl/UpdatesServiceImpl.java @@ -102,6 +102,7 @@ public class UpdatesServiceImpl implements UpdatesService { * @param data update data * @return the String */ + @Override public String getUpdateUID(String type, String data){ return DigestUtils.sha256Hex(type + data); } @@ -138,4 +139,18 @@ public class UpdatesServiceImpl implements UpdatesService { } } + /** + * Get updates data by update type + * + * @param device the Device entity + * @param type the update type + * @return the update data entity + */ + @Override + @Transactional + public Optional find(Device device, String type){ + log.debug("Request to get updates Data by update type: {}, {}", device, type); + return updatesRepository.findOneBySuAndDeviceAndType("n", device, type); + } + } -- 2.7.4