Commit 5b94176c authored by Stéphane  DALLONGEVILLE's avatar Stéphane DALLONGEVILLE

merge from test-ci

parents 9e516a05 8e065a7a
image: maven:latest
#workflow:
# rules:
# - if: $CI_COMMIT_TAG
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
stages:
- build
- package
- test
- deploy
- release
cache:
paths:
- .m2/repository
- build/
build-job:
stage: build
script:
- echo "Building Artifact"
- mvn $MAVEN_CLI_OPTS clean compile
artifacts:
when: on_success
expire_in: 1 hour
paths:
- build/
package-job:
stage: package
dependencies:
- build-job
script:
- echo "Packaging the code"
- mvn $MAVEN_CLI_OPTS package -Dmaven.test.skip=true
artifacts:
paths:
- build/
test-job:
stage: test
dependencies:
- build-job
script:
- echo "Checking files"
- mvn clean verify
artifacts:
when: on_success
expire_in: 1 hour
paths:
- build/
deploy-job:
stage: deploy
#only:
#- test-ci
dependencies:
- package-job
script:
- echo "Deploy artifact to the Nexus"
- mvn $MAVEN_CLI_OPTS deploy
artifacts:
when: on_success
expire_in: 1 hour
paths:
- build/*.jar
#release-job:
# stage: release
# #only:
# #- releases
# dependencies:
# - deploy-job
# script:
# - "/tools/maven-release"
\ No newline at end of file
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>icy-prod</id>
<username>${env.MAVEN_REPO_USER}</username>
<password>${env.MAVEN_REPO_PASS}</password>
</server>
</servers>
</settings>
\ No newline at end of file
......@@ -198,6 +198,7 @@
<archive>
<manifest>
<classpathLayoutType>custom</classpathLayoutType>
<!--suppress UnresolvedMavenProperty -->
<customClasspathLayout>$${artifact.artifactId}.$${artifact.extension}</customClasspathLayout>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
......@@ -210,6 +211,35 @@
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
......@@ -390,7 +420,8 @@
<distributionManagement>
<repository>
<id>icy-prod</id>
<url>https://icy-nexus.pasteur.fr/repository/icy-core/</url>
<!--suppress UnresolvedMavenProperty -->
<url>${env.MAVEN_REPO_URL}/icy-core/</url>
</repository>
<snapshotRepository>
<id>icy-dev</id>
......
......@@ -2070,7 +2070,7 @@ public class Canvas2D extends IcyCanvas2D implements ROITaskListener
final CanvasMap canvasMap;
/**
* GUI & setting
* GUI &amp; setting
*/
IcyToggleButton zoomFitCanvasButton;
Color bgColor;
......
......@@ -90,7 +90,7 @@ import plugins.kernel.canvas.Canvas2DPlugin;
import plugins.kernel.canvas.VtkCanvasPlugin;
/**
* @author Fabrice de Chaumont & Stephane Dallongeville<br>
* @author Fabrice de Chaumont &amp; Stephane Dallongeville<br>
* <br>
* An IcyCanvas is a basic Canvas used into the viewer. It contains a visual representation
* of the sequence and provides some facilities as basic transformation and view
......@@ -576,7 +576,7 @@ public abstract class IcyCanvas extends JPanel
}
/**
* Called by the viewer when canvas is closed to release some resources.<br/>
* Called by the viewer when canvas is closed to release some resources.<br>
* Be careful to not restore previous state here (as the colormap) because generally <code>shutdown</code> is called
* <b>after</b> the creation of the other canvas.
*/
......@@ -815,7 +815,7 @@ public abstract class IcyCanvas extends JPanel
}
/**
* Returns all layers attached to this canvas.<br/>
* Returns all layers attached to this canvas.<br>
*
* @param sorted
* If <code>true</code> the returned list is sorted on the layer priority.<br>
......@@ -858,7 +858,7 @@ public abstract class IcyCanvas extends JPanel
}
/**
* Returns all layers attached to this canvas.<br/>
* Returns all layers attached to this canvas.<br>
* The returned list is sorted on the layer priority.<br>
* Sort operation is cached so the method could take sometime when cache need to be rebuild.
*/
......@@ -890,7 +890,7 @@ public abstract class IcyCanvas extends JPanel
/**
* Returns all visible layers (visible property set to <code>true</code>) attached to this
* canvas.<br/>
* canvas.<br>
* The list is sorted on the layer priority.
*/
public ArrayList<Layer> getVisibleLayers()
......@@ -4207,7 +4207,7 @@ public abstract class IcyCanvas extends JPanel
}
/**
* Remove the layer for the specified {@link Overlay} from the canvas.<br/>
* Remove the layer for the specified {@link Overlay} from the canvas.<br>
* Returns <code>true</code> if the method succeed.
*/
public boolean removeLayer(Overlay overlay)
......
......@@ -236,7 +236,7 @@ public class Layer implements OverlayListener, Comparable<Layer>
/**
* Returns <code>true</code> if the layer can be freely removed from the Canvas where it
* appears and <code>false</code> otherwise.<br/>
* appears and <code>false</code> otherwise.<br>
*
* @see Overlay#getCanBeRemoved()
*/
......@@ -246,7 +246,7 @@ public class Layer implements OverlayListener, Comparable<Layer>
}
/**
* Set the <code>canBeRemoved</code> property.<br/>
* Set the <code>canBeRemoved</code> property.<br>
* Set it to false if you want to prevent the layer to be removed from the Canvas where it
* appears.
*
......
......@@ -4,7 +4,7 @@
package icy.common;
/**
* Collapsible interface for collapsible event used by UpdateEventHandler.<br/>
* Collapsible interface for collapsible event used by UpdateEventHandler.<br>
* As we use HashMap to store these events, so we rely on Object.equals(..) and
* Object.hashcode() implementation for these events.
*
......@@ -16,19 +16,21 @@ public interface CollapsibleEvent
* Collapse current object/event with specified one.
*
* @return <code>false</code> if collapse operation failed (object are not 'equals')
* @param event event
*/
public boolean collapse(CollapsibleEvent event);
/**
* Returns <code>true</code> if the current event is equivalent to the specified one.<br/>
* @return Returns <code>true</code> if the current event is equivalent to the specified one.<br>
* We want event to override {@link Object#equals(Object)} method as we use an HashMap to store
* these event
* in the {@link UpdateEventHandler} class.
* @param event event
*/
public boolean equals(Object event);
/**
* Returns hash code for current event. It should respect the default {@link Object#hashCode()}
* @return Returns hash code for current event. It should respect the default {@link Object#hashCode()}
* contract.
*/
public int hashCode();
......
......@@ -4,7 +4,7 @@
package icy.common.exception;
/**
* Exception when trying to allocate a too large array (length > 2^31)
* Exception when trying to allocate a too large array (length &gt; 2^31)
*
* @author Stephane
*/
......
......@@ -29,6 +29,7 @@ public interface ChangeListener
{
/**
* fire changed event
* @param event collapsible
*/
public void onChanged(CollapsibleEvent event);
}
......@@ -68,7 +68,7 @@ public class FileUtil
/**
* Transform any system specific path in java generic path form.<br>
* Ex: "C:\windows" --> "C:/windows"
* Ex: "C:\windows" --&gt; "C:/windows"
*/
public static String getGenericPath(String path)
{
......@@ -100,9 +100,9 @@ public class FileUtil
/**
* Change path extension.<br>
* Ex : setExtension(path, ".dat")<br>
* "c:\temp" --> "c:\temp.dat"
* "c:\file.out" --> "c:\file.dat"
* "" --> ""
* "c:\temp" --&gt; "c:\temp.dat"
* "c:\file.out" --&gt; "c:\file.dat"
* "" --&gt; ""
*/
public static String setExtension(String path, String extension)
{
......@@ -371,10 +371,10 @@ public class FileUtil
/**
* Return drive / mount point from specified path<br>
* <br>
* getDrive("D:/temp/file.txt") --> "D:"<br>
* getDrive("D:/temp") --> "D:"<br>
* getDrive("C:file.txt") --> "C:"<br>
* getDrive("file.txt") --> ""<br>
* getDrive("D:/temp/file.txt") --&gt; "D:"<br>
* getDrive("D:/temp") --&gt; "D:"<br>
* getDrive("C:file.txt") --&gt; "C:"<br>
* getDrive("file.txt") --&gt; ""<br>
*/
public static String getDrive(String path)
{
......@@ -393,16 +393,16 @@ public class FileUtil
/**
* Returns directory information from specified path<br>
* <br>
* getDirectory("/file.txt", true) --> "/"<br>
* getDirectory("D:/temp/file.txt", true) --> "D:/temp/"<br>
* getDirectory("D:/temp/", true) --> "D:/temp/"<br>
* getDirectory("D:/temp/", false) --> "D:/temp"<br>
* getDirectory("D:/temp", true) --> "D:/"<br>
* getDirectory("D:/temp", false) --> "D:"<br>
* getDirectory("C:file.txt") --> "C:"<br>
* getDirectory("file.txt") --> ""<br>
* getDirectory("file") --> ""<br>
* getDirectory(null) --> ""
* getDirectory("/file.txt", true) --&gt; "/"<br>
* getDirectory("D:/temp/file.txt", true) --&gt; "D:/temp/"<br>
* getDirectory("D:/temp/", true) --&gt; "D:/temp/"<br>
* getDirectory("D:/temp/", false) --&gt; "D:/temp"<br>
* getDirectory("D:/temp", true) --&gt; "D:/"<br>
* getDirectory("D:/temp", false) --&gt; "D:"<br>
* getDirectory("C:file.txt") --&gt; "C:"<br>
* getDirectory("file.txt") --&gt; ""<br>
* getDirectory("file") --&gt; ""<br>
* getDirectory(null) --&gt; ""
*/
public static String getDirectory(String path, boolean wantSeparator)
{
......@@ -425,14 +425,14 @@ public class FileUtil
/**
* Return directory information from specified path<br>
* <br>
* getDirectory("/file.txt") --> "/"<br>
* getDirectory("D:/temp/file.txt") --> "D:/temp/"<br>
* getDirectory("D:/temp/") --> "D:/temp/"<br>
* getDirectory("D:/temp") --> "D:/"<br>
* getDirectory("C:file.txt") --> "C:"<br>
* getDirectory("file.txt") --> ""<br>
* getDirectory("file") --> ""<br>
* getDirectory(null) --> ""
* getDirectory("/file.txt") --&gt; "/"<br>
* getDirectory("D:/temp/file.txt") --&gt; "D:/temp/"<br>
* getDirectory("D:/temp/") --&gt; "D:/temp/"<br>
* getDirectory("D:/temp") --&gt; "D:/"<br>
* getDirectory("C:file.txt") --&gt; "C:"<br>
* getDirectory("file.txt") --&gt; ""<br>
* getDirectory("file") --&gt; ""<br>
* getDirectory(null) --&gt; ""
*/
public static String getDirectory(String path)
{
......@@ -442,11 +442,11 @@ public class FileUtil
/**
* Return filename information from specified path.<br>
* <br>
* getFileName("/file.txt") --> "file.txt"<br>
* getFileName("D:/temp/file.txt") --> "file.txt"<br>
* getFileName("C:file.txt") --> "file.txt"<br>
* getFileName("file.txt") --> "file.txt"<br>
* getFileName(null) --> ""
* getFileName("/file.txt") --&gt; "file.txt"<br>
* getFileName("D:/temp/file.txt") --&gt; "file.txt"<br>
* getFileName("C:file.txt") --&gt; "file.txt"<br>
* getFileName("file.txt") --&gt; "file.txt"<br>
* getFileName(null) --&gt; ""
*/
public static String getFileName(String path)
{
......@@ -457,11 +457,11 @@ public class FileUtil
* Return filename information from specified path.<br>
* Filename's extension is returned depending the withExtension flag value<br>
* <br>
* getFileName("/file.txt") --> "file(.txt)"<br>
* getFileName("D:/temp/file.txt") --> "file(.txt)"<br>
* getFileName("C:file.txt") --> "file(.txt)"<br>
* getFileName("file.txt") --> "file(.txt)"<br>
* getFileName(null) --> ""
* getFileName("/file.txt") --&gt; "file(.txt)"<br>
* getFileName("D:/temp/file.txt") --&gt; "file(.txt)"<br>
* getFileName("C:file.txt") --&gt; "file(.txt)"<br>
* getFileName("file.txt") --&gt; "file(.txt)"<br>
* getFileName(null) --&gt; ""
*/
public static String getFileName(String path, boolean withExtension)
{
......@@ -502,11 +502,11 @@ public class FileUtil
* Return filename extension information from specified path<br>
* Dot character is returned depending the withDot flag value<br>
* <br>
* getFileExtension("/file.txt") --> "(.)txt)"<br>
* getFileExtension("D:/temp/file.txt.old") --> "(.)old"<br>
* getFileExtension("C:/win/dir2/file") --> ""<br>
* getFileExtension(".txt") --> "(.)txt)"<br>
* getFileExtension(null) --> ""
* getFileExtension("/file.txt") --&gt; "(.)txt)"<br>
* getFileExtension("D:/temp/file.txt.old") --&gt; "(.)old"<br>
* getFileExtension("C:/win/dir2/file") --&gt; ""<br>
* getFileExtension(".txt") --&gt; "(.)txt)"<br>
* getFileExtension(null) --&gt; ""
*/
public static String getFileExtension(String path, boolean withDot)
{
......
......@@ -76,7 +76,7 @@ import plugins.kernel.importer.LociImporterPlugin;
/**
* Sequence / Image loader class.
*
* @author Fabrice de Chaumont & Stephane
* @author Fabrice de Chaumont &amp; Stephane
*/
public class Loader
{
......@@ -866,7 +866,7 @@ public class Loader
}
/**
* Check if we can open the given image plane resolution (XY size < 2^31).<br>
* Check if we can open the given image plane resolution (XY size &lt; 2^31).<br>
* If the image plane is too large the method throw an exception with an informative error
* message about the encountered limitation.
*
......@@ -881,7 +881,7 @@ public class Loader
* @param messageSuffix
* message suffix for the exception if wanted
* @throws UnsupportedOperationException
* if the XY plane size is >= 2^31 pixels
* if the XY plane size is &gt;= 2^31 pixels
* @return the number of pixels of the image plane
*/
public static long checkOpeningPlane(int resolution, int sizeX, int sizeY, String messageSuffix)
......@@ -903,7 +903,7 @@ public class Loader
/**
* Check if we have enough resource to open the image defined by the given size information and
* wanted resolution.<br>
* If the image is too large to be displayed at full resolution (XY plane size > 2^31) or if we
* If the image is too large to be displayed at full resolution (XY plane size &gt; 2^31) or if we
* don't have enough
* memory to store the whole image the method throw an exception with an informative error
* message about the
......@@ -928,7 +928,7 @@ public class Loader
* @param messageSuffix
* message suffix for the exception if wanted
* @throws UnsupportedOperationException
* if the XY plane size is >= 2^31 pixels
* if the XY plane size is &gt;= 2^31 pixels
* @throws OutOfMemoryError
* if there is not enough memory to open the image
*/
......@@ -961,7 +961,7 @@ public class Loader
/**
* Check if we have enough resource to open the image defined by the given metadata information, series index and
* wanted resolution.<br>
* If the image is too large to be displayed at full resolution (XY plane size > 2^31) or if we* don't have enough
* If the image is too large to be displayed at full resolution (XY plane size &gt; 2^31) or if we* don't have enough
* memory to store the whole image the method throw an exception with an informative error message about the
* encountered limitation.
*
......@@ -981,7 +981,7 @@ public class Loader
* @param messageSuffix
* message suffix for the exception if wanted
* @throws UnsupportedOperationException
* if the XY plane size is >= 2^31 pixels
* if the XY plane size is &gt;= 2^31 pixels
* @throws OutOfMemoryError
* if there is not enough memory to open the image
*/
......@@ -996,7 +996,7 @@ public class Loader
/**
* Check if we have enough resource to open the image defined by the given metadata information, series index and
* wanted resolution.<br>
* If the image is too large to be displayed at full resolution (XY plane size > 2^31) or if we don't have enough
* If the image is too large to be displayed at full resolution (XY plane size &gt; 2^31) or if we don't have enough
* memory to store the whole image the method throw an exception with an informative error message about the
* encountered limitation.
*
......@@ -1012,7 +1012,7 @@ public class Loader
* @param messageSuffix
* message suffix for the exception if wanted
* @throws UnsupportedOperationException
* if the XY plane size is >= 2^31 pixels
* if the XY plane size is &gt;= 2^31 pixels
* @throws OutOfMemoryError
* if there is not enough memory to open the image
*/
......
......@@ -61,7 +61,7 @@ import ome.xml.meta.OMEXMLMetadata;
* When sequence is saved as multiple file the following naming convention is used :<br>
* <code>filename-tttt-zzzz</code>
*
* @author Stephane & Fab
* @author Stephane &amp; Fab
*/
public class Saver
{
......
......@@ -65,8 +65,10 @@ public interface SequenceFileImporter extends SequenceIdImporter
* Path of the image file to open.
* @param flags
* operation flag:<br>
* <ul>
* <li>{@link #FLAG_METADATA_MINIMUM} = load minimum metadata informations</li>
* <li>{@link #FLAG_METADATA_ALL} = load all metadata informations</li>
* </ul>
* @return <code>true</code> if the operation has succeeded and <code>false</code> otherwise.
*/
@Override
......
......@@ -38,7 +38,7 @@ import ome.xml.meta.OMEXMLMetadata;
import plugins.kernel.importer.LociImporterPlugin;
/**
* This class is an utility class aim to help in grouping a list of <i>file path</id> representing image to form a complete and valid Sequence.
* This class is an utility class aim to help in grouping a list of <i>file path</i> representing image to form a complete and valid Sequence.
*
* @author Stephane
*/
......
......@@ -26,12 +26,14 @@ import org.w3c.dom.Node;
public interface XMLPersistent
{
/**
* LOAD
* @return LOAD
* @param node node
*/
public boolean loadFromXML(Node node);
/**
* SAVE
* @return SAVE
* @param node node
*/
public boolean saveToXML(Node node);
......
......@@ -166,7 +166,7 @@ public class CheckTabbedPane extends JTabbedPane
* @return true if tab component at <code>index</code> is checked, false
* otherwise
* @exception IndexOutOfBoundsException
* if index is out of range (index < 0 || index >= tab count)
* if index is out of range (index &lt; 0 || index &gt;= tab count)
* @see #setTabChecked(int, boolean)
*/
public boolean isTabChecked(int index)
......@@ -182,7 +182,7 @@ public class CheckTabbedPane extends JTabbedPane
* @param value
* the check state
* @exception IndexOutOfBoundsException
* if index is out of range (index < 0 || index >= tab count)
* if index is out of range (index &lt; 0 || index &gt;= tab count)
* @see #isTabChecked(int)
*/
public void setTabChecked(int index, boolean value)
......