/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2005 Akaza Research
*/
package org.akaza.openclinica.control.extract;
import org.akaza.openclinica.bean.core.Role;
import org.akaza.openclinica.control.core.SecureController;
import org.akaza.openclinica.control.form.FormProcessor;
import org.akaza.openclinica.dao.extract.DatasetDAO;
import org.akaza.openclinica.view.Page;
import org.akaza.openclinica.web.InsufficientPermissionException;
import org.akaza.openclinica.web.bean.DatasetRow;
import org.akaza.openclinica.web.bean.EntityBeanTable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
/**
* <P>
* The main page for the extract datasets use case. Show five last datasets and
* offers links for viewing all and viewing users' datasets, together with a
* link for extracting datasets.
* </P>
*
* @author thickerson
*
*/
public class ExtractDatasetsMainServlet extends SecureController {
public static final String PATH = "ExtractDatasetsMain";
public static final String ARG_USER_ID = "userId";
public static String getLink(int userId) {
return PATH + '?' + ARG_USER_ID + '=' + userId;
}
@Override
public void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
DatasetDAO dsdao = new DatasetDAO(sm.getDataSource());
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList datasets = (ArrayList) dsdao.findTopFive(currentStudy);
ArrayList datasetRows = DatasetRow.generateRowsFromBeans(datasets);
String[] columns =
{ resword.getString("dataset_name"), resword.getString("description"), resword.getString("created_by"), resword.getString("created_date"),
resword.getString("status"), resword.getString("actions") };
table.setColumns(new ArrayList(Arrays.asList(columns)));
table.hideColumnLink(5);
table.addLink(resword.getString("view_all"), "ViewDatasets");
table.addLink(resword.getString("view_my_datasets"), "ViewDatasets?action=owner&ownerId=" + ub.getId());
table.addLink(resword.getString("create_dataset"), "CreateDataset");
table.setQuery("ExtractDatasetsMain", new HashMap());
table.setRows(datasetRows);
table.computeDisplay();
request.setAttribute("table", table);
// the code above replaces the following lines:
// DatasetDAO dsdao = new DatasetDAO(sm.getDataSource());
// ArrayList datasets = (ArrayList)dsdao.findTopFive();
// request.setAttribute("datasets", datasets);
resetPanel();
request.setAttribute(STUDY_INFO_PANEL, panel);
forwardPage(Page.EXTRACT_DATASETS_MAIN);
}
@Override
public void mayProceed() throws InsufficientPermissionException {
if (ub.isSysAdmin()) {
return;
}
if (currentRole.getRole().equals(Role.STUDYDIRECTOR) || currentRole.getRole().equals(Role.COORDINATOR)
|| currentRole.getRole().equals(Role.INVESTIGATOR)
|| currentRole.getRole().equals(Role.MONITOR)) {
return;
}
addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin"));
throw new InsufficientPermissionException(Page.MENU, resexception.getString("not_allowed_access_extract_data_servlet"), "1");
}
}