In the meantime can you shed some light into the > [FODC0002] Resource 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün christian.gruen@gmail.com wrote:
The raw stored file was slightly larger than the original zip.
Do you have an example for that?
But when I submit the exact same query using the Java client I get the following error:
Stopped at ., 1/216: [FODC0002] Resource 'delta.zip' does not exist.
It shouldn’t make a difference. I’ll probably need more info to track this down.
This is happening in the call to db:store where the path is
'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
The error is:
Stopped at ., 1/216:
[FODC0002] Resource 'delta.zip' does not exist.
Could it have something to do with a default archive parser for archives in the Java Client ?
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün christian.gruen@gmail.com wrote:
In the meantime can you shed some light into the > [FODC0002] Resource 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün <
christian.gruen@gmail.com>
wrote:
The raw stored file was slightly larger than the original zip.
Do you have an example for that?
But when I submit the exact same query using the Java client I get the following error:
Stopped at ., 1/216: [FODC0002] Resource 'delta.zip' does not exist.
It shouldn’t make a difference. I’ll probably need more info to track
this
down.
This is happening in the call to db:store where the path is 'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
Hm, so this is the relative path to the local resource you want to store? Does it work if you specify the absolute path?
Could it have something to do with a default archive parser for archives in the Java Client ?
The Java client (if it’s the one I believe it is) is very dumb; it just passes on everything to the server.
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün christian.gruen@gmail.com wrote:
In the meantime can you shed some light into the > [FODC0002] Resource 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün christian.gruen@gmail.com wrote:
The raw stored file was slightly larger than the original zip.
Do you have an example for that?
But when I submit the exact same query using the Java client I get the following error:
Stopped at ., 1/216: [FODC0002] Resource 'delta.zip' does not exist.
It shouldn’t make a difference. I’ll probably need more info to track this down.
What is the format for an absolute path for db:store? Neither of the following works:
- '/db/alpha/bravo/charlie/delta.zip/subfolder/subfile.ext' - and '/'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
However my original code works in the BaseX GUI, just not through the Java Client.
Could it have something to the with the period or .zip in the middle of the path?
On Fri, Dec 11, 2015 at 11:11 AM, Christian Grün christian.gruen@gmail.com wrote:
This is happening in the call to db:store where the path is 'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
Hm, so this is the relative path to the local resource you want to store? Does it work if you specify the absolute path?
Could it have something to do with a default archive parser for archives
in
the Java Client ?
The Java client (if it’s the one I believe it is) is very dumb; it just passes on everything to the server.
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün <
christian.gruen@gmail.com>
wrote:
In the meantime can you shed some light into the > [FODC0002]
Resource
'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not
exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün christian.gruen@gmail.com wrote:
The raw stored file was slightly larger than the original zip.
Do you have an example for that?
But when I submit the exact same query using the Java client I get the following error:
Stopped at ., 1/216: [FODC0002] Resource 'delta.zip' does not exist.
It shouldn’t make a difference. I’ll probably need more info to track this down.
Could you please provide me with a minimized example that shows the problem, and which I can run both in the GUI and via the Java client?
On Fri, Dec 11, 2015 at 6:24 PM, E. Wray Johnson wray.johnson@gmail.com wrote:
What is the format for an absolute path for db:store? Neither of the following works:
'/db/alpha/bravo/charlie/delta.zip/subfolder/subfile.ext' and '/'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
However my original code works in the BaseX GUI, just not through the Java Client.
Could it have something to the with the period or .zip in the middle of the path?
On Fri, Dec 11, 2015 at 11:11 AM, Christian Grün christian.gruen@gmail.com wrote:
This is happening in the call to db:store where the path is 'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
Hm, so this is the relative path to the local resource you want to store? Does it work if you specify the absolute path?
Could it have something to do with a default archive parser for archives in the Java Client ?
The Java client (if it’s the one I believe it is) is very dumb; it just passes on everything to the server.
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün christian.gruen@gmail.com wrote:
In the meantime can you shed some light into the > [FODC0002] Resource 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün christian.gruen@gmail.com wrote:
> The raw stored file was slightly larger than the original zip.
Do you have an example for that?
> But when I submit the exact same query using the Java client I get > the > following error: > > Stopped at ., 1/216: > [FODC0002] Resource 'delta.zip' does not exist.
It shouldn’t make a difference. I’ll probably need more info to track this down.
Steps:
1. Create or choose a database (e.g. named 'db') 2. Store in BaseX a raw zip file (e.g. 'alpha/bravo/charlie/delta.zip'). My zip file has files in folders. 3. Choose a target name that also has a ".zip" extension to similar to 'include name of archive in path' behavior. Note, it should not be the same as the raw zip file stored (e.g. 'delta.zip') 4. Run the following in the BaseX GUI client - it will work 5. Repeat 1 and 2 using the BaseX Java Client example - it does not work
GUI CLIENT - DOES WORK ======================================== let $database := 'db' let $extractTo := 'target.zip' let $archivePath := 'alpha/bravo/charlie/delta.zip'
let $archive := db:retrieve($database, $archivePath) let $basePath := replace($archivePath, '[^/]+$', '') || $extractTo let $entries := archive:entries($archive) let $contents := archive:extract-binary($archive) return for-each-pair($entries, $contents, %updating function($entry, $content) { let $target := $basePath || '/' || $entry/text() return try { db:store($database, $target, $content) } catch * { () } })
JAVA - DOES NOT WORK: =============================================== // Usage: Create a BaseXClient object and call this method. // For example: // ExplodeArchive("db", "target.zip", "alpha/bravo/charlie/delta.zip", ..)
private static void ExplodeArchive(final String database, String extractTo, String archivePath, BaseXClient session) throws IOException { try { String queryString = "let $database := '" + database +"' " + "let $extractTo := '" + extractTo + "' " + "let $archivePath := '"+ archivePath + "' " + "let $archive := db:retrieve($database, $archivePath) " + "let $basePath := replace($archivePath, '[^/]+$', '') || $extractTo " + "let $entries := archive:entries($archive) " + "let $contents := archive:extract-binary($archive) " + "for $entry at $pos in $entries " + "let $content := $contents[$pos] " + "let $target := $basePath || '/' || $entry/text() " + "return db:store($database, "+ "$target, $content)"; final BaseXClient.Query query = session.query(queryString); query.execute(); } finally { session.close(); } }
On Fri, Dec 11, 2015 at 1:28 PM, Christian Grün christian.gruen@gmail.com wrote:
Could you please provide me with a minimized example that shows the problem, and which I can run both in the GUI and via the Java client?
On Fri, Dec 11, 2015 at 6:24 PM, E. Wray Johnson wray.johnson@gmail.com wrote:
What is the format for an absolute path for db:store? Neither of the following works:
'/db/alpha/bravo/charlie/delta.zip/subfolder/subfile.ext' and '/'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
However my original code works in the BaseX GUI, just not through the
Java
Client.
Could it have something to the with the period or .zip in the middle of
the
path?
On Fri, Dec 11, 2015 at 11:11 AM, Christian Grün <
christian.gruen@gmail.com>
wrote:
This is happening in the call to db:store where the path is 'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
Hm, so this is the relative path to the local resource you want to store? Does it work if you specify the absolute path?
Could it have something to do with a default archive parser for
archives
in the Java Client ?
The Java client (if it’s the one I believe it is) is very dumb; it just passes on everything to the server.
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün christian.gruen@gmail.com wrote:
In the meantime can you shed some light into the > [FODC0002] Resource 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what results are returned in the GUI and via the client?
On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün christian.gruen@gmail.com wrote: > > > The raw stored file was slightly larger than the original zip. > > Do you have an example for that? > > > But when I submit the exact same query using the Java client I
get
> > the > > following error: > > > > Stopped at ., 1/216: > > [FODC0002] Resource 'delta.zip' does not exist. > > It shouldn’t make a difference. I’ll probably need more info to > track > this > down.
Both problems fixed. Here is how:
- I had transposed the 2 parameters in my Java method call. - I unzipped and the re-zipped the defective archive using WIndows' built-in zip and it no longer generates the error. My only guess is that it was created using some non-standard zip utility.
On Fri, Dec 11, 2015 at 2:05 PM, E. Wray Johnson wray.johnson@gmail.com wrote:
Steps:
- Create or choose a database (e.g. named 'db')
- Store in BaseX a raw zip file (e.g.
'alpha/bravo/charlie/delta.zip'). My zip file has files in folders. 3. Choose a target name that also has a ".zip" extension to similar to 'include name of archive in path' behavior. Note, it should not be the same as the raw zip file stored (e.g. 'delta.zip') 4. Run the following in the BaseX GUI client - it will work 5. Repeat 1 and 2 using the BaseX Java Client example - it does not work
GUI CLIENT - DOES WORK
let $database := 'db' let $extractTo := 'target.zip' let $archivePath := 'alpha/bravo/charlie/delta.zip'
let $archive := db:retrieve($database, $archivePath) let $basePath := replace($archivePath, '[^/]+$', '') || $extractTo let $entries := archive:entries($archive) let $contents := archive:extract-binary($archive) return for-each-pair($entries, $contents, %updating function($entry, $content) { let $target := $basePath || '/' || $entry/text() return try { db:store($database, $target, $content) } catch * { () } })
JAVA - DOES NOT WORK:
// Usage: Create a BaseXClient object and call this method. // For example: // ExplodeArchive("db", "target.zip", "alpha/bravo/charlie/delta.zip", ..)
private static void ExplodeArchive(final String database, String extractTo, String archivePath, BaseXClient session) throws IOException { try { String queryString = "let $database := '" + database +"' " + "let $extractTo := '" + extractTo + "' " + "let $archivePath := '"+ archivePath + "' " + "let $archive := db:retrieve($database, $archivePath) " + "let $basePath := replace($archivePath, '[^/]+$', '') || $extractTo " + "let $entries := archive:entries($archive) " + "let $contents := archive:extract-binary($archive) " + "for $entry at $pos in $entries " + "let $content := $contents[$pos] " + "let $target := $basePath || '/' || $entry/text() " + "return db:store($database, "+ "$target, $content)"; final BaseXClient.Query query = session.query(queryString); query.execute(); } finally { session.close(); } }
On Fri, Dec 11, 2015 at 1:28 PM, Christian Grün <christian.gruen@gmail.com
wrote:
Could you please provide me with a minimized example that shows the problem, and which I can run both in the GUI and via the Java client?
On Fri, Dec 11, 2015 at 6:24 PM, E. Wray Johnson wray.johnson@gmail.com wrote:
What is the format for an absolute path for db:store? Neither of the following works:
'/db/alpha/bravo/charlie/delta.zip/subfolder/subfile.ext' and '/'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
However my original code works in the BaseX GUI, just not through the
Java
Client.
Could it have something to the with the period or .zip in the middle of
the
path?
On Fri, Dec 11, 2015 at 11:11 AM, Christian Grün <
christian.gruen@gmail.com>
wrote:
This is happening in the call to db:store where the path is 'alpha/bravo/charlie/delta.zip/subfolder/subfile.ext'
Hm, so this is the relative path to the local resource you want to store? Does it work if you specify the absolute path?
Could it have something to do with a default archive parser for
archives
in the Java Client ?
The Java client (if it’s the one I believe it is) is very dumb; it just passes on everything to the server.
On Fri, Dec 11, 2015 at 10:10 AM, Christian Grün christian.gruen@gmail.com wrote:
> In the meantime can you shed some light into the > [FODC0002] > Resource > 'delta.zip' does not exist.' error?
(cc to the list): It simply says that a database resource does not exist.
Maybe you have more than one BaseX database directory in your environment? Could you try db:list('...db...') and check what
results
are returned in the GUI and via the client?
> On Fri, Dec 11, 2015 at 9:53 AM, Christian Grün > christian.gruen@gmail.com > wrote: >> >> > The raw stored file was slightly larger than the original zip. >> >> Do you have an example for that? >> >> > But when I submit the exact same query using the Java client I
get
>> > the >> > following error: >> > >> > Stopped at ., 1/216: >> > [FODC0002] Resource 'delta.zip' does not exist. >> >> It shouldn’t make a difference. I’ll probably need more info to >> track >> this >> down. > >
basex-talk@mailman.uni-konstanz.de