From 50c45e03f6aa3440a933967935b03703bf5a7b8d Mon Sep 17 00:00:00 2001 From: strawmanbobi Date: Sun, 12 Apr 2020 21:35:25 +0800 Subject: [PATCH] updated private cliud to 0.2.5 (undone) --- .../bin_cache/irda_m50560_remote_tv_000.bin | Bin 0 -> 167 bytes server/bin_cache/irda_new_ac_10712.bin | Bin 0 -> 192 bytes server/bin_cache/irda_new_ac_5962.bin | Bin 0 -> 302 bytes .../java/net/irext/decode/sdk/IRDecode.java | 47 ++-- .../net/irext/server/service/Constants.java | 7 +- .../service/businesslogic/IndexingLogic.java | 252 +++++++++++++++++- .../service/businesslogic/OperationLogic.java | 240 +++++++++-------- .../server/service/mapper/BrandMapper.java | 2 + .../server/service/mapper/CategoryMapper.java | 2 + .../server/service/mapper/CityMapper.java | 2 + .../service/mapper/CollectKeyMapper.java | 27 ++ .../service/mapper/CollectRemoteMapper.java | 30 +++ .../service/mapper/DecodeRemoteMapper.java | 27 ++ .../service/mapper/RemoteIndexMapper.java | 2 + .../service/mapper/StbOperatorMapper.java | 2 + .../server/service/model/CollectKey.java | 72 +++++ .../server/service/model/CollectRemote.java | 175 ++++++++++++ .../server/service/model/DecodeRemote.java | 103 +++++++ .../server/service/model/DecodeSession.java | 42 --- .../irext/server/service/model/IRBinary.java | 42 --- .../server/service/request/DecodeRequest.java | 40 ++- .../request/GetACParametersRequest.java | 25 +- .../service/request/ListIndexesRequest.java | 14 +- .../service/restapi/IRIndexingService.java | 3 +- .../service/restapi/IROperationService.java | 174 +++++------- .../service/mapper/CollectKeyMapper.xml | 16 ++ .../service/mapper/CollectRemoteMapper.xml | 27 ++ .../service/mapper/DecodeRemoteMapper.xml | 20 ++ .../service/mapper/RemoteIndexMapper.xml | 4 +- 29 files changed, 1037 insertions(+), 360 deletions(-) create mode 100644 server/bin_cache/irda_m50560_remote_tv_000.bin create mode 100644 server/bin_cache/irda_new_ac_10712.bin create mode 100644 server/bin_cache/irda_new_ac_5962.bin create mode 100644 server/src/main/java/net/irext/server/service/mapper/CollectKeyMapper.java create mode 100644 server/src/main/java/net/irext/server/service/mapper/CollectRemoteMapper.java create mode 100644 server/src/main/java/net/irext/server/service/mapper/DecodeRemoteMapper.java create mode 100644 server/src/main/java/net/irext/server/service/model/CollectKey.java create mode 100644 server/src/main/java/net/irext/server/service/model/CollectRemote.java create mode 100644 server/src/main/java/net/irext/server/service/model/DecodeRemote.java delete mode 100644 server/src/main/java/net/irext/server/service/model/DecodeSession.java delete mode 100644 server/src/main/java/net/irext/server/service/model/IRBinary.java create mode 100644 server/src/main/resources/net/irext/server/service/mapper/CollectKeyMapper.xml create mode 100644 server/src/main/resources/net/irext/server/service/mapper/CollectRemoteMapper.xml create mode 100644 server/src/main/resources/net/irext/server/service/mapper/DecodeRemoteMapper.xml diff --git a/server/bin_cache/irda_m50560_remote_tv_000.bin b/server/bin_cache/irda_m50560_remote_tv_000.bin new file mode 100644 index 0000000000000000000000000000000000000000..64317b6d927d2b15b5461c5dfd5c2148e7aa8684 GIT binary patch literal 167 zcmc~bH83?ZU_b$kAOI4%ppYTJV8F!V$H2h^WN|R*umK4nCVr4C2Ll606%&wV0@7d| z#E4}Ur6e*j@iB2Su`;nSaWJtnnK3alu`o$9@iLi$Y-N&U5?~SpS|iLP!X(Nh#w5-p F0RZ~t2m=5B literal 0 HcmV?d00001 diff --git a/server/bin_cache/irda_new_ac_10712.bin b/server/bin_cache/irda_new_ac_10712.bin new file mode 100644 index 0000000000000000000000000000000000000000..ada1d641932d323ea51a5b3a339ecf5810e991ac GIT binary patch literal 192 zcmX|(F%H5o3`M=NF;)UL#t!~=>YBOg&M_D{1osX#uvhQ0B5AmNjN}8;DF#gQ^-|(MZ?m8^Of)mis;&-AkvFcH9kbyD8L> O*f{wc6h)J^4#OWRr#|5T literal 0 HcmV?d00001 diff --git a/server/bin_cache/irda_new_ac_5962.bin b/server/bin_cache/irda_new_ac_5962.bin new file mode 100644 index 0000000000000000000000000000000000000000..9f2ed1d118580dfd6d0364e1572e1a546e47ac3b GIT binary patch literal 302 zcmZvUJFWsT3`N~hvI5$vrnvqj8A_Ca5()8G0Q+D^RMf14B_JV$5IYFYyg{PCk$mhU z=gvwYn$VOs^hc%aXirCHt<%U-&UEqlN;kUGgPwzbkws}ul0|M=642C1f+||IIa*GP zLpNBp*nL}$zjRRlA)Ex>qjq8dbHAwJIl!w=pWXZj2=>_lo!5I^RgV}4 listRemoteIndexes(int categoryId, int brandId, String cityCode, int from, int count) { + public List listRemoteIndexes(int categoryId, int brandId, String cityCode, + int from, int count, int withParaData) { List remoteIndexList; if (categoryId == Constants.CategoryID.STB.getValue()) { remoteIndexList = remoteIndexMapper.listRemoteIndexByCity(cityCode, from, count); } else { remoteIndexList = remoteIndexMapper.listRemoteIndexByBrand(categoryId, brandId, from, count); } + + if (1 == withParaData) { + List collectRemoteList; + + if (Constants.CategoryID.STB.getValue() != categoryId) { + collectRemoteList = collectRemoteMapper.selectCollectRemotesByBrand(categoryId, brandId); + } else { + collectRemoteList = collectRemoteMapper.selectCollectRemotesByCity(categoryId, cityCode); + } + + // convert collectRemote to remoteIndex + for (CollectRemote collectRemote : collectRemoteList) { + RemoteIndex remoteIndex = new RemoteIndex(); + remoteIndex.setId(collectRemote.getId()); + remoteIndex.setCategoryId(categoryId); + remoteIndex.setCategoryName(collectRemote.getCategoryName()); + remoteIndex.setBrandId(brandId); + remoteIndex.setBrandName(collectRemote.getBrandName()); + remoteIndex.setCityCode(collectRemote.getCityCode()); + remoteIndex.setCityName(collectRemote.getCityName()); + remoteIndex.setPriority(999); + remoteIndex.setSubCate((byte)Constants.BinaryType.TYPE_PARA_DATA.getValue()); + remoteIndex.setStatus((byte) Constants.STATUS_PARA_DATA); + remoteIndexList.add(remoteIndex); + } + } return remoteIndexList; } + + public String statRemoteRef(int remoteIndexId) { + List remoteIndexList = remoteIndexMapper.getRemoteIndexById(remoteIndexId); + if (null != remoteIndexList && remoteIndexList.size() > 0) { + return statRemoteRef(remoteIndexList.get(0)); + } + return null; + } + + public String statRemoteRef(RemoteIndex remoteIndex) { + try { + String url = "https://irext.net/irext/stat/stat_remotes"; + MediaType JSON + = MediaType.parse("application/json; charset=utf-8"); + + OkHttpClient client = new OkHttpClient(); + + RemoteRef remoteRef = new RemoteRef(); + remoteRef.setCategory_id(remoteIndex.getCategoryId()); + remoteRef.setCategory_name(remoteIndex.getCategoryName()); + remoteRef.setBrand_id(remoteIndex.getBrandId()); + remoteRef.setBrand_name(remoteIndex.getBrandName()); + remoteRef.setCity_code(remoteIndex.getCityCode()); + remoteRef.setOperator_id(remoteIndex.getOperatorId()); + remoteRef.setRemote_code(remoteIndex.getId().toString()); + remoteRef.setRemote(remoteIndex.getRemote()); + remoteRef.setProtocol(remoteIndex.getProtocol()); + remoteRef.setRemote_map(remoteIndex.getRemoteMap()); + remoteRef.setStatus(1); + remoteRef.setSub_cate(remoteIndex.getSubCate()); + if (remoteRef.getCategory_id() != Constants.CategoryID.STB.getValue()) { + remoteRef.setName(remoteIndex.getCategoryName() + remoteIndex.getBrandName()); + } else { + remoteRef.setName(remoteIndex.getCategoryName() + remoteIndex.getOperatorName()); + } + remoteRef.setCreate_type(1); + + String remoteRefBody = new Gson().toJson(remoteRef); + + RequestBody body = RequestBody.create(JSON, remoteRefBody); + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + Response response = client.newCall(request).execute(); + return response.body().string(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private static class RemoteRef { + String name; + int category_id; + String category_name; + int brand_id; + String brand_name; + String city_code; + String operator_id; + int status; + String remote_code; + int create_type; + String update_time; + int sub_cate; + String protocol; + String remote; + String remote_map; + + public void remoteRef() { + } + + public void remoteRef(String name, + int category_id, String category_name, int brand_id, String brand_name, + String city_code, String operator_id, + int status, String remote_code, int create_type, String update_time, + int sub_cate, String protocol, String remote, String remote_map) { + this.name = name; + this.category_id = category_id; + this.category_name = category_name; + this.brand_id = brand_id; + this.brand_name = brand_name; + this.city_code = city_code; + this.operator_id = operator_id; + this.status = status; + this.remote_code = remote_code; + this.create_type = create_type; + this.update_time = update_time; + this.sub_cate = sub_cate; + this.protocol = protocol; + this.remote = remote; + this.remote_map = remote_map; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } + + public int getBrand_id() { + return brand_id; + } + + public void setBrand_id(int brand_id) { + this.brand_id = brand_id; + } + + public String getBrand_name() { + return brand_name; + } + + public void setBrand_name(String brand_name) { + this.brand_name = brand_name; + } + + public String getCity_code() { + return city_code; + } + + public void setCity_code(String city_code) { + this.city_code = city_code; + } + + public String getOperator_id() { + return operator_id; + } + + public void setOperator_id(String operator_id) { + this.operator_id = operator_id; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getRemote_code() { + return remote_code; + } + + public void setRemote_code(String remote_code) { + this.remote_code = remote_code; + } + + public int getCreate_type() { + return create_type; + } + + public void setCreate_type(int create_type) { + this.create_type = create_type; + } + + public String getUpdate_time() { + return update_time; + } + + public void setUpdate_time(String update_time) { + this.update_time = update_time; + } + + public int getSub_cate() { + return sub_cate; + } + + public void setSub_cate(int sub_cate) { + this.sub_cate = sub_cate; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getRemote() { + return remote; + } + + public void setRemote(String remote) { + this.remote = remote; + } + + public String getRemote_map() { + return remote_map; + } + + public void setRemote_map(String remote_map) { + this.remote_map = remote_map; + } + } } diff --git a/server/src/main/java/net/irext/server/service/businesslogic/OperationLogic.java b/server/src/main/java/net/irext/server/service/businesslogic/OperationLogic.java index 6eeb551..4ee73b1 100644 --- a/server/src/main/java/net/irext/server/service/businesslogic/OperationLogic.java +++ b/server/src/main/java/net/irext/server/service/businesslogic/OperationLogic.java @@ -2,10 +2,12 @@ package net.irext.server.service.businesslogic; import com.squareup.okhttp.*; import net.irext.server.sdk.bean.TemperatureRange; -import net.irext.server.service.cache.IDecodeSessionRepository; -import net.irext.server.service.cache.IIRBinaryRepository; +import net.irext.server.service.mapper.CollectKeyMapper; +import net.irext.server.service.mapper.DecodeRemoteMapper; import net.irext.server.service.mapper.RemoteIndexMapper; import net.irext.server.service.model.ACParameters; +import net.irext.server.service.model.CollectKey; +import net.irext.server.service.model.DecodeRemote; import net.irext.server.service.model.RemoteIndex; import net.irext.server.service.utils.FileUtil; import net.irext.server.service.utils.LoggerUtil; @@ -57,62 +59,64 @@ public class OperationLogic { private RemoteIndexMapper remoteIndexMapper; + private DecodeRemoteMapper decodeRemoteMapper; + + private CollectKeyMapper collectKeyMapper; + @Autowired public void setRemoteIndexMapper(RemoteIndexMapper remoteIndexMapper) { this.remoteIndexMapper = remoteIndexMapper; } - public RemoteIndex openIRBinary(ServletContext context, IIRBinaryRepository irBinaryRepository, - RemoteIndex remoteIndex) { - if (null == remoteIndex) { - return null; - } + @Autowired + public void setDecodeRemoteMapper(DecodeRemoteMapper decodeRemoteMapper) { + this.decodeRemoteMapper = decodeRemoteMapper; + } + + @Autowired + public void setCollectKeyMapper(CollectKeyMapper collectKeyMapper) { + this.collectKeyMapper = collectKeyMapper; + } + + public RemoteIndex prepareBinary(int remoteIndexId) { + RemoteIndex remoteIndex = null; try { - String checksum = remoteIndex.getBinaryMd5().toUpperCase(); - String remoteMap = remoteIndex.getRemoteMap(); + List remoteIndexList = remoteIndexMapper.getRemoteIndexById(remoteIndexId); + if (null != remoteIndexList && remoteIndexList.size() > 0) { + remoteIndex = remoteIndexList.get(0); + String checksum = remoteIndex.getBinaryMd5().toUpperCase(); + String remoteMap = remoteIndex.getRemoteMap(); - LoggerUtil.getInstance().trace(TAG, "checksum for remoteIndex " + - remoteIndex.getId() + " = " + checksum); + LoggerUtil.getInstance().trace(TAG, "checksum for remoteIndex " + + remoteIndex.getId() + " = " + checksum); - RemoteIndex cachedRemoteIndex = irBinaryRepository.find(remoteIndex.getId()); - if (null != cachedRemoteIndex) { - LoggerUtil.getInstance().trace(TAG, "binary content fetched from redis : " + - cachedRemoteIndex.getRemoteMap()); - // validate binary content - String cachedChecksum = - MD5Util.byteArrayToHexString(MessageDigest.getInstance("MD5") - .digest(cachedRemoteIndex.getBinaries())).toUpperCase(); - if (cachedChecksum.equals(checksum)) { - return cachedRemoteIndex; + // read from file or OSS + String projectPath = System.getProperty("user.dir"); + if (null != projectPath) { + String downloadPath = projectPath + File.separator + "bin_cache" + File.separator; + String fileName = IR_BIN_FILE_PREFIX + remoteMap + IR_BIN_FILE_SUFFIX; + String localFilePath = downloadPath + fileName; + + File binFile = new File(localFilePath); + FileInputStream fin = getFile(binFile, downloadPath, fileName, checksum); + if (null != fin) { + byte[] newBinaries = IOUtils.toByteArray(fin); + LoggerUtil.getInstance().trace(TAG, "binary content get, save it to redis"); + remoteIndex.setBinaries(newBinaries); + } + } else { + LoggerUtil.getInstance().trace(TAG, "project root is null"); } } - - // otherwise, read from file or OSS - if (null != context) { - String downloadPath = context.getRealPath("") + "bin_cache" + File.separator; - String fileName = IR_BIN_FILE_PREFIX + remoteMap + IR_BIN_FILE_SUFFIX; - String localFilePath = downloadPath + fileName; - - File binFile = new File(localFilePath); - FileInputStream fin = getFile(binFile, downloadPath, fileName, checksum); - if (null != fin) { - byte[] newBinaries = IOUtils.toByteArray(fin); - LoggerUtil.getInstance().trace(TAG, "binary content get, save it to redis"); - remoteIndex.setBinaries(newBinaries); - irBinaryRepository.add(remoteIndex.getId(), remoteIndex); - return remoteIndex; - } - } else { - LoggerUtil.getInstance().trace(TAG, "servlet context is null"); - } } catch (Exception ex) { ex.printStackTrace(); - return null; + } finally { + LoggerUtil.getInstance().trace(TAG, "return remote index"); } - return null; + return remoteIndex; } - public int[] decode(RemoteIndex remoteIndex, ACStatus acStatus, + public int[] decodeIR(RemoteIndex remoteIndex, ACStatus acStatus, int keyCode, int changeWindDirection) { try { int[] decoded = null; @@ -127,10 +131,6 @@ public class OperationLogic { decoded = irDecode.decodeBinary(keyCode, acStatus, changeWindDirection); } irDecode.closeBinary(); - /* - decoded = irDecode.decodeBinary(categoryId, subCate, binaryContent, binaryContent.length, - keyCode, acStatus, changeWindDirection); - */ return decoded; } } @@ -140,72 +140,90 @@ public class OperationLogic { return null; } - public ACParameters getACParameters(RemoteIndex remoteIndex, int mode) { - if (null != remoteIndex) { - try { - ACParameters acParameters = new ACParameters(); - int categoryId = remoteIndex.getCategoryId(); - int subCate = remoteIndex.getSubCate(); - byte[] binaryContent = remoteIndex.getBinaries(); - IRDecode irDecode = IRDecode.getInstance(); - int ret = irDecode.openBinary(categoryId, subCate, binaryContent, binaryContent.length); - if (0 == ret) { - int[] supportedModes = irDecode.getACSupportedMode(); + public int[] decodeIRDirect(Integer indexId, int keyCode, int paraData) { + String keyValueString = null; + String[] keyValues; + int[] keyValue = null; - if (DEBUG) { - LoggerUtil.getInstance().trace(TAG, "supported modes got : "); - for (int i = 0; i < supportedModes.length; i++) { - LoggerUtil.getInstance().trace(TAG, "supported mode [" + i + "] = " + supportedModes[i]); - } - } - - acParameters.setSupportedModes(supportedModes); - if (1 == supportedModes[mode]) { - // if this mode is really supported by this AC, get other parameters - TemperatureRange temperatureRange = irDecode.getTemperatureRange(mode); - int[] supportedWindSpeed = irDecode.getACSupportedWindSpeed(mode); - - if (DEBUG) { - LoggerUtil.getInstance().trace(TAG, "supported wind speed got for mode : " + mode); - for (int i = 0; i < supportedWindSpeed.length; i++) { - LoggerUtil.getInstance().trace(TAG, "supported wind speed [" + i + "] = " + supportedWindSpeed[i]); - } - } - int[] supportedSwing = irDecode.getACSupportedSwing(mode); - - if (DEBUG) { - LoggerUtil.getInstance().trace(TAG, "supported swing got for mode : " + mode); - for (int i = 0; i < supportedSwing.length; i++) { - LoggerUtil.getInstance().trace(TAG, "supported swing [" + i + "] = " + supportedSwing[i]); - } - } - - int supportedWindDirection = irDecode.getACSupportedWindDirection(mode); - - if (DEBUG) { - LoggerUtil.getInstance().trace(TAG, - "supported wind directions for mode : " + mode + - " = " + supportedWindDirection); - } - - acParameters.setTempMax(temperatureRange.getTempMax()); - acParameters.setTempMin(temperatureRange.getTempMin()); - acParameters.setSupportedWindSpeed(supportedWindSpeed); - acParameters.setSupportedSwing(supportedSwing); - acParameters.setSupportedWindSpeed(supportedWindSpeed); - } - } - irDecode.closeBinary(); - return acParameters; - } catch (Exception ex) { - ex.printStackTrace(); + if (0 == paraData) { + List decodeRemoteList = decodeRemoteMapper.directDecode(indexId, keyCode); + if (null != decodeRemoteList && decodeRemoteList.size() > 0) { + keyValueString = decodeRemoteList.get(0).getKeyValue(); + } + } else { + List collectKeyList = collectKeyMapper.directDecode(indexId, keyCode); + if (null != collectKeyList && collectKeyList.size() > 0) { + keyValueString = collectKeyList.get(0).getKeyValue(); } } - return null; + if (null != keyValueString && keyValueString.length() > 0) { + keyValues = keyValueString.split(","); + keyValue = new int[keyValues.length]; + for (int i = 0; i < keyValues.length; i++) { + keyValue[i] = Integer.parseInt(keyValues[i]); + } + } + return keyValue; } - public void close(IDecodeSessionRepository decodeSessionRepository, String sessionId) { - decodeSessionRepository.delete(sessionId); + public ACParameters getACParameters(RemoteIndex remoteIndex, Integer mode) { + ACParameters acParameters = null; + try { + int categoryId = remoteIndex.getCategoryId(); + int subCate = remoteIndex.getSubCate(); + byte[] binaryContent = remoteIndex.getBinaries(); + IRDecode irDecode = IRDecode.getInstance(); + int ret = irDecode.openBinary(categoryId, subCate, binaryContent, binaryContent.length); + if (0 == ret) { + acParameters = new ACParameters(); + int[] supportedModes = irDecode.getACSupportedMode(); + if (DEBUG) { + LoggerUtil.getInstance().trace(TAG, "supported modes got : "); + for (int i = 0; i < supportedModes.length; i++) { + LoggerUtil.getInstance().trace(TAG, "supported mode [" + i + "] = " + supportedModes[i]); + } + } + acParameters.setSupportedModes(supportedModes); + if (1 == supportedModes[mode]) { + // if this mode is really supported by this AC, get other parameters + TemperatureRange temperatureRange = irDecode.getTemperatureRange(mode); + int[] supportedWindSpeed = irDecode.getACSupportedWindSpeed(mode); + + if (DEBUG) { + LoggerUtil.getInstance().trace(TAG, "supported wind speed got for mode : " + mode); + for (int i = 0; i < supportedWindSpeed.length; i++) { + LoggerUtil.getInstance().trace(TAG, "supported wind speed [" + i + "] = " + supportedWindSpeed[i]); + } + } + int[] supportedSwing = irDecode.getACSupportedSwing(mode); + + if (DEBUG) { + LoggerUtil.getInstance().trace(TAG, "supported swing got for mode : " + mode); + for (int i = 0; i < supportedSwing.length; i++) { + LoggerUtil.getInstance().trace(TAG, "supported swing [" + i + "] = " + supportedSwing[i]); + } + } + + int supportedWindDirection = irDecode.getACSupportedWindDirection(mode); + + if (DEBUG) { + LoggerUtil.getInstance().trace(TAG, + "supported wind directions for mode : " + mode + + " = " + supportedWindDirection); + } + + acParameters.setTempMax(temperatureRange.getTempMax()); + acParameters.setTempMin(temperatureRange.getTempMin()); + acParameters.setSupportedWindSpeed(supportedWindSpeed); + acParameters.setSupportedSwing(supportedSwing); + acParameters.setSupportedWindSpeed(supportedWindSpeed); + } + irDecode.closeBinary(); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + return acParameters; } // helper methods @@ -232,14 +250,16 @@ public class OperationLogic { if (ossChecksum.equals(checksum)) { FileUtil.createDirs(downloadPath); if (FileUtil.write(binFile, binaries)) { - LoggerUtil.getInstance().trace(TAG,"fatal : download file successfully"); + LoggerUtil.getInstance().trace(TAG,"download file successfully"); return new FileInputStream(binFile); } else { LoggerUtil.getInstance().trace(TAG,"fatal : write file to local path failed"); + return null; } } else { LoggerUtil.getInstance().trace(TAG,"fatal : checksum does not match even downloaded from OSS, " + " please contact the admin"); + return null; } } else{ LoggerUtil.getInstance().trace(TAG,"fatal : download file failed"); @@ -247,8 +267,8 @@ public class OperationLogic { } } catch (Exception e) { e.printStackTrace(); + return null; } - return null; } private InputStream getBinInputStream(String fileName) { diff --git a/server/src/main/java/net/irext/server/service/mapper/BrandMapper.java b/server/src/main/java/net/irext/server/service/mapper/BrandMapper.java index 2800ef0..d06cf6c 100644 --- a/server/src/main/java/net/irext/server/service/mapper/BrandMapper.java +++ b/server/src/main/java/net/irext/server/service/mapper/BrandMapper.java @@ -4,6 +4,7 @@ import net.irext.server.service.model.Brand; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; import java.util.List; @@ -18,6 +19,7 @@ import java.util.List; * 2019-06-21: created by strawmanbobi */ @Mapper +@Controller public interface BrandMapper { @Select("SELECT * FROM brand WHERE status = 1 AND category_id = #{categoryId} ORDER BY id LIMIT #{from}, #{count}") @ResultMap("BaseResultMap") diff --git a/server/src/main/java/net/irext/server/service/mapper/CategoryMapper.java b/server/src/main/java/net/irext/server/service/mapper/CategoryMapper.java index 3ef7f47..f71dec5 100644 --- a/server/src/main/java/net/irext/server/service/mapper/CategoryMapper.java +++ b/server/src/main/java/net/irext/server/service/mapper/CategoryMapper.java @@ -4,6 +4,7 @@ import net.irext.server.service.model.Category; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; import java.util.List; @@ -18,6 +19,7 @@ import java.util.List; * 2019-06-12: created by strawmanbobi */ @Mapper +@Controller public interface CategoryMapper { @Select("SELECT * FROM category WHERE status = 1 ORDER BY id LIMIT #{from}, #{count}") @ResultMap("BaseResultMap") diff --git a/server/src/main/java/net/irext/server/service/mapper/CityMapper.java b/server/src/main/java/net/irext/server/service/mapper/CityMapper.java index 0e0110b..8755093 100644 --- a/server/src/main/java/net/irext/server/service/mapper/CityMapper.java +++ b/server/src/main/java/net/irext/server/service/mapper/CityMapper.java @@ -4,6 +4,7 @@ import net.irext.server.service.model.City; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; import java.util.List; @@ -18,6 +19,7 @@ import java.util.List; * 2019-06-21: created by strawmanbobi */ @Mapper +@Controller public interface CityMapper { @Select("SELECT * FROM city WHERE code LIKE '__0000'") @ResultMap("BaseResultMap") diff --git a/server/src/main/java/net/irext/server/service/mapper/CollectKeyMapper.java b/server/src/main/java/net/irext/server/service/mapper/CollectKeyMapper.java new file mode 100644 index 0000000..b1ea3f7 --- /dev/null +++ b/server/src/main/java/net/irext/server/service/mapper/CollectKeyMapper.java @@ -0,0 +1,27 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.CollectKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.ResultMap; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; + +import java.util.List; + +/** + * Filename: CollectKeyMapper.java + * Revised: Date: 2020-04-05 + * Revision: Revision: 1.0 + *

