From 8db7f5015ff90e1b7b58e59848d380b2c187f81a Mon Sep 17 00:00:00 2001 From: Claudio Barril Date: Sun, 2 Feb 2014 04:09:28 -0300 Subject: [PATCH] api for unlink mindmaps --- .../wisemapping/dao/LabelMindmapManager.java | 14 ++++++ .../dao/LabelMindmapManagerImpl.java | 30 ++++++++++++ ...lMindmapRelationshipNotFoundException.java | 20 ++++++++ .../com/wisemapping/model/LabelMindmap.java | 43 +++++++++++++++++ .../rest/LabelMindmapController.java | 37 +++++++++++++++ .../rest/model/RestLabelMindmap.java | 47 +++++++++++++++++++ .../service/LabelMindmapService.java | 15 ++++++ .../service/LabelMindmapServiceImpl.java | 25 ++++++++++ .../wisemapping/model/LabelMindmap.hbm.xml | 15 ++++++ .../src/main/resources/messages_en.properties | 1 + .../main/webapp/WEB-INF/wisemapping-dao.xml | 1 + .../main/webapp/WEB-INF/wisemapping-model.xml | 4 ++ .../main/webapp/WEB-INF/wisemapping-rest.xml | 1 + .../webapp/WEB-INF/wisemapping-service.xml | 16 +++++++ 14 files changed, 269 insertions(+) create mode 100644 wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManager.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManagerImpl.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/exceptions/LabelMindmapRelationshipNotFoundException.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/model/LabelMindmap.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/rest/LabelMindmapController.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/rest/model/RestLabelMindmap.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapService.java create mode 100644 wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapServiceImpl.java create mode 100644 wise-webapp/src/main/resources/com/wisemapping/model/LabelMindmap.hbm.xml diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManager.java b/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManager.java new file mode 100644 index 00000000..8c5e3542 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManager.java @@ -0,0 +1,14 @@ +package com.wisemapping.dao; + +import com.wisemapping.model.LabelMindmap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public interface LabelMindmapManager { + + @Nullable + LabelMindmap getLabelMindmap(final int labelId, final int mindmapId); + + void removeLabelMindmap(@NotNull LabelMindmap labelMindmap); + +} diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManagerImpl.java new file mode 100644 index 00000000..587d5e3b --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/dao/LabelMindmapManagerImpl.java @@ -0,0 +1,30 @@ +package com.wisemapping.dao; + +import com.wisemapping.model.LabelMindmap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; + +import java.util.List; + + +public class LabelMindmapManagerImpl extends HibernateDaoSupport + implements LabelMindmapManager { + + @Nullable + @Override + public LabelMindmap getLabelMindmap(int labelId, int mindmapId) { + LabelMindmap result = null; + List list = getHibernateTemplate().find("from com.wisemapping.model.LabelMindmap wisemapping where mindmap_id=? and label_id=? ", new Object[]{mindmapId, labelId}); + assert list.size() <= 1; + if (list != null && !list.isEmpty()) { + result = list.get(0); + } + return result; + } + + @Override + public void removeLabelMindmap(@NotNull LabelMindmap labelMindmap) { + getHibernateTemplate().delete(labelMindmap); + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelMindmapRelationshipNotFoundException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelMindmapRelationshipNotFoundException.java new file mode 100644 index 00000000..5201296b --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelMindmapRelationshipNotFoundException.java @@ -0,0 +1,20 @@ +package com.wisemapping.exceptions; + +import org.jetbrains.annotations.NotNull; + +public class LabelMindmapRelationshipNotFoundException extends ClientException { + + private static final String MSG_KEY = "LABEL_MINDMAP_RELATION_NOT_BE_FOUND"; + + public LabelMindmapRelationshipNotFoundException(@NotNull String msg) + { + super(msg,Severity.WARNING); + } + + @NotNull + @Override + protected String getMsgBundleKey() { + return MSG_KEY; + } + +} diff --git a/wise-webapp/src/main/java/com/wisemapping/model/LabelMindmap.java b/wise-webapp/src/main/java/com/wisemapping/model/LabelMindmap.java new file mode 100644 index 00000000..0c9aa7e1 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/model/LabelMindmap.java @@ -0,0 +1,43 @@ +package com.wisemapping.model; + +import java.io.Serializable; + +public class LabelMindmap implements Serializable{ + + private int mindmapId; + private int labelId; + + public int getMindmapId() { + return mindmapId; + } + + public void setMindmapId(int mindmapId) { + this.mindmapId = mindmapId; + } + + public int getLabelId() { + return labelId; + } + + public void setLabelId(int labelId) { + this.labelId = labelId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof LabelMindmap)) return false; + + LabelMindmap that = (LabelMindmap) o; + + return labelId == that.labelId && mindmapId == that.mindmapId; + + } + + @Override + public int hashCode() { + int result = mindmapId; + result = 31 * result + labelId; + return result; + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/LabelMindmapController.java b/wise-webapp/src/main/java/com/wisemapping/rest/LabelMindmapController.java new file mode 100644 index 00000000..b2af4a9c --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/rest/LabelMindmapController.java @@ -0,0 +1,37 @@ +package com.wisemapping.rest; + + +import com.wisemapping.exceptions.LabelCouldNotFoundException; +import com.wisemapping.exceptions.LabelMindmapRelationshipNotFoundException; +import com.wisemapping.exceptions.WiseMappingException; +import com.wisemapping.model.LabelMindmap; +import com.wisemapping.rest.model.RestLabelMindmap; +import com.wisemapping.service.LabelMindmapService; +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.web.bind.annotation.*; + + +@Controller +public class LabelMindmapController extends BaseController { + + @Qualifier("labelMindmapService") + @Autowired + private LabelMindmapService labelMindmapService; + + @RequestMapping(method = RequestMethod.DELETE, value = "/labels/maps") + @ResponseStatus(value = HttpStatus.NO_CONTENT) + public void removeLabelFromMindmap(@RequestBody RestLabelMindmap restLabelMindmap) throws WiseMappingException { + final int labelId = restLabelMindmap.getLabelId(); + final int mindmapId = restLabelMindmap.getMindmapId(); + final LabelMindmap relationship = labelMindmapService.getLabelMindmap(labelId, mindmapId); + if (relationship == null) { + throw new LabelMindmapRelationshipNotFoundException("Label Map relation could not be found. Label Id: " + labelId + ", Map Id: " + mindmapId); + } + labelMindmapService.removeLabelFromMindmap(relationship); + } + + +} diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLabelMindmap.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLabelMindmap.java new file mode 100644 index 00000000..3cc7bd1a --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLabelMindmap.java @@ -0,0 +1,47 @@ +package com.wisemapping.rest.model; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.wisemapping.model.LabelMindmap; +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.jetbrains.annotations.NotNull; + +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.NONE; +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.PUBLIC_ONLY; + +@JsonAutoDetect( + fieldVisibility = NONE, + setterVisibility = PUBLIC_ONLY, + isGetterVisibility = NONE, + getterVisibility = PUBLIC_ONLY +) +@JsonIgnoreProperties(ignoreUnknown = true) +public class RestLabelMindmap { + + @JsonIgnore + private LabelMindmap labelMindmap; + + public RestLabelMindmap() { + this(new LabelMindmap()); + } + + public RestLabelMindmap(@NotNull final LabelMindmap labelMindmap) { + this.labelMindmap = labelMindmap; + } + + public void setLabelId(final int labelId) { + this.labelMindmap.setLabelId(labelId); + } + + public int getLabelId() { + return this.labelMindmap.getLabelId(); + } + + public void setMindmapId(final int mindmapId) { + labelMindmap.setMindmapId(mindmapId); + } + + public int getMindmapId() { + return this.labelMindmap.getMindmapId(); + } + +} diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapService.java b/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapService.java new file mode 100644 index 00000000..49b4dd2b --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapService.java @@ -0,0 +1,15 @@ +package com.wisemapping.service; + +import com.wisemapping.exceptions.WiseMappingException; +import com.wisemapping.model.Label; +import com.wisemapping.model.LabelMindmap; +import com.wisemapping.model.Mindmap; +import org.jetbrains.annotations.NotNull; + + +public interface LabelMindmapService { + + void removeLabelFromMindmap(@NotNull final LabelMindmap labelMindmap) throws WiseMappingException; + + LabelMindmap getLabelMindmap(int labelId, int mindmapId); +} diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapServiceImpl.java new file mode 100644 index 00000000..e2f74cf4 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/service/LabelMindmapServiceImpl.java @@ -0,0 +1,25 @@ +package com.wisemapping.service; + +import com.wisemapping.dao.LabelMindmapManager; +import com.wisemapping.exceptions.WiseMappingException; +import com.wisemapping.model.LabelMindmap; +import org.jetbrains.annotations.NotNull; + +public class LabelMindmapServiceImpl implements LabelMindmapService { + + private LabelMindmapManager labelMindmapManager; + + public void setLabelMindmapManager(LabelMindmapManager labelMindmapManager) { + this.labelMindmapManager = labelMindmapManager; + } + + @Override + public void removeLabelFromMindmap(@NotNull LabelMindmap labelMindmap) throws WiseMappingException { + this.labelMindmapManager.removeLabelMindmap(labelMindmap); + } + + @Override + public LabelMindmap getLabelMindmap(int labelId, int mindmapId) { + return this.labelMindmapManager.getLabelMindmap(labelId, mindmapId); + } +} diff --git a/wise-webapp/src/main/resources/com/wisemapping/model/LabelMindmap.hbm.xml b/wise-webapp/src/main/resources/com/wisemapping/model/LabelMindmap.hbm.xml new file mode 100644 index 00000000..3d4b8749 --- /dev/null +++ b/wise-webapp/src/main/resources/com/wisemapping/model/LabelMindmap.hbm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wise-webapp/src/main/resources/messages_en.properties b/wise-webapp/src/main/resources/messages_en.properties index 0c843c1e..6517be97 100644 --- a/wise-webapp/src/main/resources/messages_en.properties +++ b/wise-webapp/src/main/resources/messages_en.properties @@ -255,6 +255,7 @@ CAPTCHA_LOADING_ERROR=ReCaptcha could not be loaded. You must have access to Goo ACCESS_HAS_BEEN_REVOKED= Upps. your access permissions to this map has been revoked. Contact map owner. MAP_CAN_NOT_BE_FOUND= Upps. The map can not be found. It must have been deleted. LABEL_CAN_NOT_BE_FOUND= Upps. The label can not be found. It must have been deleted. +LABEL_MINDMAP_RELATION_NOT_BE_FOUND= Upps. The label can not be found on map. It must have already been deleted. LICENSE=License WELCOME_TO_WISEMAPPING=Welcome to WiseMapping WELCOME_DETAILS=WiseMapping will enable you to create and read your mind maps everywhere. With WiseMapping you can: . diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-dao.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-dao.xml index 4f613d66..2a423638 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-dao.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-dao.xml @@ -34,6 +34,7 @@ com/wisemapping/model/AccessAuditory.hbm.xml com/wisemapping/model/MindMapHistory.hbm.xml com/wisemapping/model/Label.hbm.xml + com/wisemapping/model/LabelMindmap.hbm.xml diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml index cedd25dd..5ce330f0 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml @@ -17,5 +17,9 @@ + + + + \ No newline at end of file diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml index 3271da01..ddc5cbc4 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml @@ -45,6 +45,7 @@ com.wisemapping.rest.model.RestLogItem com.wisemapping.rest.model.RestLockInfo com.wisemapping.rest.model.RestLabel + com.wisemapping.rest.model.RestLabelMindmap diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml index 923939a0..408cee50 100755 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml @@ -72,6 +72,22 @@ + + + + + + + + + + + + PROPAGATION_REQUIRED + + + +