package edu.harvard.iq.dataverse.mydata; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import edu.harvard.iq.dataverse.DatasetPage; import edu.harvard.iq.dataverse.DataverseRoleServiceBean; import edu.harvard.iq.dataverse.DataverseSession; import edu.harvard.iq.dataverse.DvObject; import static edu.harvard.iq.dataverse.DvObject.DATAFILE_DTYPE_STRING; import static edu.harvard.iq.dataverse.DvObject.DATASET_DTYPE_STRING; import static edu.harvard.iq.dataverse.DvObject.DATAVERSE_DTYPE_STRING; import edu.harvard.iq.dataverse.DvObjectServiceBean; import edu.harvard.iq.dataverse.PermissionsWrapper; import edu.harvard.iq.dataverse.RoleAssigneeServiceBean; import edu.harvard.iq.dataverse.search.SearchServiceBean; import edu.harvard.iq.dataverse.search.SolrQueryResponse; import edu.harvard.iq.dataverse.authorization.DataverseRole; import edu.harvard.iq.dataverse.authorization.DataverseRolePermissionHelper; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.ejb.EJB; import javax.faces.context.FacesContext; import javax.faces.view.ViewScoped; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.http.HttpServletRequest; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author rmp553 */ @ViewScoped @Named("MyDataPage") public class MyDataPage implements java.io.Serializable { private static final Logger logger = Logger.getLogger(DatasetPage.class.getCanonicalName()); @Inject DataverseSession session; @EJB DataverseRoleServiceBean dataverseRoleService; @EJB RoleAssigneeServiceBean roleAssigneeService; @EJB DvObjectServiceBean dvObjectServiceBean; @EJB SearchServiceBean searchService; // @EJB // MyDataQueryHelperServiceBean myDataQueryHelperServiceBean; @Inject PermissionsWrapper permissionsWrapper; private DataverseRolePermissionHelper rolePermissionHelper;// = new DataverseRolePermissionHelper(); private MyDataFilterParams filterParams; private AuthenticatedUser authUser = null; private Boolean isSuperuserLoggedIn = null; private long totalUserFileCount = (long) 0; private long totalUserDataverseCount = (long) 0; private long totalUserDatasetCount = (long) 0; private void msg(String s){ System.out.println(s); } private void msgt(String s){ msg("-------------------------------"); msg(s); msg("-------------------------------"); } public void setTotalUserDatasetCount(long cnt){ this.totalUserDatasetCount = cnt; } public void setTotalUserDataverseCount(long cnt){ this.totalUserDataverseCount = cnt; } public void setTotalUserFileCount(long cnt){ this.totalUserFileCount = cnt; } public long getTotalUserDatasetCount(){ return this.totalUserDatasetCount; } public long getTotalUserDataverseCount(){ return this.totalUserDataverseCount; } public long getTotalUserFileCount(){ return this.totalUserFileCount; } public boolean hasFilterParams(){ if (this.filterParams == null){ return false; } return true; } public List<String[]> getRoleInfoForCheckboxes(){ if (this.rolePermissionHelper == null){ init(); } List<String[]> retVal = this.rolePermissionHelper.getRoleInfoForCheckboxes(); if (retVal != null){ return retVal; } else { return new ArrayList(); } } public String getRetrieveDataFullAPIPath(){ return DataRetrieverAPI.retrieveDataFullAPIPath; } public boolean isSuperuser(){ if (this.isSuperuserLoggedIn == null){ this.setIsSuperUserLoggedIn(); } return this.isSuperuserLoggedIn; } private void setIsSuperUserLoggedIn(){ // Is this an authenticated user? // if ((session.getUser() == null)||(!session.getUser().isAuthenticated())){ this.isSuperuserLoggedIn = false; return; } // Is this a user? // authUser = (AuthenticatedUser)session.getUser(); if (authUser==null){ this.isSuperuserLoggedIn = false; return; } // Is this a superuser? // this.isSuperuserLoggedIn = authUser.isSuperuser(); } public String init() { //msgt("_YE_OLDE_QUERY_COUNTER_"); // for debug purposes //msgt("----------- init() -------------"); if ((session.getUser() != null) && (session.getUser().isAuthenticated())) { authUser = (AuthenticatedUser) session.getUser(); } else { return permissionsWrapper.notAuthorized(); // redirect to login OR give some type ‘you must be logged in message' } // Initialize a filterParams object to buid the Publication Status checkboxes // HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); DataverseRequest dataverseRequest = new DataverseRequest(authUser, httpServletRequest); this.filterParams = new MyDataFilterParams(dataverseRequest, MyDataFilterParams.defaultDvObjectTypes, null, null, null); // Temp DataverseRolePermissionHelper -- not in its normal role but for creating initial checkboxes // rolePermissionHelper = new DataverseRolePermissionHelper(getRolesUsedToCreateCheckboxes(dataverseRequest)); //this.setUserCountTotals(authUser, rolePermissionHelper); return null; } public String getAuthUserIdentifier(){ if (this.authUser==null){ return null; } return MyDataUtil.formatUserIdentifierForMyDataForm(this.authUser.getIdentifier()); } private List<DataverseRole> getRolesUsedToCreateCheckboxes(DataverseRequest dataverseRequest){ if (dataverseRequest==null){ throw new NullPointerException("dataverseRequest cannot be null"); } // Initialize the role checboxes // List<DataverseRole> roleList = new ArrayList(); // (1) For a superuser, show all the roles--in case they want to // see another user's "My Data" if (authUser.isSuperuser()){ roleList = dataverseRoleService.findAll(); }else{ // (2) For a regular users roleList = roleAssigneeService.getAssigneeDataverseRoleFor(dataverseRequest); // If there are no assigned roles, show them all? // This may not make sense if (roleList.isEmpty()) { roleList = dataverseRoleService.findAll(); } } return roleList; } public DataverseRolePermissionHelper getRolePermissionHelper(){ return this.rolePermissionHelper; } public List<String[]> getPublishedStatesForMyDataPage(){ return MyDataFilterParams.getPublishedStatesForMyDataPage(); } }