+ * Description: CollectKeyMapper + *

+ * Revision log: + * 2020-04-05: created by strawmanbobi + */ +@Mapper +@Controller +public interface CollectKeyMapper { + @Select("SELECT * FROM collect_key WHERE collect_remote_id = #{collectRemoteId} AND key_id = #{keyNumber}") + @ResultMap("BaseResultMap") + List directDecode(int collectRemoteId, int keyNumber); +} diff --git a/server/src/main/java/net/irext/server/service/mapper/CollectRemoteMapper.java b/server/src/main/java/net/irext/server/service/mapper/CollectRemoteMapper.java new file mode 100644 index 0000000..a836eb1 --- /dev/null +++ b/server/src/main/java/net/irext/server/service/mapper/CollectRemoteMapper.java @@ -0,0 +1,30 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.CollectRemote; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Controller; + +import java.util.List; + +/** + * Filename: CollectRemoteMapper.java + * Revised: Date: 2018-12-08 + * Revision: Revision: 1.0 + *

+ * Description: CollectRemote Mybatis Mapper + *

+ * Revision log: + * 2018-12-08: created by strawmanbobi + */ +@Mapper +@Controller +public interface CollectRemoteMapper { + + @Select("SELECT * FROM collect_remote WHERE category_id = #{categoryId} AND brand_id = #{brandId} AND status = 2") + @ResultMap("BaseResultMap") + List selectCollectRemotesByBrand(Integer categoryId, Integer brandId); + + @Select("SELECT * FROM collect_remote WHERE category_id = #{categoryId} AND city_code = #{cityCode} AND status = 2") + @ResultMap("BaseResultMap") + List selectCollectRemotesByCity(Integer categoryId, String cityCode); +} diff --git a/server/src/main/java/net/irext/server/service/mapper/DecodeRemoteMapper.java b/server/src/main/java/net/irext/server/service/mapper/DecodeRemoteMapper.java new file mode 100644 index 0000000..41d0e6a --- /dev/null +++ b/server/src/main/java/net/irext/server/service/mapper/DecodeRemoteMapper.java @@ -0,0 +1,27 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.DecodeRemote; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.ResultMap; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; + +import java.util.List; + +/** + * Filename: DecodeRemoteMapper.java + * Revised: Date: 2020-04-05 + * Revision: Revision: 1.0 + *

+ * Description: DecodeRemoteMapper + *

+ * Revision log: + * 2020-04-05: created by strawmanbobi + */ +@Mapper +@Controller +public interface DecodeRemoteMapper { + @Select("SELECT * FROM decode_remote WHERE remote_index_id = #{remoteIndexId} AND key_number = #{keyNumber}") + @ResultMap("BaseResultMap") + List directDecode(int remoteIndexId, int keyNumber); +} diff --git a/server/src/main/java/net/irext/server/service/mapper/RemoteIndexMapper.java b/server/src/main/java/net/irext/server/service/mapper/RemoteIndexMapper.java index cbf85b3..fa27e88 100644 --- a/server/src/main/java/net/irext/server/service/mapper/RemoteIndexMapper.java +++ b/server/src/main/java/net/irext/server/service/mapper/RemoteIndexMapper.java @@ -4,6 +4,7 @@ import net.irext.server.service.model.RemoteIndex; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; import java.util.List; @@ -18,6 +19,7 @@ import java.util.List; * 2018-12-08: created by strawmanbobi */ @Mapper +@Controller public interface RemoteIndexMapper { @Select("SELECT * FROM remote_index WHERE id = #{id}") @ResultMap("BaseResultMap") diff --git a/server/src/main/java/net/irext/server/service/mapper/StbOperatorMapper.java b/server/src/main/java/net/irext/server/service/mapper/StbOperatorMapper.java index d2fb0cc..4e1484f 100644 --- a/server/src/main/java/net/irext/server/service/mapper/StbOperatorMapper.java +++ b/server/src/main/java/net/irext/server/service/mapper/StbOperatorMapper.java @@ -4,6 +4,7 @@ import net.irext.server.service.model.StbOperator; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Controller; import java.util.List; @@ -18,6 +19,7 @@ import java.util.List; * 2019-06-21: created by strawmanbobi */ @Mapper +@Controller public interface StbOperatorMapper { @Select("SELECT * FROM stb_operator WHERE city_code = #{cityCode}") @ResultMap("BaseResultMap") diff --git a/server/src/main/java/net/irext/server/service/model/CollectKey.java b/server/src/main/java/net/irext/server/service/model/CollectKey.java new file mode 100644 index 0000000..e954b76 --- /dev/null +++ b/server/src/main/java/net/irext/server/service/model/CollectKey.java @@ -0,0 +1,72 @@ +package net.irext.server.service.model; + +/** + * Filename: CollectKey.java + * Revised: Date: 2019-08-23 + * Revision: Revision: 1.0 + *

+ * Description: CollectKey Model + *

+ * Revision log: + * 2019-08-23: created by strawmanbobi + */ +public class CollectKey { + + private Integer id; + private Integer collectRemoteId; + private Integer keyId; + private String keyName; + private String keyValue; + + public CollectKey(Integer id, Integer collectRemoteId, Integer keyId, String keyName, String keyValue) { + this.id = id; + this.collectRemoteId = collectRemoteId; + this.keyId = keyId; + this.keyName = keyName; + this.keyValue = keyValue; + } + + public CollectKey() { + + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getCollectRemoteId() { + return collectRemoteId; + } + + public void setCollectRemoteId(Integer collectRemoteId) { + this.collectRemoteId = collectRemoteId; + } + + public Integer getKeyId() { + return keyId; + } + + public void setKeyId(Integer keyId) { + this.keyId = keyId; + } + + public String getKeyName() { + return keyName; + } + + public void setKeyName(String keyName) { + this.keyName = keyName; + } + + public String getKeyValue() { + return keyValue; + } + + public void setKeyValue(String keyValue) { + this.keyValue = keyValue; + } +} diff --git a/server/src/main/java/net/irext/server/service/model/CollectRemote.java b/server/src/main/java/net/irext/server/service/model/CollectRemote.java new file mode 100644 index 0000000..3d5eb43 --- /dev/null +++ b/server/src/main/java/net/irext/server/service/model/CollectRemote.java @@ -0,0 +1,175 @@ +package net.irext.server.service.model; + +public class CollectRemote { + + private Integer id; + private String name; + private Integer categoryId; + private String categoryName; + private Integer brandId; + private String brandName; + private String cityCode; + private String cityName; + private Integer operatorId; + private String operatorName; + private String protocol; + private String remote; + private String remoteMap; + private Byte status; + private String updateTime; + private String contributor; + + public CollectRemote(Integer id, String name, Integer categoryId, String categoryName, + Integer brandId, String brandName, + String cityCode, String cityName, Integer operatorId, String operatorName, + String protocol, String remote, String remoteMap, + Byte status, String updateTime, String contributor) { + this.id = id; + this.name = name; + this.categoryId = categoryId; + this.categoryName = categoryName; + this.brandId = brandId; + this.brandName = brandName; + this.cityCode = cityCode; + this.cityName = cityName; + this.operatorId = operatorId; + this.operatorName = operatorName; + this.protocol = protocol; + this.remote = remote; + this.remoteMap = remoteMap; + this.status = status; + this.updateTime = updateTime; + this.contributor = contributor; + } + + public CollectRemote() { + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getCategoryId() { + return categoryId; + } + + public void setCategoryId(Integer categoryId) { + this.categoryId = categoryId; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public Integer getBrandId() { + return brandId; + } + + public void setBrandId(Integer brandId) { + this.brandId = brandId; + } + + public String getBrandName() { + return brandName; + } + + public void setBrandName(String brandName) { + this.brandName = brandName; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public Integer getOperatorId() { + return operatorId; + } + + public void setOperatorId(Integer operatorId) { + this.operatorId = operatorId; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getRemote() { + return remote; + } + + public void setRemote(String remote) { + this.remote = remote; + } + + public String getRemoteMap() { + return remoteMap; + } + + public void setRemoteMap(String remoteMap) { + this.remoteMap = remoteMap; + } + + public Byte getStatus() { + return status; + } + + public void setStatus(Byte status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getContributor() { + return contributor; + } + + public void setContributor(String contributor) { + this.contributor = contributor; + } +} \ No newline at end of file diff --git a/server/src/main/java/net/irext/server/service/model/DecodeRemote.java b/server/src/main/java/net/irext/server/service/model/DecodeRemote.java new file mode 100644 index 0000000..ad58567 --- /dev/null +++ b/server/src/main/java/net/irext/server/service/model/DecodeRemote.java @@ -0,0 +1,103 @@ +package net.irext.server.service.model; + +public class DecodeRemote { + + private Integer id; + private Integer categoryId; + private Integer brandId; + private String cityCode; + private Integer operatorId; + private Integer remoteIndexId; + private Integer keyNumber; + private String keyName; + private String keyValue; + + public DecodeRemote(Integer id, Integer categoryId, Integer brandId, + String cityCode, Integer operatorId, + Integer remoteIndexId, Integer keyNumber, String keyName, String keyValue) { + this.id = id; + this.categoryId = categoryId; + this.brandId = brandId; + this.cityCode = cityCode; + this.operatorId = operatorId; + this.remoteIndexId = remoteIndexId; + this.keyNumber = keyNumber; + this.keyName = keyName; + this.keyValue = keyValue; + } + + public DecodeRemote() { + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getCategoryId() { + return categoryId; + } + + public void setCategoryId(Integer categoryId) { + this.categoryId = categoryId; + } + + public Integer getBrandId() { + return brandId; + } + + public void setBrandId(Integer brandId) { + this.brandId = brandId; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public Integer getOperatorId() { + return operatorId; + } + + public void setOperatorId(Integer operatorId) { + this.operatorId = operatorId; + } + + public Integer getRemoteIndexId() { + return remoteIndexId; + } + + public void setRemoteIndexId(Integer remoteIndexId) { + this.remoteIndexId = remoteIndexId; + } + + public Integer getKeyNumber() { + return keyNumber; + } + + public void setKeyNumber(Integer keyNumber) { + this.keyNumber = keyNumber; + } + + public String getKeyName() { + return keyName; + } + + public void setKeyName(String keyName) { + this.keyName = keyName; + } + + public String getKeyValue() { + return keyValue; + } + + public void setKeyValue(String keyValue) { + this.keyValue = keyValue; + } +} \ No newline at end of file diff --git a/server/src/main/java/net/irext/server/service/model/DecodeSession.java b/server/src/main/java/net/irext/server/service/model/DecodeSession.java deleted file mode 100644 index 6928273..0000000 --- a/server/src/main/java/net/irext/server/service/model/DecodeSession.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.irext.server.service.model; - -/** - * Filename: DecodeSession.java - * Revised: Date: 2018-12-29 - * Revision: Revision: 1.0 - *

- * Description: Decode session for decoding within connection - *

- * Revision log: - * 2018-12-29: created by strawmanbobi - */ -public class DecodeSession { - - private String sessionId; - private Integer binaryId; - - public DecodeSession(String sessionId, Integer binaryId) { - this.sessionId = sessionId; - this.binaryId = binaryId; - } - - public DecodeSession() { - - } - - public String getSessionId() { - return sessionId; - } - - public void setSessionId(String sessionId) { - this.sessionId = sessionId; - } - - public Integer getBinaryId() { - return binaryId; - } - - public void setBinaryId(Integer binaryId) { - this.binaryId = binaryId; - } -} diff --git a/server/src/main/java/net/irext/server/service/model/IRBinary.java b/server/src/main/java/net/irext/server/service/model/IRBinary.java deleted file mode 100644 index 78c7b29..0000000 --- a/server/src/main/java/net/irext/server/service/model/IRBinary.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.irext.server.service.model; - -/** - * Filename: IRBinary.java - * Revised: Date: 2018-12-30 - * Revision: Revision: 1.0 - *

- * Description: Remote binary in cache - *

- * Revision log: - * 2018-12-30: created by strawmanbobi - */ -public class IRBinary { - - private Integer id; - private byte[] binary; - - public IRBinary(Integer id, byte[] binary) { - this.id = id; - this.binary = binary; - } - - public IRBinary() { - - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public byte[] getBinary() { - return binary; - } - - public void setBinary(byte[] binary) { - this.binary = binary; - } -} diff --git a/server/src/main/java/net/irext/server/service/request/DecodeRequest.java b/server/src/main/java/net/irext/server/service/request/DecodeRequest.java index 53d0b9e..08bbef5 100644 --- a/server/src/main/java/net/irext/server/service/request/DecodeRequest.java +++ b/server/src/main/java/net/irext/server/service/request/DecodeRequest.java @@ -7,36 +7,40 @@ import net.irext.server.sdk.bean.ACStatus; * Revised: Date: 2017-05-16 * Revision: Revision: 1.0 *

- * Description: HTTP server online + * Description: HTTP decode online *

* Revision log: * 2017-05-16: created by strawmanbobi */ -public class DecodeRequest extends BaseRequest{ +public class DecodeRequest extends BaseRequest { - private int remoteIndexId; + private int indexId; private ACStatus acStatus; private int keyCode; private int changeWindDir; - private String sessionId; + private Integer directDecode; + private Integer paraData; - public DecodeRequest(int remoteIndexId, ACStatus acStatus, int keyCode, int changeWindDir) { - this.remoteIndexId = remoteIndexId; + public DecodeRequest(int indexId, ACStatus acStatus, int keyCode, int changeWindDir, + Integer directDecode, Integer paraData) { + this.indexId = indexId; this.acStatus = acStatus; this.keyCode = keyCode; this.changeWindDir = changeWindDir; + this.directDecode = directDecode; + this.paraData = paraData; } public DecodeRequest() { } - public int getRemoteIndexId() { - return remoteIndexId; + public int getIndexId() { + return indexId; } - public void setRemoteIndexId(int remoteIndexId) { - this.remoteIndexId = remoteIndexId; + public void setIndexId(int indexId) { + this.indexId = indexId; } public ACStatus getAcStatus() { @@ -63,11 +67,19 @@ public class DecodeRequest extends BaseRequest{ this.changeWindDir = changeWindDir; } - public String getSessionId() { - return sessionId; + public Integer getDirectDecode() { + return directDecode; } - public void setSessionId(String sessionId) { - this.sessionId = sessionId; + public void setDirectDecode(Integer directDecode) { + this.directDecode = directDecode; + } + + public Integer getParaData() { + return paraData; + } + + public void setParaData(Integer paraData) { + this.paraData = paraData; } } diff --git a/server/src/main/java/net/irext/server/service/request/GetACParametersRequest.java b/server/src/main/java/net/irext/server/service/request/GetACParametersRequest.java index b975140..9dacef7 100644 --- a/server/src/main/java/net/irext/server/service/request/GetACParametersRequest.java +++ b/server/src/main/java/net/irext/server/service/request/GetACParametersRequest.java @@ -11,14 +11,11 @@ package net.irext.server.service.request; * 2019-02-14: created by strawmanbobi */ public class GetACParametersRequest extends BaseRequest { - - private int remoteIndexId; - private String sessionId; + private int indexId; private int mode; - public GetACParametersRequest(int remoteIndexId, String sessionId, int mode) { - this.remoteIndexId = remoteIndexId; - this.sessionId = sessionId; + public GetACParametersRequest(int indexId, int mode) { + this.indexId = indexId; this.mode = mode; } @@ -26,20 +23,12 @@ public class GetACParametersRequest extends BaseRequest { } - public int getRemoteIndexId() { - return remoteIndexId; + public int getIndexId() { + return indexId; } - public void setRemoteIndexId(int remoteIndexId) { - this.remoteIndexId = remoteIndexId; - } - - public String getSessionId() { - return sessionId; - } - - public void setSessionId(String sessionId) { - this.sessionId = sessionId; + public void setIndexId(int indexId) { + this.indexId = indexId; } public int getMode() { diff --git a/server/src/main/java/net/irext/server/service/request/ListIndexesRequest.java b/server/src/main/java/net/irext/server/service/request/ListIndexesRequest.java index c66423e..b38d8ad 100644 --- a/server/src/main/java/net/irext/server/service/request/ListIndexesRequest.java +++ b/server/src/main/java/net/irext/server/service/request/ListIndexesRequest.java @@ -19,14 +19,18 @@ public class ListIndexesRequest extends BaseRequest { private String cityCode; private String operatorId; + // try index in IRIS with this flag set to 1 + private int withParaData; + public ListIndexesRequest(int from, int count, int categoryId, int brandId, - String cityCode, String operatorId) { + String cityCode, String operatorId, int withParaData) { this.from = from; this.count = count; this.categoryId = categoryId; this.brandId = brandId; this.cityCode = cityCode; this.operatorId = operatorId; + this.withParaData = withParaData; } public ListIndexesRequest() { @@ -80,4 +84,12 @@ public class ListIndexesRequest extends BaseRequest { public void setOperatorId(String operatorId) { this.operatorId = operatorId; } + + public int getWithParaData() { + return withParaData; + } + + public void setWithParaData(int withParaData) { + this.withParaData = withParaData; + } } diff --git a/server/src/main/java/net/irext/server/service/restapi/IRIndexingService.java b/server/src/main/java/net/irext/server/service/restapi/IRIndexingService.java index fc60c41..06a4867 100644 --- a/server/src/main/java/net/irext/server/service/restapi/IRIndexingService.java +++ b/server/src/main/java/net/irext/server/service/restapi/IRIndexingService.java @@ -207,6 +207,7 @@ public class IRIndexingService extends AbstractBaseService { String cityCode = listIndexesRequest.getCityCode(); int from = listIndexesRequest.getFrom(); int count = listIndexesRequest.getCount(); + int withParaData = listIndexesRequest.getWithParaData(); IndexesResponse response = validateToken(id, token, IndexesResponse.class); if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { @@ -214,7 +215,7 @@ public class IRIndexingService extends AbstractBaseService { } List remoteIndexList = - indexingLogic.listRemoteIndexes(categoryId, brandId, cityCode, from, count); + indexingLogic.listRemoteIndexes(categoryId, brandId, cityCode, from, count, withParaData); if (remoteIndexList != null) { response.getStatus().setCode(Constants.ERROR_CODE_SUCCESS); response.setEntity(remoteIndexList); diff --git a/server/src/main/java/net/irext/server/service/restapi/IROperationService.java b/server/src/main/java/net/irext/server/service/restapi/IROperationService.java index a8801d2..eb15b85 100644 --- a/server/src/main/java/net/irext/server/service/restapi/IROperationService.java +++ b/server/src/main/java/net/irext/server/service/restapi/IROperationService.java @@ -1,15 +1,14 @@ package net.irext.server.service.restapi; +import com.google.gson.Gson; import net.irext.server.service.businesslogic.OperationLogic; import net.irext.server.service.cache.IDecodeSessionRepository; import net.irext.server.service.cache.IIRBinaryRepository; import net.irext.server.service.model.ACParameters; -import net.irext.server.service.model.DecodeSession; import net.irext.server.service.model.RemoteIndex; import net.irext.server.service.request.*; import net.irext.server.service.response.*; import net.irext.server.service.utils.LoggerUtil; -import net.irext.server.service.utils.MD5Util; import net.irext.server.service.businesslogic.IndexingLogic; import net.irext.server.service.restapi.base.AbstractBaseService; import net.irext.server.sdk.bean.ACStatus; @@ -24,12 +23,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.HttpHeaders; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.text.SimpleDateFormat; /** * Filename: IRDecodeService.java @@ -88,9 +85,15 @@ public class IROperationService extends AbstractBaseService { @PostMapping("/download_bin") public ResponseEntity downloadBin( @RequestBody DownloadBinaryRequest downloadBinaryRequest) throws IOException { + int id = downloadBinaryRequest.getId(); + String token = downloadBinaryRequest.getToken(); + int indexId = downloadBinaryRequest.getIndexId(); + File downloadFile = operationLogic.getDownloadFile(context, indexId); - File downloadFile = operationLogic.getDownloadFile(context, downloadBinaryRequest.getIndexId()); - + ServiceResponse response = validateToken(id, token, ServiceResponse.class); + if (response.getStatus().getCode() == net.irext.server.service.Constants.ERROR_CODE_AUTH_FAILURE) { + return null; + } if (null == downloadFile) { return ResponseEntity.ok().body(null); } @@ -98,7 +101,7 @@ public class IROperationService extends AbstractBaseService { InputStreamResource resource = new InputStreamResource(new FileInputStream(downloadFile)); String fileName = downloadFile.getName(); long fileLength = downloadFile.length(); - + indexingLogic.statRemoteRef(indexId); return ResponseEntity.ok() // Content-Disposition .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName) @@ -107,74 +110,20 @@ public class IROperationService extends AbstractBaseService { .body(resource); } - @PostMapping("/open") - public StringResponse irOpen(HttpServletRequest request, @RequestBody OpenRequest openRequest) { - try { - int remoteIndexId = openRequest.getRemoteIndexId(); - - LoggerUtil.getInstance().trace(TAG, "irOpen API called : " + remoteIndexId); - - StringResponse response = new StringResponse(); - RemoteIndex remoteIndex = indexingLogic.getRemoteIndex(remoteIndexId); - if (null == remoteIndex) { - response.setStatus(new Status(Constants.ERROR_CODE_NETWORK_ERROR, - Constants.ERROR_CODE_NETWORK_ERROR_TEXT)); - response.setEntity(null); - return response; - } else { - LoggerUtil.getInstance().trace(TAG, "remoteIndex get : " + remoteIndex.getId() + ", " + - remoteIndex.getRemoteMap()); - } - RemoteIndex cachedRemoteIndex = - OperationLogic.getInstance().openIRBinary(context, irBinaryRepository, remoteIndex); - - if (null != cachedRemoteIndex) { - LoggerUtil.getInstance().trace(TAG, "binary content fetched : " + - cachedRemoteIndex.getRemoteMap()); - remoteIndex.setBinaries(cachedRemoteIndex.getBinaries()); - // construct a session with this binary - String address = request.getRemoteAddr(); - LoggerUtil.getInstance().trace(TAG, "request Address = " + address); - String timeStamp = - new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new java.util.Date()); - String sessionId = MD5Util.MD5Encode(address + timeStamp, null); - DecodeSession decodeSession = new DecodeSession(sessionId, remoteIndex.getId()); - decodeSessionRepository.add(decodeSession.getSessionId(), decodeSession.getBinaryId()); - response.setEntity(decodeSession.getSessionId()); - } - response.setStatus(new Status(Constants.ERROR_CODE_SUCCESS, Constants.ERROR_CODE_SUCESS_TEXT)); - return response; - } catch (Exception e) { - e.printStackTrace(); - return getExceptionResponse(StringResponse.class); - } - } - @PostMapping("/get_ac_parameters") public ACParametersResponse getACParameters(@RequestBody GetACParametersRequest getACParametersRequest) { + int id = getACParametersRequest.getId(); + String token = getACParametersRequest.getToken(); + ACParametersResponse response = validateToken(id, token, ACParametersResponse.class); + if (response.getStatus().getCode() == net.irext.server.service.Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } + try { - int remoteIndexId = getACParametersRequest.getRemoteIndexId(); - String sessionId = getACParametersRequest.getSessionId(); + int remoteIndexId = getACParametersRequest.getIndexId(); int mode = getACParametersRequest.getMode(); - - RemoteIndex cachedRemoteIndex = getCachedRemoteIndex(sessionId, remoteIndexId); - ACParametersResponse response = new ACParametersResponse(); - - if (null == cachedRemoteIndex) { - response.setEntity(null); - response.setStatus(new Status(Constants.ERROR_CODE_INVALID_SESSION, - Constants.ERROR_CODE_INVALID_SESSION_TEXT)); - return response; - } - - if (cachedRemoteIndex.getCategoryId() != Constants.CategoryID.AIR_CONDITIONER.getValue()) { - response.setEntity(null); - response.setStatus(new Status(Constants.ERROR_CODE_INVALID_CATEGORY, - Constants.ERROR_CODE_INVALID_CATEGORY_TEXT)); - return response; - } - - ACParameters acParameters = OperationLogic.getInstance().getACParameters(cachedRemoteIndex, mode); + RemoteIndex remoteIndex = operationLogic.prepareBinary(remoteIndexId); + ACParameters acParameters = OperationLogic.getInstance().getACParameters(remoteIndex, mode); response.setStatus(new Status(Constants.ERROR_CODE_SUCCESS, Constants.ERROR_CODE_SUCESS_TEXT)); response.setEntity(acParameters); @@ -187,45 +136,64 @@ public class IROperationService extends AbstractBaseService { } @PostMapping("/decode") - public DecodeResponse irDecode(@RequestBody DecodeRequest decodeRequest) { + public DecodeResponse decodeIR(@RequestBody DecodeRequest decodeRequest) { + int id = decodeRequest.getId(); + String token = decodeRequest.getToken(); + DecodeResponse response = validateToken(id, token, DecodeResponse.class); + if (response.getStatus().getCode() == net.irext.server.service.Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } try { - int remoteIndexId = decodeRequest.getRemoteIndexId(); + int indexId = decodeRequest.getIndexId(); ACStatus acStatus = decodeRequest.getAcStatus(); int keyCode = decodeRequest.getKeyCode(); int changeWindDir = decodeRequest.getChangeWindDir(); - String sessionId = decodeRequest.getSessionId(); + Integer directDecode = decodeRequest.getDirectDecode(); + Integer paraData = decodeRequest.getParaData(); + RemoteIndex remoteIndex = null; + int[] decoded = null; + LoggerUtil.getInstance().trace(TAG, "decodeIR entry, keyCode = " + keyCode + ", acStatus = " + + new Gson().toJson(acStatus)); - RemoteIndex cachedRemoteIndex = getCachedRemoteIndex(sessionId, remoteIndexId); - DecodeResponse response = new DecodeResponse(); - - if (null == cachedRemoteIndex) { - response.setEntity(null); - response.setStatus(new Status(Constants.ERROR_CODE_INVALID_SESSION, - Constants.ERROR_CODE_INVALID_SESSION_TEXT)); - return response; + // handle default value of arguments + if (null == directDecode) { + directDecode = 0; + } + if (null == paraData || 0 == paraData) { + paraData = 0; + // validate remote remoteIndex + remoteIndex = indexingLogic.getRemoteIndex(indexId); + if (null == remoteIndex) { + response.setEntity(null); + response.setStatus(new Status(Constants.ERROR_CODE_NETWORK_ERROR, + Constants.ERROR_CODE_NETWORK_ERROR_TEXT)); + return response; + } } - int[] irArray = OperationLogic.getInstance().decode( - cachedRemoteIndex, - acStatus, - keyCode, - changeWindDir); - - response.setStatus(new Status(Constants.ERROR_CODE_SUCCESS, Constants.ERROR_CODE_SUCESS_TEXT)); - response.setEntity(irArray); - return response; - } catch (Exception e) { - e.printStackTrace(); - return getExceptionResponse(DecodeResponse.class); - } - } - - @PostMapping("/close") - public ServiceResponse irClose(@RequestBody CloseRequest closeRequest) { - try { - String sessionId = closeRequest.getSessionId(); - ServiceResponse response = new ServiceResponse(); - OperationLogic.getInstance().close(decodeSessionRepository, sessionId); + if (1 == directDecode) { + decoded = operationLogic.decodeIRDirect(indexId, keyCode, paraData); + } else { + if (1 == paraData) { + response.setEntity(null); + response.setStatus(new Status(Constants.ERROR_CODE_INVALID_PARAMETER, + Constants.ERROR_CODE_INVALID_PARAMETER_TEXT)); + } else { + if (null == remoteIndex) { + response.setEntity(null); + response.setStatus(new Status(Constants.ERROR_CODE_NETWORK_ERROR, + Constants.ERROR_CODE_NETWORK_ERROR_TEXT)); + return response; + } + // NOTE: here remoteIndex instances changes + remoteIndex = operationLogic.prepareBinary(remoteIndex.getId()); + decoded = operationLogic.decodeIR(remoteIndex, acStatus, keyCode, changeWindDir); + } + } + response.setEntity(decoded); + if (null != remoteIndex) { + indexingLogic.statRemoteRef(remoteIndex); + } return response; } catch (Exception e) { e.printStackTrace(); diff --git a/server/src/main/resources/net/irext/server/service/mapper/CollectKeyMapper.xml b/server/src/main/resources/net/irext/server/service/mapper/CollectKeyMapper.xml new file mode 100644 index 0000000..b8cc492 --- /dev/null +++ b/server/src/main/resources/net/irext/server/service/mapper/CollectKeyMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/server/src/main/resources/net/irext/server/service/mapper/CollectRemoteMapper.xml b/server/src/main/resources/net/irext/server/service/mapper/CollectRemoteMapper.xml new file mode 100644 index 0000000..8f8b680 --- /dev/null +++ b/server/src/main/resources/net/irext/server/service/mapper/CollectRemoteMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/src/main/resources/net/irext/server/service/mapper/DecodeRemoteMapper.xml b/server/src/main/resources/net/irext/server/service/mapper/DecodeRemoteMapper.xml new file mode 100644 index 0000000..4bac65f --- /dev/null +++ b/server/src/main/resources/net/irext/server/service/mapper/DecodeRemoteMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/src/main/resources/net/irext/server/service/mapper/RemoteIndexMapper.xml b/server/src/main/resources/net/irext/server/service/mapper/RemoteIndexMapper.xml index adbc2c4..b7fc0bb 100644 --- a/server/src/main/resources/net/irext/server/service/mapper/RemoteIndexMapper.xml +++ b/server/src/main/resources/net/irext/server/service/mapper/RemoteIndexMapper.xml @@ -27,8 +27,8 @@ - + - + \ No newline at end of file