Commit 3559c90c authored by Maxime Lefrançois's avatar Maxime Lefrançois
Browse files

starting integration

parents
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+6 −0
Original line number Diff line number Diff line
/target/
dependency-reduced-pom.xml
.project
.classpath
.settings
 No newline at end of file

.gitlab-ci.yml

0 → 100644
+13 −0
Original line number Diff line number Diff line
image: maven:3.6.2-jdk-8

build:
  stage: build
  script:
    - mvn package
  artifacts:
    paths:
      - target/sarefPipeline.jar
  only:
    - master 

README.md

0 → 100644
+4 −0
Original line number Diff line number Diff line
# Description

This project integrates the SAREF development and documentation generation pipeline

pom.xml

0 → 100644
+137 −0
Original line number Diff line number Diff line
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>fr.emse.gitlab.saref</groupId>
	<artifactId>saref-pipeline</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>saref-pipeline</name>

	<developers>
		<developer>
			<name>Omar Qawasmeh</name>
			<email>omar.alqawasmeh@emse.fr</email>
			<url>https://perso.univ-st-etienne.fr/alo09685/</url>
			<organization>Ecole des mines de Saint-Etienne</organization>
			<organizationUrl>http://www.mines-stetienne.fr/</organizationUrl>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<name>Maxime Lefrançois</name>
			<email>maxime.lefrancois@emse.fr</email>
			<url>http://www.maxime-lefrancois.info/</url>
			<organization>Ecole des mines de Saint-Etienne</organization>
			<organizationUrl>http://www.mines-stetienne.fr/</organizationUrl>
			<timezone>+1</timezone>
		</developer>
	</developers>

	<organization>
		<name>École des Mines de Saint-Étienne</name>
		<url>http://www.mines-stetienne.fr/</url>
	</organization>

	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
		<jdk.version>1.8</jdk.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<sparql-generate.version>2.0-SNAPSHOT</sparql-generate.version>
	</properties>

	<dependencies>
<!-- 		<dependency> -->
<!-- 			<groupId>org.topbraid</groupId> -->
<!-- 			<artifactId>shacl</artifactId> -->
<!-- 			<version>1.3.1</version> -->
<!-- 		</dependency> -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-xml</artifactId>
			<version>2.10.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.jena</groupId>
			<artifactId>jena-tdb</artifactId>
			<version>3.4.0</version>
		</dependency>
		<dependency>
			<groupId>fr.emse.ci</groupId>
			<artifactId>sparql-generate-jena</artifactId>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>fr.emse.ci</groupId>
			<artifactId>sparql-generate-markdown</artifactId>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<!-- see Porcelain https://git-scm.com/book/uz/v2/Appendix-B%3A-Embedding-Git-in-your-Applications-JGit -->
			<groupId>org.eclipse.jgit</groupId>
			<artifactId>org.eclipse.jgit</artifactId>
			<version>5.2.1.201812262042-r</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.2</version>
			<type>jar</type>
		</dependency>
	</dependencies>

	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>2.4.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer
									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>fr.emse.gitlab.saref.Main
									</mainClass>
								</transformer>
							</transformers>
							<filters>
								<filter>
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
									</excludes>
								</filter>
							</filters>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>



</project>
 No newline at end of file
+99 −0
Original line number Diff line number Diff line
package fr.emse.gitlab.saref;

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import org.apache.commons.io.FileUtils;
import org.apache.log4j.Layout;
import org.apache.log4j.PatternLayout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fr.emse.gitlab.saref.entities.TestSuites;
import fr.emse.gitlab.saref.jobs.JobRunner;
import fr.emse.gitlab.saref.jobs.library.ReadOntologies;
import fr.emse.gitlab.saref.jobs.library.RepositoryStructureChecker;
import fr.emse.gitlab.saref.utils.SAREF;

public class Main {

	static final Logger LOG = LoggerFactory.getLogger(Main.class);
	private static final Layout LAYOUT = new PatternLayout("%d{mm:ss,SSS} %t %-5p %c:%L - %m%n");
	private static final org.apache.log4j.Logger ROOT_LOGGER = org.apache.log4j.Logger.getRootLogger();

	private static TestSuites testSuites = new TestSuites();
	private static File directory;
	private static File target;

	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException, JAXBException {
		if (args.length == 0) {
			directory = new File("").getAbsoluteFile();
		} else if (args.length > 1) {
			throw new IllegalArgumentException(
					"Expecting at most one argument: the location of the SAREF directory where to run the pipeline");
		} else {
			directory = new File(args[0]).getAbsoluteFile();
		}
		
		target = new File(directory, "target");
		FileUtils.forceDelete(target);
		FileUtils.forceMkdir(target);
		File logFile = new File(directory, "target/output.log");
		ROOT_LOGGER.addAppender(new org.apache.log4j.RollingFileAppender(LAYOUT, logFile.getAbsolutePath(), false));

		LOG.info("Starting pipeline");
		JobRunner checker = new RepositoryStructureChecker(directory);
		checker.doJob(testSuites);
		if(testSuites.getErrors() > 0) {
			reportAndExit(-1);
		}
		
		checker = new ReadOntologies(directory);
		checker.doJob(testSuites);
		
		
		reportAndExit(0);
	}

	private static void reportAndExit(int code) {
		try {
			File report = new File(target, "report_output.xml");
			JAXBContext jaxbContext = JAXBContext.newInstance(TestSuites.class);
			Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
			jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
			jaxbMarshaller.marshal(testSuites, report);
			jaxbMarshaller.marshal(testSuites, System.out);
			final StringWriter sw = new StringWriter();
			jaxbMarshaller.marshal(testSuites, sw);
			if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
			    Desktop.getDesktop().browse(new URI(SAREF.BASE + "report.html?report=" + URLEncoder.encode(sw.toString(), "UTF-8")));
			}
		} catch(JAXBException | URISyntaxException | IOException ex) {
			LOG.error("Exception:", ex);
			ex.printStackTrace();
		}
 		System.exit(code);
	}

	// private static void testRead() {
	// try {
	// JAXBContext jaxbContext = JAXBContext.newInstance(TestSuite.class);
	// Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
	//
	// TestCase testCase = (TestCase) jaxbUnmarshaller.unmarshal(target);
	//
	// } catch (JAXBException e) {
	// e.printStackTrace();
	// }
	// }

}