diff --git a/.gitignore b/.gitignore index aa599ca..2db89c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -aisbus.xml target/ .settings .project diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..ca32559 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM java:8 + +RUN wget --progress=bar "https://dma.ci.cloudbees.com/job/VesselTrack/lastSuccessfulBuild/artifact/*zip*/archive.zip" -O /archive.zip +RUN unzip /archive.zip -d / +ADD ./start.sh /start.sh +EXPOSE 8080 +CMD ["/bin/bash", "/start.sh"] diff --git a/docker/start.sh b/docker/start.sh new file mode 100644 index 0000000..f5ea0c5 --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,28 @@ + +if [ -z "${SLAVE}" ]; then + SLAVEP="" +else + SLAVEP="--slave=${SLAVE}" +fi + +if [ -z "${SERVER_PORT}" ]; then + SERVER_PORTP="" +else + SERVER_PORTP="--server.port=${SERVER_PORT}" +fi + +if [ -z "${DB_URL}" ]; then + DB_URLP="" +else + DB_URLP="--spring.datasource.url=${DB_URL}" +fi + +if [ -z "${AISBUS_FILTER}" ]; then + AISBUS_FILTER="" +else + AISBUS_FILTERP="--aisbusFilter=${AISBUS_FILTER}" +fi + +LATEST=`ls /archive/target/vessel-track*SNAPSHOT.war` + +java -jar $LATEST $SLAVEP $SERVER_PORTP $DB_URLP $AISBUS_FILTERP diff --git a/src/main/java/dk/dma/vessel/track/AisBusService.java b/src/main/java/dk/dma/vessel/track/AisBusService.java index 4c26c16..211e120 100644 --- a/src/main/java/dk/dma/vessel/track/AisBusService.java +++ b/src/main/java/dk/dma/vessel/track/AisBusService.java @@ -15,6 +15,8 @@ import javax.annotation.PreDestroy; import javax.xml.bind.JAXBException; import java.io.FileNotFoundException; +import java.nio.file.Files; +import java.nio.file.Paths; /** * Encapsulates the AIS bus service @@ -25,7 +27,7 @@ public class AisBusService { static final Logger LOG = LoggerFactory.getLogger(AisBusService.class); - @Value("${aisbus}") + @Value("${aisbus:}") String aisbusPath; @Value("${aisbusFilter:}") @@ -49,7 +51,7 @@ public void init() throws FileNotFoundException, JAXBException { LOG.info("Starting AIS bus using config: " + aisbusPath); // Load AisBus configuration - AisBusConfiguration aisBusConf = AisBusConfiguration.load(aisbusPath); + AisBusConfiguration aisBusConf = loadAisBusConfiguraion(aisbusPath); // Check if we need to update an expression filter if (StringUtils.isNotBlank(aisbusFilter)) { @@ -70,6 +72,22 @@ public void init() throws FileNotFoundException, JAXBException { } } + /** + * Loads the AIS bus configuration + * @param aisbusPath the path to the aisbus.xml configuration file + * @return the AIS bus configuraiton + */ + private AisBusConfiguration loadAisBusConfiguraion(String aisbusPath) throws FileNotFoundException, JAXBException { + + if (StringUtils.isNotBlank(aisbusPath) && Files.exists(Paths.get(aisbusPath))) { + LOG.info("Loading AIS bus configuration from file " + aisbusPath); + return AisBusConfiguration.load(aisbusPath); + } + + LOG.info("Loading default AIS bus configuration"); + return AisBusConfiguration.load(getClass().getResourceAsStream("/aisbus.xml")); + } + /** * Updates the AIS bus with an expression filter * diff --git a/src/main/resources/aisbus.xml b/src/main/resources/aisbus.xml new file mode 100644 index 0000000..4248d39 --- /dev/null +++ b/src/main/resources/aisbus.xml @@ -0,0 +1,25 @@ + + + + + + + 300 + + + + AISW_unfiltered + 10.33.128.173:25000 + 10.33.128.175:25000 + 1 + 5 + + + + Output + + 10 + 9010 + + +