Created
January 9, 2017 16:22
-
-
Save raprasad/e714c99ec1731d41442cffd27e875397 to your computer and use it in GitHub Desktop.
hacked, non-compiling file to use as starting point months from now
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * 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. | |
| */ | |
| package edu.harvard.iq.dataverse.datasetutility; | |
| import edu.harvard.iq.dataverse.DataFile; | |
| import edu.harvard.iq.dataverse.DataFileServiceBean; | |
| import edu.harvard.iq.dataverse.Dataset; | |
| import edu.harvard.iq.dataverse.DatasetServiceBean; | |
| import edu.harvard.iq.dataverse.EjbDataverseEngine; | |
| import edu.harvard.iq.dataverse.PermissionServiceBean; | |
| import edu.harvard.iq.dataverse.authorization.users.User; | |
| import edu.harvard.iq.dataverse.engine.command.DataverseRequest; | |
| import edu.harvard.iq.dataverse.engine.command.exception.CommandException; | |
| import edu.harvard.iq.dataverse.engine.command.impl.CreateDatasetCommand; | |
| import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetCommand; | |
| import edu.harvard.iq.dataverse.ingest.IngestServiceBean; | |
| import edu.harvard.iq.dataverse.util.SystemConfig; | |
| import java.io.InputStream; | |
| import java.util.ArrayList; | |
| import java.util.List; | |
| import java.util.logging.Level; | |
| import java.util.logging.Logger; | |
| import javax.ejb.EJBException; | |
| import javax.ws.rs.core.Response; | |
| /** | |
| * | |
| * @author rmp553 | |
| */ | |
| public class UpdateFileMetadataHelper { | |
| private static final Logger logger = Logger.getLogger(UpdateFileMetadataHelper.class.getCanonicalName()); | |
| // ----------------------------------- | |
| // For error handling | |
| // ----------------------------------- | |
| private boolean errorFound; | |
| private List<String> errorMessages; | |
| private Response.Status httpErrorCode; // optional | |
| // ----------------------------------- | |
| // All the needed EJBs, passed to the constructor | |
| // ----------------------------------- | |
| private IngestServiceBean ingestService; | |
| private DatasetServiceBean datasetService; | |
| private DataFileServiceBean fileService; | |
| private PermissionServiceBean permissionService; | |
| private EjbDataverseEngine commandEngine; | |
| private SystemConfig systemConfig; | |
| // ----------------------------------- | |
| // Instance variables directly added | |
| // ----------------------------------- | |
| private Dataset dataset; // constructor (for add, not replace) | |
| private DataverseRequest dvRequest; // constructor | |
| private InputStream newFileInputStream; // step 20 | |
| private String newFileName; // step 20 | |
| private String newFileContentType; // step 20 | |
| // -- Optional | |
| private DataFile fileToReplace; // step 25 | |
| private User user; | |
| /** | |
| * MAIN CONSTRUCTOR -- minimal requirements | |
| * | |
| * @param dataset | |
| * @param ingestService | |
| * @param datasetService | |
| * @param dvRequest | |
| */ | |
| public UpdateFileMetadataHelper(DataverseRequest dvRequest, | |
| DatasetServiceBean datasetService, | |
| DataFileServiceBean fileService, | |
| PermissionServiceBean permissionService, | |
| EjbDataverseEngine commandEngine, | |
| SystemConfig systemConfig) { | |
| // --------------------------------- | |
| // make sure DataverseRequest isn't null and has a user | |
| // --------------------------------- | |
| if (dvRequest == null) { | |
| throw new NullPointerException("dvRequest cannot be null"); | |
| } | |
| if (dvRequest.getUser() == null) { | |
| throw new NullPointerException("dvRequest cannot have a null user"); | |
| } | |
| // --------------------------------- | |
| // make sure services aren't null | |
| // --------------------------------- | |
| if (datasetService == null) { | |
| throw new NullPointerException("datasetService cannot be null"); | |
| } | |
| if (fileService == null) { | |
| throw new NullPointerException("fileService cannot be null"); | |
| } | |
| if (permissionService == null) { | |
| throw new NullPointerException("ingestService cannot be null"); | |
| } | |
| if (commandEngine == null) { | |
| throw new NullPointerException("commandEngine cannot be null"); | |
| } | |
| if (systemConfig == null) { | |
| throw new NullPointerException("systemConfig cannot be null"); | |
| } | |
| // --------------------------------- | |
| this.datasetService = datasetService; | |
| this.fileService = fileService; | |
| this.permissionService = permissionService; | |
| this.commandEngine = commandEngine; | |
| this.systemConfig = systemConfig; | |
| initErrorHandling(); | |
| // Initiate instance vars | |
| this.dataset = null; | |
| this.dvRequest = dvRequest; | |
| this.user = dvRequest.getUser(); | |
| } | |
| public boolean updateFileMetadata(Long dataFileId, OptionalFileParams optionalFileParams) { | |
| // Check for Null | |
| // | |
| if (dataFileId == null) { | |
| this.addError("The dataFileId is null"); | |
| return false; | |
| } | |
| if (optionalFileParams == null) { | |
| this.addError("optionalFileParams is null"); | |
| return false; | |
| } | |
| // Does the file exist? | |
| // | |
| DataFile existingFile = fileService.find(dataFileId); | |
| if (existingFile == null) { | |
| this.addError("File not found by id: " + dataFileId); | |
| return false; | |
| } | |
| // Do we have permission to update this file | |
| // | |
| // NEED TO ADD THIS SO WORKING WITH DRAFT | |
| //workingVersion = dataset.getEditVersion(); | |
| Dataset workingDataset = existingFile.getOwner().getEditVersion(); | |
| UpdateDatasetCommand updateDatasetCommand = new UpdateDatasetCommand(workingDataset, dvRequest); | |
| if (!permissionService.isUserAllowedOn(user, updateDatasetCommand, workingDataset)) { | |
| this.addError("You do not have permissin to edit this file"); | |
| return false; | |
| } | |
| // REDO THIS TO UPDATE THE FILE IN THE workingDataset | |
| // Update description, categories, tags, etc | |
| // | |
| try { | |
| optionalFileParams.addOptionalParams(existingFile); | |
| } catch (DataFileTagException ex) { | |
| Logger.getLogger(UpdateFileMetadataHelper.class.getName()).log(Level.SEVERE, null, ex); | |
| addError(ex.getMessage()); | |
| return false; | |
| } | |
| try { | |
| // Submit the update dataset command | |
| // and update the local dataset object | |
| // | |
| dataset = commandEngine.submit(update_cmd); | |
| } catch (CommandException ex) { | |
| this.addErrorSevere(getBundleErr("add.command_engine_error")); | |
| logger.severe(ex.getMessage()); | |
| return false; | |
| }catch (EJBException ex) { | |
| this.addErrorSevere("add.ejb_exception (see logs)"); | |
| logger.severe(ex.getMessage()); | |
| return false; | |
| } | |
| } // end: updateFileMetadata | |
| /* | |
| * Initialize error handling vars | |
| */ | |
| private void initErrorHandling() { | |
| this.errorFound = false; | |
| this.errorMessages = new ArrayList<>(); | |
| this.httpErrorCode = null; | |
| } | |
| /** | |
| * Was an error found? | |
| * | |
| * @return | |
| */ | |
| public boolean hasError() { | |
| return this.errorFound; | |
| } | |
| /** | |
| * Add error message | |
| * | |
| * @param errMsg | |
| */ | |
| private void addError(String errMsg) { | |
| if (errMsg == null) { | |
| throw new NullPointerException("errMsg cannot be null"); | |
| } | |
| this.errorFound = true; | |
| logger.fine(errMsg); | |
| this.errorMessages.add(errMsg); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment