mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-26 07:44:56 +01:00
Add purge action.
This commit is contained in:
parent
f136240591
commit
811cc8a668
@ -20,18 +20,29 @@ package com.wisemapping.rest;
|
|||||||
|
|
||||||
import com.wisemapping.exceptions.WiseMappingException;
|
import com.wisemapping.exceptions.WiseMappingException;
|
||||||
import com.wisemapping.model.AuthenticationType;
|
import com.wisemapping.model.AuthenticationType;
|
||||||
|
import com.wisemapping.model.Collaboration;
|
||||||
|
import com.wisemapping.model.Mindmap;
|
||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
|
import com.wisemapping.rest.model.RestMindmapList;
|
||||||
import com.wisemapping.rest.model.RestUser;
|
import com.wisemapping.rest.model.RestUser;
|
||||||
|
import com.wisemapping.service.MindmapService;
|
||||||
import com.wisemapping.service.UserService;
|
import com.wisemapping.service.UserService;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
import sun.util.resources.CalendarData_th;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class AdminController extends BaseController {
|
public class AdminController extends BaseController {
|
||||||
@ -39,6 +50,11 @@ public class AdminController extends BaseController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
|
@Qualifier("mindmapService")
|
||||||
|
@Autowired
|
||||||
|
private MindmapService mindmapService;
|
||||||
|
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
|
@RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ModelAndView getUserById(@PathVariable long id) throws IOException {
|
public ModelAndView getUserById(@PathVariable long id) throws IOException {
|
||||||
@ -105,7 +121,7 @@ public class AdminController extends BaseController {
|
|||||||
userService.changePassword(user);
|
userService.changePassword(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.DELETE, value = "admin/users/{id}",consumes = {"text/plain"})
|
@RequestMapping(method = RequestMethod.DELETE, value = "admin/users/{id}", consumes = {"text/plain"})
|
||||||
@ResponseStatus(value = HttpStatus.NO_CONTENT)
|
@ResponseStatus(value = HttpStatus.NO_CONTENT)
|
||||||
public void getUserByEmail(@PathVariable long id) throws WiseMappingException {
|
public void getUserByEmail(@PathVariable long id) throws WiseMappingException {
|
||||||
final User user = userService.getUserBy(id);
|
final User user = userService.getUserBy(id);
|
||||||
@ -115,4 +131,54 @@ public class AdminController extends BaseController {
|
|||||||
userService.deleteUser(user);
|
userService.deleteUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.GET, value = "admin/db/purge", consumes = {"text/plain"})
|
||||||
|
@ResponseStatus(value = HttpStatus.NO_CONTENT)
|
||||||
|
public void purgeDB(@RequestParam(required = true) int max) throws UnsupportedEncodingException, WiseMappingException {
|
||||||
|
|
||||||
|
for (int i = 0; i < max; i++) {
|
||||||
|
User user;
|
||||||
|
try {
|
||||||
|
user = userService.getUserBy(i);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// User does not exit's continue ...
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not process admin accounts ...
|
||||||
|
if (user.getEmail().contains("wisemapping")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterate over the list of maps ...
|
||||||
|
final List<Collaboration> collaborations = mindmapService.findCollaborations(user);
|
||||||
|
for (Collaboration collaboration : collaborations) {
|
||||||
|
final Mindmap mindmap = collaboration.getMindMap();
|
||||||
|
if (MindmapFilter.MY_MAPS.accept(mindmap, user)) {
|
||||||
|
|
||||||
|
final Calendar yearAgo = Calendar.getInstance();
|
||||||
|
yearAgo.add(Calendar.MONTH, -18);
|
||||||
|
// The use has only two maps... When they have been modified ..
|
||||||
|
if (mindmap.getLastModificationTime().before(yearAgo) && !mindmap.isPublic()) {
|
||||||
|
if (isWelcomeMap(mindmap) || isSimpleMap(mindmap)) {
|
||||||
|
mindmapService.removeMindmap(mindmap, user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isWelcomeMap(@NotNull Mindmap mindmap) throws UnsupportedEncodingException {
|
||||||
|
// Is welcome map ?
|
||||||
|
final String xmlStr = mindmap.getXmlStr();
|
||||||
|
return xmlStr.contains("Welcome To") && xmlStr.contains("My Wisemaps");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSimpleMap(@NotNull Mindmap mindmap) throws UnsupportedEncodingException {
|
||||||
|
String xmlStr = mindmap.getXmlStr();
|
||||||
|
String[] topics = xmlStr.split(Pattern.quote("<topic"));
|
||||||
|
return topics.length <= 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user