* TODO: it's not clear who has the responsibility of closing the old executor
- *
+ *
* @param defaultQueryExecutor the new executor
*/
public static void setDefaultQueryExecutor(Executor defaultQueryExecutor) {
@@ -57,24 +57,24 @@ public static void setDefaultQueryExecutor(Executor defaultQueryExecutor) {
throw new NullPointerException("Executor can't be null");
ChannelQuery.defaultQueryExecutor = defaultQueryExecutor;
}
-
+
/**
* Result of the query. Groups both result and error so that it's an immutable
* and atomic combination.
- *
+ *
* @author carcassi
*/
public static class Result {
- public final Exception exception;
+ public final Exception exception;
public final Collection channels;
-
+
public Result(Exception exception, Collection channels) {
this.exception = exception;
this.channels = channels;
}
-
+
}
-
+
private volatile Result result;
// Guarded by this: will keep track whether a query is already running
private boolean running = false;
@@ -96,7 +96,7 @@ private Builder(String query) {
/**
* Changes which client should be used to execute the query.
- *
+ *
* @param client a cliemt
* @return this
*/
@@ -106,10 +106,10 @@ public Builder using(ChannelFinderClient client) {
this.client = client;
return this;
}
-
+
/**
* Pre-fills the cached result with the given channels and exception.
- *
+ *
* @param channels the result of the query
* @param exception the exception for the result; can be null
* @return this
@@ -121,7 +121,7 @@ public Builder result(Collection channels, Exception exception) {
/**
* Changes which executor should execute the query.
- *
+ *
* @param executor an executor
* @return this
*/
@@ -135,7 +135,7 @@ public Builder on(Executor executor) {
/**
* Creates the new query. The query is not executed until
* is needed.
- *
+ *
* @return a new query
*/
public ChannelQuery build() {
@@ -155,7 +155,7 @@ private ChannelQuery(String query, ChannelFinderClient client, Executor queryExe
* Adds a new listener that is called every time the query is executed.
* Note: if you want the listener to be called at least once,
* use {@link #execute(ChannelQueryListener)}.
- *
+ *
* @param listener a new listener
*/
public void addChannelQueryListener(ChannelQueryListener listener) {
@@ -164,7 +164,7 @@ public void addChannelQueryListener(ChannelQueryListener listener) {
/**
* Removes a listener.
- *
+ *
* @param listener the listener to be removed
*/
public void removeChannelQueryListener(ChannelQueryListener listener) {
@@ -176,10 +176,10 @@ private void fireGetQueryResult(Result result) {
listener.queryExecuted(result);
}
}
-
+
/**
* The text of the query.
- *
+ *
* @return the query text
*/
public String getQuery() {
@@ -188,35 +188,35 @@ public String getQuery() {
/**
* The result of the query, if present.
- *
+ *
* @return result or null if the query was never executed
*/
public Result getResult() {
return this.result;
}
-
+
/**
* Executes the query and calls the listener with the result.
* If the query was already executed, the listener is called
* immediately with the result.
- *
+ *
* @param listener - channel query listener
*/
public void execute(ChannelQueryListener listener) {
addChannelQueryListener(listener);
-
+
// Make a local copy to avoid synchronization
Result localResult = result;
-
+
// If the query was executed, just call the listener
if (localResult != null) {
listener.queryExecuted(localResult);
} else {
execute();
}
-
+
}
-
+
/**
* Triggers a new execution of the query, and calls
* all the listeners as a result.
@@ -232,7 +232,7 @@ private void execute() {
return;
running = true;
}
-
+
queryExecutor.execute(new Runnable() {
@Override
@@ -253,21 +253,21 @@ public void run() {
}
});
}
-
+
@Override
public int hashCode() {
return getQuery().hashCode();
}
-
+
@Override
public boolean equals(Object obj) {
if (obj instanceof ChannelQuery) {
return query.equals(((ChannelQuery) obj).getQuery());
}
-
+
return false;
}
-
+
@Override
public String toString() {
return getQuery();
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelQueryListener.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelQueryListener.java
index 3170eb0e68..240e534ce7 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelQueryListener.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelQueryListener.java
@@ -7,7 +7,7 @@
public interface ChannelQueryListener {
-
+
public void queryExecuted(ChannelQuery.Result result);
}
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelUtil.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelUtil.java
index d1b8f8bdd1..6601dc02ad 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelUtil.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/ChannelUtil.java
@@ -15,7 +15,7 @@
/**
* @author shroffk
- *
+ *
*/
public class ChannelUtil {
@@ -28,7 +28,7 @@ private ChannelUtil() {
/**
* Return a list of tag names associated with this channel
- *
+ *
* @param channel
* - channel to be processed
* @return Collection of names of tags
@@ -43,7 +43,7 @@ public static Collection getTagNames(Channel channel) {
/**
* Return a union of tag names associated with channels
- *
+ *
* @param channels
* - list of channels
* @return a set of all unique tag names associated with atleast one or more
@@ -59,7 +59,7 @@ public static Collection getAllTagNames(Collection channels) {
/**
* Return a list of property names associated with this channel
- *
+ *
* @param channel
* - channel to be processed
* @return Collection of names of properties
@@ -75,7 +75,7 @@ public static Collection getPropertyNames(Channel channel) {
/**
* Return a union of property names associated with channels
- *
+ *
* @param channels
* - list of channels
* @return a set of all unique property names associated with atleast one or
@@ -100,7 +100,7 @@ public static Collection getPropValues(Collection channels, Str
/**
* Returns all the channel Names in the given Collection of channels
- *
+ *
* @param channels
* - list of channels
* @return a set of all the unique names associated with the each channel in
@@ -118,7 +118,7 @@ public static Collection getChannelNames(Collection channels) {
* Given a Collection of channels returns a new collection of channels
* containing only those channels which have all the properties in the
* propNames
- *
+ *
* @param channels
* - the input list of channels
* @param propNames
@@ -140,7 +140,7 @@ public static Collection filterbyProperties(Collection channel
* Given a Collection of channels returns a new collection of channels
* containing only those channels which have all the tags in the
* tagNames
- *
+ *
* @param channels
* - the input list of channels
* @param tagNames
@@ -162,7 +162,7 @@ public static Collection filterbyTags(Collection channels, Col
* Given a Collection of channels returns a new collection of channels
* containing only those channels which have all the tags in the
* tagNames
- *
+ *
* @param channels
* - the input list of channels
* @param propNames
@@ -187,7 +187,7 @@ public static Collection filterbyElements(Collection channels,
/**
* Returns a list of {@link Channel} built from the list of
* {@link Channel.Builder}s
- *
+ *
* @param channelBuilders
* - list of Channel.Builder to be built.
* @return Collection of {@link Channel} built from the channelBuilders
@@ -203,7 +203,7 @@ public static Collection toChannels(Collection channel
/**
* Returns a list of {@link Channel} built from the list of
* {@link Channel.Builder}s
- *
+ *
* @param channelBuilders
* - list of Channel.Builder to be built.
* @return Collection of {@link Channel} built from the channelBuilders
@@ -215,4 +215,4 @@ public static List toCollectionXmlChannels(Collectionname and value
- *
+ *
* @param name - property name
* @param value - property value
* @return {@link Property.Builder} for a property with name and value
@@ -50,10 +50,10 @@ public static Builder property(String name, String value) {
return propertyBuilder;
}
-
+
/**
* Returns a {@link Property.Builder} to for a property which is a copy of property.
- *
+ *
* @param property - the property to be copied
* @return {@link Property.Builder} with attributes initialized to the same as property
*/
@@ -67,7 +67,7 @@ public static Builder property(Property property) {
/**
* Set the owner for the property to be built.
- *
+ *
* @param owner - owner id
* @return property {@link Builder} with owner set to owner
*/
@@ -78,7 +78,7 @@ public Builder owner(String owner) {
/**
* Set the value for the property to be built.
- *
+ *
* @param value - property value
* @return property {@link Builder} with value set to value
*/
@@ -89,7 +89,7 @@ public Builder value(String value) {
/**
* Build a {@link XmlProperty} object using this builder.
- *
+ *
* @return {@link XmlProperty} xmlProperty object
*/
public XmlProperty toXml() {
@@ -122,7 +122,7 @@ private Property(Builder builder) {
/**
* returns the property name.
- *
+ *
* @return - the property name
*/
public String getName() {
@@ -156,7 +156,7 @@ public int hashCode() {
/*
* (non-Javadoc)
- *
+ *
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/Tag.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/Tag.java
index 682b7a9445..b9ccf797b5 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/Tag.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/Tag.java
@@ -8,7 +8,7 @@
/**
* A Tag object represents a channel finder tag which consists of the
* unique name and an owner.
- *
+ *
* @author shroffk
*
*/
@@ -18,9 +18,9 @@ public class Tag {
/**
* Builder class to aid in a construction of a {@link Tag}.
- *
+ *
* @author shroffk
- *
+ *
*/
public static class Builder {
// Required
@@ -31,7 +31,7 @@ public static class Builder {
/**
* Returns a {@link Builder} to build a {@link Tag} which is a copy of
* the given tag.
- *
+ *
* @param tag
* - the tag to be copied
* @return tag {@link Builder} with attributes initialized to the same
@@ -47,7 +47,7 @@ public static Builder tag(Tag tag) {
/**
* Returns a tag {@link Builder} to build a {@link Tag} with the name
* name
- *
+ *
* @param name
* - tag name
* @return tag {@link Builder} with name name
@@ -61,7 +61,7 @@ public static Builder tag(String name) {
/**
* Returns a tag {@link Builder} to build a {@link Tag} with the name
* name and owner owner
- *
+ *
* @param name
* - the tag name
* @param owner
@@ -78,7 +78,7 @@ public static Builder tag(String name, String owner) {
/**
* Set the owner for the tag to be built.
- *
+ *
* @param owner - owner id
* @return tag {@link Builder} with owner set to owner
*/
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlChannel.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlChannel.java
index 13ddac69b4..15535ce4aa 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlChannel.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlChannel.java
@@ -15,13 +15,13 @@
* @author Kunal Shroff {@literal }, Ralph Lange {@literal }
*/
-@JsonRootName("channel")
+@JsonRootName("channel")
public class XmlChannel {
private String name;
private String owner;
private List properties = new ArrayList();
private List tags = new ArrayList();
-
+
/** Creates a new instance of XmlChannel */
public XmlChannel() {
}
@@ -47,7 +47,7 @@ public XmlChannel(String name, String owner) {
}
/**
- *
+ *
* @param name - channel name
* @param owner - channel owner
* @param properties - list of channel properties
@@ -109,7 +109,7 @@ public List getProperties() {
public void setProperties(List properties) {
this.properties = properties;
}
-
+
/**
* Adds an XmlProperty to the channel.
*
@@ -137,7 +137,7 @@ public void setTags(List tags) {
public void addXmlTag(XmlTag tag) {
this.tags.add(tag);
}
-
+
/**
* Creates a compact string representation for the log.
*
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlProperty.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlProperty.java
index c0fdd3938d..eff6ee69fd 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlProperty.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlProperty.java
@@ -123,7 +123,7 @@ public List getChannels() {
/**
* set the channels associated with this property
- *
+ *
* @param channels - channels to be set to the property
*/
@JsonProperty("channels")
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlTag.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlTag.java
index e318a4b396..9f3ca863ba 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlTag.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/XmlTag.java
@@ -122,4 +122,4 @@ public static String toLog(XmlTag data) {
return data.getName() + "(" + data.getOwner() + ")" + (data.channels);
}
}
-}
\ No newline at end of file
+}
diff --git a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/package-info.java b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/package-info.java
index 32080a2c81..778928df05 100644
--- a/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/package-info.java
+++ b/app/channel/channelfinder/src/main/java/org/phoebus/channelfinder/package-info.java
@@ -6,14 +6,14 @@
/**
* {@literal
*
- *
+ *
*
- *
+ *
* The ChannelFinderClient contains a builder to guide users through the process of creating the client.
- *
+ *
*
* // Import from here
* import gov.bnl.channelfinder.api.ChannelFinderClient.CFCBuilder;
- *
+ *
* // Create a client of the default service URL
- *
+ *
* client = CFCBuilder.serviceURL().create();
- *
- * // Create a client to the specified service with HTTP authentication enabled
+ *
+ * // Create a client to the specified service with HTTP authentication enabled
* and with username myUsername and password myPasword
- *
+ *
* authenticatedClient = CFCBuilder.serviceURL("http://my.server.location/ChannelFinder")
* .withHTTPAuthentication(true).username("myUsername").password("myPassword").create();
*
- *
+ *
*
Query for channels based on name
*
- *
+ *
* // search for all channels in the channelfinder with name starting with "SR:C01".
- *
+ *
* Collection foundChannels = client.findByName("SR:C01*");
*
- *
+ *
*
Query for channels based on tags
*
- *
+ *
* // search for all channels with the tag "shroffk-favorite-channel".
- *
+ *
* Collection foundChannels = client.findByTag("shroffk-favorite-channel");
*
- *
+ *
*
Query for channels based on property
*
- *
+ *
* // search for all channel which have the property "device" with value = "bpm".
- *
+ *
* Collection foundChannels = client.findByProperty("device", "bpm");
- *
+ *
* // search for all channels which have the property "device with value "bpm" or "magnet"
- *
+ *
* Collection foundChannels = client.findByProperty("device", "bpm", "magnet");
*
-
+
diff --git a/app/scan/model/src/main/resources/numjy/__init__.py b/app/scan/model/src/main/resources/numjy/__init__.py
index 21caa71024..c41268acb3 100644
--- a/app/scan/model/src/main/resources/numjy/__init__.py
+++ b/app/scan/model/src/main/resources/numjy/__init__.py
@@ -2,11 +2,11 @@
NumJy - NumPy-inspired array support for Jython
-----------------------------------------------
-See also
+See also
help(ndarray)
-
+
In jython, 'import numjy as np' should setup NumJy,
-while loading the full numpy if executed under CPython.
+while loading the full numpy if executed under CPython.
"""
version_info = (0, 1)
@@ -29,7 +29,7 @@
from org.eclipse.core.runtime import Platform
from org.eclipse.core.runtime import FileLocator
from org.eclipse.core.runtime import Path
-
+
bundle = Platform.getBundle("org.epics.util")
url = FileLocator.find(bundle, Path("bin"), None)
if url:
@@ -38,7 +38,7 @@
else:
# In an exported product, the classes are at the root
sys.path.append(FileLocator.getBundleFile(bundle).getPath())
-
+
bundle = Platform.getBundle("org.csstudio.ndarray")
url = FileLocator.find(bundle, Path("bin"), None)
if url:
@@ -55,6 +55,5 @@
else:
# Add other method of locating ndarray binaries?
raise Exception("NumJy library binaries not configured")
-
- from ndarray import *
+ from ndarray import *
diff --git a/app/scan/model/src/main/resources/numjy/ndarray.py b/app/scan/model/src/main/resources/numjy/ndarray.py
index ec506fd5c3..57bf982ed2 100644
--- a/app/scan/model/src/main/resources/numjy/ndarray.py
+++ b/app/scan/model/src/main/resources/numjy/ndarray.py
@@ -59,10 +59,10 @@ class ndarray_iter:
"""
def __init__(self, iter):
self.iter = iter
-
+
def __iter__(self):
return self
-
+
def next(self):
if self.iter.hasNext():
return self.iter.nextDouble()
@@ -71,75 +71,75 @@ def next(self):
class ndarray:
"""N-Dimensional array
-
+
Example:
array([ 0, 1, 2, 3 ])
array([ [ 0, 1 ], [ 2, 3 ], [ 4, 5 ] ])
"""
def __init__(self, nda):
self.nda = nda
-
+
def getBase(self):
"""Base array, None if this array has no base"""
if self.nda.getBase() is None:
return
return ndarray(self.nda.getBase())
-
+
base = property(getBase)
-
+
def getShape(self):
"""Shape of the array, one element per dimension"""
return tuple(self.nda.getShape().getSizes())
-
+
shape = property(getShape)
-
+
def getType(self):
"""Get Data type of array elements"""
return self.nda.getType()
-
+
dtype = property(getType)
-
+
def getRank(self):
"""Get number of dimensions"""
return self.nda.getRank()
-
+
ndim = property(getRank)
-
+
def getStrides(self):
"""Get strides
Note that these are array index strides,
not raw byte buffer strides as in NumPy
"""
return tuple(self.nda.getStrides().getStrides())
-
+
strides = property(getStrides)
def copy(self):
"""Create a copy of this array"""
return ndarray(self.nda.clone())
-
+
def reshape(self, *shape):
"""reshape(shape):
Create array view with new shape
-
+
Example:
arange(6).reshape(3, 2)
results in array([ [ 0, 1 ], [ 2, 3 ], [ 4, 5 ] ])
"""
return ndarray(NDMatrix.reshape(self.nda, __toNDShape__(shape)))
-
+
def transpose(self):
"""Compute transposed array, i.e. swap 'rows' and 'columns'"""
return ndarray(NDMatrix.transpose(self.nda))
-
+
T = property(transpose)
-
+
def __len__(self):
"""Returns number of elements for the first dimension"""
if len(self.shape) > 0:
return self.shape[0]
return 0
-
+
def __getSlice__(self, indices):
"""@param indices: Indices that may address a slice
@return: NDArray for slice, or None if indices don't refer to slice
@@ -147,7 +147,7 @@ def __getSlice__(self, indices):
# Turn single argument into tuple to allow following iteration code
if not isinstance(indices, tuple):
indices = ( indices, )
-
+
given = len(indices)
dim = self.nda.getRank()
@@ -181,24 +181,24 @@ def __getSlice__(self, indices):
starts.append(start)
stops.append(stop)
steps.append(step)
-
+
if any_slice:
return self.nda.getSlice(starts, stops, steps)
# There was a plain index for every dimension, no slice at all
return None
-
+
def __getitem__(self, indices):
"""Get element of array, or fetch sub-array
-
+
Example:
a = array([ [ 0, 1 ], [ 2, 3 ], [ 4, 5 ] ])
a[1, 1] # Result is 3
a[1] # Result is second row of the 3x2 array
-
+
May also provide slice:
a = arange(10)
a[1:6:2] # Result is [ 1, 3, 5 ]
-
+
Differing from numpy, this returns all values as float,
so if they are later used for indexing, int() needs to be used.
"""
@@ -227,7 +227,7 @@ def __getitem__(self, indices):
def __setitem__(self, indices, value):
"""Set element of array
-
+
Example:
a = zeros(3)
a[1] = 1
@@ -245,13 +245,13 @@ def __setitem__(self, indices, value):
def __iter__(self):
return ndarray_iter(self.nda.getIterator())
-
+
def __neg__(self):
"""Return array where sign of each element has been reversed"""
result = self.nda.clone()
NDMath.negative(result)
return ndarray(result)
-
+
def __add__(self, value):
"""Add scalar to all elements, or add other array element-by-element"""
if isinstance(value, ndarray):
@@ -260,11 +260,11 @@ def __add__(self, value):
result = self.nda.clone()
NDMath.increment(result, value)
return ndarray(result)
-
+
def __radd__(self, value):
"""Add scalar to all elements, or add other array element-by-element"""
return self.__add__(value)
-
+
def __iadd__(self, value):
"""Add scalar to all elements, or add other array element-by-element"""
if isinstance(value, ndarray):
@@ -272,7 +272,7 @@ def __iadd__(self, value):
else:
NDMath.increment(self.nda, value)
return self
-
+
def __sub__(self, value):
"""Subtract scalar from all elements, or sub. other array element-by-element"""
if isinstance(value, ndarray):
@@ -281,7 +281,7 @@ def __sub__(self, value):
result = self.nda.clone()
NDMath.increment(result, -value)
return ndarray(result)
-
+
def __rsub__(self, value):
"""Subtract scalar from all elements, or sub. other array element-by-element"""
result = self.nda.clone()
@@ -292,7 +292,7 @@ def __rsub__(self, value):
def __isub__(self, value):
"""Subtract scalar from all elements, or sub. other array element-by-element"""
return self.__iadd__(-value)
-
+
def __mul__(self, value):
"""Multiply by scalar or by other array elements"""
if not isinstance(value, ndarray):
@@ -310,7 +310,7 @@ def __imul__(self, value):
else:
NDMath.scale(self.nda, value)
return self
-
+
def __div__(self, value):
"""Divide by scalar or by other array elements"""
if not isinstance(value, ndarray):
@@ -330,7 +330,7 @@ def __idiv__(self, value):
else:
NDMath.divide_elements(self.nda, value)
return self
-
+
def __pow__(self, value):
"""Raise array elements to power specified by value"""
if not isinstance(value, ndarray):
@@ -342,13 +342,13 @@ def __rpow__(self, value):
if not isinstance(value, ndarray):
value = array([ value ])
return ndarray(NDMath.power(value.nda, self.nda))
-
+
def __eq__(self, value):
"""Element-wise comparison"""
if not isinstance(value, ndarray):
value = array([ value ])
return ndarray(NDCompare.equal_to(self.nda, value.nda))
-
+
def __ne__(self, value):
"""Element-wise comparison"""
if not isinstance(value, ndarray):
@@ -382,7 +382,7 @@ def __ge__(self, value):
def __abs__(self):
"""Element-wise absolute values"""
return ndarray(NDMath.abs(self.nda))
-
+
def any(self):
"""Determine if any element is True (not zero)"""
return NDCompare.any(self.nda)
@@ -390,7 +390,7 @@ def any(self):
def all(self):
"""Determine if all elements are True (not zero)"""
return NDCompare.all(self.nda)
-
+
def sum(self):
"""Returns sum over all array elements"""
return NDMath.sum(self.nda)
@@ -406,26 +406,26 @@ def min(self):
def nonzero(self):
"""Return the indices of the elements that are non-zero.
Returns a tuple of arrays, one for each dimension of a, containing the indices of the non-zero elements in that dimension.
-
+
Compared to numpy, it does not return a tuple of arrays but a matrix,
but either one allows addressing as [dimension, i] to get the index of the i'th non-zero element
"""
return ndarray(NDCompare.nonzero(self.nda))
-
+
def __str__(self):
return self.nda.toString()
-
+
def __repr__(self):
if self.dtype == float:
return "array(" + self.nda.toString() + ")"
return "array(" + self.nda.toString() + ", dtype=" + str(self.dtype) + ")"
-
+
def zeros(shape, dtype=float):
"""zeros(shape, dtype=float)
-
+
Create array of zeros, example:
-
+
zeros( (2, 3) )
"""
return ndarray(NDMatrix.zeros(dtype, __toNDShape__(shape)))
@@ -433,9 +433,9 @@ def zeros(shape, dtype=float):
def ones(shape, dtype=float):
"""ones(shape, dtype=float)
-
+
Create array of ones, example:
-
+
ones( (2, 3) )
"""
return ndarray(NDMatrix.ones(dtype, __toNDShape__(shape)))
@@ -443,7 +443,7 @@ def ones(shape, dtype=float):
def array(arg, dtype=None):
"""Create N-dimensional array from data
-
+
Example:
array([1, 2, 3])
array([ [1, 2], [3, 4]])
@@ -458,12 +458,12 @@ def array(arg, dtype=None):
def arange(start, stop=None, step=1, dtype=None):
"""arange([start,] stop[, step=1])
-
+
Return evenly spaced values within a given interval.
-
+
Values are generated within the half-open interval ``[start, stop)``
(in value words, the interval including `start` but excluding `stop`).
-
+
Parameters
----------
start : number, optional
@@ -475,9 +475,9 @@ def arange(start, stop=None, step=1, dtype=None):
Spacing between values. For any output `out`, this is the distance
between two adjacent values, ``out[i+1] - out[i]``. The default
step size is 1. If `step` is specified, `start` must also be given.
-
+
Examples:
-
+
arange(5)
arange(1, 5, 0.5)
"""
@@ -489,11 +489,11 @@ def arange(start, stop=None, step=1, dtype=None):
return ndarray(NDMatrix.arange(start, stop, step))
else:
return ndarray(NDMatrix.arange(start, stop, step, dtype))
-
+
def linspace(start, stop, num=50, dtype=float):
"""linspace(start, stop, num=50, dtype=float)
-
+
Return evenly spaced values from start to stop, including stop.
Example:
linspace(2, 10, 5)
@@ -547,7 +547,7 @@ def copy(a):
def reshape(a, shape):
"""reshape(array, shape):
Create array view with new shape
-
+
Example:
reshape(arange(6), (3, 2))
results in array([ [ 0, 1 ], [ 2, 3 ], [ 4, 5 ] ])
diff --git a/app/scan/ui/build.xml b/app/scan/ui/build.xml
index e958bbf5ee..0217f8a237 100644
--- a/app/scan/ui/build.xml
+++ b/app/scan/ui/build.xml
@@ -13,11 +13,11 @@
-
+
-
+
diff --git a/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataCell.java b/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataCell.java
index 08038690d0..e200b6af5a 100644
--- a/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataCell.java
+++ b/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataCell.java
@@ -19,13 +19,13 @@ public class DataCell extends TableCell
{
/** Cell value and timestamp seperator for the tooltip. */
private static final String SEP = " / ";
-
+
/** Column index for this cell. */
private final int col_idx;
-
+
/** This cell's tooltip. */
private final Tooltip tooltip;
-
+
/**
* Constructor. Takes the column index that the cell belongs to.
* @param col_idx
@@ -33,15 +33,15 @@ public class DataCell extends TableCell
public DataCell(final int col_idx)
{
this.col_idx = col_idx;
-
+
tooltip = new Tooltip();
tooltip.setShowDelay(Duration.millis(250));
tooltip.setShowDuration(Duration.seconds(30));
}
-
+
@Override
public void updateItem(String item, boolean empty)
- {
+ {
DataRow row = getTableRow().getItem();
if (empty)
{
diff --git a/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataRow.java b/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataRow.java
index 2ec5b88cc2..b3928a7d9b 100644
--- a/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataRow.java
+++ b/app/scan/ui/src/main/java/org/csstudio/scan/ui/datatable/DataRow.java
@@ -24,39 +24,39 @@ public class DataRow
{
/** Data values for each row's cell. */
private final List data = new ArrayList<>();
-
+
/** Timestamps for each data value in the row. */
private final List data_timestamps = new ArrayList<>();
-
+
public DataRow(final Instant timestamp, final ScanSample[] samples)
{
/* Add the row's timestamp. */
data.add(new SimpleStringProperty(ScanSampleFormatter.format(timestamp)));
data_timestamps.add(new SimpleStringProperty(ScanSampleFormatter.format(timestamp)));
-
+
/* Add each cell's value and each value's specific timestamp to the row. */
for (ScanSample sample : samples)
{
data.add(new SimpleStringProperty(ScanSampleFormatter.asString(sample)));
-
+
final String str_timestamp = (null == sample) ? null : ScanSampleFormatter.format(sample.getTimestamp());
-
+
data_timestamps.add(new SimpleStringProperty(str_timestamp));
}
}
-
+
/** Retrieve a specific column's data value for this row. */
public SimpleStringProperty getDataValue(final int col)
{
return data.get(col);
}
-
+
/** Retrieve a specific column's data value timestamp for this row. */
public SimpleStringProperty getDataTimestamp(final int col)
{
return data_timestamps.get(col);
}
-
+
/** Get the size of the row (i.e. the number of columns). */
public int size()
{
diff --git a/app/scan/ui/src/main/java/org/csstudio/scan/ui/monitor/ScanInfoProxy.java b/app/scan/ui/src/main/java/org/csstudio/scan/ui/monitor/ScanInfoProxy.java
index bc3fcf1583..715f5fd50b 100644
--- a/app/scan/ui/src/main/java/org/csstudio/scan/ui/monitor/ScanInfoProxy.java
+++ b/app/scan/ui/src/main/java/org/csstudio/scan/ui/monitor/ScanInfoProxy.java
@@ -65,4 +65,4 @@ boolean updateFrom(final ScanInfo info)
return changed;
}
-}
\ No newline at end of file
+}
diff --git a/app/scan/ui/src/main/java/org/csstudio/scan/ui/simulation/SimulationDisplayApplication.java b/app/scan/ui/src/main/java/org/csstudio/scan/ui/simulation/SimulationDisplayApplication.java
index 20724f6603..4f5403a1db 100644
--- a/app/scan/ui/src/main/java/org/csstudio/scan/ui/simulation/SimulationDisplayApplication.java
+++ b/app/scan/ui/src/main/java/org/csstudio/scan/ui/simulation/SimulationDisplayApplication.java
@@ -35,4 +35,4 @@ public SimulationDisplay create()
{
return new SimulationDisplay(this);
}
-}
\ No newline at end of file
+}
diff --git a/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppResourceDescriptor b/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppResourceDescriptor
index d914f60ded..c8f982458c 100644
--- a/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppResourceDescriptor
+++ b/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppResourceDescriptor
@@ -1 +1 @@
-org.csstudio.scan.ui.editor.ScanEditorApplication
\ No newline at end of file
+org.csstudio.scan.ui.editor.ScanEditorApplication
diff --git a/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry b/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
index f51efacf7f..07d741c62c 100644
--- a/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
+++ b/app/scan/ui/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
@@ -1,2 +1,2 @@
org.csstudio.scan.ui.monitor.ScanMonitorMenuEntry
-org.csstudio.scan.ui.editor.ScanEditorMenuEntry
\ No newline at end of file
+org.csstudio.scan.ui.editor.ScanEditorMenuEntry
diff --git a/app/scan/ui/src/main/resources/scan_ui_preferences.properties b/app/scan/ui/src/main/resources/scan_ui_preferences.properties
index 5b5b64c2e4..bc079c00b6 100644
--- a/app/scan/ui/src/main/resources/scan_ui_preferences.properties
+++ b/app/scan/ui/src/main/resources/scan_ui_preferences.properties
@@ -3,4 +3,4 @@
# ----------------------------
# Show scan monitor status bar?
-monitor_status=false
\ No newline at end of file
+monitor_status=false
diff --git a/app/trends/archive-datasource/build.xml b/app/trends/archive-datasource/build.xml
index 707746f875..c0e92332cc 100644
--- a/app/trends/archive-datasource/build.xml
+++ b/app/trends/archive-datasource/build.xml
@@ -9,11 +9,11 @@
-
+
-
+
diff --git a/app/trends/archive-datasource/doc/index.rst b/app/trends/archive-datasource/doc/index.rst
index 5d63610b6b..eaa67b4c6a 100644
--- a/app/trends/archive-datasource/doc/index.rst
+++ b/app/trends/archive-datasource/doc/index.rst
@@ -26,4 +26,3 @@ The replay PVs are read-only and constant.
- `replay://pv_name`: Retrieves the last 5 minutes of data for this PV from the archiver and replays them at 10Hz.
- `replay://pv_name(start, end)`: Recreates the PV value changes using the data from the archiver between the specific start and end times.
- `replay://pv_name(start, end, update_rate)`: Recreates the PV value changes using the data from the archiver between the specified start and end times. Updates occur at the rate specified by `update_rate` (a value defined in seconds).
-
diff --git a/app/trends/archive-datasource/src/main/resources/META-INF/services/org.phoebus.pv.PVFactory b/app/trends/archive-datasource/src/main/resources/META-INF/services/org.phoebus.pv.PVFactory
index 72db0eb20d..ef4440b7a3 100644
--- a/app/trends/archive-datasource/src/main/resources/META-INF/services/org.phoebus.pv.PVFactory
+++ b/app/trends/archive-datasource/src/main/resources/META-INF/services/org.phoebus.pv.PVFactory
@@ -1,2 +1,2 @@
org.phoebus.pv.archive.retrieve.ArchivePVFactory
-org.phoebus.pv.archive.replay.ReplayPVFactory
\ No newline at end of file
+org.phoebus.pv.archive.replay.ReplayPVFactory
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceMeanValueIterator.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceMeanValueIterator.java
index c68ed1c0fa..5eb5b3ccd6 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceMeanValueIterator.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceMeanValueIterator.java
@@ -108,4 +108,4 @@ private boolean isDataTypeOKForOptimized(PayloadType type) {
type == PayloadType.SCALAR_INT ||
type == PayloadType.SCALAR_SHORT;
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceOptimizedValueIterator.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceOptimizedValueIterator.java
index cbb8b653a8..1e91c66f7b 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceOptimizedValueIterator.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceOptimizedValueIterator.java
@@ -155,4 +155,4 @@ public VType next() {
return super.extractData(message);
}
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceRawValueIterator.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceRawValueIterator.java
index 81bcbc469b..2b16ed1c47 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceRawValueIterator.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceRawValueIterator.java
@@ -31,4 +31,4 @@ public ApplianceRawValueIterator(ApplianceArchiveReader reader,
super(reader, name, start, end);
fetchData();
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceValueIterator.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceValueIterator.java
index cc118fc6d0..0074b528bb 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceValueIterator.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/appliance/ApplianceValueIterator.java
@@ -307,7 +307,7 @@ protected Display getDisplay(PayloadInfo info) {
}
/**
- * Extract the labels from the given payloadinfo when processing Enum Values.
+ * Extract the labels from the given payloadinfo when processing Enum Values.
* EnumLabels list empty if payloadinfo from request without "fetchLatestMetadata" set to true
*
* @param info the info to extract the labels
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileBuffer.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileBuffer.java
index 71849cf280..82e807946a 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileBuffer.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileBuffer.java
@@ -237,4 +237,4 @@ public String toString()
buffer.get(buffer.position()+1), buffer.get(buffer.position()+2), buffer.get(buffer.position()+3), buffer.get(buffer.position()+4),
buffer.get(buffer.position()+5), buffer.get(buffer.position()+6), buffer.get(buffer.position()+7));
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileSampleReader.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileSampleReader.java
index 632003cecd..c5cfb20ff6 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileSampleReader.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/ArchiveFileSampleReader.java
@@ -395,4 +395,4 @@ private static String getStatus(final short severity, final short status)
return ChannelAccessStatusUtil.idToName(status);
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataFileEntry.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataFileEntry.java
index 00edb519da..9e48b442a9 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataFileEntry.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataFileEntry.java
@@ -32,4 +32,4 @@ public String toString()
{
return String.format("DataFileEntry in '%s' @ 0x%08x (%d)", file.getName(), offset, offset);
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataHeader.java b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataHeader.java
index 8b9b7b9294..610cf46514 100644
--- a/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataHeader.java
+++ b/app/trends/archive-reader/src/main/java/org/phoebus/archive/reader/channelarchiver/file/DataHeader.java
@@ -141,4 +141,4 @@ public static DataHeader readDataHeader(ArchiveFileBuffer buffer, CtrlInfoReader
return new DataHeader(file, offset, nextFile, nextOffset, nextTime, info, dbrType, dbrCount, numSamples);
}
-}
\ No newline at end of file
+}
diff --git a/app/trends/rich-adapters/build.xml b/app/trends/rich-adapters/build.xml
index b5c5008121..501e3607fc 100644
--- a/app/trends/rich-adapters/build.xml
+++ b/app/trends/rich-adapters/build.xml
@@ -12,11 +12,11 @@
-
+
-
+
diff --git a/app/trends/rich-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory b/app/trends/rich-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
index 573e485dc0..54413db48a 100644
--- a/app/trends/rich-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
+++ b/app/trends/rich-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
@@ -1 +1 @@
-org.phoebus.apps.trends.rich.adapters.DatabrowserAdapterFactory
\ No newline at end of file
+org.phoebus.apps.trends.rich.adapters.DatabrowserAdapterFactory
diff --git a/app/trends/simple-adapters/build.xml b/app/trends/simple-adapters/build.xml
index ffd5325777..0c4ea8b845 100644
--- a/app/trends/simple-adapters/build.xml
+++ b/app/trends/simple-adapters/build.xml
@@ -12,11 +12,11 @@
-
+
-
+
diff --git a/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/DatabrowserAdapterFactory.java b/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/DatabrowserAdapterFactory.java
index fd4198a64c..d77a00ea6f 100644
--- a/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/DatabrowserAdapterFactory.java
+++ b/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/DatabrowserAdapterFactory.java
@@ -18,7 +18,7 @@
/**
* A factory which adapts {@link DatabrowserSelection}s to {@link EmailEntry}s
- *
+ *
* @author Kunal Shroff
*
*/
diff --git a/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/Messages.java b/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/Messages.java
index a622f1b3f6..010c7565c1 100644
--- a/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/Messages.java
+++ b/app/trends/simple-adapters/src/main/java/org/phoebus/apps/trends/simple/adapters/Messages.java
@@ -3,7 +3,7 @@
import org.phoebus.framework.nls.NLS;
/**
- *
+ *
* @author Kunal Shroff
*/
public class Messages {
diff --git a/app/trends/simple-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory b/app/trends/simple-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
index 67eb2a71da..2a5fb2fb75 100644
--- a/app/trends/simple-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
+++ b/app/trends/simple-adapters/src/main/resources/META-INF/services/org.phoebus.framework.adapter.AdapterFactory
@@ -1 +1 @@
-org.phoebus.apps.trends.simple.adapters.DatabrowserAdapterFactory
\ No newline at end of file
+org.phoebus.apps.trends.simple.adapters.DatabrowserAdapterFactory
diff --git a/app/trends/simple-adapters/src/main/resources/org/phoebus/apps/trends/simple/adapters/messages.properties b/app/trends/simple-adapters/src/main/resources/org/phoebus/apps/trends/simple/adapters/messages.properties
index eb8845ee23..a81e17387e 100644
--- a/app/trends/simple-adapters/src/main/resources/org/phoebus/apps/trends/simple/adapters/messages.properties
+++ b/app/trends/simple-adapters/src/main/resources/org/phoebus/apps/trends/simple/adapters/messages.properties
@@ -1,4 +1,4 @@
ActionEmailTitle=Data Browser Plot
ActionEmailBody=See attached data browser plot
ActionLogbookTitle=Data Browser Plot
-ActionLogbookBody=See attached data browser plot
\ No newline at end of file
+ActionLogbookBody=See attached data browser plot
diff --git a/app/update/src/main/java/org/phoebus/applications/update/GitlabUpdate.java b/app/update/src/main/java/org/phoebus/applications/update/GitlabUpdate.java
index 65ab069210..aa3854095d 100644
--- a/app/update/src/main/java/org/phoebus/applications/update/GitlabUpdate.java
+++ b/app/update/src/main/java/org/phoebus/applications/update/GitlabUpdate.java
@@ -21,7 +21,7 @@
/**
* Pull updates from the gitlab package registry.
- *
+ *
*
* The timestamp of the available update is determined from the timestamp of the
* commit that triggered the pipeline. The version information in the package
@@ -31,7 +31,7 @@
* To initialize the package version, use
* echo org.phoebus.applications.update/current_version=$CI_COMMIT_TIMESTAMP >> phoebus-product/settings.ini
* in the build pipeline, then package settings.ini.
- *
+ *
* @author Michael Ritzert
*
*/
@@ -42,7 +42,7 @@ public class GitlabUpdate extends Update implements UpdateProvider
/**
* The path to the "V4 API".
- *
+ *
* Typically https://HOST/api/v4
*/
@Preference
@@ -52,7 +52,7 @@ public class GitlabUpdate extends Update implements UpdateProvider
public static int gitlab_project_id;
/**
* The package name used in the registry.
- *
+ *
* Defaults to "phoebus-$(arch)".
*/
@Preference
@@ -103,9 +103,9 @@ protected InputStream getDownloadStream() throws Exception
/**
* Identify the latest commit for the package we want.
- *
+ *
* Fills in latest_commit, file_size, and file_name.
- *
+ *
* @throws Exception
*/
private void getLatestCommit() throws Exception
@@ -140,9 +140,9 @@ private void getLatestCommit() throws Exception
/**
* Find the latest package with the configured name.
- *
+ *
* Fills in latest_version and latest_id.
- *
+ *
* @throws Exception
*/
private void getLatestPackage() throws Exception
@@ -166,7 +166,7 @@ private void getLatestPackage() throws Exception
/**
* Get the timestamp of the given commit.
- *
+ *
* @param commit_id
* The full SHA hash of the commit.
* @return The timestamp of the commit.
@@ -200,7 +200,7 @@ protected Instant getVersion() throws Exception
/**
* Execute a GET call to the gitlab API.
- *
+ *
* @param endpoint
* The URL to access. The part up to /v4/ is automatically
* prepended.
diff --git a/app/update/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor b/app/update/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
index cb769ff196..ec7a026146 100644
--- a/app/update/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
+++ b/app/update/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
@@ -1 +1 @@
-org.phoebus.applications.update.UpdateApplication
\ No newline at end of file
+org.phoebus.applications.update.UpdateApplication
diff --git a/app/update/src/test/java/org/phoebus/applications/update/UpdateDemo.java b/app/update/src/test/java/org/phoebus/applications/update/UpdateDemo.java
index 28095d1629..f3ff063a0f 100644
--- a/app/update/src/test/java/org/phoebus/applications/update/UpdateDemo.java
+++ b/app/update/src/test/java/org/phoebus/applications/update/UpdateDemo.java
@@ -54,4 +54,4 @@ public void updateTaskName(final String task_name)
if (new_version != null)
updater.downloadAndUpdate(monitor, install_location);
}
-}
\ No newline at end of file
+}
diff --git a/app/utility/preference-manager/build.xml b/app/utility/preference-manager/build.xml
index f12431dd15..8d39342047 100644
--- a/app/utility/preference-manager/build.xml
+++ b/app/utility/preference-manager/build.xml
@@ -9,11 +9,11 @@
-
+
-
+
diff --git a/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor b/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
index 298db1f869..d637c83408 100644
--- a/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
+++ b/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.framework.spi.AppDescriptor
@@ -1 +1 @@
-org.phoebus.applications.utility.preferences.PreferencesApp
\ No newline at end of file
+org.phoebus.applications.utility.preferences.PreferencesApp
diff --git a/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry b/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
index 7213775dcc..9281ca5da3 100644
--- a/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
+++ b/app/utility/preference-manager/src/main/resources/META-INF/services/org.phoebus.ui.spi.MenuEntry
@@ -1 +1 @@
-org.phoebus.applications.utility.preferences.PreferencesTreeMenuEntry
\ No newline at end of file
+org.phoebus.applications.utility.preferences.PreferencesTreeMenuEntry
diff --git a/appveyor.yml b/appveyor.yml
index fae26bf08d..5a2dbbbc41 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -13,7 +13,6 @@ install:
- ps: Start-Process 'jdk-9+181_windows-x64_bin.exe' -ArgumentList '/s INSTALL_SILENT=1' -Wait
- cmd: echo JDK installtion finished
-# build
+# build
build_script:
- mvn clean install
-
diff --git a/build.xml b/build.xml
index 4a375e4934..030b9f1ab1 100644
--- a/build.xml
+++ b/build.xml
@@ -72,7 +72,7 @@
-
+
@@ -33,7 +33,7 @@
-
+
@@ -59,9 +59,9 @@
-
+
-
+
diff --git a/dependencies/package_target.sh b/dependencies/package_target.sh
index 1c90b24498..f894903df5 100644
--- a/dependencies/package_target.sh
+++ b/dependencies/package_target.sh
@@ -1,9 +1,9 @@
#!/bin/sh
# A script which creates and packages the Phoebus target maven repo
-# The outout tar/zip can be downloaded and the phoebus sources can be built against is using
-# the maven.repo.local option
+# The outout tar/zip can be downloaded and the phoebus sources can be built against is using
+# the maven.repo.local option
mvn clean install -Dmaven.repo.local=targetRepository -P packageTarget,docs
tar -cf phoebus-target.tar targetRepository/
-rm -rf targetRepository
\ No newline at end of file
+rm -rf targetRepository
diff --git a/dependencies/phoebus-target/check_classpath.py b/dependencies/phoebus-target/check_classpath.py
index fed011c11e..fbb481d680 100755
--- a/dependencies/phoebus-target/check_classpath.py
+++ b/dependencies/phoebus-target/check_classpath.py
@@ -10,7 +10,7 @@
parser = argparse.ArgumentParser(
description='Check if .classpath entries exist. If not, suggest alternate version')
args = parser.parse_args()
-
+
xml = ET.parse(".classpath")
root = xml.getroot()
@@ -33,5 +33,3 @@
print("%-60s -----> use %s" % (jar, update))
else:
print("%-60s is missing, no replacement found" % jar)
-
-
diff --git a/dependencies/phoebus-target/pom.xml b/dependencies/phoebus-target/pom.xml
index 659d0ee354..7f39e08be5 100644
--- a/dependencies/phoebus-target/pom.xml
+++ b/dependencies/phoebus-target/pom.xml
@@ -12,8 +12,8 @@
-
release
@@ -60,7 +60,7 @@
-
org.phoebus
@@ -506,7 +506,7 @@
-
+ org.slf4jslf4j-jdk141.7.28
@@ -557,7 +557,7 @@
epics-jackie-client3.1.0
-
+
@@ -576,7 +576,7 @@
bcprov-jdk18on1.84
-
+
org.apache.poi
@@ -616,7 +616,7 @@
tika-core3.2.0
-
+
io.fair-acc
diff --git a/dependencies/phoebus-target/release_classpath.py b/dependencies/phoebus-target/release_classpath.py
index dc2fbc12e3..2fc702c5bc 100644
--- a/dependencies/phoebus-target/release_classpath.py
+++ b/dependencies/phoebus-target/release_classpath.py
@@ -2,4 +2,4 @@
f = open("release.log", "a")
f.write(os.getcwd())
-f.write("Updating the classpath file in preparation for phoebus release \n")
\ No newline at end of file
+f.write("Updating the classpath file in preparation for phoebus release \n")
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index eb0b9ce4c3..c81339bcfc 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -15,7 +15,7 @@
packageTarget
-
diff --git a/docs/README.md b/docs/README.md
index 531c903588..12548d085c 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -79,7 +79,7 @@ Documentation Components
The files in this repository, i.e. the files in `phoebus/doc/source`, starting with `index.rst`,
form the basis of the documentation tree, meant to provide the top-level documentation.
-
+
For details on the `*.rst` file format, refer to the
ReStructured Text reference, see http://www.sphinx-doc.org/en/stable/rest.html
@@ -90,9 +90,9 @@ Documentation Components
This allows Phoebus source code to contribute to the documentation.
For example, application modules will be added
to the "Applications" section of the top-level documentation.
-
+
Additionally, the folders are also checked for `doc/images/` folders.
- Resources used by the `index.rst` files should be places in this folder to
+ Resources used by the `index.rst` files should be places in this folder to
ensure they are available to sphinx to generate the documentation.
3) Preference Descriptions
@@ -100,31 +100,31 @@ Documentation Components
The content of all `../phoebus/**preferences.properties` files
is added to a "Preferences Listing" appendix of the documentation,
with a generated listing of preference packages.
-
+
The preference file should start with a `# Package ...` header
to allow listing it in the table of contents.
-
+
Example:
-
+
```
# --------------------------------
# Package the.phoebus.package.name
# --------------------------------
-
+
# Description of some setting
the_setting = default_value
```
-
+
4) Plain HTML
The content of all `../phoebus/**/doc/html` folders is copied into the
generated html output directory tree.
-
+
This allows including existing HTML content "as is".
An `index.rst` file in the corresponding phoebus module may then refer
to it via `raw` link directives.
See `../phoebus/app/display/editor/doc` for an example.
-
+
The inclusion of plain HTML content is meant to allow adding for example
Java Doc that is auto-generated, where it would be impractical to rewrite
the information as `*.rst`.
@@ -132,10 +132,10 @@ Documentation Components
`*.rst` files are rendered as HTML, in which case `raw` directives can
then link them to the documentation.
When the `*.rst` files are rendered via LaTeX or PDF, plain HTML content is ignored.
-
+
Whenever possible, documentation should thus use the `*.rst` file format
and be included via the first two options.
-
+
For technical details on how the document components are assembled,
check `createAppIndex()` and `createPreferenceAppendix()` in `source/conf.py`.
diff --git a/docs/source/architecture.rst b/docs/source/architecture.rst
index 191730307a..280e15b643 100644
--- a/docs/source/architecture.rst
+++ b/docs/source/architecture.rst
@@ -24,7 +24,7 @@ Core Modules
core-framework:
Fundamentals that many applications use, for example preferences, persistence,
jobs, macros, localization, autocompletion.
-
+
Defines the ``AppDescriptor`` and ``AppResourceDescriptor`` Java Service Provider Interfaces (SPI)
which are used to locate applications.
Each application feature identifies itself by implementing an application description
@@ -32,7 +32,7 @@ core-framework:
the application is, which types of resources (e.g. data files) it might accept,
and most importantly how to start one or more instances
of the application.
-
+
To create an ``AppInstance``, i.e. an application instance, the framework invokes
the ``create()`` method of the application descriptor.
This will typically result in a new application instance, i.e. a new tab in the UI.
@@ -44,28 +44,28 @@ core-framework:
On startup, each window and tab is restored,
the applications are restarted, and each application
can restore its specific state from the memento.
-
+
The ``JobManager`` API allows submitting jobs based on a ``JobRunnable``
that supports progress reporting and cancellation.
-
+
core-pv:
API for access to life data from Process Variables.
-
+
core-logbook:
- API for accessing a logbook, with SPI for site-specific implementations.
+ API for accessing a logbook, with SPI for site-specific implementations.
core-email:
- API for creating emails.
+ API for creating emails.
core-security:
- API for authorization and secure storage.
+ API for authorization and secure storage.
core-ui:
The ``docking`` package supports a window environment similar to a web browser.
Each window can have multiple tabs.
Users can move tabs between existing windows,
or detach them into newly created windows.
-
+
The top-level Java FX ``Node`` for each application's
UI scene graph is basically a ``Tab``,
wrapped in a Phoebus ``DockItem`` that tracks the
@@ -76,7 +76,7 @@ core-ui:
The ``selection`` package allows publishing and monitoring a selection of
for example PVs.
-
+
The ``undo`` package simplifies the implementation of undo/redo
functionality.
diff --git a/docs/source/authorization.rst b/docs/source/authorization.rst
index 05361bb223..11c358754b 100644
--- a/docs/source/authorization.rst
+++ b/docs/source/authorization.rst
@@ -40,7 +40,7 @@ Example authorization configuration file::
alarm_ack = .*
# Specific users may configure alarms, including both "jane" and "janet"
- #alarm_config = fred, jane.*, egon,
+ #alarm_config = fred, jane.*, egon,
# Anybody can configure alarms
alarm_config = .*
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index 13eff931e9..dbe230d764 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -20,7 +20,7 @@ Date: TBD
* Highlight overdrawn area of embedded display in edit mode.
-Release 4.6.4
+Release 4.6.4
-------------------------------------------
Date: Nov 16, 2020
diff --git a/docs/source/conf.py b/docs/source/conf.py
index dbef061c24..e5858324b6 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -300,7 +300,7 @@ def createDocListing(rst_file, header, roots):
out.write("""
.. toctree::
:maxdepth: 1
-
+
""")
for root in roots:
for (dirpath, dirnames, filenames) in walk(root):
diff --git a/docs/source/converter.rst b/docs/source/converter.rst
index 200355de3a..a7b9b828cb 100644
--- a/docs/source/converter.rst
+++ b/docs/source/converter.rst
@@ -18,7 +18,7 @@ Description
AdvancedConverter is a tool to convert massively and recursively CSS OPI to Phoebus BOB files. It will automatically convert the widgets and their properties from the legacy file format.
The converter takes folder or files and convert any OPI files into a BOB files (without delete previous OPI files).
-The programm keep the hierarchy, subfolders, scrypt and files inside.
+The programm keep the hierarchy, subfolders, scrypt and files inside.
Command Line
------------
@@ -32,7 +32,7 @@ Converts BOY "*".opi files to Display Builder "*".bob format
- One or more files to convert
-Exemples :
+Exemples :
*Convert and copy in another folder*
**-main org.csstudio.display.builder.model.AdvancedConverter** *-output* **output/path/to/folder input/path/to/folder**
@@ -45,7 +45,7 @@ Converter application
---------------------
Located in *Utility -> OPI converter*, it will generate a pop up window. In this pop up, you can choose a input file or folder with the Browse button in the input section. In a similar way, you can choose or not a output folder.
-To run the conversion you need to press the run button.
+To run the conversion you need to press the run button.
.. image:: converter_path.png
@@ -56,7 +56,7 @@ If the output is empty, the conversion will be done in the input folder.
Right before the conversion, you might have an overriding message window. It appear when you already converted a file in the output folder.
-If you select **YES**, it will **delete** all bob files present in the output folder and process the conversion normaly and convert evey opi files.
+If you select **YES**, it will **delete** all bob files present in the output folder and process the conversion normaly and convert evey opi files.
If you select **NO**, you return in the browsing section.
diff --git a/docs/source/convertor.rst b/docs/source/convertor.rst
index 9318f05152..2348a1259f 100644
--- a/docs/source/convertor.rst
+++ b/docs/source/convertor.rst
@@ -18,7 +18,7 @@ Description
AdvancedConverter is a tool to convert massively and recursively CSS OPI to Phoebus BOB files. It will automatically convert the widgets and their properties from the legacy file format.
The converter takes folder or files and convert any OPI files into a BOB files (without delete previous OPI files).
-The programm keep the hierarchy, subfolders, scrypt and files inside.
+The programm keep the hierarchy, subfolders, scrypt and files inside.
Command Line
------------
@@ -32,7 +32,7 @@ Converts BOY "*".opi files to Display Builder "*".bob format
- One or more files to convert
-Exemples :
+Exemples :
*Convert and copy in another folder*
**-main org.csstudio.display.builder.model.AdvancedConverter** *-output* **output/path/to/folder input/path/to/folder**
@@ -45,13 +45,13 @@ Converter application
---------------------
Located in *Utility -> OPI converter*, it will generate a pop up window. In this pop up, you can choose a input file or folder with the Browse button in the input section. In a similar way, you can choose or not a output folder.
-To run the conversion you need to press the run button.
+To run the conversion you need to press the run button.
If the output is empty, the conversion will be done in the input folder.
Right before the conversion, you might have an overriding message window. It appear when you already converted a file in the output folder.
-If you select **YES**, it will **delete** all bob files present in the output folder and process the conversion normaly and convert evey opi files.
+If you select **YES**, it will **delete** all bob files present in the output folder and process the conversion normaly and convert evey opi files.
If you select **NO**, you return in the browsing section.
diff --git a/docs/source/docker.rst b/docs/source/docker.rst
index 88ff6b0eec..f568387e7c 100644
--- a/docs/source/docker.rst
+++ b/docs/source/docker.rst
@@ -18,4 +18,3 @@ From another shell(make sure to leave the previous shell open)::
You may also pull the following image from docker hub if you don't want to build the image yourself::
sudo docker pull lgomezwhl/phoebus-ci:latest
-
diff --git a/docs/source/eclipse_debugging.rst b/docs/source/eclipse_debugging.rst
index 2e3277e5ca..e7b284c40f 100644
--- a/docs/source/eclipse_debugging.rst
+++ b/docs/source/eclipse_debugging.rst
@@ -45,4 +45,4 @@ This assumes the project has been imported as a maven project into Eclipse (see
11. Click `Debug`
-Now this should connect to your JVM process you started on step 6 and you start debugging your code. Happy debugging!
\ No newline at end of file
+Now this should connect to your JVM process you started on step 6 and you start debugging your code. Happy debugging!
diff --git a/docs/source/gui_testing.rst b/docs/source/gui_testing.rst
index 49775df5db..4b46f16133 100644
--- a/docs/source/gui_testing.rst
+++ b/docs/source/gui_testing.rst
@@ -32,4 +32,4 @@ An example of UI testing may look like this::
The snippet above is from "phoebus/core/ui/src/test/java/org/phoebus/ui/docking/SplitDockTestUI.java".
-TestFX has known issues such as incorrect behavior in headless mode and some unsupported nodes. For those issues you can follow their issue tracker https://github.com/TestFX/TestFX/issues
\ No newline at end of file
+TestFX has known issues such as incorrect behavior in headless mode and some unsupported nodes. For those issues you can follow their issue tracker https://github.com/TestFX/TestFX/issues
diff --git a/docs/source/help_system.rst b/docs/source/help_system.rst
index 5c1626cd88..1b7ec0112e 100644
--- a/docs/source/help_system.rst
+++ b/docs/source/help_system.rst
@@ -57,12 +57,12 @@ Complete build steps of manual and product::
# Fetch dependencies
( cd phoebus/dependencies; mvn clean install )
-
+
# Build the product, which bundles help from
# ../phoebus-doc/build/html
# as phoebus-product/target/doc
( cd phoebus; ant clean dist )
-
+
# Could now run the product
( cd phoebus/phoebus-product; sh phoebus.sh )
diff --git a/docs/source/locations.rst b/docs/source/locations.rst
index 4eace4c04e..d635ddc69f 100644
--- a/docs/source/locations.rst
+++ b/docs/source/locations.rst
@@ -31,7 +31,7 @@ The ``phoebus.install`` location is used for branding and site-specific settings
At startup, Phoebus load preferences from this file if it is found
in the install location.
This allows packing site-specific settings into your product.
-
+
``site_splash.png``:
This image will replace the default splash screen background
with a site-specific version.
@@ -39,4 +39,4 @@ The ``phoebus.install`` location is used for branding and site-specific settings
``site_logo.png``:
This 64x64 sized image will replace the default window logo.
-
+
diff --git a/docs/source/logging.rst b/docs/source/logging.rst
index 842a333538..2114dab181 100644
--- a/docs/source/logging.rst
+++ b/docs/source/logging.rst
@@ -20,4 +20,3 @@ The default configuration sends log messages to the console, i.e. the terminal w
the product was started.
On Windows, there might not be a terminal, and on other systems, a launcher script might redirect the console output.
The "Error Log" application allows viewing log messages in the product GUI.
-
diff --git a/docs/source/phoebus_product.rst b/docs/source/phoebus_product.rst
index dd09132a3a..071871e507 100644
--- a/docs/source/phoebus_product.rst
+++ b/docs/source/phoebus_product.rst
@@ -8,4 +8,4 @@ products can be include or exclude applications and configurations to address th
workflow.
Detailed instructions along with some examples of site specific products can be found
-`here `_
\ No newline at end of file
+`here `_
diff --git a/docs/source/running.rst b/docs/source/running.rst
index 6adb19c3f6..c0662ff650 100644
--- a/docs/source/running.rst
+++ b/docs/source/running.rst
@@ -9,17 +9,17 @@ From the command-line, invoke ``phoebus.sh -help``, which will look
similar to this, but check your copy of CS-Studio/Phoebus
for the complete list::
- _______ _______ _______ ______ _______
+ _______ _______ _______ ______ _______
( ____ )|\ /|( ___ )( ____ \( ___ \ |\ /|( ____ \
| ( )|| ) ( || ( ) || ( \/| ( ) )| ) ( || ( \/
- | (____)|| (___) || | | || (__ | (__/ / | | | || (_____
+ | (____)|| (___) || | | || (__ | (__/ / | | | || (_____
| _____)| ___ || | | || __) | __ ( | | | |(_____ )
| ( | ( ) || | | || ( | ( \ \ | | | | ) |
| ) | ) ( || (___) || (____/\| )___) )| (___) |/\____) |
|/ |/ \|(_______)(_______/|/ \___/ (_______)\_______)
-
+
Command-line arguments:
-
+
-help - This text
-splash - Show splash screen
-nosplash - Suppress the splash screen
@@ -74,12 +74,12 @@ be interpreted by the Linux shell, best enclose all resources in quotes.
Open probe with a PV name::
- phoebus.sh -resource "pv://?sim://sine&app=probe"
+ phoebus.sh -resource "pv://?sim://sine&app=probe"
Open PV Table with some PVs::
- phoebus.sh -resource "pv://?MyPV&AnotherPV&YetAnotherPV&app=pv_table"
+ phoebus.sh -resource "pv://?MyPV&AnotherPV&YetAnotherPV&app=pv_table"
Note that all these examples use the internal name of the application feature,
for example "pv_table", and not the name that is displayed the user interface,
@@ -112,7 +112,7 @@ For this scenario, invoke ``phoebus.sh`` with the ``-server`` option, using
a TCP port that you reserve for this use on that computer, for example::
phoebus.sh -server 4918
-
+
The first time you start phoebus this way, it will actually open the main window.
Follow-up invocations, for example::
diff --git a/docs/source/services_architecture.rst b/docs/source/services_architecture.rst
index 3591654b12..69ef4c70fa 100644
--- a/docs/source/services_architecture.rst
+++ b/docs/source/services_architecture.rst
@@ -12,7 +12,7 @@ Architecture diagram
Settings configuration
----------------------
-Example of settings.ini
+Example of settings.ini
**Alarm Server**
diff --git a/docs/source/trouble_shooting.rst b/docs/source/trouble_shooting.rst
index dfeda96851..d90f9f1ac5 100644
--- a/docs/source/trouble_shooting.rst
+++ b/docs/source/trouble_shooting.rst
@@ -14,7 +14,7 @@ Slow running and latency behavior
| Increase the Java Heap Size allocation. It works for any Java Application (Eclipse, CS-Studio ...)
| Edit launching scripts phoebus.sh or phoebus.bat
-| and configure JVM options Xms and Xmx (Java Heap Minimum Size and Java Heap Maximum Size)
+| and configure JVM options Xms and Xmx (Java Heap Minimum Size and Java Heap Maximum Size)
.. code-block:: shell
@@ -100,15 +100,15 @@ Start alarm services without the console
**procedure**
| The services can also be started without any prompt.
-| Start the service with *-noshell* argument
+| Start the service with *-noshell* argument
.. code-block:: systemd
-
+
#Phoebus alarm server
ExecStart=/opt/alarm-phoebus-server/current/alarm-server.sh -settings ${SERVER}/settings.ini -config ${CONFIG} -noshell
.. code-block:: systemd
-
+
#Phoebus alarm logger
ExecStart=/opt/alarm-logger/current/alarm-logger.sh -properties ./application.properties -noshell
@@ -126,6 +126,5 @@ Phoebus Alarm Server does not find any PV.
| The path to the settings.ini can be given by the --settings argument
.. code-block:: systemd
-
- ExecStart=/opt/alarm-phoebus-server/current/alarm-server.sh -settings ${SERVER}/settings.ini -config ${CONFIG} -noshell
+ ExecStart=/opt/alarm-phoebus-server/current/alarm-server.sh -settings ${SERVER}/settings.ini -config ${CONFIG} -noshell
diff --git a/jitpack.yml b/jitpack.yml
index f2c3aeef88..81ddb078ac 100644
--- a/jitpack.yml
+++ b/jitpack.yml
@@ -2,4 +2,4 @@ before_install:
# update maven version 3.9.9
- sdk install maven 3.9.9
install:
- - mvn install -DskipTests
\ No newline at end of file
+ - mvn install -DskipTests
diff --git a/phoebus-product/README.md b/phoebus-product/README.md
index 96fb1a4d96..43dd3f2b32 100644
--- a/phoebus-product/README.md
+++ b/phoebus-product/README.md
@@ -18,66 +18,66 @@ For site-specific examples, see
* https://github.com/shroffk/nsls2-phoebus (actually creates several products for 'beamline' vs. 'accelerator')
* https://github.com/kasemir/phoebus-sns
-
+
## Building native installers with `jpackage`
-
- `jpackage` (https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html) is a tool bundled with the
- JDK from version 14. It can be used to build native installers for MacOS (pkg or dmg),
- Windows (msi or exe) and Linux (deb or rpm). Such installers will include all dependencies, including the Java
+
+ `jpackage` (https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html) is a tool bundled with the
+ JDK from version 14. It can be used to build native installers for MacOS (pkg or dmg),
+ Windows (msi or exe) and Linux (deb or rpm). Such installers will include all dependencies, including the Java
runtime.
-
+
The following use cases have been verified:
-
+
* MacOS versions 10,11,12,13, dmg and pkg.
* Windows 10, msi only.
-
+
#### Prerequisites
* A working Phoebus build environment, i.e. JDK 11 and Maven.
* `jpackage` must be run on the same OS as the target OS, i.e. cross builds are not supported.
- * JDK 14 or newer.
+ * JDK 14 or newer.
* On Windows you also need to install the "WiX" tools, available here: https://wixtoolset.org/.
* Prepare application icons, to be placed in the top level folder of your product package:
* `ico` for Windows
* `icns` for MacOS
* `png` for Linux
-
+
#### Step-by-step
-
+
1. Build your product package (zip or gz), e.g. `mvn -Djavafx.platform=[linux|win|mac] clean verify`.
2. Copy the generated zip/gz file to some temporary folder and cd to it.
3. Extract the zip/gz. In the following the folder created is referred to as `unzipped`.
4. Identify the name of the product jar. In the following referred to as `product--.jar`.
5. Determine a version for your application, in the following referred to as `app_version`.
6. For Window installers determine a menu group in which the application will be placed. If the group does not
- exist, it will be created.
+ exist, it will be created.
7. Identify the path to the Java 11 SDK. In the following referred to as ``. See below for additional
information on the selecttion of target Java runtime.
-
+
##### `jpackage` build step 1
`jpackage --name --input unzipped --type app-image --main-jar product--.jar
--icon unzipped/ [--java-options -Dprism.lcdtext=false] --java-options --java-options
-Dcom.sun.webkit.useHTTP2Loader=false --runtime-image `
-
+
NOTE: the `--java-options -Dprism.lcdtext=false` portion is for MacOS only.
-
+
Additional Java options are added using `--java-options `.
##### `jpackage` build step 2, MacOS
`jpackage --name --app-version --app-image .app --type [pkg|dmg]`
-
+
##### `jpackage` build step 2, Windows
`jpackage --name --app-version --app-image --type [msi|exe] --win-menu --win-shortcut --win-menu-group `
##### `jpackage` build step 2, Linux
`jpackage --name --app-version --app-image --type [deb|rpm]`
-
-#### Additional installer options
-Additional customization of the installer is available for all platforms,
+
+#### Additional installer options
+Additional customization of the installer is available for all platforms,
see https://docs.oracle.com/en/java/javase/14/docs/specs/man/jpackage.html.
### Deployment considerations
-The application policy of the target OS may prohibit installation or launch of a package or application downloaded over HTTP(S). On
+The application policy of the target OS may prohibit installation or launch of a package or application downloaded over HTTP(S). On
Windows 10 the user will be presented with a warning message that can be dismissed to complete the installation. On
MacOS 10.15.7 the installation will complete, but the application may not be able to launch.
@@ -92,17 +92,17 @@ and MacOS at the European Spallation Source.
### Selection of target Java runtime
During build (step 1) a target Java runtime is specified. If this option (`--runtime-image`) is omitted, `jpackage` will
bundle the Java runtime containing the `jpackage` tool, i.e. Java 14+. Tests on Windows shows that the
-target runtime selection may impact the end result, i.e. the Phoebus application installed from the msi file.
-For instance, while the Java runtime Adopt JDK 11.0.9 can be bundled into a working installation,
+target runtime selection may impact the end result, i.e. the Phoebus application installed from the msi file.
+For instance, while the Java runtime Adopt JDK 11.0.9 can be bundled into a working installation,
Adopt JDK 11.0.12 will not work when Phoebus is launched. On MacOS Adopt JDK 11.0.12 works fine.
### Application signing
Starting from MacOS 13.2 (possibly from 13.0), installer packages must be signed for a hassle-free installation process.
To include signing in the `jpackage` build, add the following in step 1:
-`--mac-sign
---mac-package-identifier org.phoebus.product.Launcher
---mac-package-name CSS-Phoebus
---mac-signing-keychain "/Library/Keychains/System.keychain"
+`--mac-sign
+--mac-package-identifier org.phoebus.product.Launcher
+--mac-package-name CSS-Phoebus
+--mac-signing-keychain "/Library/Keychains/System.keychain"
--mac-signing-key-user-name 'Developer ID Application: European Spallation Source Eric (W2AG9MPZ43)'`.
Here the `--mac-signing-key-user-name` value identifies a certificate installed on the Mac OS host. Note that the
@@ -111,5 +111,5 @@ Developer Program may request/create such certificates.
`
-
-
\ No newline at end of file
+
+
diff --git a/phoebus-product/build.xml b/phoebus-product/build.xml
index 0e900725bd..480d1e65ab 100644
--- a/phoebus-product/build.xml
+++ b/phoebus-product/build.xml
@@ -15,7 +15,7 @@
-
+
@@ -30,7 +30,7 @@
-
+
diff --git a/phoebus-product/phoebus.bat b/phoebus-product/phoebus.bat
index eaf0a54676..3e6ae51d05 100644
--- a/phoebus-product/phoebus.bat
+++ b/phoebus-product/phoebus.bat
@@ -36,4 +36,3 @@ echo on
@REM CA_DISABLE_REPEATER=true: Don't start CA repeater (#494)
@REM To get one instance, use server mode by adding `-server 4918`
@java -DCA_DISABLE_REPEATER=true -Dfile.encoding=UTF-8 -jar "%JAR%" %*
-
diff --git a/phoebus-product/pom.xml b/phoebus-product/pom.xml
index 9b826bb70c..366cc94e53 100644
--- a/phoebus-product/pom.xml
+++ b/phoebus-product/pom.xml
@@ -166,7 +166,7 @@
org.phoebusapp-display-waterfallplot6.0.0-SNAPSHOT
-
+
org.phoebusapp-display-editor
diff --git a/phoebus-product/src/assembly/package.xml b/phoebus-product/src/assembly/package.xml
index 5bed0acaa3..1704a27313 100644
--- a/phoebus-product/src/assembly/package.xml
+++ b/phoebus-product/src/assembly/package.xml
@@ -1,4 +1,4 @@
-bin
@@ -43,4 +43,4 @@
-
\ No newline at end of file
+
diff --git a/pom.xml b/pom.xml
index 30d07547ae..c4ec803e12 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,7 +147,7 @@
-
+
org.apache.maven.pluginsmaven-javadoc-plugin
diff --git a/services/README.md b/services/README.md
index f02291efa8..1e8bd00426 100644
--- a/services/README.md
+++ b/services/README.md
@@ -6,7 +6,7 @@ Modules in this directory include CS Studio/Phoebus middleware services:
* Alarm Logger
* Alarm Service
* Archive Engine
-* Save-and-Restore
+* Save-and-Restore
Additional middleware services are maintained in other repositories:
* Phoebus Logbook Service (Olog): https://github.com/Olog/phoebus-olog
@@ -20,7 +20,7 @@ Phoebus services depend:
* Elasticsearch
* Used by Save-and-Restore, Alarm Logger, Channel Finder and Olog
-* MongoDB
+* MongoDB
* Used by Olog (see https://github.com/Olog/phoebus-olog)
* Kafka + Zookeeper
* Used by Alarm Server and Alarm Logger
@@ -43,7 +43,7 @@ MONGO_HOST_IP_ADDRESS=
Where
* ``````: the IP address where docker is launched.
* ```/Accelerator.xml```: absolute path to the ```Accelerator.xml``` alarm config file.
-* ```/settings.properties```: absolute path to the ```settings.properties``` file.
+* ```/settings.properties```: absolute path to the ```settings.properties``` file.
The ```settings.properties``` file is needed to define the default EPICS protocol like so:
```org.phoebus.pv/default=pva```
diff --git a/services/alarm-config-logger/README.md b/services/alarm-config-logger/README.md
index b351e7749c..085d0e65d7 100644
--- a/services/alarm-config-logger/README.md
+++ b/services/alarm-config-logger/README.md
@@ -12,7 +12,7 @@ mvn clean install
java -jar target/alarm-config-logger-.jar
```
-2. Using spring boot
+2. Using spring boot
```mvn spring-boot:run```
### Description ###
@@ -22,14 +22,14 @@ The alarm config model creates a git repository, sharing the same name as the al
The repo structure is as follows.
-Accelerator/
- .restore-script/config.xml # It consists of an XMl dump of the alarm server configuration after each config change
- Node1/
- alarmconfig.json # A json representation of the alarm configuration of this node
- PV:alarmPV1/
- alarmconfig.json # A json representation of the alarm configuration of this pv
- PV:alarmPV1/
- PV:alarmPV1/
+Accelerator/
+ .restore-script/config.xml # It consists of an XMl dump of the alarm server configuration after each config change
+ Node1/
+ alarmconfig.json # A json representation of the alarm configuration of this node
+ PV:alarmPV1/
+ alarmconfig.json # A json representation of the alarm configuration of this pv
+ PV:alarmPV1/
+ PV:alarmPV1/
The split between the config.xml and the file structure is to simplify the process of auditing the changes associated with a single pv of node within the alarm tree. The use of only the version controlled config.xml would require sifting through all the changes on the alarm tree.
diff --git a/services/alarm-config-logger/pom.xml b/services/alarm-config-logger/pom.xml
index 80fa30cfc0..a67624df54 100644
--- a/services/alarm-config-logger/pom.xml
+++ b/services/alarm-config-logger/pom.xml
@@ -76,7 +76,7 @@
${jgit.version}
-
+ org.slf4jslf4j-jdk141.7.28
diff --git a/services/alarm-config-logger/src/assembly/src.xml b/services/alarm-config-logger/src/assembly/src.xml
index 1372ecae10..5d61e43c9a 100644
--- a/services/alarm-config-logger/src/assembly/src.xml
+++ b/services/alarm-config-logger/src/assembly/src.xml
@@ -1,4 +1,4 @@
-bin
@@ -25,4 +25,4 @@
-
\ No newline at end of file
+
diff --git a/services/alarm-config-logger/src/main/resources/alarm_config_logger.properties b/services/alarm-config-logger/src/main/resources/alarm_config_logger.properties
index f3186fcdae..667b75c447 100644
--- a/services/alarm-config-logger/src/main/resources/alarm_config_logger.properties
+++ b/services/alarm-config-logger/src/main/resources/alarm_config_logger.properties
@@ -6,7 +6,7 @@ kafka_properties=
# Location of the git repo
local.location=/tmp/alarm_repo
-# location of the remote git repo,
+# location of the remote git repo,
# The complete URI of the remote is created using the remote.location
# it is recommended that your remote url end in the alarm topic assigned to this config service alarm_topic
# e.g. remote URL
diff --git a/services/alarm-logger/README.md b/services/alarm-logger/README.md
index 5aca2fccf3..4b05e3b48f 100644
--- a/services/alarm-logger/README.md
+++ b/services/alarm-logger/README.md
@@ -4,8 +4,8 @@ The alarm logging service (aka alarm-logger) records all alarm messages to creat
This is an elasticsearch back end.
## Dependencies ##
-1. Elasticsearch version 8.x OS specific release can be found here:
-https://www.elastic.co/downloads/past-releases#elasticsearch
+1. Elasticsearch version 8.x OS specific release can be found here:
+https://www.elastic.co/downloads/past-releases#elasticsearch
The CI/CD pipeline is setup to test with elastic release 8.2.3
### Start elasticsearch
@@ -20,7 +20,7 @@ elasticsearch defaults to port 9200, however if elasticsearch is configured to u
#### Build the alarm server
-```
+```
mvn clean install
```
or
@@ -36,11 +36,11 @@ ant clean dist
```
java -jar target/alarm-logger-.jar -topics MY,ALARM,CONFIGS
```
-The argument for the ```-topics``` switch is the comma separated list of alarm configurations you wish to be
-logged. An alarm configuration is the value specified
+The argument for the ```-topics``` switch is the comma separated list of alarm configurations you wish to be
+logged. An alarm configuration is the value specified
for the ```-config``` switch when starting an alarm server instance. See the README.md file in the alarm-server module.
-2. Using spring boot
+2. Using spring boot
```
mvn spring-boot:run
@@ -56,7 +56,7 @@ It may be useful to troubleshoot the system independently from production alarm
#### Configuration
-The alarm logger can be configured via command line switches when running the jar, see option `-help` for details,
+The alarm logger can be configured via command line switches when running the jar, see option `-help` for details,
or via properties documented in [here](https://github.com/ControlSystemStudio/phoebus/blob/master/services/alarm-logger/src/main/resources/alarm_logger.properties)
#### Check Service Status
@@ -93,7 +93,7 @@ curl -X GET 'localhost:8080/search/alarm?pv=*'
## Data Management
-The most common aspects for effectively configuring the alarm logger are:
+The most common aspects for effectively configuring the alarm logger are:
### Creating an elasticsearch index
@@ -116,7 +116,7 @@ While finer grained (weekly or even daily) indexing is possible, it will likely
### Cleanup
Obsolete data should be periodically removed, this can be achieved by deleting the indices from elastic which contain
-stale data.
+stale data.
One or more indices can be deleted with the following command:
@@ -126,25 +126,25 @@ curl -X DELETE 'localhost:9200/accelerator_alarms_state_2019-02-*'
## Release
-**Prepare the release**
-`mvn release:prepare`
+**Prepare the release**
+`mvn release:prepare`
In this step will ensure there are no uncommitted changes, ensure the versions number are correct, tag the scm, etc.
A full list of checks is documented [here](https://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html).
-**Perform the release**
-`mvn -Darguments="-Dskip-executable-jar" -Pdocs,releases release:perform`
+**Perform the release**
+`mvn -Darguments="-Dskip-executable-jar" -Pdocs,releases release:perform`
Checkout the release tag, build, sign and push the build binaries to sonatype. The `docs` profile is needed in order
to create required javadocs jars.
# Docker
-The latest version of the service is available as a Docker image (ghcr.io/controlsystemstudio/phoebus/service-alarm-logger:master).
+The latest version of the service is available as a Docker image (ghcr.io/controlsystemstudio/phoebus/service-alarm-logger:master).
Pushes to the master branch into this directory will trigger a new build of the image.
Docker compose file is provided. It requires the following environment variable to be set:
```KAFKA_HOST_IP_ADDRESS=1.2.3.4```
-```ELASTIC_HOST_IP_ADDRESS=1.2.3.4```
+```ELASTIC_HOST_IP_ADDRESS=1.2.3.4```
```ALARM_TOPICS```: comma-separated list of alarm topics subscribed to by the service
This may be preferable compared to setting environment variables on command line, e.g.
diff --git a/services/alarm-logger/build.xml b/services/alarm-logger/build.xml
index 68c6c16afa..6c1a529023 100644
--- a/services/alarm-logger/build.xml
+++ b/services/alarm-logger/build.xml
@@ -53,10 +53,10 @@
-
+
-
+
@@ -75,7 +75,7 @@
-
+
diff --git a/services/alarm-logger/data_management/delete_alarm_index.sh b/services/alarm-logger/data_management/delete_alarm_index.sh
index db31312127..7bc370b006 100644
--- a/services/alarm-logger/data_management/delete_alarm_index.sh
+++ b/services/alarm-logger/data_management/delete_alarm_index.sh
@@ -15,4 +15,4 @@ curl -XDELETE http://${es_host}:${es_port}/${1}_alarms_state
curl -XDELETE http://${es_host}:${es_port}/${1}_alarms_cmd
# Delete the elastic index with the correct mapping for alarm config messages.
-curl -XDELETE http://${es_host}:${es_port}/${1}_alarms_config
\ No newline at end of file
+curl -XDELETE http://${es_host}:${es_port}/${1}_alarms_config
diff --git a/services/alarm-logger/data_management/delete_alarm_template.sh b/services/alarm-logger/data_management/delete_alarm_template.sh
index ac3f01615c..efcc573b04 100644
--- a/services/alarm-logger/data_management/delete_alarm_template.sh
+++ b/services/alarm-logger/data_management/delete_alarm_template.sh
@@ -13,4 +13,4 @@ curl -XDELETE http://${es_host}:${es_port}/_template/alarms_cmd_template
curl -XDELETE http://${es_host}:${es_port}/_template/alarms_config_template
echo "Alarm templates:"
-curl -X GET "${es_host}:${es_port}/_template/*alarm*"
\ No newline at end of file
+curl -X GET "${es_host}:${es_port}/_template/*alarm*"
diff --git a/services/alarm-logger/doc/index.rst b/services/alarm-logger/doc/index.rst
index 635384a036..0e52eb6133 100644
--- a/services/alarm-logger/doc/index.rst
+++ b/services/alarm-logger/doc/index.rst
@@ -1,10 +1,10 @@
Alarm Logging Service
=====================
-The alarm logging service records all alarm messages to create an archive of all
+The alarm logging service records all alarm messages to create an archive of all
alarm state changes and the associated actions.
-This historical data can be used to:
+This historical data can be used to:
1. Discover alarm patterns and trends
2. Generate Statistical reports on alarms
@@ -21,15 +21,15 @@ The alarm logging service creates kafka streams which can be configured to monit
Examples:
-* **Configuration changes**
+* **Configuration changes**
- e.g. when new alarm nodes or pvs are added or removed or existing ones are enabled/disabled
+ e.g. when new alarm nodes or pvs are added or removed or existing ones are enabled/disabled
-* **State changes**
+* **State changes**
e.g. alarm state changes from OK to MAJOR
-* **Commands**
+* **Commands**
e.g. a user actions to *Acknowledge* an alarm
@@ -53,4 +53,4 @@ API
.. safe_openapi:: ../../../../../services/alarm-logger/target/spec-open-api.json
-.. _SpringDocumentation: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html
\ No newline at end of file
+.. _SpringDocumentation: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html
diff --git a/services/alarm-logger/docker-compose-alarm-logger.yml b/services/alarm-logger/docker-compose-alarm-logger.yml
index 9b35ff05a9..e0534a99de 100644
--- a/services/alarm-logger/docker-compose-alarm-logger.yml
+++ b/services/alarm-logger/docker-compose-alarm-logger.yml
@@ -6,5 +6,3 @@ services:
command: >
/bin/bash -c "
java -jar /alarmlogger/service-alarm-logger-*.jar -bootstrap.servers ${KAFKA_HOST_IP_ADDRESS}:9092 -es_host ${ELASTIC_HOST_IP_ADDRESS} -topics ${ALARM_TOPICS} -noshell"
-
-
diff --git a/services/alarm-logger/src/assembly/src.xml b/services/alarm-logger/src/assembly/src.xml
index 1372ecae10..5d61e43c9a 100644
--- a/services/alarm-logger/src/assembly/src.xml
+++ b/services/alarm-logger/src/assembly/src.xml
@@ -1,4 +1,4 @@
-bin
@@ -25,4 +25,4 @@
-
\ No newline at end of file
+
diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmCmdLogger.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmCmdLogger.java
index 3a1ab27433..f42f48f4a7 100644
--- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmCmdLogger.java
+++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmCmdLogger.java
@@ -31,7 +31,7 @@
/**
* A Runnable which consumes the alarm command messages and records them to an
- * elastic index.
+ * elastic index.
*
* @author Kunal Shroff
*
@@ -44,7 +44,7 @@ public class AlarmCmdLogger implements Runnable {
private final String topic;
private final Serde alarmCommandMessageSerde;
-
+
private IndexNameHelper indexNameHelper;
private volatile boolean shouldReconnect = true;
@@ -53,7 +53,7 @@ public class AlarmCmdLogger implements Runnable {
private Thread shutdownHook = null;
/**
- * Create a alarm command message logger for the given topic.
+ * Create a alarm command message logger for the given topic.
* This runnable will create the kafka streams for the given alarm messages which match the format 'topicCommand'
* @param topic the alarm topic
* @throws Exception - parsing the alarm command messages
@@ -181,9 +181,9 @@ public KeyValue transform(String key, AlarmCommandM
@Override
public void close() {
-
+
}
-
+
};
}
});
diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmMessageLogger.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmMessageLogger.java
index 8e29dc51e5..f606ef7685 100644
--- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmMessageLogger.java
+++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/AlarmMessageLogger.java
@@ -57,7 +57,7 @@ public class AlarmMessageLogger implements Runnable {
* Create a alarm logger for the alarm messages (both state and configuration)
* for a given alarm server topic.
* This runnable will create the kafka streams for the given alarm messages which match the format 'topic'
- *
+ *
* @param topic - the alarm topic in kafka
*/
public AlarmMessageLogger(String topic) {
@@ -314,7 +314,7 @@ public void init(ProcessorContext context) {
@Override
public KeyValue transform(String key, AlarmMessage value) {
-
+
key = key.replace("\\", "");
if(value != null) {
AlarmConfigMessage newValue = value.getAlarmConfigMessage();
@@ -328,9 +328,9 @@ public KeyValue transform(String key, AlarmMessage v
@Override
public void close() {
-
+
}
-
+
};
}
});
diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/RequestLoggingFilterConfig.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/RequestLoggingFilterConfig.java
index 090b5b0a94..f0bd3d23a9 100644
--- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/RequestLoggingFilterConfig.java
+++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/RequestLoggingFilterConfig.java
@@ -18,4 +18,4 @@ public CommonsRequestLoggingFilter logFilter() {
filter.setAfterMessagePrefix("REQUEST DATA : ");
return filter;
}
-}
\ No newline at end of file
+}
diff --git a/services/alarm-logger/src/main/resources/alarms_cmd_template.json b/services/alarm-logger/src/main/resources/alarms_cmd_template.json
index a697d97a49..e7ae04bff2 100644
--- a/services/alarm-logger/src/main/resources/alarms_cmd_template.json
+++ b/services/alarm-logger/src/main/resources/alarms_cmd_template.json
@@ -24,4 +24,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/services/alarm-logger/src/main/resources/alarms_config_template.json b/services/alarm-logger/src/main/resources/alarms_config_template.json
index 908e0d4c93..af1ad66b1c 100644
--- a/services/alarm-logger/src/main/resources/alarms_config_template.json
+++ b/services/alarm-logger/src/main/resources/alarms_config_template.json
@@ -30,4 +30,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/services/alarm-logger/src/main/resources/alarms_state_template.json b/services/alarm-logger/src/main/resources/alarms_state_template.json
index 94f123bb4d..16f91464a8 100644
--- a/services/alarm-logger/src/main/resources/alarms_state_template.json
+++ b/services/alarm-logger/src/main/resources/alarms_state_template.json
@@ -43,4 +43,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/services/alarm-logger/src/main/resources/es7_mapping_definitions.sh b/services/alarm-logger/src/main/resources/es7_mapping_definitions.sh
index 8c2de36a4a..cc54848e09 100644
--- a/services/alarm-logger/src/main/resources/es7_mapping_definitions.sh
+++ b/services/alarm-logger/src/main/resources/es7_mapping_definitions.sh
@@ -132,4 +132,4 @@ curl -H 'Content-Type: application/json' -XPUT http://${es_host}:${es_port}/_tem
}
}
}
-}'
\ No newline at end of file
+}'
diff --git a/services/alarm-logger/src/test/resources/docker-compose.yml b/services/alarm-logger/src/test/resources/docker-compose.yml
index 752d114616..b81dfef18f 100644
--- a/services/alarm-logger/src/test/resources/docker-compose.yml
+++ b/services/alarm-logger/src/test/resources/docker-compose.yml
@@ -27,4 +27,4 @@ volumes:
driver: local
networks:
- esnet:
\ No newline at end of file
+ esnet:
diff --git a/services/alarm-server/README.md b/services/alarm-server/README.md
index 49425d5863..1abeda121b 100644
--- a/services/alarm-server/README.md
+++ b/services/alarm-server/README.md
@@ -53,8 +53,8 @@ some useful startup arguments include
Docker compose files are provided to cover two use cases:
1. ```docker-compose-alarm-server-only-import.yml``` will run the alarm server for the
- purpose of importing a configuration.
-2. ```docker-compose-alarm-server-only.yml``` will run the alarm server.
+ purpose of importing a configuration.
+2. ```docker-compose-alarm-server-only.yml``` will run the alarm server.
The docker compose files do **not** launch 3rd party services needed by the alarm service. User is advocated to
consult https://github.com/ControlSystemStudio/phoebus/blob/master/services/README.md for information on how
diff --git a/services/alarm-server/build.xml b/services/alarm-server/build.xml
index a2cedf4de0..d99a33bb7a 100644
--- a/services/alarm-server/build.xml
+++ b/services/alarm-server/build.xml
@@ -31,7 +31,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/services/alarm-server/doc/index.rst b/services/alarm-server/doc/index.rst
index 2f5890dd36..281ef5c462 100644
--- a/services/alarm-server/doc/index.rst
+++ b/services/alarm-server/doc/index.rst
@@ -9,5 +9,5 @@ and once the alarm PV recovers, the alarm clears.
For details on the original design based on JMS and an RDB, see
https://accelconf.web.cern.ch/icalepcs2009/papers/tua001.pdf
-
-For details on setting up Kafka, see app/alarm/Readme.md
+
+For details on setting up Kafka, see app/alarm/Readme.md
diff --git a/services/alarm-server/docker-compose-alarm-server-only-import.yml b/services/alarm-server/docker-compose-alarm-server-only-import.yml
index 794dc58e28..f4d936ff54 100644
--- a/services/alarm-server/docker-compose-alarm-server-only-import.yml
+++ b/services/alarm-server/docker-compose-alarm-server-only-import.yml
@@ -6,4 +6,4 @@ services:
command: >
/bin/bash -c "
java -jar /alarmserver/service-alarm-server-*.jar -config ${CONFIG} -import ${CONFIG_FILE} -server ${KAFKA_HOST_IP_ADDRESS}:9092"
-
+
diff --git a/services/alarm-server/docker-compose-alarm-server-only.yml b/services/alarm-server/docker-compose-alarm-server-only.yml
index 0d741b6d60..4a7ce1784e 100644
--- a/services/alarm-server/docker-compose-alarm-server-only.yml
+++ b/services/alarm-server/docker-compose-alarm-server-only.yml
@@ -8,4 +8,4 @@ services:
command: >
/bin/bash -c "
java -jar /alarmserver/service-alarm-server-*.jar -settings ${ALARM_SERVICE_SETTINGS_FILE} -config ${CONFIG} -server ${KAFKA_HOST_IP_ADDRESS}:9092 -noshell"
-
+
diff --git a/services/alarm-server/pom.xml b/services/alarm-server/pom.xml
index 8ab8543b6f..5d05629717 100644
--- a/services/alarm-server/pom.xml
+++ b/services/alarm-server/pom.xml
@@ -64,7 +64,7 @@
6.0.0-SNAPSHOT
-
+ org.slf4jslf4j-jdk141.7.28
diff --git a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmConfigTool.java b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmConfigTool.java
index a6ae5fb71a..9e09c709b6 100644
--- a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmConfigTool.java
+++ b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmConfigTool.java
@@ -38,7 +38,7 @@ public class AlarmConfigTool
public void exportModel(String filename, String server, String config, String kafka_properties_file) throws Exception
{
final XmlModelWriter xmlWriter;
-
+
// Write to stdout or to file.
if (filename.equals("stdout"))
xmlWriter = new XmlModelWriter(System.out);
diff --git a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmStateInitializer.java b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmStateInitializer.java
index 0d8a09cbf7..a064625056 100644
--- a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmStateInitializer.java
+++ b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/AlarmStateInitializer.java
@@ -48,7 +48,7 @@ public class AlarmStateInitializer
/** Time the model must be stable for. Unit is seconds. Default is 4 seconds. */
public static long STABILIZATION_SECS = 4;
-
+
private final ResettableTimeout timer = new ResettableTimeout(CONNECTION_SECS);
private final AtomicBoolean running = new AtomicBoolean(true);
private final Consumer consumer;
diff --git a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/CreateTopics.java b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/CreateTopics.java
index e591daa77b..7b4a846d8a 100644
--- a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/CreateTopics.java
+++ b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/CreateTopics.java
@@ -47,7 +47,7 @@ public class CreateTopics
* @param compact If the topics to be created should be compacted.
* @param topics Topics to discover and create if missing.
*/
- public static void discoverAndCreateTopics (final String kafka_servers, final boolean compact,
+ public static void discoverAndCreateTopics (final String kafka_servers, final boolean compact,
final List topics, final String kafka_properties_file)
{
// Connect to Kafka server.
diff --git a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/actions/EmailActionExecutor.java b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/actions/EmailActionExecutor.java
index 32ce426fd2..6fa6884a59 100644
--- a/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/actions/EmailActionExecutor.java
+++ b/services/alarm-server/src/main/java/org/phoebus/applications/alarm/server/actions/EmailActionExecutor.java
@@ -54,7 +54,7 @@ static void sendEmail(final AlarmTreeItem> item, final String[] addresses)
}
}
- /** Create title for email, also used by Info PV
+ /** Create title for email, also used by Info PV
* @param item Item for which to create title
* @return Title
*/
@@ -81,7 +81,7 @@ static String createTitle(final AlarmTreeItem> item)
return buf.toString();
}
- /** Create info body for email, also used by Info PV
+ /** Create info body for email, also used by Info PV
* @param item Item for which to create info
* @return Info text
*/
diff --git a/services/alarm-server/src/main/resources/alarm_server.properties b/services/alarm-server/src/main/resources/alarm_server.properties
index 66f14f9af0..de5cebb41b 100644
--- a/services/alarm-server/src/main/resources/alarm_server.properties
+++ b/services/alarm-server/src/main/resources/alarm_server.properties
@@ -6,4 +6,4 @@
replicationFactor=1
# Kafka partition count
-numberOfPartitions=1
\ No newline at end of file
+numberOfPartitions=1
diff --git a/services/alarm-server/src/test/java/org/phoebus/applications/alarm/server/SeverityLevelHelperTest.java b/services/alarm-server/src/test/java/org/phoebus/applications/alarm/server/SeverityLevelHelperTest.java
index c3be9785bf..a659860ee7 100644
--- a/services/alarm-server/src/test/java/org/phoebus/applications/alarm/server/SeverityLevelHelperTest.java
+++ b/services/alarm-server/src/test/java/org/phoebus/applications/alarm/server/SeverityLevelHelperTest.java
@@ -87,4 +87,4 @@ public void getStatusMessage() {
statusMessage = SeverityLevelHelper.getStatusMessage(intValue);
assertEquals("HIGH", statusMessage);
}
-}
\ No newline at end of file
+}
diff --git a/services/alarm-server/src/test/resources/docker/docker-compose-kafka-cluster.yml b/services/alarm-server/src/test/resources/docker/docker-compose-kafka-cluster.yml
index 0ceb8f070d..fa31d36acf 100644
--- a/services/alarm-server/src/test/resources/docker/docker-compose-kafka-cluster.yml
+++ b/services/alarm-server/src/test/resources/docker/docker-compose-kafka-cluster.yml
@@ -67,4 +67,4 @@ services:
volumes:
kafka1_data:
kafka2_data:
- kafka3_data:
\ No newline at end of file
+ kafka3_data:
diff --git a/services/archive-engine/archive_config.xsd b/services/archive-engine/archive_config.xsd
index db820605bf..8af80b5cb7 100644
--- a/services/archive-engine/archive_config.xsd
+++ b/services/archive-engine/archive_config.xsd
@@ -3,16 +3,16 @@
-
+
@@ -21,7 +21,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -55,18 +55,18 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/services/archive-engine/build.xml b/services/archive-engine/build.xml
index cba44eb5e6..d7d55e8206 100644
--- a/services/archive-engine/build.xml
+++ b/services/archive-engine/build.xml
@@ -1,6 +1,6 @@
-
+
@@ -29,7 +29,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
@@ -71,5 +71,5 @@
-
-
\ No newline at end of file
+
+
diff --git a/services/archive-engine/dbd/MySQL.dbd b/services/archive-engine/dbd/MySQL.dbd
index 88c0f8ac71..09a7685732 100644
--- a/services/archive-engine/dbd/MySQL.dbd
+++ b/services/archive-engine/dbd/MySQL.dbd
@@ -12,7 +12,7 @@
#
# USE mysql;
# UPDATE user SET password=PASSWORD('YourPassword') WHERE User='root' AND Host = 'localhost';
-# FLUSH PRIVILEGES;
+# FLUSH PRIVILEGES;
#
#
# The commands below will create a setup that allows write-access when connected like this:
@@ -189,7 +189,7 @@ CREATE TABLE IF NOT EXISTS sample
str_val VARCHAR(120) NULL COMMENT 'String value or null',
datatype CHAR(1) CHARACTER SET binary NULL DEFAULT ' ' COMMENT 'Array element count, 1 for scalar',
array_val LONGBLOB NULL COMMENT 'Array data',
-
+
FOREIGN KEY (channel_id) REFERENCES channel (channel_id) ON DELETE CASCADE,
FOREIGN KEY (severity_id) REFERENCES severity (severity_id) ON DELETE CASCADE,
FOREIGN KEY (status_id) REFERENCES status (status_id) ON DELETE CASCADE
@@ -199,9 +199,9 @@ CREATE TABLE IF NOT EXISTS sample
#
# ALTER TABLE sample ADD COLUMN datatype CHAR(1) CHARACTER SET binary NULL DEFAULT ' ' COMMENT 'array_val data type' AFTER str_val;
# ALTER TABLE sample ADD COLUMN array_val LONGBLOB NULL COMMENT 'Array data' AFTER datatype;
-#
+#
# SHOW FULL COLUMNS FROM sample;
-
+
# Need index on channel_id and smpl_time?
CREATE INDEX sample_id_time ON sample ( channel_id, smpl_time, nanosecs );
@@ -211,7 +211,7 @@ INSERT INTO sample (channel_id, smpl_time, nanosecs, severity_id, status_id, flo
(1, '2004-01-10 13:01:11', 2, 1, 1, 3.16),
(1, '2004-01-10 13:01:10', 3, 1, 2, 3.15),
(1, '2004-01-10 13:01:10', 4, 1, 2, 3.14);
-
+
# To display array_val in MySQL, the closest might be
# SELECT ...datatype, SUBSTRING(HEX(array_val), 1, 8) AS ArrayCount, SUBSTRING(HEX(array_val), 9, 8) AS Array1 FROM sample WHERE ...
@@ -267,7 +267,7 @@ CREATE TABLE IF NOT EXISTS enum_metadata
# ----------------------
# Dump all values for all channels
SELECT channel.name, smpl_time, severity.name, status.name, float_val
- FROM channel, severity, status, sample
+ FROM channel, severity, status, sample
WHERE channel.channel_id = sample.channel_id AND
severity.severity_id = sample.severity_id AND
status.status_id = sample.status_id
@@ -286,4 +286,4 @@ SELECT channel.name AS channel,
status.status_id = sample.status_id
ORDER BY smpl_time
LIMIT 50;
-
+
diff --git a/services/archive-engine/dbd/postgres_schema.txt b/services/archive-engine/dbd/postgres_schema.txt
index 4947bd3b6c..3a60c6b6e4 100644
--- a/services/archive-engine/dbd/postgres_schema.txt
+++ b/services/archive-engine/dbd/postgres_schema.txt
@@ -45,18 +45,18 @@ SELECT * FROM pg_user;
-- The following would have to be executed _after_ creating the tables:
GRANT SELECT, INSERT, UPDATE, DELETE
- ON smpl_eng, retent, smpl_mode, chan_grp, channel, status, severity, sample, array_val, num_metadata, enum_metadata
+ ON smpl_eng, retent, smpl_mode, chan_grp, channel, status, severity, sample, array_val, num_metadata, enum_metadata
TO archive;
GRANT SELECT
- ON smpl_eng, retent, smpl_mode, chan_grp, channel, status, severity, sample, array_val, num_metadata, enum_metadata
+ ON smpl_eng, retent, smpl_mode, chan_grp, channel, status, severity, sample, array_val, num_metadata, enum_metadata
TO report;
-- Might have to check with \d which sequences were
-- created by Postgres to handle the SERIAL columns:
GRANT USAGE ON SEQUENCE
chan_grp_grpid_seq, channel_chid, retent_retentid_seq,
- severity_sevid, smpl_eng_engid_seq, status_statid
+ severity_sevid, smpl_eng_engid_seq, status_statid
TO archive;
*/
@@ -147,7 +147,7 @@ CREATE TABLE channel
grp_id BIGINT NULL,
smpl_mode_id BIGINT NULL,
smpl_val double precision NULL,
- smpl_per double precision NULL,
+ smpl_per double precision NULL,
retent_id BIGINT NULL,
retent_val DOUBLE precision NULL
);
@@ -166,7 +166,7 @@ SELECT * FROM channel;
------------------------
-- Severity mapping of severity ID to string
-CREATE SEQUENCE severity_sevid;
+CREATE SEQUENCE severity_sevid;
DROP TABLE IF EXISTS severity;
CREATE TABLE severity
@@ -208,7 +208,7 @@ CREATE TABLE sample
str_val VARCHAR(120) NULL,
datatype CHAR(1) NULL DEFAULT ' ',
array_val BYTEA NULL,
-
+
-- Note that these foreign keys are good for data consistency,
-- but bad for performance.
-- Writing to the table will be almost twice as fast without
@@ -281,7 +281,7 @@ CREATE TABLE enum_metadata
------------------------
-- Dump all values for all channels
SELECT channel.name, smpl_time, severity.name, status.name, float_val
- FROM channel, severity, status, sample
+ FROM channel, severity, status, sample
WHERE channel.channel_id = sample.channel_id AND
severity.severity_id = sample.severity_id AND
status.status_id = sample.status_id
@@ -298,4 +298,4 @@ SELECT channel.name AS channel,
ON sample.status_id = status.status_id
ORDER BY smpl_time
LIMIT 50;
-
+
diff --git a/services/archive-engine/doc/index.rst b/services/archive-engine/doc/index.rst
index 5dfac510f9..ccfef12019 100644
--- a/services/archive-engine/doc/index.rst
+++ b/services/archive-engine/doc/index.rst
@@ -154,7 +154,7 @@ The ``MySQL.dbd`` used to install the archive tables adds a few demo samples
for ``sim://sine(0, 10, 50, 0.1)`` around 2004-01-10 13:01, so you can simply
add that channel to a Data Browser and find data at that time.
-For PostgreSQL, change the URLs to
+For PostgreSQL, change the URLs to
``jdbc:postgresql://my.host.site.org:5432/archive``
In case of connection problems, you may want to start with ``my.host.site.org``
diff --git a/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/EngineWebServer.java b/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/EngineWebServer.java
index 2a5d1499dc..97a32a32f3 100644
--- a/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/EngineWebServer.java
+++ b/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/EngineWebServer.java
@@ -58,5 +58,3 @@ public void shutdown() throws Exception
server.join();
}
}
-
-
diff --git a/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/HTMLWriter.java b/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/HTMLWriter.java
index 88d972a697..3c9e382433 100644
--- a/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/HTMLWriter.java
+++ b/services/archive-engine/src/main/java/org/csstudio/archive/engine/server/HTMLWriter.java
@@ -31,7 +31,7 @@ public class HTMLWriter
/** Helper for marking every other table line */
private boolean odd_table_line = true;
- /**
+ /**
* Constructor return HTML Writer with start of HTML page.
* @param resp Response for which to create the writer
* @param title HTML title
diff --git a/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/RDBArchiveWriter.java b/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/RDBArchiveWriter.java
index 516a3f47fa..fcb6e39c3d 100644
--- a/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/RDBArchiveWriter.java
+++ b/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/RDBArchiveWriter.java
@@ -452,7 +452,7 @@ private void oldBatchDoubleSamples(final RDBWriteChannel channel,
if (Double.isNaN(additional.getDouble(i)))
insert_array_sample.setDouble(4, 0.0);
else
- insert_array_sample.setDouble(4, additional.getDouble(i));
+ insert_array_sample.setDouble(4, additional.getDouble(i));
// Batch
insert_array_sample.addBatch();
++batched_double_array_inserts;
diff --git a/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/TimestampHelper.java b/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/TimestampHelper.java
index 909d74afbb..86e355a442 100644
--- a/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/TimestampHelper.java
+++ b/services/archive-engine/src/main/java/org/csstudio/archive/writer/rdb/TimestampHelper.java
@@ -65,7 +65,7 @@ public static Instant fromMillisecs(final long millisecs)
}
return Instant.ofEpochSecond(seconds, nanoseconds);
}
-
+
/** Zone ID is something like "America/New_York".
* Within that zone, time might change between
* EDT (daylight saving) and EST (standard),
diff --git a/services/archive-engine/src/main/resources/webroot/index.html b/services/archive-engine/src/main/resources/webroot/index.html
index b6b14284a8..55a2149fdd 100644
--- a/services/archive-engine/src/main/resources/webroot/index.html
+++ b/services/archive-engine/src/main/resources/webroot/index.html
@@ -9,4 +9,4 @@
Welcome to the CSS Archive Engine.
You will be redirected shortly...