diff --git a/.gitignore b/.gitignore index fbfa7d1b9607eb7020d58fd24e867b984bb41d0f..07a4e83768add5d50d539a4061ed6b02298fdfc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ **/*.pyc +**/build +**/dist +**/glassfish-resources.xml diff --git a/.svnignore b/.svnignore deleted file mode 100644 index 186857b9e8394de95b93f45f32aa9038714f5b42..0000000000000000000000000000000000000000 --- a/.svnignore +++ /dev/null @@ -1 +0,0 @@ -var diff --git a/doc/.svnignore b/doc/.svnignore deleted file mode 100644 index 1936cc1d441e479bc8fb17da77ec6f06e477f286..0000000000000000000000000000000000000000 --- a/doc/.svnignore +++ /dev/null @@ -1 +0,0 @@ -html diff --git a/doc/RELEASE_NOTES.txt b/doc/RELEASE_NOTES.txt index 34b67f5b6db0a0a0d8e8f5acef62b61118bee779..72ae398fe62cb21927feb99d076e4941c12fa75d 100644 --- a/doc/RELEASE_NOTES.txt +++ b/doc/RELEASE_NOTES.txt @@ -1,3 +1,12 @@ +Release 3.0.0 (07/26/2019) +============================= +- Added python web service API for downloading files +- Updated DB schema for experiment data archival support +- Web Portal changes: + - Added storage views + - Added connection between station and experiment types + - Updated experiment views with storage and root path fields + Release 2.6.0 (07/15/2019) ============================= - Moved code repo to gitlab diff --git a/doc/dm_test_system_deployment_notes.txt b/doc/dm_test_system_deployment_notes.txt index d5316f4f7d092e98d06a89424df0bbce082f836a..90aba406e563171ee845ef310ee86412d75f3ae8 100644 --- a/doc/dm_test_system_deployment_notes.txt +++ b/doc/dm_test_system_deployment_notes.txt @@ -1,25 +1,29 @@ -*************** - Prerequisites: - -======== -- required OS packages are listed here https://confluence.aps.anl.gov/display/DMGT/DM+Station+System+Requirements - +====================== +- required OS packages are listed here: + https://confluence.aps.anl.gov/display/DMGT/DM+Station+System+Requirements +- make sure that user ssh login keys are setup and work for both 127.0.0.1 + interface, as well as for the short/full installation machine name +- installing DM support software and deploying test system should not + require elevated privileges +- instructions below assume that user's git ssh keys have been setup Installing DM Support -============= +====================== 1) mkdir -p DM_INSTALL_DIR && cd DM_INSTALL_DIR -2) svn co https://subversion.xray.aps.anl.gov/DataManagement/support +2) git clone git@git.aps.anl.gov:DM/dm-support support 3) cd support 4) ./sbin/install_support_all.sh - - you will need to enter two passwords of your choice for glassfish (master and admin password); each password needs to be entered only once, as expect scripts handle repeated requests - + - you will need to enter two passwords of your choice for glassfish + (master and admin password) + - each password needs to be entered only once, as expect scripts handle + repeated requests Deploying Test System -============== +====================== 1) cd DM_INSTALL_DIR -2) svn co https://subversion.xray.aps.anl.gov/DataManagement/trunk dev -3) cd dev +2) git clone git@git.aps.anl.gov:DM/dm +3) cd dm 4) ./sbin/dm_deploy_test_system.sh - passwords needed: * postgres admin password (your choice) @@ -28,9 +32,11 @@ Deploying Test System * dmadmin LDAP password (existing) * dmadmin BSS login password (existing) * dmadmin ESAF DB password (existing) - - scripts also require entry for the data storage directory (e.g, DM_INSTALL_DIR/data), etc; for most of those entries the defaults, if given, are fine + - scripts also require entry for the data storage directory + (e.g, DM_INSTALL_DIR/data), etc + - for most of the required entries the defaults, if given, are fine Removing Test System -============== +====================== 1) DM_INSTALL_DIR/dev/sbin/dm_remove_test_system.sh diff --git a/doc/sphinx/.svnignore b/doc/sphinx/.svnignore deleted file mode 100644 index 9ef96044faba86acfbf59bd0deb4545625df837f..0000000000000000000000000000000000000000 --- a/doc/sphinx/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -build - diff --git a/sbin/dm_remove_catalog_duplicates.sh b/sbin/dm_remove_catalog_duplicates.sh old mode 100644 new mode 100755 index 080599ced66e798ea1850e79a543cca1cf5d604e..fbede229fd4d0874ea26eae54d76d278ee5c0c0d --- a/sbin/dm_remove_catalog_duplicates.sh +++ b/sbin/dm_remove_catalog_duplicates.sh @@ -1,8 +1,92 @@ -e=Cycle2018_2_Axalta; for f in `cat $e.diff`; do echo ; echo -"*******************************" ; echo $f; efp=`echo $f | sed -'s?Cycle2018_2_Axalta/??'`; echo $efp; dm-stat-file --experiment=$e ---relative-path=$efp; echo ; echo LIST; dm-list-experiment-files ---experiment=$e experimentFilePath:$efp; echo ; read -p "Enter file id -to be deleted: " fileId; dm-delete-file --keep-in-storage ---experiment=$e --file-id=$fileId; done +#!/bin/bash +# Script for removing duplicate/bad entries from DM Catalog + +usage() { + echo "Usage:" + echo " $0 <experiment name> [<work dir>]" + echo "" +} +EXPERIMENT_NAME=$1 +if [ -z "$EXPERIMENT_NAME" ]; then + usage + exit 1 +fi +WORK_DIR=${2:-/tmp} +mkdir -p $WORK_DIR || exit 1 +echo "Using work directory $WORK_DIR for experiment $EXPERIMENT_NAME" + +FULL_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.all` +UNIQUE_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.unique` +STAT_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.stat` +GOOD_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.good` +DELETED_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.deleted` +BAD_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.bad` +DUPLICATE_LIST_FILE=`realpath $WORK_DIR/$EXPERIMENT_NAME.duplicate` +rm -f $GOOD_LIST_FILE $BAD_LIST_FILE $DELETED_LIST_FILE $DUPLICATE_LIST_FILE +touch $GOOD_LIST_FILE $BAD_LIST_FILE $DELETED_LIST_FILE $DUPLICATE_LIST_FILE + +echo "Retrieving list of all catalog entries" +dm-list-experiment-files --experiment=$EXPERIMENT_NAME --display-keys=id,experimentFilePath,fileSize,md5Sum > $FULL_LIST_FILE || exit 1 +echo "Retrieving list of unique file paths" +dm-list-experiment-files --experiment=$EXPERIMENT_NAME --display-keys=experimentFilePath | sort -u | sed 's?experimentFilePath=??' | awk '{print $0}' > $UNIQUE_LIST_FILE || exit 1 + +nUnique=`wc -l $UNIQUE_LIST_FILE | awk '{print $1}'` +nFiles=`wc -l $FULL_LIST_FILE | awk '{print $1}'` +echo "Total number of catalog entries: $nFiles" +echo "Total number of unique files: $nUnique" + +storageHost=`dm-get-experiment --experiment=$EXPERIMENT_NAME --display-keys=storageHost | sed 's?storageHost=??'` +storageDirectory=`dm-get-experiment --experiment=$EXPERIMENT_NAME --display-keys=storageDirectory | sed 's?storageDirectory=??'` +nFilesInStorage=`ssh $storageHost "find $storageDirectory -type f | wc -l"` +echo "Total number of files in storage: $nFilesInStorage $storageDirectory" +echo + +OLD_IFS=$IFS +IFS= +fCount=0 +while read -r f; do + fCount=`expr $fCount + 1` + IFS=$OLD_IFS + f=`echo $f | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'` + echo "**********" + echo "Working on file: \"$f\" ($fCount / $nUnique)" + dm-stat-file --experiment=$EXPERIMENT_NAME --relative-path=$f --md5sum > $STAT_FILE || exit 1 + fileSize=`cat $STAT_FILE | sed -e '1,/STAT INFO/d' | awk '{print $2}' | sed 's?fileSize=??'` + md5Sum=`cat $STAT_FILE | sed -e '1,/STAT INFO/d' | awk '{print $3}' | sed 's?md5Sum=??'` + echo "File size: $fileSize, md5Sum: $md5Sum" + nEntries=`cat $FULL_LIST_FILE | grep "experimentFilePath=$f " | wc -l` + echo "There are $nEntries catalog entries" + goodId="" + idList=`cat $FULL_LIST_FILE | grep "experimentFilePath=$f " | awk '{print $1}'` + for id in $idList; do + catFileSize=`cat $FULL_LIST_FILE | grep "$id" | awk '{print $3}' | sed 's?fileSize=??' ` + catMd5Sum=`cat $FULL_LIST_FILE | grep "$id" | awk '{print $4}' | sed 's?md5Sum=??' ` + if [ "$catFileSize" = "$fileSize" -a "$catMd5Sum" = "$md5Sum" ]; then + echo "Catalog info is correct for $f, $id" + if [ "x$goodId" = "x" ]; then + echo "File $id is marked as good" + echo "$f $id" >> $GOOD_LIST_FILE + goodId=$id + else + echo "File $id is marked as duplicate of $goodId" + echo "$f $id" >> $DUPLICATE_LIST_FILE + echo dm-delete-file --keep-in-storage --experiment=$EXPERIMENT_NAME --file-$id >> $DELETED_LIST_FILE + fi + else + echo "Catalog info is not correct for $f, file size: $catFileSize, md5Sum: $catMd5Sum" + echo "$f $id" >> $BAD_LIST_FILE + echo dm-delete-file --keep-in-storage --experiment=$EXPERIMENT_NAME --file-$id >> $DELETED_LIST_FILE + fi + done +done < "$UNIQUE_LIST_FILE" + +echo +echo "**********" +echo +echo "Total number of files in storage : $nFilesInStorage $storageDirectory" +echo "Number of all catalog entries : `wc -l $FULL_LIST_FILE`" +echo "Number of unique catalog entries : `wc -l $UNIQUE_LIST_FILE`" +echo "Number of good catalog entries : `wc -l $GOOD_LIST_FILE`" +echo "Number of bad catalog entries : `wc -l $BAD_LIST_FILE`" +echo "Number of deleted catalog entries : `wc -l $DELETED_LIST_FILE`" diff --git a/src/c++/configure/.svnignore b/src/c++/configure/.svnignore deleted file mode 100644 index e99473fc97b66eccbc1b64a0346e66ecec19e122..0000000000000000000000000000000000000000 --- a/src/c++/configure/.svnignore +++ /dev/null @@ -1,3 +0,0 @@ -O.* -*.local -*.support diff --git a/src/c++/iocBoot/iocDmInt/.svnignore b/src/c++/iocBoot/iocDmInt/.svnignore deleted file mode 100644 index a3818ccc6d3d079c7b5aca12f6bf7a23ebb8567a..0000000000000000000000000000000000000000 --- a/src/c++/iocBoot/iocDmInt/.svnignore +++ /dev/null @@ -1,5 +0,0 @@ -O.* -.svnignore -cdCommands.debug -cdCommands -envPaths diff --git a/src/java/DmApi/.svnignore b/src/java/DmApi/.svnignore deleted file mode 100644 index 9d0b71a3c79d2d3afbfa99269fea4280f5e73344..0000000000000000000000000000000000000000 --- a/src/java/DmApi/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -build -dist diff --git a/src/java/DmBase/.svnignore b/src/java/DmBase/.svnignore deleted file mode 100644 index 9d0b71a3c79d2d3afbfa99269fea4280f5e73344..0000000000000000000000000000000000000000 --- a/src/java/DmBase/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -build -dist diff --git a/src/java/DmWebPortal/nbproject/.svnignore b/src/java/DmWebPortal/nbproject/.svnignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/java/DmWebPortal/nbproject/private/.svnignore b/src/java/DmWebPortal/nbproject/private/.svnignore deleted file mode 100644 index 2963c1cfca7f43d71b6f86e0d189bae649897e69..0000000000000000000000000000000000000000 --- a/src/java/DmWebPortal/nbproject/private/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -private.properties -private.xml diff --git a/src/java/DmWebPortal/nbproject/private/private.properties b/src/java/DmWebPortal/nbproject/private/private.properties index 15be446691ee08ef097a133eb1076ea5c0b4acf9..1501f22e2fd36a8536d26a4e15c3b449ea5576f4 100644 --- a/src/java/DmWebPortal/nbproject/private/private.properties +++ b/src/java/DmWebPortal/nbproject/private/private.properties @@ -1,2 +1,7 @@ -j2ee.server.home=/glassfish -j2ee.server.middleware= +deploy.ant.properties.file=/home/oxygen/SVESELI/.netbeans/8.2/config/GlassFishEE6/Properties/gfv3700118484.properties +j2ee.platform.is.jsr109=true +j2ee.server.domain=/local/sveseli/DM/git-support/opt/netbeans/glassfish-4.1.1/glassfish/domains/domain1 +j2ee.server.home=/local/sveseli/DM/git-support/opt/netbeans/glassfish-4.1.1/glassfish +j2ee.server.instance=[/local/sveseli/DM/git-support/opt/netbeans/glassfish-4.1.1/glassfish:/local/sveseli/DM/git-support/opt/netbeans/glassfish-4.1.1/glassfish/domains/domain1]deployer:gfv3ee6wc:localhost:4848 +j2ee.server.middleware=/local/sveseli/DM/git-support/opt/netbeans/glassfish-4.1.1 +user.properties.file=/home/oxygen/SVESELI/.netbeans/8.2/build.properties diff --git a/src/java/DmWebPortal/nbproject/private/private.xml b/src/java/DmWebPortal/nbproject/private/private.xml index 489683004e63175b3d3d3361f022897e671352e0..6807a2ba1902a255b464065dd83188d73fbe6d01 100644 --- a/src/java/DmWebPortal/nbproject/private/private.xml +++ b/src/java/DmWebPortal/nbproject/private/private.xml @@ -2,9 +2,6 @@ <project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> - <group> - <file>file:/local/sveseli/Work/DM/dev/src/java/DmWebPortal/web/templates/menubarTemplate.xhtml</file> - <file>file:/local/sveseli/Work/DM/dev/src/java/DmWebPortal/web/views/home.xhtml</file> - </group> + <group/> </open-files> </project-private> diff --git a/src/java/DmWebPortal/setup/.svnignore b/src/java/DmWebPortal/setup/.svnignore deleted file mode 100644 index 2772c3847bb4d84aa086773d20c9676620f6bd0b..0000000000000000000000000000000000000000 --- a/src/java/DmWebPortal/setup/.svnignore +++ /dev/null @@ -1 +0,0 @@ -glassfish-resources.xml diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java index 8e7b125914d27a3192286e87292489180a056bb7..c3b02b8abb41ff80ef59acbb436f003dadc5388c 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java @@ -7,6 +7,7 @@ import gov.anl.aps.dm.portal.model.beans.ExperimentStationDbFacade; import gov.anl.aps.dm.portal.model.beans.SystemRoleTypeDbFacade; import gov.anl.aps.dm.portal.model.beans.UserSystemRoleDbFacade; import gov.anl.aps.dm.portal.model.entities.ExperimentStation; +import gov.anl.aps.dm.portal.model.entities.ExperimentType; import gov.anl.aps.dm.portal.model.entities.SystemRoleType; import gov.anl.aps.dm.portal.model.entities.UserInfo; import gov.anl.aps.dm.portal.model.entities.UserSystemRole; @@ -38,6 +39,7 @@ public class ExperimentStationController extends DmEntityController<ExperimentSt private UserSystemRoleDbFacade userSystemRoleDbFacade; UserSystemRole currentUserSystemRole; + ExperimentType currentExperimentType; public ExperimentStationController() { } @@ -120,7 +122,7 @@ public class ExperimentStationController extends DmEntityController<ExperimentSt public void setCurrentUserSystemRole(UserSystemRole currentUserSystemRole) { this.currentUserSystemRole = currentUserSystemRole; } - + public void prepareAddManager(ExperimentStation experimentStation) { UserSystemRole userSystemRole = getCurrentUserSystemRole(); userSystemRole.setSystemRoleType(systemRoleTypeDbFacade.findManagerRoleType()); @@ -159,6 +161,42 @@ public class ExperimentStationController extends DmEntityController<ExperimentSt updateOnRemoval(); } + public ExperimentType getCurrentExperimentType() { + if (currentExperimentType == null) { + currentExperimentType = new ExperimentType(); + } + return currentExperimentType; + } + + public void setCurrentExperimentType(ExperimentType currentExperimentType) { + this.currentExperimentType = currentExperimentType; + } + public void prepareAddExperimentType(ExperimentType experimentType) { + setCurrentExperimentType(experimentType); + } + + public void addExperimentType() { + ExperimentStation experimentStation = getCurrent(); + List<ExperimentType> experimentTypeList = experimentStation.getExperimentTypeList(); + if (experimentTypeList.contains(currentExperimentType)) { + SessionUtility.addErrorMessage("Error", "Experiment type " + + currentExperimentType.getName() + + " can already be used at " + + experimentStation.getName() + " station."); + return; + } + experimentTypeList.add(0, currentExperimentType); + update(); + currentExperimentType = null; + } + + public void deleteExperimentType(ExperimentType experimentType) { + ExperimentStation experimentStation = getCurrent(); + List<ExperimentType> experimentTypeList = experimentStation.getExperimentTypeList(); + experimentTypeList.remove(experimentType); + updateOnRemoval(); + } + @FacesConverter(forClass = ExperimentStation.class) public static class ExperimentStationControllerConverter implements Converter { diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java new file mode 100644 index 0000000000000000000000000000000000000000..7efadfe8cef6bd73920e8640ea6ea8b556ba919c --- /dev/null +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java @@ -0,0 +1,125 @@ +package gov.anl.aps.dm.portal.controllers; + +import gov.anl.aps.dm.common.exceptions.DmException; +import gov.anl.aps.dm.common.exceptions.InvalidRequest; +import gov.anl.aps.dm.common.exceptions.ObjectAlreadyExists; +import gov.anl.aps.dm.portal.model.beans.StorageDbFacade; +import gov.anl.aps.dm.portal.model.entities.Storage; +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("storageController") +@SessionScoped +public class StorageController extends DmEntityController<Storage, StorageDbFacade> { + + private static final Logger logger = Logger.getLogger(StorageController.class.getName()); + + @EJB + private StorageDbFacade storageDbFacade; + + public StorageController() { + } + + @Override + protected StorageDbFacade getFacade() { + return storageDbFacade; + } + + @Override + protected Storage createEntityInstance() { + return new Storage(); + } + + @Override + public String getEntityTypeName() { + return "storage"; + } + + @Override + public String getCurrentEntityInstanceName() { + if (getCurrent() != null) { + return getCurrent().getName(); + } + return ""; + } + + @Override + public Storage findById(Integer id) { + return storageDbFacade.findById(id); + } + + @Override + public void prepareEntityInsert(Storage storage) throws DmException { + if ((storage.getName() == null) || (storage.getName().length() == 0)) { + throw new InvalidRequest("Storage name is missing."); + } + Storage existingStorage = storageDbFacade.findByName(storage.getName()); + if (existingStorage != null) { + throw new ObjectAlreadyExists("Storage " + storage.getName() + " already exists."); + } + logger.debug("Inserting new storage " + storage.getName()); + } + + @Override + public void prepareEntityUpdate(Storage storage) throws DmException { + if ((storage.getName() == null) || (storage.getName().length() == 0)) { + throw new InvalidRequest("Storage name is missing."); + } + logger.debug("Updating storage " + storage.getName()); + } + + @Override + protected String getObjectAlreadyExistMessage(Storage storage) { + if (storage == null) { + return null; + } + return "Storage system " + storage.getName() + " already exists."; + } + + @FacesConverter(forClass = Storage.class) + public static class StorageControllerConverter implements Converter { + + @Override + public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { + if (value == null || value.length() == 0) { + return null; + } + StorageController controller = (StorageController) facesContext.getApplication().getELResolver(). + getValue(facesContext.getELContext(), null, "storageController"); + 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 Storage) { + Storage o = (Storage) object; + return getStringKey(o.getId()); + } else { + throw new IllegalArgumentException("Object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Storage.class.getName()); + } + } + + } + +} diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/StorageDbFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/StorageDbFacade.java index f9b9bee0a119eadf177b07cdc2c7a67c8242ab70..81be7ebc89f8739f3ac06c76b075d47313f06ee6 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/StorageDbFacade.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/StorageDbFacade.java @@ -8,6 +8,7 @@ package gov.anl.aps.dm.portal.model.beans; import gov.anl.aps.dm.portal.model.entities.Storage; import javax.ejb.Stateless; import javax.persistence.EntityManager; +import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; /** @@ -28,5 +29,25 @@ public class StorageDbFacade extends DmEntityDbFacade<Storage> { public StorageDbFacade() { super(Storage.class); } - + + public Storage findByName(String name) { + try { + return (Storage) em.createNamedQuery("Storage.findByName") + .setParameter("name", name) + .getSingleResult(); + } + catch (NoResultException ex) { + } + return null; + } + + public Storage findById(Integer id) { + try { + return (Storage) em.createNamedQuery("Storage.findById") + .setParameter("id", id) + .getSingleResult(); + } catch (NoResultException ex) { + } + return null; + } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UsersLastUpdateDbFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UsersLastUpdateDbFacade.java deleted file mode 100644 index 8d2da0bfc9a12be0df3791fb21e46698f7e51c8b..0000000000000000000000000000000000000000 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UsersLastUpdateDbFacade.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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.model.beans; - -import gov.anl.aps.dm.portal.model.entities.UsersLastUpdate; -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; - -/** - * - * @author sveseli - */ -@Stateless -public class UsersLastUpdateDbFacade extends DmEntityDbFacade<UsersLastUpdate> { - - @PersistenceContext(unitName = "DmWebPortalPU") - private EntityManager em; - - @Override - protected EntityManager getEntityManager() { - return em; - } - - public UsersLastUpdateDbFacade() { - super(UsersLastUpdate.class); - } - -} diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java index 09660de78c3466f23f074c708db9ae4e17bc0609..161c40a28692e934f9a38bd79d34dbfe7d911a3c 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java @@ -5,7 +5,6 @@ */ package gov.anl.aps.dm.portal.model.entities; -import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -18,7 +17,6 @@ import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -41,10 +39,8 @@ public class AllowedPolicyValue extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) @Column(name = "policy_value") private String policyValue; - @Size(max = 2147483647) private String description; @JoinColumn(name = "policy_property_id", referencedColumnName = "id") @ManyToOne(optional = false) @@ -116,7 +112,7 @@ public class AllowedPolicyValue extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.AllowedPolicyValue[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.AllowedPolicyValue[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedSettingValue.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedSettingValue.java index 66e09c5fade122f0d26d2dcc559e4575fed8b14e..8d195f126ec74d49dad7bc38c9c295766ba99713 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedSettingValue.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedSettingValue.java @@ -5,7 +5,6 @@ */ package gov.anl.aps.dm.portal.model.entities; -import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -17,7 +16,6 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -38,10 +36,8 @@ public class AllowedSettingValue extends DmEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) private Integer id; - @Size(max = 2147483647) @Column(name = "setting_value") private String settingValue; - @Size(max = 2147483647) private String description; @JoinColumn(name = "setting_type_id", referencedColumnName = "id") @ManyToOne(optional = false) @@ -108,7 +104,7 @@ public class AllowedSettingValue extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.AllowedSettingValue[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.AllowedSettingValue[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java index a927ab3b5925947235f32274b0ae90842891bd2a..709ca74bb241fdf88a7749512b713b382047ea7f 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java @@ -5,7 +5,6 @@ */ package gov.anl.aps.dm.portal.model.entities; -import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -18,7 +17,6 @@ import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -41,10 +39,8 @@ public class DataFolder extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) @Column(name = "data_path") private String dataPath; - @Size(max = 2147483647) private String description; @JoinColumn(name = "experiment_id", referencedColumnName = "id") @ManyToOne(optional = false) @@ -127,7 +123,7 @@ public class DataFolder extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.DataFolder[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.DataFolder[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Endpoint.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Endpoint.java index 9446157cf1a76192dec2efd38bdfe3b43191c2ca..fbc97818c8efefbbabf5ee919e047db42cef9e81 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Endpoint.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Endpoint.java @@ -5,7 +5,6 @@ */ package gov.anl.aps.dm.portal.model.entities; -import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -17,7 +16,6 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -40,14 +38,11 @@ public class Endpoint extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) @Column(name = "access_url") private String accessUrl; - @Size(max = 2147483647) private String description; @JoinColumn(name = "storage_id", referencedColumnName = "id") @ManyToOne(optional = false) @@ -128,7 +123,7 @@ public class Endpoint extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.Endpoint[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.Endpoint[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java index e4dc43df4e9f7372e2145e4c3e53bc88268d448b..8855721230970038b41df28e260e28b5d8e1a24e 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java @@ -54,6 +54,8 @@ public class Experiment extends DmEntity { @Column(name = "end_date") @Temporal(TemporalType.TIMESTAMP) private Date endDate; + @Column(name = "root_path") + private String rootPath; @OneToMany(cascade = CascadeType.ALL, mappedBy = "experiment") private List<UserExperimentRole> userExperimentRoleList; @OneToMany(cascade = CascadeType.ALL, mappedBy = "experimentId") @@ -66,7 +68,10 @@ public class Experiment extends DmEntity { private ExperimentType experimentType; @OneToMany(cascade = CascadeType.ALL, mappedBy = "experimentId") private List<ExperimentPolicy> experimentPolicyList; - + @JoinColumn(name = "primary_storage_id", referencedColumnName = "id") + @ManyToOne + private Storage primaryStorage; + public Experiment() { } @@ -120,6 +125,14 @@ public class Experiment extends DmEntity { this.endDate = endDate; } + public String getRootPath() { + return rootPath; + } + + public void setRootPath(String rootPath) { + this.rootPath = rootPath; + } + @XmlTransient public List<UserExperimentRole> getUserExperimentRoleList() { return userExperimentRoleList; @@ -154,6 +167,14 @@ public class Experiment extends DmEntity { this.experimentType = experimentType; } + public Storage getPrimaryStorage() { + return primaryStorage; + } + + public void setPrimaryStorage(Storage primaryStorage) { + this.primaryStorage = primaryStorage; + } + @XmlTransient public List<ExperimentPolicy> getExperimentPolicyList() { return experimentPolicyList; @@ -182,7 +203,7 @@ public class Experiment extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.Experiment[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.Experiment[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java index 48615df6043246f0c4086af4c44813460b7a3190..dfa341f8fc693f42997b4835592fe43fecaef953 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java @@ -109,7 +109,7 @@ public class ExperimentPolicy extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.ExperimentPolicy[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.ExperimentPolicy[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicyPropertyValue.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicyPropertyValue.java index 9c05d032561c01ed553df20ec6659f3c8ffcc900..44a2d8f969304af846290329baf66e7d087c5e08 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicyPropertyValue.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicyPropertyValue.java @@ -20,7 +20,6 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -44,7 +43,6 @@ public class ExperimentPolicyPropertyValue extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) @Column(name = "modified_by") private String modifiedBy; @Basic(optional = false) @@ -52,7 +50,6 @@ public class ExperimentPolicyPropertyValue extends DmEntity { @Column(name = "modified_date") @Temporal(TemporalType.DATE) private Date modifiedDate; - @Size(max = 2147483647) @Column(name = "policy_property_value") private String policyPropertyValue; @JoinColumn(name = "experiment_policy_id", referencedColumnName = "id") @@ -145,7 +142,7 @@ public class ExperimentPolicyPropertyValue extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.ExperimentPolicyPropertyValue[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.ExperimentPolicyPropertyValue[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentRoleType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentRoleType.java index 2bcf520b4f9674dc794b3222353283fa662f297c..a12b9f88187d6b569bfe0e1201a5f7fc849abec5 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentRoleType.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentRoleType.java @@ -17,7 +17,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -42,9 +41,7 @@ public class ExperimentRoleType extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Size(max = 2147483647) private String description; @OneToMany(cascade = CascadeType.ALL, mappedBy = "experimentRoleType") private List<UserExperimentRole> userExperimentRoleList; @@ -114,7 +111,7 @@ public class ExperimentRoleType extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.ExperimentRoleType[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.ExperimentRoleType[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentStation.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentStation.java index e925e7f13e3581f327401c582b02e99ecede4a00..6875f8cd43fcdb872d7077fa3ef19648c9edee72 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentStation.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentStation.java @@ -8,6 +8,7 @@ package gov.anl.aps.dm.portal.model.entities; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -41,11 +42,16 @@ public class ExperimentStation extends DmEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) + @Column(name = "id") private Integer id; @Basic(optional = false) @NotNull + @Column(name = "name") private String name; + @Column(name = "description") private String description; + @Column(name = "default_root_path") + private String defaultRootPath; @JoinTable(name = "allowed_experiment_station_experiment_type", joinColumns = { @JoinColumn(name = "experiment_station_id", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "experiment_type_id", referencedColumnName = "id")}) @@ -93,6 +99,14 @@ public class ExperimentStation extends DmEntity { this.description = description; } + public String getDefaultRootPath() { + return defaultRootPath; + } + + public void setDefaultRootPath(String defaultRootPath) { + this.defaultRootPath = defaultRootPath; + } + @XmlTransient public List<ExperimentType> getExperimentTypeList() { return experimentTypeList; @@ -139,7 +153,8 @@ public class ExperimentStation extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.ExperimentStation[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.ExperimentStation[ id=" + id + " ]"; } + } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java index 589bc72e93c0f9213fa21692d476e18808535f66..74594e5bfa11d8ed7dc7a1bac07aea4de9f380b3 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java @@ -8,6 +8,7 @@ package gov.anl.aps.dm.portal.model.entities; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -38,10 +39,13 @@ public class ExperimentType extends DmEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) + @Column(name = "id") private Integer id; @Basic(optional = false) @NotNull + @Column(name = "name") private String name; + @Column(name = "description") private String description; @ManyToMany(mappedBy = "experimentTypeList") private List<ExperimentStation> experimentStationList; @@ -122,7 +126,8 @@ public class ExperimentType extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.ExperimentType[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.ExperimentType[ id=" + id + " ]"; } + } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyProperty.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyProperty.java index ce8d207ecb51b33f864dba6e4306b271ce32d033..5d1add8b7260cc666bb078a0c32dc6deb1f46992 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyProperty.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyProperty.java @@ -20,7 +20,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -48,20 +47,14 @@ public class PolicyProperty extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Size(max = 2147483647) private String units; - @Size(max = 2147483647) @Column(name = "lower_limit") private String lowerLimit; - @Size(max = 2147483647) @Column(name = "upper_limit") private String upperLimit; - @Size(max = 2147483647) @Column(name = "default_value") private String defaultValue; - @Size(max = 2147483647) private String description; @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyPropertyId") private List<ExperimentPolicyPropertyValue> experimentPolicyPropertyValueList; @@ -187,7 +180,7 @@ public class PolicyProperty extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.PolicyProperty[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.PolicyProperty[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java index 814a87d667d9d7563d897af72d177f83fd3eb111..2d8a70152293929bea85d0bf4a01dc550f3a3c8e 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java @@ -17,7 +17,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -41,9 +40,7 @@ public class PolicyType extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Size(max = 2147483647) private String description; @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyTypeId") private List<PolicyProperty> policyPropertyList; @@ -126,7 +123,7 @@ public class PolicyType extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.PolicyType[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.PolicyType[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java index 86fad96f274dbb85d0be42de8a2df697e9572e07..1c5ffb1b3421fc469d3f596cd85235a6e75a49d2 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java @@ -18,7 +18,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -44,11 +43,8 @@ public class SettingType extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Size(max = 2147483647) private String description; - @Size(max = 2147483647) @Column(name = "default_value") private String defaultValue; @Column(name = "is_user_modifiable") @@ -150,7 +146,7 @@ public class SettingType extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.SettingType[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.SettingType[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Storage.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Storage.java index 71aded635d2b65b2650d004cbdffc4a73260cce5..efda905b0288c33464581c5f3f816d28258d9239 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Storage.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Storage.java @@ -17,7 +17,6 @@ import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -31,7 +30,6 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQuery(name = "Storage.findAll", query = "SELECT s FROM Storage s") , @NamedQuery(name = "Storage.findById", query = "SELECT s FROM Storage s WHERE s.id = :id") , @NamedQuery(name = "Storage.findByName", query = "SELECT s FROM Storage s WHERE s.name = :name") - , @NamedQuery(name = "Storage.findByDefaultScheme", query = "SELECT s FROM Storage s WHERE s.defaultScheme = :defaultScheme") , @NamedQuery(name = "Storage.findByDescription", query = "SELECT s FROM Storage s WHERE s.description = :description")}) public class Storage extends DmEntity { @@ -41,20 +39,15 @@ public class Storage extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 2147483647) - @Column(name = "default_scheme") - private String defaultScheme; - @Size(max = 2147483647) private String description; @OneToMany(cascade = CascadeType.ALL, mappedBy = "storageId") private List<DataFolder> dataFolderList; @OneToMany(cascade = CascadeType.ALL, mappedBy = "storageId") private List<Endpoint> endpointList; - + @OneToMany(mappedBy = "primaryStorage") + private List<Experiment> experimentList; + public Storage() { } @@ -62,12 +55,12 @@ public class Storage extends DmEntity { this.id = id; } - public Storage(Integer id, String name, String defaultScheme) { + public Storage(Integer id, String name) { this.id = id; this.name = name; - this.defaultScheme = defaultScheme; } + @Override public Integer getId() { return id; } @@ -84,14 +77,6 @@ public class Storage extends DmEntity { this.name = name; } - public String getDefaultScheme() { - return defaultScheme; - } - - public void setDefaultScheme(String defaultScheme) { - this.defaultScheme = defaultScheme; - } - public String getDescription() { return description; } @@ -118,6 +103,15 @@ public class Storage extends DmEntity { this.endpointList = endpointList; } + @XmlTransient + public List<Experiment> getExperimentList() { + return experimentList; + } + + public void setExperimentList(List<Experiment> experimentList) { + this.experimentList = experimentList; + } + @Override public int hashCode() { int hash = 0; @@ -132,15 +126,12 @@ public class Storage extends DmEntity { return false; } Storage other = (Storage) object; - if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { - return false; - } - return true; + return !((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))); } @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.Storage[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.Storage[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SystemRoleType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SystemRoleType.java index 6b67085c96f9de12b886f99cb1059a2fe37ffeb0..463f4d86d00743fa85ad5e7938fb0df89db26eab 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SystemRoleType.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SystemRoleType.java @@ -17,7 +17,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @@ -42,9 +41,7 @@ public class SystemRoleType extends DmEntity { private Integer id; @Basic(optional = false) @NotNull - @Size(min = 1, max = 2147483647) private String name; - @Size(max = 2147483647) private String description; @OneToMany(cascade = CascadeType.ALL, mappedBy = "systemRoleType") private List<UserSystemRole> userSystemRoleList; @@ -114,7 +111,7 @@ public class SystemRoleType extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.SystemRoleType[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.SystemRoleType[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java index 97e89509edbcfb12cf9e52ff6f10a13e5d9693f6..2968c150e5774fbb20c2bd8856379d1485d48b7d 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java @@ -105,7 +105,7 @@ public class UserExperimentRole extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserExperimentRole[ userExperimentRolePK=" + userExperimentRolePK + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserExperimentRole[ userExperimentRolePK=" + userExperimentRolePK + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java index a27224697092f747a17da9b54cb722b613be2480..a7ce1e1b01dea5e61e96c857d0d5bb039ef5d8cc 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java @@ -91,7 +91,7 @@ public class UserExperimentRolePK implements Serializable { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserExperimentRolePK[ userId=" + userId + ", experimentId=" + experimentId + ", roleTypeId=" + roleTypeId + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserExperimentRolePK[ userId=" + userId + ", experimentId=" + experimentId + ", roleTypeId=" + roleTypeId + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java index 62760b33c164656d3fef1645156d000aafd34c5f..2584dc692c0abeb11870175c80e7d291bb16b631 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java @@ -248,7 +248,7 @@ public class UserInfo extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserInfo[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserInfo[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java index 1229b7f8aa963a18906b41ab68fb1a279dc9cf02..6f035060940e1ace2ef2b77aba1af016038de000 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java @@ -16,7 +16,6 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** @@ -36,7 +35,6 @@ public class UserSetting extends DmEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) private Integer id; - @Size(max = 2147483647) @Column(name = "setting_value") private String settingValue; @JoinColumn(name = "setting_type_id", referencedColumnName = "id") @@ -107,7 +105,7 @@ public class UserSetting extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserSetting[ id=" + id + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserSetting[ id=" + id + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRole.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRole.java index 88a46ec70944413a3e7e90659e91c4eb7d3c74db..211e3b5286ffff769718cc09e485dc7ecb346dbb 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRole.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRole.java @@ -103,7 +103,7 @@ public class UserSystemRole extends DmEntity { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserSystemRole[ userSystemRolePK=" + userSystemRolePK + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserSystemRole[ userSystemRolePK=" + userSystemRolePK + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRolePK.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRolePK.java index b8b08c19c0463685f9c8d6548fc78b3778f68499..683cb20f4bdf2706ee13f02098fa065140f3fa6e 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRolePK.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSystemRolePK.java @@ -74,7 +74,7 @@ public class UserSystemRolePK implements Serializable { @Override public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UserSystemRolePK[ userId=" + userId + ", roleTypeId=" + roleTypeId + " ]"; + return "gov.anl.aps.dm.portal.model.entities.UserSystemRolePK[ userId=" + userId + ", roleTypeId=" + roleTypeId + " ]"; } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UsersLastUpdate.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UsersLastUpdate.java deleted file mode 100644 index b8b01f87cc736fb282a6a1c4a4e4819605ed2142..0000000000000000000000000000000000000000 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UsersLastUpdate.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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.model.entities; - -import java.util.Date; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotNull; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * - * @author sveseli - */ -@Entity -@Table(name = "users_last_update") -@XmlRootElement -@NamedQueries({ - @NamedQuery(name = "UsersLastUpdate.findAll", query = "SELECT u FROM UsersLastUpdate u") - , @NamedQuery(name = "UsersLastUpdate.findById", query = "SELECT u FROM UsersLastUpdate u WHERE u.id = :id") - , @NamedQuery(name = "UsersLastUpdate.findByLastUpdate", query = "SELECT u FROM UsersLastUpdate u WHERE u.lastUpdate = :lastUpdate")}) -public class UsersLastUpdate extends DmEntity { - - @Id - @Basic(optional = false) - @NotNull - private Integer id; - @Column(name = "last_update") - @Temporal(TemporalType.DATE) - private Date lastUpdate; - - public UsersLastUpdate() { - } - - public UsersLastUpdate(Integer id) { - this.id = id; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Date getLastUpdate() { - return lastUpdate; - } - - public void setLastUpdate(Date lastUpdate) { - this.lastUpdate = lastUpdate; - } - - @Override - public int hashCode() { - int hash = 0; - hash += (id != null ? id.hashCode() : 0); - return hash; - } - - @Override - public boolean equals(Object object) { - // TODO: Warning - this method won't work in the case the id fields are not set - if (!(object instanceof UsersLastUpdate)) { - return false; - } - UsersLastUpdate other = (UsersLastUpdate) object; - if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { - return false; - } - return true; - } - - @Override - public String toString() { - return "gov.anl.aps.dm.portal.model.entities2.UsersLastUpdate[ id=" + id + " ]"; - } - -} diff --git a/src/java/DmWebPortal/web/resources/js/storage/loadFilters.js b/src/java/DmWebPortal/web/resources/js/storage/loadFilters.js new file mode 100644 index 0000000000000000000000000000000000000000..fc1b29014e2cb0b82dde93aa0aca638068e4664e --- /dev/null +++ b/src/java/DmWebPortal/web/resources/js/storage/loadFilters.js @@ -0,0 +1,3 @@ +jQuery(document).ready(function() { + PF('storageListWidget').filter(); +}); diff --git a/src/java/DmWebPortal/web/templates/menubarTemplate.xhtml b/src/java/DmWebPortal/web/templates/menubarTemplate.xhtml index ddb5bce0bb179779ef00329eab0f114e26edea6a..8ed3ab976833d22a985aa7581a04ef13c8f82fdc 100644 --- a/src/java/DmWebPortal/web/templates/menubarTemplate.xhtml +++ b/src/java/DmWebPortal/web/templates/menubarTemplate.xhtml @@ -9,6 +9,7 @@ <p:menuitem value="Experiments" url="/views/experiment/list.xhtml"/> <p:menuitem value="Experiment Stations" url="/views/experimentStation/list.xhtml"/> <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/> + <p:menuitem value="Storage Systems" url="/views/storage/list.xhtml"/> <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/> <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/> <p:menuitem value="Logout" action="#{loginController.logout()}" icon="ui-icon-close"/> diff --git a/src/java/DmWebPortal/web/views/experiment/private/experimentCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/private/experimentCreatePanelGrid.xhtml index e0fd590174a92a00320c955b5ea86f13b96b000c..207ea9de0ef128b61b95a1e6f671b3c656298a55 100644 --- a/src/java/DmWebPortal/web/views/experiment/private/experimentCreatePanelGrid.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/private/experimentCreatePanelGrid.xhtml @@ -13,6 +13,16 @@ <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/> <h:inputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedInputText"/> + <h:outputLabel for="experimentStation" value="Experiment Station" styleClass="entityDataLabel"/> + <p:selectOneMenu id="experimentStation" value="#{experimentObject.experimentStation}" styleClass="entityDataInputText"> + <f:selectItem itemLabel="Select Station" itemValue="" noSelectionOption="true" /> + <f:selectItems value="#{experimentStationController.getAvailableExperimentStations()}" + var="experimentStation" + itemValue="#{experimentStation}" + itemLabel="#{experimentStation.name}" + itemDescription="#{experimentStation.description}" /> + </p:selectOneMenu> + <h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/> <p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataInputText"> <f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" /> @@ -22,20 +32,23 @@ itemLabel="#{experimentType.name}" itemDescription="#{experimentType.description}" /> </p:selectOneMenu> - - <h:outputLabel for="experimentStation" value="Experiment Station" styleClass="entityDataLabel"/> - <p:selectOneMenu id="experimentStation" value="#{experimentObject.experimentStation}" styleClass="entityDataInputText"> - <f:selectItem itemLabel="Select Station" itemValue="" noSelectionOption="true" /> - <f:selectItems value="#{experimentStationController.getAvailableExperimentStations()}" - var="experimentStation" - itemValue="#{experimentStation}" - itemLabel="#{experimentStation.name}" - itemDescription="#{experimentStation.description}" /> + + <h:outputLabel for="primaryStorage" value="Primary Storage" styleClass="entityDataLabel"/> + <p:selectOneMenu id="primaryStorage" value="#{experimentObject.primaryStorage}" styleClass="entityDataInputText"> + <f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" /> + <f:selectItems value="#{storageController.getAvailableItems()}" + var="storage" + itemValue="#{storage}" + itemLabel="#{storage.name}" + itemDescription="#{storage.description}" /> </p:selectOneMenu> <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> <h:inputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataInputText"/> + <h:outputLabel for="rootPath" value="Storage Root Path" styleClass="entityDataLabel"/> + <h:inputText id="rootPath" value="#{experimentObject.rootPath}" title="Storage Root Path" styleClass="entityDataInputText"/> + <h:outputLabel for="startDate" value="Start Date"/> <p:calendar id="startDate" value="#{experimentObject.startDate}" mode="popup" showOn="button" pattern="#{resources.DateTimePattern}" /> diff --git a/src/java/DmWebPortal/web/views/experiment/private/experimentEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/private/experimentEditPanelGrid.xhtml index cfa2fc3d58cff6e60d0c779c62a114bb8978113e..47e1eca0e1dbce44a87dbd00f981af9d0b9ce5c0 100644 --- a/src/java/DmWebPortal/web/views/experiment/private/experimentEditPanelGrid.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/private/experimentEditPanelGrid.xhtml @@ -3,6 +3,7 @@ <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"> <ui:param name="experimentObject" value="#{experimentController.current}"/> @@ -11,16 +12,36 @@ <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/> <h:outputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/> - - <h:outputLabel for="experimentType" value="Type" styleClass="entityDataLabel"/> - <h:outputText id="experimentType" value="#{experimentObject.experimentType.name}" title="Type" styleClass="entityDataText"/> - + <h:outputLabel for="experimentStation" value="Station" styleClass="entityDataLabel"/> <h:outputText id="experimentStation" value="#{experimentObject.experimentStation.name}" title="Station" styleClass="entityDataText"/> + + <h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/> + <p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataInputText"> + <f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" /> + <f:selectItems value="#{experimentTypeController.getAvailableItems()}" + var="experimentType" + itemValue="#{experimentType}" + itemLabel="#{experimentType.name}" + itemDescription="#{experimentType.description}" /> + </p:selectOneMenu> + + <h:outputLabel for="primaryStorage" value="Primary Storage" styleClass="entityDataLabel"/> + <p:selectOneMenu id="primaryStorage" value="#{experimentObject.primaryStorage}" styleClass="entityDataInputText"> + <f:selectItem itemLabel="Select Type" itemValue="" noSelectionOption="true" /> + <f:selectItems value="#{storageController.getAvailableItems()}" + var="storage" + itemValue="#{storage}" + itemLabel="#{storage.name}" + itemDescription="#{storage.description}" /> + </p:selectOneMenu> <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> <h:inputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataInputText"/> - + + <h:outputLabel for="rootPath" value="Storage Root Path" styleClass="entityDataLabel"/> + <h:inputText id="rootPath" value="#{experimentObject.rootPath}" title="Storage Root Path" styleClass="entityDataInputText"/> + <h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/> <p:calendar id="startDate" value="#{experimentObject.startDate}" mode="popup" showOn="button" pattern="#{resources.DateTimePattern}" /> diff --git a/src/java/DmWebPortal/web/views/experiment/private/experimentViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/private/experimentViewPanelGrid.xhtml index bc35404c9f67d0c06aa5e3d23521aed39a98226a..071d68010b08afa9bd9b8e5af73a837664d93d78 100644 --- a/src/java/DmWebPortal/web/views/experiment/private/experimentViewPanelGrid.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/private/experimentViewPanelGrid.xhtml @@ -18,10 +18,16 @@ <h:outputLabel for="experimentStation" value="Station" styleClass="entityDataLabel"/> <h:outputText id="experimentStation" value="#{experimentObject.experimentStation.name}" title="Station" styleClass="entityDataText"/> + + <h:outputLabel for="primaryStorage" value="Primary Storage" styleClass="entityDataLabel"/> + <h:outputText id="primaryStorage" value="#{experimentObject.primaryStorage.name}" title="Primary Storage" styleClass="entityDataText"/> <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> <h:outputText id="description" value="#{experimentObject.description}" title="Description" styleClass="entityDataText"/> - + + <h:outputLabel for="rootPath" value="Storage Root Path" styleClass="entityDataLabel"/> + <h:outputText id="rootPath" value="#{experimentObject.rootPath}" title="Storage Root Path" styleClass="entityDataText"/> + <h:outputLabel for="startDate" value="Start Date" styleClass="entityDataLabel"/> <h:outputText id="startDate" value="#{experimentObject.startDate}" styleClass="entityDataText"> <f:convertDateTime pattern="#{resources.DateTimeZonePattern}" type="both" timeZone="#{resources.Timezone}" /> diff --git a/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeAddDialog.xhtml b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeAddDialog.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..5096ff7b4b803dbac09d51e870113b4ebfb3857c --- /dev/null +++ b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeAddDialog.xhtml @@ -0,0 +1,38 @@ +<?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:ui="http://java.sun.com/jsf/facelets" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:p="http://primefaces.org/ui"> + + <p:dialog id="stationExperimentTypeAddDialog" + widgetVar="stationExperimentTypeAddDialogWidget" + header="Select Experiment Type" + styleClass="dialog"> + <div class="dialog"> + <ui:include src="stationExperimentTypeSelectDataTable.xhtml"/> + <f:facet name="footer" class="dialog"> + <div class="actionButton" align="center"> + <p:commandButton value="Add" alt="Add" + action="#{experimentStationController.addExperimentType()}" + onclick="PF('stationExperimentTypeSelectDataTableWidget').filter()" + oncomplete="PF('stationExperimentTypeAddDialogWidget').hide()" + update="@form" + immediate="true" + icon="ui-icon-arrowreturnthick-1-w" + styleClass="dialog"> + </p:commandButton> + <p:commandButton value="Cancel" alt="Cancel" + onclick="PF('stationExperimentTypeAddDialogWidget').hide()" + update="@form" + immediate="true" + icon="ui-icon-close" + styleClass="dialog"> + </p:commandButton> + </div> + </f:facet> + </div> + </p:dialog> +</ui:composition> + diff --git a/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeListDataTable.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..2de2c8b3ede7024bde636d00bec4860a8e753fc0 --- /dev/null +++ b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeListDataTable.xhtml @@ -0,0 +1,53 @@ +<?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"> + + <div class="actionButton"> + <p:commandButton id="stationExperimentTypeAddButton" + action="#{experimentStationController.prepareAddExperimentType(stationObject)}" + oncomplete="PF('stationExperimentTypeAddDialogWidget').show()" + rendered="#{loginController.admin}" + value="Add" alt="Add station experiment type." icon="ui-icon-plus"> + <p:tooltip for="stationExperimentTypeAddButton" value="Add station experiment type."/> + </p:commandButton> + </div> + + <ui:include src="stationExperimentTypeAddDialog.xhtml"/> + + <ui:param name="breadcrumb" value="#{experimentStationController.currentViewId}"/> + <ui:param name="breadcrumbObjectId" value="#{stationObject.id}"/> + + <p:dataTable id="stationExperimentTypeListDataTable" + var="stationExperimentTypeObject" + value="#{stationObject.experimentTypeList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="#{experimentStationController.displayNumberOfItemsPerPage}" + widgetVar="stationExperimentTypeListWidget" + emptyMessage="No experiment types found."> + + <p:column sortBy="#{stationExperimentTypeObject.name}" headerText="Username" + filterBy="#{stationExperimentTypeObject.name}" filterMatchMode="contains" > + <h:outputLink value="../stationExperimentType/view.xhtml?id=#{stationExperimentTypeObject.id}&breadcrumb=#{breadcrumb}&breadcrumbObjectId=#{breadcrumbObjectId}" + title="Experiment Type: #{stationExperimentTypeObject.name}"> + <h:outputText value="#{stationExperimentTypeObject.name}"/> + </h:outputLink> + </p:column> + + <p:column headerText="Actions" > + <div class="actionLink"> + <p:commandLink action="#{experimentStationController.deleteExperimentType(stationExperimentTypeObject)}" + styleClass="ui-icon ui-icon-trash" title="Delete" + update="stationExperimentTypeListDataTable" + rendered="#{loginController.admin}" + immediate="true"/> + </div> + </p:column> + + </p:dataTable> + +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeSelectDataTable.xhtml b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeSelectDataTable.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..7251b33f2f41955a0df418da665c489db5406b0f --- /dev/null +++ b/src/java/DmWebPortal/web/views/experimentStation/private/stationExperimentTypeSelectDataTable.xhtml @@ -0,0 +1,29 @@ +<?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:ui="http://java.sun.com/jsf/facelets" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> + + <ui:fragment> + <p:dataTable id="stationExperimentTypeSelectDataTable" + widgetVar="stationExperimentTypeSelectDataTableWidget" + var="experimentTypeObject" + value="#{experimentTypeController.selectDataModel}" + rowKey="#{experimentTypeObject.name}" + selectionMode="single" + selection="#{experimentStationController.currentExperimentType}" + paginator="true" + paginatorAlwaysVisible="true" + rows="#{experimentTypeController.selectNumberOfItemsPerPage}" + emptyMessage="No available records found."> + + <p:column sortBy="#{experimentTypeObject.name}" headerText="Name" + filterBy="#{experimentTypeObject.name}"> + <h:outputText value="#{experimentTypeObject.name}"/> + </p:column> + + </p:dataTable> + </ui:fragment> +</ui:composition> + diff --git a/src/java/DmWebPortal/web/views/experimentStation/view.xhtml b/src/java/DmWebPortal/web/views/experimentStation/view.xhtml index f98394ec02df751daec2fb2e962af9b45b42659e..d67b82a82127b27e9cb21454fbee4a782b691064 100644 --- a/src/java/DmWebPortal/web/views/experimentStation/view.xhtml +++ b/src/java/DmWebPortal/web/views/experimentStation/view.xhtml @@ -35,9 +35,9 @@ </div> </p:tab> - <p:tab title="Station Experiments"> + <p:tab title="Experiment Types"> <div class="middleCenterLeftContent"> - <ui:include src="private/stationExperimentListDataTable.xhtml"/> + <ui:include src="private/stationExperimentTypeListDataTable.xhtml"/> </div> </p:tab> @@ -46,6 +46,13 @@ <ui:include src="private/stationManagerListDataTable.xhtml"/> </div> </p:tab> + + <p:tab title="Station Experiments"> + <div class="middleCenterLeftContent"> + <ui:include src="private/stationExperimentListDataTable.xhtml"/> + </div> + </p:tab> + </p:accordionPanel> <div class="actionButton"> diff --git a/src/java/DmWebPortal/web/views/storage/create.xhtml b/src/java/DmWebPortal/web/views/storage/create.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..1298e9c1496c715deec11b42cb22be6b86c67443 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/create.xhtml @@ -0,0 +1,34 @@ +<?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"> + + <title>Storage Edit</title> + + <ui:composition template="../../templates/dmViewTemplate.xhtml"> + <ui:define name="middleCenter"> + <div class="pageTitle"> + <h1>Add Storage</h1> + </div> + + <h:form id="addStorageForm"> + + <ui:include src="private/storageCreatePanelGrid.xhtml"/> + + <p/> + <div class="actionButton"> + <p:commandButton action="#{storageController.create()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/> + <p:commandButton action="#{storageController.prepareList()}" immediate="true" value="Cancel" alt="Cancel" icon="ui-icon-cancel"/> + </div> + </h:form> + <h:outputScript library="js" name="common/forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/> + <h:outputScript library="js" name="common/forwardNotAuthorized.js" rendered="#{!loginController.admin}"/> + + </ui:define> + </ui:composition> +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/edit.xhtml b/src/java/DmWebPortal/web/views/storage/edit.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..2039c34b521d5b9bbd921d4e0ec4d34a5931a824 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/edit.xhtml @@ -0,0 +1,37 @@ +<?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"> + + <title>Storage Edit</title> + + <ui:composition template="../../templates/dmViewTemplate.xhtml"> + <ui:define name="middleCenter"> + <h:form id="editStorageForm"> + + <div class="middleCenterLeftContent"> + <div class="pageTitle"> + <h1>Edit Storage</h1> + </div> + + <ui:include src="private/storageEditPanelGrid.xhtml"/> + <p/> + <div class="actionButton"> + <p:commandButton action="#{storageController.update()}" value="Save" alt="Save" icon="ui-icon-check"/> + <p:commandButton action="#{storageController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> + </div> + </div> + + </h:form> + <h:outputScript library="js" name="common/forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/> + <h:outputScript library="js" name="common/forwardNotAuthorized.js" rendered="#{!loginController.admin}"/> + <h:outputScript library="js" name="common/forwardHome.js" rendered="#{!storageController.entitySelected}"/> + + </ui:define> + </ui:composition> +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/list.xhtml b/src/java/DmWebPortal/web/views/storage/list.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..fc20483e183f65ec8075909967cb8ae9405d144a --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/list.xhtml @@ -0,0 +1,33 @@ +<?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"> + + <title>Storages List</title> + + <ui:composition template="../../templates/dmViewTemplate.xhtml"> + <ui:define name="middleCenter"> + <div class="pageTitle"> + <h1>Storages</h1> + </div> + + <h:form id="viewStorageListForm"> + <ui:param name="entityController" value="#{storageController}"/> + <ui:include src="../common/commonListActionButtons.xhtml"/> + + <h:panelGroup> + <ui:include src="private/storageListDataTable.xhtml"/> + </h:panelGroup> + + <ui:include src="private/storageDestroyDialog.xhtml"/> + + </h:form> + <h:outputScript library="js" name="common/forwardNotLoggedIn.js" rendered="#{!loginController.loggedIn}"/> + <h:outputScript library="js" name="storage/loadFilters.js"/> + + </ui:define> + </ui:composition> +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/storage/private/storageCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/storage/private/storageCreatePanelGrid.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..334e89352aa155adf5d9ebeca0e9e7bc665192f0 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/private/storageCreatePanelGrid.xhtml @@ -0,0 +1,22 @@ +<?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"> + + <ui:param name="storageObject" value="#{storageController.selected}"/> + + <p:panelGrid columns="2" styleClass="createEntityDetails"> + + <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/> + <h:inputText id="name" value="#{storageObject.name}" title="Name" styleClass="entityDataEmphasizedInputText"/> + + <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> + <h:inputText id="description" value="#{storageObject.description}" title="Description" styleClass="entityDataInputText"/> + + </p:panelGrid> + +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/private/storageDestroyDialog.xhtml b/src/java/DmWebPortal/web/views/storage/private/storageDestroyDialog.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..ca31aa4f26e050553bbd63f9369c55dfb053ae9e --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/private/storageDestroyDialog.xhtml @@ -0,0 +1,15 @@ +<?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="storageDestroyDialog" message="Delete storage #{storageController.getCurrentEntityInstanceName()}?" + header="Delete Experiment Type" severity="alert" widgetVar="storageDestroyDialogWidget" + styleClass="dialog"> + <p:commandButton value="Yes" oncomplete="storageDestroyDialogWidget.hide()" action="#{storageController.destroy()}"/> + <p:commandButton value="No" onclick="PF('storageDestroyDialogWidget').hide()" type="button" /> + </p:confirmDialog> +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/private/storageEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/storage/private/storageEditPanelGrid.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..ce277adc06f0e818a2ba272717dd4b2387497cd1 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/private/storageEditPanelGrid.xhtml @@ -0,0 +1,21 @@ +<?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"> + + <ui:param name="storageObject" value="#{storageController.selected}"/> + + <p:panelGrid columns="2" styleClass="editEntityDetails"> + + <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/> + <h:outputText id="name" value="#{storageObject.name}" title="Name" styleClass="entityDataEmphasizedText"/> + + <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> + <h:inputText id="description" value="#{storageObject.description}" title="Description" styleClass="entityDataInputText"/> + + </p:panelGrid> +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/private/storageListDataTable.xhtml b/src/java/DmWebPortal/web/views/storage/private/storageListDataTable.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..c1ffa5f2437be55d3a9078cfc4dbddfd4ad1e133 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/private/storageListDataTable.xhtml @@ -0,0 +1,44 @@ +<?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"> + + <p:dataTable id="storageListDataTable" + var="storageObject" + value="#{storageController.listDataModel}" + filteredValue="#{storageController.filteredObjectList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="#{storageController.displayNumberOfItemsPerPage}" + widgetVar="storageListWidget" + emptyMessage="No storage systems found."> + + <p:column sortBy="#{storageObject.id}" headerText="Id" > + <h:outputText value="#{storageObject.id}"/> + </p:column> + + <p:column sortBy="#{storageObject.name}" headerText="Name" + filterBy="#{storageObject.name}" filterMatchMode="contains" > + <h:outputText value="#{storageObject.name}"/> + </p:column> + + <p:column sortBy="#{storageObject.description}" headerText="Description" + filterBy="#{storageObject.description}" filterMatchMode="contains"> + <h:outputText value="#{storageObject.description}"/> + </p:column> + + <p:column headerText="Actions" > + <div class="actionLink"> + <p:commandLink action="#{storageController.prepareView(storageObject)}" styleClass="ui-icon ui-icon-info" title="View"/> + <p:commandLink action="#{storageController.prepareEdit(storageObject)}" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-pencil" title="Edit"/> + <p:commandLink oncomplete="PF('storageDestroyDialogWidget').show()" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form"> + <f:setPropertyActionListener value="#{storageObject}" target="#{storageController.current}"/> + </p:commandLink> + </div> + </p:column> + </p:dataTable> + +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/storage/private/storageViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/storage/private/storageViewPanelGrid.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..5798915a2454b5c1304ffe5aee27695636698639 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/private/storageViewPanelGrid.xhtml @@ -0,0 +1,22 @@ +<?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"> + + <ui:param name="storageObject" value="#{storageController.selected}"/> + + <p:panelGrid columns="2" styleClass="viewEntityDetails"> + + <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/> + <h:outputText id="name" value="#{storageObject.name}" title="Name" styleClass="entityDataEmphasizedText"/> + + <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/> + <h:outputText id="description" value="#{storageObject.description}" title="Description" styleClass="entityDataText"/> + + </p:panelGrid> + +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/storage/view.xhtml b/src/java/DmWebPortal/web/views/storage/view.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..ae704949c175b699747b42a8efe2bbdcd60136e2 --- /dev/null +++ b/src/java/DmWebPortal/web/views/storage/view.xhtml @@ -0,0 +1,49 @@ +<?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"> + + <f:metadata> + <f:event type="preRenderComponent" listener="#{storageController.processViewRequestParams}"/> + </f:metadata> + + <title>Storage View</title> + + <ui:composition template="../../templates/dmViewTemplate.xhtml"> + <ui:define name="middleCenter"> + <h:form id="viewStorageForm"> + + <div class="middleCenterLeftContent"> + <div class="pageTitle"> + <h1>Storage Details</h1> + </div> + + <ui:include src="private/storageViewPanelGrid.xhtml"/> + + <p/> + <ui:param name="storageObject" value="#{storageController.selected}"/> + <div class="actionButton"> + <p:commandButton action="#{storageController.prepareEdit(storageObject)}" rendered="#{loginController.admin}" value="Edit" alt="Edit" icon="ui-icon-pencil"/> + <p:commandButton onclick="PF('storageDestroyDialogWidget').show();" rendered="#{loginController.admin}" value="Delete" alt="Delete" icon="ui-icon-trash"> + <f:setPropertyActionListener value="#{storageObject}" target="#{storageController.current}"/> + </p:commandButton> + <p:commandButton action="#{storageController.followBreadcrumbOrPrepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> + </div> + + <ui:include src="private/storageDestroyDialog.xhtml"/> + + </div> + + </h:form> + <h:outputScript library="js" name="common/forwardNotLoggedIn.js" rendered="#{!loginController.loggedIn}"/> + <h:outputScript library="js" name="common/forwardHome.js" rendered="#{!storageController.entitySelected}"/> + + </ui:define> + </ui:composition> + +</ui:composition> + + diff --git a/src/python/dm/.svnignore b/src/python/dm/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_bss/.svnignore b/src/python/dm/aps_bss/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_bss/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_bss/api/.svnignore b/src/python/dm/aps_bss/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_bss/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_bss/impl/.svnignore b/src/python/dm/aps_bss/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_bss/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_db_web_service/.svnignore b/src/python/dm/aps_db_web_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_db_web_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_db_web_service/api/.svnignore b/src/python/dm/aps_db_web_service/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_db_web_service/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_db_web_service/service/.svnignore b/src/python/dm/aps_db_web_service/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_db_web_service/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_db_web_service/service/impl/.svnignore b/src/python/dm/aps_db_web_service/service/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_db_web_service/service/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_esaf_db/.svnignore b/src/python/dm/aps_esaf_db/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_esaf_db/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_esaf_db/api/.svnignore b/src/python/dm/aps_esaf_db/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_esaf_db/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_esaf_db/entities/.svnignore b/src/python/dm/aps_esaf_db/entities/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_esaf_db/entities/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/aps_esaf_db/impl/.svnignore b/src/python/dm/aps_esaf_db/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/aps_esaf_db/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/cat_web_service/.svnignore b/src/python/dm/cat_web_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/cat_web_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/cat_web_service/api/.svnignore b/src/python/dm/cat_web_service/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/cat_web_service/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/.svnignore b/src/python/dm/common/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/api/.svnignore b/src/python/dm/common/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/cli/.svnignore b/src/python/dm/common/cli/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/cli/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/client/.svnignore b/src/python/dm/common/client/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/client/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/constants/.svnignore b/src/python/dm/common/constants/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/constants/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/exceptions/.svnignore b/src/python/dm/common/exceptions/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/exceptions/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/mongodb/.svnignore b/src/python/dm/common/mongodb/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/mongodb/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/mongodb/api/.svnignore b/src/python/dm/common/mongodb/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/mongodb/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/mongodb/impl/.svnignore b/src/python/dm/common/mongodb/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/mongodb/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/objects/.svnignore b/src/python/dm/common/objects/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/objects/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/processing/.svnignore b/src/python/dm/common/processing/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/processing/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/processing/plugins/.svnignore b/src/python/dm/common/processing/plugins/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/processing/plugins/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/processing/plugins/cdbProcessingPlugin.py b/src/python/dm/common/processing/plugins/cdbProcessingPlugin.py index b5ac0a151d4c1c96215589799cbcf5a5c93c8210..dc1d76a466716f8bb96c4bf30b6869b2803a03c3 100755 --- a/src/python/dm/common/processing/plugins/cdbProcessingPlugin.py +++ b/src/python/dm/common/processing/plugins/cdbProcessingPlugin.py @@ -110,7 +110,7 @@ class CdbProcessingPlugin(FileProcessor): self.__cdbLock.release() # Add metadata - fileUrl = 'dm://extrepid/%s/%s' % (experimentName, fileName) + fileUrl = 'dm://voyager/%s/%s' % (experimentName, fileName) fileProperty = self.itemRestApi.addPropertyValueToItemWithId(itemId=fileItem['id'],propertyTypeName=self.CDB_FILE_PROPERTY_TYPE, tag=None, value=fileUrl, units=None,description=None,isUserWriteable=None, isDynamic=None) fileMetadata = fileInfo.get('metadata', {}) diff --git a/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py b/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py index 277c797b504a25d6dcbb07c89cc5f61322a2e509..ce42abe32e3bfd6f8b1bd471c7a7c0a6a925ed69 100755 --- a/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py +++ b/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py @@ -63,8 +63,8 @@ class MongoDbFileCatalogPlugin(FileProcessor): self.logger.debug('Before releasing Mongo DB API instance semaphore count is %s ' % (self.mongoApiSemaphore.__dict__.get('_Semaphore__value'))) self.mongoApiSemaphore.release() - def getInitialCollectionSize(self, fileMongoDbApi, experimentName, uploadOrDaqId): - key = '%s-%s' % (experimentName, uploadOrDaqId) + def getInitialCollectionSize(self, fileMongoDbApi, experimentName, uploadId): + key = '%s-%s' % (experimentName, uploadId) self.lock.acquire() try: nFiles = self.initialCollectionSizeMap.get(key) @@ -78,35 +78,35 @@ class MongoDbFileCatalogPlugin(FileProcessor): def processFile(self, fileInfo): experimentFilePath = fileInfo.get('experimentFilePath') experimentName = fileInfo.get('experimentName') - uploadOrDaqId = fileInfo.get('uploadId') or fileInfo.get('daqId') + uploadId = fileInfo.get('uploadId') self.logger.debug('Processing file "%s" for experiment %s' % (experimentFilePath, experimentName)) fileMetadata = self.metadataCollector.processMetadata(fileInfo, self.statUtility) self.logger.debug('File "%s" catalog entry: %s' % (experimentFilePath, str(fileMetadata))) fileInfo['metadata'] = fileMetadata fileMongoDbApi = self.acquireMongoApi() - if self.getInitialCollectionSize(fileMongoDbApi, experimentName, uploadOrDaqId) == 0: - self.logger.debug('Initial collection size is zero, adding file %s' % (experimentFilePath)) + if uploadId and self.getInitialCollectionSize(fileMongoDbApi, experimentName, uploadId) == 0: + self.logger.debug('Initial collection size is zero for upload %s, adding file %s' % (uploadId, experimentFilePath)) fileMongoDbApi.addExperimentFileUnchecked(fileMetadata) else: - self.logger.debug('Initial collection size is not zero, updating file %s' % (experimentFilePath)) + self.logger.debug('Updating file %s' % (experimentFilePath)) fileMongoDbApi.updateOrAddExperimentFile(fileMetadata) self.releaseMongoApi(fileMongoDbApi) def processFile2(self, fileInfo, fileMongoDbApi): experimentFilePath = fileInfo.get('experimentFilePath') experimentName = fileInfo.get('experimentName') - uploadOrDaqId = fileInfo.get('uploadId') or fileInfo.get('daqId') + uploadId = fileInfo.get('uploadId') self.logger.debug('Processing file "%s" for experiment %s' % (experimentFilePath, experimentName)) fileMetadata = self.metadataCollector.processMetadata(fileInfo, self.statUtility) self.logger.debug('File "%s" catalog entry: %s' % (experimentFilePath, str(fileMetadata))) fileInfo['metadata'] = fileMetadata - if self.getInitialCollectionSize(fileMongoDbApi, experimentName, uploadOrDaqId) == 0: - self.logger.debug('Initial collection size is zero, adding file %s' % (experimentFilePath)) + if uploadId and self.getInitialCollectionSize(fileMongoDbApi, experimentName, uploadId) == 0: + self.logger.debug('Initial collection size is zero for upload %s, adding file %s' % (uploadId, experimentFilePath)) fileMongoDbApi.addExperimentFileUnchecked(fileMetadata) else: - self.logger.debug('Initial collection size is not zero, updating file %s' % (experimentFilePath)) + self.logger.debug('Updating file %s' % (experimentFilePath)) fileMongoDbApi.updateOrAddExperimentFile(fileMetadata) def processFilePath(self, fileMongoDbApi, filePath, filePathDict, experiment, dataDirectory, destDirectory, daqInfo, uploadId, processDirectoryInfo): @@ -162,3 +162,8 @@ class MongoDbFileCatalogPlugin(FileProcessor): processingTimer = threading.Timer(self.PROCESSING_TIMER_DELAY_PERIOD, self.processFilePath, args=[fileMongoDbApi, filePath, filePathDict, experiment, dataDirectory, destDirectory, daqInfo, uploadId, processDirectoryInfo]) processingTimer.start() + +####################################################################### +# Testing. +if __name__ == '__main__': + pass diff --git a/src/python/dm/common/service/.svnignore b/src/python/dm/common/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/service/auth/.svnignore b/src/python/dm/common/service/auth/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/service/auth/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/utility/.svnignore b/src/python/dm/common/utility/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/utility/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/common/zeromq/.svnignore b/src/python/dm/common/zeromq/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/common/zeromq/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/daq_web_service/.svnignore b/src/python/dm/daq_web_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/daq_web_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/daq_web_service/api/.svnignore b/src/python/dm/daq_web_service/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/daq_web_service/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/daq_web_service/cli/.svnignore b/src/python/dm/daq_web_service/cli/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/daq_web_service/cli/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/daq_web_service/service/.svnignore b/src/python/dm/daq_web_service/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/daq_web_service/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/daq_web_service/service/impl/.svnignore b/src/python/dm/daq_web_service/service/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/daq_web_service/service/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/.svnignore b/src/python/dm/ds_web_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/api/.svnignore b/src/python/dm/ds_web_service/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/api/experimentDsApi.py b/src/python/dm/ds_web_service/api/experimentDsApi.py index 1308106b752a7d6515b73305d8c091bca0e525ac..106bf8283143fd14819183037f199547aef5f999 100755 --- a/src/python/dm/ds_web_service/api/experimentDsApi.py +++ b/src/python/dm/ds_web_service/api/experimentDsApi.py @@ -376,7 +376,7 @@ class ExperimentDsApi(DsRestApi): response = self.sendSessionRequest(url=url, method='POST', rawOutput=True) fileName = os.path.basename(experimentFilePath) filePath = os.path.join(destDirectory, fileName) - open(filePath, 'w').write(response) + open(filePath, 'w').write(str(response)) return FileMetadata({'experimentName' : experimentName, 'experimentFilePath' : experimentFilePath, 'fileName' : fileName, 'localFilePath' : filePath}) diff --git a/src/python/dm/ds_web_service/cli/.svnignore b/src/python/dm/ds_web_service/cli/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/cli/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/service/.svnignore b/src/python/dm/ds_web_service/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/service/auth/.svnignore b/src/python/dm/ds_web_service/service/auth/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/service/auth/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/ds_web_service/service/impl/.svnignore b/src/python/dm/ds_web_service/service/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/ds_web_service/service/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/img_pva_service/.svnignore b/src/python/dm/img_pva_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/img_pva_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/img_pva_service/cli/.svnignore b/src/python/dm/img_pva_service/cli/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/img_pva_service/cli/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/img_pva_service/service/.svnignore b/src/python/dm/img_pva_service/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/img_pva_service/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/img_pva_service/service/impl/.svnignore b/src/python/dm/img_pva_service/service/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/img_pva_service/service/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/proc_web_service/.svnignore b/src/python/dm/proc_web_service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/proc_web_service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/proc_web_service/api/.svnignore b/src/python/dm/proc_web_service/api/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/proc_web_service/api/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/proc_web_service/api/workflowProcApi.py b/src/python/dm/proc_web_service/api/workflowProcApi.py index 86693717d50888fbb3960c9d7b35a4d772311852..34ca6ff42088e07a5c4b4eef5663ea699db44048 100755 --- a/src/python/dm/proc_web_service/api/workflowProcApi.py +++ b/src/python/dm/proc_web_service/api/workflowProcApi.py @@ -24,7 +24,7 @@ class WorkflowProcApi(ProcRestApi): :param username: DM username (it may be omitted if environment variable DM_LOGIN_FILE points to a file containing the "<username>|<password>" pair) :type username: str - + :param password: DM password (it may be omitted if environment variable DM_LOGIN_FILE points to a file containing the "<username>|<password>" pair) :type password: str @@ -41,7 +41,7 @@ class WorkflowProcApi(ProcRestApi): Add workflow to the DM workflow database. Workflows are defined using dictionaries, and they serve as templates for running processing jobs. - + Workflow keys: - name (required) - owner (required) @@ -52,7 +52,7 @@ class WorkflowProcApi(ProcRestApi): Stage dictionary keys can be anything; they will get sorted, and stages will get executed in the sorted order - + Stage keys: - command (required; may use $variable strings that would get their values at runtime, via <key>:<value> arguments) @@ -64,6 +64,7 @@ class WorkflowProcApi(ProcRestApi): subsequent workflow stages) - repeatPeriod, repeatUntil, maxRepeats (optional; must be used together): + - repeatPeriod: - defines period in seconds after which the stage command will be repeated @@ -78,12 +79,11 @@ class WorkflowProcApi(ProcRestApi): - maxRepeats: - defines maximum number of repeats; if this number is reached, stage will fail - + Reserved keys that cannot be used in a stage definition: - workflow: processing job workflow specification - - Reserved keys that may be used in a stage definition as command input - variables: + + Reserved keys that may be used in a stage definition as command input variables: - id: processing job id - stage: processing job workflow stage - status: processing job status @@ -101,59 +101,53 @@ class WorkflowProcApi(ProcRestApi): - nFailedFiles: number of failed files - nSkippedFiles: number of skipped files - nAbortedFiles: number of aborted files - - nCompletedFiles: number of completed input files - - sum of processed, failed, skipped and aborted files + - nCompletedFiles: number of completed input files (sum of processed, failed, skipped and aborted files) - processedFiles: list of processed files - failedFiles: list of failed files - skippedFiles: list of skipped files - abortedFiles: list of aborted files - Reserved keys designated for specifying processing job input - files that may be used in a stage definition as command input - variables: - - filePath: input file path - - if filePath is specified as one of the stage command - input variables, the workflow stage will iterate over - all job input files + Reserved keys designated for specifying processing job input files that may be used in a stage definition as command input variables: + - filePath: input file path (if filePath is specified as one of the stage command input variables, the workflow stage will iterate over all job input files) - filePathList: list of all input file paths - filePathPattern: glob pattern for input file paths - - fileQueryDict: metadata catalog query dictionary - - not yet implemented (reserved for future use) + - fileQueryDict: metadata catalog query dictionary (not yet implemented) - dataDir: directory containing data files Any keys that are not reserved may be used in a stage definition as command input or output variables. Stage output variables can be used as input for any of the subsequent stages. - + Example workflow definition: - - { - 'name' : 'example-01' - 'owner' : 'anOwner', - 'stages' : { - '01-START' : { - 'command' : '/bin/date +%Y%m%d%H%M%S', - 'outputVariableRegexList' : ['(?P<timeStamp>.*)'] - }, - '02-MKDIR' : { - 'command' : '/bin/mkdir -p /tmp/workflow.$timeStamp' - }, - '03-ECHO' : { - 'command' : '/bin/echo "START JOB ID: $id" > /tmp/workflow.$timeStamp/$id.out' - }, - '04-MD5SUM' : { - 'command' : '/bin/md5sum $filePath | cut -f1 -d" "', - 'outputVariableRegexList' : ['(?P<md5Sum>.*)'] - }, - '05-ECHO' : { - 'command' : 'echo "FILE $filePath MD5 SUM: $md5Sum" >> /tmp/workflow.$timeStamp/$id.out' - }, - '06-DONE' : { - 'command' : '/bin/echo "STOP JOB ID: $id" >> /tmp/workflow.$timeStamp/$id.out' - }, - }, - 'description' : 'Workflow Example 01' - } + + { + 'name' : 'example-01', + 'owner' : 'anOwner', + 'stages' : { + '01-START' : { + 'command' : '/bin/date +%Y%m%d%H%M%S', + 'outputVariableRegexList' : ['(?P<timeStamp>.*)'] + }, + '02-MKDIR' : { + 'command' : '/bin/mkdir -p /tmp/workflow.$timeStamp' + }, + '03-ECHO' : { + 'command' : '/bin/echo "START JOB ID: $id" > /tmp/workflow.$timeStamp/$id.out' + }, + '04-MD5SUM' : { + 'command' : '/bin/md5sum $filePath | cut -f1 -d" "', + 'outputVariableRegexList' : ['(?P<md5Sum>.*)'] + }, + '05-ECHO' : { + 'command' : 'echo "FILE $filePath MD5 SUM: $md5Sum" >> /tmp/workflow.$timeStamp/$id.out' + }, + '06-DONE' : { + 'command' : '/bin/echo "STOP JOB ID: $id" >> /tmp/workflow.$timeStamp/$id.out' + }, + }, + 'description' : 'Workflow Example 01' + } + :param workflow: Workflow description :type workflow: Workflow or dict @@ -430,15 +424,13 @@ class WorkflowProcApi(ProcRestApi): - nFailedFiles: number of failed files - nSkippedFiles: number of skipped files - nAbortedFiles: number of aborted files - - nCompletedFiles: number of completed input files - - sum of processed, failed, skipped and aborted files + - nCompletedFiles: number of completed input files (sum of processed, failed, skipped and aborted files) - processedFiles: list of processed files - failedFiles: list of failed files - skippedFiles: list of skipped files - abortedFiles: list of aborted files - Reserved keys designated for specifying processing job input - files that may be passed as job input at runtime: + Reserved keys designated for specifying processing job input files that may be passed as job input at runtime: - filePath: input file path - if filePath:<aPath> is specified as part of job input, the job input file list will consist of a single file diff --git a/src/python/dm/proc_web_service/service/.svnignore b/src/python/dm/proc_web_service/service/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/proc_web_service/service/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/src/python/dm/proc_web_service/service/impl/.svnignore b/src/python/dm/proc_web_service/service/impl/.svnignore deleted file mode 100644 index a295864e354f25c935ea5453ab7ec97813b11bd2..0000000000000000000000000000000000000000 --- a/src/python/dm/proc_web_service/service/impl/.svnignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -__pycache__ diff --git a/tools/conda/aps-dm-api/meta.yaml.template b/tools/conda/aps-dm-api/meta.yaml.template index 49f0e173745c42149bbd7e80d66a9a58a7d832f5..cb1b951133593a13aa97a3048ccbd96b266e6570 100644 --- a/tools/conda/aps-dm-api/meta.yaml.template +++ b/tools/conda/aps-dm-api/meta.yaml.template @@ -3,7 +3,9 @@ package: version: DM_SOFTWARE_VERSION source: - path: ../../.. +# path: ../../.. + git_rev: DM_SOFTWARE_VERSION + git_url: git@git.aps.anl.gov:DM/dm build: number: 1 diff --git a/tools/conda/aps-dm/meta.yaml.template b/tools/conda/aps-dm/meta.yaml.template index 50626feb318c9d610a5302f22e2b8bd1986bcf24..d60d18260459ac21dfa858908f0be751161df134 100644 --- a/tools/conda/aps-dm/meta.yaml.template +++ b/tools/conda/aps-dm/meta.yaml.template @@ -3,7 +3,9 @@ package: version: DM_SOFTWARE_VERSION source: - path: ../../.. +# path: ../../.. + git_rev: DM_SOFTWARE_VERSION + git_url: git@git.aps.anl.gov:DM/dm build: number: 1 diff --git a/tools/pip/aps-dm-api/.svnignore b/tools/pip/aps-dm-api/.svnignore deleted file mode 100644 index de1d56a210d4d7d2cc179295cb6bd1418abf2eca..0000000000000000000000000000000000000000 --- a/tools/pip/aps-dm-api/.svnignore +++ /dev/null @@ -1,5 +0,0 @@ -LICENSE -build -dist -doc -