Solve expcetion on editor exception on starred for a viewer.

This commit is contained in:
Paulo Gustavo Veiga 2012-06-17 23:21:02 -03:00
parent 29091dec88
commit f25ea3a377
10 changed files with 63 additions and 36 deletions

View File

@ -25,7 +25,7 @@ import java.util.List;
public interface MindmapManager { public interface MindmapManager {
Collaborator getCollaboratorBy(@NotNull String email); Collaborator findCollaborator(@NotNull String email);
Collaborator findCollaborator(long id); Collaborator findCollaborator(long id);
@ -62,4 +62,6 @@ public interface MindmapManager {
public List<MindMapHistory> getHistoryFrom(int mindmapId); public List<MindMapHistory> getHistoryFrom(int mindmapId);
public MindMapHistory getHistory(int historyId); public MindMapHistory getHistory(int historyId);
void updateCollaboration(@NotNull Collaboration collaboration);
} }

View File

@ -35,7 +35,7 @@ public class MindmapManagerImpl
implements MindmapManager { implements MindmapManager {
@Override @Override
public Collaborator getCollaboratorBy(final String email) { public Collaborator findCollaborator(@NotNull final String email) {
final Collaborator collaborator; final Collaborator collaborator;
final List<Collaborator> collaborators = getHibernateTemplate().find("from com.wisemapping.model.Collaborator collaborator where email=?", email); final List<Collaborator> collaborators = getHibernateTemplate().find("from com.wisemapping.model.Collaborator collaborator where email=?", email);
if (collaborators != null && !collaborators.isEmpty()) { if (collaborators != null && !collaborators.isEmpty()) {
@ -69,6 +69,11 @@ public class MindmapManagerImpl
return getHibernateTemplate().get(MindMapHistory.class, historyId); return getHibernateTemplate().get(MindMapHistory.class, historyId);
} }
@Override
public void updateCollaboration(@NotNull Collaboration collaboration) {
getHibernateTemplate().save(collaboration);
}
@Override @Override
public List<MindMap> search(MindMapCriteria criteria, int maxResult) { public List<MindMap> search(MindMapCriteria criteria, int maxResult) {
final Criteria hibernateCriteria = getSession().createCriteria(MindMap.class); final Criteria hibernateCriteria = getSession().createCriteria(MindMap.class);
@ -138,7 +143,7 @@ public class MindmapManagerImpl
} }
@Override @Override
public void addCollaborator(Collaborator collaborator) { public void addCollaborator(@NotNull Collaborator collaborator) {
assert collaborator != null : "ADD MINDMAP COLLABORATOR: Collaborator is required!"; assert collaborator != null : "ADD MINDMAP COLLABORATOR: Collaborator is required!";
getHibernateTemplate().save(collaborator); getHibernateTemplate().save(collaborator);
} }

View File

@ -60,6 +60,7 @@ final public class NotificationService {
model.put("baseUrl", formMail); model.put("baseUrl", formMail);
model.put("senderMail", user.getEmail()); model.put("senderMail", user.getEmail());
model.put("message", message); model.put("message", message);
model.put("supportEmail", mailer.getSupportEmail());
mailer.sendEmail(formMail, collabEmail, subject, model, "newCollaboration.vm"); mailer.sendEmail(formMail, collabEmail, subject, model, "newCollaboration.vm");

View File

@ -222,12 +222,12 @@ public class MindMap {
} }
public void setStarred(@NotNull Collaborator collaborator, boolean value) throws WiseMappingException { public void setStarred(@NotNull Collaborator collaborator, boolean value) throws WiseMappingException {
final CollaborationProperties collaborationProperties = getCollaborationProperties(collaborator); final CollaborationProperties collaborationProperties = findCollaborationProperties(collaborator);
collaborationProperties.setStarred(value); collaborationProperties.setStarred(value);
} }
@NotNull @NotNull
public CollaborationProperties getCollaborationProperties(@NotNull Collaborator collaborator) throws WiseMappingException { public CollaborationProperties findCollaborationProperties(@NotNull Collaborator collaborator) throws WiseMappingException {
if (collaborator == null) { if (collaborator == null) {
throw new IllegalStateException("Collaborator can not be null"); throw new IllegalStateException("Collaborator can not be null");
} }

View File

@ -54,7 +54,7 @@ public class MindmapController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/json", "application/xml", "text/html"}) @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/json", "application/xml", "text/html"})
@ResponseBody @ResponseBody
public ModelAndView retrieve(@PathVariable int id) throws IOException { public ModelAndView retrieve(@PathVariable int id) throws WiseMappingException {
final User user = Utils.getUser(); final User user = Utils.getUser();
final MindMap mindMap = mindmapService.findMindmapById(id); final MindMap mindMap = mindmapService.findMindmapById(id);
final RestMindmap map = new RestMindmap(mindMap, user); final RestMindmap map = new RestMindmap(mindMap, user);
@ -64,7 +64,7 @@ public class MindmapController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/wisemapping+xml"}, params = {"download=wxml"}) @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/wisemapping+xml"}, params = {"download=wxml"})
@ResponseBody @ResponseBody
public ModelAndView retrieveAsWise(@PathVariable int id) throws IOException { public ModelAndView retrieveAsWise(@PathVariable int id) throws WiseMappingException {
final MindMap mindMap = mindmapService.findMindmapById(id); final MindMap mindMap = mindmapService.findMindmapById(id);
final Map<String, Object> values = new HashMap<String, Object>(); final Map<String, Object> values = new HashMap<String, Object>();
@ -116,14 +116,14 @@ public class MindmapController extends BaseController {
@RequestMapping(value = "maps/{id}/history/{hid}", method = RequestMethod.POST) @RequestMapping(value = "maps/{id}/history/{hid}", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.NO_CONTENT) @ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateRevertMindmap(@PathVariable int id, @PathVariable int hid) throws IOException, WiseMappingException { public void updateRevertMindmap(@PathVariable int id, @PathVariable int hid) throws WiseMappingException {
final MindMap mindmap = mindmapService.findMindmapById(id); final MindMap mindmap = mindmapService.findMindmapById(id);
mindmapService.revertChange(mindmap, hid); mindmapService.revertChange(mindmap, hid);
} }
@RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/document", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"}) @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/document", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT) @ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateDocument(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException { public void updateDocument(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws WiseMappingException, IOException {
final MindMap mindmap = mindmapService.findMindmapById(id); final MindMap mindmap = mindmapService.findMindmapById(id);
final User user = Utils.getUser(); final User user = Utils.getUser();
@ -135,7 +135,7 @@ public class MindmapController extends BaseController {
} }
// Update collaboration properties ... // Update collaboration properties ...
final CollaborationProperties collaborationProperties = mindmap.getCollaborationProperties(user); final CollaborationProperties collaborationProperties = mindmap.findCollaborationProperties(user);
collaborationProperties.setMindmapProperties(properties); collaborationProperties.setMindmapProperties(properties);
// Validate content ... // Validate content ...
@ -187,7 +187,7 @@ public class MindmapController extends BaseController {
// Update document properties ... // Update document properties ...
final String properties = restMindmap.getProperties(); final String properties = restMindmap.getProperties();
if (properties != null) { if (properties != null) {
final CollaborationProperties collaborationProperties = mindmap.getCollaborationProperties(user); final CollaborationProperties collaborationProperties = mindmap.findCollaborationProperties(user);
collaborationProperties.setMindmapProperties(properties); collaborationProperties.setMindmapProperties(properties);
} }
@ -307,12 +307,17 @@ public class MindmapController extends BaseController {
@ResponseStatus(value = HttpStatus.NO_CONTENT) @ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateStarredState(@RequestBody String value, @PathVariable int id) throws WiseMappingException { public void updateStarredState(@RequestBody String value, @PathVariable int id) throws WiseMappingException {
final MindMap mindMap = mindmapService.findMindmapById(id); final MindMap mindmap = mindmapService.findMindmapById(id);
final User user = Utils.getUser(); final User user = Utils.getUser();
// Update map status ... // Update map status ...
mindMap.setStarred(user, Boolean.parseBoolean(value)); final boolean starred = Boolean.parseBoolean(value);
saveMindmap(true, mindMap, user); final Collaboration collaboration = mindmap.findCollaboration(user);
if (collaboration == null) {
throw new WiseMappingException("No enough permissions.");
}
collaboration.getCollaborationProperties().setStarred(starred);
mindmapService.updateCollaboration(user, collaboration);
} }
@RequestMapping(method = RequestMethod.DELETE, value = "/maps/{id}") @RequestMapping(method = RequestMethod.DELETE, value = "/maps/{id}")
@ -425,7 +430,7 @@ public class MindmapController extends BaseController {
mindmapService.updateMindmap(mindMap, !minor); mindmapService.updateMindmap(mindMap, !minor);
} }
private ValidationException buildValidationException(@NotNull String fieldName, @NotNull String message) throws ValidationException { private ValidationException buildValidationException(@NotNull String fieldName, @NotNull String message) throws WiseMappingException {
final BindingResult result = new BeanPropertyBindingResult(new RestMindmap(), ""); final BindingResult result = new BeanPropertyBindingResult(new RestMindmap(), "");
result.rejectValue(fieldName, "error.not-specified", null, message); result.rejectValue(fieldName, "error.not-specified", null, message);
return new ValidationException(result); return new ValidationException(result);

View File

@ -3,7 +3,6 @@ package com.wisemapping.rest.model;
import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.model.*; import com.wisemapping.model.*;
import com.wisemapping.security.Utils;
import org.codehaus.jackson.annotate.*; import org.codehaus.jackson.annotate.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -47,7 +46,7 @@ public class RestMindmap {
this.mindmap = mindmap; this.mindmap = mindmap;
this.collaborator = collaborator; this.collaborator = collaborator;
if (collaborator != null) { if (collaborator != null) {
final CollaborationProperties collaborationProperties = mindmap.getCollaborationProperties(collaborator); final CollaborationProperties collaborationProperties = mindmap.findCollaborationProperties(collaborator);
this.properties = collaborationProperties.getMindmapProperties(); this.properties = collaborationProperties.getMindmapProperties();
} }
} }

View File

@ -28,38 +28,40 @@ import java.io.IOException;
public interface MindmapService { public interface MindmapService {
public static final String TAG_SEPARATOR = " "; static final String TAG_SEPARATOR = " ";
public MindMap findMindmapById(int mindmapId); MindMap findMindmapById(int mindmapId);
public MindMap getMindmapByTitle(String title, User user); MindMap getMindmapByTitle(String title, User user);
public List<Collaboration> findCollaborations(@NotNull User user); List<Collaboration> findCollaborations(@NotNull User user);
public void updateMindmap(MindMap mindMap, boolean saveHistory) throws WiseMappingException; void updateMindmap(MindMap mindMap, boolean saveHistory) throws WiseMappingException;
public void addMindmap(MindMap map, User user) throws WiseMappingException; void addMindmap(MindMap map, User user) throws WiseMappingException;
public void addCollaboration(@NotNull MindMap mindmap, @NotNull String email, @NotNull CollaborationRole role, @Nullable String message) void addCollaboration(@NotNull MindMap mindmap, @NotNull String email, @NotNull CollaborationRole role, @Nullable String message)
throws CollaborationException; throws CollaborationException;
public void removeCollaboration(@NotNull MindMap mindmap, @NotNull Collaboration collaboration) throws CollaborationException; void removeCollaboration(@NotNull MindMap mindmap, @NotNull Collaboration collaboration) throws CollaborationException;
public void addTags(@NotNull MindMap mindmap, String tags); void addTags(@NotNull MindMap mindmap, String tags);
public void removeMindmap(@NotNull final MindMap mindmap, @NotNull final User user) throws WiseMappingException; void removeMindmap(@NotNull final MindMap mindmap, @NotNull final User user) throws WiseMappingException;
public List<MindMap> search(MindMapCriteria criteria); List<MindMap> search(MindMapCriteria criteria);
public List<MindMapHistory> findMindmapHistory(int mindmapId); List<MindMapHistory> findMindmapHistory(int mindmapId);
public boolean hasPermissions(@Nullable User user, MindMap map, CollaborationRole allowedRole); boolean hasPermissions(@Nullable User user, MindMap map, CollaborationRole allowedRole);
public boolean hasPermissions(@Nullable User user, int mapId, CollaborationRole allowedRole); boolean hasPermissions(@Nullable User user, int mapId, CollaborationRole allowedRole);
public void addWelcomeMindmap(User user) throws WiseMappingException; void addWelcomeMindmap(User user) throws WiseMappingException;
public void revertChange(@NotNull MindMap map, int historyId) throws WiseMappingException; void revertChange(@NotNull MindMap map, int historyId) throws WiseMappingException;
MindMapHistory findMindmapHistory(int id, int hid) throws WiseMappingException; MindMapHistory findMindmapHistory(int id, int hid) throws WiseMappingException;
void updateCollaboration(@NotNull Collaborator collaborator, @NotNull Collaboration collaboration) throws WiseMappingException;
} }

View File

@ -187,7 +187,7 @@ public class MindmapServiceImpl
private Collaborator addCollaborator(String email) { private Collaborator addCollaborator(String email) {
// Add a new collaborator ... // Add a new collaborator ...
Collaborator collaborator = mindmapManager.getCollaboratorBy(email); Collaborator collaborator = mindmapManager.findCollaborator(email);
if (collaborator == null) { if (collaborator == null) {
collaborator = new Collaborator(); collaborator = new Collaborator();
collaborator.setEmail(email); collaborator.setEmail(email);
@ -219,6 +219,7 @@ public class MindmapServiceImpl
} }
} }
@Override
public void addWelcomeMindmap(User user) throws WiseMappingException { public void addWelcomeMindmap(User user) throws WiseMappingException {
final MindMap savedWelcome = findMindmapById(Constants.WELCOME_MAP_ID); final MindMap savedWelcome = findMindmapById(Constants.WELCOME_MAP_ID);
@ -233,10 +234,12 @@ public class MindmapServiceImpl
} }
} }
@Override
public List<MindMapHistory> findMindmapHistory(int mindmapId) { public List<MindMapHistory> findMindmapHistory(int mindmapId) {
return mindmapManager.getHistoryFrom(mindmapId); return mindmapManager.getHistoryFrom(mindmapId);
} }
@Override
public void revertChange(@NotNull MindMap mindmap, int historyId) public void revertChange(@NotNull MindMap mindmap, int historyId)
throws WiseMappingException { throws WiseMappingException {
final MindMapHistory history = mindmapManager.getHistory(historyId); final MindMapHistory history = mindmapManager.getHistory(historyId);
@ -261,6 +264,14 @@ public class MindmapServiceImpl
return result; return result;
} }
@Override
public void updateCollaboration(@NotNull Collaborator collaborator, @NotNull Collaboration collaboration) throws WiseMappingException {
if (collaborator.equals(collaboration.getCollaborator())) {
throw new WiseMappingException("No enough permissions for this operation.");
}
mindmapManager.updateCollaboration(collaboration);
}
private Collaboration getCollaborationBy(String email, Set<Collaboration> collaborations) { private Collaboration getCollaborationBy(String email, Set<Collaboration> collaborations) {
Collaboration collaboration = null; Collaboration collaboration = null;

View File

@ -125,7 +125,7 @@ public class MindMapBean {
} }
public String getProperties() throws WiseMappingException { public String getProperties() throws WiseMappingException {
final CollaborationProperties collaboration = this.mindmap.getCollaborationProperties(collaborator); final CollaborationProperties collaboration = this.mindmap.findCollaborationProperties(collaborator);
return collaboration.getMindmapProperties(); return collaboration.getMindmapProperties();
} }

View File

@ -23,17 +23,19 @@
</table> </table>
</div> </div>
<div style="font-size: 13px; background-color: #FFF; padding: 10px 7px 7px 7px; min-height: 100px"> <div style="font-size: 13px; background-color: #FFF; padding: 10px 7px 7px 7px; min-height: 100px">
<p><strong>Message from ${senderMail}: </strong></p>
#if($message ) #if($message )
<pre style="font-family: Arial, sans-serif; color: #000; ">${message}</pre> <pre style="font-family: Arial, sans-serif; color: #000; ">${message}</pre>
#end #end
<p>Click to open: <a href="${mapEditUrl}">${mindmap.title}</a></p> <p>Click to open: <a href="${mapEditUrl}">${mindmap.title}</a></p>
<p style="color: #898989;">Do you have a WiseMapping account ?. Don't worry, you can create an account for <p style="color: #898989;">Do you have a WiseMapping account ?. Don't worry, you can create an account for
free. </p> free. </p>
</div> </div>
</div> </div>
<p style="font-size: 13px;font-family: Arial, sans-serif">Important: Do not reply this email. If <p style="font-size: 13px;font-family: Arial, sans-serif">Important: Do not reply this email. If
you need to contact mindmap sender, you can send an email clicking <a href="mailto:${senderMail}">here</a>. you need further help or have any concerns regarding your account, contact us to <a href="mailto:${supportEmail}">here</a>.
</p> </p>
</body> </body>
</html> </html>