diff --git a/dist/doc/file-walker.xqm.xml b/dist/doc/file-walker.xqm.xml index d81b690..61eb0b9 100644 --- a/dist/doc/file-walker.xqm.xml +++ b/dist/doc/file-walker.xqm.xml @@ -1,6 +1,6 @@ - 2016-05-18T18:17:23.616+01:00 + 2016-05-29T22:56:58.097+01:00 1.1 diff --git a/dist/quodatum-files-0.1.8.xar b/dist/quodatum-files-0.1.8.xar deleted file mode 100644 index 6bdc90b..0000000 Binary files a/dist/quodatum-files-0.1.8.xar and /dev/null differ diff --git a/dist/quodatum-files-0.2.0.xar b/dist/quodatum-files-0.2.0.xar new file mode 100644 index 0000000..ff5a9c4 Binary files /dev/null and b/dist/quodatum-files-0.2.0.xar differ diff --git a/makejar.jardesc b/makejar.jardesc deleted file mode 100644 index b169638..0000000 --- a/makejar.jardesc +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/makjar.jardesc b/makjar.jardesc index e5f610e..f846580 100644 --- a/makjar.jardesc +++ b/makjar.jardesc @@ -1,6 +1,6 @@ - + diff --git a/package.xml b/package.xml index c190fff..5492280 100644 --- a/package.xml +++ b/package.xml @@ -41,5 +41,11 @@ + + + + + + \ No newline at end of file diff --git a/src/java/com/quodatum/file/Walker.java b/src/java/com/quodatum/file/Walker.java index 4efd27e..78567fe 100644 --- a/src/java/com/quodatum/file/Walker.java +++ b/src/java/com/quodatum/file/Walker.java @@ -4,55 +4,68 @@ * file walker * @see https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileVisitResult.html */ -import static java.nio.file.FileVisitResult.*; +import static java.nio.file.FileVisitResult.CONTINUE; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; -import java.util.ArrayDeque; -import java.util.Deque; -import org.basex.query.value.Value; -import org.basex.query.value.ValueBuilder; -import org.basex.query.value.node.FElem; +import org.basex.build.MemBuilder; +import org.basex.build.SingleParser; +import org.basex.core.MainOptions; +import org.basex.io.IOContent; +import org.basex.query.value.node.ANode; +import org.basex.query.value.node.DBNode; +import org.basex.util.Atts; +import org.basex.util.Token; public class Walker extends SimpleFileVisitor { final String cns = "http://www.w3.org/ns/xproc-step"; - Deque stack = new ArrayDeque(); - FElem site; + // builder + final byte[] DIR=Token.token("c:directory"); + final byte[] FILE=Token.token("c:file"); + final byte[] ERR=Token.token("c:error"); + final byte[] NAME=Token.token("name"); + final byte[] BASE=Token.token("xml:base"); + final Atts NSP = new Atts(Token.token("c"),Token.token(cns)); - public Walker(Path startingDir) { - site= new FElem("directory", cns) - .add("name",startingDir.getFileName().toString()) - .add("xml:base",startingDir.toUri().toString()); + SingleParser singleParser = new SingleParser(new IOContent(""), MainOptions.get()) + { + @Override + protected void parse() throws IOException {} + }; + MemBuilder memBuilder = new MemBuilder("", singleParser); + + + public Walker(Path startingDir) throws IOException { + memBuilder.init(); + preVisitDirectory(startingDir,null); } - public Value result() { - ValueBuilder vb = new ValueBuilder(); - vb.add(site); - return vb.value(); + public ANode result() { + return new DBNode(memBuilder.data()); } // Print information about // each type of file. @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attr) { - FElem elem = new FElem("file", cns).add("name", file.getFileName() - .toString()); - site.add(elem); + public FileVisitResult visitFile(Path file, BasicFileAttributes attr) throws IOException { + Atts atts = new Atts(NAME,Token.token(file.getFileName().toString())); + memBuilder.emptyElem(NAME, atts, NSP); return CONTINUE; } // Print each directory visited. @Override - public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { - stack.push(site); - site = new FElem("directory", cns) - .add("name",dir.getFileName().toString()) - .add("xml:base",dir.toUri().toString()); + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { + + Atts atts = new Atts(); + atts.add(NAME, Token.token(dir.getFileName().toString())); + atts.add(BASE, Token.token(dir.toUri().toString())); + memBuilder.openElem(DIR, atts, NSP); return CONTINUE; } @@ -60,7 +73,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { - site = stack.pop().add(site); + memBuilder.closeElem(); return CONTINUE; } @@ -70,9 +83,9 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc) // and an error occurs, an IOException // is thrown. @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) { - FElem elem = new FElem("error", cns).add("name", file.toString()); - site.add(elem); + public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { + Atts atts = new Atts(NAME,Token.token(file.getFileName().toString())); + memBuilder.emptyElem(ERR, atts, NSP); return CONTINUE; } } \ No newline at end of file diff --git a/src/main/basex.xml b/src/main/basex.xml index f9e5abb..4c250b6 100644 --- a/src/main/basex.xml +++ b/src/main/basex.xml @@ -1,4 +1,4 @@ - quodatum-files-0.1.7.jar + quodatum-files-0.1.9.jar com.quodatum.file.Runner diff --git a/src/main/content/quodatum-files-0.1.7.jar b/src/main/content/quodatum-files-0.1.7.jar deleted file mode 100644 index b200a3a..0000000 Binary files a/src/main/content/quodatum-files-0.1.7.jar and /dev/null differ diff --git a/src/main/content/quodatum-files-0.1.9.jar b/src/main/content/quodatum-files-0.1.9.jar new file mode 100644 index 0000000..3e4d78d Binary files /dev/null and b/src/main/content/quodatum-files-0.1.9.jar differ diff --git a/src/main/expath-pkg.xml b/src/main/expath-pkg.xml index 23676d0..3f43d07 100644 --- a/src/main/expath-pkg.xml +++ b/src/main/expath-pkg.xml @@ -1,7 +1,7 @@ File list and search in the XProc style diff --git a/src/test/test.xqm b/src/test/test.xqm index ec4fce3..f7e75d8 100644 --- a/src/test/test.xqm +++ b/src/test/test.xqm @@ -4,8 +4,8 @@ module namespace test = 'http://basex.org/modules/xqunit-tests'; :) import module namespace fw="quodatum.file.walker"; declare namespace c="http://www.w3.org/ns/xproc-step"; -declare variable $test:dir:="\\ODROID-JESSIE\sda1\pictures\Pictures"; - +declare variable $test:dirx:="\\ODROID-JESSIE\sda1\pictures\Pictures"; +declare variable $test:dir:="P:\pictures\Pictures"; (:~ directory-list :) declare diff --git a/tools/buildx.xqm b/tools/buildx.xqm index fc3fc32..4d88ee1 100644 --- a/tools/buildx.xqm +++ b/tools/buildx.xqm @@ -16,7 +16,7 @@ declare namespace pkg="http://expath.org/ns/pkg"; declare function files($src as xs:string) as xs:string* { fn:filter(file:list($src,fn:true()), - function ($f){file:is-file($src || $f)} + function ($f){($src || $f)=>fn:translate("\","/")=>file:is-file()} ) !fn:translate(.,"\","/") };