Skip to content

Commit

Permalink
Merge commit '299967bb0820467c33786c9bf14ef2e670455ec9' into HEAD
Browse files Browse the repository at this point in the history
  • Loading branch information
Zanata Build Server committed Jan 23, 2018
2 parents 8c099b5 + 299967b commit ab1b2cc
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 1 deletion.
Expand Up @@ -21,6 +21,7 @@
package org.zanata.rest.review;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
Expand All @@ -38,6 +39,7 @@
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;

import org.apache.commons.lang3.StringUtils;
import org.apache.deltaspike.jpa.api.transaction.Transactional;
import org.zanata.dao.ReviewCriteriaDAO;
import org.zanata.model.ReviewCriteria;
Expand All @@ -46,6 +48,8 @@
import org.zanata.security.annotations.CheckRole;
import com.google.common.annotations.VisibleForTesting;

import static org.zanata.model.ReviewCriteria.DESCRIPTION_MAX_LENGTH;

/**
* @author Patrick Huang <a href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
Expand Down Expand Up @@ -84,6 +88,10 @@ public static TransReviewCriteria fromModel(ReviewCriteria criteria) {
@Path("criteria")
@Transactional
public Response addCriteria(TransReviewCriteria criteria) {
Optional<Response> response = validateReviewCriteria(criteria);
if (response.isPresent()) {
return response.get();
}
ReviewCriteria reviewCriteria =
new ReviewCriteria(criteria.getPriority(),
criteria.isEditable(), criteria.getDescription());
Expand All @@ -99,6 +107,10 @@ public Response addCriteria(TransReviewCriteria criteria) {
@CheckRole("admin")
@Transactional
public Response editCriteria(@PathParam("id") Long id, TransReviewCriteria criteria) {
Optional<Response> response = validateReviewCriteria(criteria);
if (response.isPresent()) {
return response.get();
}
ReviewCriteria reviewCriteria =
reviewCriteriaDAO.findById(id);
if (reviewCriteria == null) {
Expand Down Expand Up @@ -136,4 +148,22 @@ public Response getAllCriteria() {
Collectors.toList());
return Response.ok(entity).build();
}

/**
* Validate DTO in service due to missing hibernate validator in gwt-shared
* DTO.
*
* TODO: move validation to DTO
*
* @param criteria
*/
private Optional<Response> validateReviewCriteria(TransReviewCriteria criteria) {
String description = criteria.getDescription();
if (StringUtils.isBlank(description) ||
StringUtils.length(description) > DESCRIPTION_MAX_LENGTH) {
return Optional
.of(Response.status(Response.Status.BAD_REQUEST).build());
}
return Optional.empty();
}
}
Expand Up @@ -40,6 +40,10 @@
<dropNotNullConstraint tableName="HTextFlowTargetReviewComment"
columnName="comment" columnDataType="longtext" />
</changeSet>
<changeSet id="4" author="aeng@redhat.com">
<addNotNullConstraint tableName="ReviewCriteria"
columnName="description" columnDataType="varchar(255)" />
</changeSet>


</databaseChangeLog>
Expand Up @@ -5,6 +5,7 @@ import { Form, FormGroup, ControlLabel, Button, OverlayTrigger, Tooltip }
from 'react-bootstrap'
import { Icon, TextInput, SelectableDropdown } from '../../components'
import Toggle from 'react-toggle'
import { isEmpty } from 'lodash'
/**
* Reject Translations Administration panel
*/
Expand Down Expand Up @@ -106,6 +107,7 @@ class RejectionsForm extends Component {
criterionId
} = this.props
const textState = priorityToTextState(this.state.priority)
const error = isEmpty(this.state.description)
const title = <span className={textState}>{this.state.priority}</span>
const priorityDisabled = !isAdminMode && !editable
const deleteBtn = displayDelete
Expand All @@ -126,7 +128,8 @@ class RejectionsForm extends Component {
<FormGroup controlId='formInlineButtonEdit'>
<ControlLabel>&nbsp;</ControlLabel><br />
<OverlayTrigger placement='top' overlay={tooltip}>
<Button bsStyle='primary' className={className} onClick={this.onSave}>
<Button bsStyle='primary' className={className} onClick={this.onSave}
disabled={error}>
<Icon name='tick' className='s0 iconEdit' />
</Button>
</OverlayTrigger>
Expand Down
4 changes: 4 additions & 0 deletions server/zanata-frontend/src/app/styles/style.less
Expand Up @@ -2898,6 +2898,10 @@ li.progress-bar__expander.panels__panel__item a .list__item, li.progress-bar__ex
padding: 0.75em 0.75em 0.75em !important;
}

li.progress-bar__expander.panels__panel__item a .list__item {
width: 100%;
}

input[type=button].btn-block, input[type=reset].btn-block, input[type=submit].btn-block {
width: 100%;
}
Expand Down
Expand Up @@ -31,6 +31,7 @@
import javax.persistence.NamedQuery;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.zanata.common.IssuePriority;


Expand All @@ -45,12 +46,16 @@
public class ReviewCriteria extends ModelEntityBase {
public static final String QUERY_BY_DESCRIPTION = "ReviewCriteriaByDescription";
private static final long serialVersionUID = -8213113671271711837L;

public static final int DESCRIPTION_MAX_LENGTH = 255;

@Enumerated(EnumType.STRING)
@Column(columnDefinition = "varchar(32)")
private IssuePriority priority;
private boolean editable;
@Column(columnDefinition = "varchar(255)")
@Size(max = 255)
@NotEmpty
private String description;

public IssuePriority getPriority() {
Expand Down

0 comments on commit ab1b2cc

Please sign in to comment.