Skip to content
Snippets Groups Projects
Commit b0556f8f authored by uhensler's avatar uhensler
Browse files

OO-3116: Refactoring the decision if a question is editable and deletable

parent 387943e7
No related branches found
No related tags found
No related merge requests found
...@@ -68,12 +68,4 @@ public interface ReviewService { ...@@ -68,12 +68,4 @@ public interface ReviewService {
*/ */
public boolean hasRatingController(); public boolean hasRatingController();
/**
* Is a question item editable in a particular status?
*
* @param status
* @return
*/
public boolean isEditableQuestionStatus(QuestionStatus status);
} }
...@@ -48,8 +48,6 @@ import org.springframework.stereotype.Service; ...@@ -48,8 +48,6 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ReviewServiceImpl implements ReviewService { public class ReviewServiceImpl implements ReviewService {
private static final List<QuestionStatus> EDITABLE_STATES_REVIEW_PROCESS_OFF = Arrays.asList(QuestionStatus.values());
private static final List<QuestionStatus> EDITABLE_STATES_REVIEW_PROCESS_ON = Arrays.asList(QuestionStatus.draft, QuestionStatus.revised);
private static final Collection<QuestionStatus> CHANGED_STATUS_FOR_REVIEW = Arrays.asList( private static final Collection<QuestionStatus> CHANGED_STATUS_FOR_REVIEW = Arrays.asList(
QuestionStatus.draft, QuestionStatus.draft,
QuestionStatus.revised, QuestionStatus.revised,
...@@ -140,13 +138,4 @@ public class ReviewServiceImpl implements ReviewService { ...@@ -140,13 +138,4 @@ public class ReviewServiceImpl implements ReviewService {
return provider; return provider;
} }
@Override
public boolean isEditableQuestionStatus(QuestionStatus status) {
Collection<QuestionStatus> editableQuestionStates
= qpoolModule.isReviewProcessEnabled()
? EDITABLE_STATES_REVIEW_PROCESS_ON
: EDITABLE_STATES_REVIEW_PROCESS_OFF;
return editableQuestionStates.contains(status);
}
} }
...@@ -21,12 +21,12 @@ package org.olat.modules.qpool.security; ...@@ -21,12 +21,12 @@ package org.olat.modules.qpool.security;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import org.olat.modules.qpool.QuestionItemSecurityCallback; import org.olat.modules.qpool.QuestionItemSecurityCallback;
import org.olat.modules.qpool.QuestionItemView; import org.olat.modules.qpool.QuestionItemView;
import org.olat.modules.qpool.QuestionPoolModule; import org.olat.modules.qpool.QuestionPoolModule;
import org.olat.modules.qpool.QuestionStatus; import org.olat.modules.qpool.QuestionStatus;
import org.olat.modules.qpool.ReviewService;
import org.olat.modules.qpool.ui.QuestionItemsSource; import org.olat.modules.qpool.ui.QuestionItemsSource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
...@@ -43,6 +43,9 @@ import org.springframework.stereotype.Component; ...@@ -43,6 +43,9 @@ import org.springframework.stereotype.Component;
@Scope("prototype") @Scope("prototype")
public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallback { public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallback {
private static final List<QuestionStatus> EDITABLE_STATES = Arrays.asList(
QuestionStatus.draft,
QuestionStatus.revised);
private static final Collection<QuestionStatus> DELETABLE_STATES = Arrays.asList( private static final Collection<QuestionStatus> DELETABLE_STATES = Arrays.asList(
QuestionStatus.draft, QuestionStatus.draft,
QuestionStatus.revised, QuestionStatus.revised,
...@@ -55,8 +58,6 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba ...@@ -55,8 +58,6 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
@Autowired @Autowired
private QuestionPoolModule qpoolModule; private QuestionPoolModule qpoolModule;
@Autowired
private ReviewService reviewService;
@Override @Override
public void setQuestionItemView(QuestionItemView itemView) { public void setQuestionItemView(QuestionItemView itemView) {
...@@ -80,7 +81,7 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba ...@@ -80,7 +81,7 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
@Override @Override
public boolean canEditQuestion() { public boolean canEditQuestion() {
return reviewService.isEditableQuestionStatus(itemView.getQuestionStatus()) return isEditableQuestionStatus(itemView.getQuestionStatus())
&& (admin || itemView.isAuthor() || itemView.isEditableInPool() || itemView.isEditableInShare()) ; && (admin || itemView.isAuthor() || itemView.isEditableInPool() || itemView.isEditableInShare()) ;
} }
...@@ -101,14 +102,14 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba ...@@ -101,14 +102,14 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
@Override @Override
public boolean canStartReview() { public boolean canStartReview() {
return itemView.isReviewableFormat() return itemView.isReviewableFormat()
&& reviewService.isEditableQuestionStatus(itemView.getQuestionStatus()) && isEditableQuestionStatus(itemView.getQuestionStatus())
&& (admin || itemView.isAuthor()); && (admin || itemView.isAuthor());
} }
@Override @Override
public boolean canReviewNotStartable() { public boolean canReviewNotStartable() {
return !itemView.isReviewableFormat() return !itemView.isReviewableFormat()
&& reviewService.isEditableQuestionStatus(itemView.getQuestionStatus()) && isEditableQuestionStatus(itemView.getQuestionStatus())
&& (admin || itemView.isAuthor()); && (admin || itemView.isAuthor());
} }
...@@ -148,7 +149,7 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba ...@@ -148,7 +149,7 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
@Override @Override
public boolean canDelete() { public boolean canDelete() {
return DELETABLE_STATES.contains(itemView.getQuestionStatus()) return isDeletableQuestionStatus(itemView.getQuestionStatus())
&& (admin || itemView.isManager()); && (admin || itemView.isManager());
} }
...@@ -176,5 +177,13 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba ...@@ -176,5 +177,13 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
public boolean canEditAuthors() { public boolean canEditAuthors() {
return admin || itemView.isAuthor() || itemView.isManager() || (poolAdmin && qpoolModule.isPoolAdminAllowedToEditMetadata()); return admin || itemView.isAuthor() || itemView.isManager() || (poolAdmin && qpoolModule.isPoolAdminAllowedToEditMetadata());
} }
private boolean isEditableQuestionStatus(QuestionStatus status) {
return EDITABLE_STATES.contains(status);
}
private boolean isDeletableQuestionStatus(QuestionStatus status) {
return DELETABLE_STATES.contains(status);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment