Unverified Commit 5b69bc4b authored by Maxime Lefrançois's avatar Maxime Lefrançois
Browse files

ensure redirections from vx to latest compatible vx.y.z, and from vx.y to latest compatible vx.y.z

parent 44b011a1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
	<modelVersion>4.0.0</modelVersion>
	<groupId>fr.mines-stetienne.ci.saref</groupId>
	<artifactId>saref-pipeline</artifactId>
	<version>1.0.2</version>
	<version>1.0.3</version>
	<packaging>jar</packaging>

	<name>SAREF-Pipeline</name>
+34 −0
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@ import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
@@ -57,6 +59,7 @@ import fr.mines_stetienne.ci.saref.entities.SAREFProject;
import fr.mines_stetienne.ci.saref.entities.SAREFRepository;
import fr.mines_stetienne.ci.saref.entities.SAREFTerm;
import fr.mines_stetienne.ci.saref.entities.SAREFVersion;
import fr.mines_stetienne.ci.saref.entities.SAREFVersionName;
import fr.mines_stetienne.ci.saref.utils.StreamManagerFactory;
import fr.mines_stetienne.ci.sparql_generate.SPARQLExt;
import fr.mines_stetienne.ci.sparql_generate.engine.PlanFactory;
@@ -235,6 +238,37 @@ public class SiteManager extends SAREFErrorLogger {
		writer.write(HTACCESS_PATH);
		writer.write(String.format("RewriteRule ^%s\\.([^\\./]+)$ %%1%s/%s.$1 [R=302]\n\n", project.getPath(),
				lastVersion.getVersionPath(), project.getOntologyFileName()));
		Set<SAREFVersionName> partialVersionNames = new HashSet<>();
		for (SAREFVersionName versionName : repository.getVersions().keySet()) {
			int major = versionName.getMajor();
			SAREFVersionName partialVersionNameMajor = new SAREFVersionName(major, Integer.MAX_VALUE, Integer.MAX_VALUE);
			if(!partialVersionNames.contains(partialVersionNameMajor)) {
				partialVersionNames.add(partialVersionNameMajor);
				SAREFVersion lastCompatibleVersion = repository.getVersion(repository.getPreviousVersion(partialVersionNameMajor));
				// redirects core/v3 to core/v3.1.1/
				writer.write(HTACCESS_PATH);
				writer.write(
						String.format("RewriteRule ^%s/v%s$ %%1%s/ [R=302]\n", project.getPath(), major, lastCompatibleVersion.getVersionName()));
				// redirects core/v3.ttl to core/v1.1.1.ttl
				writer.write(HTACCESS_PATH);
				writer.write(String.format("RewriteRule ^%s/v%s\\.([^\\./]+)$ %%1%s/%s.$1 [R=302]\n\n", project.getPath(), major,
					lastCompatibleVersion.getVersionPath(), project.getOntologyFileName()));
			}
			int minor = versionName.getMinor();
			SAREFVersionName partialVersionNameMinor = new SAREFVersionName(major, minor, Integer.MAX_VALUE);
			if(!partialVersionNames.contains(partialVersionNameMinor)) {
				partialVersionNames.add(partialVersionNameMinor);
				SAREFVersion lastCompatibleVersion = repository.getVersion(repository.getPreviousVersion(partialVersionNameMinor));
				// redirects core/v3.1 to core/v3.1.1/
				writer.write(HTACCESS_PATH);
				writer.write(
						String.format("RewriteRule ^%s/v%s.%s$ %%1%s/ [R=302]\n", project.getPath(), major, minor, lastCompatibleVersion.getVersionName()));
				// redirects core/v3.1.ttl to core/v1.1.1.ttl
				writer.write(HTACCESS_PATH);
				writer.write(String.format("RewriteRule ^%s/v%s.%s\\.([^\\./]+)$ %%1%s/%s.$1 [R=302]\n\n", project.getPath(), major, minor,
					lastCompatibleVersion.getVersionPath(), project.getOntologyFileName()));
			}
		}
		for (SAREFVersion version : repository.getVersions().values()) {
			// redirects core/v3.1.1/ to core/v3.1.1/saref.conneg
			writer.write(HTACCESS_PATH);