diff src/main/java/edu/harvard/iq/dataverse/ManageGuestbooksPage.java @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/edu/harvard/iq/dataverse/ManageGuestbooksPage.java	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,210 @@
+/*
+ * 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;
+
+import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
+import edu.harvard.iq.dataverse.engine.command.impl.CreateGuestbookCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.DeleteGuestbookCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseGuestbookCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseGuestbookRootCommand;
+import edu.harvard.iq.dataverse.util.JsfHelper;
+import static edu.harvard.iq.dataverse.util.JsfHelper.JH;
+import java.sql.Timestamp;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.ejb.EJB;
+import javax.faces.application.FacesMessage;
+import javax.faces.event.ActionEvent;
+import javax.faces.view.ViewScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author skraffmiller
+ */
+@ViewScoped
+@Named
+public class ManageGuestbooksPage implements java.io.Serializable {
+
+    @EJB
+    DataverseServiceBean dvService;
+
+    @EJB
+    GuestbookResponseServiceBean guestbookResponseService;
+    
+    @EJB
+    GuestbookServiceBean guestbookService;
+    
+    @EJB
+    EjbDataverseEngine engineService;
+
+    @PersistenceContext(unitName = "VDCNet-ejbPU")
+    EntityManager em;
+
+    @Inject
+    DataversePage dvpage;
+
+    @Inject
+    GuestbookPage guestbookPage;
+
+    @Inject
+    DataverseSession session;
+
+    private List<Guestbook> guestbooks;
+    private List<GuestbookResponse> responses;
+    private Dataverse dataverse;
+    private Long dataverseId;
+    private boolean inheritGuestbooksValue;
+
+    private Guestbook selectedGuestbook = null;
+
+    public void init() {
+        dataverse = dvService.find(dataverseId);
+        dvpage.setDataverse(dataverse);
+
+        guestbooks = new LinkedList<>();
+        setInheritGuestbooksValue(!dataverse.isGuestbookRoot());
+        if (inheritGuestbooksValue && dataverse.getOwner() != null) {
+            for (Guestbook pg : dataverse.getParentGuestbooks()) {
+                pg.setUsageCount(guestbookService.findCountUsages(pg.getId()));
+                pg.setResponseCount(guestbookResponseService.findCountByGuestbookId(pg.getId()));
+                guestbooks.add(pg);
+            }
+        }
+        for (Guestbook cg : dataverse.getGuestbooks()) {
+            cg.setDeletable(true);
+            cg.setUsageCount(guestbookService.findCountUsages(cg.getId()));
+            if (!(cg.getUsageCount().intValue() == 0)) {
+                cg.setDeletable(false);
+            }
+            cg.setResponseCount(guestbookResponseService.findCountByGuestbookId(cg.getId()));
+            if (!(cg.getResponseCount().intValue() == 0)) {
+                cg.setDeletable(false);
+            }
+            cg.setDataverse(dataverse);
+            guestbooks.add(cg);
+        }
+    }
+
+
+
+
+    public void deleteGuestbook() {
+        if (selectedGuestbook != null) {
+            guestbooks.remove(selectedGuestbook);
+            dataverse.getGuestbooks().remove(selectedGuestbook);
+            try {
+                engineService.submit(new DeleteGuestbookCommand(session.getUser(), getDataverse(), selectedGuestbook));
+                JsfHelper.addFlashMessage("The guestbook has been deleted");
+            } catch (CommandException ex) {
+                String failMessage = "The dataset guestbook cannot be deleted.";
+                JH.addMessage(FacesMessage.SEVERITY_FATAL, failMessage);
+            }
+        } else {
+            System.out.print("Selected Guestbook is null");
+        }
+    }
+
+    public void saveDataverse(ActionEvent e) {
+        saveDataverse("", "");
+    }
+    
+    public String enableGuestbook(Guestbook selectedGuestbook) {
+        selectedGuestbook.setEnabled(true);
+        saveDataverse("dataset.manageGuestbooks.message.enableSuccess", "dataset.manageGuestbooks.message.enableFailure");
+        return "";
+    }
+
+    public String disableGuestbook(Guestbook selectedGuestbook) {
+        selectedGuestbook.setEnabled(false);
+        saveDataverse("dataset.manageGuestbooks.message.disableSuccess", "dataset.manageGuestbooks.message.disableFailure");
+        return "";
+    }
+    
+
+    private void saveDataverse(String successMessage, String failureMessage) {
+        if (successMessage.isEmpty()) {
+            successMessage = "dataset.manageGuestbooks.message.editSuccess";
+        }
+        if (failureMessage.isEmpty()) {
+            failureMessage = "dataset.manageGuestbooks.message.editFailure";
+        }     
+        try {
+            engineService.submit(new UpdateDataverseCommand(getDataverse(), null, null, session.getUser(), null));
+            JsfHelper.addSuccessMessage(JH.localize(successMessage));
+        } catch (CommandException ex) {
+            JH.addMessage(FacesMessage.SEVERITY_FATAL, JH.localize(failureMessage));
+        }
+
+    }
+
+    public List<Guestbook> getGuestbooks() {
+        return guestbooks;
+    }
+
+    public void setGuestbooks(List<Guestbook> guestbooks) {
+        this.guestbooks = guestbooks;
+    }
+    
+
+
+    public Dataverse getDataverse() {
+        return dataverse;
+    }
+
+    public void setDataverse(Dataverse dataverse) {
+        this.dataverse = dataverse;
+    }
+
+    public Long getDataverseId() {
+        return dataverseId;
+    }
+
+    public void setDataverseId(Long dataverseId) {
+        this.dataverseId = dataverseId;
+    }
+
+    public boolean isInheritGuestbooksValue() {
+        return inheritGuestbooksValue;
+    }
+
+    public void setInheritGuestbooksValue(boolean inheritGuestbooksValue) {
+        this.inheritGuestbooksValue = inheritGuestbooksValue;
+    }
+
+    public Guestbook getSelectedGuestbook() {
+        return selectedGuestbook;
+    }
+
+    public void setSelectedGuestbook(Guestbook selectedGuestbook) {
+        this.selectedGuestbook = selectedGuestbook;
+    }
+
+    public void viewSelectedGuestbook(Guestbook selectedGuestbook) {
+        this.selectedGuestbook = selectedGuestbook;
+        guestbookPage.setGuestbook(selectedGuestbook);
+    }
+
+
+
+    public String updateGuestbooksRoot(javax.faces.event.AjaxBehaviorEvent event) throws javax.faces.event.AbortProcessingException {
+        try {
+            dataverse = engineService.submit(new UpdateDataverseGuestbookRootCommand(!isInheritGuestbooksValue(), session.getUser(), getDataverse()));
+            init();
+            return "";
+        } catch (CommandException ex) {
+            Logger.getLogger(ManageGuestbooksPage.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return "";
+    }
+}