/** * OpenKM, Open Document Management System (http://www.openkm.com) * Copyright (c) 2006-2011 Paco Avila & Josep Llort * * No bytes were intentionally harmed during the development of this application. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package com.openkm.servlet.frontend; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openkm.api.OKMDashboard; import com.openkm.bean.DashboardDocumentResult; import com.openkm.bean.DashboardFolderResult; import com.openkm.bean.DashboardMailResult; import com.openkm.core.DatabaseException; import com.openkm.core.ParseException; import com.openkm.core.PathNotFoundException; import com.openkm.core.RepositoryException; import com.openkm.dao.QueryParamsDAO; import com.openkm.dao.bean.QueryParams; import com.openkm.frontend.client.OKMException; import com.openkm.frontend.client.bean.GWTDashboardDocumentResult; import com.openkm.frontend.client.bean.GWTDashboardFolderResult; import com.openkm.frontend.client.bean.GWTDashboardMailResult; import com.openkm.frontend.client.bean.GWTQueryParams; import com.openkm.frontend.client.contants.service.ErrorCode; import com.openkm.frontend.client.service.OKMDashboardService; import com.openkm.util.GWTUtil; /** * Servlet Class * * @web.servlet name="DashboardServlet" * display-name="Directory tree service" * description="Directory tree service" * @web.servlet-mapping url-pattern="/DashboardServlet" * @web.servlet-init-param name="A parameter" * value="A value" */ public class DashboardServlet extends OKMRemoteServiceServlet implements OKMDashboardService { private static Logger log = LoggerFactory.getLogger(DashboardServlet.class); private static final long serialVersionUID = 1L; @Override public List<GWTDashboardDocumentResult> getUserLockedDocuments() throws OKMException { log.debug("getUserLockedDocuments()"); List<GWTDashboardDocumentResult> lockList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); System.out.println("welcom to locked documents"); try { Collection<DashboardDocumentResult> col = OKMDashboard.getInstance().getUserLockedDocuments(null); for (Iterator<DashboardDocumentResult> it = col.iterator(); it.hasNext();) { DashboardDocumentResult documentResult = it.next(); GWTDashboardDocumentResult documentResultClient = GWTUtil.copy(documentResult); lockList.add(documentResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLockedDocuments: {}", lockList); return lockList; } @Override public List<GWTDashboardDocumentResult> getUserCheckedOutDocuments() throws OKMException { log.debug("getUserCheckedOutDocuments()"); List<GWTDashboardDocumentResult> chekoutList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); System.out.println("welcom to checked documents"); try { Collection<DashboardDocumentResult> col = OKMDashboard.getInstance().getUserCheckedOutDocuments(null); for (Iterator<DashboardDocumentResult> it = col.iterator(); it.hasNext();) { DashboardDocumentResult documentResult = it.next(); GWTDashboardDocumentResult documentResultClient = GWTUtil.copy(documentResult); chekoutList.add(documentResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserCheckedOutDocuments: {}", chekoutList); return chekoutList; } @Override public List<GWTDashboardDocumentResult> getUserLastModifiedDocuments() throws OKMException { log.debug("getUserLastModifiedDocuments()"); List<GWTDashboardDocumentResult> lastModifiedList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { Collection<DashboardDocumentResult> col = OKMDashboard.getInstance().getUserLastModifiedDocuments(null); for (Iterator<DashboardDocumentResult> it = col.iterator(); it.hasNext();) { DashboardDocumentResult documentResult = it.next(); GWTDashboardDocumentResult documentResultClient = GWTUtil.copy(documentResult); lastModifiedList.add(documentResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLastModifiedDocuments: {}", lastModifiedList); return lastModifiedList; } @Override public List<GWTDashboardDocumentResult> getUserSubscribedDocuments() throws OKMException { log.debug("getUserSubscribedDocuments()"); List<GWTDashboardDocumentResult> subscribedList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { Collection<DashboardDocumentResult> col = OKMDashboard.getInstance().getUserSubscribedDocuments(null); for (Iterator<DashboardDocumentResult> it = col.iterator(); it.hasNext();) { DashboardDocumentResult documentResult = it.next(); GWTDashboardDocumentResult documentResultClient = GWTUtil.copy(documentResult); subscribedList.add(documentResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserSubscribedDocuments: {}", subscribedList); return subscribedList; } @Override public List<GWTDashboardDocumentResult> getUserLastUploadedDocuments() throws OKMException { log.debug("getUserLastUploadedDocuments()"); List<GWTDashboardDocumentResult> lastUploadedList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { Collection<DashboardDocumentResult> col = OKMDashboard.getInstance().getUserLastUploadedDocuments(null); for (Iterator<DashboardDocumentResult> it = col.iterator(); it.hasNext();) { DashboardDocumentResult documentResult = it.next(); GWTDashboardDocumentResult documentResultClient = GWTUtil.copy(documentResult); lastUploadedList.add(documentResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLastUploadedDocuments: {}", lastUploadedList); return lastUploadedList; } @Override public List<GWTDashboardFolderResult> getUserSubscribedFolders() throws OKMException { log.debug("getUserSubscribedFolders()"); List<GWTDashboardFolderResult> subscribedList = new ArrayList<GWTDashboardFolderResult>(); updateSessionManager(); try { Collection<DashboardFolderResult> col = OKMDashboard.getInstance().getUserSubscribedFolders(null); for (Iterator<DashboardFolderResult> it = col.iterator(); it.hasNext();) { DashboardFolderResult folderResult = it.next(); GWTDashboardFolderResult folderResultClient = GWTUtil.copy(folderResult); subscribedList.add(folderResultClient); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserSubscribedFolders: {}", subscribedList); return subscribedList; } @Override public List<GWTQueryParams> getUserSearchs() throws OKMException { log.debug("getUserSearchs()"); List<GWTQueryParams> searchList = new ArrayList<GWTQueryParams>(); updateSessionManager(); try { for (Iterator<QueryParams> it = OKMDashboard.getInstance().getUserSearchs(null).iterator(); it.hasNext(); ) { searchList.add(GWTUtil.copy(it.next())); } for (QueryParams params : QueryParamsDAO.findShared(getThreadLocalRequest().getRemoteUser())) { // Only dashboard queries if (params.isDashboard()) { GWTQueryParams gWTQueryParams = GWTUtil.copy(params); gWTQueryParams.setShared(true); searchList.add(gWTQueryParams); } } } catch (IOException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_IO), e.getMessage()); } catch (ParseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Parse), e.getMessage()); } catch (PathNotFoundException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_PathNotFound), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } log.debug("getUserSearchs: {}", searchList); return searchList; } @Override public List<GWTDashboardDocumentResult> find(int id) throws OKMException { log.debug("find({})", id); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().find(null, id).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (IOException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_IO), e.getMessage()); } catch (ParseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Parse), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } log.debug("find: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastWeekTopDownloadedDocuments() throws OKMException { log.debug("getLastWeekTopDownloadedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastWeekTopDownloadedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastWeekTopDownloadedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastMonthTopDownloadedDocuments() throws OKMException { log.debug("getLastMonthTopDownloadedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastMonthTopDownloadedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastMonthTopDownloadedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastWeekTopModifiedDocuments() throws OKMException { log.debug("getLastWeekTopModifiedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastWeekTopModifiedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastWeekTopModifiedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastMonthTopModifiedDocuments() throws OKMException { log.debug("getLastMonthTopModifiedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastMonthTopModifiedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastMonthTopModifiedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getUserLastDownloadedDocuments() throws OKMException { log.debug("getUserLastDownloadedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getUserLastDownloadedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLastDownloadedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastModifiedDocuments() throws OKMException { log.debug("getLastModifiedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastModifiedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastModifiedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getLastUploadedDocuments() throws OKMException { log.debug("getLastWeekTopUploadedDocuments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getLastUploadedDocuments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getLastWeekTopUploadedDocuments: {}", docList); return docList; } @Override public List<GWTDashboardDocumentResult> getUserLastImportedMailAttachments() throws OKMException { log.debug("getUserLastImportedMailAttachments()"); List<GWTDashboardDocumentResult> docList = new ArrayList<GWTDashboardDocumentResult>(); updateSessionManager(); try { for (Iterator<DashboardDocumentResult> it = OKMDashboard.getInstance().getUserLastImportedMailAttachments(null).iterator(); it.hasNext(); ) { docList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLastImportedMailAttachments: {}", docList); return docList; } @Override public List<GWTDashboardMailResult> getUserLastImportedMails() throws OKMException { log.debug("getUserLastImportedMails()"); List<GWTDashboardMailResult> mailList = new ArrayList<GWTDashboardMailResult>(); updateSessionManager(); try { for (Iterator<DashboardMailResult> it = OKMDashboard.getInstance().getUserLastImportedMails(null).iterator(); it.hasNext(); ) { mailList.add(GWTUtil.copy(it.next())); } } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("getUserLastImportedMails: {}", mailList); return mailList; } @Override public void visiteNode(String source, String node, Date date) throws OKMException { log.debug("visiteNode({}, {}, {})", new Object[] { source, node, date }); updateSessionManager(); try { Calendar cal = Calendar.getInstance(); cal.setTime(date); OKMDashboard.getInstance().visiteNode(null, source, node, cal); } catch (RepositoryException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Repository), e.getMessage()); } catch (DatabaseException e) { log.error(e.getMessage(), e); throw new OKMException(ErrorCode.get(ErrorCode.ORIGIN_OKMDashboardService, ErrorCode.CAUSE_Database), e.getMessage()); } log.debug("visiteNode: void"); } }