You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2019/08/15 14:44:36 UTC
svn commit: r1865229 [2/2] - in
/uima/uima-ducc/trunk/uima-ducc-web/src/main: java/org/apache/uima/ducc/ws/
java/org/apache/uima/ducc/ws/handlers/
java/org/apache/uima/ducc/ws/handlers/experiments/
java/org/apache/uima/ducc/ws/handlers/utilities/ java/...
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: 
+<td valign="top"><span class="timestamptitle" id="timestamp_area"></span>
+</tr>
+<tr>
+<td valign="top" align="right" title="The percentage of shares inuse">Utilization: 
+<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: 
+<td valign="top"><span class="timestamptitle" id="timestamp_area"></span>
+</tr>
+<tr>
+<td valign="top" align="right" title="The percentage of shares inuse">Utilization: 
+<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>