rest api for label and hibernate mapping
This commit is contained in:
committed by
Ezequiel Bergamaschi
parent
504e3e18e6
commit
1b480b566a
@@ -0,0 +1,10 @@
|
||||
package com.wisemapping.dao;
|
||||
|
||||
import com.wisemapping.model.Label;
|
||||
|
||||
public interface LabelManager {
|
||||
|
||||
void addLabel(Label label);
|
||||
|
||||
void saveLabel(Label label);
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
package com.wisemapping.dao;
|
||||
|
||||
import com.wisemapping.model.Label;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
public class LabelManagerImpl extends HibernateDaoSupport
|
||||
implements LabelManager {
|
||||
|
||||
@Override
|
||||
public void addLabel(Label label) {
|
||||
saveLabel(label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveLabel(@NotNull Label label) {
|
||||
getSession().save(label);
|
||||
}
|
||||
}
|
49
wise-webapp/src/main/java/com/wisemapping/model/Label.java
Normal file
49
wise-webapp/src/main/java/com/wisemapping/model/Label.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package com.wisemapping.model;
|
||||
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class Label {
|
||||
|
||||
//~ Instance fields ......................................................................................
|
||||
private int id;
|
||||
@NotNull private String title;
|
||||
@NotNull private User creator;
|
||||
@Nullable private Label parent;
|
||||
|
||||
public void setParent(@Nullable Label parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Label getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void setCreator(@NotNull User creator) {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public User getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(@NotNull String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
package com.wisemapping.rest;
|
||||
|
||||
import com.wisemapping.exceptions.WiseMappingException;
|
||||
import com.wisemapping.model.Label;
|
||||
import com.wisemapping.model.User;
|
||||
import com.wisemapping.rest.model.RestLabel;
|
||||
import com.wisemapping.security.Utils;
|
||||
import com.wisemapping.service.LabelService;
|
||||
import com.wisemapping.validator.LabelValidator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.validation.BeanPropertyBindingResult;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@Controller
|
||||
public class LabelController extends BaseController {
|
||||
|
||||
@Qualifier("labelService")
|
||||
@Autowired
|
||||
private LabelService labelService;
|
||||
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/labels", consumes = {"application/json"})
|
||||
@ResponseStatus(value = HttpStatus.CREATED)
|
||||
public void createLabel(@RequestBody RestLabel restLabel, @NotNull HttpServletResponse response, @RequestParam(required = false) String title) throws WiseMappingException {
|
||||
// Overwrite title if it was specified by parameter.
|
||||
if (title != null && !title.isEmpty()) {
|
||||
restLabel.setTitle(title);
|
||||
}
|
||||
|
||||
final Label label = restLabel.getDelegated();
|
||||
|
||||
// Validate ...
|
||||
final BindingResult result = new BeanPropertyBindingResult(restLabel, "");
|
||||
new LabelValidator().validate(label, result);
|
||||
if (result.hasErrors()) {
|
||||
|
||||
throw new ValidationException(result);
|
||||
}
|
||||
|
||||
// Add new label ...
|
||||
final User user = Utils.getUser();
|
||||
assert user != null;
|
||||
labelService.addLabel(label, user);
|
||||
|
||||
// Return the new created map ...
|
||||
response.setHeader("ResourceId", Integer.toString(label.getId()));
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
package com.wisemapping.rest.model;
|
||||
|
||||
import com.wisemapping.model.Label;
|
||||
import org.codehaus.jackson.annotate.JsonAutoDetect;
|
||||
import org.codehaus.jackson.annotate.JsonIgnore;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.NONE;
|
||||
import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.PUBLIC_ONLY;
|
||||
|
||||
@XmlRootElement(name = "label")
|
||||
@XmlAccessorType(XmlAccessType.PROPERTY)
|
||||
@JsonAutoDetect(
|
||||
fieldVisibility = NONE,
|
||||
setterVisibility = PUBLIC_ONLY,
|
||||
isGetterVisibility = NONE,
|
||||
getterVisibility = PUBLIC_ONLY
|
||||
)
|
||||
public class RestLabel {
|
||||
|
||||
@JsonIgnore
|
||||
private Label label;
|
||||
|
||||
public RestLabel() {
|
||||
this(new Label());
|
||||
}
|
||||
|
||||
|
||||
public RestLabel(@NotNull final Label label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.label.getTitle();
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return label.getId();
|
||||
}
|
||||
|
||||
public String getCreator() {
|
||||
return this.label.getCreator().getEmail();
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
label.setId(id);
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
label.setTitle(title);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public Label getDelegated() {
|
||||
return label;
|
||||
}
|
||||
}
|
@@ -0,0 +1,12 @@
|
||||
package com.wisemapping.service;
|
||||
|
||||
import com.wisemapping.exceptions.WiseMappingException;
|
||||
import com.wisemapping.model.Label;
|
||||
import com.wisemapping.model.User;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface LabelService {
|
||||
|
||||
void addLabel(@NotNull final Label label, @NotNull final User user) throws WiseMappingException;
|
||||
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
package com.wisemapping.service;
|
||||
|
||||
import com.wisemapping.dao.LabelManager;
|
||||
import com.wisemapping.exceptions.WiseMappingException;
|
||||
import com.wisemapping.model.Label;
|
||||
import com.wisemapping.model.User;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class LabelServiceImpl implements LabelService {
|
||||
|
||||
private LabelManager labelManager;
|
||||
|
||||
public void setLabelManager(LabelManager labelManager) {
|
||||
this.labelManager = labelManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addLabel(@NotNull final Label label, @NotNull final User user) throws WiseMappingException {
|
||||
|
||||
label.setCreator(user);
|
||||
labelManager.addLabel(label);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package com.wisemapping.validator;
|
||||
|
||||
import com.wisemapping.model.Label;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.validation.Errors;
|
||||
import org.springframework.validation.ValidationUtils;
|
||||
import org.springframework.validation.Validator;
|
||||
|
||||
public class LabelValidator implements Validator {
|
||||
@Override
|
||||
public boolean supports(Class<?> clazz) {
|
||||
return clazz.equals(Label.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validate(@Nullable final Object target, @NotNull final Errors errors) {
|
||||
final Label label = (Label) target;
|
||||
if (label == null) {
|
||||
errors.rejectValue("map", "error.not-specified", null, "Value required.");
|
||||
} else {
|
||||
validateLabel(label, errors);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void validateLabel(@NotNull final Label label, @NotNull final Errors errors) {
|
||||
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "title", Messages.FIELD_REQUIRED);
|
||||
String title = label.getTitle();
|
||||
//todo hacer otras validaciones como si supera el maximo o el label existe
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user