Package org.dspace.app.webui.cris.controller

Source Code of org.dspace.app.webui.cris.controller.ExportFormController

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.webui.cris.controller;

import it.cilea.osd.jdyna.model.IContainable;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.dspace.app.cris.discovery.CrisSearchService;
import org.dspace.app.cris.model.ResearcherPage;
import org.dspace.app.cris.model.jdyna.BoxResearcherPage;
import org.dspace.app.cris.model.jdyna.RPPropertiesDefinition;
import org.dspace.app.cris.model.jdyna.TabResearcherPage;
import org.dspace.app.cris.util.ImportExportUtils;
import org.dspace.app.webui.cris.dto.ExportParametersDTO;
import org.dspace.app.webui.util.UIUtil;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.AuthorizeManager;
import org.dspace.core.Context;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;

/**
* This SpringMVC controller is responsible to handle request of export
*
* @author cilea
*
*/
public class ExportFormController extends BaseFormController {

  private static final DateFormat dateFormat = new SimpleDateFormat(
      "dd-MM-yyyy HH:mm");

  private CrisSearchService searchService;
 
  @Override
  protected Map referenceData(HttpServletRequest request) throws Exception {
   
    Map<String, Object> map =  new HashMap<String, Object>();
    map.put("tabs", applicationService.getList(TabResearcherPage.class));
    return map;
  }
 
  @Override
  protected Object formBackingObject(HttpServletRequest request)
      throws Exception {
    Context context = UIUtil.obtainContext(request);
    if (!AuthorizeManager.isAdmin(context)) {
      throw new AuthorizeException(
          "Only system administrator can access to the export functionality");
    }
    return super.formBackingObject(request);
  }

  @Override
  protected ModelAndView onSubmit(HttpServletRequest request,
      HttpServletResponse response, Object command, BindException errors)
      throws Exception {
    ExportParametersDTO exportParameters = (ExportParametersDTO) command;

    List<String> f = new LinkedList<String>();
    List<String> q = new LinkedList<String>();
    addToTempQuery("names", exportParameters.getNames(), f, q,
        !exportParameters.getAdvancedSyntax());

    addToTempQuery("dept", exportParameters.getDept(), f, q,
        !exportParameters.getAdvancedSyntax());

    addToTempQuery("interests", exportParameters.getInterests(), f, q,
        !exportParameters.getAdvancedSyntax());

    addToTempQuery("media", exportParameters.getMedia(), f, q,
        !exportParameters.getAdvancedSyntax());

    String[] temp_query = new String[] {};
    temp_query = q.toArray(temp_query);
    String[] temp_fields = new String[] {};
    temp_fields = f.toArray(temp_fields);
    List<ResearcherPage> list = null;
    try {
      //TODO
//      list = searchService.search(temp_fields, temp_query,
//          exportParameters.getStatus(),
//          exportParameters.getCreationStart(),
//          exportParameters.getCreationEnd(),
//          exportParameters.getStaffNoStart(),
//          exportParameters.getStaffNoEnd(),
//          exportParameters.getRpIdStart(),
//          exportParameters.getRpIdEnd(),
//          exportParameters.getDefaultOperator(), ResearcherPage.class);
    } catch (Exception e) {
      errors.reject("jsp.layout.hku.export.validation.notvalid.query");
      return showForm(request, errors, getFormView());

    }

    // export all tab
    List<IContainable> containables = new LinkedList<IContainable>();
    if (exportParameters.getTabToExport() == null || exportParameters.getTabToExport().isEmpty()) {
      containables = applicationService
      .findAllContainables(RPPropertiesDefinition.class);
    } else {
      for(Integer tab : exportParameters.getTabToExport()) {
        for(BoxResearcherPage box : applicationService.<BoxResearcherPage, TabResearcherPage>findPropertyHolderInTab(TabResearcherPage.class, tab)) {
          containables.addAll(box.getMask());
          applicationService.findOtherContainablesInBoxByConfiguration(box.getShortName(), containables);
        }
      }
    }

    if (exportParameters.getMainMode() == null) {
      response.setContentType("application/excel");
      response.addHeader("Content-Disposition",
          "attachment; filename=rpdata.xls");
      ImportExportUtils.exportData(list, applicationService,
          response.getOutputStream(), containables);
      response.getOutputStream().flush();
      response.getOutputStream().close();
    } else {
      response.setContentType("application/xml;charset=UTF-8");
      response.addHeader("Content-Disposition",
          "attachment; filename=rpdata.xml");
          ImportExportUtils.exportXML(response.getWriter(),
                      applicationService, containables,
                      list);
      response.getWriter().flush();
      response.getWriter().close();
    }

    return null;
  }

  private void addToTempQuery(String fieldName, String value, List<String> f,
      List<String> q, boolean escape) {
    if (StringUtils.isNotBlank(value)) {
      q.add(escape ? ClientUtils.escapeQueryChars(value) : value);
      f.add(fieldName);
    }
  }

  public CrisSearchService getSearchService() {
    return searchService;
  }

  public void setSearchService(CrisSearchService searchService) {
    this.searchService = searchService;
  }
}
TOP

Related Classes of org.dspace.app.webui.cris.controller.ExportFormController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.