diff src/main/java/edu/harvard/iq/dataverse/ManageTemplatesPage.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/ManageTemplatesPage.java	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,246 @@
+package edu.harvard.iq.dataverse;
+
+import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
+import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
+import edu.harvard.iq.dataverse.engine.command.impl.CreateTemplateCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.DeleteTemplateCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseCommand;
+import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseTemplateRootCommand;
+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.Locale;
+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 ManageTemplatesPage implements java.io.Serializable {
+
+    @EJB
+    DataverseServiceBean dvService;
+
+    @EJB
+    TemplateServiceBean templateService;
+    
+    @EJB
+    EjbDataverseEngine engineService;
+
+    @PersistenceContext(unitName = "VDCNet-ejbPU")
+    EntityManager em;
+
+    @Inject
+    DataversePage dvpage;
+
+    @Inject
+    TemplatePage tempPage;
+
+    @Inject
+    DataverseSession session;
+
+    private List<Template> templates;
+    private Dataverse dataverse;
+    private Long dataverseId;
+    private boolean inheritTemplatesValue;
+    private boolean inheritTemplatesAllowed = false;
+
+    private Template selectedTemplate = null;
+
+    public void init() {
+        dataverse = dvService.find(dataverseId);
+        dvpage.setDataverse(dataverse);
+        if (dataverse.getOwner() != null && dataverse.getMetadataBlocks().equals(dataverse.getOwner().getMetadataBlocks())){
+           setInheritTemplatesAllowed(true); 
+        }
+ 
+        templates = new LinkedList<>();
+        setInheritTemplatesValue(!dataverse.isTemplateRoot());
+        if (inheritTemplatesValue && dataverse.getOwner() != null) {
+            for (Template pt : dataverse.getParentTemplates()) {
+                pt.setDataverse(dataverse.getOwner());
+                templates.add(pt);
+            }
+        }
+        for (Template ct : dataverse.getTemplates()) {
+            ct.setDataverse(dataverse);
+            ct.setDataversesHasAsDefault(templateService.findDataversesByDefaultTemplateId(ct.getId()));
+            ct.setIsDefaultForDataverse(!ct.getDataversesHasAsDefault().isEmpty());
+            templates.add(ct);
+        }
+        if (!templates.isEmpty()){
+             JH.addMessage(FacesMessage.SEVERITY_INFO, JH.localize("dataset.manageTemplates.info.message.notEmptyTable"));
+        }
+
+    }
+
+    public void makeDefault(Template templateIn) {
+        dataverse.setDefaultTemplate(templateIn);
+        saveDataverse("The template has been selected as the default template for this dataverse");
+    }
+
+    public void unselectDefault(Template templateIn) {
+        dataverse.setDefaultTemplate(null);
+        saveDataverse("The template has been removed as the default template for this dataverse");
+    }
+
+    public String cloneTemplate(Template templateIn) {
+        Template newOne = templateIn.cloneNewTemplate(templateIn);
+        String name = "Copy of " + templateIn.getName();
+        newOne.setName(name);
+        newOne.setUsageCount(new Long(0));
+        newOne.setCreateTime(new Timestamp(new Date().getTime()));
+        dataverse.getTemplates().add(newOne);
+        templates.add(newOne);
+        Template created;
+        try {
+            created = engineService.submit(new CreateTemplateCommand(newOne, session.getUser(), dataverse));
+            saveDataverse("");
+            String msg =  "The template has been copied";
+            JsfHelper.addFlashMessage(msg);
+            return "/template.xhtml?id=" + created.getId() + "&ownerId=" + dataverse.getId() + "&editMode=METADATA&faces-redirect=true";
+        } catch (CommandException ex) {
+            JH.addMessage(FacesMessage.SEVERITY_FATAL, "Template could not be copied. " );
+        }
+        return "";
+    }
+
+    public void deleteTemplate() {
+        List <Dataverse> dataverseWDefaultTemplate = null;
+        if (selectedTemplate != null) {
+            templates.remove(selectedTemplate);
+            if(dataverse.getDefaultTemplate() != null && dataverse.getDefaultTemplate().equals(selectedTemplate)){
+                dataverse.setDefaultTemplate(null);
+            }
+            dataverse.getTemplates().remove(selectedTemplate);  
+            dataverseWDefaultTemplate = templateService.findDataversesByDefaultTemplateId(selectedTemplate.getId());
+        } else {
+            System.out.print("selected template is null");
+        }
+        try {
+            engineService.submit(new DeleteTemplateCommand(session.getUser(), getDataverse(), selectedTemplate, dataverseWDefaultTemplate  ));
+            JsfHelper.addFlashMessage("The template has been deleted");
+        } catch (CommandException ex) {
+            String failMessage = "The dataset template cannot be deleted.";
+            JH.addMessage(FacesMessage.SEVERITY_FATAL, failMessage);
+        }
+    }
+
+    public void saveDataverse(ActionEvent e) {
+        saveDataverse("");
+    }
+
+    private void saveDataverse(String successMessage) {
+        if (successMessage.isEmpty()) {
+            successMessage = "Template data updated";
+        }
+        try {
+            engineService.submit(new UpdateDataverseCommand(getDataverse(), null, null, session.getUser(), null));
+            //JH.addMessage(FacesMessage.SEVERITY_INFO, successMessage);
+            JsfHelper.addFlashMessage(successMessage);
+        } catch (CommandException ex) {
+            String failMessage = "Template update failed";
+            if(successMessage.equals("The template has been deleted")){
+                failMessage = "The dataset template cannot be deleted.";
+            }
+            if(successMessage.equals("The template has been selected as the default template for this dataverse")){
+                failMessage = "The dataset template cannot be made default.";
+            }
+            JH.addMessage(FacesMessage.SEVERITY_FATAL, failMessage);
+        }
+
+    }
+
+    public List<Template> getTemplates() {
+        return templates;
+    }
+
+    public void setTemplates(List<Template> templates) {
+        this.templates = templates;
+    }
+
+    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 isInheritTemplatesValue() {
+        return inheritTemplatesValue;
+    }
+
+    public void setInheritTemplatesValue(boolean inheritTemplatesValue) {
+        this.inheritTemplatesValue = inheritTemplatesValue;
+    }
+
+    public boolean isInheritTemplatesAllowed() {
+        return inheritTemplatesAllowed;
+    }
+
+    public void setInheritTemplatesAllowed(boolean inheritTemplatesAllowed) {
+        this.inheritTemplatesAllowed = inheritTemplatesAllowed;
+    }
+    public Template getSelectedTemplate() {
+        return selectedTemplate;
+    }
+
+    public void setSelectedTemplate(Template selectedTemplate) {
+        this.selectedTemplate = selectedTemplate;
+    }
+
+    public void viewSelectedTemplate(Template selectedTemplate) {
+        this.selectedTemplate = selectedTemplate;
+        this.selectedTemplate.setMetadataValueBlocks();
+        tempPage.setTemplate(selectedTemplate);
+    }
+
+    public String updateTemplatesRoot(javax.faces.event.AjaxBehaviorEvent event) throws javax.faces.event.AbortProcessingException {
+        try {
+            if (dataverse.getOwner() != null) {
+                if (isInheritTemplatesValue() && dataverse.getDefaultTemplate() == null && dataverse.getOwner().getDefaultTemplate() != null) {
+                    dataverse.setDefaultTemplate(dataverse.getOwner().getDefaultTemplate());
+                }
+                if (!isInheritTemplatesValue()) {
+                    if (dataverse.getDefaultTemplate() != null) {
+                        for (Template test : dataverse.getParentTemplates()) {
+                            if (test.equals(dataverse.getDefaultTemplate())) {
+                                dataverse.setDefaultTemplate(null);
+                            }
+                        }
+                    }
+                }
+            }
+
+            dataverse = engineService.submit(new UpdateDataverseTemplateRootCommand(!isInheritTemplatesValue(), session.getUser(), getDataverse()));
+            init();
+            return "";
+        } catch (CommandException ex) {
+            Logger.getLogger(ManageTemplatesPage.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return "";
+    }
+}