Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentException.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentException.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentException.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentException.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+public class ExperimentException extends Exception {
+       
+       private static final long serialVersionUID = 1L;
+       
+       public ExperimentException(String text) {
+               super(text);
+       }
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryManager.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryManager.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryManager.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryManager.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,337 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+import java.io.StringReader;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.TreeMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.transport.event.common.IDuccStandardInfo;
+import org.apache.uima.ducc.transport.event.common.IDuccWork;
+import org.apache.uima.ducc.transport.event.common.IDuccWorkMap;
+import org.apache.uima.ducc.ws.log.WsLog;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParseException;
+import com.google.gson.reflect.TypeToken;
+
+public class ExperimentsRegistryManager {
+
+  // NOTE - this variable used to hold the class name before WsLog was 
simplified
+       private static DuccLogger cName = 
DuccLogger.getLogger(ExperimentsRegistryManager.class);
+       
+       private static Gson gson = new Gson();
+       private static ExperimentsRegistryManager instance = new 
ExperimentsRegistryManager();
+       
+       private int MAX_CACHE_SIZE = 4096;
+       
+       private TreeMap<String,IExperiment> map = new 
TreeMap<String,IExperiment>();
+       
+       private AtomicLong updateCounter = new AtomicLong(0);
+       
+       public static ExperimentsRegistryManager getInstance() {
+               return instance;
+       }
+       
+       public TreeMap<IExperiment,String> getMapByStatus() {
+               TreeMap<IExperiment,String> mapInverse = new 
TreeMap<IExperiment,String>();
+               synchronized(map) {
+                       for(Entry<String, IExperiment> entry : map.entrySet()) {
+                               mapInverse.put(entry.getValue(), 
entry.getKey());
+                       }
+               }
+               return mapInverse;
+       }
+       
+       private TreeMap<Long, String> getMapByDate() {
+               TreeMap<Long, String> mapByDate = new TreeMap<Long, String>();
+               synchronized(map) {
+                       for(Entry<String, IExperiment> entry : map.entrySet()) {
+                               IExperiment experiment = entry.getValue();
+                               Long key = new Long(experiment.getStartTime());
+                               String value = experiment.getId();
+                               mapByDate.put(key, value);
+                       }
+               }
+               return mapByDate;
+       }
+       
+       public IExperiment getById(String id) {
+               IExperiment retVal = null;
+               if(id != null) {
+                       synchronized(map) {
+                               for(Entry<String, IExperiment> entry : 
map.entrySet()) {
+                                       IExperiment experiment = 
entry.getValue();
+                                       if(id.equals(experiment.getId())) {
+                                               retVal = experiment;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               return retVal;
+       }
+       
+       private void replace(String directory, Experiment experiment) {
+               String mName = "replace";
+               String id = map.get(directory).getId();
+               experiment.setId(id);
+               map.put(directory, experiment);
+               WsLog.debug(cName, mName, directory);
+       }
+       
+       private void add(String directory, Experiment experiment) {
+               String mName = "add";
+               map.put(directory, experiment);
+               WsLog.debug(cName, mName, directory);
+       }
+       
+       private void put(String directory, Experiment experiment) {
+               synchronized(map) {
+                       if(map.containsKey(directory)) {
+                               replace(directory, experiment);
+                       }
+                       else {
+                               add(directory, experiment);
+                       }
+               }
+       }
+       
+       private void remove(String directory) {
+               String mName = "remove";
+               synchronized(map) {
+                       map.remove(directory);
+                       
+               }
+               WsLog.debug(cName, mName, directory);
+       }
+       
+       private boolean containsKey(String directory) {
+               synchronized(map) {
+                       return map.containsKey(directory);
+               }
+       }
+       
+       public void initialize(String user, String directory) {
+               String mName = "initialize";
+               if(user == null) {
+                       WsLog.warn(cName, mName, "missing user");
+               }
+               else if(directory == null) {
+                       WsLog.warn(cName, mName, "missing directory");
+               }
+               else {
+                       String parent = 
ExperimentsRegistryUtilities.upOne(directory);
+                       update(user, parent, false);
+               }
+       }
+       
+       private void update(String user, String directory) {
+               String mName = "update";
+               try {
+                       String fileName = 
ExperimentsRegistryUtilities.getStateFilePath(directory);
+                       long date = 
ExperimentsRegistryUtilities.getFileDate(user, fileName);
+                       WsLog.info(cName, mName, "Reading " + fileName + " 
date: " + date);
+                       String contents = 
ExperimentsRegistryUtilities.getFileContents(user, fileName);
+                       if(contents != null) {
+                // Version may precede the initial '[' and may be on a 
separate line
+                           int version = 0;
+                           int offset = contents.indexOf('[');
+                           if (offset > 0) {
+                               String s = contents.substring(0, offset).trim();
+                               try {
+                                   version = Integer.parseInt(s);
+                               } catch (NumberFormatException e) {
+                                   WsLog.warn(cName, mName, "Invalid version 
'" + s + "' in state file : " + fileName);
+                                   return;
+                               }
+                               contents = contents.substring(offset);
+                           }
+                           if (offset < 0) {
+                            WsLog.warn(cName, mName, "Invalid syntax (missing 
'[') in state file : " + fileName);
+                            return;
+                           }
+                               StringReader sr = new StringReader(contents);
+                               Type tasksType = new 
TypeToken<ArrayList<Task>>(){}.getType();
+                               try {
+                                   ArrayList<Task> taskArray = 
gson.fromJson(sr, tasksType);
+                       Experiment experiment = new Experiment(user, directory, 
date, version, taskArray);
+                       put(directory, experiment);
+                } catch (JsonParseException e) {
+                    WsLog.warn(cName, mName,"Ignoring " + fileName + " as has 
Json syntax error " + e.getMessage());
+                }
+                       }
+                       else {
+                               WsLog.trace(cName, mName,"state file missing or 
inaccessible in "+directory);
+                               remove(directory);
+                       }
+               }
+               catch(Exception e) {
+                       WsLog.error(cName, mName, e);
+               }
+       }
+       
+       private void update(String user, String directory, boolean overwrite) {
+               String mName = "update";
+               WsLog.enter(cName, mName);
+               try {
+                       if(overwrite) {
+                               update(user, directory);
+                       }
+                       else {
+                               if(!containsKey(directory)) {
+                                       update(user, directory);
+                               }
+                               else {
+                                       WsLog.trace(cName, mName, "duplicate 
directory: "+directory);
+                               }
+                       }
+                       
+               }
+               catch(Exception e) {
+                       WsLog.error(cName, mName, e);
+               }
+               //WsLog.exit(cName, mName);
+       }
+       
+       private void check() {
+               String mName = "check";
+               try {
+                       ArrayList<IExperiment> list = new 
ArrayList<IExperiment>();
+                       synchronized(map) {
+                               for(Entry<String, IExperiment> entry : 
map.entrySet()) {
+                                       IExperiment experiment = 
entry.getValue();
+                                       if(experiment.isActive()) {
+                                               list.add(experiment);
+                                       }
+                               }
+                       }
+                       for(IExperiment experiment : list) {
+                               String user = experiment.getUser();
+                               String directory = experiment.getDirectory();
+                               WsLog.debug(cName, mName, "user: "+user+" 
"+"dirextory: "+directory);
+                               update(experiment.getUser(), 
experiment.getDirectory(), true);
+                       }
+               }
+               catch(Exception e) {
+                       WsLog.error(cName, mName, e);
+               }
+       }
+       
+       private boolean timeToPrune() {
+               boolean retVal = false;
+               TreeMap<Long, String> mapByDate = getMapByDate();
+               int size = mapByDate.size();
+               if(size > MAX_CACHE_SIZE) {
+                       retVal = true;
+               }
+               if((updateCounter.get() % 3) == 0) {
+                       retVal = true;
+               }
+               return retVal;
+       }
+       
+       private void prune() {
+               String mName = "prune";
+               WsLog.enter(cName, mName);
+               try {
+                       TreeMap<Long, String> mapByDate = getMapByDate();
+                       if(timeToPrune()) {
+                               int cacheCount = 0;
+                               for(Entry<Long, String> entry : 
mapByDate.entrySet()) {
+                                       String key = entry.getValue();
+                                       IExperiment experiment = getById(key);
+                                       if(experiment != null) {
+                                               if(experiment.isActive()) {
+                                                       cacheCount++;
+                                               }
+                                               else {
+                                                       if(cacheCount < 
MAX_CACHE_SIZE) {
+                                                               cacheCount++;
+                                                       }
+                                                       else {
+                                                               String 
directory = experiment.getDirectory();
+                                                               
remove(directory);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               catch(Exception e) {
+                       WsLog.error(cName, mName, e);
+               }
+               //WsLog.exit(cName, mName);
+       }
+       
+       public void update(IDuccWorkMap dwm) {
+               String mName = "update";
+               WsLog.enter(cName, mName);
+               try {
+                       if(dwm == null) {
+                               WsLog.warn(cName, mName, "missing map");
+                       }
+                       else {
+                               updateCounter.incrementAndGet();
+                               Iterator<DuccId> iterator = 
dwm.getJobKeySet().iterator();
+                               while(iterator.hasNext()) {
+                                       DuccId duccId = iterator.next();
+                                       IDuccWork job = 
dwm.findDuccWork(duccId);
+                                       if(job != null) {
+                                               IDuccStandardInfo stdInfo = 
job.getStandardInfo();
+                                               if(stdInfo != null) {
+                                                       String user = 
stdInfo.getUser();
+                                                       String directory = 
stdInfo.getLogDirectory();
+                                                       String parent = 
ExperimentsRegistryUtilities.upOne(directory);
+                                                       update(user, parent, 
true);
+                                               }
+                                       }
+                               }
+
+                               // Also process managed reservations in case 
the experiment has only these.
+                iterator = dwm.getManagedReservationKeySet().iterator();
+                while(iterator.hasNext()) {
+                    DuccId duccId = iterator.next();
+                    IDuccWork job = dwm.findDuccWork(duccId);
+                    if(job != null) {
+                        IDuccStandardInfo stdInfo = job.getStandardInfo();
+                        if(stdInfo != null) {
+                            String user = stdInfo.getUser();
+                            String directory = stdInfo.getLogDirectory();
+                            String parent = 
ExperimentsRegistryUtilities.upOne(directory);
+                            update(user, parent, true);
+                        }
+                    }
+                }
+                       }
+                       check();
+                       prune();
+               }
+               catch(Exception e) {
+                       WsLog.error(cName, mName, e);
+               }
+               //WsLog.exit(cName, mName);
+       }
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryUtilities.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryUtilities.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryUtilities.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryUtilities.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileReader;
+import java.io.StringReader;
+
+import org.apache.uima.ducc.common.utils.AlienFile;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.ws.log.WsLog;
+
+public class ExperimentsRegistryUtilities {
+       
+  // NOTE - this variable used to hold the class name before WsLog was 
simplified
+       private static DuccLogger cName = 
DuccLogger.getLogger(ExperimentsRegistryUtilities.class);
+       
+       private static String stateFileName = "Experiment.state";
+       
+       public static String upOne(String directory) {
+               String retVal = directory;
+               if(directory != null) {
+                 retVal = new File(directory).getParent();
+               }
+               return retVal;
+       }
+       
+       public static String getStateFilePath(String directory) {
+               String retVal = new File(directory, 
stateFileName).getAbsolutePath();
+               return retVal;
+       }
+       
+       private static void closer(Closeable object) {
+               String mName = "closer";
+               try {
+                       object.close();
+               }
+               catch(Exception e) {
+                       WsLog.debug(cName, mName, e);
+               }
+       }
+       
+       public static long getFileDate(IExperiment experiment) {
+               String mName = "getFileDate";
+               WsLog.enter(cName, mName);
+               String user = experiment.getUser();
+               String filename = getStateFilePath(experiment.getDirectory());
+               long retVal = getFileDate(user, filename);
+               return retVal;
+       }
+       
+       public static long getFileDate(String user, String filename) {
+               String mName = "getFileDate";
+               WsLog.enter(cName, mName);
+               long retVal = getDomesticFileDate(user, filename);
+               if(retVal == 0) {
+                       retVal = getAlienFileDate(user, filename);
+               }
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+       
+       private static long getAlienFileDate(String user, String filename) {
+               String mName = "getAlienFileDate";
+               WsLog.enter(cName, mName);
+               long retVal = 0;
+               AlienFile alienFile = new AlienFile(user, filename);
+               // NOTE - should not need the "--" ... or this could be moved 
to AlienFile
+        String[] lines = alienFile.getResult(false, "--", "/bin/ls", "-l", 
"--time-style=+%s", filename );
+        // Should have 1 line with secs-since-epoch in 6th token
+        if (lines.length == 1) {
+            String[] toks = lines[0].split("\\s+");
+            if (toks.length >= 6) {
+                retVal = Long.valueOf(toks[5]) * 1000;
+            }
+        }
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+       
+       private static long getDomesticFileDate(String user, String filename) {
+               String mName = "getDomesticFileDate";
+               WsLog.enter(cName, mName);
+               long retVal =0;
+               try {
+                       File file = new File(filename);
+                       retVal = file.lastModified();
+               }
+               catch(Exception e) {
+                       WsLog.trace(cName, mName, e);
+               }
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+       
+       /*
+        * Returns null if file is missing or can't be read
+        */
+       public static String getFileContents(String user, String filename) {
+               String mName = "getFileContents";
+               WsLog.enter(cName, mName);
+               boolean canRead = ((new File(filename)).canRead());
+               String retVal = canRead ? getDomesticFileContents(user, 
filename) : getAlienFileContents(user, filename);
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+       
+       private static String getAlienFileContents(String user, String 
filename) {
+               String mName = "getAlienFileContents";
+               WsLog.enter(cName, mName);
+               String retVal = null;
+               try {
+                       AlienFile alienFile = new AlienFile(user, filename);
+                       retVal = alienFile.getString();
+               }
+               catch(Throwable t) {
+                       WsLog.trace(cName, mName, t);
+               }
+               
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+       
+       private static String getDomesticFileContents(String user, String 
filename) {
+               String mName = "getDomesticFileContents";
+               WsLog.enter(cName, mName);
+               String retVal = null;
+               FileReader fr = null;
+               BufferedReader br = null;
+               StringReader sr = null;
+               try {
+                       fr = new FileReader(filename);
+                       br = new BufferedReader(fr);
+                       StringBuffer sb = new StringBuffer();
+                       String line = br.readLine();
+                       while(line != null) {
+                               sb.append(line);
+                               line = br.readLine();
+                       }
+                       retVal = sb.toString();
+               }
+               catch(Exception e) {
+                       WsLog.debug(cName, mName, e);
+               }
+               finally {
+                       if(br != null) {
+                               closer(br);
+                       }
+                       if(fr != null) {
+                               closer(fr);
+                       }
+                       if(sr != null) {
+                               closer(sr);
+                       }
+               }
+               WsLog.exit(cName, mName);
+               return retVal;
+       }
+
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/ExperimentsRegistryUtilities.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/IExperiment.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/IExperiment.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/IExperiment.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/IExperiment.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+import java.util.ArrayList;
+
+public interface IExperiment extends Comparable<Object> {
+       public void setId(String value);
+       public String getId();
+       public String getUser();
+       public String getDirectory();
+       public ArrayList<Task> getTasks();
+       public ArrayList<String> getJobIds();
+       public String getStartDate();
+       public long getStartTime();
+       public boolean isActive();
+       public Jed.Status getStatus();
+       public void setFileDate(long value);
+       public long getFileDate();
+    public int getVersion();
+    public boolean isStale();
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/IExperiment.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Jed.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Jed.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Jed.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Jed.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+public class Jed {
+
+       public enum Type {
+
+               DuccJob, Java, File, Exec, Trainer, Sequential, Parallel, 
ParallelData, SetPhase, Other;
+
+               private static String DUCC_JOB = "DUCC_JOB";
+               private static String PARALLEL_DATA = "PARALLEL_DATA";
+               private static String SET_PHASE = "SET_PHASE";
+               
+           public static Type getEnum(String value) {
+               Type retVal = Other;
+               if(value == null) {
+               }
+               else if(DUCC_JOB.equalsIgnoreCase(value)) {
+                   retVal = DuccJob;
+               }
+               else if(PARALLEL_DATA.equalsIgnoreCase(value)) {
+                   retVal = ParallelData;
+               }
+               else if(SET_PHASE.equalsIgnoreCase(value)) {
+                   retVal = SetPhase;
+               }
+               else if(DuccJob.name().equalsIgnoreCase(value)) {
+                   retVal = DuccJob;
+               }
+               else if(Java.name().equalsIgnoreCase(value)) {
+                   retVal = Java;
+               }
+               else if(File.name().equalsIgnoreCase(value)) {
+                   retVal = File;
+               }
+               else if(Exec.name().equalsIgnoreCase(value)) {
+                   retVal = Exec;
+               }
+               else if(Trainer.name().equalsIgnoreCase(value)) {
+                   retVal =  Trainer;
+               }
+               else if(Sequential.name().equalsIgnoreCase(value)) {
+                   retVal = Sequential;
+               }
+               else if(ParallelData.name().equalsIgnoreCase(value)) {
+                   retVal = ParallelData;
+               }
+               else if(Parallel.name().equalsIgnoreCase(value)) {
+                   retVal = Parallel;
+               }
+               else if(SetPhase.name().equalsIgnoreCase(value)) {
+                   retVal = SetPhase;
+               }
+               return retVal;
+           }
+           
+           public static boolean isLeaf(Type value) {
+               boolean retVal = true;
+               if(value != null) {
+                       switch(value) {
+                       case Parallel:
+                       case ParallelData:
+                       case Sequential:
+                               retVal = false;
+                               break;
+                       default:
+                               break;
+                       }
+               }
+               return retVal;
+           }
+           
+           public static boolean isLeaf(String value){
+               boolean retVal = isLeaf(getEnum(value));
+               return retVal;
+           }
+       }
+       
+       public enum Status {
+
+               Running, Completed, Done, Canceled, Failed, DependencyFailed, 
Ignored, Unknown, Other;
+
+               private static String Dependency_Failed = "Dependency-Failed";
+               private static String Cancelled = "Cancelled";
+               
+           public static Status getEnum(String value) {
+               Status retVal = Other;
+               if(value == null) {
+               }
+               else if(Cancelled.equalsIgnoreCase(value)) {
+                   retVal = Canceled;
+               }
+               else if(Dependency_Failed.equalsIgnoreCase(value)) {
+                   retVal = DependencyFailed;
+               }
+               else if(Running.name().equalsIgnoreCase(value)) {
+                   retVal = Running;
+               }
+               else if(Completed.name().equalsIgnoreCase(value)) {
+                   retVal = Completed;
+               }
+               else if(Done.name().equalsIgnoreCase(value)) {
+                   retVal = Done;
+               }
+               else if(Canceled.name().equalsIgnoreCase(value)) {
+                   retVal = Canceled;
+               }
+               else if(Failed.name().equalsIgnoreCase(value)) {
+                   retVal = Failed;
+               }
+               else if(DependencyFailed.name().equalsIgnoreCase(value)) {
+                   retVal = DependencyFailed;
+               }
+               else if(Ignored.name().equalsIgnoreCase(value)) {
+                   retVal = Ignored;
+               }
+               else if(Unknown.name().equalsIgnoreCase(value)) {
+                   retVal = Unknown;
+               }
+               return retVal;
+           }
+       }
+
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Jed.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Task.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Task.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Task.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Task.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+/*
+ * This represents the "Expose"d fields written by JED in the Experiment.state 
file
+ * See 
com.ibm.bluej.system.driver/src/com/ibm/bluej/system/driver/TaskState.java 
+ */
+public class Task {
+         public int taskId = 0;
+    public int parentId = 0;
+    public String name = null;
+    public String type = null;
+    public String status = null;
+    public String startTime = null;
+    public long runTime = 0;
+    public int[] subTasks = new int[0];
+    public long[] duccId = new long[0];
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/Task.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/TaskArray.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/TaskArray.java?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/TaskArray.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/TaskArray.java
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.xd;
+
+import java.util.ArrayList;
+
+public class TaskArray {
+       public ArrayList<Task> tasks = new ArrayList<Task>();
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/xd/TaskArray.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiment-details.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c1-refresh-experiment-details.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiment-details.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiment-details.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,44 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<table>
+<tr>
+<td>
+<span id="refreshbutton">
+<input type="image" onclick="ducc_refresh('experiment-details');" 
title="Refresh" alt="Refresh" src="opensources/images/refresh.png">
+</span>
+<span id="loading" style="display:none;">
+<img title="loading" src="opensources/images/indicator.gif" style="border:1px 
solid #000000" alt="Loading...">
+</span>
+<td>
+<table>
+<tr>
+<td align="left">
+<form name="duccform" style="margin-bottom:0;">
+<fieldset>
+<legend>Refresh</legend>
+<input type="radio" name="refresh" value="manual"            
onclick="ducc_put_cookie('ducc:refreshmode','manual'   )" /> Manual
+<br>
+<input type="radio" name="refresh" value="automatic" checked 
onclick="ducc_put_cookie('ducc:refreshmode','automatic')" /> Automatic
+</fieldset>
+</form>
+</table>
+</tr>
+</table>
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiment-details.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiments.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c1-refresh-experiments.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiments.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiments.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,44 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<table>
+<tr>
+<td>
+<span id="refreshbutton">
+<input type="image" onclick="ducc_refresh('experiments');" title="Refresh" 
alt="Refresh" src="opensources/images/refresh.png">
+</span>
+<span id="loading" style="display:none;">
+<img title="loading" src="opensources/images/indicator.gif" style="border:1px 
solid #000000" alt="Loading...">
+</span>
+<td>
+<table>
+<tr>
+<td align="left">
+<form name="duccform" style="margin-bottom:0;">
+<fieldset>
+<legend>Refresh</legend>
+<input type="radio" name="refresh" value="manual"            
onclick="ducc_put_cookie('ducc:refreshmode','manual'   )" /> Manual
+<br>
+<input type="radio" name="refresh" value="automatic" checked 
onclick="ducc_put_cookie('ducc:refreshmode','automatic')" /> Automatic
+</fieldset>
+</form>
+</table>
+</tr>
+</table>
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c1-refresh-experiments.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiment-details.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c2-status-experiment-details.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiment-details.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiment-details.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,33 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<b><big><span class="idtitle" id="identity"></span></big></b>
+<form name="form_selectors" style="margin-bottom:0;">
+<table>
+<tr>
+<td valign="top" align="right" title="The time of last Orchestrator 
publication">Updated:&nbsp
+<td valign="top"><span class="timestamptitle" id="timestamp_area"></span>
+</tr>
+<tr>
+<td valign="top" align="right" title="The percentage of shares 
inuse">Utilization:&nbsp
+<td valign="top"><span class="utilizationtitle" id="utilization_area">?</span>
+</tr>
+</table>
+</form>
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiment-details.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiments.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c2-status-experiments.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiments.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiments.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,39 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<b><big><span class="idtitle" id="identity"></span></big></b>
+<form name="form_selectors" style="margin-bottom:0;">
+<table>
+<tr>
+<td valign="top" align="right" title="The time of last Orchestrator 
publication">Updated:&nbsp
+<td valign="top"><span class="timestamptitle" id="timestamp_area"></span>
+</tr>
+<tr>
+<td valign="top" align="right" title="The percentage of shares 
inuse">Utilization:&nbsp
+<td valign="top"><span class="utilizationtitle" id="utilization_area">?</span>
+</tr>
+<tr>
+<%@ include file="$users.jsp" %>
+</tr>
+<tr>
+<%@ include file="$max-records.jsp" %>
+</tr>
+</table>
+</form>
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c2-status-experiments.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiment-details.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c3-image-experiment-details.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiment-details.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiment-details.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,23 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<b><big><span class="subtitle">Experiment Details</span></big></b>
+<br>
+<img src="opensources/images/120px-Brno-Stary_Liskovec_vlajka.svg.png" 
height="64" style="border:3px solid #ffff7a" alt="logo">
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiment-details.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiments.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/%24banner/c3-image-experiments.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiments.jsp
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiments.jsp
 Thu Aug 15 14:44:35 2019
@@ -0,0 +1,23 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div>
+<b><big><span class="subtitle">Experiments</span></big></b>
+<br>
+<img src="opensources/images/120px-Arkadenbrucke.png" height="64" 
style="border:3px solid #ffff7a" alt="logo">
+</div> 
\ No newline at end of file

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/$banner/c3-image-experiments.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.html
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.html?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.html 
(added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.html 
Thu Aug 15 14:44:35 2019
@@ -0,0 +1,29 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html>
+<head>
+<script language="javascript">
+<!--
+location.replace("experiment.details.jsp"+location.search)
+//-->
+</script>
+</head>
+<body>
+</body>
+</html>

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.jsp?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.jsp 
(added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.jsp 
Thu Aug 15 14:44:35 2019
@@ -0,0 +1,162 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<%@ page language="java" %>
+<html>
+<head>
+  <link rel="shortcut icon" href="uima.ico" />
+  <title>ducc-mon</title>
+  <meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
+  <%@ include file="$imports.jsp" %>
+<%
+if (table_style.equals("scroll")) {
+%>  
+  <script type="text/javascript" charset="utf-8">
+       var oTable;
+       $(document).ready(function() {
+               oTable = $('#experiment-details-table').dataTable( {
+                       "bProcessing": true,
+                       "bPaginate": false,
+                       "bFilter": true,
+                       "sScrollX": "100%",
+                       "sScrollY": "600px",
+                       "bInfo": false,
+                       "sAjaxSource": 
"ducc-servlet/json-format-aaData-experiment-details",
+                       "aaSorting": [],
+                       "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 
] } ],
+                       "fnRowCallback"  : function(nRow,aData,iDisplayIndex) {
+                                       return nRow;
+                       },
+               } );
+       } );
+  </script>
+<%
+}
+%>     
+</head>
+<body onload="ducc_init('experiment-details');" onResize="ducc_resize();">
+
+<!-- ####################### common ######################## -->
+<div class="flex-page">
+<!-- *********************** table ************************* -->
+<table class="flex-heading">
+<!-- *********************** row *************************** -->
+<tr class="heading">
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c0-menu.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<%@ include file="$banner/$runmode.jsp" %>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c1-refresh-experiment-details.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c2-status-experiment-details.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c3-image-experiment-details.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c4-ducc-mon.jsp" %>
+</td>
+</table>
+<!-- *********************** /table ************************ -->
+<!-- ####################### /common ####################### -->
+<div id=identify_experiment_details_area>
+</div>
+<!-- @@@@@@@@@@@@@@@@@@@@@@@ unique @@@@@@@@@@@@@@@@@@@@@@@@ -->
+<%
+if (table_style.equals("scroll")) {
+%>
+       <div id=loading_experiment_details_area>
+       </div>
+       <table id="experiment-details-table" width="100%">
+       <caption title="Hint: use Preferences -> Table Style to alter 
format"><b>Experiment Details</b><br><i><small>click column heading to 
sort</small></i></caption>
+       <thead>
+       <tr class="ducc-header">
+       <th title="The id for this experiment subtask" 
class="sorttable_numeric">Id</th>
+       <th title="The name for this experiment subtask">Name</th>
+       <th title="The parent id for this experiment subtask" 
class="sorttable_numeric">Parent</th>
+       <th title="The state of this experiment subtask">State</th>
+       <th title="The type for this experiment subtask">Type</th>
+       <th title="The start time of this experiment subtask">Step<br>Start</th>
+       <th title="The duration time of this experiment 
subtask">Step<br>Duration</th>
+       <th title="The DUCC Id(s) for this experiment subtask, if any">DUCC 
Id</th>
+       <th title="The duration time of this DUCC subtask">DUCC<br>Duration</th>
+       <th title="The total number of work items for this job">Total</th>
+       <th title="The number of work items that completed 
successfully">Done</th>
+       <th title="The number of work items that failed to complete 
successfully">Error</th>
+       <th title="The number of work items currently dispatched 
(queued+operating)">Dis-<br>patch</th>
+       <th title="The number of work items that were retried, excluding 
preemptions">Retry</th>
+       <th title="The number of work items that were 
preempted">Pre-<br>empt</th>
+       </tr>
+       </thead>
+       <tbody id="experiment_details_area">
+       </tbody>
+       </table>
+<%
+}
+%>     
+<%
+if (table_style.equals("classic")) {
+%>
+       <div id=loading_experiment_details_area>
+       </div>
+       <table width="100%">
+       <caption title="Hint: use Preferences -> Table Style to alter 
format"><b>Experiment Details</b><br><i><small>click column heading to 
sort</small></i></caption>
+       <tr>
+    <td>
+      <table class="sortable">
+               <thead>
+               <tr class="ducc-head">
+               <th title="The id for this experiment subtask" 
class="sorttable_numeric">Id</th>
+        <th title="The name for this experiment subtask">Name</th>
+        <th title="The parent id for this experiment subtask" 
class="sorttable_numeric">Parent</th>
+        <th title="The state of this experiment subtask">State</th>
+        <th title="The type for this experiment subtask">Type</th>
+        <th title="The start time of this experiment 
subtask">Step<br>Start</th>
+        <th class="sorttable_numeric" title="The duration time of this 
experiment subtask">Step<br>Duration</th>
+               <th title="The DUCC Id(s) for this experiment subtask, if 
any">DUCC Id</th>
+                <th class="sorttable_numeric" title="The duration time of this 
DUCC subtask">DUCC<br>Duration</th>
+               <th title="The total number of work items for this 
job">Total</th>
+               <th title="The number of work items that completed 
successfully">Done</th>
+               <th title="The number of work items that failed to complete 
successfully">Error</th>
+               <th title="The number of work items currently dispatched 
(queued+operating)">Dis-<br>patch</th>
+               <th title="The number of work items that were retried, 
excluding preemptions">Retry</th>
+               <th title="The number of work items that were 
preempted">Pre-<br>empt</th>
+               </tr>
+               </thead>
+               <tbody id="experiment_details_area">
+               </tbody>
+         </table>
+       </table>
+<%
+}
+%>         
+<!-- @@@@@@@@@@@@@@@@@@@@@@@ /unique @@@@@@@@@@@@@@@@@@@@@@@@ -->
+<!-- ####################### common ######################### -->
+</div>
+               
+<script src="opensources/navigation/menu.js"></script>
+</body>
+</html>

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiment.details.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.html
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.html?rev=1865229&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.html 
(added)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.html 
Thu Aug 15 14:44:35 2019
@@ -0,0 +1,29 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html>
+<head>
+<script language="javascript">
+<!--
+location.replace("experiments.jsp"+location.search)
+//-->
+</script>
+</head>
+<body>
+</body>
+</html>

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.jsp?rev=1865229&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.jsp 
(added)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.jsp Thu 
Aug 15 14:44:35 2019
@@ -0,0 +1,141 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<%@ page language="java" %>
+<html>
+<head>
+  <link rel="shortcut icon" href="uima.ico" />
+  <title>ducc-mon</title>
+  <meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
+  <%@ include file="$imports.jsp" %>
+  <script src="js/ducc.experiments.js"></script>
+<%
+if (table_style.equals("scroll")) {
+%>  
+  <script type="text/javascript" charset="utf-8">
+       var oTable;
+       $(document).ready(function() {
+               oTable = $('#experiments-table').dataTable( {
+                       "bProcessing": true,
+                       "bPaginate": false,
+                       "bFilter": true,
+                       "sScrollX": "100%",
+                       "sScrollY": "600px",
+                       "bInfo": false,
+                       "sAjaxSource": 
"ducc-servlet/json-format-aaData-experiments",
+                       "aaSorting": [],
+                       "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 
] } ],
+                       "fnRowCallback"  : function(nRow,aData,iDisplayIndex) {
+                                       return nRow;
+                       },
+               } );
+       } );
+  </script>
+<%
+}
+%>     
+</head>
+<body onload="ducc_init('experiments');" onResize="ducc_resize();">
+
+<!-- ####################### common ######################## -->
+<div class="flex-page">
+<!-- *********************** table ************************* -->
+<table class="flex-heading">
+<!-- *********************** row *************************** -->
+<tr class="heading">
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c0-menu.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<%@ include file="$banner/$runmode.jsp" %>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c1-refresh-experiments.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c2-status-experiments.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c3-image-experiments.jsp" %>
+</td>
+<!-- *********************** column ************************ -->
+<td valign="middle" align="center">
+<%@ include file="$banner/c4-ducc-mon.jsp" %>
+</td>
+</table>
+<!-- *********************** /table ************************ -->
+<!-- ####################### /common ####################### -->
+<!-- @@@@@@@@@@@@@@@@@@@@@@@ unique @@@@@@@@@@@@@@@@@@@@@@@@ -->
+<%
+if (table_style.equals("scroll")) {
+%>
+       <table id="experiments-table" width="100%">
+       <caption title="Hint: use Preferences -> Table Style to alter 
format"><b>Experiments List</b><br><i><small>click column heading to 
sort</small></i></caption>
+       <thead>
+       <tr class="ducc-header">
+       <th class="ducc-col-terminate"></th>
+       <th title="The time this experiment was first launched">Start</th>
+       <th title="The duration time of this experiment">Duration</th>
+       <th title="The directory owner for this experiment">User</th>
+       <th title="The number of tasks for this experiment">Tasks</th>
+       <th title="The state of this experiment">State</th>
+       <th title="The directory for this experiment">Directory</th>
+       </tr>
+       </thead>
+       <tbody id="experiments_list_area">
+       </tbody>
+       </table>
+<%
+}
+%>     
+<%
+if (table_style.equals("classic")) {
+%>
+       <table width="100%">
+       <caption title="Hint: use Preferences -> Table Style to alter 
format"><b>Experiments List</b><br><i><small>click column heading to 
sort</small></i></caption>
+       <tr>
+    <td>
+      <table class="sortable">
+               <thead>
+               <tr class="ducc-head">
+               <th class="ducc-col-terminate"></th>
+               <th title="The time this experiment was first 
launched">Start</th>
+               <th title="The duration time of this experiment">Duration</th>
+               <th title="The directory owner for this experiment">User</th>
+               <th title="The number of tasks for this experiment">Tasks</th>
+               <th title="The state of this experiment">State</th>
+               <th title="The directory for this experiment">Directory</th>
+               </tr>
+               </thead>
+               <tbody id="experiments_list_area">
+               </tbody>
+         </table>
+       </table>
+<%
+}
+%>         
+<!-- @@@@@@@@@@@@@@@@@@@@@@@ /unique @@@@@@@@@@@@@@@@@@@@@@@@ -->
+<!-- ####################### common ######################### -->
+</div>
+               
+<script src="opensources/navigation/menu.js"></script>
+</body>
+</html>

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/experiments.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.experiments.js
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.experiments.js?rev=1865229&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.experiments.js 
(added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.experiments.js 
Thu Aug 15 14:44:35 2019
@@ -0,0 +1,35 @@
+
+function ducc_terminate_experiment(id)
+{      
+       try {
+               $.jGrowl(" Pending termination...");
+               $.ajax(
+               {
+                       type: 'POST',
+                       url : 
"/ducc-servlet/experiment-cancel-request"+"?id="+id,
+                       success : function (data) 
+                       {
+                       $.jGrowl(data, { life: 6000 });
+                       setTimeout(function(){window.close();}, 5000);
+                       }
+               });
+               setTimeout(function(){window.close();}, 5000);
+       }
+       catch(err) {
+               ducc_error("ducc_terminate_experiment",err);
+       }       
+       return false;
+}
+
+function ducc_confirm_terminate_experiment(id,directory)
+{
+       try {
+               var result=confirm("Terminate experiment "+directory+"?");
+               if (result==true) {
+                       ducc_terminate_experiment(id);
+               }
+       }
+       catch(err) {
+               ducc_error("ducc_confirm_terminate_experiment",err);
+       }
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.experiments.js
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.local.js
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.local.js?rev=1865229&r1=1865228&r2=1865229&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.local.js 
(original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.local.js 
Thu Aug 15 14:44:35 2019
@@ -1,28 +1,298 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-/*!
- * ducc.local.js
- */
+
+function ducc_load_experiments_head()
+{
+       ducc_experiments_max_records();
+       ducc_experiments_users();
+}
+
+var ms_load_experiments_data = +new Date() - ms_reload_min;
+
+function ducc_load_experiments_data()
+{
+       var ms_now = +new Date();
+       if(ms_now < ms_load_experiments_data + ms_reload_min) {
+               return;
+       }
+       ms_load_experiments_data = ms_now;
+       var table_style = ducc_preferences_get("table_style");
+       if(table_style == "scroll") {
+               ducc_load_scroll_experiments_data()
+       }
+       else {
+               ducc_load_classic_experiments_data()
+       }
+}
+
+function ducc_load_classic_experiments_data()
+{
+       try {
+               $.ajax(
+               {
+                       url : "/ducc-servlet/experiments-data",
+                       success : function (data) 
+                       {
+                               $("#experiments_list_area").html(data);
+                               ducc_timestamp();
+                               ducc_authentication();
+                               ducc_utilization();
+                               ducc_cluetips();
+                       }
+               });
+       }
+       catch(err) {
+               ducc_error("ducc_load_classic_experiments_data",err);
+       }       
+}
+
+function ducc_load_scroll_experiments_data()
+{
+       try {
+               
oTable.fnReloadAjax("/ducc-servlet/json-format-aaData-experiments",ducc_load_scroll_experiments_callback);
+       }
+       catch(err) {
+               ducc_error("ducc_load_scroll_experiments_data",err);
+       }       
+}
+
+function ducc_load_scroll_experiments_callback() 
+{
+       try {
+               ducc_timestamp();
+               ducc_authentication();
+               ducc_utilization();
+               ducc_cluetips();
+               oTable.fnAdjustColumnSizing();
+       }
+       catch(err) {
+               ducc_error("ducc_load_scroll_experiments_callback",err);
+       }       
+}
+
+function ducc_init_experiments_data()
+{
+       try {
+               data = "<img src=\"opensources/images/indicator.gif\" 
alt=\"waiting...\">"
+               $("#experiments_list_area").html(data);
+               data = "...?"
+               $("#timestamp_area").html(data);
+               data = "...?"
+               $("#authentication_area").html(data);
+       }
+       catch(err) {
+               ducc_error("ducc_init_experiments_data",err);
+       }       
+}
+
+function ducc_experiments_max_records() 
+{
+       try {
+               var d_value = "16";
+               var x_value = "1";
+               var y_value = "4096";
+               var experimentsmax = ducc_appl("experimentsmax");
+               //
+               var c_value = ducc_get_cookie(experimentsmax);
+               var r_value = document.form_selectors.maxrecs_input.value;
+               if(c_value == null) {
+                       c_value = d_value;
+                       ducc_put_cookie(experimentsmax,c_value);
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       return;
+               }
+               if(r_value == "default") {
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       //$.jGrowl(" max records: "+c_value);
+                       return;
+               }
+               //
+               n_value = 1*r_value;
+               if(isNaN(n_value)) {
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       $.jGrowl(" max records, invalid: "+r_value);
+                       return;
+               }
+               r_value = 1*r_value;
+               x_value = 1*x_value;
+               y_value = 1*y_value;
+               if(r_value < x_value) {
+                       $.jGrowl(" max records, too small: "+r_value+" < 
"+x_value);
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       return;
+               }
+               if(r_value > y_value) {
+                       $.jGrowl(" max records, too large: "+r_value+" > 
"+y_value);
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       return;
+               }
+               //
+               if(c_value != r_value) {
+                       c_value = r_value;
+                       ducc_put_cookie(experimentsmax,c_value);
+                       document.form_selectors.maxrecs_input.value = c_value;
+                       $.jGrowl(" max records: "+c_value);
+                       return;
+               }
+       }
+       catch(err) {
+               throw err;
+               //ducc_error("ducc_experiments_max_records",err);
+       }               
+}
+
+function ducc_experiments_users() 
+{
+       try {
+               var experimentsusers = ducc_appl("experimentsusers");
+               var d_value = "";
+               var c_value = ducc_get_cookie(experimentsusers);
+               var r_value = document.form_selectors.users_input.value;
+               if(c_value == null) {
+                       c_value = d_value;
+                       ducc_put_cookie(experimentsusers,c_value);
+                       document.form_selectors.users_input.value = c_value;
+                       return;
+               }
+               if(r_value == "default") {
+                       document.form_selectors.users_input.value = c_value;
+                       return;
+               }
+               if(c_value != r_value) {
+                       c_value = r_value;
+                       ducc_put_cookie(experimentsusers,c_value);
+                       document.form_selectors.users_input.value = c_value;
+                       $.jGrowl(" users: "+c_value);
+                       return;
+               }
+               return;
+       }
+       catch(err) {
+               throw err;
+               //ducc_error("ducc_experiments_users",err);
+       }       
+}
+
+var ms_load_experiment_details_data = +new Date() - ms_reload_min;
+
+function ducc_load_experiment_details_data()
+{
+       var ms_now = +new Date();
+       if(ms_now < ms_load_experiment_details_data + ms_reload_min) {
+               return;
+       }
+       ms_load_experiment_details_data = ms_now;
+       try {
+               data = "<img src=\"opensources/images/indicator.gif\" 
alt=\"waiting...\">";
+               $("#loading_experiment_details_area").html(data);
+               ducc_load_experiment_details_jobs_data();
+               server_url= 
"/ducc-servlet/experiment-details-data"+location.search;
+               $.ajax(
+               {
+                       url : server_url,
+                       success : function (data) 
+                       {
+                               $("#experiment_details_area").html(data);
+                               ducc_cluetips();
+                               hide_show();
+                               data = "";
+                               
$("#loading_experiment_details_area").html(data);
+                       ducc_timestamp();
+                               ducc_authentication();
+                               ducc_utilization();
+                       }
+               });
+       }
+       catch(err) {
+               data = "";
+               $("#loading_experiment_details_area").html(data);
+               ducc_error("ducc_load_experiment_details_data",err);
+       }
+}
+
+function ducc_load_experiment_details_jobs_data()
+{
+       try {
+               server_url= 
"/ducc-servlet/experiment-details-jobs-data"+location.search;
+               $.ajax(
+               {
+                       url : server_url,
+                       success : function (data) 
+                       {
+                               $("#jobs_list_area").html(data);
+                       }
+               });
+       }
+       catch(err) {
+               ducc_error("ducc_load_experiments_jobs_data",err);
+       }       
+}
+
+function ducc_init_experiment_details_data()
+{
+       try {
+               data = "<img src=\"opensources/images/indicator.gif\" 
alt=\"waiting...\">"
+               $("#experiment_details_area").html(data);
+               data = "...?"
+               $("#jobs_list_area").html(data);
+               data = "...?"
+               $("#timestamp_area").html(data);
+               data = "...?"
+               $("#authentication_area").html(data);
+       }
+       catch(err) {
+               ducc_error("ducc_init_experiment_details_data",err);
+       }
+}
+
+function ducc_init_identify_experiment_details()
+{
+       try {
+               data = "<img src=\"opensources/images/indicator.gif\" 
alt=\"waiting...\">"
+               $("#identify_experiment_details_area").html(data);
+       }
+       catch(err) {
+               ducc_error("ducc_init_identify_experiment_details",err);
+       }
+}
+
+function ducc_load_identify_experiment_details()
+{
+       try {
+               server_url= 
"/ducc-servlet/experiment-details-directory"+location.search;
+               $.ajax(
+               {
+                       url : server_url,
+                       success : function (data) 
+                       {
+                               
$("#identify_experiment_details_area").html(data);
+                               hide_show();
+                       }
+               });
+       }
+       catch(err) {
+               ducc_error("ducc_load_identify_experiment_details",err);
+       }       
+}
+
 function ducc_init_local(type)
 {
        try {
-               //local mods here
+               if(type == "experiments") {
+                       $(document).keypress(function(e) {
+                       if(e.which == 13) {
+                               ducc_load_experiments_head();
+                               ducc_load_experiments_data();
+                       }
+                       });
+                       ducc_init_experiments_data();
+                       ducc_load_experiments_head();
+                       ducc_load_experiments_data();
+               }
+               if(type == "experiment-details") {
+                       ducc_init_identify_experiment_details();
+                       ducc_init_experiment_details_data();
+                       ducc_load_identify_experiment_details();
+                       ducc_load_experiment_details_data();
+               }
        }
        catch(err) {
                ducc_error("ducc_init_local",err);
@@ -32,7 +302,19 @@ function ducc_init_local(type)
 function ducc_update_page_local(type)
 {
        try {
-               //local mods here
+               if(type == "experiments") {
+                       ducc_load_experiments_head();
+                       ducc_load_experiments_data();
+                       for (var i=0; i < document.duccform.refresh.length; 
i++) {
+                               ducc_load_experiments_data();
+                       }
+               }
+               if(type == "experiment-details") {
+                       for (var i=0; i < document.duccform.refresh.length; 
i++) {
+                               ducc_load_identify_experiment_details();
+                               ducc_load_experiment_details_data();
+                       }
+               }
        }
        catch(err) {
                ducc_error("ducc_update_page_local",err);

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Arkadenbrucke.png
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Arkadenbrucke.png?rev=1865229&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Arkadenbrucke.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Brno-Stary_Liskovec_vlajka.svg.png
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Brno-Stary_Liskovec_vlajka.svg.png?rev=1865229&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/120px-Brno-Stary_Liskovec_vlajka.svg.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/site.jsp
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/site.jsp?rev=1865229&r1=1865228&r2=1865229&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/site.jsp (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/site.jsp Thu Aug 15 
14:44:35 2019
@@ -16,7 +16,12 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
+<!--
+Insert Experiments button -- could be made optional
+Imported by $banner/c0-menu.jsp
+-->
 <HTML>
 <BODY>
+<li><a href="experiments.html">Experiments</a></li>
 </BODY>
-</HTML>
\ No newline at end of file
+</HTML>


Reply via email to