+ * Description: CachedAdmin DAO for redis + *
+ * Revision log: + * 2017-04-27: created by strawmanbobi + */ +public class CachedAdmin implements Serializable { + + private static final long serialVersionUID = 1L; + + private static final String OBJECT_KEY = "ADMIN"; + + private String id; + private String token; + + public CachedAdmin() { + } + + public CachedAdmin(String id) { + } + + public CachedAdmin(String id, String token) { + this.id = id; + this.token = token; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String toString() { + return "CachedAdmin [id=" + id + ", token=" + token + "]"; + } + + public String getKey() { + return getId(); + } + + public String getObjectKey() { + return OBJECT_KEY; + } +} \ No newline at end of file diff --git a/src/main/java/net/irext/server/redis/model/CachedBinary.java b/src/main/java/net/irext/server/redis/model/CachedBinary.java new file mode 100644 index 0000000..197a82b --- /dev/null +++ b/src/main/java/net/irext/server/redis/model/CachedBinary.java @@ -0,0 +1,66 @@ +package net.irext.server.redis.model; + +import java.io.Serializable; + +/** + * Filename: CachedBinary.java + * Revised: Date: 2017-05-16 + * Revision: Revision: 1.0 + *
+ * Description: IR binary cache for performance optimization on decoding + *
+ * Revision log: + * 2017-05-16: created by strawmanbobi + */ +public class CachedBinary implements Serializable { + + private static final long serialVersionUID = 1L; + + private static final String OBJECT_KEY = "BINARY"; + + private int id; + private byte[] binaries; + + public CachedBinary() { + } + + public CachedBinary(String id) { + } + + public CachedBinary(int id, byte[] binaries) { + this.id = id; + this.binaries = binaries; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public byte[] getBinaries() { + return binaries; + } + + public void setBinaries(byte[] binaries) { + this.binaries = binaries; + } + + @Override + public String toString() { + return "CachedBinary{" + + "id='" + id + '\'' + + ", binaries=" + binaries.length + + '}'; + } + + public int getKey() { + return getId(); + } + + public String getObjectKey() { + return OBJECT_KEY; + } +} \ No newline at end of file diff --git a/src/main/java/net/irext/server/redis/service/AdminService.java b/src/main/java/net/irext/server/redis/service/AdminService.java new file mode 100644 index 0000000..82d9cab --- /dev/null +++ b/src/main/java/net/irext/server/redis/service/AdminService.java @@ -0,0 +1,50 @@ +package net.irext.server.redis.service; + +import net.irext.server.redis.model.CachedAdmin; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Repository; + +/** + * Filename: AdminService.java + * Revised: Date: 2017-04-27 + * Revision: Revision: 1.0 + *
+ * Description: CachedAdmin redis service + *
+ * Revision log:
+ * 2017-04-27: created by strawmanbobi
+ */
+
+@Repository
+public class AdminService {
+
+ @Autowired
+ RedisTemplate
+ * Description: CachedBinary redis service
+ *
+ * Revision log:
+ * 2017-04-27: created by strawmanbobi
+ */
+
+@Repository
+public class BinaryService {
+
+ @Autowired
+ RedisTemplate
+ * Description: Token validation aspect logic
+ *
+ * Revision log:
+ * 2017-05-08: created by strawmanbobi
+ */
+public interface TokenValidation {
+
+ ServiceResponse validateToken(String userId, String token);
+
+
+ * Description: authentication factors included
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class BaseRequest {
+
+ private int id;
+ private String token;
+
+ public BaseRequest(int id, String token) {
+ this.id = id;
+ this.token = token;
+ }
+
+ BaseRequest() {
+
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String toJson() {
+ return new Gson().toJson(this, this.getClass());
+ }
+}
diff --git a/src/main/java/net/irext/server/service/request/CloseRequest.java b/src/main/java/net/irext/server/service/request/CloseRequest.java
index f24729e..c821099 100644
--- a/src/main/java/net/irext/server/service/request/CloseRequest.java
+++ b/src/main/java/net/irext/server/service/request/CloseRequest.java
@@ -10,7 +10,7 @@ package net.irext.server.service.request;
* Revision log:
* 2018-12-18: created by strawmanbobi
*/
-public class CloseRequest {
+public class CloseRequest extends BaseRequest {
private String sessionId;
diff --git a/src/main/java/net/irext/server/service/request/DecodeRequest.java b/src/main/java/net/irext/server/service/request/DecodeRequest.java
index 8cdbb71..53d0b9e 100644
--- a/src/main/java/net/irext/server/service/request/DecodeRequest.java
+++ b/src/main/java/net/irext/server/service/request/DecodeRequest.java
@@ -12,7 +12,7 @@ import net.irext.server.sdk.bean.ACStatus;
* Revision log:
* 2017-05-16: created by strawmanbobi
*/
-public class DecodeRequest {
+public class DecodeRequest extends BaseRequest{
private int remoteIndexId;
private ACStatus acStatus;
diff --git a/src/main/java/net/irext/server/service/request/DownloadBinaryRequest.java b/src/main/java/net/irext/server/service/request/DownloadBinaryRequest.java
index dfad5d8..c77c796 100755
--- a/src/main/java/net/irext/server/service/request/DownloadBinaryRequest.java
+++ b/src/main/java/net/irext/server/service/request/DownloadBinaryRequest.java
@@ -10,7 +10,7 @@ package net.irext.server.service.request;
* Revision log:
* 2017-04-14: created by strawmanbobi
*/
-public class DownloadBinaryRequest {
+public class DownloadBinaryRequest extends BaseRequest {
private int indexId;
diff --git a/src/main/java/net/irext/server/service/request/GetACParametersRequest.java b/src/main/java/net/irext/server/service/request/GetACParametersRequest.java
index 7685980..b975140 100644
--- a/src/main/java/net/irext/server/service/request/GetACParametersRequest.java
+++ b/src/main/java/net/irext/server/service/request/GetACParametersRequest.java
@@ -10,7 +10,7 @@ package net.irext.server.service.request;
* Revision log:
* 2019-02-14: created by strawmanbobi
*/
-public class GetACParametersRequest {
+public class GetACParametersRequest extends BaseRequest {
private int remoteIndexId;
private String sessionId;
diff --git a/src/main/java/net/irext/server/service/request/ListBrandsRequest.java b/src/main/java/net/irext/server/service/request/ListBrandsRequest.java
new file mode 100644
index 0000000..bf24ec8
--- /dev/null
+++ b/src/main/java/net/irext/server/service/request/ListBrandsRequest.java
@@ -0,0 +1,52 @@
+package net.irext.server.service.request;
+
+/**
+ * Filename: ListBrandsRequest.java
+ * Revised: Date: 2017-04-07
+ * Revision: Revision: 1.0
+ *
+ * Description: HTTP list brands request
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class ListBrandsRequest extends BaseRequest {
+
+ private int categoryId;
+ private int from;
+ private int count;
+
+ public ListBrandsRequest(int categoryId, int from, int count) {
+ this.categoryId = categoryId;
+ this.from = from;
+ this.count = count;
+ }
+
+ public ListBrandsRequest() {
+
+ }
+
+ public int getCategoryId() {
+ return categoryId;
+ }
+
+ public void setCategoryId(int categoryId) {
+ this.categoryId = categoryId;
+ }
+
+ public int getFrom() {
+ return from;
+ }
+
+ public void setFrom(int from) {
+ this.from = from;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+}
diff --git a/src/main/java/net/irext/server/service/request/ListCategoriesRequest.java b/src/main/java/net/irext/server/service/request/ListCategoriesRequest.java
new file mode 100644
index 0000000..c49644c
--- /dev/null
+++ b/src/main/java/net/irext/server/service/request/ListCategoriesRequest.java
@@ -0,0 +1,42 @@
+package net.irext.server.service.request;
+
+/**
+ * Filename: ListCategoriesRequest.java
+ * Revised: Date: 2017-04-07
+ * Revision: Revision: 1.0
+ *
+ * Description: HTTP list categories request
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class ListCategoriesRequest extends BaseRequest {
+
+ private int from;
+ private int count;
+
+ public ListCategoriesRequest(int from, int count) {
+ this.from = from;
+ this.count = count;
+ }
+
+ public ListCategoriesRequest() {
+
+ }
+
+ public int getFrom() {
+ return from;
+ }
+
+ public void setFrom(int from) {
+ this.from = from;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+}
diff --git a/src/main/java/net/irext/server/service/request/ListCitiesRequest.java b/src/main/java/net/irext/server/service/request/ListCitiesRequest.java
new file mode 100644
index 0000000..c8754e2
--- /dev/null
+++ b/src/main/java/net/irext/server/service/request/ListCitiesRequest.java
@@ -0,0 +1,32 @@
+package net.irext.server.service.request;
+
+/**
+ * Filename: ListCitiesRequest.java
+ * Revised: Date: 2017-04-07
+ * Revision: Revision: 1.0
+ *
+ * Description: HTTP list cities request
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class ListCitiesRequest extends BaseRequest {
+
+ private String provincePrefix;
+
+ public ListCitiesRequest(String provincePrefix) {
+ this.provincePrefix = provincePrefix;
+ }
+
+ public ListCitiesRequest() {
+
+ }
+
+ public String getProvincePrefix() {
+ return provincePrefix;
+ }
+
+ public void setProvincePrefix(String provincePrefix) {
+ this.provincePrefix = provincePrefix;
+ }
+}
diff --git a/src/main/java/net/irext/server/service/request/ListIndexesRequest.java b/src/main/java/net/irext/server/service/request/ListIndexesRequest.java
new file mode 100644
index 0000000..c66423e
--- /dev/null
+++ b/src/main/java/net/irext/server/service/request/ListIndexesRequest.java
@@ -0,0 +1,83 @@
+package net.irext.server.service.request;
+
+/**
+ * Filename: ListIndexesRequest.java
+ * Revised: Date: 2017-04-12
+ * Revision: Revision: 1.0
+ *
+ * Description: HTTP list remote indexes request
+ *
+ * Revision log:
+ * 2017-04-12: created by strawmanbobi
+ */
+public class ListIndexesRequest extends BaseRequest {
+
+ private int from;
+ private int count;
+ private int categoryId;
+ private int brandId;
+ private String cityCode;
+ private String operatorId;
+
+ public ListIndexesRequest(int from, int count, int categoryId, int brandId,
+ String cityCode, String operatorId) {
+ this.from = from;
+ this.count = count;
+ this.categoryId = categoryId;
+ this.brandId = brandId;
+ this.cityCode = cityCode;
+ this.operatorId = operatorId;
+ }
+
+ public ListIndexesRequest() {
+
+ }
+
+ public int getFrom() {
+ return from;
+ }
+
+ public void setFrom(int from) {
+ this.from = from;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public int getCategoryId() {
+ return categoryId;
+ }
+
+ public void setCategoryId(int categoryId) {
+ this.categoryId = categoryId;
+ }
+
+ public int getBrandId() {
+ return brandId;
+ }
+
+ public void setBrandId(int brandId) {
+ this.brandId = brandId;
+ }
+
+ public String getCityCode() {
+ return cityCode;
+ }
+
+ public void setCityCode(String cityCode) {
+ this.cityCode = cityCode;
+ }
+
+ public String getOperatorId() {
+ return operatorId;
+ }
+
+ public void setOperatorId(String operatorId) {
+ this.operatorId = operatorId;
+ }
+}
diff --git a/src/main/java/net/irext/server/service/request/ListOperatorsRequest.java b/src/main/java/net/irext/server/service/request/ListOperatorsRequest.java
new file mode 100644
index 0000000..6bac22e
--- /dev/null
+++ b/src/main/java/net/irext/server/service/request/ListOperatorsRequest.java
@@ -0,0 +1,52 @@
+package net.irext.server.service.request;
+
+/**
+ * Filename: ListOperatorsRequest.java
+ * Revised: Date: 2017-04-10
+ * Revision: Revision: 1.0
+ *
+ * Description: HTTP list STB operators request
+ *
+ * Revision log:
+ * 2017-04-10: created by strawmanbobi
+ */
+public class ListOperatorsRequest extends BaseRequest {
+
+ private int from;
+ private int count;
+ private String cityCode;
+
+ public ListOperatorsRequest(int from, int count, String cityCode) {
+ this.from = from;
+ this.count = count;
+ this.cityCode = cityCode;
+ }
+
+ public ListOperatorsRequest() {
+
+ }
+
+ public int getFrom() {
+ return from;
+ }
+
+ public void setFrom(int from) {
+ this.from = from;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getCityCode() {
+ return cityCode;
+ }
+
+ public void setCityCode(String cityCode) {
+ this.cityCode = cityCode;
+ }
+}
diff --git a/src/main/java/net/irext/server/service/response/BrandsResponse.java b/src/main/java/net/irext/server/service/response/BrandsResponse.java
new file mode 100644
index 0000000..1e36c4e
--- /dev/null
+++ b/src/main/java/net/irext/server/service/response/BrandsResponse.java
@@ -0,0 +1,37 @@
+package net.irext.server.service.response;
+
+import net.irext.server.service.model.Brand;
+
+import java.util.List;
+
+/**
+ * Filename: BrandsResponse.java
+ * Revised: Date: 2017-04-07
+ * Revision: Revision: 1.0
+ *
+ * Description: List brands response
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class BrandsResponse extends ServiceResponse {
+
+ private List
+ * Description: List categories response
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class CategoriesResponse extends ServiceResponse {
+
+ private List
+ * Description: List cities response
+ *
+ * Revision log:
+ * 2017-04-07: created by strawmanbobi
+ */
+public class CitiesResponse extends ServiceResponse {
+
+ private List
+ * Description: List STB operators response
+ *
+ * Revision log:
+ * 2017-04-10: created by strawmanbobi
+ */
+public class OperatorsResponse extends ServiceResponse {
+
+ private List
- * Description: IRext Decode WebService
+ * Description: IRext Decode Webservice
*
* Revision log:
* 2018-12-16: created by strawmanbobi
*/
@RestController
-@RequestMapping("/irext")
+@RequestMapping("/irext-server/decode")
@Service("IRDecodeService")
public class IRDecodeService extends AbstractBaseService {
@@ -69,7 +69,7 @@ public class IRDecodeService extends AbstractBaseService {
LoggerUtil.getInstance().trace(TAG, "irOpen API called : " + remoteIndexId);
StringResponse response = new StringResponse();
- RemoteIndex remoteIndex = IndexLogic.getInstance(remoteIndexMapper).getRemoteIndex(remoteIndexId);
+ RemoteIndex remoteIndex = IndexingLogic.getInstance(remoteIndexMapper).getRemoteIndex(remoteIndexId);
if (null == remoteIndex) {
response.setStatus(new Status(Constants.ERROR_CODE_NETWORK_ERROR,
Constants.ERROR_CODE_NETWORK_ERROR_TEXT));
diff --git a/src/main/java/net/irext/server/service/restapi/IRIndexingService.java b/src/main/java/net/irext/server/service/restapi/IRIndexingService.java
new file mode 100644
index 0000000..8c0e099
--- /dev/null
+++ b/src/main/java/net/irext/server/service/restapi/IRIndexingService.java
@@ -0,0 +1,89 @@
+package net.irext.server.service.restapi;
+
+import net.irext.server.service.Constants;
+import net.irext.server.service.businesslogic.IndexingLogic;
+import net.irext.server.service.mapper.RemoteIndexMapper;
+import net.irext.server.service.model.Category;
+import net.irext.server.service.request.*;
+import net.irext.server.service.response.*;
+import net.irext.server.service.restapi.base.AbstractBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.HeaderParam;
+import java.util.List;
+
+/**
+ * Filename: IRIndexingService.java
+ * Revised: Date: 2019-06-08
+ * Revision: Revision: 1.0
+ *
+ * Description: IRext Indexing Webservice
+ *
+ * Revision log:
+ * 2019-06-08: created by strawmanbobi
+ */
+@RestController
+@RequestMapping("/irext-server/indexing")
+@Service("IRDecodeService")
+public class IRIndexingService extends AbstractBaseService {
+
+ private static final String TAG = IRIndexingService.class.getSimpleName();
+
+ @Autowired
+ private ServletContext context;
+
+ @Autowired
+ private IndexingLogic indexingLogic;
+
+ public IRIndexingService(RemoteIndexMapper remoteIndexMapper) {
+ }
+
+ @PostMapping("/list_categories")
+ public CategoriesResponse listCategories(@HeaderParam("user-lang") String userLang,
+ ListCategoriesRequest listCategoriesRequest) {
+ try {
+ int id = listCategoriesRequest.getId();
+ String token = listCategoriesRequest.getToken();
+ int from = listCategoriesRequest.getFrom();
+ int count = listCategoriesRequest.getCount();
+ int lang = Constants.LANG_ZH_CN;
+
+ if (null != userLang) {
+ if (userLang.equals("en-US")) {
+ lang = Constants.LANG_EN;
+ } else if (userLang.equals("zh-TW")) {
+ lang = Constants.LANG_TW_CN;
+ } else {
+ lang = Constants.LANG_ZH_CN;
+ }
+ }
+
+ System.out.println("language = " + lang);
+
+ CategoriesResponse response = validateToken(Integer.toString(id), token, CategoriesResponse.class);
+ if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) {
+ return response;
+ }
+
+ List