Skip to content
Snippets Groups Projects
Commit 0feed84b authored by Barbara B. Frosik's avatar Barbara B. Frosik
Browse files

Fixed resources

parent 4a5d5592
No related branches found
No related tags found
No related merge requests found
Showing
with 581 additions and 2 deletions
......@@ -14,4 +14,5 @@ public class DmStatus
public static final int DM_INVALID_OBJECT_STATE = 5;
public static final int DM_OBJECT_ALREADY_EXISTS = 6;
public static final int DM_OBJECT_NOT_FOUND = 7;
public static final int DM_INVALID_DATES = 8;
}
\ No newline at end of file
package gov.anl.aps.dm.portal.controllers;
import gov.anl.aps.dm.portal.exceptions.DmPortalException;
import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
import gov.anl.aps.dm.portal.exceptions.IncorrectDate;
import gov.anl.aps.dm.portal.model.entities.Experiment;
import gov.anl.aps.dm.portal.model.beans.ExperimentFacade;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import org.apache.log4j.Logger;
@Named("experimentController")
@SessionScoped
public class ExperimentController extends CrudEntityController<Experiment, ExperimentFacade>
{
private static final Logger logger = Logger.getLogger(ExperimentController.class.getName());
@EJB
private ExperimentFacade experimentFacade;
public ExperimentController() {
}
@Override
protected ExperimentFacade getFacade() {
return experimentFacade;
}
@Override
protected Experiment createEntityInstance() {
return new Experiment();
}
@Override
public String getEntityTypeName() {
return "experiment";
}
@Override
public String getCurrentEntityInstanceName() {
if (getCurrent() != null) {
return getCurrent().getName();
}
return "";
}
@Override
public List<Experiment> getAvailableItems() {
return super.getAvailableItems();
}
@Override
public String prepareEdit(Experiment experiment) {
return super.prepareEdit(experiment);
}
@Override
public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, IncorrectDate {
Experiment existingExperiment = experimentFacade.findByName(experiment.getName());
if (existingExperiment != null) {
throw new ObjectAlreadyExists("Experiment " + experiment.getName() + " already exists.");
}
if ((experiment.getStartDate() != null) && (experiment.getEndDate() != null) && (experiment.getEndDate().before(experiment.getStartDate()))) {
throw new IncorrectDate("Experiment end date is before start date.");
}
logger.debug("Inserting new experiment " + experiment.getName());
}
@Override
public void prepareEntityUpdate(Experiment experiment) throws DmPortalException {
super.prepareEntityUpdate(experiment);
if ((experiment.getStartDate() != null) && (experiment.getEndDate() != null) && (experiment.getEndDate().before(experiment.getStartDate()))) {
throw new IncorrectDate("Experiment end date is before start date.");
}
}
@FacesConverter(forClass = Experiment.class)
public static class ExperimentControllerConverter implements Converter
{
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
ExperimentController controller = (ExperimentController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "experimentController");
return controller.getEntity(getKey(value));
}
java.lang.Integer getKey(String value) {
java.lang.Integer key;
key = Integer.valueOf(value);
return key;
}
String getStringKey(java.lang.Integer value) {
StringBuilder sb = new StringBuilder();
sb.append(value);
return sb.toString();
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Experiment) {
Experiment o = (Experiment) object;
return getStringKey(o.getId());
}
else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Experiment.class.getName());
}
}
}
}
\ No newline at end of file
/*
* 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 gov.anl.aps.dm.portal.exceptions;
import gov.anl.aps.dm.portal.constants.DmStatus;
/**
* Object already exists exception class.
*/
public class IncorrectDate extends DmPortalException
{
/**
* Constructor.
*/
public IncorrectDate()
{
super();
setErrorCode(DmStatus.DM_INVALID_DATES);
}
/**
* Constructor.
*
* @param message Error message
*/
public IncorrectDate(String message)
{
super(message);
setErrorCode(DmStatus.DM_INVALID_DATES);
}
/**
* Constructor.
*
* @param throwable Throwable object
*/
public IncorrectDate(Throwable throwable)
{
super(throwable);
setErrorCode(DmStatus.DM_INVALID_DATES);
}
/**
* Constructor.
*
* @param message Error message
* @param throwable Throwable object
*/
public IncorrectDate(String message, Throwable throwable)
{
super(message, throwable);
setErrorCode(DmStatus.DM_INVALID_DATES);
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ package gov.anl.aps.dm.portal.model.beans;
import gov.anl.aps.dm.portal.model.entities.Experiment;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
/**
......@@ -30,4 +31,19 @@ public class ExperimentFacade extends AbstractFacade<Experiment>
super(Experiment.class);
}
public Experiment findByName(String name) {
try {
return (Experiment) em.createNamedQuery("Experiment.findByName")
.setParameter("name", name)
.getSingleResult();
}
catch (NoResultException ex) {
}
return null;
}
public boolean checkIfNameExists(String name) {
return findByName(name) != null;
}
}
......@@ -118,7 +118,13 @@ public class Experiment extends CloneableEntity
this.startDate = startDate;
}
public Date getEndDate() {
// public void setStartDate(String startDate) {
// Date sDate = new Date();
//
// setStartDate(sDate);
// }
public Date getEndDate() {
return endDate;
}
......@@ -126,6 +132,12 @@ public class Experiment extends CloneableEntity
this.endDate = endDate;
}
// public void setEndDate(String endDate) {
// Date eDate = new Date();
//
// setEndDate(eDate);
// }
@XmlTransient
public List<DataFolder> getDataFolderList() {
return dataFolderList;
......@@ -161,7 +173,7 @@ public class Experiment extends CloneableEntity
this.experimentType = experimentType;
}
@Override
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
......
DatePattern=MM-dd-yyy
PersistenceErrorOccured=A persistence error occurred.
Previous=Previous
Next=Next
......
jQuery(document).ready(function() {
PF('experimentListWidget').filter();
});
......@@ -59,6 +59,7 @@
<p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/>
<p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
<p:menuitem value="Users" url="/views/userInfo/list.xhtml"/>
<p:menuitem value="Experiments" url="/views/experiment/list.xhtml"/>
<p:menuitem value="Login" onclick="PF('loginDialog').show();" rendered="#{!loginController.loggedIn}" icon="ui-icon-person"/>
<p:menuitem value="Logout" action="#{loginController.logout()}" rendered="#{loginController.loggedIn}" icon="ui-icon-close"/> </p:menubar>
</h:form>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
template="../../templates/contentViewTemplate4x3.xhtml">
<ui:define name="middleCenter">
<div class="pageTitle">
<h1>Add Experiment</h1>
</div>
<h:form id="addExperimentForm">
<ui:include src="experimentCreatePanelGrid.xhtml"/>
<p/>
<div class="actionButton">
<p:commandButton action="#{experimentController.create()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
<p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Cancel" alt="Cancel" icon="ui-icon-cancel"/>
</div>
</h:form>
</ui:define>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
template="../../templates/contentViewTemplate4x3.xhtml">
<ui:define name="middleCenter">
<h:form id="editExperimentForm">
<div class="middleCenterLeftContent">
<div class="pageTitle">
<h1>Edit Experiment</h1>
</div>
<ui:include src="experimentEditPanelGrid.xhtml"/>
<p/>
<div class="actionButton">
<p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
<!-- <p:commandButton action="list.xhtml?faces-redirect=true" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>-->
<p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
</div>
</div>
</h:form>
</ui:define>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<c:set var="experimentObject" value="#{experimentController.selected}"/>
<p:panelGrid columns="3" styleClass="createEntityDetails">
<h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
<h:inputText id="name" value="#{experimentObject.name}" title="Name" required="true" styleClass="entityDataEmphasizedText"/>
<p:message for="name"/>
<h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/>
<p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataText">
<f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{experimentTypeController.getAvailableItems()}"
var="n"
itemValue="#{n}"
itemLabel="#{n.name}"/>
</p:selectOneMenu>
<p:message for="experimentType"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:inputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataText"/>
<p:message for="description"/>
<h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/>
<p:calendar id="startDate" value="#{experimentObject.startDate}" />
<p:message for="startDate"/>
<h:outputLabel for="endDate" value="End Date" styleClass="entityDataLabel"/>
<p:calendar id="endDate" value="#{experimentObject.endDate}" />
<p:message for="endDate"/>
</p:panelGrid>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<p:confirmDialog id="experimentDestroyDialog" message="Destroy experiment #{experimentController.getCurrentEntityInstanceName()}?"
header="Destroy Experiment" severity="alert" widgetVar="experimentDestroyDialogWidget"
styleClass="dialog">
<p:commandButton value="Yes" oncomplete="experimentDestroyDialogWidget.hide()" action="#{experimentController.destroy()}"/>
<p:commandButton value="No" onclick="PF('experimentDestroyDialogWidget').hide()" type="button" />
</p:confirmDialog>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<c:set var="experimentObject" value="#{experimentController.selected}"/>
<c:set var="isFieldWriteable" value="#{loginController.loggedIn}"/>
<p:panelGrid columns="3" styleClass="editEntityDetails">
<h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
<h:inputText id="name" value="#{experimentObject.name}" title="Name" required="true" styleClass="entityDataEmphasizedText"/>
<p:message for="name"/>
<h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
<h:outputText id="id" value="#{experimentObject.id}" title="Id" styleClass="entityDataText"/>
<p:message for="id"/>
<h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/>
<p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataText">
<f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{experimentTypeController.getAvailableItems()}"
var="n"
itemValue="#{n}"
itemLabel="#{n.name}"/>
</p:selectOneMenu>
<p:message for="experimentType"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:inputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataText"/>
<p:message for="description"/>
<h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/>
<p:calendar id="startDate" value="#{experimentObject.startDate}" />
<p:message for="startDate"/>
<h:outputLabel for="endDate" value="End Date" styleClass="entityDataLabel"/>
<p:calendar id="endDate" value="#{experimentObject.endDate}" />
<p:message for="endDate"/>
</p:panelGrid>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<p:dataTable id="experimentListDataTable"
var="experimentObject"
value="#{experimentController.listDataModel}"
filteredValue="#{experimentController.filteredObjectList}"
paginator="true"
paginatorAlwaysVisible="false"
rows="25"
binding="#{experimentController.listDataTable}"
widgetVar="experimentListWidget"
emptyMessage="No experiments found.">
<p:column sortBy="#{experimentObject.id}" headerText="Id" width="40">
<h:outputText value="#{experimentObject.id}"/>
</p:column>
<p:column sortBy="#{experimentObject.name}" headerText="Name"
filterBy="#{experimentObject.name}" filterMatchMode="contains" width="120">
<h:outputText value="#{experimentObject.name}"/>
</p:column>
<p:column sortBy="#{experimentObject.experimentType.name}" headerText="Type"
filterBy="#{experimentObject.experimentType.name}" filterMatchMode="contains" width="120">
<h:outputText value="#{experimentObject.experimentType.name}"/>
</p:column>
<p:column sortBy="#{experimentObject.description}" headerText="Description"
filterBy="#{experimentObject.description}" filterMatchMode="contains">
<h:outputText value="#{experimentObject.description}"/>
</p:column>
<p:column sortBy="#{experimentObject.startDate}" headerText="Start Date"
filterBy="#{experimentObject.startDate}" filterMatchMode="contains" width="120">
<h:outputText value="#{experimentObject.startDate}">
<f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
</h:outputText>
</p:column>
<p:column sortBy="#{experimentObject.endDate}" headerText="End Date"
filterBy="#{experimentObject.endDate}" filterMatchMode="contains" width="120">
<h:outputText value="#{experimentObject.endDate}">
<f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
</h:outputText>
</p:column>
<c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
<p:column headerText="Actions" width="70">
<div class="actionLink">
<p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
<p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
<p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
<f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
</p:commandLink>
</div>
</p:column>
</p:dataTable>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<c:set var="experimentObject" value="#{experimentController.selected}"/>
<p:panelGrid columns="2" styleClass="viewEntityDetails">
<h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
<h:outputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
<h:outputText id="id" value="#{experimentObject.id}" title="Id" styleClass="entityDataText"/>
<h:outputLabel for="experimentType" value="Type" styleClass="entityDataLabel"/>
<h:outputText id="experimentType" value="#{experimentObject.experimentType.name}" title="Name" styleClass="entityDataText"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:outputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataText"/>
<h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/>
<h:outputText id="startDate" value="#{experimentObject.startDate}" styleClass="entityDataText">
<f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
</h:outputText>
<h:outputLabel for="endDate" value="End Date" styleClass="entityDataLabel"/>
<h:outputText id="endDate" value="#{experimentObject.endDate}" styleClass="entityDataText">
<f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
</h:outputText>
</p:panelGrid>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
template="../../templates/contentViewTemplate4x3.xhtml">
<ui:define name="middleCenter">
<div class="pageTitle">
<h1>Experiments</h1>
</div>
<h:form id="viewExperimentListForm">
<c:set var="entityController" value="#{experimentController}"/>
<ui:include src="../common/commonListActionButtons.xhtml"/>
<h:panelGroup>
<ui:include src="experimentListDataTable.xhtml"/>
</h:panelGroup>
<ui:include src="experimentDestroyDialog.xhtml"/>
<h:outputScript library="js/experiment" name="list.filter.js" rendered="#{loginController.loggedIn}"/>
</h:form>
</ui:define>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
template="../../templates/contentViewTemplate4x3.xhtml">
<ui:define name="middleCenter">
<h:form id="viewExperimentForm">
<div class="middleCenterLeftContent">
<div class="pageTitle">
<h1>Experiment Details</h1>
</div>
<ui:include src="experimentViewPanelGrid.xhtml"/>
<p/>
<c:set var="experimentObject" value="#{experimentController.selected}"/>
<c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
<div class="actionButton">
<p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{isEntityWriteable}" value="Edit" alt="Edit" icon="ui-icon-pencil"/>
<p:commandButton onclick="PF('experimentDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash">
<f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
</p:commandButton>
<p:commandButton action="#{experimentController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
</div>
<ui:include src="experimentDestroyDialog.xhtml"/>
</div>
</h:form>
</ui:define>
</ui:composition>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment