3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.remote
.controller
;
12 import java
.io
.IOException
;
15 import java
.util
.UUID
;
17 import javax
.servlet
.http
.HttpServletRequest
;
18 import javax
.servlet
.http
.HttpServletResponse
;
20 import org
.apache
.log4j
.Logger
;
21 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
22 import org
.springframework
.stereotype
.Controller
;
23 import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
24 import org
.springframework
.web
.bind
.annotation
.RequestMethod
;
25 import org
.springframework
.web
.bind
.annotation
.RequestParam
;
26 import org
.springframework
.web
.servlet
.ModelAndView
;
28 import eu
.etaxonomy
.cdm
.api
.service
.search
.ICdmMassIndexer
;
29 import eu
.etaxonomy
.cdm
.common
.monitor
.RestServiceProgressMonitor
;
30 import eu
.etaxonomy
.cdm
.database
.DataSourceInfo
;
31 import eu
.etaxonomy
.cdm
.database
.DataSourceReloader
;
32 import eu
.etaxonomy
.cdm
.remote
.controller
.util
.ProgressMonitorUtil
;
33 import eu
.etaxonomy
.cdm
.remote
.json
.JsonpRedirect
;
36 @RequestMapping(value
= {"/manage"})
37 public class ManagementController
39 public static final Logger logger
= Logger
.getLogger(ManagementController
.class);
42 private DataSourceReloader datasoucrceLoader
;
45 public ICdmMassIndexer indexer
;
48 public ProgressMonitorController progressMonitorController
;
51 * There should only be one processes operating on the lucene index
52 * therefore the according progress monitor uuid is stored in
55 private static UUID indexMonitorUuid
= null;
58 private static final int DEFAULT_PAGE_SIZE
= 25;
61 * return page not found http error (404) for unknown or incorrect UUIDs
63 * @see org.springframework.web.servlet.mvc.AbstractController#handleRequestInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
65 //@RequestMapping(value = { "/manager/datasources/list" }, method = RequestMethod.GET)
66 protected ModelAndView
doList(HttpServletRequest request
, HttpServletResponse respone
) throws Exception
{
68 ModelAndView mv
= new ModelAndView();
69 Map
<String
, DataSourceInfo
> dataSourceInfos
= datasoucrceLoader
.test();
70 mv
.addObject(dataSourceInfos
);
75 //@RequestMapping(value = { "/manager/datasources/reload" }, method = RequestMethod.GET)
76 public ModelAndView
doReload(HttpServletRequest request
, HttpServletResponse respone
) throws Exception
{
78 ModelAndView mv
= new ModelAndView();
79 Map
<String
, DataSourceInfo
> dataSourceInfos
= datasoucrceLoader
.reload();
80 mv
.addObject(dataSourceInfos
);
87 * Reindex all cdm entities listed in {@link ICdmMassIndexer#indexedClasses()}.
88 * Re-indexing will not purge the index.
89 * @param frontendBaseUrl if the CDM server is running behind a reverse proxy you need
90 * to supply the base URL of web service front-end which is
91 * provided by the proxy server.
97 @RequestMapping(value
= { "reindex" }, method
= RequestMethod
.GET
)
98 public ModelAndView
doReindex(
99 @RequestParam(value
= "frontendBaseUrl", required
= false) String frontendBaseUrl
,
100 HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
103 String processLabel
= "Re-indexing";
104 ProgressMonitorUtil progressUtil
= new ProgressMonitorUtil(progressMonitorController
);
106 if(!progressMonitorController
.isMonitorRunning(indexMonitorUuid
)) {
107 indexMonitorUuid
= progressUtil
.registerNewMonitor();
108 Thread subThread
= new Thread(){
110 indexer
.reindex(progressMonitorController
.getMonitor(indexMonitorUuid
));
115 // send redirect "see other"
116 return progressUtil
.respondWithMonitor(frontendBaseUrl
, request
, response
, processLabel
, indexMonitorUuid
);
120 * This will wipe out the index.
127 @RequestMapping(value
= { "purge" }, method
= RequestMethod
.GET
)
128 public ModelAndView
doPurge(
129 @RequestParam(value
= "frontendBaseUrl", required
= false) String frontendBaseUrl
,
130 HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
133 String processLabel
= "Purging";
135 ProgressMonitorUtil progressUtil
= new ProgressMonitorUtil(progressMonitorController
);
137 if(!progressMonitorController
.isMonitorRunning(indexMonitorUuid
)) {
138 indexMonitorUuid
= progressUtil
.registerNewMonitor();
139 Thread subThread
= new Thread(){
141 indexer
.purge(progressMonitorController
.getMonitor(indexMonitorUuid
));
147 // send redirect "see other"
148 return progressUtil
.respondWithMonitor(frontendBaseUrl
, request
, response
, processLabel
, indexMonitorUuid
);