diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/pom.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/pom.xml
index 976bbb84c77..e332baf0be5 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/pom.xml
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/pom.xml
@@ -122,8 +122,6 @@
org.codehaus.jackson
jackson-core-asl
-
-
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewNode.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewNode.java
new file mode 100644
index 00000000000..5a7f9930b7f
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewNode.java
@@ -0,0 +1,67 @@
+package org.wso2.carbon.device.application.mgt.common;
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you 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.
+ */
+
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ReviewNode {
+
+ private T data = null;
+
+ private List> children = new ArrayList<>();
+
+ private ReviewNode parent = null;
+
+ public ReviewNode(T data) {
+ this.data = data;
+ }
+
+ public ReviewNode addChild(ReviewNode child) {
+ child.setParent(this);
+ this.children.add(child);
+ return child;
+ }
+
+ public void addChildren(List> children) {
+ children.forEach(each -> each.setParent(this));
+ this.children.addAll(children);
+ }
+
+ public List> getChildren() {
+ return children;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ private void setParent(ReviewNode parent) {
+ this.parent = parent;
+ }
+
+ public ReviewNode getParent() {
+ return parent;
+ }
+
+}
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/Review.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewTmp.java
similarity index 87%
rename from components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/Review.java
rename to components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewTmp.java
index e2a488ce3e0..98998dbfebd 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/Review.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ReviewTmp.java
@@ -23,8 +23,8 @@ import io.swagger.annotations.ApiModelProperty;
import java.sql.Timestamp;
-@ApiModel(value = "Review", description = "Review represents the user's review for an application release")
-public class Review {
+@ApiModel(value = "ReviewTmp", description = "ReviewTmp represents the user's review for an application release")
+public class ReviewTmp {
@ApiModelProperty(name = "id",
value = "The Id given to the comment when it store to the App manager")
@@ -55,9 +55,9 @@ public class Review {
value = "Rating value of the application release")
private int rating;
- @ApiModelProperty(name = "replyReview",
+ @ApiModelProperty(name = "replyReviewTmp",
value = "Replying review")
- private Review replyReview;
+ private ReviewTmp replyReviewTmp;
public int getId() {
return id;
@@ -115,12 +115,12 @@ public class Review {
this.parentId = parentId;
}
- public Review getReplyReview() {
- return replyReview;
+ public ReviewTmp getReplyReviewTmp() {
+ return replyReviewTmp;
}
- public void setReplyReview(Review replyReview) {
- this.replyReview = replyReview;
+ public void setReplyReviewTmp(ReviewTmp replyReviewTmp) {
+ this.replyReviewTmp = replyReviewTmp;
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/dto/ReviewDTO.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/dto/ReviewDTO.java
new file mode 100644
index 00000000000..64cc3a11d2c
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/dto/ReviewDTO.java
@@ -0,0 +1,87 @@
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you 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.wso2.carbon.device.application.mgt.common.dto;
+
+import java.sql.Timestamp;
+
+public class ReviewDTO {
+ private int id;
+ private String content;
+ private String username;
+ private Timestamp createdAt;
+ private Timestamp modifiedAt;
+ private int rating;
+ private int rootParentId;
+ private int immediateParentId;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public Timestamp getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Timestamp createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Timestamp getModifiedAt() {
+ return modifiedAt;
+ }
+
+ public void setModifiedAt(Timestamp modifiedAt) {
+ this.modifiedAt = modifiedAt;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+
+ public int getRootParentId() { return rootParentId; }
+
+ public void setRootParentId(int rootParentId) { this.rootParentId = rootParentId; }
+
+ public int getImmediateParentId() { return immediateParentId; }
+
+ public void setImmediateParentId(int immediateParentId) { this.immediateParentId = immediateParentId; }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/response/Review.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/response/Review.java
new file mode 100644
index 00000000000..4acfa1e6a6e
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/response/Review.java
@@ -0,0 +1,102 @@
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you 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.wso2.carbon.device.application.mgt.common.response;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+public class Review {
+
+ private int id;
+ private String content;
+ private int rootParentId;
+ private int immediateParentId;
+ private String username;
+ private Timestamp createdAt;
+ private Timestamp modifiedAt;
+ private int rating;
+ private List replies;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public int getRootParentId() {
+ return rootParentId;
+ }
+
+ public void setRootParentId(int rootParentId) {
+ this.rootParentId = rootParentId;
+ }
+
+ public int getImmediateParentId() {
+ return immediateParentId;
+ }
+
+ public void setImmediateParentId(int immediateParentId) {
+ this.immediateParentId = immediateParentId;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public Timestamp getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Timestamp createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Timestamp getModifiedAt() {
+ return modifiedAt;
+ }
+
+ public void setModifiedAt(Timestamp modifiedAt) {
+ this.modifiedAt = modifiedAt;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+
+ public List getReplies() { return replies; }
+
+ public void setReplies(List replies) { this.replies = replies; }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ApplicationManager.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ApplicationManager.java
index 9b9874062ed..cf49bf2a326 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ApplicationManager.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ApplicationManager.java
@@ -150,8 +150,9 @@ public interface ApplicationManager {
* @param releaseUuid UUID of the ApplicationDTO Release.
* @param lifecycleChanger Lifecycle changer that contains the action and the reson for the change.
* @throws ApplicationManagementException ApplicationDTO Management Exception.
+ * @return
*/
- void changeLifecycleState(String releaseUuid, LifecycleChanger lifecycleChanger)
+ ApplicationRelease changeLifecycleState(String releaseUuid, LifecycleChanger lifecycleChanger)
throws ApplicationManagementException;
/**
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ReviewManager.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ReviewManager.java
index 82c751feb75..d677fa0e562 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ReviewManager.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/ReviewManager.java
@@ -18,16 +18,14 @@
*/
package org.wso2.carbon.device.application.mgt.common.services;
-import javassist.NotFoundException;
import org.wso2.carbon.device.application.mgt.common.Rating;
-import org.wso2.carbon.device.application.mgt.common.Review;
+import org.wso2.carbon.device.application.mgt.common.ReviewTmp;
import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
import org.wso2.carbon.device.application.mgt.common.PaginationResult;
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
-import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewDoesNotExistException;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
-
+import org.wso2.carbon.device.application.mgt.common.wrapper.ReviewWrapper;
/**
* ReviewManager is responsible for handling all the add/update/delete/get operations related with
@@ -35,15 +33,18 @@ import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementE
public interface ReviewManager {
/**
- * To add a review to an application release
+ * To add a reviewTmp to an application release
*
- * @param review review of the application.
+ * @param reviewWrapper reviewTmp of the application.
* @param uuid uuid of the application release.
- * @return {@link Review} Review added
- * @throws ReviewManagementException Exceptions of the review management.
+ * @return {@link ReviewTmp} ReviewTmp added
+ * @throws ReviewManagementException Exceptions of the reviewTmp management.
*/
- boolean addReview(Review review, String uuid)
- throws ReviewManagementException, RequestValidatingException, ApplicationManagementException;
+ boolean addReview(ReviewWrapper reviewWrapper, String uuid)
+ throws ReviewManagementException, ApplicationManagementException;
+
+ boolean addReplyComment(ReviewWrapper reviewWrapper, String uuid, int parentReviewId)
+ throws ReviewManagementException, ApplicationManagementException;
/**
* Get all review with pagination
@@ -53,7 +54,8 @@ public interface ReviewManager {
* @return {@link PaginationResult} pagination result with starting offSet and limit
* @throws ReviewManagementException Exceptions of the comment management.
*/
- PaginationResult getAllReviews(PaginationRequest request, String uuid) throws ReviewManagementException;
+ PaginationResult getAllReviews(PaginationRequest request, String uuid)
+ throws ReviewManagementException, ApplicationManagementException;
/**
* To delete review using review id.
@@ -67,24 +69,21 @@ public interface ReviewManager {
throws ReviewManagementException, ReviewDoesNotExistException;
/**
- * To update a review.
+ * To update a reviewTmp.
*
- * @param review review of the application.
- * @param reviewId id of the review
+ * @param reviewId id of the reviewTmp
* @param uuid UUID of the application release
- * @param existingReview Pass existing review when same user adding a review for same application release,
- * otherwise pass null
- * @return {@link Review}updated review
- * @throws ReviewManagementException Exceptions of the review management
+ * @return {@link ReviewTmp}updated reviewTmp
+ * @throws ReviewManagementException Exceptions of the reviewTmp management
*/
- boolean updateReview(Review review, int reviewId, String uuid, Review existingReview)
- throws ReviewManagementException, RequestValidatingException;
+ boolean updateReview(ReviewWrapper updatingReview, int reviewId, String uuid)
+ throws ReviewManagementException, ApplicationManagementException;
/**
* To get the overall rating for a application release
*
* @param appReleaseUuuid UUID of the application release.
- * @return {@link Review}updated review
+ * @return {@link ReviewTmp}updated review
* @throws ReviewManagementException Exceptions of the review management
*/
Rating getRating(String appReleaseUuuid) throws ReviewManagementException;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrapper/ReviewWrapper.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrapper/ReviewWrapper.java
new file mode 100644
index 00000000000..120df8cc1b6
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrapper/ReviewWrapper.java
@@ -0,0 +1,39 @@
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you 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.wso2.carbon.device.application.mgt.common.wrapper;
+
+public class ReviewWrapper {
+ private String content;
+ private int rating;
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/ReviewDAO.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/ReviewDAO.java
index 1018bc78b2d..e7f74cdeb0f 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/ReviewDAO.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/ReviewDAO.java
@@ -18,8 +18,9 @@
*/
package org.wso2.carbon.device.application.mgt.core.dao;
-import org.wso2.carbon.device.application.mgt.common.Review;
+import org.wso2.carbon.device.application.mgt.common.ReviewTmp;
import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.application.mgt.common.dto.ReviewDTO;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.exception.ReviewManagementDAOException;
@@ -34,38 +35,37 @@ import java.util.List;
public interface ReviewDAO {
/**
- * To add a review to an application release.
+ * To add a reviewTmp to an application release.
*
* @param tenantId tenantId.
- * @param review review of the application.
- * @param uuid UUID of the application release
- * @return If review is added successfully, it return true otherwise false
- * @throws ReviewManagementDAOException Exceptions of the review management DAO.
+ * @param reviewDTO reviewTmp of the application.
+ * @param appReleaseId UUID of the application release
+ * @return If reviewTmp is added successfully, it return true otherwise false
+ * @throws ReviewManagementDAOException Exceptions of the reviewTmp management DAO.
*/
- boolean addReview(Review review, String uuid, int tenantId) throws ReviewManagementDAOException;
+ boolean addReview(ReviewDTO reviewDTO, int appReleaseId, int tenantId) throws ReviewManagementDAOException;
/**
* To verify whether user has already commented for the application release or not.
*
- * @param uuid UUID of the application release.
+ * @param appReleaseId ID of the application release.
* @param username username of the logged in user.
* @param tenantId tenantId of the commented application.
* @return If review exists, review returns
* @throws ReviewManagementDAOException Exceptions of the review management DAO.
*/
- Review haveUerCommented(String uuid, String username, int tenantId) throws ReviewManagementDAOException;
+ boolean haveUerReviewed(int appReleaseId, String username, int tenantId) throws ReviewManagementDAOException;
/**
* To update already added comment.
*
- * @param review Updating review
- * @param reviewId id of the updating review
- * @param username review owner
+ * @param reviewDTO Updating reviewTmp
+ * @param reviewId id of the updating reviewTmp
* @param tenantId tenant id
* @return row count if updating is succeed otherwise 0
- * @throws ReviewManagementDAOException Exceptions of the review management.
+ * @throws ReviewManagementDAOException Exceptions of the reviewTmp management.
*/
- int updateReview(Review review, int reviewId, String username, int tenantId)
+ int updateReview(ReviewDTO reviewDTO, int reviewId, int tenantId)
throws ReviewManagementDAOException;
@@ -73,23 +73,29 @@ import java.util.List;
* To get the comment with id.
*
* @param reviewId id of the review
- * @return {@link Review}Review
+ * @return {@link ReviewTmp}ReviewTmp
* @throws ReviewManagementDAOException Exceptions of the review management DAO.
*/
- Review getReview(int reviewId) throws ReviewManagementDAOException;
+ ReviewDTO getReview(int reviewId) throws ReviewManagementDAOException;
+
+ ReviewDTO getReview(int appReleaseId, int reviewId) throws ReviewManagementDAOException;
+
/**
* To get all reviews
*
- * @param uuid uuid of the application
+ * @param releaseId ID of the application release.
* @param request {@link PaginationRequest}pagination request with offSet and limit
* @param tenantId Tenant id
* @return {@link List}List of all reviews for the application release
- * @throws ReviewManagementDAOException Review management DAO exception
+ * @throws ReviewManagementDAOException ReviewTmp management DAO exception
**/
- List getAllReviews(String uuid, PaginationRequest request, int tenantId)
+ List getAllReviews(int releaseId, PaginationRequest request, int tenantId)
throws ReviewManagementDAOException;
+ List getReplyComments(int parentId, int tenantId)
+ throws ReviewManagementDAOException;
+
/**
* To get list of comments using release id and application id.
* @param uuid UUID of the application release
@@ -119,7 +125,7 @@ import java.util.List;
* @param username username of the review owner
* @param reviewId id of the review
* @return If review is successfully deleted return 1, otherwise returns 0.
- * @throws ReviewManagementDAOException Review management DAO exception.
+ * @throws ReviewManagementDAOException ReviewTmp management DAO exception.
*/
int deleteReview(String username, int reviewId) throws ReviewManagementDAOException;
@@ -137,8 +143,8 @@ import java.util.List;
* To get review count for a specific application release
*
* @param uuid uuid of the application release
- * @return Review count
- * @throws ReviewManagementDAOException Review management DAO exception
+ * @return ReviewTmp count
+ * @throws ReviewManagementDAOException ReviewTmp management DAO exception
*/
int getReviewCount(String uuid) throws ReviewManagementDAOException;
}
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/ApplicationManagementDAOFactory.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/ApplicationManagementDAOFactory.java
index 1aa44c03322..b800a4fd5ac 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/ApplicationManagementDAOFactory.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/ApplicationManagementDAOFactory.java
@@ -23,7 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.common.exception.UnsupportedDatabaseEngineException;
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
import org.wso2.carbon.device.application.mgt.core.dao.*;
-import org.wso2.carbon.device.application.mgt.core.dao.impl.Review.ReviewDAOImpl;
+import org.wso2.carbon.device.application.mgt.core.dao.impl.review.ReviewDAOImpl;
import org.wso2.carbon.device.application.mgt.core.dao.impl.application.GenericApplicationDAOImpl;
import org.wso2.carbon.device.application.mgt.core.dao.impl.application.release.GenericApplicationReleaseDAOImpl;
import org.wso2.carbon.device.application.mgt.core.dao.impl.application.OracleApplicationDAOImpl;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java
index 0120cccf6b5..59ef55e1b47 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/GenericApplicationDAOImpl.java
@@ -30,7 +30,7 @@ import org.wso2.carbon.device.application.mgt.common.Filter;
import org.wso2.carbon.device.application.mgt.common.dto.TagDTO;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
import org.wso2.carbon.device.application.mgt.core.exception.UnexpectedServerErrorException;
@@ -90,7 +90,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding the application", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -120,7 +120,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
throw new ApplicationManagementDAOException(
"DB connection error occured while checking whether application exist or not.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -158,6 +158,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
+ "AP_APP_RELEASE.APP_HASH_VALUE AS RELEASE_HASH_VALUE, "
+ "AP_APP_RELEASE.APP_PRICE AS RELEASE_PRICE, "
+ "AP_APP_RELEASE.APP_META_INFO AS RELEASE_META_INFO, "
+ + "AP_APP_RELEASE.PACKAGE_NAME AS PACKAGE_NAME, "
+ "AP_APP_RELEASE.SUPPORTED_OS_VERSIONS AS RELEASE_SUP_OS_VERSIONS, "
+ "AP_APP_RELEASE.RATING AS RELEASE_RATING, "
+ "AP_APP_RELEASE.CURRENT_STATE AS RELEASE_CURRENT_STATE, "
@@ -248,7 +249,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
}
stmt.setInt(paramIndex, filter.getOffset());
rs = stmt.executeQuery();
- return Util.loadApplications(rs);
+ return DAOUtil.loadApplications(rs);
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while getting application list for the tenant"
+ " " + tenantId + ". While executing " + sql, e);
@@ -259,7 +260,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (JSONException e) {
throw new ApplicationManagementDAOException("Error occurred while parsing JSON ", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -294,7 +295,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection for "
+ "getting app release id", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -338,7 +339,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
return count;
}
@@ -373,7 +374,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
+ appType + "and app name " + appName);
}
- return Util.loadApplication(rs);
+ return DAOUtil.loadApplication(rs);
} catch (SQLException e) {
throw new ApplicationManagementDAOException(
@@ -386,7 +387,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (UnexpectedServerErrorException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -416,7 +417,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
log.debug("Successfully retrieved basic details of the application with the id:" + id);
}
- return Util.loadApplication(rs);
+ return DAOUtil.loadApplication(rs);
} catch (SQLException e) {
throw new ApplicationManagementDAOException(
@@ -429,7 +430,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (UnexpectedServerErrorException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -468,6 +469,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
+ "AP_APP_RELEASE.APP_HASH_VALUE AS RELEASE_HASH_VALUE, "
+ "AP_APP_RELEASE.APP_PRICE AS RELEASE_PRICE, "
+ "AP_APP_RELEASE.APP_META_INFO AS RELEASE_META_INFO, "
+ + "AP_APP_RELEASE.PACKAGE_NAME AS PACKAGE_NAME, "
+ "AP_APP_RELEASE.SUPPORTED_OS_VERSIONS AS RELEASE_SUP_OS_VERSIONS, "
+ "AP_APP_RELEASE.RATING AS RELEASE_RATING, "
+ "AP_APP_RELEASE.CURRENT_STATE AS RELEASE_CURRENT_STATE, "
@@ -490,7 +492,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
+ releaseUuid);
}
- return Util.loadApplication(rs);
+ return DAOUtil.loadApplication(rs);
} catch (SQLException e) {
throw new ApplicationManagementDAOException(
@@ -503,7 +505,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (UnexpectedServerErrorException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -542,6 +544,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
+ "AP_APP_RELEASE.APP_HASH_VALUE AS RELEASE_HASH_VALUE, "
+ "AP_APP_RELEASE.APP_PRICE AS RELEASE_PRICE, "
+ "AP_APP_RELEASE.APP_META_INFO AS RELEASE_META_INFO, "
+ + "AP_APP_RELEASE.PACKAGE_NAME AS PACKAGE_NAME, "
+ "AP_APP_RELEASE.SUPPORTED_OS_VERSIONS AS RELEASE_SUP_OS_VERSIONS, "
+ "AP_APP_RELEASE.RATING AS RELEASE_RATING, "
+ "AP_APP_RELEASE.CURRENT_STATE AS RELEASE_CURRENT_STATE, "
@@ -562,7 +565,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
log.debug("Successfully retrieved basic details of the application with the id "
+ applicationId);
}
- return Util.loadApplication(rs);
+ return DAOUtil.loadApplication(rs);
} catch (SQLException e) {
throw new ApplicationManagementDAOException(
"Error occurred while getting application details with app id " + applicationId +
@@ -574,7 +577,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (UnexpectedServerErrorException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -607,7 +610,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -662,7 +665,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while deleting the application: ", e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -693,7 +696,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding tags", e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -730,7 +733,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding tags", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -767,7 +770,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while getting categories", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -859,7 +862,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding categories.", e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -892,7 +895,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding data into category mapping.", e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -1101,7 +1104,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while adding tags", e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -1459,7 +1462,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
throw new ApplicationManagementDAOException(
"Error occurred while deleting tags of application: " + applicationId, e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -1497,7 +1500,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
ApplicationDTO application = null;
while (rs.next()) {
- ApplicationReleaseDTO appRelease = Util.loadApplicationRelease(rs);
+ ApplicationReleaseDTO appRelease = DAOUtil.loadApplicationRelease(rs);
application = new ApplicationDTO();
application.setId(rs.getInt("APP_ID"));
@@ -1528,7 +1531,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -1557,7 +1560,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while getting application List", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/OracleApplicationDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/OracleApplicationDAOImpl.java
index 0e49ea4a061..56432d8db03 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/OracleApplicationDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/OracleApplicationDAOImpl.java
@@ -21,20 +21,6 @@ package org.wso2.carbon.device.application.mgt.core.dao.impl.application;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.JSONException;
-import org.wso2.carbon.device.application.mgt.common.AppLifecycleState;
-import org.wso2.carbon.device.application.mgt.common.ApplicationList;
-import org.wso2.carbon.device.application.mgt.common.Filter;
-import org.wso2.carbon.device.application.mgt.common.Pagination;
-import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
-import org.wso2.carbon.device.application.mgt.core.dao.impl.application.GenericApplicationDAOImpl;
-import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
/**
* This is a ApplicationDAO Implementation specific to Oracle.
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
index 808d1603dfb..93663008c81 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
@@ -21,13 +21,11 @@ package org.wso2.carbon.device.application.mgt.core.dao.impl.application.release
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.device.application.mgt.common.AppLifecycleState;
import org.wso2.carbon.device.application.mgt.common.dto.ApplicationReleaseDTO;
-import org.wso2.carbon.device.application.mgt.common.ApplicationReleaseArtifactPaths;
import org.wso2.carbon.device.application.mgt.common.Rating;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
@@ -118,7 +116,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"Database Connection Exception while trying to release a new version", e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -160,7 +158,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
resultSet = statement.executeQuery();
if (resultSet.next()) {
- return Util.loadApplicationRelease(resultSet);
+ return DAOUtil.loadApplicationRelease(resultSet);
}
return null;
} catch (DBConnectionException e) {
@@ -170,7 +168,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"Error while getting release details of the application " + applicationName + " and version " + versionName + " , while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -207,7 +205,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
resultSet = statement.executeQuery();
if (resultSet.next()) {
- return Util.loadApplicationRelease(resultSet);
+ return DAOUtil.loadApplicationRelease(resultSet);
}
return null;
} catch (DBConnectionException e) {
@@ -219,7 +217,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
"Error while getting release details of the application id: " + applicationId
+ " and theUUID of the application " + "release: " + releaseUuid + " , while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -241,6 +239,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
+ "AR.APP_HASH_VALUE AS RELEASE_HASH_VALUE, "
+ "AR.APP_PRICE AS RELEASE_PRICE, "
+ "AR.APP_META_INFO AS RELEASE_META_INFO, "
+ + "AR.PACKAGE_NAME AS PACKAGE_NAME, "
+ "AR.SUPPORTED_OS_VERSIONS AS RELEASE_SUP_OS_VERSIONS, "
+ "AR.RATING AS RELEASE_RATING, "
+ "AR.CURRENT_STATE AS RELEASE_CURRENT_STATE, "
@@ -255,7 +254,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
statement.setInt(2, tenantId);
try (ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) {
- return Util.loadAppRelease(resultSet);
+ return DAOUtil.loadAppRelease(resultSet);
}
return null;
}
@@ -299,7 +298,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
resultSet = statement.executeQuery();
while (resultSet.next()) {
- ApplicationReleaseDTO applicationRelease = Util.loadApplicationRelease(resultSet);
+ ApplicationReleaseDTO applicationRelease = DAOUtil.loadApplicationRelease(resultSet);
applicationReleases.add(applicationRelease);
}
return applicationReleases;
@@ -311,7 +310,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
"Error while getting all the release details of the app ID: " + applicationId
+ ", while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -342,7 +341,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
resultSet = statement.executeQuery();
while (resultSet.next()) {
- ApplicationReleaseDTO appRelease = Util.loadApplicationRelease(resultSet);
+ ApplicationReleaseDTO appRelease = DAOUtil.loadApplicationRelease(resultSet);
applicationReleases.add(appRelease);
}
return applicationReleases;
@@ -354,7 +353,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
"Error while getting all the release details of the app id" + appId + " application"
+ ", while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -384,7 +383,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"SQL exception while updating the release rating value ,while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, null);
+ DAOUtil.cleanupResources(statement, null);
}
}
@@ -420,7 +419,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"SQL exception while updating the release ,while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, resultSet);
+ DAOUtil.cleanupResources(statement, resultSet);
}
}
@@ -487,7 +486,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"SQL exception while updating the release ,while executing the query " + sql, e);
} finally {
- Util.cleanupResources(statement, null);
+ DAOUtil.cleanupResources(statement, null);
}
return applicationReleaseDTO;
}
@@ -512,7 +511,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
"SQL exception while deleting the release for release ID: " + id + ",while executing the query sql"
, e);
} finally {
- Util.cleanupResources(statement, null);
+ DAOUtil.cleanupResources(statement, null);
}
}
@@ -566,7 +565,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -603,7 +602,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
throw new ApplicationManagementDAOException(
"Error occurred while obtaining the DB connection to get application release package name.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -640,7 +639,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -674,7 +673,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -721,7 +720,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/lifecyclestate/GenericLifecycleStateDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/lifecyclestate/GenericLifecycleStateDAOImpl.java
index 73b1951b06f..0673e1cb315 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/lifecyclestate/GenericLifecycleStateDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/lifecyclestate/GenericLifecycleStateDAOImpl.java
@@ -24,7 +24,7 @@ import org.wso2.carbon.device.application.mgt.common.AppLifecycleState;
import org.wso2.carbon.device.application.mgt.common.LifecycleState;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.LifeCycleManagementDAOException;
@@ -64,7 +64,7 @@ public class GenericLifecycleStateDAOImpl extends AbstractDAOImpl implements Lif
throw new LifeCycleManagementDAOException("Error occurred while obtaining the DB connection to get latest"
+ " lifecycle state for a specific application", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -89,7 +89,7 @@ public class GenericLifecycleStateDAOImpl extends AbstractDAOImpl implements Lif
throw new LifeCycleManagementDAOException("Error occurred while obtaining the DB connection to get latest"
+ " lifecycle state for a specific application", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -120,7 +120,7 @@ public class GenericLifecycleStateDAOImpl extends AbstractDAOImpl implements Lif
throw new LifeCycleManagementDAOException("Error occurred while obtaining the DB connection to get latest"
+ " lifecycle state for a specific application", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -199,7 +199,7 @@ public class GenericLifecycleStateDAOImpl extends AbstractDAOImpl implements Lif
log.error("Error occurred while adding lifecycle: " + state.getCurrentState(), e);
throw new LifeCycleManagementDAOException("Error occurred while adding lifecycle: " + state.getCurrentState(), e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/Review/ReviewDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/ReviewDAOImpl.java
similarity index 53%
rename from components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/Review/ReviewDAOImpl.java
rename to components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/ReviewDAOImpl.java
index c5af36b6d42..9cf963beed6 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/Review/ReviewDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/review/ReviewDAOImpl.java
@@ -16,19 +16,21 @@
* under the License.
*
*/
-package org.wso2.carbon.device.application.mgt.core.dao.impl.Review;
+package org.wso2.carbon.device.application.mgt.core.dao.impl.review;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.device.application.mgt.common.Review;
import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.application.mgt.common.dto.ReviewDTO;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.ReviewDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.exception.UnexpectedServerErrorException;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.ReviewManagementDAOException;
+import org.wso2.carbon.device.application.mgt.core.util.Constants;
import java.sql.SQLException;
import java.sql.ResultSet;
@@ -49,206 +51,286 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
private String sql;
@Override
- public boolean addReview(Review review, String uuid, int tenantId) throws ReviewManagementDAOException {
+ public boolean addReview(ReviewDTO reviewDTO, int appReleaseId, int tenantId) throws ReviewManagementDAOException {
if (log.isDebugEnabled()) {
- log.debug("Request received in DAO Layer to add review for application release. ApplicationDTO UUID: " + uuid);
+ log.debug("Request received in DAO Layer to add review for application release. Application Release UUID: "
+ + appReleaseId);
}
- PreparedStatement statement = null;
- ResultSet rs = null;
- sql = "INSERT INTO AP_APP_REVIEW (TENANT_ID, COMMENT, PARENT_ID, RATING, USERNAME,CREATED_AT, MODIFIED_AT, "
- + "AP_APP_RELEASE_ID, AP_APP_ID) VALUES (?,?,?,?,?,?,?,(SELECT ID FROM AP_APP_RELEASE WHERE UUID= ?),"
- + "(SELECT AP_APP_ID FROM AP_APP_RELEASE WHERE UUID=?));";
+ sql = "INSERT INTO AP_APP_REVIEW "
+ + "(TENANT_ID, "
+ + "COMMENT, "
+ + "ROOT_PARENT_ID,"
+ + "IMMEDIATE_PARENT_ID, "
+ + "RATING, "
+ + "USERNAME, "
+ + "CREATED_AT, "
+ + "MODIFIED_AT, "
+ + "AP_APP_RELEASE_ID) "
+ + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ? )";
try {
Calendar calendar = Calendar.getInstance();
Timestamp timestamp = new Timestamp(calendar.getTime().getTime());
Connection conn = this.getDBConnection();
- statement = conn.prepareStatement(sql, new String[] { "id" });
- statement.setInt(1, tenantId);
- statement.setString(2, review.getComment());
- statement.setInt(3, review.getParentId());
- statement.setInt(4, review.getRating());
- statement.setString(5, review.getUsername());
- statement.setTimestamp(6, timestamp);
- statement.setTimestamp(7,timestamp);
- statement.setString(8,uuid);
- statement.setString(9,uuid);
- statement.executeUpdate();
- rs = statement.getGeneratedKeys();
- return rs.next();
- }
- catch (DBConnectionException e) {
+ try (PreparedStatement statement = conn.prepareStatement(sql, new String[] { "id" });) {
+ statement.setInt(1, tenantId);
+ statement.setString(2, reviewDTO.getContent());
+ statement.setInt(3, reviewDTO.getRootParentId());
+ statement.setInt(4, reviewDTO.getImmediateParentId());
+ statement.setInt(5, reviewDTO.getRating());
+ statement.setString(6, reviewDTO.getUsername());
+ statement.setTimestamp(7, timestamp);
+ statement.setTimestamp(8, timestamp);
+ statement.setInt(9, appReleaseId);
+ statement.executeUpdate();
+ try (ResultSet rs = statement.getGeneratedKeys()) {
+ return rs.next();
+ }
+ }
+ } catch (DBConnectionException e) {
throw new ReviewManagementDAOException("Error occurred while obtaining the DB connection while "
- + "adding review for application UUID: "+ "Tenant Id: " + tenantId, e);
- }catch (SQLException e) {
- throw new ReviewManagementDAOException("Error occurred while getting application list for the tenant"
- + " " + tenantId + ". While executing " + sql, e);
- } finally {
- Util.cleanupResources(statement, rs);
+ + "adding review for application release which has ID: "+ appReleaseId + "Tenant Id: " + tenantId, e);
+ } catch (SQLException e) {
+ throw new ReviewManagementDAOException(
+ "Error occurred while executing SQL statement to add application review. Application ID: "
+ + appReleaseId + " tenant " + tenantId, e);
}
}
@Override
- public Review haveUerCommented(String uuid, String username, int tenantId) throws ReviewManagementDAOException {
+ public boolean haveUerReviewed(int appReleaseId, String username, int tenantId) throws ReviewManagementDAOException {
if (log.isDebugEnabled()) {
- log.debug(
- "Request received in DAO Layer to check whether user have already commented or not for the "
- + "application release. ApplicationDTO UUID: " + uuid + " comment owner: " + username +
- " tenant-id " + tenantId);
+ log.debug("Request received in DAO Layer to check whether user have already reviewed or not for the "
+ + "application release. Commenting user: " + username + " and tenant-id: " + tenantId);
}
Connection conn;
- PreparedStatement statement = null;
- ResultSet rs = null;
- Review review = null;
- sql = "SELECT ID, COMMENT, CREATED_AT, MODIFIED_AT, USERNAME, PARENT_ID, RATING FROM AP_APP_REVIEW WHERE "
- + "AP_APP_RELEASE_ID = (SELECT ID FROM AP_APP_RELEASE WHERE UUID=?) AND USERNAME = ? AND TENANT_ID = ?;";
+ sql = "SELECT "
+ + "rv.ID "
+ + "FROM AP_APP_REVIEW rv "
+ + "WHERE "
+ + "rv.AP_APP_RELEASE_ID = ? AND "
+ + "rv.USERNAME = ? AND "
+ + "rv.TENANT_ID = ?";
try {
conn = this.getDBConnection();
- statement = conn.prepareStatement(sql);
- statement.setString(1, uuid);
- statement.setString(2, username);
- statement.setInt(3, tenantId);
- rs = statement.executeQuery();
- if (rs.next()){
- review = new Review();
- review.setId(rs.getInt("ID"));
- review.setComment(rs.getString("COMMENT"));
- review.setParentId(rs.getInt("PARENT_ID"));
- review.setCreatedAt(rs.getTimestamp("CREATED_AT"));
- review.setModifiedAt(rs.getTimestamp("MODIFIED_AT"));
- review.setUsername(rs.getString("USERNAME"));
- review.setRating(rs.getInt("RATING"));
+ try (PreparedStatement statement = conn.prepareStatement(sql)) {
+ statement.setInt(1, appReleaseId);
+ statement.setString(2, username);
+ statement.setInt(3, tenantId);
+ try (ResultSet rs = statement.executeQuery()) {
+ return rs.next();
+
+ }
}
- return review;
} catch (SQLException e) {
throw new ReviewManagementDAOException("Error occured while accessing the Database when checking whether "
+ "user has already commented for the application ro not", e);
} catch (DBConnectionException e) {
throw new ReviewManagementDAOException("Error occured while getting the database connection when checking "
+ "whether user has already commented for the application ro not", e);
-
- } finally {
- Util.cleanupResources(statement, rs);
}
}
@Override
- public int updateReview(Review review, int reviewId, String username, int tenantId)
+ public int updateReview(ReviewDTO reviewDTO, int reviewId, int tenantId)
throws ReviewManagementDAOException {
if (log.isDebugEnabled()) {
- log.debug("Request received in DAO Layer to update the comment with ID (" + reviewId + ")");
+ log.debug("Request received in DAO Layer to update the Review with ID (" + reviewId + ")");
}
Connection connection;
PreparedStatement statement = null;
ResultSet rs = null;
- sql = "UPDATE AP_APP_REVIEW SET COMMENT=?, RATING=?, MODIFIED_AT=? WHERE ID=? AND USERNAME=? AND TENANT_ID=?;";
+ sql = "UPDATE "
+ + "AP_APP_REVIEW "
+ + "SET "
+ + "COMMENT = ?, "
+ + "RATING = ?, "
+ + "MODIFIED_AT = ? "
+ + "WHERE ID = ? AND "
+ + "TENANT_ID = ?";
try {
Calendar calendar = Calendar.getInstance();
Timestamp timestamp = new Timestamp(calendar.getTime().getTime());
connection = this.getDBConnection();
statement = connection.prepareStatement(sql);
- statement.setString(1, review.getComment());
- statement.setInt(2, review.getRating());
+ statement.setString(1, reviewDTO.getContent());
+ statement.setInt(2, reviewDTO.getRating());
statement.setTimestamp(3, timestamp);
statement.setInt(4, reviewId);
- statement.setString(5, username);
- statement.setInt(6, tenantId);
+ statement.setInt(5, tenantId);
return statement.executeUpdate();
} catch (SQLException e) {
- throw new ReviewManagementDAOException("Error occurred while executing review updating query");
+ throw new ReviewManagementDAOException("Error occurred while executing reviewTmp updating query");
} catch (DBConnectionException e) {
- throw new ReviewManagementDAOException("Error occured while getting the db connection to update review");
+ throw new ReviewManagementDAOException("Error occured while getting the db connection to update reviewTmp");
} finally {
- Util.cleanupResources(statement, rs);
+ DAOUtil.cleanupResources(statement, rs);
}
}
@Override
- public Review getReview(int reviewId) throws ReviewManagementDAOException {
+ public ReviewDTO getReview(int reviewId) throws ReviewManagementDAOException {
if (log.isDebugEnabled()) {
- log.debug("Getting review with the review id(" + reviewId + ") from the database");
+ log.debug("Getting reviewDTO with the review id(" + reviewId + ") from the database");
}
Connection conn;
PreparedStatement statement = null;
ResultSet rs = null;
- Review review = null;
try {
conn = this.getDBConnection();
- sql = "SELECT ID, COMMENT, CREATED_AT, MODIFIED_AT, RATING, USERNAME FROM AP_APP_REVIEW WHERE ID=?;";
+ sql = "SELECT "
+ + "ID, "
+ + "COMMENT,"
+ + "ROOT_PARENT_ID,"
+ + "IMMEDIATE_PARENT_ID, "
+ + "CREATED_AT, "
+ + "MODIFIED_AT, "
+ + "RATING, "
+ + "USERNAME "
+ + "FROM AP_APP_REVIEW "
+ + "WHERE ID = ?";
statement = conn.prepareStatement(sql);
statement.setInt(1, reviewId);
rs = statement.executeQuery();
- if (rs.next()) {
- review = new Review();
- review.setId(rs.getInt("ID"));
- review.setComment(rs.getString("COMMENT"));
- review.setCreatedAt(rs.getTimestamp("CREATED_AT"));
- review.setModifiedAt(rs.getTimestamp("MODIFIED_AT"));
- review.setRating(rs.getInt("RATING"));
- review.setUsername(rs.getString("USERNAME"));
- return review;
- }
+ return DAOUtil.loadReview(rs);
} catch (SQLException e) {
throw new ReviewManagementDAOException(
- "SQL Error occurred while retrieving information of the review " + reviewId, e);
+ "SQL Error occurred while retrieving information of the reviewTmp " + reviewId, e);
} catch (DBConnectionException e) {
throw new ReviewManagementDAOException(
- "DB Connection Exception occurred while retrieving information of the review " + reviewId, e);
+ "DB Connection Exception occurred while retrieving information of the reviewTmp " + reviewId, e);
+ } catch (UnexpectedServerErrorException e) {
+ throw new ReviewManagementDAOException("Found more than one review for review ID: " + reviewId, e);
} finally {
- Util.cleanupResources(statement, rs);
+ DAOUtil.cleanupResources(statement, rs);
}
- return review;
}
@Override
- public List getAllReviews(String uuid, PaginationRequest request, int tenantId)
- throws ReviewManagementDAOException {
-
+ public ReviewDTO getReview(int appReleaseId, int reviewId) throws ReviewManagementDAOException {
if (log.isDebugEnabled()) {
- log.debug("Getting comment of the application release (" + uuid + ") from the database");
+ log.debug("Getting reviewDTO with the review id(" + reviewId + ") from the database");
}
Connection conn;
PreparedStatement statement = null;
ResultSet rs = null;
- List reviews = new ArrayList<>();
try {
conn = this.getDBConnection();
- sql = "SELECT AP_APP_REVIEW.ID AS ID, AP_APP_REVIEW.COMMENT AS COMMENT, "
- + "AP_APP_REVIEW.CREATED_AT AS CREATED_AT, AP_APP_REVIEW.MODIFIED_AT AS MODIFIED_AT, "
- + "AP_APP_REVIEW.USERNAME AS USERNAME, AP_APP_REVIEW.PARENT_ID AS PARENT_ID, "
- + "AP_APP_REVIEW.RATING AS RATING FROM AP_APP_REVIEW, AP_APP_RELEASE WHERE "
- + "AP_APP_REVIEW.AP_APP_RELEASE_ID=AP_APP_RELEASE.ID AND AP_APP_RELEASE.UUID =? "
- + "AND AP_APP_REVIEW.TENANT_ID = ? AND "
- + "AP_APP_REVIEW.TENANT_ID = AP_APP_RELEASE.TENANT_ID LIMIT ? OFFSET ?;";
+ sql = "SELECT "
+ + "ID, "
+ + "COMMENT,"
+ + "ROOT_PARENT_ID,"
+ + "IMMEDIATE_PARENT_ID, "
+ + "CREATED_AT, "
+ + "MODIFIED_AT, "
+ + "RATING, "
+ + "USERNAME "
+ + "FROM AP_APP_REVIEW "
+ + "WHERE ID = ? AND "
+ + "AP_APP_RELEASE_ID = ?";
statement = conn.prepareStatement(sql);
- statement.setString(1, uuid);
- statement.setInt(2, tenantId);
- statement.setInt(3, request.getLimit());
- statement.setInt(4, request.getOffSet());
+ statement.setInt(1, reviewId);
+ statement.setInt(2, appReleaseId);
rs = statement.executeQuery();
- while (rs.next()) {
- Review review = new Review();
- review.setId(rs.getInt("ID"));
- review.setComment(rs.getString("COMMENT"));
- review.setCreatedAt(rs.getTimestamp("CREATED_AT"));
- review.setModifiedAt(rs.getTimestamp("MODIFIED_AT"));
- review.setParentId(rs.getInt("PARENT_ID"));
- review.setUsername(rs.getString("USERNAME"));
- review.setRating(rs.getInt("RATING"));
- reviews.add(review);
+ return DAOUtil.loadReview(rs);
+ } catch (SQLException e) {
+ throw new ReviewManagementDAOException(
+ "SQL Error occurred while retrieving information of the reviewTmp " + reviewId, e);
+ } catch (DBConnectionException e) {
+ throw new ReviewManagementDAOException(
+ "DB Connection Exception occurred while retrieving information of the reviewTmp " + reviewId, e);
+ } catch (UnexpectedServerErrorException e) {
+ throw new ReviewManagementDAOException("Found more than one review for review ID: " + reviewId, e);
+ } finally {
+ DAOUtil.cleanupResources(statement, rs);
+ }
+ }
+
+
+ @Override
+ public List getAllReviews(int releaseId, PaginationRequest request, int tenantId)
+ throws ReviewManagementDAOException {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Getting comment of the application release (" + releaseId + ") from the database");
+ }
+ Connection conn;
+ List reviewDTOs = new ArrayList<>();
+ try {
+ conn = this.getDBConnection();
+ sql = "SELECT "
+ + "AP_APP_REVIEW.ID AS ID, "
+ + "AP_APP_REVIEW.COMMENT AS COMMENT, "
+ + "AP_APP_REVIEW.CREATED_AT AS CREATED_AT, "
+ + "AP_APP_REVIEW.MODIFIED_AT AS MODIFIED_AT, "
+ + "AP_APP_REVIEW.USERNAME AS USERNAME, "
+ + "AP_APP_REVIEW.ROOT_PARENT_ID AS ROOT_PARENT_ID, "
+ + "AP_APP_REVIEW.IMMEDIATE_PARENT_ID AS IMMEDIATE_PARENT_ID, "
+ + "AP_APP_REVIEW.RATING AS RATING "
+ + "FROM AP_APP_REVIEW "
+ + "WHERE "
+ + "AP_APP_REVIEW.AP_APP_RELEASE_ID = ? AND "
+ + "AP_APP_REVIEW.ROOT_PARENT_ID = ? AND "
+ + "AP_APP_REVIEW.TENANT_ID = ? "
+ + "LIMIT ? OFFSET ?";
+ try (PreparedStatement statement = conn.prepareStatement(sql)) {
+ statement.setInt(1, releaseId);
+ statement.setInt(2, Constants.REVIEW_PARENT_ID);
+ statement.setInt(3, tenantId);
+ statement.setInt(4, request.getLimit());
+ statement.setInt(5, request.getOffSet());
+ try (ResultSet rs = statement.executeQuery()) {
+ reviewDTOs = DAOUtil.loadReviews(rs);
+ }
}
- } catch (DBConnectionException e) {
+ } catch (DBConnectionException e) {
throw new ReviewManagementDAOException(
"Error occurred while obtaining the DB connection when verifying application existence", e);
} catch (SQLException e) {
- throw new ReviewManagementDAOException("DB connection error occurred while getting all reviews", e);
- }finally {
- Util.cleanupResources(statement, rs);
+ throw new ReviewManagementDAOException("DB connection error occurred while getting all reviewTmps", e);
+ } return reviewDTOs;
+ }
+
+ @Override
+ public List getReplyComments(int parentId, int tenantId) throws ReviewManagementDAOException {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Getting comment of the application release (" + parentId + ") from the database");
}
- return reviews;
+ Connection conn;
+ List reviewDTOs;
+ try {
+ conn = this.getDBConnection();
+ sql = "SELECT "
+ + "AP_APP_REVIEW.ID AS ID, "
+ + "AP_APP_REVIEW.COMMENT AS COMMENT, "
+ + "AP_APP_REVIEW.CREATED_AT AS CREATED_AT, "
+ + "AP_APP_REVIEW.MODIFIED_AT AS MODIFIED_AT, "
+ + "AP_APP_REVIEW.USERNAME AS USERNAME, "
+ + "AP_APP_REVIEW.ROOT_PARENT_ID AS ROOT_PARENT_ID, "
+ + "AP_APP_REVIEW.IMMEDIATE_PARENT_ID AS IMMEDIATE_PARENT_ID, "
+ + "AP_APP_REVIEW.RATING AS RATING "
+ + "FROM AP_APP_REVIEW "
+ + "WHERE "
+ + "AP_APP_REVIEW.ROOT_PARENT_ID = ? AND "
+ + "AP_APP_REVIEW.TENANT_ID = ?";
+ try (PreparedStatement statement = conn.prepareStatement(sql)) {
+ statement.setInt(1, parentId);
+ statement.setInt(2, tenantId);
+ try (ResultSet rs = statement.executeQuery();) {
+ reviewDTOs = DAOUtil.loadReviews(rs);
+ }
+ }
+ } catch (DBConnectionException e) {
+ throw new ReviewManagementDAOException(
+ "Error occurred while obtaining the DB connection when getting reply comments for a review.", e);
+ } catch (SQLException e) {
+ throw new ReviewManagementDAOException("DB connection error occurred while getting reply comments", e);
+ }
+ return reviewDTOs;
}
@Override
@@ -282,7 +364,7 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
"Error occured while getting DB connection to retrieve all rating values for the application release. App release UUID: "
+ uuid, e);
} finally {
- Util.cleanupResources(statement, rs);
+ DAOUtil.cleanupResources(statement, rs);
}
return reviews;
}
@@ -316,7 +398,7 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
} catch (DBConnectionException e) {
throw new ReviewManagementDAOException("DB Connection Exception occurred while retrieving review counts", e);
} finally {
- Util.cleanupResources(statement, rs);
+ DAOUtil.cleanupResources(statement, rs);
}
return commentCount;
}
@@ -345,7 +427,7 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
commentCount = rs.getInt("COMMENT_COUNT");
}
} finally {
- Util.cleanupResources(statement, rs);
+ DAOUtil.cleanupResources(statement, rs);
}
return commentCount;
}
@@ -367,7 +449,7 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
throw new ReviewManagementDAOException("Error occured while getting the database connection", e);
} finally {
- Util.cleanupResources(statement, null);
+ DAOUtil.cleanupResources(statement, null);
}
}
@@ -395,7 +477,7 @@ public class ReviewDAOImpl extends AbstractDAOImpl implements ReviewDAO {
} catch (SQLException e) {
throw new ReviewManagementException("SQL Error occurred while deleting comments", e);
} finally {
- Util.cleanupResources(statement, null);
+ DAOUtil.cleanupResources(statement, null);
}
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java
index 7eeb71046c6..b59ca1f7b23 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/subscription/GenericSubscriptionDAOImpl.java
@@ -19,15 +19,12 @@ package org.wso2.carbon.device.application.mgt.core.dao.impl.subscription;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.JSONException;
-import org.wso2.carbon.device.application.mgt.common.dto.ApplicationDTO;
import org.wso2.carbon.device.application.mgt.common.dto.DeviceSubscriptionDTO;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.SubscriptionDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
-import org.wso2.carbon.device.application.mgt.core.exception.UnexpectedServerErrorException;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
@@ -70,7 +67,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
throw new ApplicationManagementDAOException("Error occurred while adding device application mapping to DB",
e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -104,7 +101,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
throw new ApplicationManagementDAOException("Error occurred while adding device application mapping to DB",
e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -137,7 +134,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
throw new ApplicationManagementDAOException("Error occurred while adding device application mapping to DB",
e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -170,7 +167,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
throw new ApplicationManagementDAOException("Error occurred while adding device application mapping to DB",
e);
} finally {
- Util.cleanupResources(stmt, null);
+ DAOUtil.cleanupResources(stmt, null);
}
}
@@ -203,7 +200,7 @@ public class GenericSubscriptionDAOImpl extends AbstractDAOImpl implements Subsc
log.debug("Successfully retrieved device subscriptions for application release id "
+ appReleaseId);
}
- return Util.loadDeviceSubscriptions(rs);
+ return DAOUtil.loadDeviceSubscriptions(rs);
}
}
} catch (SQLException e) {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/visibility/GenericVisibilityDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/visibility/GenericVisibilityDAOImpl.java
index 26f88165b05..c37949dbf3c 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/visibility/GenericVisibilityDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/visibility/GenericVisibilityDAOImpl.java
@@ -21,7 +21,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
import org.wso2.carbon.device.application.mgt.core.dao.VisibilityDAO;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.dao.impl.AbstractDAOImpl;
import org.wso2.carbon.device.application.mgt.core.exception.VisibilityManagementDAOException;
@@ -66,7 +66,7 @@ public class GenericVisibilityDAOImpl extends AbstractDAOImpl implements Visibil
}catch (SQLException e) {
throw new VisibilityManagementDAOException("Error occurred while adding unrestricted roles", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -100,7 +100,7 @@ public class GenericVisibilityDAOImpl extends AbstractDAOImpl implements Visibil
}catch (SQLException e) {
throw new VisibilityManagementDAOException("Error occurred while adding unrestricted roles", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
@@ -167,7 +167,7 @@ public class GenericVisibilityDAOImpl extends AbstractDAOImpl implements Visibil
}catch (SQLException e) {
throw new VisibilityManagementDAOException("Error occurred while adding unrestricted roles", e);
} finally {
- Util.cleanupResources(stmt, rs);
+ DAOUtil.cleanupResources(stmt, rs);
}
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ApplicationManagementDAOException.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ApplicationManagementDAOException.java
index ccadcab072d..d946ee3fcee 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ApplicationManagementDAOException.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ApplicationManagementDAOException.java
@@ -16,8 +16,6 @@
*/
package org.wso2.carbon.device.application.mgt.core.exception;
-import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
-
/**
* Exception thrown during the ApplicationDTO Management DAO operations.
*/
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ReviewManagementDAOException.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ReviewManagementDAOException.java
index f32f08b3244..56cb3ff3bac 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ReviewManagementDAOException.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/exception/ReviewManagementDAOException.java
@@ -21,7 +21,7 @@ package org.wso2.carbon.device.application.mgt.core.exception;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
/**
- * Exception thrown during the Review Management DAO operations.
+ * Exception thrown during the ReviewTmp Management DAO operations.
*/
public class ReviewManagementDAOException extends ReviewManagementException {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
index c29040d809c..010d9a565e8 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
@@ -65,7 +65,7 @@ import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
import org.wso2.carbon.device.application.mgt.core.dao.SubscriptionDAO;
import org.wso2.carbon.device.application.mgt.core.dao.VisibilityDAO;
import org.wso2.carbon.device.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException;
@@ -251,7 +251,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
//insert application data into databse
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
ApplicationReleaseDTO applicationReleaseDTO = applicationDTO.getApplicationReleaseDTOs().get(0);
try {
List applicationReleaseEntities = new ArrayList<>();
@@ -379,7 +379,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
private void deleteApplicationArtifacts(List directoryPaths) throws ApplicationManagementException {
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
try {
applicationStorageManager.deleteAllApplicationReleaseArtifacts(directoryPaths);
@@ -395,7 +395,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
ApplicationReleaseDTO applicationReleaseDTO, ApplicationArtifact applicationArtifact, boolean isNewRelease)
throws ResourceManagementException, ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
String uuid = UUID.randomUUID().toString();
applicationReleaseDTO.setUuid(uuid);
@@ -478,7 +478,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
ApplicationReleaseDTO applicationReleaseDTO, ApplicationArtifact applicationArtifact)
throws ResourceManagementException, ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
// The application executable artifacts such as apks are uploaded.
if (ApplicationType.ENTERPRISE.toString().equals(applicationType)) {
@@ -562,7 +562,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
private ApplicationReleaseDTO addImageArtifacts(ApplicationReleaseDTO applicationReleaseDTO,
ApplicationArtifact applicationArtifact) throws ResourceManagementException {
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
applicationReleaseDTO.setIconName(applicationArtifact.getIconName());
applicationReleaseDTO.setBannerName(applicationArtifact.getBannerName());
@@ -591,7 +591,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
private ApplicationReleaseDTO updateImageArtifacts(ApplicationReleaseDTO applicationReleaseDTO,
ApplicationArtifact applicationArtifact) throws ResourceManagementException{
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
applicationStorageManager.deleteImageArtifacts(applicationReleaseDTO);
@@ -1193,7 +1193,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
+ applicationId);
}
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
ApplicationDTO applicationDTO = getApplication(applicationId);
List applicationReleaseDTOs = applicationDTO.getApplicationReleaseDTOs();
for (ApplicationReleaseDTO applicationReleaseDTO : applicationReleaseDTOs) {
@@ -1334,7 +1334,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
public void deleteApplicationRelease(String releaseUuid)
throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
try {
ConnectionManagerUtil.beginDBTransaction();
ApplicationReleaseDTO applicationReleaseDTO = this.applicationReleaseDAO
@@ -1477,7 +1477,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
boolean isValidDeviceType = false;
List deviceTypes;
try {
- deviceTypes = Util.getDeviceManagementService().getDeviceTypes();
+ deviceTypes = DAOUtil.getDeviceManagementService().getDeviceTypes();
for (DeviceType dt : deviceTypes) {
if (dt.getName().equals(deviceType)) {
@@ -1618,7 +1618,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
@Override
- public void changeLifecycleState(String releaseUuid, LifecycleChanger lifecycleChanger)
+ public ApplicationRelease changeLifecycleState(String releaseUuid, LifecycleChanger lifecycleChanger)
throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
@@ -1664,6 +1664,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
this.lifecycleStateDAO.addLifecycleState(lifecycleState, applicationReleaseDTO.getId(), tenantId);
ConnectionManagerUtil.commitDBTransaction();
+ return releaseDtoToRelease(applicationReleaseDTO);
} else {
String msg = "Invalid lifecycle state transition from '" + applicationReleaseDTO.getCurrentState() + "'"
+ " to '" + lifecycleChanger.getAction() + "'";
@@ -2397,6 +2398,11 @@ public class ApplicationManagerImpl implements ApplicationManager {
log.error(msg);
throw new RequestValidatingException(msg);
}
+ if (applicationWrapper.getAppCategories() == null) {
+ String msg = "Application category can't be null.";
+ log.error(msg);
+ throw new RequestValidatingException(msg);
+ }
if (applicationWrapper.getAppCategories().isEmpty()) {
String msg = "Application category can't be empty.";
log.error(msg);
@@ -2595,7 +2601,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
throws BadRequestException, UnexpectedServerErrorException {
List deviceTypes;
try {
- deviceTypes = Util.getDeviceManagementService().getDeviceTypes();
+ deviceTypes = DAOUtil.getDeviceManagementService().getDeviceTypes();
if(deviceTypeAttr instanceof String){
for (DeviceType dt : deviceTypes) {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/AppmDataHandlerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/AppmDataHandlerImpl.java
index 71570221afb..9f0ac6c8d23 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/AppmDataHandlerImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/AppmDataHandlerImpl.java
@@ -29,7 +29,7 @@ import org.wso2.carbon.device.application.mgt.common.services.AppmDataHandler;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
import org.wso2.carbon.device.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
-import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
+import org.wso2.carbon.device.application.mgt.core.util.DAOUtil;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException;
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
@@ -67,7 +67,7 @@ public class AppmDataHandlerImpl implements AppmDataHandler {
@Override
public InputStream getArtifactStream(String uuid, String artifactName) throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
- ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
+ ApplicationStorageManager applicationStorageManager = DAOUtil.getApplicationStorageManager();
ApplicationReleaseDAO applicationReleaseDAO = ApplicationManagementDAOFactory.getApplicationReleaseDAO();
String artifactPath;
String appReleaseHashValue;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ReviewManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ReviewManagerImpl.java
index ed50b02407a..5397ccee698 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ReviewManagerImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ReviewManagerImpl.java
@@ -22,17 +22,25 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.application.mgt.common.Rating;
-import org.wso2.carbon.device.application.mgt.common.Review;
+import org.wso2.carbon.device.application.mgt.common.ReviewNode;
import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
import org.wso2.carbon.device.application.mgt.common.PaginationResult;
+import org.wso2.carbon.device.application.mgt.common.dto.ApplicationReleaseDTO;
+import org.wso2.carbon.device.application.mgt.common.dto.ReviewDTO;
+import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewDoesNotExistException;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
+import org.wso2.carbon.device.application.mgt.common.exception.TransactionManagementException;
+import org.wso2.carbon.device.application.mgt.common.response.Review;
import org.wso2.carbon.device.application.mgt.common.services.*;
+import org.wso2.carbon.device.application.mgt.common.wrapper.ReviewWrapper;
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
import org.wso2.carbon.device.application.mgt.core.dao.ReviewDAO;
import org.wso2.carbon.device.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
+import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
+import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException;
import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException;
import org.wso2.carbon.device.application.mgt.core.exception.ReviewManagementDAOException;
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
@@ -42,6 +50,7 @@ import org.wso2.carbon.user.api.UserStoreException;
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.TreeMap;
@@ -64,34 +73,124 @@ public class ReviewManagerImpl implements ReviewManager {
}
@Override
- public boolean addReview(Review review, String uuid) throws ReviewManagementException, NotFoundException {
+ public boolean addReview(ReviewWrapper reviewWrapper, String uuid)
+ throws ReviewManagementException, ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
String username = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
- boolean isSuccess = false;
+
+ if (reviewWrapper == null) {
+ String msg = "Request payload is null. Please verify the request payload.";
+ log.error(msg);
+ throw new BadRequestException(msg);
+ }
+ if (reviewWrapper.getRating() < 0) {
+ String msg = "You are trying to add invalid rating value as rating. Therefore please verify the request "
+ + "payload.";
+ log.error(msg);
+ throw new ForbiddenException(msg);
+ }
try {
- ConnectionManagerUtil.openDBConnection();
- if (!this.applicationReleaseDAO.verifyReleaseExistenceByUuid(uuid, tenantId)){
- throw new NotFoundException("Couldn't find application release for the application UUID: " + uuid);
+ ConnectionManagerUtil.beginDBTransaction();
+ ApplicationReleaseDTO applicationReleaseDTO = this.applicationReleaseDAO.getReleaseByUUID(uuid, tenantId);
+ if (applicationReleaseDTO == null) {
+ String msg = "Couldn't find application release for the application UUID: " + uuid;
+ log.error(msg);
+ throw new NotFoundException(msg);
}
- Review existingReview = this.reviewDAO.haveUerCommented(uuid, username, tenantId);
- if (existingReview != null && isAuthorizedUser(username, existingReview.getUsername(), tenantId)
- && review.getRating() > 0 && review.getRating() != existingReview.getRating()) {
- Runnable task = () -> calculateRating(review.getRating(), existingReview.getRating(), uuid, tenantId);
- new Thread(task).start();
- isSuccess = updateReview(review, existingReview.getId(), uuid, existingReview);
- } else if (review.getRating() > 0) {
- Runnable task = () -> calculateRating(review.getRating(), -12345, uuid, tenantId);
- new Thread(task).start();
- review.setUsername(username);
- isSuccess = this.reviewDAO.addReview(review, uuid, tenantId);
+ if (this.reviewDAO.haveUerReviewed(applicationReleaseDTO.getId(), username, tenantId)) {
+ String msg =
+ "User " + username + " has already reviewed the application release which has UUID: " + uuid
+ + ". Hence you can't add another review for same application release. But you can update "
+ + "the review that you have already added for ths application release.";
+ log.error(msg);
+ throw new ForbiddenException(msg);
+ }
+ Runnable task = () -> calculateRating(reviewWrapper.getRating(), -12345, uuid, tenantId);
+ new Thread(task).start();
+
+ ReviewDTO reviewDTO = reviewWrapperToDO(reviewWrapper);
+ reviewDTO.setUsername(username);
+ reviewDTO.setRootParentId(-1);
+ reviewDTO.setImmediateParentId(-1);
+ if (this.reviewDAO.addReview(reviewDTO, applicationReleaseDTO.getId(), tenantId)) {
+ ConnectionManagerUtil.commitDBTransaction();
+ return true;
+ }
+ ConnectionManagerUtil.rollbackDBTransaction();
+ return false;
+ } catch (DBConnectionException e) {
+ String msg = "DB Connection error occurs when adding Review for application release with UUID: " + uuid
+ + " is failed";
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
+ } catch (TransactionManagementException e) {
+ String msg = "DB transaction error occurred when adding review for application release which has "
+ + "application UUID: " + uuid;
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
+ } catch (ApplicationManagementDAOException e) {
+ String msg = "Error occurred when getting application release data for application release UUID:." + uuid;
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
+ } catch (ReviewManagementDAOException e) {
+ ConnectionManagerUtil.rollbackDBTransaction();
+ String msg = "Error occurred when getting review data or adding review data for application release which "
+ + "has UUID: " + uuid;
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
+ } finally {
+ ConnectionManagerUtil.closeDBConnection();
+ }
+ }
+
+ @Override
+ public boolean addReplyComment(ReviewWrapper reviewWrapper, String uuid, int parentReviewId)
+ throws ReviewManagementException, ApplicationManagementException {
+ int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
+ String username = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
+
+ if (reviewWrapper == null) {
+ String msg = "Request payload is null. Please verify the request payload.";
+ log.error(msg);
+ throw new BadRequestException(msg);
+ }
+ try {
+ ConnectionManagerUtil.beginDBTransaction();
+ ApplicationReleaseDTO applicationReleaseDTO = this.applicationReleaseDAO.getReleaseByUUID(uuid, tenantId);
+ if (applicationReleaseDTO == null) {
+ String msg = "Couldn't find application release for the application UUID: " + uuid;
+ log.error(msg);
+ throw new NotFoundException(msg);
}
- return isSuccess;
+ ReviewDTO parentReview = this.reviewDAO.getReview(applicationReleaseDTO.getId(), parentReviewId);
+ if (parentReview == null) {
+ String msg = "Couldn't find an review which has review ID: " + parentReviewId
+ + " for application release which has UUID: " + uuid;
+ log.error(msg);
+ throw new BadRequestException(msg);
+ }
+ ReviewDTO replyComment = reviewWrapperToDO(reviewWrapper);
+ replyComment.setUsername(username);
+ replyComment.setImmediateParentId(parentReview.getId());
+ if (parentReview.getRootParentId() == -1) {
+ replyComment.setRootParentId(parentReview.getId());
+ } else {
+ replyComment.setRootParentId(parentReview.getRootParentId());
+ }
+ if (this.reviewDAO.addReview(replyComment, applicationReleaseDTO.getId(), tenantId)) {
+ ConnectionManagerUtil.commitDBTransaction();
+ return true;
+ }
+ return false;
} catch (DBConnectionException e) {
throw new ReviewManagementException(
- "DB Connection error occurs ,Review for application release with UUID: " + uuid + " is failed", e);
- } catch (UserStoreException e) {
- throw new ReviewManagementException("Error occured while verifying user's permission to update the review.",
+ "DB Connection error occurs ,ReviewTmp for application release with UUID: " + uuid + " is failed",
e);
+ } catch (TransactionManagementException e) {
+ String msg = "DB transaction error occurred when adding reply comment for comment which has comment id: "
+ + parentReviewId;
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
} catch (ApplicationManagementDAOException e) {
throw new ReviewManagementException(
"Error occured while verifying whether application release is exists or not.", e);
@@ -100,106 +199,182 @@ public class ReviewManagerImpl implements ReviewManager {
}
}
+ private ReviewDTO reviewWrapperToDO(ReviewWrapper reviewWrapper){
+ ReviewDTO reviewDTO = new ReviewDTO();
+ reviewDTO.setContent(reviewWrapper.getContent());
+ reviewDTO.setRating(reviewWrapper.getRating());
+ return reviewDTO;
+ }
+
+ private List reviewDTOToReview(List reviewDTOs){
+ List reviews = new ArrayList<>();
+
+ for (ReviewDTO reviewDTO : reviewDTOs){
+ Review review = new Review();
+ review.setId(reviewDTO.getId());
+ review.setContent(reviewDTO.getContent());
+ review.setRootParentId(reviewDTO.getRootParentId());
+ review.setImmediateParentId(reviewDTO.getImmediateParentId());
+ review.setCreatedAt(reviewDTO.getCreatedAt());
+ review.setModifiedAt(reviewDTO.getModifiedAt());
+ review.setReplies(new ArrayList<>());
+ reviews.add(review);
+ }
+ return reviews;
+ }
+
+ private Review reviewDTOToReview(ReviewDTO reviewDTO){
+ Review review = new Review();
+ review.setId(reviewDTO.getId());
+ review.setContent(reviewDTO.getContent());
+ review.setRootParentId(reviewDTO.getRootParentId());
+ review.setImmediateParentId(reviewDTO.getImmediateParentId());
+ review.setCreatedAt(reviewDTO.getCreatedAt());
+ review.setModifiedAt(reviewDTO.getModifiedAt());
+ review.setReplies(new ArrayList<>());
+ return review;
+ }
+
@Override
- public boolean updateReview(Review review, int reviewId, String uuid, Review existingReview)
- throws ReviewManagementException {
+ public boolean updateReview(ReviewWrapper updatingReview, int reviewId, String uuid)
+ throws ReviewManagementException, ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
String username = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
- boolean isConnectionOpen = false;
if (log.isDebugEnabled()) {
- log.debug("Review updating request is received for the review id " + reviewId);
+ log.debug("ReviewTmp updating request is received for the reviewTmp id " + reviewId);
}
try {
- if (existingReview == null) {
- ConnectionManagerUtil.openDBConnection();
- isConnectionOpen = true;
- existingReview = this.reviewDAO.getReview(reviewId);
- if (existingReview != null && isAuthorizedUser(username, existingReview.getUsername(), tenantId)) {
- if (review.getRating() > 0 && review.getRating() != existingReview.getRating()) {
- Review finalExistingReview = existingReview;
- Runnable task = () -> calculateRating(review.getRating(), finalExistingReview.getRating(),
- uuid, tenantId);
- new Thread(task).start();
- }
- } else {
- throw new ReviewManagementException(
- "Please check the existence of the review, Review-Id: " + reviewId
- + " or permission of the " + username + " to update the review.");
- }
+ ConnectionManagerUtil.openDBConnection();
+ ApplicationReleaseDTO applicationReleaseDTO = this.applicationReleaseDAO.getReleaseByUUID(uuid, tenantId);
+ if (applicationReleaseDTO == null) {
+ String msg = "Couldn't found an application release for UUID: " + uuid;
+ log.error(msg);
+ throw new NotFoundException(msg);
}
- if (review.getComment().isEmpty()) {
- review.setComment(existingReview.getComment());
+ ReviewDTO reviewDTO = this.reviewDAO.getReview(applicationReleaseDTO.getId(), reviewId);
+ if (reviewDTO == null) {
+ String msg =
+ "Couldn't found a review for application release which has UUID: " + uuid + " and review ID: "
+ + reviewId;
+ log.error(msg);
+ throw new NotFoundException(msg);
}
- if (review.getRating() == 0) {
- review.setRating(existingReview.getRating());
+
+ if (!username.equals(reviewDTO.getUsername())) {
+ String msg = "You are trying to update a review which is triggered by " + reviewDTO.getUsername()
+ + ". Hence you are not permitted to update the review.";
+ log.error(msg);
+ throw new ForbiddenException(msg);
}
- return this.reviewDAO.updateReview(review, reviewId, username, tenantId) == 1;
+
+ if (reviewDTO.getRootParentId() == -1 && reviewDTO.getImmediateParentId() == -1
+ && updatingReview.getRating() > 0 && updatingReview.getRating() != reviewDTO.getRating()) {
+ Runnable task = () -> calculateRating(updatingReview.getRating(), reviewDTO.getRating(), uuid,
+ tenantId);
+ new Thread(task).start();
+ reviewDTO.setRating(updatingReview.getRating());
+ }
+ reviewDTO.setContent(updatingReview.getContent());
+ return this.reviewDAO.updateReview(reviewDTO, reviewId, tenantId) == 1;
} catch (ReviewManagementDAOException e) {
- throw new ReviewManagementException("Error occured while getting review with review id " + reviewId + ".",
- e);
+ String msg = "Error occured while getting reviewTmp with reviewTmp id " + reviewId + ".";
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
} catch (DBConnectionException e) {
- throw new ReviewManagementException(
- "DB Connection error occurs updating review with review id " + reviewId + ".", e);
- } catch (UserStoreException e) {
- throw new ReviewManagementException(
- "Error occured while verifying user's permission to update the review. review id: " + reviewId
- + ".", e);
+ String msg = "DB Connection error occurs updating reviewTmp with reviewTmp id " + reviewId + ".";
+ log.error(msg);
+ throw new ReviewManagementException(msg, e);
+ } catch (ApplicationManagementDAOException e) {
+ String msg = "Error occured when getting application release data for application release UUID: " + uuid;
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} finally {
- if (isConnectionOpen) {
- ConnectionManagerUtil.closeDBConnection();
- }
+ ConnectionManagerUtil.closeDBConnection();
}
}
@Override
public PaginationResult getAllReviews(PaginationRequest request, String uuid)
- throws ReviewManagementException {
+ throws ReviewManagementException, ApplicationManagementException {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
PaginationResult paginationResult = new PaginationResult();
- int numOfComments;
- List reviews;
- TreeMap hierarchicalReviewSet = new TreeMap<>();
+ TreeMap> reviewTree = new TreeMap<>();
if (log.isDebugEnabled()) {
- log.debug("Get all reviews of the application release uuid: " + uuid);
+ log.debug("Get all reviewTmps of the application release uuid: " + uuid);
}
try {
ConnectionManagerUtil.openDBConnection();
- reviews = this.reviewDAO.getAllReviews(uuid, request, tenantId);
-
- for (Review review : reviews) {
- if (hierarchicalReviewSet.containsKey(review.getParentId())) {
- Review parentReview = hierarchicalReviewSet.get(review.getParentId());
- parentReview.setReplyReview(review);
- hierarchicalReviewSet.replace(review.getParentId(), parentReview);
- } else {
- hierarchicalReviewSet.put(review.getId(), review);
+ ApplicationReleaseDTO releaseDTO = this.applicationReleaseDAO.getReleaseByUUID(uuid, tenantId);
+ if (releaseDTO == null){
+ String msg = "Couldn't found an application release for UUID: " + uuid;
+ log.error(msg);
+ throw new NotFoundException(msg);
+ }
+ List reviewDTOs= this.reviewDAO.getAllReviews(releaseDTO.getId(), request, tenantId);
+ for (ReviewDTO reviewDTO : reviewDTOs){
+ ReviewNode rootNode = new ReviewNode<>(reviewDTO);
+ reviewTree.put(reviewDTO.getId(), rootNode);
+ List replyComments = this.reviewDAO.getReplyComments(reviewDTO.getId(), tenantId);
+ replyComments.sort(Comparator.comparing(ReviewDTO::getId));
+ for (ReviewDTO reply : replyComments){
+ reviewTree.put(reply.getRootParentId(),
+ findAndSetChild(reviewTree.get(reply.getRootParentId()), reply));
}
}
- numOfComments = hierarchicalReviewSet.size();
- if (numOfComments > 0) {
- paginationResult.setData(new ArrayList<>(hierarchicalReviewSet.values()));
- paginationResult.setRecordsFiltered(numOfComments);
- paginationResult.setRecordsTotal(numOfComments);
- } else {
- paginationResult.setData(new ArrayList());
- paginationResult.setRecordsFiltered(0);
- paginationResult.setRecordsTotal(0);
+ int numOfReviews = reviewTree.size();
+ List results = new ArrayList<>();
+
+ for (ReviewNode reviewNode : reviewTree.values()){
+ results.add(constructReviewResponse(null, reviewNode));
}
+ paginationResult.setData(new ArrayList<>(results));
+ paginationResult.setRecordsFiltered(numOfReviews);
+ paginationResult.setRecordsTotal(numOfReviews);
return paginationResult;
} catch (ReviewManagementDAOException e) {
- throw new ReviewManagementException("Error occured while getting all reviews for application uuid: " + uuid,
+ throw new ReviewManagementException("Error occured while getting all reviewTmps for application uuid: " + uuid,
e);
} catch (DBConnectionException e) {
throw new ReviewManagementException("Error occured while getting the DB connection.", e);
+ } catch (ApplicationManagementDAOException e) {
+ String msg = "Error occurred while getting application release details for application release UUId " + uuid;
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} finally {
ConnectionManagerUtil.closeDBConnection();
}
}
+ private ReviewNode findAndSetChild(ReviewNode node, ReviewDTO reviewDTO) {
+ if (node.getData().getId() == reviewDTO.getImmediateParentId()){
+ ReviewNode childNode = new ReviewNode<>(reviewDTO);
+ node.addChild(childNode);
+ return node;
+ }
+ for (ReviewNode each : node.getChildren()) {
+ findAndSetChild(each, reviewDTO);
+ }
+ return node;
+ }
+
+ private Review constructReviewResponse(Review parentReview, ReviewNode node) {
+ Review review = reviewDTOToReview(node.getData());
+ if (parentReview != null){
+ parentReview.getReplies().add(review);
+ }
+ if (node.getChildren().isEmpty()){
+ return review;
+ }
+ for (ReviewNode reviewDTOReviewNode : node.getChildren()) {
+ constructReviewResponse(review, reviewDTOReviewNode);
+ }
+ return review;
+ }
+
@Override
public boolean deleteReview(String uuid, int reviewId)
throws ReviewManagementException, ReviewDoesNotExistException {
- Review existingReview;
+ ReviewDTO existingReview;
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
String username = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
try {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/APIUtil.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/APIUtil.java
index d4cc2f72c74..d3ae664f320 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/APIUtil.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/APIUtil.java
@@ -120,7 +120,7 @@ public class APIUtil {
}
/**
- * To get the Review Manager from the osgi context.
+ * To get the ReviewTmp Manager from the osgi context.
* @return ReviewManager instance in the current osgi context.
*/
public static ReviewManager getReviewManager() {
@@ -131,7 +131,7 @@ public class APIUtil {
reviewManager =
(ReviewManager) ctx.getOSGiService(ReviewManager.class, null);
if (reviewManager == null) {
- String msg = "Review Manager service has not initialized.";
+ String msg = "ReviewTmp Manager service has not initialized.";
log.error(msg);
throw new IllegalStateException(msg);
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/ApplicationManagementUtil.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/ApplicationManagementUtil.java
index 3d3da35b870..30751baa962 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/ApplicationManagementUtil.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/ApplicationManagementUtil.java
@@ -32,7 +32,7 @@ import org.wso2.carbon.device.application.mgt.core.lifecycle.LifecycleStateManag
import java.lang.reflect.Constructor;
/**
- * This Util class is responsible for making sure single instance of each Extension Manager is used throughout for
+ * This DAOUtil class is responsible for making sure single instance of each Extension Manager is used throughout for
* all the tasks.
*/
public class ApplicationManagementUtil {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/Constants.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/Constants.java
index d883ad454b7..4c705094a51 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/Constants.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/Constants.java
@@ -63,4 +63,6 @@ public class Constants {
* Directory name of the release artifacts that are saved in the file system.
*/
public static final String RELEASE_ARTIFACT = "artifact";
+
+ public static final int REVIEW_PARENT_ID = -1;
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/DAOUtil.java
similarity index 89%
rename from components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java
rename to components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/DAOUtil.java
index 6a98cd17805..57db28ef403 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/util/DAOUtil.java
@@ -16,7 +16,7 @@
* under the License.
*
*/
-package org.wso2.carbon.device.application.mgt.core.dao.common;
+package org.wso2.carbon.device.application.mgt.core.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -27,6 +27,7 @@ import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
import org.wso2.carbon.device.application.mgt.common.dto.ApplicationReleaseDTO;
import org.wso2.carbon.device.application.mgt.common.dto.DeviceSubscriptionDTO;
+import org.wso2.carbon.device.application.mgt.common.dto.ReviewDTO;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewManagementException;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
@@ -34,8 +35,6 @@ import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManage
import org.wso2.carbon.device.application.mgt.core.config.Configuration;
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
import org.wso2.carbon.device.application.mgt.core.exception.UnexpectedServerErrorException;
-import org.wso2.carbon.device.application.mgt.core.impl.ApplicationStorageManagerImpl;
-import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
@@ -48,9 +47,9 @@ import java.util.List;
/**
* This class is responsible for handling the utils of the Application Management DAO.
*/
-public class Util {
+public class DAOUtil {
- private static final Log log = LogFactory.getLog(Util.class);
+ private static final Log log = LogFactory.getLog(DAOUtil.class);
/**
* To create application object from the result set retrieved from the Database.
@@ -146,6 +145,7 @@ public class Util {
appRelease.setAppHashValue(rs.getString("RELEASE_HASH_VALUE"));
appRelease.setPrice(rs.getDouble("RELEASE_PRICE"));
appRelease.setMetaData(rs.getString("RELEASE_META_INFO"));
+ appRelease.setPackageName(rs.getString("PACKAGE_NAME"));
appRelease.setSupportedOsVersions(rs.getString("RELEASE_SUP_OS_VERSIONS"));
appRelease.setRating(rs.getDouble("RELEASE_RATING"));
appRelease.setCurrentState(rs.getString("RELEASE_CURRENT_STATE"));
@@ -204,6 +204,36 @@ public class Util {
return applicationRelease;
}
+ public static ReviewDTO loadReview(ResultSet rs) throws SQLException, UnexpectedServerErrorException {
+ List reviewDTOs = loadReviews(rs);
+ if (reviewDTOs.isEmpty()) {
+ return null;
+ }
+ if (reviewDTOs.size() > 1) {
+ String msg = "Internal server error. Found more than one review for requested review ID";
+ log.error(msg);
+ throw new UnexpectedServerErrorException(msg);
+ }
+ return reviewDTOs.get(0);
+ }
+
+ public static List loadReviews (ResultSet rs) throws SQLException {
+ List reviewDTOs = new ArrayList<>();
+ while (rs.next()) {
+ ReviewDTO reviewDTO = new ReviewDTO();
+ reviewDTO.setId(rs.getInt("ID"));
+ reviewDTO.setContent(rs.getString("COMMENT"));
+ reviewDTO.setCreatedAt(rs.getTimestamp("CREATED_AT"));
+ reviewDTO.setModifiedAt(rs.getTimestamp("MODIFIED_AT"));
+ reviewDTO.setRootParentId(rs.getInt("ROOT_PARENT_ID"));
+ reviewDTO.setImmediateParentId(rs.getInt("IMMEDIATE_PARENT_ID"));
+ reviewDTO.setUsername(rs.getString("USERNAME"));
+ reviewDTO.setRating(rs.getInt("RATING"));
+ reviewDTOs.add(reviewDTO);
+ }
+ return reviewDTOs;
+ }
+
/**
* Cleans up the statement and resultset after executing the query
*
@@ -248,7 +278,7 @@ public class Util {
public static ApplicationManager getApplicationManager() {
if (applicationManager == null) {
- synchronized (Util.class) {
+ synchronized (DAOUtil.class) {
if (applicationManager == null) {
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
applicationManager =
@@ -272,7 +302,7 @@ public class Util {
try {
if (applicationStorageManager == null) {
- synchronized (Util.class) {
+ synchronized (DAOUtil.class) {
if (applicationStorageManager == null) {
applicationStorageManager = ApplicationManagementUtil
.getApplicationStorageManagerInstance();
@@ -299,7 +329,7 @@ public class Util {
*/
public static SubscriptionManager getSubscriptionManager() {
if (subscriptionManager == null) {
- synchronized (Util.class) {
+ synchronized (DAOUtil.class) {
if (subscriptionManager == null) {
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
subscriptionManager =
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementPublisherAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementPublisherAPIImpl.java
index 57f91e07207..9d53177a031 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementPublisherAPIImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementPublisherAPIImpl.java
@@ -453,7 +453,9 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
@Valid LifecycleChanger lifecycleChanger) {
ApplicationManager applicationManager = APIUtil.getApplicationManager();
try {
- applicationManager.changeLifecycleState(applicationUuid, lifecycleChanger);
+ ApplicationRelease applicationRelease = applicationManager
+ .changeLifecycleState(applicationUuid, lifecycleChanger);
+ return Response.status(Response.Status.CREATED).entity(applicationRelease).build();
} catch (BadRequestException e) {
String msg = "Request payload contains invalid data, hence veryfy the request payload.";
log.error(msg, e);
@@ -472,7 +474,6 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
- return Response.status(Response.Status.CREATED).entity("Lifecycle state added successfully.").build();
}
@GET
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml
index ae5daccb491..d0a291c5446 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml
@@ -157,16 +157,6 @@
org.wso2.carbon.devicemgt
org.wso2.carbon.device.application.mgt.core
provided
-
-
- org.mockito
- mockito-core
-
-
- javassist
- javassist
-
-
org.wso2.carbon.devicemgt
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/ReviewManagementAPI.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/ReviewManagementAPI.java
index 045e5163b0d..f9a4c8f39dc 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/ReviewManagementAPI.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/ReviewManagementAPI.java
@@ -32,7 +32,9 @@ import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.apimgt.annotations.api.Scopes;
import org.wso2.carbon.device.application.mgt.common.PaginationResult;
import org.wso2.carbon.device.application.mgt.common.ErrorResponse;
-import org.wso2.carbon.device.application.mgt.common.Review;
+import org.wso2.carbon.device.application.mgt.common.ReviewTmp;
+import org.wso2.carbon.device.application.mgt.common.wrapper.ReviewWrapper;
+
import javax.validation.Valid;
import javax.ws.rs.Path;
import javax.ws.rs.Consumes;
@@ -63,29 +65,28 @@ import java.util.List;
}
),
tags = {
- @Tag(name = "review_management", description = "Review Management related APIs")
+ @Tag(name = "review_management", description = "ReviewTmp Management related APIs")
}
)
@Scopes(
scopes = {
@Scope(
name = "Get Review Details",
- description = "Get review details",
+ description = "Get review details from application store.",
key = "perm:app:review:view",
permissions = {"/app-mgt/store/review/view"}
),
@Scope(
name = "Update a Review",
- description = "Update a comment",
+ description = "Update a Review from the application store.",
key = "perm:app:review:update",
permissions = {"/app-mgt/store/review/update"}
),
}
)
-@Path("/review")
-@Api(value = "Review Management", description = "This API carries all review management related operations such as get "
- + "all the reviews, add review, etc.")
+@Path("/reviews")
+@Api(value = "ReviewTmp Management")
@Produces(MediaType.APPLICATION_JSON)
public interface ReviewManagementAPI {
String SCOPE = "scope";
@@ -113,6 +114,9 @@ public interface ReviewManagementAPI {
message = "OK. \n Successfully retrieved reviews.",
response = PaginationResult.class,
responseContainer = "PaginationResult"),
+ @ApiResponse(
+ code = 404,
+ message = "Not Found. \n Not found an application release for requested UUID."),
@ApiResponse(
code = 500,
message = "Internal Server Error. \n Error occurred while getting the review list.",
@@ -145,7 +149,7 @@ public interface ReviewManagementAPI {
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Add a review",
- notes = "This will add a new review",
+ notes = "This will add a new review for application release.",
tags = "Store Management",
extensions = {
@Extension(properties = {
@@ -158,29 +162,89 @@ public interface ReviewManagementAPI {
value = {
@ApiResponse(
code = 201,
- message = "OK. \n Successfully add a review.",
- response = Review.class),
+ message = "OK. \n Successfully add a reviewTmp.",
+ response = ReviewTmp.class),
@ApiResponse(
code = 400,
message =
- "Bad Request. \n"),
+ "Bad Request. \n Found invalid payload with the request."),
+ @ApiResponse(
+ code = 403,
+ message = "Don't have permission to add a review."),
+ @ApiResponse(
+ code = 404,
+ message = "Not Found. \n Not found an application release for requested UUID."),
@ApiResponse(
code = 500,
- message = "Internal Server Error. \n Error occurred adding a review.",
+ message = "Internal Server Error. \n Error occurred adding a reviewTmp.",
response = ErrorResponse.class)
})
Response addReview(
@ApiParam(
- name = "review",
- value = "Review details",
- required = true) Review review,
+ name = "reviewTmp",
+ value = "ReviewTmp details",
+ required = true) ReviewWrapper reviewWrapper,
@ApiParam(
name="uuid",
- value="uuid of the release version of the application",
+ value="uuid of the application release.",
required=true)
@PathParam("uuid") String uuid);
+ @POST
+ @Path("/{uuid}/{parentReviewId}")
+ @Produces(MediaType.APPLICATION_JSON)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ApiOperation(
+ consumes = MediaType.APPLICATION_JSON,
+ produces = MediaType.APPLICATION_JSON,
+ httpMethod = "POST",
+ value = "Add a reply comment",
+ notes = "This will add a reply comment for a comment or review.",
+ tags = "Store Management",
+ extensions = {
+ @Extension(properties = {
+ @ExtensionProperty(name = SCOPE, value = "perm:app:reviewTmp:update")
+ })
+ }
+ )
+
+ @ApiResponses(
+ value = {
+ @ApiResponse(
+ code = 201,
+ message = "OK. \n Successfully add a reviewTmp.",
+ response = ReviewTmp.class),
+ @ApiResponse(
+ code = 400,
+ message =
+ "Bad Request. \n Found invalid payload with the request."),
+ @ApiResponse(
+ code = 404,
+ message = "Not Found. \n Not found an application release for requested UUID."),
+
+ @ApiResponse(
+ code = 500,
+ message = "Internal Server Error. \n Error occurred adding a reviewTmp.",
+ response = ErrorResponse.class)
+ })
+
+ Response addReplyComment(
+ @ApiParam(
+ name = "review",
+ value = "Reply comment details",
+ required = true) ReviewWrapper reviewWrapper,
+ @ApiParam(
+ name="uuid",
+ value="uuid of the application release.",
+ required=true)
+ @PathParam("uuid") String uuid,
+ @ApiParam(
+ name="parentReviewId",
+ value="uuid of the application release.",
+ required=true)
+ @PathParam("parentReviewId") int parentReviewId);
+
@PUT
@Path("/{uuid}/{reviewId}")
@Produces(MediaType.APPLICATION_JSON)
@@ -189,8 +253,8 @@ public interface ReviewManagementAPI {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
- value = "Edit a review",
- notes = "This will edit the review",
+ value = "Edit a reviewTmp",
+ notes = "This will edit the reviewTmp",
tags = "Store Management",
extensions = {
@Extension(properties = {
@@ -202,22 +266,22 @@ public interface ReviewManagementAPI {
value = {
@ApiResponse(
code = 200,
- message = "OK. \n Successfully updated review.",
- response = Review.class),
+ message = "OK. \n Successfully updated reviewTmp.",
+ response = ReviewTmp.class),
@ApiResponse(
code = 400,
message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse(
code = 500,
- message = "Internal Server Error. \n Error occurred while updating the new review.",
+ message = "Internal Server Error. \n Error occurred while updating the new reviewTmp.",
response = ErrorResponse.class)
})
Response updateReview(
@ApiParam(
- name = "review",
- value = "The review that need to be updated.",
+ name = "reviewTmp",
+ value = "The reviewTmp that need to be updated.",
required = true)
- @Valid Review review,
+ @Valid ReviewWrapper updatingReview,
@ApiParam(
name="uuid",
value = "uuid of the application release",
@@ -225,7 +289,7 @@ public interface ReviewManagementAPI {
@PathParam("uuid") String uuid,
@ApiParam(
name="reviewId",
- value = "review id of the updating review.",
+ value = "reviewTmp id of the updating reviewTmp.",
required = true)
@PathParam("reviewId") int reviewId);
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/ReviewManagementAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/ReviewManagementAPIImpl.java
index da6a6a72283..860efe8e38d 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/ReviewManagementAPIImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/ReviewManagementAPIImpl.java
@@ -23,10 +23,11 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.common.PaginationResult;
import org.wso2.carbon.device.application.mgt.common.Rating;
-import org.wso2.carbon.device.application.mgt.common.Review;
-import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
import org.wso2.carbon.device.application.mgt.common.exception.ReviewDoesNotExistException;
import org.wso2.carbon.device.application.mgt.common.services.ReviewManager;
+import org.wso2.carbon.device.application.mgt.common.wrapper.ReviewWrapper;
+import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
+import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException;
import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException;
import org.wso2.carbon.device.application.mgt.store.api.services.ReviewManagementAPI;
import org.wso2.carbon.device.application.mgt.common.PaginationRequest;
@@ -46,9 +47,9 @@ import javax.ws.rs.DELETE;
import javax.ws.rs.core.Response;
/**
- * Review Management related jax-rs APIs.
+ * ReviewTmp Management related jax-rs APIs.
*/
-@Path("/review")
+@Path("/reviews")
public class ReviewManagementAPIImpl implements ReviewManagementAPI {
private static Log log = LogFactory.getLog(ReviewManagementAPIImpl.class);
@@ -65,10 +66,18 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
try {
PaginationResult paginationResult = reviewManager.getAllReviews(request, uuid);
return Response.status(Response.Status.OK).entity(paginationResult).build();
+ } catch (NotFoundException e) {
+ String msg = "Couldn't find an application release for UUID: " + uuid;
+ log.error(msg, e);
+ return Response.status(Response.Status.NOT_FOUND).entity(msg).build();
} catch (ReviewManagementException e) {
String msg = "Error occurred while retrieving reviews for application UUID: " + uuid;
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
+ } catch (ApplicationManagementException e) {
+ String msg = "Error occurred while retrieving application release details for application UUID: " + uuid;
+ log.error(msg, e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
}
@@ -77,31 +86,73 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
@Consumes("application/json")
@Path("/{uuid}")
public Response addReview(
- @ApiParam Review review,
+ @ApiParam ReviewWrapper reviewWrapper,
@PathParam("uuid") String uuid) {
ReviewManager reviewManager = APIUtil.getReviewManager();
try {
- boolean isReviewCreated = reviewManager.addReview(review, uuid);
+ boolean isReviewCreated = reviewManager.addReview(reviewWrapper, uuid);
if (isReviewCreated) {
- return Response.status(Response.Status.CREATED).entity(review).build();
+ return Response.status(Response.Status.CREATED).entity(reviewWrapper).build();
} else {
- String msg = "Given review is not valid. Please check the review payload.";
+ String msg = "Review adding is failed. Please contact the administrator.";
log.error(msg);
- return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
} catch (NotFoundException e) {
String msg = "Couldn't find an application release for UUID: " + uuid;
log.error(msg, e);
return Response.status(Response.Status.NOT_FOUND).entity(msg).build();
+ } catch (BadRequestException e) {
+ String msg = "Found invalid payload data with the request. Hence, please verify the request payload.";
+ log.error(msg);
+ return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
+ } catch (ForbiddenException e) {
+ String msg = "You have already reviewed the application. Hence you are not permitted to review the "
+ + "application again.";
+ log.error(msg, e);
+ return Response.status(Response.Status.FORBIDDEN).entity(msg).build();
} catch (ReviewManagementException e) {
- String msg = "Error occurred while creating the review";
+ String msg = "Error occurred while creating the reviewTmp";
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
- } catch (RequestValidatingException e) {
- String msg =
- "Error occurred while adding for application release. UUID of the application release: " + uuid;
+ } catch (ApplicationManagementException e) {
+ String msg = "Error occured while accessing application release for UUID: " + uuid;
log.error(msg, e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
+ }
+ }
+
+ @Override
+ @POST
+ @Consumes("application/json")
+ @Path("/{uuid}/{parentReviewId}")
+ public Response addReplyComment(
+ @ApiParam ReviewWrapper reviewWrapper,
+ @PathParam("uuid") String uuid,
+ @PathParam("parentReviewId") int parentReviewId) {
+ ReviewManager reviewManager = APIUtil.getReviewManager();
+ try {
+ boolean isRepliedForReview = reviewManager.addReplyComment(reviewWrapper, uuid, parentReviewId);
+ if (isRepliedForReview) {
+ return Response.status(Response.Status.CREATED).entity(reviewWrapper).build();
+ } else {
+ String msg = "Error occured when adding reply comment for the review. Please contact the administrator..";
+ log.error(msg);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
+ }
+ } catch (NotFoundException e) {
+ String msg = "Couldn't find an application release for UUID: " + uuid;
+ log.error(msg, e);
+ return Response.status(Response.Status.NOT_FOUND).entity(msg).build();
+ } catch (BadRequestException e) {
+ String msg = "Found invalid payload data with the request to add reply comment. Hence, please verify the "
+ + "request payload.";
+ log.error(msg);
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
+ }catch (ReviewManagementException e) {
+ String msg = "Error occurred while creating the reviewTmp";
+ log.error(msg, e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
} catch (ApplicationManagementException e) {
String msg = "Error occured while accessing application release for UUID: " + uuid;
log.error(msg, e);
@@ -114,13 +165,13 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
@Consumes("application/json")
@Path("/{uuid}/{reviewId}")
public Response updateReview(
- @ApiParam Review review,
+ @ApiParam ReviewWrapper updatingReview,
@PathParam("uuid") String uuid,
@PathParam("reviewId") int reviewId) {
ReviewManager reviewManager = APIUtil.getReviewManager();
try {
- if (reviewManager.updateReview(review, reviewId, uuid, null)) {
- return Response.status(Response.Status.OK).entity(review).build();
+ if (reviewManager.updateReview(updatingReview, reviewId, uuid)) {
+ return Response.status(Response.Status.OK).entity(updatingReview).build();
} else {
String msg = "Review updating failed. Please contact the administrator";
log.error(msg);
@@ -130,11 +181,18 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
String msg = "Error occurred while retrieving comments.";
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
- } catch (RequestValidatingException e) {
- String msg = "Error occurred while updating review. Review id: " + reviewId;
+ } catch (NotFoundException e) {
+ String msg = "Couldn't found application release data for UUID " + uuid + " or Review for review ID: " + reviewId;
log.error(msg, e);
- return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
- }
+ return Response.status(Response.Status.NOT_FOUND).entity(msg).build();
+ } catch (ForbiddenException e) {
+ String msg = "You dont have permission to update application release review.";
+ log.error(msg, e);
+ return Response.status(Response.Status.FORBIDDEN).entity(msg).build();
+ } catch (ApplicationManagementException e) {
+ String msg = "Error occurred when getting application release data for application release UUID:." + uuid;
+ log.error(msg, e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); }
}
@Override
@@ -147,9 +205,9 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
ReviewManager reviewManager = APIUtil.getReviewManager();
try {
if (reviewManager.deleteReview(uuid, reviewId)) {
- return Response.status(Response.Status.OK).entity("Review is deleted successfully.").build();
+ return Response.status(Response.Status.OK).entity("ReviewTmp is deleted successfully.").build();
} else {
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Review deleting is failed.")
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("ReviewTmp deleting is failed.")
.build();
}
} catch (ReviewManagementException e) {
@@ -173,7 +231,7 @@ public class ReviewManagementAPIImpl implements ReviewManagementAPI {
try {
rating = reviewManager.getRating(uuid);
} catch (ReviewManagementException e) {
- log.error("Review Management Exception occurs", e);
+ log.error("ReviewTmp Management Exception occurs", e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
return Response.status(Response.Status.OK).entity(rating).build();
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java
index 5cd0418f1eb..c6b6b5f2a6b 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java
@@ -17,34 +17,34 @@
*/
package org.wso2.carbon.device.application.mgt.store.api.services.util;
-import org.wso2.carbon.device.application.mgt.common.Review;
+import org.wso2.carbon.device.application.mgt.common.ReviewTmp;
/**
- * Helper class for Review Management API test cases.
+ * Helper class for ReviewTmp Management API test cases.
*/
public class CommentMgtTestHelper {
- private static final String COMMENT_TEXT = "Dummy Review";
+ private static final String COMMENT_TEXT = "Dummy ReviewTmp";
private static final String CREATED_BY = "TEST_CREATED_BY";
private static final String MODIFIED_BY = "TEST_MODIFIED_BY";
private static final int PARENT_ID = 123;
private static final int COMMENT_ID = 1;
/**
- * Creates a Review with given text and given uuid.
- * If the text is null, the COMMENT_TEXT will be used as the Dummy Review.
+ * Creates a ReviewTmp with given text and given uuid.
+ * If the text is null, the COMMENT_TEXT will be used as the Dummy ReviewTmp.
*
- * @param commentText : Text of the Review
- * @return Review
+ * @param commentText : Text of the ReviewTmp
+ * @return ReviewTmp
*/
- public static Review getDummyComment(String commentText, String uuid) {
- Review review = new Review();
- review.setId(COMMENT_ID);
- review.setUsername(CREATED_BY);
- review.setComment(commentText != null ? commentText : COMMENT_TEXT);
+ public static ReviewTmp getDummyComment(String commentText, String uuid) {
+ ReviewTmp reviewTmp = new ReviewTmp();
+ reviewTmp.setId(COMMENT_ID);
+ reviewTmp.setUsername(CREATED_BY);
+ reviewTmp.setComment(commentText != null ? commentText : COMMENT_TEXT);
- return review;
+ return reviewTmp;
}
}
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
index 5450d3941dc..b060ec76526 100644
--- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
@@ -55,7 +55,8 @@ CREATE TABLE IF NOT EXISTS AP_APP_REVIEW(
ID INTEGER NOT NULL AUTO_INCREMENT,
TENANT_ID INTEGER NOT NULL,
COMMENT VARCHAR(250) NOT NULL,
- REPLY_COMMENT VARCHAR(250) NULL,
+ ROOT_PARENT_ID INTEGER NOT NULL,
+ IMMEDIATE_PARENT_ID INTEGER NOT NULL,
CREATED_AT TIMESTAMP NOT NULL,
MODIFIED_AT TIMESTAMP NOT NULL,
RATING INTEGER NULL,