Skip to content

Commit

Permalink
fix issue 283 : Symbolic link
Browse files Browse the repository at this point in the history
  • Loading branch information
brahimibob committed Oct 18, 2017
1 parent b4549f9 commit d03e06e
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
package eu.itesla_project.iidm.ddb.eurostag;

import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -26,12 +28,21 @@ class EurostagDDB {

EurostagDDB(List<Path> ddbDirs) throws IOException {
for (Path ddbDir : ddbDirs) {
if (Files.isSymbolicLink(ddbDir)) {
ddbDir = Files.readSymbolicLink(ddbDir);
}
if (!Files.exists(ddbDir) && !Files.isDirectory(ddbDir)) {
throw new IllegalArgumentException(ddbDir + " must exist and be a dir");
}
Files.walkFileTree(ddbDir, new SimpleFileVisitor<Path>() {
Files.walkFileTree(ddbDir, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (Files.isSymbolicLink(file)) {
file = Files.readSymbolicLink(file);
if (Files.isDirectory(file)) {
Files.walkFileTree(file, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, this);
}
}
if (Files.isRegularFile(file) && file.toString().endsWith(".tg")) {
String fileName = file.getFileName().toString();
generators.put(fileName.substring(0, fileName.length() - 3), file);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package eu.itesla_project.iidm.ddb.eurostag;

import static org.junit.Assert.*;

import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class EurostagDDBTest {

@Test
public void testEurostagDDB() throws IOException, URISyntaxException {
Path path1 = Paths.get("testsymboliclink/path1");
List<Path> ddbDirs = new ArrayList<Path>();
ddbDirs.add(path1);
EurostagDDB eurostagDDB = new EurostagDDB(ddbDirs);
assertEquals(eurostagDDB.findGenerator("").getFileName().toString(), ".tg");
assertEquals(eurostagDDB.findGenerator("p3file").getFileName().toString(), "p3file.tg");
assertEquals(eurostagDDB.findGenerator("file4").getFileName().toString(), "file4.tg");
assertEquals(eurostagDDB.findGenerator("file1").getFileName().toString(), "file1.tg");
assertEquals(eurostagDDB.findGenerator("filereal").getFileName().toString(), "filereal.tg");
}

@Test
public void testFindGenerator() throws IOException {
Path path = Paths.get("testsymboliclink/lnpath2");
List<Path> ddbDirs = new ArrayList<Path>();
ddbDirs.add(path);
EurostagDDB eurostagDDB = new EurostagDDB(ddbDirs);
assertEquals(eurostagDDB.findGenerator("filereal").getFileName().toString(), "filereal.tg");
}

}
1 change: 1 addition & 0 deletions eurostag-step-up-transformer/testsymboliclink/lnpath2
Empty file.
Empty file.
1 change: 1 addition & 0 deletions eurostag-step-up-transformer/testsymboliclink/path1/ln.tg
Empty file.
Empty file.
Empty file.

0 comments on commit d03e06e

Please sign in to comment.